adnbn 0.11.0 → 0.12.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 (333) hide show
  1. package/README.md +3 -0
  2. package/dist/cli/builders/manifest/ManifestBase.js +1 -1
  3. package/dist/cli/bundler/index.d.ts +1 -0
  4. package/dist/cli/bundler/index.js +1 -0
  5. package/dist/cli/bundler/index.js.map +1 -1
  6. package/dist/cli/bundler/{utils/layers.d.ts → layers.d.ts} +2 -1
  7. package/dist/cli/bundler/{utils/layers.js → layers.js} +2 -0
  8. package/dist/cli/bundler/layers.js.map +1 -0
  9. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js +2 -1
  10. package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js.map +1 -1
  11. package/dist/cli/bundler/plugins/build-assets-map/index.d.ts +1 -2
  12. package/dist/cli/bundler/plugins/build-assets-map/index.js +0 -3
  13. package/dist/cli/bundler/plugins/build-assets-map/index.js.map +1 -1
  14. package/dist/cli/bundler/plugins/build-assets-map/usage.d.ts +3 -6
  15. package/dist/cli/bundler/plugins/build-assets-map/usage.js +6 -3
  16. package/dist/cli/bundler/plugins/build-assets-map/usage.js.map +1 -1
  17. package/dist/cli/bundler/plugins/index.d.ts +2 -2
  18. package/dist/cli/bundler/plugins/index.js +2 -6
  19. package/dist/cli/bundler/plugins/index.js.map +1 -1
  20. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js +1 -1
  21. package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js.map +1 -1
  22. package/dist/cli/bundler/plugins/isolated-styles/chunks.d.ts +3 -0
  23. package/dist/cli/bundler/{utils/styles.js → plugins/isolated-styles/chunks.js} +8 -6
  24. package/dist/cli/bundler/plugins/isolated-styles/chunks.js.map +1 -0
  25. package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js +1 -2
  26. package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js.map +1 -1
  27. package/dist/cli/bundler/plugins/types.d.ts +4 -0
  28. package/dist/cli/bundler/plugins/utils/compilation-assets.d.ts +4 -0
  29. package/dist/cli/bundler/plugins/utils/compilation-assets.js +12 -0
  30. package/dist/cli/bundler/plugins/utils/compilation-assets.js.map +1 -0
  31. package/dist/cli/bundler/plugins/utils/index.d.ts +2 -0
  32. package/dist/cli/bundler/plugins/utils/index.js +5 -0
  33. package/dist/cli/bundler/plugins/utils/index.js.map +1 -1
  34. package/dist/cli/bundler/plugins/utils/runtime-module.d.ts +3 -0
  35. package/dist/cli/bundler/plugins/utils/runtime-module.js +11 -0
  36. package/dist/cli/bundler/plugins/utils/runtime-module.js.map +1 -0
  37. package/dist/cli/bundler/utils/app-filename.d.ts +2 -0
  38. package/dist/cli/bundler/utils/app-filename.js +19 -0
  39. package/dist/cli/bundler/utils/app-filename.js.map +1 -0
  40. package/dist/cli/bundler/utils/assets.d.ts +3 -0
  41. package/dist/cli/bundler/utils/{output.js → assets.js} +22 -33
  42. package/dist/cli/bundler/utils/assets.js.map +1 -0
  43. package/dist/cli/bundler/utils/index.d.ts +2 -3
  44. package/dist/cli/bundler/utils/index.js +2 -3
  45. package/dist/cli/bundler/utils/index.js.map +1 -1
  46. package/dist/cli/entrypoint/file/injectors/core.js +1 -1
  47. package/dist/cli/entrypoint/finder/ContentFinder.d.ts +1 -1
  48. package/dist/cli/entrypoint/parser/ContentParser.d.ts +2 -2
  49. package/dist/cli/entrypoint/parser/ContentParser.js +6 -22
  50. package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
  51. package/dist/cli/entrypoint/parser/RelayParser.js +1 -1
  52. package/dist/cli/entrypoint/parser/utils/content/default-render.d.ts +3 -0
  53. package/dist/cli/entrypoint/parser/utils/content/default-render.js +21 -0
  54. package/dist/cli/entrypoint/parser/utils/content/default-render.js.map +1 -0
  55. package/dist/cli/plugins/content/Content.d.ts +1 -1
  56. package/dist/cli/plugins/content/ContentDriver.d.ts +1 -1
  57. package/dist/cli/plugins/content/ContentManager.d.ts +1 -1
  58. package/dist/cli/plugins/content/ContentManager.js +1 -1
  59. package/dist/cli/plugins/content/ContentName.d.ts +1 -1
  60. package/dist/cli/plugins/content/ContentName.js +1 -1
  61. package/dist/cli/plugins/content/Relay.d.ts +1 -1
  62. package/dist/cli/plugins/content/RelayDriver.d.ts +1 -1
  63. package/dist/cli/plugins/content/RelayDriver.js +1 -1
  64. package/dist/cli/plugins/content/bundler.d.ts +1 -1
  65. package/dist/cli/plugins/content/bundler.js +1 -1
  66. package/dist/cli/plugins/content/index.js +2 -2
  67. package/dist/cli/plugins/content/index.js.map +1 -1
  68. package/dist/cli/plugins/content/types.d.ts +1 -1
  69. package/dist/cli/plugins/content/utils.d.ts +1 -1
  70. package/dist/cli/plugins/content/utils.js +1 -1
  71. package/dist/cli/plugins/index.d.ts +1 -1
  72. package/dist/cli/plugins/index.js +1 -1
  73. package/dist/cli/plugins/locale/index.js +2 -2
  74. package/dist/cli/plugins/locale/index.js.map +1 -1
  75. package/dist/cli/plugins/output/index.d.ts +2 -0
  76. package/dist/cli/plugins/{output.js → output/index.js} +11 -13
  77. package/dist/cli/plugins/output/index.js.map +1 -0
  78. package/dist/cli/plugins/output/runtime.d.ts +26 -0
  79. package/dist/cli/plugins/output/runtime.js +19 -0
  80. package/dist/cli/plugins/output/runtime.js.map +1 -0
  81. package/dist/cli/plugins/style/index.js +1 -1
  82. package/dist/cli/plugins/style/index.js.map +1 -1
  83. package/dist/cli/resolvers/config.js +1 -1
  84. package/dist/cli/resolvers/config.js.map +1 -1
  85. package/dist/cli/virtual/index.js +4 -4
  86. package/dist/cli/virtual/virtual.d.ts +8 -3
  87. package/dist/content/index.d.ts +3 -0
  88. package/dist/content/index.js +8 -0
  89. package/dist/content/index.js.map +1 -0
  90. package/dist/entry/content/adapters/react/Builder.d.ts +5 -6
  91. package/dist/entry/content/adapters/react/Builder.js +8 -21
  92. package/dist/entry/content/adapters/react/Builder.js.map +1 -1
  93. package/dist/entry/content/adapters/react/Node.d.ts +6 -14
  94. package/dist/entry/content/adapters/react/Node.js +9 -33
  95. package/dist/entry/content/adapters/react/Node.js.map +1 -1
  96. package/dist/entry/content/adapters/react/index.d.ts +2 -1
  97. package/dist/entry/content/adapters/react/index.js +3 -1
  98. package/dist/entry/content/adapters/react/index.js.map +1 -1
  99. package/dist/entry/content/adapters/react/resolvers/definition.d.ts +2 -0
  100. package/dist/entry/content/adapters/react/resolvers/definition.js +12 -0
  101. package/dist/entry/content/adapters/react/resolvers/definition.js.map +1 -0
  102. package/dist/entry/content/adapters/react/resolvers/render.d.ts +2 -2
  103. package/dist/entry/content/adapters/react/resolvers/render.js +4 -6
  104. package/dist/entry/content/adapters/react/resolvers/render.js.map +1 -1
  105. package/dist/entry/content/adapters/vanilla/Builder.d.ts +5 -5
  106. package/dist/entry/content/adapters/vanilla/Builder.js +9 -15
  107. package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
  108. package/dist/entry/content/adapters/vanilla/Node.d.ts +5 -11
  109. package/dist/entry/content/adapters/vanilla/Node.js +11 -37
  110. package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
  111. package/dist/entry/content/adapters/vanilla/index.d.ts +2 -1
  112. package/dist/entry/content/adapters/vanilla/index.js +3 -1
  113. package/dist/entry/content/adapters/vanilla/index.js.map +1 -1
  114. package/dist/entry/content/adapters/vanilla/resolvers/definition.d.ts +2 -0
  115. package/dist/entry/content/adapters/vanilla/resolvers/definition.js +9 -0
  116. package/dist/entry/content/adapters/vanilla/resolvers/definition.js.map +1 -0
  117. package/dist/entry/content/adapters/vanilla/resolvers/render.d.ts +3 -0
  118. package/dist/entry/content/adapters/vanilla/resolvers/render.js +15 -0
  119. package/dist/entry/content/adapters/vanilla/resolvers/render.js.map +1 -0
  120. package/dist/entry/content/index.d.ts +5 -1
  121. package/dist/entry/content/index.js +8 -1
  122. package/dist/entry/content/index.js.map +1 -1
  123. package/dist/entry/content/lifecycle/Builder.d.ts +26 -0
  124. package/dist/entry/content/lifecycle/Builder.js +212 -0
  125. package/dist/entry/content/lifecycle/Builder.js.map +1 -0
  126. package/dist/entry/content/lifecycle/IsolationSetup.d.ts +16 -0
  127. package/dist/entry/content/lifecycle/IsolationSetup.js +37 -0
  128. package/dist/entry/content/lifecycle/IsolationSetup.js.map +1 -0
  129. package/dist/entry/content/lifecycle/MountBuilder.d.ts +8 -0
  130. package/dist/entry/content/lifecycle/MountBuilder.js +57 -0
  131. package/dist/entry/content/lifecycle/MountBuilder.js.map +1 -0
  132. package/dist/entry/content/{core → lifecycle}/context/Context.d.ts +4 -2
  133. package/dist/entry/content/lifecycle/context/Context.js +73 -0
  134. package/dist/entry/content/lifecycle/context/Context.js.map +1 -0
  135. package/dist/entry/content/{core → lifecycle}/context/EventEmitter.d.ts +2 -2
  136. package/dist/entry/content/{core → lifecycle}/context/EventEmitter.js +3 -3
  137. package/dist/entry/content/lifecycle/context/EventEmitter.js.map +1 -0
  138. package/dist/entry/content/lifecycle/context/ManagedContext.d.ts +5 -0
  139. package/dist/entry/content/{core → lifecycle}/context/ManagedContext.js +2 -2
  140. package/dist/entry/content/lifecycle/context/ManagedContext.js.map +1 -0
  141. package/dist/entry/content/lifecycle/context/index.js.map +1 -0
  142. package/dist/entry/content/{core → lifecycle}/markers/AbstractMarker.d.ts +2 -2
  143. package/dist/entry/content/{core → lifecycle}/markers/AbstractMarker.js +3 -3
  144. package/dist/entry/content/lifecycle/markers/AbstractMarker.js.map +1 -0
  145. package/dist/entry/content/{core → lifecycle}/markers/AttributeMarker.d.ts +2 -2
  146. package/dist/entry/content/{core → lifecycle}/markers/AttributeMarker.js +2 -2
  147. package/dist/entry/content/lifecycle/markers/AttributeMarker.js.map +1 -0
  148. package/dist/entry/content/{core → lifecycle}/markers/WeakMarker.d.ts +2 -2
  149. package/dist/entry/content/{core → lifecycle}/markers/WeakMarker.js +2 -2
  150. package/dist/entry/content/lifecycle/markers/WeakMarker.js.map +1 -0
  151. package/dist/entry/content/lifecycle/markers/index.js.map +1 -0
  152. package/dist/entry/content/{core → lifecycle}/nodes/EventNode.d.ts +4 -2
  153. package/dist/entry/content/{core → lifecycle}/nodes/EventNode.js +11 -2
  154. package/dist/entry/content/lifecycle/nodes/EventNode.js.map +1 -0
  155. package/dist/entry/content/{core → lifecycle}/nodes/FrameNode.d.ts +11 -5
  156. package/dist/entry/content/lifecycle/nodes/FrameNode.js +187 -0
  157. package/dist/entry/content/lifecycle/nodes/FrameNode.js.map +1 -0
  158. package/dist/entry/content/{core → lifecycle}/nodes/MarkerNode.d.ts +3 -2
  159. package/dist/entry/content/{core → lifecycle}/nodes/MarkerNode.js +5 -2
  160. package/dist/entry/content/lifecycle/nodes/MarkerNode.js.map +1 -0
  161. package/dist/entry/content/{core → lifecycle}/nodes/MountNode.d.ts +3 -2
  162. package/dist/entry/content/{core → lifecycle}/nodes/MountNode.js +5 -2
  163. package/dist/entry/content/lifecycle/nodes/MountNode.js.map +1 -0
  164. package/dist/entry/content/{core → lifecycle}/nodes/Node.d.ts +2 -2
  165. package/dist/entry/content/{core → lifecycle}/nodes/Node.js +2 -2
  166. package/dist/entry/content/lifecycle/nodes/Node.js.map +1 -0
  167. package/dist/entry/content/lifecycle/nodes/RenderNode.d.ts +19 -0
  168. package/dist/entry/content/lifecycle/nodes/RenderNode.js +75 -0
  169. package/dist/entry/content/lifecycle/nodes/RenderNode.js.map +1 -0
  170. package/dist/entry/content/lifecycle/nodes/ShadowNode.d.ts +21 -0
  171. package/dist/entry/content/lifecycle/nodes/ShadowNode.js +121 -0
  172. package/dist/entry/content/lifecycle/nodes/ShadowNode.js.map +1 -0
  173. package/dist/entry/content/{core → lifecycle}/nodes/index.d.ts +1 -0
  174. package/dist/entry/content/lifecycle/nodes/index.js +17 -0
  175. package/dist/entry/content/lifecycle/nodes/index.js.map +1 -0
  176. package/dist/entry/content/{core → lifecycle}/nodes/isolated-styles.d.ts +1 -1
  177. package/dist/entry/content/{core → lifecycle}/nodes/isolated-styles.js +2 -2
  178. package/dist/entry/content/lifecycle/nodes/isolated-styles.js.map +1 -0
  179. package/dist/entry/content/resolvers/anchor.d.ts +2 -0
  180. package/dist/entry/content/{core/resolvers → resolvers}/anchor.js +2 -2
  181. package/dist/entry/content/resolvers/anchor.js.map +1 -0
  182. package/dist/entry/content/resolvers/container.d.ts +2 -0
  183. package/dist/entry/content/{core/resolvers → resolvers}/container.js +2 -2
  184. package/dist/entry/content/resolvers/container.js.map +1 -0
  185. package/dist/entry/content/resolvers/definition.d.ts +5 -0
  186. package/dist/entry/content/resolvers/definition.js +24 -0
  187. package/dist/entry/content/resolvers/definition.js.map +1 -0
  188. package/dist/entry/content/{core/resolvers → resolvers}/index.d.ts +1 -1
  189. package/dist/entry/content/{core/resolvers → resolvers}/index.js +1 -1
  190. package/dist/entry/content/resolvers/index.js.map +1 -0
  191. package/dist/entry/content/resolvers/mount.d.ts +2 -0
  192. package/dist/entry/content/{core/resolvers → resolvers}/mount.js +3 -3
  193. package/dist/entry/content/resolvers/mount.js.map +1 -0
  194. package/dist/entry/content/resolvers/target.d.ts +3 -0
  195. package/dist/entry/content/resolvers/target.js +34 -0
  196. package/dist/entry/content/resolvers/target.js.map +1 -0
  197. package/dist/entry/content/resolvers/watch.d.ts +6 -0
  198. package/dist/entry/content/{core/resolvers → resolvers}/watch.js +14 -10
  199. package/dist/entry/content/resolvers/watch.js.map +1 -0
  200. package/dist/entry/relay/Builder.d.ts +8 -8
  201. package/dist/entry/relay/Builder.js +28 -19
  202. package/dist/entry/relay/Builder.js.map +1 -1
  203. package/dist/entry/relay/TransportBuilder.d.ts +3 -2
  204. package/dist/entry/relay/TransportBuilder.js +3 -3
  205. package/dist/entry/relay/TransportBuilder.js.map +1 -1
  206. package/dist/entry/relay/index.d.ts +5 -2
  207. package/dist/entry/relay/index.js +8 -2
  208. package/dist/entry/relay/index.js.map +1 -1
  209. package/dist/entry/relay/resolvers/definition.d.ts +4 -0
  210. package/dist/entry/relay/resolvers/definition.js +16 -0
  211. package/dist/entry/relay/resolvers/definition.js.map +1 -0
  212. package/dist/main/content.d.ts +4 -6
  213. package/dist/main/content.js +3 -16
  214. package/dist/main/content.js.map +1 -1
  215. package/dist/main/entrypoint.js +1 -1
  216. package/dist/main/entrypoint.js.map +1 -1
  217. package/dist/main/relay.d.ts +2 -1
  218. package/dist/main/relay.js.map +1 -1
  219. package/dist/relay/RelayPermission.js +1 -1
  220. package/dist/shared/content/isolation.d.ts +1 -1
  221. package/dist/shared/content/isolation.js +13 -20
  222. package/dist/shared/content/isolation.js.map +1 -1
  223. package/dist/types/content/adapters/index.d.ts +2 -0
  224. package/dist/types/content/adapters/index.js +1 -0
  225. package/dist/types/content/adapters/index.js.map +1 -0
  226. package/dist/types/content/adapters/react.d.ts +4 -0
  227. package/dist/types/content/adapters/react.js +1 -0
  228. package/dist/types/content/adapters/react.js.map +1 -0
  229. package/dist/types/content/adapters/vanilla.d.ts +1 -0
  230. package/dist/types/content/adapters/vanilla.js +1 -0
  231. package/dist/types/content/adapters/vanilla.js.map +1 -0
  232. package/dist/types/content/boundary.d.ts +17 -0
  233. package/dist/types/content/boundary.js +1 -0
  234. package/dist/types/content/boundary.js.map +1 -0
  235. package/dist/types/{content.d.ts → content/common.d.ts} +24 -53
  236. package/dist/types/{content.js → content/common.js} +1 -1
  237. package/dist/types/content/common.js.map +1 -0
  238. package/dist/types/content/definition.d.ts +61 -0
  239. package/dist/types/content/definition.js +1 -0
  240. package/dist/types/content/definition.js.map +1 -0
  241. package/dist/types/content/index.d.ts +7 -0
  242. package/dist/types/content/index.js +2 -0
  243. package/dist/types/content/index.js.map +1 -0
  244. package/dist/types/content/prepare.d.ts +9 -0
  245. package/dist/types/content/prepare.js +1 -0
  246. package/dist/types/content/prepare.js.map +1 -0
  247. package/dist/types/content/render.d.ts +6 -0
  248. package/dist/types/content/render.js +1 -0
  249. package/dist/types/content/render.js.map +1 -0
  250. package/dist/types/content/target.d.ts +13 -0
  251. package/dist/types/content/target.js +1 -0
  252. package/dist/types/content/target.js.map +1 -0
  253. package/dist/types/manifest.d.ts +1 -1
  254. package/dist/types/relay.d.ts +3 -4
  255. package/dist/types/relay.js.map +1 -1
  256. package/dist/virtual/modules.d.ts +4 -3
  257. package/dist/virtual/{entrypoint.d.ts → runtime.d.ts} +3 -0
  258. package/dist/virtual/runtime.js +9 -0
  259. package/dist/virtual/runtime.js.map +1 -0
  260. package/package.json +32 -23
  261. package/scripts/merge-coverage.mjs +12 -0
  262. package/scripts/pre-commit.mjs +22 -0
  263. package/scripts/test-inventory.mjs +38 -0
  264. package/scripts/test-run.mjs +25 -0
  265. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.d.ts +0 -13
  266. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js +0 -16
  267. package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js.map +0 -1
  268. package/dist/cli/bundler/utils/layers.js.map +0 -1
  269. package/dist/cli/bundler/utils/output.d.ts +0 -6
  270. package/dist/cli/bundler/utils/output.js.map +0 -1
  271. package/dist/cli/bundler/utils/styles.d.ts +0 -5
  272. package/dist/cli/bundler/utils/styles.js.map +0 -1
  273. package/dist/cli/plugins/output.d.ts +0 -2
  274. package/dist/cli/plugins/output.js.map +0 -1
  275. package/dist/entry/content/adapters/react/resolvers/index.d.ts +0 -1
  276. package/dist/entry/content/adapters/react/resolvers/index.js +0 -2
  277. package/dist/entry/content/adapters/react/resolvers/index.js.map +0 -1
  278. package/dist/entry/content/core/Builder.d.ts +0 -26
  279. package/dist/entry/content/core/Builder.js +0 -128
  280. package/dist/entry/content/core/Builder.js.map +0 -1
  281. package/dist/entry/content/core/MountBuilder.d.ts +0 -10
  282. package/dist/entry/content/core/MountBuilder.js +0 -48
  283. package/dist/entry/content/core/MountBuilder.js.map +0 -1
  284. package/dist/entry/content/core/context/Context.js +0 -50
  285. package/dist/entry/content/core/context/Context.js.map +0 -1
  286. package/dist/entry/content/core/context/EventEmitter.js.map +0 -1
  287. package/dist/entry/content/core/context/ManagedContext.d.ts +0 -5
  288. package/dist/entry/content/core/context/ManagedContext.js.map +0 -1
  289. package/dist/entry/content/core/context/index.js.map +0 -1
  290. package/dist/entry/content/core/markers/AbstractMarker.js.map +0 -1
  291. package/dist/entry/content/core/markers/AttributeMarker.js.map +0 -1
  292. package/dist/entry/content/core/markers/WeakMarker.js.map +0 -1
  293. package/dist/entry/content/core/markers/index.js.map +0 -1
  294. package/dist/entry/content/core/nodes/EventNode.js.map +0 -1
  295. package/dist/entry/content/core/nodes/FrameNode.js +0 -125
  296. package/dist/entry/content/core/nodes/FrameNode.js.map +0 -1
  297. package/dist/entry/content/core/nodes/MarkerNode.js.map +0 -1
  298. package/dist/entry/content/core/nodes/MountNode.js.map +0 -1
  299. package/dist/entry/content/core/nodes/Node.js.map +0 -1
  300. package/dist/entry/content/core/nodes/ShadowNode.d.ts +0 -14
  301. package/dist/entry/content/core/nodes/ShadowNode.js +0 -67
  302. package/dist/entry/content/core/nodes/ShadowNode.js.map +0 -1
  303. package/dist/entry/content/core/nodes/index.js +0 -15
  304. package/dist/entry/content/core/nodes/index.js.map +0 -1
  305. package/dist/entry/content/core/nodes/isolated-styles.js.map +0 -1
  306. package/dist/entry/content/core/resolvers/anchor.d.ts +0 -2
  307. package/dist/entry/content/core/resolvers/anchor.js.map +0 -1
  308. package/dist/entry/content/core/resolvers/container.d.ts +0 -2
  309. package/dist/entry/content/core/resolvers/container.js.map +0 -1
  310. package/dist/entry/content/core/resolvers/definition.d.ts +0 -3
  311. package/dist/entry/content/core/resolvers/definition.js +0 -12
  312. package/dist/entry/content/core/resolvers/definition.js.map +0 -1
  313. package/dist/entry/content/core/resolvers/index.js.map +0 -1
  314. package/dist/entry/content/core/resolvers/mount.d.ts +0 -2
  315. package/dist/entry/content/core/resolvers/mount.js.map +0 -1
  316. package/dist/entry/content/core/resolvers/render.d.ts +0 -3
  317. package/dist/entry/content/core/resolvers/render.js +0 -18
  318. package/dist/entry/content/core/resolvers/render.js.map +0 -1
  319. package/dist/entry/content/core/resolvers/watch.d.ts +0 -4
  320. package/dist/entry/content/core/resolvers/watch.js.map +0 -1
  321. package/dist/entry/content/frame/Builder.d.ts +0 -7
  322. package/dist/entry/content/frame/Builder.js +0 -14
  323. package/dist/entry/content/frame/Builder.js.map +0 -1
  324. package/dist/entry/content/frame/index.d.ts +0 -4
  325. package/dist/entry/content/frame/index.js +0 -7
  326. package/dist/entry/content/frame/index.js.map +0 -1
  327. package/dist/types/content.js.map +0 -1
  328. package/dist/virtual/entrypoint.js +0 -7
  329. package/dist/virtual/entrypoint.js.map +0 -1
  330. /package/dist/entry/content/{core → lifecycle}/context/index.d.ts +0 -0
  331. /package/dist/entry/content/{core → lifecycle}/context/index.js +0 -0
  332. /package/dist/entry/content/{core → lifecycle}/markers/index.d.ts +0 -0
  333. /package/dist/entry/content/{core → lifecycle}/markers/index.js +0 -0
package/README.md CHANGED
@@ -17,6 +17,9 @@ the browser-specific build and manifest.
17
17
  npm i -D adnbn
18
18
  ```
19
19
 
20
+ TypeScript projects require TypeScript **5.6.3 or newer** to check the published declarations and
21
+ their dependencies. Addon Bone's own TypeScript dependency does not replace your project's compiler.
22
+
20
23
  ## Get started
21
24
 
22
25
  Create a project, then build it for production:
@@ -5,7 +5,7 @@ import { Browser } from "./../../../types/browser.js";
5
5
  import { CommandExecuteActionName } from "./../../../types/command.js";
6
6
  import { DefaultIconGroupName } from "./../../../types/icon.js";
7
7
  import { SidebarAlternativeBrowsers } from "./../../../types/sidebar.js";
8
- import { ContentScriptMatches } from "./../../../types/content.js";
8
+ import { ContentScriptMatches } from "./../../../types/content/index.js";
9
9
  class ManifestError extends Error {
10
10
  constructor(message) {
11
11
  super("Manifest: " + message);
@@ -1,2 +1,3 @@
1
1
  export * from "./plugins/index.js";
2
2
  export * from "./utils/index.js";
3
+ export * from "./layers.js";
@@ -1,3 +1,4 @@
1
1
  export * from "./plugins/index.js";
2
2
  export * from "./utils/index.js";
3
+ export * from "./layers.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/bundler/index.ts"],"sourcesContent":["export * from \"./plugins\";\nexport * from \"./utils\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/bundler/index.ts"],"sourcesContent":["export * from \"./plugins\";\nexport * from \"./utils\";\nexport * from \"./layers\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -1,4 +1,5 @@
1
- import type { ContentScriptWorld } from "../../../types/content.js";
1
+ import type { ContentScriptWorld } from "../../types/content/index.js";
2
+ export declare const IsolatedStylesLayer = "adnbn:css:isolation";
2
3
  /** Shared build identity for content and Relay modules, independent of their UI isolation. */
3
4
  export declare const getContentLayer: (world: ContentScriptWorld) => string;
4
5
  export declare const isContentLayer: (layer: string) => boolean;
@@ -1,9 +1,11 @@
1
1
  const ContentLayerPrefix = "adnbn:content:";
2
+ const IsolatedStylesLayer = "adnbn:css:isolation";
2
3
  const getContentLayer = (world) => {
3
4
  return `${ContentLayerPrefix}${world.toLowerCase()}`;
4
5
  };
5
6
  const isContentLayer = (layer) => layer.startsWith(ContentLayerPrefix);
6
7
  export {
8
+ IsolatedStylesLayer,
7
9
  getContentLayer,
8
10
  isContentLayer
9
11
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/bundler/layers.ts"],"sourcesContent":["import type {ContentScriptWorld} from \"@typing/content\";\n\nconst ContentLayerPrefix = \"adnbn:content:\";\n\n// This is a bundler layer, not a CSS @layer. A distinct css-loader identity is\n// also required: CssExtract deduplicates dependencies by their loader request.\nexport const IsolatedStylesLayer = \"adnbn:css:isolation\";\n\n/** Shared build identity for content and Relay modules, independent of their UI isolation. */\nexport const getContentLayer = (world: ContentScriptWorld): string => {\n return `${ContentLayerPrefix}${world.toLowerCase()}`;\n};\n\nexport const isContentLayer = (layer: string): boolean => layer.startsWith(ContentLayerPrefix);\n"],"mappings":"AAEA,MAAM,qBAAqB;AAIpB,MAAM,sBAAsB;AAG5B,MAAM,kBAAkB,CAAC,UAAsC;AAClE,SAAO,GAAG,kBAAkB,GAAG,MAAM,YAAY,CAAC;AACtD;AAEO,MAAM,iBAAiB,CAAC,UAA2B,MAAM,WAAW,kBAAkB;","names":[]}
@@ -1,7 +1,8 @@
1
1
  import { Compilation, RuntimeGlobals, RuntimeModule, sources } from "@rspack/core";
2
2
  import stringify from "json-stringify-deterministic";
3
3
  import ts from "typescript";
4
- import { collectBuildAssets, setCompilationBuildAssets } from "./../../../../cli/bundler/utils/output.js";
4
+ import { collectBuildAssets } from "./../../../../cli/bundler/utils/assets.js";
5
+ import { setCompilationBuildAssets } from "../utils/index.js";
5
6
  import {
6
7
  CssContentHashType,
7
8
  JavaScriptContentHashType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.ts"],"sourcesContent":["import {Chunk, Compilation, Compiler, Filename, RuntimeGlobals, RuntimeModule, sources} from \"@rspack/core\";\nimport stringify from \"json-stringify-deterministic\";\nimport ts from \"typescript\";\n\nimport {collectBuildAssets, setCompilationBuildAssets} from \"@cli/bundler/utils/output\";\nimport {\n CssContentHashType,\n JavaScriptContentHashType,\n resolveChunkFilename,\n resolveFilenameTemplate,\n filenameRequiresFullHash,\n} from \"@cli/bundler/utils/chunk-filename\";\nimport {toPosix} from \"@cli/utils/path\";\n\nimport type {EntrypointAssetsMap, EntrypointAssets} from \"@typing/entrypoint\";\n\nimport {trackModuleUsage, type BuildAssetsMapPluginModuleOptions} from \"./usage\";\n\nconst PluginName = \"BuildAssetsMapPlugin\";\n// Replaced with the full map once Rspack has resolved the output filenames.\nconst FullMapPlaceholder = \"__ADNBN_BUILD_ASSETS_FULL_MAP_PLACEHOLDER__\";\n// These JSON envelope keys let final validation locate each map after minification.\nconst FullMapEnvelopeKey = \"__adnbnBuildAssetsFullMap__\";\nconst CurrentMapEnvelopeKey = \"__adnbnBuildAssetsCurrentMap__\";\n// Hash-based output names are fixed when processAssets starts, so the asset graph is frozen here.\nconst EmbedStage = Number.NEGATIVE_INFINITY;\nconst FinalValidationStage = Infinity;\n\ninterface FullMapRuntime {\n readonly name: string;\n readonly runtime: Chunk;\n}\n\ninterface RuntimeSelection {\n readonly name: string;\n readonly fullMap: boolean;\n readonly property: string;\n}\n\nexport interface BuildAssetsMapPluginOptions {\n readonly module: BuildAssetsMapPluginModuleOptions;\n readonly buildHashSalt?: string;\n readonly cssChunkFilename: Filename;\n readonly cssFilename: Filename;\n readonly fullMapEntrypoint: string;\n}\n\ntype RuntimeModuleFingerprints = Map<Chunk, Map<string, string>>;\n\nconst validateAsyncChunkFilenames = (compilation: Compilation, cssChunkFilename: Filename): void => {\n const asyncChunks = new Set(\n Array.from(compilation.entrypoints.values()).flatMap(entrypoint => {\n return Array.from(entrypoint.getEntrypointChunk().getAllAsyncChunks());\n })\n );\n const validate = (\n filename: Filename,\n chunks: Iterable<Chunk>,\n contentHashType: string,\n assetType: \"CSS\" | \"JavaScript\",\n configName: \"cssFilename\" | \"jsFilename\"\n ): void => {\n if (typeof filename !== \"function\") {\n return;\n }\n\n const returnsFullHash = Array.from(chunks).some(chunk => {\n const template = resolveFilenameTemplate(compilation, chunk, filename, contentHashType);\n\n return /\\[(?:fullhash|hash)(?::\\d+)?\\]/i.test(template);\n });\n\n if (returnsFullHash) {\n const target = assetType === \"JavaScript\" ? \"async chunk URLs\" : \"async CSS chunk URLs\";\n\n throw new Error(\n `Rspack cannot generate ${target} when a filename callback returns [fullhash]; configure ${configName} as a string template instead`\n );\n }\n };\n\n if (compilation.outputOptions.chunkFilename) {\n validate(\n compilation.outputOptions.chunkFilename,\n asyncChunks,\n JavaScriptContentHashType,\n \"JavaScript\",\n \"jsFilename\"\n );\n }\n validate(\n cssChunkFilename,\n Array.from(asyncChunks).filter(chunk => chunkHasCss(compilation, chunk)),\n CssContentHashType,\n \"CSS\",\n \"cssFilename\"\n );\n};\n\nconst chunkHasCss = (compilation: Compilation, chunk: Chunk): boolean => {\n return Array.from(compilation.chunkGraph.getChunkModulesIterable(chunk)).some(module => {\n return module.type === CssContentHashType;\n });\n};\n\nconst chunkHasJavaScript = (compilation: Compilation, chunk: Chunk): boolean => {\n // splitChunks can move every user module out of an entry, but its bootstrap\n // still emits a JavaScript file and remains an initial dependency.\n if (chunk.hasRuntime()) return true;\n return Array.from(compilation.chunkGraph.getChunkModulesIterable(chunk)).some(module => {\n return module.type.startsWith(\"javascript\");\n });\n};\n\nconst getEntrypointRuntimeAssets = (\n compilation: Compilation,\n name: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): EntrypointAssets => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n throw new Error(`Build assets entrypoint \"${name}\" is unavailable`);\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n const jsFilename = compilation.outputOptions.filename;\n const jsChunkFilename = compilation.outputOptions.chunkFilename;\n\n if (!jsFilename || !jsChunkFilename) {\n throw new Error(\"Build assets require output.filename and output.chunkFilename\");\n }\n\n return {\n initial: {\n js: initialChunks\n .filter(chunk => chunkHasJavaScript(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(\n compilation,\n chunk,\n chunk === entryChunk ? jsFilename : jsChunkFilename,\n JavaScriptContentHashType\n );\n }),\n css: initialChunks\n .filter(chunk => chunkHasCss(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(\n compilation,\n chunk,\n chunk === entryChunk ? cssFilename : cssChunkFilename,\n CssContentHashType\n );\n }),\n },\n async: {\n js: asyncChunks\n .filter(chunk => chunkHasJavaScript(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(compilation, chunk, jsChunkFilename, JavaScriptContentHashType);\n }),\n css: asyncChunks\n .filter(chunk => chunkHasCss(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(compilation, chunk, cssChunkFilename, CssContentHashType);\n }),\n },\n };\n};\n\nconst entrypointRuntimeUsesFullHash = (\n compilation: Compilation,\n name: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): boolean => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n return false;\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n const jsFilename = compilation.outputOptions.filename;\n const jsChunkFilename = compilation.outputOptions.chunkFilename;\n\n if (!jsFilename || !jsChunkFilename) {\n return false;\n }\n\n return (\n initialChunks.some(chunk => {\n const js = filenameRequiresFullHash(\n compilation,\n chunk,\n chunk === entryChunk ? jsFilename : jsChunkFilename,\n JavaScriptContentHashType\n );\n const css =\n chunkHasCss(compilation, chunk) &&\n filenameRequiresFullHash(\n compilation,\n chunk,\n chunk === entryChunk ? cssFilename : cssChunkFilename,\n CssContentHashType\n );\n\n return js || css;\n }) ||\n asyncChunks.some(chunk => {\n const js = filenameRequiresFullHash(compilation, chunk, jsChunkFilename, JavaScriptContentHashType);\n const css =\n chunkHasCss(compilation, chunk) &&\n filenameRequiresFullHash(compilation, chunk, cssChunkFilename, CssContentHashType);\n\n return js || css;\n })\n );\n};\n\nconst getChunkKey = (chunk: Chunk): string => {\n return `${String(chunk.name ?? \"\")}:${String(chunk.id ?? \"\")}`;\n};\n\nconst getFullMapRuntime = (\n compilation: Compilation,\n name: string,\n runtimes: ReadonlySet<Chunk>\n): FullMapRuntime | undefined => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint || !runtimes.has(entrypoint.getRuntimeChunk())) {\n return;\n }\n\n return {name, runtime: entrypoint.getRuntimeChunk()};\n};\n\nconst getFullMapRuntimeFiles = (fullMap: FullMapRuntime, assets: EntrypointAssetsMap): readonly string[] => {\n const runtimeFiles = new Set(Array.from(fullMap.runtime.files, toPosix));\n\n return assets[fullMap.name].initial.js.filter(file => runtimeFiles.has(file));\n};\n\nconst validateEntrypointRuntime = (compilation: Compilation, name: string): void => {\n const entrypoint = compilation.entrypoints.get(name)!;\n if (entrypoint.getRuntimeChunk() !== entrypoint.getEntrypointChunk()) {\n throw new Error(\n `Build assets require a self-contained runtime for entrypoint \"${name}\"; disable optimization.runtimeChunk`\n );\n }\n};\n\nconst validateFullMapEntrypoint = (compilation: Compilation, name: string): void => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n return;\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n\n if (initialChunks.length !== 1 || initialChunks[0] !== entryChunk || asyncChunks.length > 0) {\n throw new Error(\n `Full build-assets entrypoint \"${name}\" must be a single self-contained chunk; async chunks are not supported`\n );\n }\n};\n\nconst validateFullMapAssets = (assets: EntrypointAssetsMap, name: string): void => {\n const entrypoint = assets[name];\n\n if (!entrypoint) {\n return;\n }\n\n if (entrypoint.initial.js.length !== 1 || entrypoint.async.js.length > 0) {\n throw new Error(\n `Full build-assets entrypoint \"${name}\" must emit exactly one initial JavaScript file and no async JavaScript files`\n );\n }\n};\n\nconst serializeFilename = (filename: unknown): string => {\n return typeof filename === \"function\" ? filename.toString() : JSON.stringify(filename);\n};\n\nconst collectRuntimeModuleFingerprints = (compilation: Compilation): RuntimeModuleFingerprints => {\n const fingerprints: RuntimeModuleFingerprints = new Map();\n\n compilation.hooks.runtimeModule.tap(PluginName, (runtimeModule, chunk) => {\n if (runtimeModule.identifier().startsWith(\"webpack/runtime/build assets \")) {\n return;\n }\n\n let chunkFingerprints = fingerprints.get(chunk);\n\n if (!chunkFingerprints) {\n chunkFingerprints = new Map();\n fingerprints.set(chunk, chunkFingerprints);\n }\n\n chunkFingerprints.set(`${runtimeModule.stage}:${runtimeModule.identifier()}`, runtimeModule.generate());\n });\n\n return fingerprints;\n};\n\nconst updateBuildAssetsChunkHashes = (\n compilation: Compilation,\n options: Required<BuildAssetsMapPluginOptions>,\n runtimeModuleFingerprints: RuntimeModuleFingerprints,\n runtimes: ReadonlySet<Chunk>\n): void => {\n compilation.hooks.chunkHash.tap(PluginName, (chunk, hash) => {\n if (!runtimes.has(chunk)) return;\n const runtimeEntry = Array.from(compilation.entrypoints).find(([, entrypoint]) => {\n return entrypoint.getRuntimeChunk() === chunk;\n });\n\n if (!runtimeEntry) {\n return;\n }\n\n const [runtimeName] = runtimeEntry;\n const fullMap = runtimeName === options.fullMapEntrypoint;\n const entries = fullMap\n ? Array.from(compilation.entrypoints).toSorted(([left], [right]) => left.localeCompare(right))\n : [runtimeEntry];\n\n hash.update(`${PluginName}:runtime-map:${runtimeName}`, \"utf8\");\n hash.update(options.buildHashSalt, \"utf8\");\n hash.update(serializeFilename(compilation.outputOptions.filename), \"utf8\");\n hash.update(serializeFilename(compilation.outputOptions.chunkFilename), \"utf8\");\n hash.update(serializeFilename(options.cssFilename), \"utf8\");\n hash.update(serializeFilename(options.cssChunkFilename), \"utf8\");\n\n if (fullMap) {\n hash.update(serializeFilename(compilation.outputOptions.assetModuleFilename), \"utf8\");\n }\n\n for (const [entryName, entrypoint] of entries) {\n hash.update(entryName, \"utf8\");\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = new Set(entrypoint.chunks);\n const chunks = Array.from(entryChunk.getAllReferencedChunks()).toSorted((left, right) =>\n getChunkKey(left).localeCompare(getChunkKey(right))\n );\n\n for (const referencedChunk of chunks) {\n const category = initialChunks.has(referencedChunk) ? \"initial\" : \"async\";\n\n hash.update(`${category}:${getChunkKey(referencedChunk)}`, \"utf8\");\n\n const jsFilename =\n referencedChunk === entryChunk\n ? compilation.outputOptions.filename\n : compilation.outputOptions.chunkFilename;\n\n if (jsFilename) {\n const template = resolveFilenameTemplate(\n compilation,\n referencedChunk,\n jsFilename,\n JavaScriptContentHashType\n );\n\n hash.update(`javascript-template:${template}`, \"utf8\");\n }\n\n if (chunkHasCss(compilation, referencedChunk)) {\n const cssFilename = referencedChunk === entryChunk ? options.cssFilename : options.cssChunkFilename;\n const template = resolveFilenameTemplate(\n compilation,\n referencedChunk,\n cssFilename,\n CssContentHashType\n );\n\n hash.update(`css-template:${template}`, \"utf8\");\n }\n\n const moduleHashes = Array.from(\n compilation.chunkGraph.getChunkModulesIterable(referencedChunk),\n module => {\n return compilation.chunkGraph.getModuleHash(module, new Set(referencedChunk.runtime)) ?? \"\";\n }\n ).toSorted();\n\n moduleHashes.forEach(moduleHash => hash.update(moduleHash, \"utf8\"));\n\n const runtimeFingerprints = runtimeModuleFingerprints.get(referencedChunk);\n\n if (runtimeFingerprints) {\n Array.from(runtimeFingerprints)\n .toSorted(([left], [right]) => left.localeCompare(right))\n .forEach(([identifier, source]) => {\n hash.update(`runtime-module:${identifier}`, \"utf8\");\n hash.update(source, \"utf8\");\n });\n }\n }\n }\n });\n};\n\nclass BuildAssetsRuntimeModule extends RuntimeModule {\n public constructor(\n private readonly fullMap: boolean,\n private readonly runtimeName: string,\n private readonly property: string,\n private readonly cssFilename: Filename,\n private readonly cssChunkFilename: Filename,\n fullHash: boolean\n ) {\n super(`build assets ${fullMap ? \"full\" : \"current\"} ${runtimeName}`, RuntimeModule.STAGE_TRIGGER);\n\n if (!fullMap) {\n this.dependentHash = true;\n this.fullHash = fullHash;\n }\n }\n\n public generate(): string {\n const runtime = RuntimeGlobals.require;\n\n if (this.fullMap) {\n return `${runtime}[${JSON.stringify(this.property)}] = JSON.parse(${JSON.stringify(FullMapPlaceholder)}).${FullMapEnvelopeKey};`;\n }\n\n const compilation = this.compilation;\n\n if (!compilation) {\n throw new Error(\"Build assets runtime is not attached to a compilation\");\n }\n\n const current = getEntrypointRuntimeAssets(\n compilation,\n this.runtimeName,\n this.cssFilename,\n this.cssChunkFilename\n );\n\n const envelope = JSON.stringify({[CurrentMapEnvelopeKey]: current});\n\n return `${runtime}[${JSON.stringify(this.property)}] = JSON.parse(${JSON.stringify(envelope)}).${CurrentMapEnvelopeKey};`;\n }\n}\n\nconst replaceFullMapPlaceholder = (\n compilation: Compilation,\n runtimeFiles: readonly string[],\n assets: EntrypointAssetsMap\n): void => {\n const placeholder = JSON.stringify(FullMapPlaceholder);\n const replacementValue = JSON.stringify(JSON.stringify({[FullMapEnvelopeKey]: assets}));\n let replacements = 0;\n\n for (const file of runtimeFiles) {\n const asset = compilation.getAsset(file);\n\n if (!asset) {\n continue;\n }\n\n const code = asset.source.source().toString();\n const start = code.indexOf(placeholder);\n\n if (start < 0) {\n continue;\n }\n\n if (code.indexOf(placeholder, start + placeholder.length) >= 0) {\n throw new Error(`Build assets placeholder occurs more than once in \"${file}\"`);\n }\n\n const source = new sources.ReplaceSource(asset.source);\n\n source.replace(start, start + placeholder.length - 1, replacementValue);\n compilation.updateAsset(file, source);\n replacements += 1;\n }\n\n if (replacements !== 1) {\n throw new Error(`Expected one full build-assets runtime, found ${replacements}`);\n }\n};\n\nconst extractEmbeddedEnvelope = <T>(file: string, source: string, key: string): T => {\n const sourceFile = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, false, ts.ScriptKind.JS);\n const values: T[] = [];\n\n const visit = (node: ts.Node): void => {\n if (ts.isStringLiteralLike(node) && node.text.includes(key)) {\n try {\n const envelope = JSON.parse(node.text) as Record<string, T>;\n\n if (Object.prototype.hasOwnProperty.call(envelope, key)) {\n values.push(envelope[key]);\n }\n } catch {}\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n if (values.length !== 1) {\n throw new Error(`Expected one embedded build assets value in \"${file}\", found ${values.length}`);\n }\n\n return values[0];\n};\n\nconst extractEmbeddedMap = (file: string, source: string): EntrypointAssetsMap => {\n return extractEmbeddedEnvelope<EntrypointAssetsMap>(file, source, FullMapEnvelopeKey);\n};\n\nconst validateEmbeddedMap = (compilation: Compilation, fullMap: FullMapRuntime, assets: EntrypointAssetsMap): void => {\n const runtimeFiles = getFullMapRuntimeFiles(fullMap, assets);\n const runtime = runtimeFiles\n .map(file => ({file, source: compilation.getAsset(file)?.source.source().toString() ?? \"\"}))\n .find(({source}) => source.length > 0);\n\n if (!runtime) {\n throw new Error(\n `Full build-assets runtime for entrypoint \"${fullMap.name}\" is unavailable after asset processing`\n );\n }\n\n const embedded = extractEmbeddedMap(runtime.file, runtime.source);\n\n if (stringify(embedded) !== stringify(assets)) {\n throw new Error(\n \"Build assets changed after the runtime map was embedded; finalize entrypoint assets before processAssets begins\"\n );\n }\n};\n\nconst validateCurrentEntrypointMaps = (\n compilation: Compilation,\n assets: EntrypointAssetsMap,\n fullMapEntrypoint: string,\n runtimes: ReadonlySet<Chunk>\n): void => {\n for (const [name, entrypointAssets] of Object.entries(assets)) {\n if (name === fullMapEntrypoint) {\n continue;\n }\n\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n throw new Error(`Build assets entrypoint \"${name}\" is unavailable`);\n }\n\n if (!runtimes.has(entrypoint.getRuntimeChunk())) continue;\n\n const runtimeFiles = new Set(Array.from(entrypoint.getRuntimeChunk().files, toPosix));\n const runtime = entrypointAssets.initial.js\n .filter(file => runtimeFiles.has(file))\n .map(file => ({file, source: compilation.getAsset(file)?.source.source().toString() ?? \"\"}))\n .find(({source}) => source.length > 0);\n\n if (!runtime) {\n throw new Error(`Runtime map for entrypoint \"${name}\" is unavailable after asset processing`);\n }\n\n const runtimeAssets = extractEmbeddedEnvelope<EntrypointAssets>(\n runtime.file,\n runtime.source,\n CurrentMapEnvelopeKey\n );\n const finalizedAssets: EntrypointAssets = {\n initial: entrypointAssets.initial,\n async: entrypointAssets.async,\n };\n\n if (stringify(runtimeAssets) !== stringify(finalizedAssets)) {\n throw new Error(\n `Build assets changed after the runtime map for entrypoint \"${name}\" was embedded: ${JSON.stringify({embedded: runtimeAssets, finalized: finalizedAssets})}`\n );\n }\n }\n};\n\nconst finalizeBuildAssets = (\n compilation: Compilation,\n options: Required<BuildAssetsMapPluginOptions>,\n runtimes: ReadonlySet<Chunk>\n): void => {\n const assets = collectBuildAssets(compilation);\n const fullMap = getFullMapRuntime(compilation, options.fullMapEntrypoint, runtimes);\n\n if (fullMap) {\n validateFullMapAssets(assets, options.fullMapEntrypoint);\n validateEmbeddedMap(compilation, fullMap, assets);\n }\n\n validateCurrentEntrypointMaps(compilation, assets, options.fullMapEntrypoint, runtimes);\n\n setCompilationBuildAssets(compilation, assets);\n};\n\nexport default class BuildAssetsMapPlugin {\n private readonly options: Required<BuildAssetsMapPluginOptions>;\n\n public constructor(options: BuildAssetsMapPluginOptions) {\n this.options = {\n ...options,\n buildHashSalt: options.buildHashSalt ?? \"\",\n };\n }\n\n public apply(compiler: Compiler): void {\n const runtimeSelections = new WeakMap<Compilation, ReadonlySet<Chunk>>();\n\n compiler.hooks.thisCompilation.tap({name: PluginName, stage: EmbedStage}, compilation => {\n const injectedRuntimes = new Set<Chunk>();\n runtimeSelections.set(compilation, injectedRuntimes);\n let filenamesValidated = false;\n let selectedRuntimes: Map<Chunk, RuntimeSelection> | undefined;\n const runtimeModuleFingerprints = collectRuntimeModuleFingerprints(compilation);\n const isUsed = trackModuleUsage(compiler, compilation, this.options.module);\n\n updateBuildAssetsChunkHashes(compilation, this.options, runtimeModuleFingerprints, injectedRuntimes);\n\n compilation.hooks.additionalTreeRuntimeRequirements.tap(PluginName, (chunk, requirements) => {\n if (!selectedRuntimes) {\n selectedRuntimes = new Map();\n // Select and validate in entrypoint order, independently of runtime hook order.\n for (const [name, entrypoint] of compilation.entrypoints) {\n const runtime = entrypoint.getRuntimeChunk();\n const fullMap = name === this.options.fullMapEntrypoint;\n const delivery = fullMap ? this.options.module.full : this.options.module.current;\n if (!isUsed(runtime, delivery.export)) continue;\n\n validateEntrypointRuntime(compilation, name);\n if (fullMap) validateFullMapEntrypoint(compilation, name);\n selectedRuntimes.set(runtime, {name, fullMap, property: delivery.property});\n }\n }\n\n if (!filenamesValidated) {\n validateAsyncChunkFilenames(compilation, this.options.cssChunkFilename);\n filenamesValidated = true;\n }\n\n const selection = selectedRuntimes.get(chunk);\n if (!selection || injectedRuntimes.has(chunk)) return;\n\n requirements.add(RuntimeGlobals.require);\n injectedRuntimes.add(chunk);\n compilation.addRuntimeModule(\n chunk,\n new BuildAssetsRuntimeModule(\n selection.fullMap,\n selection.name,\n selection.property,\n this.options.cssFilename,\n this.options.cssChunkFilename,\n entrypointRuntimeUsesFullHash(\n compilation,\n selection.name,\n this.options.cssFilename,\n this.options.cssChunkFilename\n )\n )\n );\n });\n\n compilation.hooks.processAssets.tap(\n {\n name: PluginName,\n stage: EmbedStage,\n },\n () => {\n const assets = collectBuildAssets(compilation);\n const fullMap = getFullMapRuntime(compilation, this.options.fullMapEntrypoint, injectedRuntimes);\n setCompilationBuildAssets(compilation, assets);\n\n if (fullMap) {\n validateFullMapAssets(assets, this.options.fullMapEntrypoint);\n replaceFullMapPlaceholder(compilation, getFullMapRuntimeFiles(fullMap, assets), assets);\n }\n }\n );\n\n compilation.hooks.processAssets.tap(\n {\n name: `${PluginName}:finalize`,\n stage: Compilation.PROCESS_ASSETS_STAGE_ANALYSE,\n },\n () => finalizeBuildAssets(compilation, this.options, injectedRuntimes)\n );\n });\n\n // Register after every afterPlugins callback, then run after ordinary emit taps but before files are written.\n compiler.hooks.afterPlugins.intercept({\n name: `${PluginName}:registerFinalValidation`,\n done: () => {\n compiler.hooks.emit.tap(\n {name: `${PluginName}:finalValidation`, stage: FinalValidationStage},\n compilation => {\n const runtimes = runtimeSelections.get(compilation);\n if (runtimes) finalizeBuildAssets(compilation, this.options, runtimes);\n }\n );\n },\n });\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.ts"],"sourcesContent":["import {Chunk, Compilation, Compiler, Filename, RuntimeGlobals, RuntimeModule, sources} from \"@rspack/core\";\nimport stringify from \"json-stringify-deterministic\";\nimport ts from \"typescript\";\n\nimport {collectBuildAssets} from \"@cli/bundler/utils/assets\";\nimport {setCompilationBuildAssets} from \"../utils\";\nimport {\n CssContentHashType,\n JavaScriptContentHashType,\n resolveChunkFilename,\n resolveFilenameTemplate,\n filenameRequiresFullHash,\n} from \"@cli/bundler/utils/chunk-filename\";\nimport {toPosix} from \"@cli/utils/path\";\n\nimport type {EntrypointAssetsMap, EntrypointAssets} from \"@typing/entrypoint\";\n\nimport {trackModuleUsage, type BuildAssetsMapPluginModuleOptions} from \"./usage\";\n\nconst PluginName = \"BuildAssetsMapPlugin\";\n// Replaced with the full map once Rspack has resolved the output filenames.\nconst FullMapPlaceholder = \"__ADNBN_BUILD_ASSETS_FULL_MAP_PLACEHOLDER__\";\n// These JSON envelope keys let final validation locate each map after minification.\nconst FullMapEnvelopeKey = \"__adnbnBuildAssetsFullMap__\";\nconst CurrentMapEnvelopeKey = \"__adnbnBuildAssetsCurrentMap__\";\n// Hash-based output names are fixed when processAssets starts, so the asset graph is frozen here.\nconst EmbedStage = Number.NEGATIVE_INFINITY;\nconst FinalValidationStage = Infinity;\n\ninterface FullMapRuntime {\n readonly name: string;\n readonly runtime: Chunk;\n}\n\ninterface RuntimeSelection {\n readonly name: string;\n readonly fullMap: boolean;\n readonly property: string;\n}\n\nexport interface BuildAssetsMapPluginOptions {\n readonly module: BuildAssetsMapPluginModuleOptions;\n readonly buildHashSalt?: string;\n readonly cssChunkFilename: Filename;\n readonly cssFilename: Filename;\n readonly fullMapEntrypoint: string;\n}\n\ntype RuntimeModuleFingerprints = Map<Chunk, Map<string, string>>;\n\nconst validateAsyncChunkFilenames = (compilation: Compilation, cssChunkFilename: Filename): void => {\n const asyncChunks = new Set(\n Array.from(compilation.entrypoints.values()).flatMap(entrypoint => {\n return Array.from(entrypoint.getEntrypointChunk().getAllAsyncChunks());\n })\n );\n const validate = (\n filename: Filename,\n chunks: Iterable<Chunk>,\n contentHashType: string,\n assetType: \"CSS\" | \"JavaScript\",\n configName: \"cssFilename\" | \"jsFilename\"\n ): void => {\n if (typeof filename !== \"function\") {\n return;\n }\n\n const returnsFullHash = Array.from(chunks).some(chunk => {\n const template = resolveFilenameTemplate(compilation, chunk, filename, contentHashType);\n\n return /\\[(?:fullhash|hash)(?::\\d+)?\\]/i.test(template);\n });\n\n if (returnsFullHash) {\n const target = assetType === \"JavaScript\" ? \"async chunk URLs\" : \"async CSS chunk URLs\";\n\n throw new Error(\n `Rspack cannot generate ${target} when a filename callback returns [fullhash]; configure ${configName} as a string template instead`\n );\n }\n };\n\n if (compilation.outputOptions.chunkFilename) {\n validate(\n compilation.outputOptions.chunkFilename,\n asyncChunks,\n JavaScriptContentHashType,\n \"JavaScript\",\n \"jsFilename\"\n );\n }\n validate(\n cssChunkFilename,\n Array.from(asyncChunks).filter(chunk => chunkHasCss(compilation, chunk)),\n CssContentHashType,\n \"CSS\",\n \"cssFilename\"\n );\n};\n\nconst chunkHasCss = (compilation: Compilation, chunk: Chunk): boolean => {\n return Array.from(compilation.chunkGraph.getChunkModulesIterable(chunk)).some(module => {\n return module.type === CssContentHashType;\n });\n};\n\nconst chunkHasJavaScript = (compilation: Compilation, chunk: Chunk): boolean => {\n // splitChunks can move every user module out of an entry, but its bootstrap\n // still emits a JavaScript file and remains an initial dependency.\n if (chunk.hasRuntime()) return true;\n return Array.from(compilation.chunkGraph.getChunkModulesIterable(chunk)).some(module => {\n return module.type.startsWith(\"javascript\");\n });\n};\n\nconst getEntrypointRuntimeAssets = (\n compilation: Compilation,\n name: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): EntrypointAssets => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n throw new Error(`Build assets entrypoint \"${name}\" is unavailable`);\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n const jsFilename = compilation.outputOptions.filename;\n const jsChunkFilename = compilation.outputOptions.chunkFilename;\n\n if (!jsFilename || !jsChunkFilename) {\n throw new Error(\"Build assets require output.filename and output.chunkFilename\");\n }\n\n return {\n initial: {\n js: initialChunks\n .filter(chunk => chunkHasJavaScript(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(\n compilation,\n chunk,\n chunk === entryChunk ? jsFilename : jsChunkFilename,\n JavaScriptContentHashType\n );\n }),\n css: initialChunks\n .filter(chunk => chunkHasCss(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(\n compilation,\n chunk,\n chunk === entryChunk ? cssFilename : cssChunkFilename,\n CssContentHashType\n );\n }),\n },\n async: {\n js: asyncChunks\n .filter(chunk => chunkHasJavaScript(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(compilation, chunk, jsChunkFilename, JavaScriptContentHashType);\n }),\n css: asyncChunks\n .filter(chunk => chunkHasCss(compilation, chunk))\n .map(chunk => {\n return resolveChunkFilename(compilation, chunk, cssChunkFilename, CssContentHashType);\n }),\n },\n };\n};\n\nconst entrypointRuntimeUsesFullHash = (\n compilation: Compilation,\n name: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): boolean => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n return false;\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n const jsFilename = compilation.outputOptions.filename;\n const jsChunkFilename = compilation.outputOptions.chunkFilename;\n\n if (!jsFilename || !jsChunkFilename) {\n return false;\n }\n\n return (\n initialChunks.some(chunk => {\n const js = filenameRequiresFullHash(\n compilation,\n chunk,\n chunk === entryChunk ? jsFilename : jsChunkFilename,\n JavaScriptContentHashType\n );\n const css =\n chunkHasCss(compilation, chunk) &&\n filenameRequiresFullHash(\n compilation,\n chunk,\n chunk === entryChunk ? cssFilename : cssChunkFilename,\n CssContentHashType\n );\n\n return js || css;\n }) ||\n asyncChunks.some(chunk => {\n const js = filenameRequiresFullHash(compilation, chunk, jsChunkFilename, JavaScriptContentHashType);\n const css =\n chunkHasCss(compilation, chunk) &&\n filenameRequiresFullHash(compilation, chunk, cssChunkFilename, CssContentHashType);\n\n return js || css;\n })\n );\n};\n\nconst getChunkKey = (chunk: Chunk): string => {\n return `${String(chunk.name ?? \"\")}:${String(chunk.id ?? \"\")}`;\n};\n\nconst getFullMapRuntime = (\n compilation: Compilation,\n name: string,\n runtimes: ReadonlySet<Chunk>\n): FullMapRuntime | undefined => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint || !runtimes.has(entrypoint.getRuntimeChunk())) {\n return;\n }\n\n return {name, runtime: entrypoint.getRuntimeChunk()};\n};\n\nconst getFullMapRuntimeFiles = (fullMap: FullMapRuntime, assets: EntrypointAssetsMap): readonly string[] => {\n const runtimeFiles = new Set(Array.from(fullMap.runtime.files, toPosix));\n\n return assets[fullMap.name].initial.js.filter(file => runtimeFiles.has(file));\n};\n\nconst validateEntrypointRuntime = (compilation: Compilation, name: string): void => {\n const entrypoint = compilation.entrypoints.get(name)!;\n if (entrypoint.getRuntimeChunk() !== entrypoint.getEntrypointChunk()) {\n throw new Error(\n `Build assets require a self-contained runtime for entrypoint \"${name}\"; disable optimization.runtimeChunk`\n );\n }\n};\n\nconst validateFullMapEntrypoint = (compilation: Compilation, name: string): void => {\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n return;\n }\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = Array.from(entrypoint.chunks);\n const asyncChunks = Array.from(entryChunk.getAllAsyncChunks());\n\n if (initialChunks.length !== 1 || initialChunks[0] !== entryChunk || asyncChunks.length > 0) {\n throw new Error(\n `Full build-assets entrypoint \"${name}\" must be a single self-contained chunk; async chunks are not supported`\n );\n }\n};\n\nconst validateFullMapAssets = (assets: EntrypointAssetsMap, name: string): void => {\n const entrypoint = assets[name];\n\n if (!entrypoint) {\n return;\n }\n\n if (entrypoint.initial.js.length !== 1 || entrypoint.async.js.length > 0) {\n throw new Error(\n `Full build-assets entrypoint \"${name}\" must emit exactly one initial JavaScript file and no async JavaScript files`\n );\n }\n};\n\nconst serializeFilename = (filename: unknown): string => {\n return typeof filename === \"function\" ? filename.toString() : JSON.stringify(filename);\n};\n\nconst collectRuntimeModuleFingerprints = (compilation: Compilation): RuntimeModuleFingerprints => {\n const fingerprints: RuntimeModuleFingerprints = new Map();\n\n compilation.hooks.runtimeModule.tap(PluginName, (runtimeModule, chunk) => {\n if (runtimeModule.identifier().startsWith(\"webpack/runtime/build assets \")) {\n return;\n }\n\n let chunkFingerprints = fingerprints.get(chunk);\n\n if (!chunkFingerprints) {\n chunkFingerprints = new Map();\n fingerprints.set(chunk, chunkFingerprints);\n }\n\n chunkFingerprints.set(`${runtimeModule.stage}:${runtimeModule.identifier()}`, runtimeModule.generate());\n });\n\n return fingerprints;\n};\n\nconst updateBuildAssetsChunkHashes = (\n compilation: Compilation,\n options: Required<BuildAssetsMapPluginOptions>,\n runtimeModuleFingerprints: RuntimeModuleFingerprints,\n runtimes: ReadonlySet<Chunk>\n): void => {\n compilation.hooks.chunkHash.tap(PluginName, (chunk, hash) => {\n if (!runtimes.has(chunk)) return;\n const runtimeEntry = Array.from(compilation.entrypoints).find(([, entrypoint]) => {\n return entrypoint.getRuntimeChunk() === chunk;\n });\n\n if (!runtimeEntry) {\n return;\n }\n\n const [runtimeName] = runtimeEntry;\n const fullMap = runtimeName === options.fullMapEntrypoint;\n const entries = fullMap\n ? Array.from(compilation.entrypoints).toSorted(([left], [right]) => left.localeCompare(right))\n : [runtimeEntry];\n\n hash.update(`${PluginName}:runtime-map:${runtimeName}`, \"utf8\");\n hash.update(options.buildHashSalt, \"utf8\");\n hash.update(serializeFilename(compilation.outputOptions.filename), \"utf8\");\n hash.update(serializeFilename(compilation.outputOptions.chunkFilename), \"utf8\");\n hash.update(serializeFilename(options.cssFilename), \"utf8\");\n hash.update(serializeFilename(options.cssChunkFilename), \"utf8\");\n\n if (fullMap) {\n hash.update(serializeFilename(compilation.outputOptions.assetModuleFilename), \"utf8\");\n }\n\n for (const [entryName, entrypoint] of entries) {\n hash.update(entryName, \"utf8\");\n\n const entryChunk = entrypoint.getEntrypointChunk();\n const initialChunks = new Set(entrypoint.chunks);\n const chunks = Array.from(entryChunk.getAllReferencedChunks()).toSorted((left, right) =>\n getChunkKey(left).localeCompare(getChunkKey(right))\n );\n\n for (const referencedChunk of chunks) {\n const category = initialChunks.has(referencedChunk) ? \"initial\" : \"async\";\n\n hash.update(`${category}:${getChunkKey(referencedChunk)}`, \"utf8\");\n\n const jsFilename =\n referencedChunk === entryChunk\n ? compilation.outputOptions.filename\n : compilation.outputOptions.chunkFilename;\n\n if (jsFilename) {\n const template = resolveFilenameTemplate(\n compilation,\n referencedChunk,\n jsFilename,\n JavaScriptContentHashType\n );\n\n hash.update(`javascript-template:${template}`, \"utf8\");\n }\n\n if (chunkHasCss(compilation, referencedChunk)) {\n const cssFilename = referencedChunk === entryChunk ? options.cssFilename : options.cssChunkFilename;\n const template = resolveFilenameTemplate(\n compilation,\n referencedChunk,\n cssFilename,\n CssContentHashType\n );\n\n hash.update(`css-template:${template}`, \"utf8\");\n }\n\n const moduleHashes = Array.from(\n compilation.chunkGraph.getChunkModulesIterable(referencedChunk),\n module => {\n return compilation.chunkGraph.getModuleHash(module, new Set(referencedChunk.runtime)) ?? \"\";\n }\n ).toSorted();\n\n moduleHashes.forEach(moduleHash => hash.update(moduleHash, \"utf8\"));\n\n const runtimeFingerprints = runtimeModuleFingerprints.get(referencedChunk);\n\n if (runtimeFingerprints) {\n Array.from(runtimeFingerprints)\n .toSorted(([left], [right]) => left.localeCompare(right))\n .forEach(([identifier, source]) => {\n hash.update(`runtime-module:${identifier}`, \"utf8\");\n hash.update(source, \"utf8\");\n });\n }\n }\n }\n });\n};\n\nclass BuildAssetsRuntimeModule extends RuntimeModule {\n public constructor(\n private readonly fullMap: boolean,\n private readonly runtimeName: string,\n private readonly property: string,\n private readonly cssFilename: Filename,\n private readonly cssChunkFilename: Filename,\n fullHash: boolean\n ) {\n super(`build assets ${fullMap ? \"full\" : \"current\"} ${runtimeName}`, RuntimeModule.STAGE_TRIGGER);\n\n if (!fullMap) {\n this.dependentHash = true;\n this.fullHash = fullHash;\n }\n }\n\n public generate(): string {\n const runtime = RuntimeGlobals.require;\n\n if (this.fullMap) {\n return `${runtime}[${JSON.stringify(this.property)}] = JSON.parse(${JSON.stringify(FullMapPlaceholder)}).${FullMapEnvelopeKey};`;\n }\n\n const compilation = this.compilation;\n\n if (!compilation) {\n throw new Error(\"Build assets runtime is not attached to a compilation\");\n }\n\n const current = getEntrypointRuntimeAssets(\n compilation,\n this.runtimeName,\n this.cssFilename,\n this.cssChunkFilename\n );\n\n const envelope = JSON.stringify({[CurrentMapEnvelopeKey]: current});\n\n return `${runtime}[${JSON.stringify(this.property)}] = JSON.parse(${JSON.stringify(envelope)}).${CurrentMapEnvelopeKey};`;\n }\n}\n\nconst replaceFullMapPlaceholder = (\n compilation: Compilation,\n runtimeFiles: readonly string[],\n assets: EntrypointAssetsMap\n): void => {\n const placeholder = JSON.stringify(FullMapPlaceholder);\n const replacementValue = JSON.stringify(JSON.stringify({[FullMapEnvelopeKey]: assets}));\n let replacements = 0;\n\n for (const file of runtimeFiles) {\n const asset = compilation.getAsset(file);\n\n if (!asset) {\n continue;\n }\n\n const code = asset.source.source().toString();\n const start = code.indexOf(placeholder);\n\n if (start < 0) {\n continue;\n }\n\n if (code.indexOf(placeholder, start + placeholder.length) >= 0) {\n throw new Error(`Build assets placeholder occurs more than once in \"${file}\"`);\n }\n\n const source = new sources.ReplaceSource(asset.source);\n\n source.replace(start, start + placeholder.length - 1, replacementValue);\n compilation.updateAsset(file, source);\n replacements += 1;\n }\n\n if (replacements !== 1) {\n throw new Error(`Expected one full build-assets runtime, found ${replacements}`);\n }\n};\n\nconst extractEmbeddedEnvelope = <T>(file: string, source: string, key: string): T => {\n const sourceFile = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, false, ts.ScriptKind.JS);\n const values: T[] = [];\n\n const visit = (node: ts.Node): void => {\n if (ts.isStringLiteralLike(node) && node.text.includes(key)) {\n try {\n const envelope = JSON.parse(node.text) as Record<string, T>;\n\n if (Object.prototype.hasOwnProperty.call(envelope, key)) {\n values.push(envelope[key]);\n }\n } catch {}\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n if (values.length !== 1) {\n throw new Error(`Expected one embedded build assets value in \"${file}\", found ${values.length}`);\n }\n\n return values[0];\n};\n\nconst extractEmbeddedMap = (file: string, source: string): EntrypointAssetsMap => {\n return extractEmbeddedEnvelope<EntrypointAssetsMap>(file, source, FullMapEnvelopeKey);\n};\n\nconst validateEmbeddedMap = (compilation: Compilation, fullMap: FullMapRuntime, assets: EntrypointAssetsMap): void => {\n const runtimeFiles = getFullMapRuntimeFiles(fullMap, assets);\n const runtime = runtimeFiles\n .map(file => ({file, source: compilation.getAsset(file)?.source.source().toString() ?? \"\"}))\n .find(({source}) => source.length > 0);\n\n if (!runtime) {\n throw new Error(\n `Full build-assets runtime for entrypoint \"${fullMap.name}\" is unavailable after asset processing`\n );\n }\n\n const embedded = extractEmbeddedMap(runtime.file, runtime.source);\n\n if (stringify(embedded) !== stringify(assets)) {\n throw new Error(\n \"Build assets changed after the runtime map was embedded; finalize entrypoint assets before processAssets begins\"\n );\n }\n};\n\nconst validateCurrentEntrypointMaps = (\n compilation: Compilation,\n assets: EntrypointAssetsMap,\n fullMapEntrypoint: string,\n runtimes: ReadonlySet<Chunk>\n): void => {\n for (const [name, entrypointAssets] of Object.entries(assets)) {\n if (name === fullMapEntrypoint) {\n continue;\n }\n\n const entrypoint = compilation.entrypoints.get(name);\n\n if (!entrypoint) {\n throw new Error(`Build assets entrypoint \"${name}\" is unavailable`);\n }\n\n if (!runtimes.has(entrypoint.getRuntimeChunk())) continue;\n\n const runtimeFiles = new Set(Array.from(entrypoint.getRuntimeChunk().files, toPosix));\n const runtime = entrypointAssets.initial.js\n .filter(file => runtimeFiles.has(file))\n .map(file => ({file, source: compilation.getAsset(file)?.source.source().toString() ?? \"\"}))\n .find(({source}) => source.length > 0);\n\n if (!runtime) {\n throw new Error(`Runtime map for entrypoint \"${name}\" is unavailable after asset processing`);\n }\n\n const runtimeAssets = extractEmbeddedEnvelope<EntrypointAssets>(\n runtime.file,\n runtime.source,\n CurrentMapEnvelopeKey\n );\n const finalizedAssets: EntrypointAssets = {\n initial: entrypointAssets.initial,\n async: entrypointAssets.async,\n };\n\n if (stringify(runtimeAssets) !== stringify(finalizedAssets)) {\n throw new Error(\n `Build assets changed after the runtime map for entrypoint \"${name}\" was embedded: ${JSON.stringify({embedded: runtimeAssets, finalized: finalizedAssets})}`\n );\n }\n }\n};\n\nconst finalizeBuildAssets = (\n compilation: Compilation,\n options: Required<BuildAssetsMapPluginOptions>,\n runtimes: ReadonlySet<Chunk>\n): void => {\n const assets = collectBuildAssets(compilation);\n const fullMap = getFullMapRuntime(compilation, options.fullMapEntrypoint, runtimes);\n\n if (fullMap) {\n validateFullMapAssets(assets, options.fullMapEntrypoint);\n validateEmbeddedMap(compilation, fullMap, assets);\n }\n\n validateCurrentEntrypointMaps(compilation, assets, options.fullMapEntrypoint, runtimes);\n\n setCompilationBuildAssets(compilation, assets);\n};\n\nexport default class BuildAssetsMapPlugin {\n private readonly options: Required<BuildAssetsMapPluginOptions>;\n\n public constructor(options: BuildAssetsMapPluginOptions) {\n this.options = {\n ...options,\n buildHashSalt: options.buildHashSalt ?? \"\",\n };\n }\n\n public apply(compiler: Compiler): void {\n const runtimeSelections = new WeakMap<Compilation, ReadonlySet<Chunk>>();\n\n compiler.hooks.thisCompilation.tap({name: PluginName, stage: EmbedStage}, compilation => {\n const injectedRuntimes = new Set<Chunk>();\n runtimeSelections.set(compilation, injectedRuntimes);\n let filenamesValidated = false;\n let selectedRuntimes: Map<Chunk, RuntimeSelection> | undefined;\n const runtimeModuleFingerprints = collectRuntimeModuleFingerprints(compilation);\n const isUsed = trackModuleUsage(compiler, compilation, this.options.module);\n\n updateBuildAssetsChunkHashes(compilation, this.options, runtimeModuleFingerprints, injectedRuntimes);\n\n compilation.hooks.additionalTreeRuntimeRequirements.tap(PluginName, (chunk, requirements) => {\n if (!selectedRuntimes) {\n selectedRuntimes = new Map();\n // Select and validate in entrypoint order, independently of runtime hook order.\n for (const [name, entrypoint] of compilation.entrypoints) {\n const runtime = entrypoint.getRuntimeChunk();\n const fullMap = name === this.options.fullMapEntrypoint;\n const delivery = fullMap ? this.options.module.full : this.options.module.current;\n if (!isUsed(runtime, delivery.export)) continue;\n\n validateEntrypointRuntime(compilation, name);\n if (fullMap) validateFullMapEntrypoint(compilation, name);\n selectedRuntimes.set(runtime, {name, fullMap, property: delivery.property});\n }\n }\n\n if (!filenamesValidated) {\n validateAsyncChunkFilenames(compilation, this.options.cssChunkFilename);\n filenamesValidated = true;\n }\n\n const selection = selectedRuntimes.get(chunk);\n if (!selection || injectedRuntimes.has(chunk)) return;\n\n requirements.add(RuntimeGlobals.require);\n injectedRuntimes.add(chunk);\n compilation.addRuntimeModule(\n chunk,\n new BuildAssetsRuntimeModule(\n selection.fullMap,\n selection.name,\n selection.property,\n this.options.cssFilename,\n this.options.cssChunkFilename,\n entrypointRuntimeUsesFullHash(\n compilation,\n selection.name,\n this.options.cssFilename,\n this.options.cssChunkFilename\n )\n )\n );\n });\n\n compilation.hooks.processAssets.tap(\n {\n name: PluginName,\n stage: EmbedStage,\n },\n () => {\n const assets = collectBuildAssets(compilation);\n const fullMap = getFullMapRuntime(compilation, this.options.fullMapEntrypoint, injectedRuntimes);\n setCompilationBuildAssets(compilation, assets);\n\n if (fullMap) {\n validateFullMapAssets(assets, this.options.fullMapEntrypoint);\n replaceFullMapPlaceholder(compilation, getFullMapRuntimeFiles(fullMap, assets), assets);\n }\n }\n );\n\n compilation.hooks.processAssets.tap(\n {\n name: `${PluginName}:finalize`,\n stage: Compilation.PROCESS_ASSETS_STAGE_ANALYSE,\n },\n () => finalizeBuildAssets(compilation, this.options, injectedRuntimes)\n );\n });\n\n // Register after every afterPlugins callback, then run after ordinary emit taps but before files are written.\n compiler.hooks.afterPlugins.intercept({\n name: `${PluginName}:registerFinalValidation`,\n done: () => {\n compiler.hooks.emit.tap(\n {name: `${PluginName}:finalValidation`, stage: FinalValidationStage},\n compilation => {\n const runtimes = runtimeSelections.get(compilation);\n if (runtimes) finalizeBuildAssets(compilation, this.options, runtimes);\n }\n );\n },\n });\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,2 @@
1
1
  export { default, type BuildAssetsMapPluginOptions } from "./BuildAssetsMapPlugin.js";
2
- export { createEntrypointModule, EntrypointAssetsModule } from "./entrypoint-module.js";
3
- export type { BuildAssetsMapPluginModuleOptions, BuildAssetsMapPluginExportOptions } from "./usage.js";
2
+ export type { BuildAssetsMapPluginModuleOptions } from "./usage.js";
@@ -1,8 +1,5 @@
1
1
  import { default as default2 } from "./BuildAssetsMapPlugin.js";
2
- import { createEntrypointModule, EntrypointAssetsModule } from "./entrypoint-module.js";
3
2
  export {
4
- EntrypointAssetsModule,
5
- createEntrypointModule,
6
3
  default2 as default
7
4
  };
8
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/index.ts"],"sourcesContent":["export {default, type BuildAssetsMapPluginOptions} from \"./BuildAssetsMapPlugin\";\nexport {createEntrypointModule, EntrypointAssetsModule} from \"./entrypoint-module\";\nexport type {BuildAssetsMapPluginModuleOptions, BuildAssetsMapPluginExportOptions} from \"./usage\";\n"],"mappings":"AAAA,SAAQ,WAAAA,gBAAgD;AACxD,SAAQ,wBAAwB,8BAA6B;","names":["default"]}
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/index.ts"],"sourcesContent":["export {default, type BuildAssetsMapPluginOptions} from \"./BuildAssetsMapPlugin\";\nexport type {BuildAssetsMapPluginModuleOptions} from \"./usage\";\n"],"mappings":"AAAA,SAAQ,WAAAA,gBAAgD;","names":["default"]}
@@ -1,12 +1,9 @@
1
1
  import type { Chunk, Compilation, Compiler } from "@rspack/core";
2
- import type { RuntimePropertyOptions } from "../types.js";
3
- export interface BuildAssetsMapPluginExportOptions extends RuntimePropertyOptions {
4
- readonly export: string;
5
- }
2
+ import type { RuntimeModuleReaderOptions } from "../types.js";
6
3
  export interface BuildAssetsMapPluginModuleOptions {
7
4
  readonly request: string;
8
- readonly current: BuildAssetsMapPluginExportOptions;
9
- readonly full: BuildAssetsMapPluginExportOptions;
5
+ readonly current: RuntimeModuleReaderOptions;
6
+ readonly full: RuntimeModuleReaderOptions;
10
7
  }
11
8
  /** Retain every layer's module before concatenation, then inspect export use per runtime. */
12
9
  export declare const trackModuleUsage: (compiler: Compiler, compilation: Compilation, options: BuildAssetsMapPluginModuleOptions) => ((chunk: Chunk, name: string) => boolean);
@@ -5,10 +5,13 @@ const trackModuleUsage = (compiler, compilation, options) => {
5
5
  const resolver = compiler.resolverFactory.get("normal", { dependencyType: "esm" });
6
6
  resource = await new Promise((resolve, reject) => {
7
7
  resolver.resolve({}, compiler.context, options.request, {}, (error, result) => {
8
- if (error) reject(error);
9
- else if (typeof result !== "string")
8
+ if (error) {
9
+ reject(error);
10
+ } else if (typeof result !== "string") {
10
11
  reject(new Error(`Unable to resolve assets module "${options.request}"`));
11
- else resolve(result);
12
+ } else {
13
+ resolve(result);
14
+ }
12
15
  });
13
16
  });
14
17
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/usage.ts"],"sourcesContent":["import type {Chunk, Compilation, Compiler, NormalModule} from \"@rspack/core\";\n\nimport type {RuntimePropertyOptions} from \"../types\";\n\nexport interface BuildAssetsMapPluginExportOptions extends RuntimePropertyOptions {\n readonly export: string;\n}\n\nexport interface BuildAssetsMapPluginModuleOptions {\n readonly request: string;\n readonly current: BuildAssetsMapPluginExportOptions;\n readonly full: BuildAssetsMapPluginExportOptions;\n}\n\n/** Retain every layer's module before concatenation, then inspect export use per runtime. */\nexport const trackModuleUsage = (\n compiler: Compiler,\n compilation: Compilation,\n options: BuildAssetsMapPluginModuleOptions\n): ((chunk: Chunk, name: string) => boolean) => {\n let resource: string | undefined;\n let modules: NormalModule[] = [];\n\n compilation.hooks.finishModules.tapPromise(\"BuildAssetsMapPlugin:resolve\", async () => {\n const resolver = compiler.resolverFactory.get(\"normal\", {dependencyType: \"esm\"});\n resource = await new Promise<string>((resolve, reject) => {\n resolver.resolve({}, compiler.context, options.request, {}, (error, result) => {\n if (error) reject(error);\n else if (typeof result !== \"string\")\n reject(new Error(`Unable to resolve assets module \"${options.request}\"`));\n else resolve(result);\n });\n });\n });\n\n compilation.hooks.afterOptimizeModules.tap(\"BuildAssetsMapPlugin:usage\", candidates => {\n modules = Array.from(candidates).filter(\n module => (module as NormalModule).resource === resource\n ) as NormalModule[];\n });\n\n return (chunk, name) => {\n const runtime = new Set(chunk.runtime);\n return modules.some(module => compilation.moduleGraph.getExportsInfo(module).getUsed(name, runtime) !== 0);\n };\n};\n"],"mappings":"AAeO,MAAM,mBAAmB,CAC5B,UACA,aACA,YAC4C;AAC5C,MAAI;AACJ,MAAI,UAA0B,CAAC;AAE/B,cAAY,MAAM,cAAc,WAAW,gCAAgC,YAAY;AACnF,UAAM,WAAW,SAAS,gBAAgB,IAAI,UAAU,EAAC,gBAAgB,MAAK,CAAC;AAC/E,eAAW,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACtD,eAAS,QAAQ,CAAC,GAAG,SAAS,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,OAAO,WAAW;AAC3E,YAAI,MAAO,QAAO,KAAK;AAAA,iBACd,OAAO,WAAW;AACvB,iBAAO,IAAI,MAAM,oCAAoC,QAAQ,OAAO,GAAG,CAAC;AAAA,YACvE,SAAQ,MAAM;AAAA,MACvB,CAAC;AAAA,IACL,CAAC;AAAA,EACL,CAAC;AAED,cAAY,MAAM,qBAAqB,IAAI,8BAA8B,gBAAc;AACnF,cAAU,MAAM,KAAK,UAAU,EAAE;AAAA,MAC7B,YAAW,OAAwB,aAAa;AAAA,IACpD;AAAA,EACJ,CAAC;AAED,SAAO,CAAC,OAAO,SAAS;AACpB,UAAM,UAAU,IAAI,IAAI,MAAM,OAAO;AACrC,WAAO,QAAQ,KAAK,YAAU,YAAY,YAAY,eAAe,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,CAAC;AAAA,EAC7G;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/build-assets-map/usage.ts"],"sourcesContent":["import type {Chunk, Compilation, Compiler, NormalModule} from \"@rspack/core\";\n\nimport type {RuntimeModuleReaderOptions} from \"../types\";\n\nexport interface BuildAssetsMapPluginModuleOptions {\n readonly request: string;\n readonly current: RuntimeModuleReaderOptions;\n readonly full: RuntimeModuleReaderOptions;\n}\n\n/** Retain every layer's module before concatenation, then inspect export use per runtime. */\nexport const trackModuleUsage = (\n compiler: Compiler,\n compilation: Compilation,\n options: BuildAssetsMapPluginModuleOptions\n): ((chunk: Chunk, name: string) => boolean) => {\n let resource: string | undefined;\n let modules: NormalModule[] = [];\n\n compilation.hooks.finishModules.tapPromise(\"BuildAssetsMapPlugin:resolve\", async () => {\n const resolver = compiler.resolverFactory.get(\"normal\", {dependencyType: \"esm\"});\n\n resource = await new Promise<string>((resolve, reject) => {\n resolver.resolve({}, compiler.context, options.request, {}, (error, result) => {\n if (error) {\n reject(error);\n } else if (typeof result !== \"string\") {\n reject(new Error(`Unable to resolve assets module \"${options.request}\"`));\n } else {\n resolve(result);\n }\n });\n });\n });\n\n compilation.hooks.afterOptimizeModules.tap(\"BuildAssetsMapPlugin:usage\", candidates => {\n modules = Array.from(candidates).filter(\n module => (module as NormalModule).resource === resource\n ) as NormalModule[];\n });\n\n return (chunk, name) => {\n const runtime = new Set(chunk.runtime);\n\n return modules.some(module => compilation.moduleGraph.getExportsInfo(module).getUsed(name, runtime) !== 0);\n };\n};\n"],"mappings":"AAWO,MAAM,mBAAmB,CAC5B,UACA,aACA,YAC4C;AAC5C,MAAI;AACJ,MAAI,UAA0B,CAAC;AAE/B,cAAY,MAAM,cAAc,WAAW,gCAAgC,YAAY;AACnF,UAAM,WAAW,SAAS,gBAAgB,IAAI,UAAU,EAAC,gBAAgB,MAAK,CAAC;AAE/E,eAAW,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACtD,eAAS,QAAQ,CAAC,GAAG,SAAS,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,OAAO,WAAW;AAC3E,YAAI,OAAO;AACP,iBAAO,KAAK;AAAA,QAChB,WAAW,OAAO,WAAW,UAAU;AACnC,iBAAO,IAAI,MAAM,oCAAoC,QAAQ,OAAO,GAAG,CAAC;AAAA,QAC5E,OAAO;AACH,kBAAQ,MAAM;AAAA,QAClB;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAAA,EACL,CAAC;AAED,cAAY,MAAM,qBAAqB,IAAI,8BAA8B,gBAAc;AACnF,cAAU,MAAM,KAAK,UAAU,EAAE;AAAA,MAC7B,YAAW,OAAwB,aAAa;AAAA,IACpD;AAAA,EACJ,CAAC;AAED,SAAO,CAAC,OAAO,SAAS;AACpB,UAAM,UAAU,IAAI,IAAI,MAAM,OAAO;AAErC,WAAO,QAAQ,KAAK,YAAU,YAAY,YAAY,eAAe,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,CAAC;AAAA,EAC7G;AACJ;","names":[]}
@@ -1,11 +1,11 @@
1
1
  export { default as EntrypointPlugin, type EntrypointPluginEntryOptions, type EntrypointPluginEntryOptionsResolver, type EntrypointPluginModules, type EntrypointPluginModule, type EntrypointPluginEntryModules, type EntrypointPluginTemplate, type EntrypointPluginUpdate, } from "./entrypoint/index.js";
2
2
  export { default as ChunkLoaderPlugin, type ChunkLoaderPluginOptions } from "./chunk-loader/index.js";
3
3
  export { default as IsolatedStylesPlugin, type IsolatedStylesPluginOptions, type IsolatedStylesPluginFiles, } from "./isolated-styles/index.js";
4
- export { default as BuildAssetsMapPlugin, type BuildAssetsMapPluginOptions, type BuildAssetsMapPluginModuleOptions, type BuildAssetsMapPluginExportOptions, createEntrypointModule, EntrypointAssetsModule, } from "./build-assets-map/index.js";
4
+ export { default as BuildAssetsMapPlugin, type BuildAssetsMapPluginOptions, type BuildAssetsMapPluginModuleOptions, } from "./build-assets-map/index.js";
5
5
  export { default as GenerateJsonPlugin, type GenerateJsonPluginData, type GenerateJsonPluginUpdate, } from "./generate-json/index.js";
6
6
  export { GenerateModulePlugin, type GenerateModulePluginDependencies, type GenerateModulePluginDependenciesResolver, type GenerateModulePluginModules, type GenerateModulePluginUpdate, } from "./generate-module/index.js";
7
7
  export { default as ManifestPlugin } from "./manifest/index.js";
8
8
  export { default as ResourceAccessPlugin, type ResourceAccessPluginOptions, type ResourceAccessPluginRequirement, } from "./resource-access/index.js";
9
9
  export { default as ReplacePlugin } from "./replace/index.js";
10
10
  export { default as WatchPlugin } from "./watch/index.js";
11
- export type { RuntimePropertyOptions } from "./types.js";
11
+ export type { RuntimePropertyOptions, RuntimeModuleReaderOptions } from "./types.js";
@@ -6,9 +6,7 @@ import {
6
6
  default as default4
7
7
  } from "./isolated-styles/index.js";
8
8
  import {
9
- default as default5,
10
- createEntrypointModule,
11
- EntrypointAssetsModule
9
+ default as default5
12
10
  } from "./build-assets-map/index.js";
13
11
  import {
14
12
  default as default6
@@ -25,7 +23,6 @@ import { default as default10 } from "./watch/index.js";
25
23
  export {
26
24
  default5 as BuildAssetsMapPlugin,
27
25
  default3 as ChunkLoaderPlugin,
28
- EntrypointAssetsModule,
29
26
  default2 as EntrypointPlugin,
30
27
  default6 as GenerateJsonPlugin,
31
28
  GenerateModulePlugin,
@@ -33,7 +30,6 @@ export {
33
30
  default7 as ManifestPlugin,
34
31
  default9 as ReplacePlugin,
35
32
  default8 as ResourceAccessPlugin,
36
- default10 as WatchPlugin,
37
- createEntrypointModule
33
+ default10 as WatchPlugin
38
34
  };
39
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/bundler/plugins/index.ts"],"sourcesContent":["export {\n default as EntrypointPlugin,\n type EntrypointPluginEntryOptions,\n type EntrypointPluginEntryOptionsResolver,\n type EntrypointPluginModules,\n type EntrypointPluginModule,\n type EntrypointPluginEntryModules,\n type EntrypointPluginTemplate,\n type EntrypointPluginUpdate,\n} from \"./entrypoint\";\n\nexport {default as ChunkLoaderPlugin, type ChunkLoaderPluginOptions} from \"./chunk-loader\";\n\nexport {\n default as IsolatedStylesPlugin,\n type IsolatedStylesPluginOptions,\n type IsolatedStylesPluginFiles,\n} from \"./isolated-styles\";\n\nexport {\n default as BuildAssetsMapPlugin,\n type BuildAssetsMapPluginOptions,\n type BuildAssetsMapPluginModuleOptions,\n type BuildAssetsMapPluginExportOptions,\n createEntrypointModule,\n EntrypointAssetsModule,\n} from \"./build-assets-map\";\n\nexport {\n default as GenerateJsonPlugin,\n type GenerateJsonPluginData,\n type GenerateJsonPluginUpdate,\n} from \"./generate-json\";\n\nexport {\n GenerateModulePlugin,\n type GenerateModulePluginDependencies,\n type GenerateModulePluginDependenciesResolver,\n type GenerateModulePluginModules,\n type GenerateModulePluginUpdate,\n} from \"./generate-module\";\n\nexport {default as ManifestPlugin} from \"./manifest\";\n\nexport {\n default as ResourceAccessPlugin,\n type ResourceAccessPluginOptions,\n type ResourceAccessPluginRequirement,\n} from \"./resource-access\";\n\nexport {default as ReplacePlugin} from \"./replace\";\n\nexport {default as WatchPlugin} from \"./watch\";\n\nexport type {RuntimePropertyOptions} from \"./types\";\n"],"mappings":"AAAA;AAAA,EACe,WAAXA;AAAA,OAQG;AAEP,SAAmB,WAAXA,gBAAkE;AAE1E;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP;AAAA,EACe,WAAXA;AAAA,EAIA;AAAA,EACA;AAAA,OACG;AAEP;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP;AAAA,EACI;AAAA,OAKG;AAEP,SAAmB,WAAXA,gBAAgC;AAExC;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP,SAAmB,WAAXA,gBAA+B;AAEvC,SAAmB,WAAXA,iBAA6B;","names":["default"]}
1
+ {"version":3,"sources":["../../../../src/cli/bundler/plugins/index.ts"],"sourcesContent":["export {\n default as EntrypointPlugin,\n type EntrypointPluginEntryOptions,\n type EntrypointPluginEntryOptionsResolver,\n type EntrypointPluginModules,\n type EntrypointPluginModule,\n type EntrypointPluginEntryModules,\n type EntrypointPluginTemplate,\n type EntrypointPluginUpdate,\n} from \"./entrypoint\";\n\nexport {default as ChunkLoaderPlugin, type ChunkLoaderPluginOptions} from \"./chunk-loader\";\n\nexport {\n default as IsolatedStylesPlugin,\n type IsolatedStylesPluginOptions,\n type IsolatedStylesPluginFiles,\n} from \"./isolated-styles\";\n\nexport {\n default as BuildAssetsMapPlugin,\n type BuildAssetsMapPluginOptions,\n type BuildAssetsMapPluginModuleOptions,\n} from \"./build-assets-map\";\n\nexport {\n default as GenerateJsonPlugin,\n type GenerateJsonPluginData,\n type GenerateJsonPluginUpdate,\n} from \"./generate-json\";\n\nexport {\n GenerateModulePlugin,\n type GenerateModulePluginDependencies,\n type GenerateModulePluginDependenciesResolver,\n type GenerateModulePluginModules,\n type GenerateModulePluginUpdate,\n} from \"./generate-module\";\n\nexport {default as ManifestPlugin} from \"./manifest\";\n\nexport {\n default as ResourceAccessPlugin,\n type ResourceAccessPluginOptions,\n type ResourceAccessPluginRequirement,\n} from \"./resource-access\";\n\nexport {default as ReplacePlugin} from \"./replace\";\n\nexport {default as WatchPlugin} from \"./watch\";\n\nexport type {RuntimePropertyOptions, RuntimeModuleReaderOptions} from \"./types\";\n"],"mappings":"AAAA;AAAA,EACe,WAAXA;AAAA,OAQG;AAEP,SAAmB,WAAXA,gBAAkE;AAE1E;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP;AAAA,EACI;AAAA,OAKG;AAEP,SAAmB,WAAXA,gBAAgC;AAExC;AAAA,EACe,WAAXA;AAAA,OAGG;AAEP,SAAmB,WAAXA,gBAA+B;AAEvC,SAAmB,WAAXA,iBAA6B;","names":["default"]}
@@ -1,8 +1,8 @@
1
1
  import { RuntimeGlobals, RuntimeModule } from "@rspack/core";
2
- import { getIsolatedStylesFiles, isIsolatedStylesChunk } from "./../../../../cli/bundler/utils/styles.js";
3
2
  import { CssContentHashType, filenameRequiresFullHash, resolveChunkFilename } from "./../../../../cli/bundler/utils/chunk-filename.js";
4
3
  import { getManifestHooks } from "../utils/manifest-hooks.js";
5
4
  import { renderIsolatedStylesCssLoader, renderIsolatedStylesRuntime } from "./templates.js";
5
+ import { getIsolatedStylesFiles, isIsolatedStylesChunk } from "./chunks.js";
6
6
  const PluginName = "IsolatedStylesPlugin";
7
7
  const CssLoadingRuntimeIdentifier = "webpack/runtime/css loading";
8
8
  const CssRuntimeBoundary = "// object to store loaded CSS chunks";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.ts"],"sourcesContent":["import {type Chunk, type Compilation, type Compiler, type Filename, RuntimeGlobals, RuntimeModule} from \"@rspack/core\";\n\nimport {getIsolatedStylesFiles, isIsolatedStylesChunk} from \"@cli/bundler/utils/styles\";\nimport {CssContentHashType, filenameRequiresFullHash, resolveChunkFilename} from \"@cli/bundler/utils/chunk-filename\";\nimport type {RuntimePropertyOptions} from \"../types\";\nimport {getManifestHooks} from \"../utils/manifest-hooks\";\n\nimport {renderIsolatedStylesCssLoader, renderIsolatedStylesRuntime} from \"./templates\";\n\nconst PluginName = \"IsolatedStylesPlugin\";\nconst CssLoadingRuntimeIdentifier = \"webpack/runtime/css loading\";\nconst CssRuntimeBoundary = \"// object to store loaded CSS chunks\";\nconst CssFilenameExpression = /var href = (.+?)\\(chunkId\\);/;\n\nexport interface IsolatedStylesPluginOptions extends RuntimePropertyOptions {\n cssFilename: Filename;\n cssChunkFilename: Filename;\n test: (entry: string) => boolean;\n timeout?: number;\n /** Inspects every entry's initial, shared and async CSS, independently of test. Throw to reject; return warning messages to report without changing delivery. */\n validate?: (entry: string, files: IsolatedStylesPluginFiles) => void | readonly string[];\n}\n\n/** CSS destinations in one entrypoint's complete dependency graph, for build diagnostics only. */\nexport interface IsolatedStylesPluginFiles {\n readonly document: readonly string[];\n readonly isolated: readonly string[];\n}\n\nclass IsolatedStylesRuntimeModule extends RuntimeModule {\n public constructor(\n private readonly entry: string,\n private readonly property: string,\n private readonly timeout: number,\n private readonly cssFilename: Filename,\n private readonly cssChunkFilename: Filename,\n fullHash: boolean\n ) {\n super(`isolated styles ${entry}`, RuntimeModule.STAGE_ATTACH);\n this.dependentHash = true;\n this.fullHash = fullHash;\n }\n\n public generate(): string {\n const compilation = this.compilation;\n if (!compilation) throw new Error(\"Isolated styles runtime is not attached to a compilation\");\n\n const initialStyles = initialStyleChunks(compilation, this.entry, this.cssFilename, this.cssChunkFilename).map(\n ({chunk, filename}) => resolveChunkFilename(compilation, chunk, filename, CssContentHashType)\n );\n\n return renderIsolatedStylesRuntime({\n entry: this.entry,\n require: RuntimeGlobals.require,\n property: this.property,\n timeout: this.timeout,\n initialStyles,\n });\n }\n}\n\nconst initialStyleChunks = (\n compilation: Compilation,\n entry: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): {chunk: Chunk; filename: Filename}[] => {\n const entrypoint = compilation.entrypoints.get(entry);\n if (!entrypoint) throw new Error(`Isolated styles entrypoint \"${entry}\" is unavailable`);\n\n const entryChunk = entrypoint.getEntrypointChunk();\n return Array.from(entrypoint.chunks)\n .filter(chunk => isIsolatedStylesChunk(compilation, chunk))\n .map(chunk => ({chunk, filename: chunk === entryChunk ? cssFilename : cssChunkFilename}));\n};\n\nconst hasAsyncCss = (chunk: Chunk): boolean => {\n return Array.from(chunk.getAllAsyncChunks()).some(candidate => {\n return [...candidate.files, ...candidate.auxiliaryFiles].some(file => file.endsWith(\".css\"));\n });\n};\n\nexport default class IsolatedStylesPlugin {\n private readonly originalRuntimeSources = new WeakMap<RuntimeModule, string>();\n\n public constructor(private readonly options: IsolatedStylesPluginOptions) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(PluginName, compilation => {\n getManifestHooks(compilation).prepareDependencies.tap(PluginName, dependencies => {\n const isolatedFiles = getIsolatedStylesFiles(compilation);\n for (const [entry, dependency] of dependencies) {\n if (!this.options.test(entry)) continue;\n\n for (const file of dependency.css) {\n if (!isolatedFiles.has(file)) continue;\n dependency.css.delete(file);\n dependency.assets.add(file);\n }\n }\n });\n });\n\n const timeout = this.options.timeout ?? compiler.options.output.chunkLoadTimeout ?? 120_000;\n\n compiler.hooks.thisCompilation.tap(PluginName, compilation => {\n const injected = new Set<Chunk>();\n const patched = new Set<Chunk>();\n\n compilation.hooks.additionalTreeRuntimeRequirements.tap(PluginName, (chunk, requirements) => {\n if (chunk.name === undefined || !this.options.test(chunk.name) || injected.has(chunk)) {\n return;\n }\n\n requirements.add(RuntimeGlobals.require);\n requirements.add(RuntimeGlobals.publicPath);\n injected.add(chunk);\n const fullHash = initialStyleChunks(\n compilation,\n chunk.name,\n this.options.cssFilename,\n this.options.cssChunkFilename\n ).some(({chunk, filename}) =>\n filenameRequiresFullHash(compilation, chunk, filename, CssContentHashType)\n );\n compilation.addRuntimeModule(\n chunk,\n new IsolatedStylesRuntimeModule(\n chunk.name,\n this.options.property,\n timeout,\n this.options.cssFilename,\n this.options.cssChunkFilename,\n fullHash\n )\n );\n });\n\n compilation.hooks.runtimeModule.tap(PluginName, (runtimeModule, chunk) => {\n if (chunk.name === undefined || runtimeModule.identifier() !== CssLoadingRuntimeIdentifier) {\n return;\n }\n\n const source = runtimeModule.source;\n\n if (!source || typeof source.source !== \"string\") {\n throw new Error(\n `CSS loading runtime source for isolated entrypoint \"${chunk.name}\" is unavailable`\n );\n }\n\n if (source.source.length === 0) {\n return;\n }\n\n const originalSource = this.originalRuntimeSources.get(runtimeModule) ?? source.source;\n this.originalRuntimeSources.set(runtimeModule, originalSource);\n source.source = originalSource;\n\n if (!this.options.test(chunk.name)) {\n return;\n }\n\n const boundary = originalSource.indexOf(CssRuntimeBoundary);\n const filenameExpression = originalSource.match(CssFilenameExpression)?.[1];\n\n if (boundary < 0 || !filenameExpression) {\n throw new Error(`CSS loading runtime seam for isolated entrypoint \"${chunk.name}\" is unavailable`);\n }\n\n source.source = renderIsolatedStylesCssLoader({\n isolatedChunks: Object.fromEntries(\n [...compilation.chunks]\n .filter(candidate => isIsolatedStylesChunk(compilation, candidate))\n .map(candidate => [candidate.id, true])\n ),\n originalLoader: originalSource.slice(0, boundary),\n cssFilenameExpression: filenameExpression,\n originalRuntime: originalSource.slice(boundary),\n publicPath: RuntimeGlobals.publicPath,\n require: RuntimeGlobals.require,\n property: this.options.property,\n });\n patched.add(chunk);\n });\n\n compilation.hooks.afterSeal.tap(PluginName, () => {\n for (const [entry, entrypoint] of compilation.entrypoints) {\n const chunk = entrypoint.getRuntimeChunk();\n\n if (this.options.validate) {\n const document = new Set<string>();\n const isolated = new Set<string>();\n const referenced = new Set([\n ...entrypoint.chunks,\n ...entrypoint.getEntrypointChunk().getAllReferencedChunks(),\n ]);\n for (const candidate of referenced) {\n const destination = isIsolatedStylesChunk(compilation, candidate) ? isolated : document;\n for (const file of candidate.files) {\n if (file.endsWith(\".css\")) destination.add(file);\n }\n }\n const warnings = this.options.validate(entry, {\n document: [...document].sort(),\n isolated: [...isolated].sort(),\n });\n for (const message of warnings ?? []) compilation.warnings.push(new Error(message));\n }\n\n if (\n chunk &&\n chunk.name !== undefined &&\n this.options.test(chunk.name) &&\n hasAsyncCss(entrypoint.getEntrypointChunk()) &&\n !patched.has(chunk)\n ) {\n throw new Error(`CSS loading runtime for isolated entrypoint \"${chunk.name}\" was not replaced`);\n }\n }\n });\n });\n }\n}\n"],"mappings":"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","names":["chunk"]}
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.ts"],"sourcesContent":["import {type Chunk, type Compilation, type Compiler, type Filename, RuntimeGlobals, RuntimeModule} from \"@rspack/core\";\n\nimport {CssContentHashType, filenameRequiresFullHash, resolveChunkFilename} from \"@cli/bundler/utils/chunk-filename\";\nimport type {RuntimePropertyOptions} from \"../types\";\nimport {getManifestHooks} from \"../utils/manifest-hooks\";\n\nimport {renderIsolatedStylesCssLoader, renderIsolatedStylesRuntime} from \"./templates\";\nimport {getIsolatedStylesFiles, isIsolatedStylesChunk} from \"./chunks\";\n\nconst PluginName = \"IsolatedStylesPlugin\";\nconst CssLoadingRuntimeIdentifier = \"webpack/runtime/css loading\";\nconst CssRuntimeBoundary = \"// object to store loaded CSS chunks\";\nconst CssFilenameExpression = /var href = (.+?)\\(chunkId\\);/;\n\nexport interface IsolatedStylesPluginOptions extends RuntimePropertyOptions {\n cssFilename: Filename;\n cssChunkFilename: Filename;\n test: (entry: string) => boolean;\n timeout?: number;\n /** Inspects every entry's initial, shared and async CSS, independently of test. Throw to reject; return warning messages to report without changing delivery. */\n validate?: (entry: string, files: IsolatedStylesPluginFiles) => void | readonly string[];\n}\n\n/** CSS destinations in one entrypoint's complete dependency graph, for build diagnostics only. */\nexport interface IsolatedStylesPluginFiles {\n readonly document: readonly string[];\n readonly isolated: readonly string[];\n}\n\nclass IsolatedStylesRuntimeModule extends RuntimeModule {\n public constructor(\n private readonly entry: string,\n private readonly property: string,\n private readonly timeout: number,\n private readonly cssFilename: Filename,\n private readonly cssChunkFilename: Filename,\n fullHash: boolean\n ) {\n super(`isolated styles ${entry}`, RuntimeModule.STAGE_ATTACH);\n this.dependentHash = true;\n this.fullHash = fullHash;\n }\n\n public generate(): string {\n const compilation = this.compilation;\n if (!compilation) throw new Error(\"Isolated styles runtime is not attached to a compilation\");\n\n const initialStyles = initialStyleChunks(compilation, this.entry, this.cssFilename, this.cssChunkFilename).map(\n ({chunk, filename}) => resolveChunkFilename(compilation, chunk, filename, CssContentHashType)\n );\n\n return renderIsolatedStylesRuntime({\n entry: this.entry,\n require: RuntimeGlobals.require,\n property: this.property,\n timeout: this.timeout,\n initialStyles,\n });\n }\n}\n\nconst initialStyleChunks = (\n compilation: Compilation,\n entry: string,\n cssFilename: Filename,\n cssChunkFilename: Filename\n): {chunk: Chunk; filename: Filename}[] => {\n const entrypoint = compilation.entrypoints.get(entry);\n if (!entrypoint) throw new Error(`Isolated styles entrypoint \"${entry}\" is unavailable`);\n\n const entryChunk = entrypoint.getEntrypointChunk();\n return Array.from(entrypoint.chunks)\n .filter(chunk => isIsolatedStylesChunk(compilation, chunk))\n .map(chunk => ({chunk, filename: chunk === entryChunk ? cssFilename : cssChunkFilename}));\n};\n\nconst hasAsyncCss = (chunk: Chunk): boolean => {\n return Array.from(chunk.getAllAsyncChunks()).some(candidate => {\n return [...candidate.files, ...candidate.auxiliaryFiles].some(file => file.endsWith(\".css\"));\n });\n};\n\nexport default class IsolatedStylesPlugin {\n private readonly originalRuntimeSources = new WeakMap<RuntimeModule, string>();\n\n public constructor(private readonly options: IsolatedStylesPluginOptions) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(PluginName, compilation => {\n getManifestHooks(compilation).prepareDependencies.tap(PluginName, dependencies => {\n const isolatedFiles = getIsolatedStylesFiles(compilation);\n for (const [entry, dependency] of dependencies) {\n if (!this.options.test(entry)) continue;\n\n for (const file of dependency.css) {\n if (!isolatedFiles.has(file)) continue;\n dependency.css.delete(file);\n dependency.assets.add(file);\n }\n }\n });\n });\n\n const timeout = this.options.timeout ?? compiler.options.output.chunkLoadTimeout ?? 120_000;\n\n compiler.hooks.thisCompilation.tap(PluginName, compilation => {\n const injected = new Set<Chunk>();\n const patched = new Set<Chunk>();\n\n compilation.hooks.additionalTreeRuntimeRequirements.tap(PluginName, (chunk, requirements) => {\n if (chunk.name === undefined || !this.options.test(chunk.name) || injected.has(chunk)) {\n return;\n }\n\n requirements.add(RuntimeGlobals.require);\n requirements.add(RuntimeGlobals.publicPath);\n injected.add(chunk);\n const fullHash = initialStyleChunks(\n compilation,\n chunk.name,\n this.options.cssFilename,\n this.options.cssChunkFilename\n ).some(({chunk, filename}) =>\n filenameRequiresFullHash(compilation, chunk, filename, CssContentHashType)\n );\n compilation.addRuntimeModule(\n chunk,\n new IsolatedStylesRuntimeModule(\n chunk.name,\n this.options.property,\n timeout,\n this.options.cssFilename,\n this.options.cssChunkFilename,\n fullHash\n )\n );\n });\n\n compilation.hooks.runtimeModule.tap(PluginName, (runtimeModule, chunk) => {\n if (chunk.name === undefined || runtimeModule.identifier() !== CssLoadingRuntimeIdentifier) {\n return;\n }\n\n const source = runtimeModule.source;\n\n if (!source || typeof source.source !== \"string\") {\n throw new Error(\n `CSS loading runtime source for isolated entrypoint \"${chunk.name}\" is unavailable`\n );\n }\n\n if (source.source.length === 0) {\n return;\n }\n\n const originalSource = this.originalRuntimeSources.get(runtimeModule) ?? source.source;\n this.originalRuntimeSources.set(runtimeModule, originalSource);\n source.source = originalSource;\n\n if (!this.options.test(chunk.name)) {\n return;\n }\n\n const boundary = originalSource.indexOf(CssRuntimeBoundary);\n const filenameExpression = originalSource.match(CssFilenameExpression)?.[1];\n\n if (boundary < 0 || !filenameExpression) {\n throw new Error(`CSS loading runtime seam for isolated entrypoint \"${chunk.name}\" is unavailable`);\n }\n\n source.source = renderIsolatedStylesCssLoader({\n isolatedChunks: Object.fromEntries(\n [...compilation.chunks]\n .filter(candidate => isIsolatedStylesChunk(compilation, candidate))\n .map(candidate => [candidate.id, true])\n ),\n originalLoader: originalSource.slice(0, boundary),\n cssFilenameExpression: filenameExpression,\n originalRuntime: originalSource.slice(boundary),\n publicPath: RuntimeGlobals.publicPath,\n require: RuntimeGlobals.require,\n property: this.options.property,\n });\n patched.add(chunk);\n });\n\n compilation.hooks.afterSeal.tap(PluginName, () => {\n for (const [entry, entrypoint] of compilation.entrypoints) {\n const chunk = entrypoint.getRuntimeChunk();\n\n if (this.options.validate) {\n const document = new Set<string>();\n const isolated = new Set<string>();\n const referenced = new Set([\n ...entrypoint.chunks,\n ...entrypoint.getEntrypointChunk().getAllReferencedChunks(),\n ]);\n for (const candidate of referenced) {\n const destination = isIsolatedStylesChunk(compilation, candidate) ? isolated : document;\n for (const file of candidate.files) {\n if (file.endsWith(\".css\")) destination.add(file);\n }\n }\n const warnings = this.options.validate(entry, {\n document: [...document].sort(),\n isolated: [...isolated].sort(),\n });\n for (const message of warnings ?? []) compilation.warnings.push(new Error(message));\n }\n\n if (\n chunk &&\n chunk.name !== undefined &&\n this.options.test(chunk.name) &&\n hasAsyncCss(entrypoint.getEntrypointChunk()) &&\n !patched.has(chunk)\n ) {\n throw new Error(`CSS loading runtime for isolated entrypoint \"${chunk.name}\" was not replaced`);\n }\n }\n });\n });\n }\n}\n"],"mappings":"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","names":["chunk"]}
@@ -0,0 +1,3 @@
1
+ import type { Chunk, Compilation } from "@rspack/core";
2
+ export declare const isIsolatedStylesChunk: (compilation: Compilation, chunk: Chunk) => boolean;
3
+ export declare const getIsolatedStylesFiles: (compilation: Compilation) => ReadonlySet<string>;
@@ -1,4 +1,4 @@
1
- const IsolatedStylesLayer = "adnbn:css:isolation";
1
+ import { IsolatedStylesLayer } from "./../../../../cli/bundler/layers.js";
2
2
  const isIsolatedStylesModule = (module) => module.type === "css/mini-extract" && module.layer === IsolatedStylesLayer;
3
3
  const isIsolatedStylesChunk = (compilation, chunk) => {
4
4
  const modules = [...compilation.chunkGraph.getChunkModulesIterable(chunk)].filter(
@@ -16,15 +16,17 @@ const getIsolatedStylesFiles = (compilation) => {
16
16
  const files = /* @__PURE__ */ new Set();
17
17
  for (const chunk of compilation.chunks) {
18
18
  if (isIsolatedStylesChunk(compilation, chunk)) {
19
- for (const file of chunk.files) if (file.endsWith(".css")) files.add(file);
19
+ for (const file of chunk.files) {
20
+ if (file.endsWith(".css")) {
21
+ files.add(file);
22
+ }
23
+ }
20
24
  }
21
25
  }
22
26
  return files;
23
27
  };
24
28
  export {
25
- IsolatedStylesLayer,
26
29
  getIsolatedStylesFiles,
27
- isIsolatedStylesChunk,
28
- isIsolatedStylesModule
30
+ isIsolatedStylesChunk
29
31
  };
30
- //# sourceMappingURL=styles.js.map
32
+ //# sourceMappingURL=chunks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/isolated-styles/chunks.ts"],"sourcesContent":["import type {Chunk, Compilation, Module} from \"@rspack/core\";\n\nimport {IsolatedStylesLayer} from \"@cli/bundler/layers\";\n\nconst isIsolatedStylesModule = (module: Module): boolean =>\n module.type === \"css/mini-extract\" && module.layer === IsolatedStylesLayer;\n\nexport const isIsolatedStylesChunk = (compilation: Compilation, chunk: Chunk): boolean => {\n const modules = [...compilation.chunkGraph.getChunkModulesIterable(chunk)].filter(\n module => module.type === \"css/mini-extract\"\n );\n\n const isolated = modules.some(isIsolatedStylesModule);\n\n if (isolated && !modules.every(isIsolatedStylesModule)) {\n throw new Error(\n `CSS chunk \"${chunk.name ?? chunk.id}\" mixes document and ?isolation styles. Preserve the adnbnIsolatedStyles CSS cache group in your bundler configuration.`\n );\n }\n\n return isolated;\n};\n\nexport const getIsolatedStylesFiles = (compilation: Compilation): ReadonlySet<string> => {\n const files = new Set<string>();\n\n for (const chunk of compilation.chunks) {\n if (isIsolatedStylesChunk(compilation, chunk)) {\n for (const file of chunk.files) {\n if (file.endsWith(\".css\")) {\n files.add(file);\n }\n }\n }\n }\n\n return files;\n};\n"],"mappings":"AAEA,SAAQ,2BAA0B;AAElC,MAAM,yBAAyB,CAAC,WAC5B,OAAO,SAAS,sBAAsB,OAAO,UAAU;AAEpD,MAAM,wBAAwB,CAAC,aAA0B,UAA0B;AACtF,QAAM,UAAU,CAAC,GAAG,YAAY,WAAW,wBAAwB,KAAK,CAAC,EAAE;AAAA,IACvE,YAAU,OAAO,SAAS;AAAA,EAC9B;AAEA,QAAM,WAAW,QAAQ,KAAK,sBAAsB;AAEpD,MAAI,YAAY,CAAC,QAAQ,MAAM,sBAAsB,GAAG;AACpD,UAAM,IAAI;AAAA,MACN,cAAc,MAAM,QAAQ,MAAM,EAAE;AAAA,IACxC;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,MAAM,yBAAyB,CAAC,gBAAkD;AACrF,QAAM,QAAQ,oBAAI,IAAY;AAE9B,aAAW,SAAS,YAAY,QAAQ;AACpC,QAAI,sBAAsB,aAAa,KAAK,GAAG;AAC3C,iBAAW,QAAQ,MAAM,OAAO;AAC5B,YAAI,KAAK,SAAS,MAAM,GAAG;AACvB,gBAAM,IAAI,IAAI;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
@@ -1,6 +1,5 @@
1
1
  import rspack, { Compilation } from "@rspack/core";
2
- import { getCompilationBuildAssets } from "./../../../../cli/bundler/utils/output.js";
3
- import { getManifestHooks } from "../utils/manifest-hooks.js";
2
+ import { getCompilationBuildAssets, getManifestHooks } from "../utils/index.js";
4
3
  const createManifestDependencies = (buildAssets) => {
5
4
  const entryDependencies = /* @__PURE__ */ new Map();
6
5
  Object.entries(buildAssets).forEach(([entryName, assets]) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/bundler/plugins/manifest/ManifestPlugin.ts"],"sourcesContent":["import rspack, {Compilation, Compiler} from \"@rspack/core\";\n\nimport {getCompilationBuildAssets} from \"@cli/bundler/utils/output\";\nimport {getManifestHooks} from \"../utils/manifest-hooks\";\n\nimport {ManifestBuilder, ManifestDependencies, ManifestDependency} from \"@typing/manifest\";\nimport {EntrypointAssetsMap} from \"@typing/entrypoint\";\n\nexport const createManifestDependencies = (buildAssets: EntrypointAssetsMap): ManifestDependencies => {\n const entryDependencies: ManifestDependencies = new Map();\n\n Object.entries(buildAssets).forEach(([entryName, assets]) => {\n const dependencies: ManifestDependency = {\n assets: new Set([...assets.assets, ...assets.async.js, ...assets.async.css]),\n css: new Set(assets.initial.css),\n js: new Set(assets.initial.js),\n };\n\n entryDependencies.set(entryName, dependencies);\n });\n\n return entryDependencies;\n};\n\nclass ManifestPlugin {\n constructor(private readonly manifest: ManifestBuilder | (() => ManifestBuilder)) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(\"ManifestPlugin\", compilation => {\n const hooks = getManifestHooks(compilation);\n\n compilation.hooks.processAssets.tapPromise(\n {\n name: \"ManifestPlugin\",\n stage: Compilation.PROCESS_ASSETS_STAGE_REPORT,\n },\n async () => {\n try {\n const buildAssets = getCompilationBuildAssets(compilation);\n\n if (!buildAssets) {\n throw new Error(\"Build assets are unavailable before manifest generation\");\n }\n\n const dependencies = createManifestDependencies(buildAssets);\n await hooks.prepareDependencies.promise(dependencies, buildAssets);\n\n const builder = typeof this.manifest === \"function\" ? this.manifest() : this.manifest;\n const manifest = builder.setDependencies(dependencies).get();\n await hooks.validate.promise(manifest);\n\n const json = JSON.stringify(manifest, null, 2);\n\n compilation.emitAsset(\"manifest.json\", new rspack.sources.RawSource(json));\n } catch (error) {\n // A manifest failure rejects this build without terminating the watch compiler.\n compilation.errors.push(error instanceof Error ? error : new Error(String(error)));\n }\n }\n );\n });\n }\n}\n\nexport default ManifestPlugin;\n"],"mappings":"AAAA,OAAO,UAAS,mBAA4B;AAE5C,SAAQ,iCAAgC;AACxC,SAAQ,wBAAuB;AAKxB,MAAM,6BAA6B,CAAC,gBAA2D;AAClG,QAAM,oBAA0C,oBAAI,IAAI;AAExD,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,WAAW,MAAM,MAAM;AACzD,UAAM,eAAmC;AAAA,MACrC,QAAQ,oBAAI,IAAI,CAAC,GAAG,OAAO,QAAQ,GAAG,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,GAAG,CAAC;AAAA,MAC3E,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG;AAAA,MAC/B,IAAI,IAAI,IAAI,OAAO,QAAQ,EAAE;AAAA,IACjC;AAEA,sBAAkB,IAAI,WAAW,YAAY;AAAA,EACjD,CAAC;AAED,SAAO;AACX;AAEA,MAAM,eAAe;AAAA,EACjB,YAA6B,UAAqD;AAArD;AAAA,EAAsD;AAAA,EAAtD;AAAA,EAE7B,MAAM,UAA0B;AAC5B,aAAS,MAAM,YAAY,IAAI,kBAAkB,iBAAe;AAC5D,YAAM,QAAQ,iBAAiB,WAAW;AAE1C,kBAAY,MAAM,cAAc;AAAA,QAC5B;AAAA,UACI,MAAM;AAAA,UACN,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,YAAY;AACR,cAAI;AACA,kBAAM,cAAc,0BAA0B,WAAW;AAEzD,gBAAI,CAAC,aAAa;AACd,oBAAM,IAAI,MAAM,yDAAyD;AAAA,YAC7E;AAEA,kBAAM,eAAe,2BAA2B,WAAW;AAC3D,kBAAM,MAAM,oBAAoB,QAAQ,cAAc,WAAW;AAEjE,kBAAM,UAAU,OAAO,KAAK,aAAa,aAAa,KAAK,SAAS,IAAI,KAAK;AAC7E,kBAAM,WAAW,QAAQ,gBAAgB,YAAY,EAAE,IAAI;AAC3D,kBAAM,MAAM,SAAS,QAAQ,QAAQ;AAErC,kBAAM,OAAO,KAAK,UAAU,UAAU,MAAM,CAAC;AAE7C,wBAAY,UAAU,iBAAiB,IAAI,OAAO,QAAQ,UAAU,IAAI,CAAC;AAAA,UAC7E,SAAS,OAAO;AAEZ,wBAAY,OAAO,KAAK,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,UACrF;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAEA,IAAO,yBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/manifest/ManifestPlugin.ts"],"sourcesContent":["import rspack, {Compilation, Compiler} from \"@rspack/core\";\n\nimport {getCompilationBuildAssets, getManifestHooks} from \"../utils\";\n\nimport {ManifestBuilder, ManifestDependencies, ManifestDependency} from \"@typing/manifest\";\nimport {EntrypointAssetsMap} from \"@typing/entrypoint\";\n\nexport const createManifestDependencies = (buildAssets: EntrypointAssetsMap): ManifestDependencies => {\n const entryDependencies: ManifestDependencies = new Map();\n\n Object.entries(buildAssets).forEach(([entryName, assets]) => {\n const dependencies: ManifestDependency = {\n assets: new Set([...assets.assets, ...assets.async.js, ...assets.async.css]),\n css: new Set(assets.initial.css),\n js: new Set(assets.initial.js),\n };\n\n entryDependencies.set(entryName, dependencies);\n });\n\n return entryDependencies;\n};\n\nclass ManifestPlugin {\n constructor(private readonly manifest: ManifestBuilder | (() => ManifestBuilder)) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(\"ManifestPlugin\", compilation => {\n const hooks = getManifestHooks(compilation);\n\n compilation.hooks.processAssets.tapPromise(\n {\n name: \"ManifestPlugin\",\n stage: Compilation.PROCESS_ASSETS_STAGE_REPORT,\n },\n async () => {\n try {\n const buildAssets = getCompilationBuildAssets(compilation);\n\n if (!buildAssets) {\n throw new Error(\"Build assets are unavailable before manifest generation\");\n }\n\n const dependencies = createManifestDependencies(buildAssets);\n await hooks.prepareDependencies.promise(dependencies, buildAssets);\n\n const builder = typeof this.manifest === \"function\" ? this.manifest() : this.manifest;\n const manifest = builder.setDependencies(dependencies).get();\n await hooks.validate.promise(manifest);\n\n const json = JSON.stringify(manifest, null, 2);\n\n compilation.emitAsset(\"manifest.json\", new rspack.sources.RawSource(json));\n } catch (error) {\n // A manifest failure rejects this build without terminating the watch compiler.\n compilation.errors.push(error instanceof Error ? error : new Error(String(error)));\n }\n }\n );\n });\n }\n}\n\nexport default ManifestPlugin;\n"],"mappings":"AAAA,OAAO,UAAS,mBAA4B;AAE5C,SAAQ,2BAA2B,wBAAuB;AAKnD,MAAM,6BAA6B,CAAC,gBAA2D;AAClG,QAAM,oBAA0C,oBAAI,IAAI;AAExD,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,WAAW,MAAM,MAAM;AACzD,UAAM,eAAmC;AAAA,MACrC,QAAQ,oBAAI,IAAI,CAAC,GAAG,OAAO,QAAQ,GAAG,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,GAAG,CAAC;AAAA,MAC3E,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG;AAAA,MAC/B,IAAI,IAAI,IAAI,OAAO,QAAQ,EAAE;AAAA,IACjC;AAEA,sBAAkB,IAAI,WAAW,YAAY;AAAA,EACjD,CAAC;AAED,SAAO;AACX;AAEA,MAAM,eAAe;AAAA,EACjB,YAA6B,UAAqD;AAArD;AAAA,EAAsD;AAAA,EAAtD;AAAA,EAE7B,MAAM,UAA0B;AAC5B,aAAS,MAAM,YAAY,IAAI,kBAAkB,iBAAe;AAC5D,YAAM,QAAQ,iBAAiB,WAAW;AAE1C,kBAAY,MAAM,cAAc;AAAA,QAC5B;AAAA,UACI,MAAM;AAAA,UACN,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,YAAY;AACR,cAAI;AACA,kBAAM,cAAc,0BAA0B,WAAW;AAEzD,gBAAI,CAAC,aAAa;AACd,oBAAM,IAAI,MAAM,yDAAyD;AAAA,YAC7E;AAEA,kBAAM,eAAe,2BAA2B,WAAW;AAC3D,kBAAM,MAAM,oBAAoB,QAAQ,cAAc,WAAW;AAEjE,kBAAM,UAAU,OAAO,KAAK,aAAa,aAAa,KAAK,SAAS,IAAI,KAAK;AAC7E,kBAAM,WAAW,QAAQ,gBAAgB,YAAY,EAAE,IAAI;AAC3D,kBAAM,MAAM,SAAS,QAAQ,QAAQ;AAErC,kBAAM,OAAO,KAAK,UAAU,UAAU,MAAM,CAAC;AAE7C,wBAAY,UAAU,iBAAiB,IAAI,OAAO,QAAQ,UAAU,IAAI,CAAC;AAAA,UAC7E,SAAS,OAAO;AAEZ,wBAAY,OAAO,KAAK,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,UACrF;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAEA,IAAO,yBAAQ;","names":[]}
@@ -2,3 +2,7 @@
2
2
  export interface RuntimePropertyOptions {
3
3
  readonly property: string;
4
4
  }
5
+ /** Names a module export that reads one property of the calling bundler runtime. */
6
+ export interface RuntimeModuleReaderOptions extends RuntimePropertyOptions {
7
+ readonly export: string;
8
+ }
@@ -0,0 +1,4 @@
1
+ import type { Compilation } from "@rspack/core";
2
+ import type { EntrypointAssetsMap } from "../../../../types/entrypoint.js";
3
+ export declare const setCompilationBuildAssets: (compilation: Compilation, assets: EntrypointAssetsMap) => void;
4
+ export declare const getCompilationBuildAssets: (compilation: Compilation) => EntrypointAssetsMap | undefined;
@@ -0,0 +1,12 @@
1
+ const compilationBuildAssets = /* @__PURE__ */ new WeakMap();
2
+ const setCompilationBuildAssets = (compilation, assets) => {
3
+ compilationBuildAssets.set(compilation, assets);
4
+ };
5
+ const getCompilationBuildAssets = (compilation) => {
6
+ return compilationBuildAssets.get(compilation);
7
+ };
8
+ export {
9
+ getCompilationBuildAssets,
10
+ setCompilationBuildAssets
11
+ };
12
+ //# sourceMappingURL=compilation-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/cli/bundler/plugins/utils/compilation-assets.ts"],"sourcesContent":["import type {Compilation} from \"@rspack/core\";\n\nimport type {EntrypointAssetsMap} from \"@typing/entrypoint\";\n\nconst compilationBuildAssets = new WeakMap<Compilation, EntrypointAssetsMap>();\n\nexport const setCompilationBuildAssets = (compilation: Compilation, assets: EntrypointAssetsMap): void => {\n compilationBuildAssets.set(compilation, assets);\n};\n\nexport const getCompilationBuildAssets = (compilation: Compilation): EntrypointAssetsMap | undefined => {\n return compilationBuildAssets.get(compilation);\n};\n"],"mappings":"AAIA,MAAM,yBAAyB,oBAAI,QAA0C;AAEtE,MAAM,4BAA4B,CAAC,aAA0B,WAAsC;AACtG,yBAAuB,IAAI,aAAa,MAAM;AAClD;AAEO,MAAM,4BAA4B,CAAC,gBAA8D;AACpG,SAAO,uBAAuB,IAAI,WAAW;AACjD;","names":[]}