@plaudit/webpack-extensions 3.21.2 → 4.0.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 (279) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/USER-GUIDE.md +2 -1
  3. package/dist/api/asset-information-emission.d.ts +74 -0
  4. package/dist/api/asset-information-emission.d.ts.map +1 -0
  5. package/dist/api/asset-information-emission.js +398 -0
  6. package/dist/api/asset-information-emission.js.map +1 -0
  7. package/dist/api/configuration.d.ts +102 -0
  8. package/dist/api/configuration.d.ts.map +1 -0
  9. package/dist/api/configuration.js +83 -0
  10. package/dist/api/configuration.js.map +1 -0
  11. package/dist/api/coordinatable-emitter.d.ts +27 -0
  12. package/dist/api/coordinatable-emitter.d.ts.map +1 -0
  13. package/dist/api/coordinatable-emitter.js +20 -0
  14. package/dist/api/coordinatable-emitter.js.map +1 -0
  15. package/dist/api/entries/dependencies.d.ts +69 -0
  16. package/dist/api/entries/dependencies.d.ts.map +1 -0
  17. package/dist/api/entries/dependencies.js +61 -0
  18. package/dist/api/entries/dependencies.js.map +1 -0
  19. package/dist/api/entries/flag-logic.d.ts +37 -0
  20. package/dist/api/entries/flag-logic.d.ts.map +1 -0
  21. package/dist/api/entries/flag-logic.js +110 -0
  22. package/dist/api/entries/flag-logic.js.map +1 -0
  23. package/dist/api/entries/identifiers.d.ts +84 -0
  24. package/dist/api/entries/identifiers.d.ts.map +1 -0
  25. package/dist/api/entries/identifiers.js +590 -0
  26. package/dist/api/entries/identifiers.js.map +1 -0
  27. package/dist/api/entries/index.d.ts +6 -0
  28. package/dist/api/entries/index.d.ts.map +1 -0
  29. package/dist/{plugins → api/entries}/index.js +6 -8
  30. package/dist/api/entries/index.js.map +1 -0
  31. package/dist/api/entries/locations.d.ts +135 -0
  32. package/dist/api/entries/locations.d.ts.map +1 -0
  33. package/dist/api/entries/locations.js +174 -0
  34. package/dist/api/entries/locations.js.map +1 -0
  35. package/dist/api/entries/manager.d.ts +12 -0
  36. package/dist/api/entries/manager.d.ts.map +1 -0
  37. package/dist/api/entries/manager.js +35 -0
  38. package/dist/api/entries/manager.js.map +1 -0
  39. package/dist/api/handle-derivation.d.ts +32 -0
  40. package/dist/api/handle-derivation.d.ts.map +1 -0
  41. package/dist/api/handle-derivation.js +77 -0
  42. package/dist/api/handle-derivation.js.map +1 -0
  43. package/dist/api/index.d.ts +7 -0
  44. package/dist/api/index.d.ts.map +1 -0
  45. package/dist/api/index.js +23 -0
  46. package/dist/api/index.js.map +1 -0
  47. package/dist/api/shared-types.d.ts +86 -0
  48. package/dist/api/shared-types.d.ts.map +1 -0
  49. package/dist/api/shared-types.js +3 -0
  50. package/dist/api/shared-types.js.map +1 -0
  51. package/dist/internal-utils/auto-registering-plugins-loader.d.ts +3 -0
  52. package/dist/internal-utils/auto-registering-plugins-loader.d.ts.map +1 -0
  53. package/dist/internal-utils/auto-registering-plugins-loader.js +42 -0
  54. package/dist/internal-utils/auto-registering-plugins-loader.js.map +1 -0
  55. package/dist/internal-utils/common-config-helpers.d.ts +14 -0
  56. package/dist/internal-utils/common-config-helpers.d.ts.map +1 -0
  57. package/dist/internal-utils/common-config-helpers.js +140 -0
  58. package/dist/internal-utils/common-config-helpers.js.map +1 -0
  59. package/dist/internal-utils/entrypoint-resolution-logic.d.ts +14 -0
  60. package/dist/internal-utils/entrypoint-resolution-logic.d.ts.map +1 -0
  61. package/dist/internal-utils/entrypoint-resolution-logic.js +223 -0
  62. package/dist/internal-utils/entrypoint-resolution-logic.js.map +1 -0
  63. package/dist/internal-utils/internal-pseudo-plugin.d.ts +6 -0
  64. package/dist/internal-utils/internal-pseudo-plugin.d.ts.map +1 -0
  65. package/dist/internal-utils/internal-pseudo-plugin.js +46 -0
  66. package/dist/internal-utils/internal-pseudo-plugin.js.map +1 -0
  67. package/dist/mocks/blocks.d.ts +32 -0
  68. package/dist/mocks/blocks.d.ts.map +1 -0
  69. package/dist/mocks/blocks.js +3 -0
  70. package/dist/mocks/blocks.js.map +1 -0
  71. package/dist/mocks/index.d.ts +2 -0
  72. package/dist/mocks/index.d.ts.map +1 -0
  73. package/dist/mocks/index.js +18 -0
  74. package/dist/mocks/index.js.map +1 -0
  75. package/dist/plugins/AdditionalDependencyInjectorPlugin.d.ts +4 -10
  76. package/dist/plugins/AdditionalDependencyInjectorPlugin.d.ts.map +1 -0
  77. package/dist/plugins/AdditionalDependencyInjectorPlugin.js +48 -47
  78. package/dist/plugins/AdditionalDependencyInjectorPlugin.js.map +1 -0
  79. package/dist/plugins/MiniCSSExtractPluginErrorCleaner.d.ts +1 -0
  80. package/dist/plugins/MiniCSSExtractPluginErrorCleaner.d.ts.map +1 -0
  81. package/dist/plugins/MiniCSSExtractPluginErrorCleaner.js +1 -0
  82. package/dist/plugins/MiniCSSExtractPluginErrorCleaner.js.map +1 -0
  83. package/dist/plugins/PackageConfigSanityChecker.d.ts +1 -0
  84. package/dist/plugins/PackageConfigSanityChecker.d.ts.map +1 -0
  85. package/dist/plugins/PackageConfigSanityChecker.js +1 -0
  86. package/dist/plugins/PackageConfigSanityChecker.js.map +1 -0
  87. package/dist/plugins/RootCoordinatorPluginImpl.d.ts +56 -0
  88. package/dist/plugins/RootCoordinatorPluginImpl.d.ts.map +1 -0
  89. package/dist/plugins/RootCoordinatorPluginImpl.js +767 -0
  90. package/dist/plugins/RootCoordinatorPluginImpl.js.map +1 -0
  91. package/dist/plugins/VariablesJSMonitorPlugin.d.ts +2 -1
  92. package/dist/plugins/VariablesJSMonitorPlugin.d.ts.map +1 -0
  93. package/dist/plugins/VariablesJSMonitorPlugin.js +1 -0
  94. package/dist/plugins/VariablesJSMonitorPlugin.js.map +1 -0
  95. package/dist/plugins/blocks/BlocksDirectoryLoaderEmitterPlugin.d.ts +25 -0
  96. package/dist/plugins/blocks/BlocksDirectoryLoaderEmitterPlugin.d.ts.map +1 -0
  97. package/dist/plugins/blocks/BlocksDirectoryLoaderEmitterPlugin.js +458 -0
  98. package/dist/plugins/blocks/BlocksDirectoryLoaderEmitterPlugin.js.map +1 -0
  99. package/dist/plugins/blocks/BlocksDirectoryProcessingPlugin.d.ts +29 -0
  100. package/dist/plugins/blocks/BlocksDirectoryProcessingPlugin.d.ts.map +1 -0
  101. package/dist/plugins/blocks/BlocksDirectoryProcessingPlugin.js +290 -0
  102. package/dist/plugins/blocks/BlocksDirectoryProcessingPlugin.js.map +1 -0
  103. package/dist/plugins/blocks/register.d.ts +6 -0
  104. package/dist/plugins/blocks/register.d.ts.map +1 -0
  105. package/dist/plugins/blocks/register.js +14 -0
  106. package/dist/plugins/blocks/register.js.map +1 -0
  107. package/dist/plugins/blocks/registerEmitter.d.ts +4 -0
  108. package/dist/plugins/blocks/registerEmitter.d.ts.map +1 -0
  109. package/dist/plugins/blocks/registerEmitter.js +13 -0
  110. package/dist/plugins/blocks/registerEmitter.js.map +1 -0
  111. package/dist/plugins/blocks/registerProcessor.d.ts +4 -0
  112. package/dist/plugins/blocks/registerProcessor.d.ts.map +1 -0
  113. package/dist/plugins/blocks/registerProcessor.js +46 -0
  114. package/dist/plugins/blocks/registerProcessor.js.map +1 -0
  115. package/dist/plugins/dependency-extraction-webpack-plugin-config-builder.d.ts +3 -2
  116. package/dist/plugins/dependency-extraction-webpack-plugin-config-builder.d.ts.map +1 -0
  117. package/dist/plugins/dependency-extraction-webpack-plugin-config-builder.js +2 -1
  118. package/dist/plugins/dependency-extraction-webpack-plugin-config-builder.js.map +1 -0
  119. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPlugin.d.ts +14 -0
  120. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPlugin.d.ts.map +1 -0
  121. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPlugin.js +191 -0
  122. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPlugin.js.map +1 -0
  123. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.d.ts +14 -0
  124. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.d.ts.map +1 -0
  125. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.js +102 -0
  126. package/dist/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.js.map +1 -0
  127. package/dist/plugins/extensions/ExtensionsDirectoryProcessingPlugin.d.ts +25 -0
  128. package/dist/plugins/extensions/ExtensionsDirectoryProcessingPlugin.d.ts.map +1 -0
  129. package/dist/plugins/extensions/ExtensionsDirectoryProcessingPlugin.js +229 -0
  130. package/dist/plugins/extensions/ExtensionsDirectoryProcessingPlugin.js.map +1 -0
  131. package/dist/plugins/extensions/register.d.ts +6 -0
  132. package/dist/plugins/extensions/register.d.ts.map +1 -0
  133. package/dist/plugins/extensions/register.js +14 -0
  134. package/dist/plugins/extensions/register.js.map +1 -0
  135. package/dist/plugins/extensions/registerEmitter.d.ts +4 -0
  136. package/dist/plugins/extensions/registerEmitter.d.ts.map +1 -0
  137. package/dist/plugins/extensions/registerEmitter.js +18 -0
  138. package/dist/plugins/extensions/registerEmitter.js.map +1 -0
  139. package/dist/plugins/extensions/registerProcessor.d.ts +4 -0
  140. package/dist/plugins/extensions/registerProcessor.d.ts.map +1 -0
  141. package/dist/plugins/extensions/registerProcessor.js +42 -0
  142. package/dist/plugins/extensions/registerProcessor.js.map +1 -0
  143. package/dist/plugins/plain/PlainEntrypointProcessingPlugin.d.ts +18 -0
  144. package/dist/plugins/plain/PlainEntrypointProcessingPlugin.d.ts.map +1 -0
  145. package/dist/plugins/plain/PlainEntrypointProcessingPlugin.js +203 -0
  146. package/dist/plugins/plain/PlainEntrypointProcessingPlugin.js.map +1 -0
  147. package/dist/plugins/plain/PlainEntrypointsConfigEmitterPlugin.d.ts +13 -0
  148. package/dist/plugins/plain/PlainEntrypointsConfigEmitterPlugin.d.ts.map +1 -0
  149. package/dist/plugins/plain/PlainEntrypointsConfigEmitterPlugin.js +51 -0
  150. package/dist/plugins/plain/PlainEntrypointsConfigEmitterPlugin.js.map +1 -0
  151. package/dist/plugins/plain/register.d.ts +6 -0
  152. package/dist/plugins/plain/register.d.ts.map +1 -0
  153. package/dist/plugins/plain/register.js +14 -0
  154. package/dist/plugins/plain/register.js.map +1 -0
  155. package/dist/plugins/plain/registerEmitter.d.ts +4 -0
  156. package/dist/plugins/plain/registerEmitter.d.ts.map +1 -0
  157. package/dist/plugins/plain/registerEmitter.js +21 -0
  158. package/dist/plugins/plain/registerEmitter.js.map +1 -0
  159. package/dist/plugins/plain/registerProcessor.d.ts +4 -0
  160. package/dist/plugins/plain/registerProcessor.d.ts.map +1 -0
  161. package/dist/plugins/plain/registerProcessor.js +34 -0
  162. package/dist/plugins/plain/registerProcessor.js.map +1 -0
  163. package/dist/plugins/register.d.ts +3 -0
  164. package/dist/plugins/register.d.ts.map +1 -0
  165. package/dist/plugins/register.js +17 -0
  166. package/dist/plugins/register.js.map +1 -0
  167. package/dist/plugins/special-assets/SpecialAssetsCollectorPlugin.d.ts +20 -0
  168. package/dist/plugins/special-assets/SpecialAssetsCollectorPlugin.d.ts.map +1 -0
  169. package/dist/plugins/special-assets/SpecialAssetsCollectorPlugin.js +56 -0
  170. package/dist/plugins/special-assets/SpecialAssetsCollectorPlugin.js.map +1 -0
  171. package/dist/plugins/special-assets/SpecialAssetsLoaderEmitterPlugin.d.ts +13 -0
  172. package/dist/plugins/special-assets/SpecialAssetsLoaderEmitterPlugin.d.ts.map +1 -0
  173. package/dist/plugins/special-assets/SpecialAssetsLoaderEmitterPlugin.js +105 -0
  174. package/dist/plugins/special-assets/SpecialAssetsLoaderEmitterPlugin.js.map +1 -0
  175. package/dist/plugins/special-assets/register.d.ts +6 -0
  176. package/dist/plugins/special-assets/register.d.ts.map +1 -0
  177. package/dist/plugins/special-assets/register.js +14 -0
  178. package/dist/plugins/special-assets/register.js.map +1 -0
  179. package/dist/plugins/special-assets/registerEmitter.d.ts +4 -0
  180. package/dist/plugins/special-assets/registerEmitter.d.ts.map +1 -0
  181. package/dist/plugins/special-assets/registerEmitter.js +15 -0
  182. package/dist/plugins/special-assets/registerEmitter.js.map +1 -0
  183. package/dist/plugins/special-assets/registerProcessor.d.ts +4 -0
  184. package/dist/plugins/special-assets/registerProcessor.d.ts.map +1 -0
  185. package/dist/plugins/special-assets/registerProcessor.js +15 -0
  186. package/dist/plugins/special-assets/registerProcessor.js.map +1 -0
  187. package/dist/plugins/unified-loader/UnifiedLoaderGenerator.d.ts +22 -0
  188. package/dist/plugins/unified-loader/UnifiedLoaderGenerator.d.ts.map +1 -0
  189. package/dist/plugins/unified-loader/UnifiedLoaderGenerator.js +95 -0
  190. package/dist/plugins/unified-loader/UnifiedLoaderGenerator.js.map +1 -0
  191. package/dist/plugins/wpml-config/WPMLConfigBuilder.d.ts +24 -0
  192. package/dist/plugins/wpml-config/WPMLConfigBuilder.d.ts.map +1 -0
  193. package/dist/plugins/{WPMLConfigBuilder.js → wpml-config/WPMLConfigBuilder.js} +123 -53
  194. package/dist/plugins/wpml-config/WPMLConfigBuilder.js.map +1 -0
  195. package/dist/plugins/wpml-config/register.d.ts +6 -0
  196. package/dist/plugins/wpml-config/register.d.ts.map +1 -0
  197. package/dist/plugins/wpml-config/register.js +25 -0
  198. package/dist/plugins/wpml-config/register.js.map +1 -0
  199. package/dist/shared.d.ts +10 -283
  200. package/dist/shared.d.ts.map +1 -0
  201. package/dist/shared.js +32 -405
  202. package/dist/shared.js.map +1 -0
  203. package/dist/utils/error-helpers.d.ts +7 -0
  204. package/dist/utils/error-helpers.d.ts.map +1 -0
  205. package/dist/utils/error-helpers.js +73 -0
  206. package/dist/utils/error-helpers.js.map +1 -0
  207. package/dist/utils/index.d.ts +6 -0
  208. package/dist/utils/index.d.ts.map +1 -0
  209. package/dist/utils/index.js +22 -0
  210. package/dist/utils/index.js.map +1 -0
  211. package/dist/utils/misc.d.ts +4 -0
  212. package/dist/utils/misc.d.ts.map +1 -0
  213. package/dist/utils/misc.js +18 -0
  214. package/dist/utils/misc.js.map +1 -0
  215. package/dist/utils/path-helpers.d.ts +16 -0
  216. package/dist/utils/path-helpers.d.ts.map +1 -0
  217. package/dist/utils/path-helpers.js +115 -0
  218. package/dist/utils/path-helpers.js.map +1 -0
  219. package/dist/utils/pseudo-semaphore.d.ts +1 -0
  220. package/dist/utils/pseudo-semaphore.d.ts.map +1 -0
  221. package/dist/utils/pseudo-semaphore.js +3 -5
  222. package/dist/utils/pseudo-semaphore.js.map +1 -0
  223. package/dist/utils/type-helpers.d.ts +27 -0
  224. package/dist/utils/type-helpers.d.ts.map +1 -0
  225. package/dist/utils/type-helpers.js +33 -0
  226. package/dist/utils/type-helpers.js.map +1 -0
  227. package/dist/utils/writer-utils.d.ts +8 -0
  228. package/dist/utils/writer-utils.d.ts.map +1 -0
  229. package/dist/utils/writer-utils.js +35 -0
  230. package/dist/utils/writer-utils.js.map +1 -0
  231. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/index.d.ts +2 -1
  232. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/index.d.ts.map +1 -0
  233. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/index.js +5 -7
  234. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/index.js.map +1 -0
  235. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/util.d.ts +1 -0
  236. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/util.d.ts.map +1 -0
  237. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/util.js +1 -0
  238. package/dist/wordpress-ports/dependency-extraction-webpack-plugin/util.js.map +1 -0
  239. package/dist/wordpress-scripts-wrapper.d.ts +3 -2
  240. package/dist/wordpress-scripts-wrapper.d.ts.map +1 -0
  241. package/dist/wordpress-scripts-wrapper.js +137 -391
  242. package/dist/wordpress-scripts-wrapper.js.map +1 -0
  243. package/package.json +28 -50
  244. package/dist/plugins/AbstractBiPhasicGroupAndEntryPlugin.d.ts +0 -25
  245. package/dist/plugins/AbstractBiPhasicGroupAndEntryPlugin.js +0 -86
  246. package/dist/plugins/AbstractBiPhasicGroupPlugin.d.ts +0 -31
  247. package/dist/plugins/AbstractBiPhasicGroupPlugin.js +0 -91
  248. package/dist/plugins/EnhancedBlockJSONPlugin.d.ts +0 -47
  249. package/dist/plugins/EnhancedBlockJSONPlugin.js +0 -657
  250. package/dist/plugins/EnhancedDynamicEntryPlugin.d.ts +0 -8
  251. package/dist/plugins/EnhancedDynamicEntryPlugin.js +0 -14
  252. package/dist/plugins/ExtensionsConfigFileGeneratorPlugin.d.ts +0 -20
  253. package/dist/plugins/ExtensionsConfigFileGeneratorPlugin.js +0 -191
  254. package/dist/plugins/ExtensionsConfigFileGeneratorPluginV1.d.ts +0 -9
  255. package/dist/plugins/ExtensionsConfigFileGeneratorPluginV1.js +0 -45
  256. package/dist/plugins/MixableBiPhasicGroupAndEntryPlugin.d.ts +0 -6
  257. package/dist/plugins/MixableBiPhasicGroupAndEntryPlugin.js +0 -13
  258. package/dist/plugins/MixableBiPhasicGroupPlugin.d.ts +0 -6
  259. package/dist/plugins/MixableBiPhasicGroupPlugin.js +0 -13
  260. package/dist/plugins/PlainEntrypointsConfigFileGeneratorPlugin.d.ts +0 -26
  261. package/dist/plugins/PlainEntrypointsConfigFileGeneratorPlugin.js +0 -392
  262. package/dist/plugins/SpecialAssetHandlingPlugin.d.ts +0 -12
  263. package/dist/plugins/SpecialAssetHandlingPlugin.js +0 -134
  264. package/dist/plugins/UnifiedLoaderGenerator.d.ts +0 -21
  265. package/dist/plugins/UnifiedLoaderGenerator.js +0 -144
  266. package/dist/plugins/WPMLConfigBuilder.d.ts +0 -17
  267. package/dist/plugins/index.d.ts +0 -8
  268. package/dist/plugins/static-configs.d.ts +0 -3
  269. package/dist/plugins/static-configs.js +0 -44
  270. package/dist/utils/common-config-helpers.d.ts +0 -28
  271. package/dist/utils/common-config-helpers.js +0 -489
  272. package/dist/utils/css-writer.d.ts +0 -4
  273. package/dist/utils/css-writer.js +0 -46
  274. package/dist/utils/entrypoint-resolution-logic.d.ts +0 -13
  275. package/dist/utils/entrypoint-resolution-logic.js +0 -82
  276. package/dist/utils/location-encoding-filename-parser.d.ts +0 -30
  277. package/dist/utils/location-encoding-filename-parser.js +0 -120
  278. package/dist/utils/path-query-and-related-helpers.d.ts +0 -64
  279. package/dist/utils/path-query-and-related-helpers.js +0 -269
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtensionsDirectoryLoaderEmitterPlugin = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const php_writer_1 = require("@plaudit/php-writer");
6
+ const expressions_1 = require("@plaudit/php-writer/expressions");
7
+ const webpack_1 = require("webpack");
8
+ const api_1 = require("../../api");
9
+ const utils_1 = require("../../utils");
10
+ const UnifiedLoaderGenerator_1 = require("../unified-loader/UnifiedLoaderGenerator");
11
+ class ExtensionsDirectoryLoaderEmitterPlugin extends api_1.CoordinatableEmitter {
12
+ coordinator;
13
+ config;
14
+ dest;
15
+ constructor(coordinator, config, dest) {
16
+ super();
17
+ this.coordinator = coordinator;
18
+ this.config = config;
19
+ this.dest = dest;
20
+ }
21
+ provides = ["unified-loader"];
22
+ get requires() {
23
+ return [`extensions-directory:${this.dest.destination}`];
24
+ }
25
+ get defaultCompilationName() {
26
+ return `extensionsdir-loader:${this.dest.destination}`;
27
+ }
28
+ apply(compiler) {
29
+ super.apply(compiler);
30
+ const targetDestination = this.dest.destination;
31
+ compiler.hooks.thisCompilation.tap(this.constructor.name, compilation => {
32
+ compilation.hooks.processAssets.tapPromise({ name: this.constructor.name, stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL }, async () => {
33
+ /**
34
+ * setupFiles from here on out is a mapping from blockSlug -> list of setup file destinations
35
+ */
36
+ const emittedExtensions = this.coordinator.getData(`extensions-directory:${targetDestination}`)
37
+ .reduce((collector, current) => {
38
+ collector.assets.push(...current.assets);
39
+ for (const [file, target] of Object.entries(current.setupFiles)) {
40
+ if (collector.setupFiles[target]) {
41
+ collector.setupFiles[target].push(file);
42
+ }
43
+ else {
44
+ collector.setupFiles[target] = [file];
45
+ }
46
+ }
47
+ return collector;
48
+ }, { setupFiles: {}, assets: [] });
49
+ const emittedExtensionsAssets = new Set(emittedExtensions.assets);
50
+ for (const setupFilesForBlockSlug of Object.values(emittedExtensions.setupFiles)) {
51
+ setupFilesForBlockSlug.sort();
52
+ }
53
+ const coordinatedHandles = await this.coordinator.getHandles(compilation);
54
+ const blockSlugToHandleMapping = {};
55
+ const collectedHandles = { script: [], script_module: [], style: [] };
56
+ for (const data of Object.values(coordinatedHandles)) {
57
+ if ((0, api_1.isExtensionEntryOptionsHolder)(data) && data.options.baseDestination === targetDestination && emittedExtensionsAssets.has(data.options.absoluteSrc)) {
58
+ collectedHandles[data.type].push((0, api_1.convertToFinalHandleData)(data, targetDestination));
59
+ (blockSlugToHandleMapping[data.options.blockSlug] ??= []).push([data.options.entrypointField, data.handle]);
60
+ }
61
+ }
62
+ const emitLoader = (writer) => {
63
+ //TODO: CONSIDER: Implement an alternate version that is more efficient when there is only one setup file extension per block
64
+ //TODO: CONSIDER: Update the logic to support referencing setup.php files in the original directories
65
+ if (Object.values(collectedHandles).some(c => c.length > 0)) {
66
+ writer.action("init", writer => {
67
+ (0, api_1.appendAssetRegistrations)(compilation, writer, collectedHandles);
68
+ }, { accountForAlreadyDoing: this.config.includePostInitFallback });
69
+ }
70
+ const prefixedPath = (...args) => expressions_1.Op.concat(expressions_1.Constants.__DIR__, '/', ...args);
71
+ const metadata = new expressions_1.Var("metadata", "array");
72
+ writer
73
+ .filter("block_type_metadata", writer => {
74
+ const blockSlug = new expressions_1.Var("block_slug", "string");
75
+ writer.assign(blockSlug, expressions_1.Expr.call("str_replace", ['/', '-', metadata.access('name')]));
76
+ if (Object.keys(blockSlugToHandleMapping).length > 0) {
77
+ const blockHandles = new expressions_1.Var("blockHandles");
78
+ writer.matchArray(blockSlug, blockSlugToHandleMapping, { assignTo: blockHandles });
79
+ const index = new expressions_1.Var("index", "int");
80
+ const extension = new expressions_1.Var("extension", "string");
81
+ const handle = new expressions_1.Var("handle", "string");
82
+ writer
83
+ .if(blockHandles);
84
+ writer.foreach(blockHandles, new expressions_1.PHPArray([extension, handle]), writer => {
85
+ const metaExtension = metadata.access(extension);
86
+ // WordPress unilaterally forces the asset handles of core blocks to be specific ones if they are the first item in the asset list.
87
+ // We account for that here by creating an alias from WordPress' generated asset handle to the handle that we're actually using
88
+ writer
89
+ .if(expressions_1.Expr.call('str_starts_with', [metadata.access('name'), expressions_1.Literal.primitive('core/')]), writer => {
90
+ const blockName = writer.assignment("blockName", expressions_1.Expr.call('substr', [metadata.access('name'), 5])); // This removes the "core/" prefix
91
+ const wp_generated_handle = new expressions_1.Var("wp_generated_handle", "string");
92
+ writer
93
+ .if(expressions_1.Expr.isset(metaExtension), writer => {
94
+ writer.assign(index, new expressions_1.Ternary(expressions_1.Expr.call('is_array', [metaExtension]), expressions_1.Expr.call('count', [metaExtension]), expressions_1.Literal.primitive(1)));
95
+ })
96
+ .else(writer => writer
97
+ .if(expressions_1.Op.binary(extension, " === ", expressions_1.Literal.primitive('style')), writer => {
98
+ writer.assign(metadata.access('style'), new expressions_1.PHPArray([expressions_1.Literal.interpolatedString(`wp-block-${blockName}`)]));
99
+ writer.assign(index, expressions_1.Literal.primitive(1));
100
+ })
101
+ .elseIf(expressions_1.Op.binary(extension, " === ", expressions_1.Literal.primitive('editorStyle')), writer => {
102
+ writer.assign(metadata.access('editorStyle'), new expressions_1.PHPArray([expressions_1.Literal.interpolatedString(`wp-block-${blockName}-editor`)]));
103
+ writer.assign(index, expressions_1.Literal.primitive(1));
104
+ })
105
+ .else(writer => {
106
+ writer.assign(index, expressions_1.Literal.primitive(0));
107
+ }))
108
+ .linebreak()
109
+ // The rest of this should not matter, but WordPress doesn't properly enqueue assets in the editor if it isn't present
110
+ .assign(wp_generated_handle, new expressions_1.Call(expressions_1.Expr.namespacedRef("generate_block_asset_handle"), [metadata.access('name'), extension, index]))
111
+ .if(expressions_1.Expr.call('str_ends_with', [extension, expressions_1.Literal.primitive('tyle')])) //A cheap case-insensitive check for ends with 'style'
112
+ .call('wp_register_style', [wp_generated_handle, expressions_1.Literal.primitive(false), handle])
113
+ .endIf();
114
+ }, true)
115
+ .endIf()
116
+ .if(expressions_1.Expr.isset(metaExtension).not())
117
+ .assign(metaExtension, new expressions_1.PHPArray([]))
118
+ .elseIf(expressions_1.Expr.call("is_array", [metaExtension]).not())
119
+ .assign(metaExtension, new expressions_1.Ternary(expressions_1.Expr.empty(metaExtension), new expressions_1.PHPArray([]), new expressions_1.PHPArray([metaExtension])))
120
+ .endIf()
121
+ .assign(metaExtension, handle, { push: true });
122
+ }, { enforceScope: 'none' })
123
+ .endIf();
124
+ }
125
+ if (Object.keys(emittedExtensions.setupFiles).length > 0) {
126
+ const blockSetupFiles = new expressions_1.Var("blockSetupFiles");
127
+ writer.matchArray(blockSlug, emittedExtensions.setupFiles, { assignTo: blockSetupFiles });
128
+ const filePathSuffix = new expressions_1.Var("file_path_suffix", "string");
129
+ writer
130
+ .if(blockSetupFiles)
131
+ .foreach(blockSetupFiles, filePathSuffix, writer => {
132
+ const plauditSetupMeta = metadata.access(['plaudit', 'setup']);
133
+ writer.structuredIf([
134
+ [expressions_1.Expr.empty(metadata.access('plaudit')), writer => {
135
+ writer.require(prefixedPath(filePathSuffix), { once: true });
136
+ }],
137
+ [expressions_1.Expr.empty(plauditSetupMeta), writer => {
138
+ writer.structuredIf([
139
+ [expressions_1.Expr.call("is_array", [metadata.access('plaudit')]), writer => {
140
+ writer.assign(plauditSetupMeta, prefixedPath(filePathSuffix));
141
+ }],
142
+ [undefined, writer => {
143
+ writer.assign(metadata.access('plaudit'), new expressions_1.PHPArray({ setup: prefixedPath(filePathSuffix) }));
144
+ }],
145
+ ]);
146
+ }],
147
+ [expressions_1.Expr.call("is_array", [metadata.access('plaudit')]).not(), writer => {
148
+ writer.assign(metadata.access('plaudit'), new expressions_1.PHPArray({ setup: prefixedPath(filePathSuffix) }));
149
+ }],
150
+ [expressions_1.Expr.call("is_array", [plauditSetupMeta]), writer => {
151
+ writer.assign(plauditSetupMeta, prefixedPath(filePathSuffix), { push: true });
152
+ }],
153
+ [undefined, writer => {
154
+ writer.assign(plauditSetupMeta, new expressions_1.PHPArray([plauditSetupMeta, prefixedPath(filePathSuffix)]));
155
+ }],
156
+ ]);
157
+ }, { enforceScope: 'none' })
158
+ .endIf();
159
+ }
160
+ writer.return(metadata);
161
+ }, { functionArgParameters: [metadata] });
162
+ };
163
+ const file = new php_writer_1.PHPFile();
164
+ if (!this.config.useUnifiedLoader) {
165
+ (0, utils_1.emitResolveBaseUriFunction)(file);
166
+ }
167
+ if (this.dest.locations.lazyLoader) {
168
+ const writer = file.getWriter(this.config.targetNamespace);
169
+ for (const functionName of this.dest.locations.lazyLoader) {
170
+ writer.function(functionName, [], emitLoader, { returnType: 'void' });
171
+ }
172
+ }
173
+ else {
174
+ file.getWriter("").withScope(emitLoader);
175
+ }
176
+ const destination = (0, node_path_1.join)(targetDestination, "extensions-loader.php");
177
+ (0, utils_1.emitPHPWriterAsAsset)(file, compilation, destination);
178
+ this.coordinator.reportData(compilation, this, "unified-loader", {
179
+ group: `extensions-directory:${targetDestination}`,
180
+ requiresBaseURI: true,
181
+ action: file => file.require("/" + destination, { dirRelative: true, once: true }),
182
+ });
183
+ });
184
+ });
185
+ }
186
+ getCoordinatedEmissionTargets() {
187
+ return [UnifiedLoaderGenerator_1.UnifiedLoaderGenerator.emissionTarget(this.config)];
188
+ }
189
+ }
190
+ exports.ExtensionsDirectoryLoaderEmitterPlugin = ExtensionsDirectoryLoaderEmitterPlugin;
191
+ //# sourceMappingURL=ExtensionsDirectoryLoaderEmitterPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionsDirectoryLoaderEmitterPlugin.js","sourceRoot":"","sources":["../../../src/plugins/extensions/ExtensionsDirectoryLoaderEmitterPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type Compiler } from "webpack";
2
+ import { CoordinatableEmitter, type CoordinatedEmissionTargetBuilder, type RootCoordinatorPlugin, type VerifiedAdvancedDestinationConfig, type VerifiedPlauditWordpressWebpackConfig } from "../../api";
3
+ export declare class ExtensionsDirectoryLoaderEmitterPluginV1 extends CoordinatableEmitter {
4
+ protected readonly coordinator: RootCoordinatorPlugin;
5
+ private readonly config;
6
+ private readonly dest;
7
+ constructor(coordinator: RootCoordinatorPlugin, config: VerifiedPlauditWordpressWebpackConfig, dest: VerifiedAdvancedDestinationConfig);
8
+ readonly provides: readonly ["unified-loader"];
9
+ get requires(): readonly [`extensions-directory:${string}`];
10
+ get defaultCompilationName(): string;
11
+ apply(compiler: Compiler): void;
12
+ getCoordinatedEmissionTargets(): CoordinatedEmissionTargetBuilder[];
13
+ }
14
+ //# sourceMappingURL=ExtensionsDirectoryLoaderEmitterPluginV1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionsDirectoryLoaderEmitterPluginV1.d.ts","sourceRoot":"","sources":["../../../src/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,QAAQ,EAAU,MAAM,SAAS,CAAC;AAE5D,OAAO,EACiB,oBAAoB,EAAE,KAAK,gCAAgC,EACnD,KAAK,qBAAqB,EAAE,KAAK,iCAAiC,EAAE,KAAK,qCAAqC,EAC7I,MAAM,WAAW,CAAC;AAQnB,qBAAa,wCAAyC,SAAQ,oBAAoB;IAEhF,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,qBAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHtB,YACoB,WAAW,EAAE,qBAAqB,EACpC,MAAM,EAAE,qCAAqC,EAC7C,IAAI,EAAE,iCAAiC,EAGxD;IAED,SAAgB,QAAQ,YAAI,gBAAgB,EAAW;IAEvD,IAAW,QAAQ,gDAElB;IACD,IAAW,sBAAsB,WAEhC;IAED,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAuE9B;IAED,6BAA6B,IAAI,gCAAgC,EAAE,CAElE;CACD"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ExtensionsDirectoryLoaderEmitterPluginV1 = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const php_writer_1 = require("@plaudit/php-writer");
9
+ const webpack_1 = require("webpack");
10
+ const api_1 = require("../../api");
11
+ const UnifiedLoaderGenerator_1 = require("../unified-loader/UnifiedLoaderGenerator");
12
+ class ExtensionsDirectoryLoaderEmitterPluginV1 extends api_1.CoordinatableEmitter {
13
+ coordinator;
14
+ config;
15
+ dest;
16
+ constructor(coordinator, config, dest) {
17
+ super();
18
+ this.coordinator = coordinator;
19
+ this.config = config;
20
+ this.dest = dest;
21
+ }
22
+ provides = ["unified-loader"];
23
+ get requires() {
24
+ return [`extensions-directory:${this.dest.destination}`];
25
+ }
26
+ get defaultCompilationName() {
27
+ return `extensionsdir-loader:${this.dest.destination}`;
28
+ }
29
+ apply(compiler) {
30
+ super.apply(compiler);
31
+ const targetDestination = this.dest.destination;
32
+ compiler.hooks.thisCompilation.tap(this.constructor.name, compilation => {
33
+ compilation.hooks.processAssets.tapPromise({ name: this.constructor.name, stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL }, async () => {
34
+ /**
35
+ * setupFiles from here on out is a mapping from blockSlug -> list of setup file destinations
36
+ */
37
+ const emittedExtensions = this.coordinator.getData(`extensions-directory:${targetDestination}`)
38
+ .reduce((collector, current) => {
39
+ collector.assets.push(...current.assets);
40
+ for (const [file, target] of Object.entries(current.setupFiles)) {
41
+ if (collector.setupFiles[target]) {
42
+ collector.setupFiles[target].push(file);
43
+ }
44
+ else {
45
+ collector.setupFiles[target] = [file];
46
+ }
47
+ }
48
+ return collector;
49
+ }, { setupFiles: {}, assets: [] });
50
+ const emittedExtensionsAssets = new Set(emittedExtensions.assets);
51
+ for (const setupFilesForBlockSlug of Object.values(emittedExtensions.setupFiles)) {
52
+ setupFilesForBlockSlug.sort();
53
+ }
54
+ const mapping = {};
55
+ // const coordinatedHandles = Object
56
+ // .values(await this.coordinator.getHandles(compilation))
57
+ // .filter(data => {
58
+ // return isExtensionEntryOptionsHolder(data) && data.options.baseDestination === targetDestination
59
+ // && emittedExtensionsAssets.has(data.options.absoluteSrc);
60
+ // });
61
+ const coordinatedHandles = await this.coordinator.getHandles(compilation);
62
+ for (const data of Object.values(coordinatedHandles)) {
63
+ if ((0, api_1.isExtensionEntryOptionsHolder)(data) && data.options.baseDestination === targetDestination && emittedExtensionsAssets.has(data.options.absoluteSrc)) {
64
+ ((mapping[data.options.blockSlug] ??= [{}])[0][data.options.entrypointField] ??= []).push([data.handle, data.finalizedHandleMetadata.src]);
65
+ // collectedHandles[data.type].push(convertToFinalHandleData(data, targetDestination));
66
+ // (blockSlugToHandleMapping[data.options.blockSlug] ??= []).push([data.options.entrypointField, data.handle] as const);
67
+ }
68
+ }
69
+ const blockSlugToHandleMapping = {};
70
+ const collectedHandles = { script: [], script_module: [], style: [] };
71
+ for (const data of Object.values(coordinatedHandles)) {
72
+ if ((0, api_1.isExtensionEntryOptionsHolder)(data) && data.options.baseDestination === targetDestination && emittedExtensionsAssets.has(data.options.absoluteSrc)) {
73
+ collectedHandles[data.type].push((0, api_1.convertToFinalHandleData)(data, targetDestination));
74
+ (blockSlugToHandleMapping[data.options.blockSlug] ??= []).push([data.options.entrypointField, data.handle]);
75
+ }
76
+ }
77
+ const regex = /^(.+?)-((?<prefix>editor-|view-|)(?<type>style|script|script-module))\.(?<extension>css|m?js)$/i;
78
+ const prefix = targetDestination + node_path_1.default.sep;
79
+ for (let fileWithAssetData of emittedExtensions.assets) {
80
+ let match;
81
+ if (fileWithAssetData.startsWith(prefix)) {
82
+ fileWithAssetData = fileWithAssetData.substring(prefix.length);
83
+ }
84
+ if ((match = regex.exec(fileWithAssetData)) && match[1] && match[2]) {
85
+ if (match.groups?.['type'] === 'style' && match.groups['extension'] !== 'css') {
86
+ fileWithAssetData = fileWithAssetData.replace(/\.m?js$/i, ".css");
87
+ }
88
+ const resourceInfo = (mapping[match[1]] ?? (mapping[match[1]] = [{}]))[0];
89
+ const key = match[2].replace(/-[sm]/gi, chars => chars.substring(1).toUpperCase());
90
+ (resourceInfo[key] ?? (resourceInfo[key] = [])).push([`plaudit_block-extension_${match[1]}-${match[2]}`, fileWithAssetData]);
91
+ }
92
+ }
93
+ compilation.emitAsset(node_path_1.default.join(targetDestination, "mapping.config"), new webpack_1.sources.RawSource((0, php_writer_1.phpSerialize)(mapping)));
94
+ });
95
+ });
96
+ }
97
+ getCoordinatedEmissionTargets() {
98
+ return [UnifiedLoaderGenerator_1.UnifiedLoaderGenerator.emissionTarget(this.config)];
99
+ }
100
+ }
101
+ exports.ExtensionsDirectoryLoaderEmitterPluginV1 = ExtensionsDirectoryLoaderEmitterPluginV1;
102
+ //# sourceMappingURL=ExtensionsDirectoryLoaderEmitterPluginV1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionsDirectoryLoaderEmitterPluginV1.js","sourceRoot":"","sources":["../../../src/plugins/extensions/ExtensionsDirectoryLoaderEmitterPluginV1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Compiler } from "webpack";
2
+ import { CoordinatableEmitter, type CoordinatedEmissionTargetBuilder, type RootCoordinatorPlugin, type VerifiedAdvancedDestinationConfig, type VerifiedPlauditWordpressWebpackConfig } from "../../api";
3
+ export type EmittedExtensionsData = {
4
+ assets: string[];
5
+ /**
6
+ * This is a mapping from destination -> blockSlug
7
+ */
8
+ setupFiles: Record<string, string>;
9
+ };
10
+ export declare class ExtensionsDirectoryProcessingPlugin extends CoordinatableEmitter {
11
+ protected readonly coordinator: RootCoordinatorPlugin;
12
+ private readonly config;
13
+ private readonly dest;
14
+ private readonly context;
15
+ private readonly srcRoot;
16
+ private readonly hasAnyNonModuleBuilds;
17
+ constructor(coordinator: RootCoordinatorPlugin, config: VerifiedPlauditWordpressWebpackConfig, dest: VerifiedAdvancedDestinationConfig, context: string, srcRoot: string, hasAnyNonModuleBuilds: boolean);
18
+ readonly requires: readonly [];
19
+ readonly defaultCompilationName: undefined;
20
+ get provides(): readonly [`extensions-directory:${string}`];
21
+ apply(compiler: Compiler): void;
22
+ private recurseThroughDirectories;
23
+ getCoordinatedEmissionTargets(): CoordinatedEmissionTargetBuilder[];
24
+ }
25
+ //# sourceMappingURL=ExtensionsDirectoryProcessingPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionsDirectoryProcessingPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/extensions/ExtensionsDirectoryProcessingPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,QAAQ,EAAU,MAAM,SAAS,CAAC;AAE5D,OAAO,EACN,oBAAoB,EAAE,KAAK,gCAAgC,EAGxB,KAAK,qBAAqB,EAAE,KAAK,iCAAiC,EAAE,KAAK,qCAAqC,EACjJ,MAAM,WAAW,CAAC;AAGnB,MAAM,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAA;AAID,qBAAa,mCAAoC,SAAQ,oBAAoB;IAE3E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,qBAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IANvC,YACoB,WAAW,EAAE,qBAAqB,EACpC,MAAM,EAAE,qCAAqC,EAC7C,IAAI,EAAE,iCAAiC,EACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,OAAO,EAG/C;IAED,SAAgB,QAAQ,cAAe;IACvC,SAAgB,sBAAsB,YAAa;IAEnD,IAAW,QAAQ,gDAElB;IAED,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAqH9B;YAEa,yBAAyB;IAgDvC,6BAA6B,IAAI,gCAAgC,EAAE,CAElE;CACD"}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtensionsDirectoryProcessingPlugin = void 0;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_path_1 = require("node:path");
6
+ const webpack_1 = require("webpack");
7
+ const api_1 = require("../../api");
8
+ const utils_1 = require("../../utils");
9
+ class ExtensionsDirectoryProcessingPlugin extends api_1.CoordinatableEmitter {
10
+ coordinator;
11
+ config;
12
+ dest;
13
+ context;
14
+ srcRoot;
15
+ hasAnyNonModuleBuilds;
16
+ constructor(coordinator, config, dest, context, srcRoot, hasAnyNonModuleBuilds) {
17
+ super();
18
+ this.coordinator = coordinator;
19
+ this.config = config;
20
+ this.dest = dest;
21
+ this.context = context;
22
+ this.srcRoot = srcRoot;
23
+ this.hasAnyNonModuleBuilds = hasAnyNonModuleBuilds;
24
+ }
25
+ requires = [];
26
+ defaultCompilationName = undefined;
27
+ get provides() {
28
+ return [`extensions-directory:${this.dest.destination}`];
29
+ }
30
+ apply(compiler) {
31
+ super.apply(compiler);
32
+ const processingModules = !!compiler.options.output.module;
33
+ const canProcessAlternateAssets = !processingModules || !this.hasAnyNonModuleBuilds;
34
+ const handleConfig = this.dest.handle;
35
+ compiler.hooks.make.tapPromise(this.constructor.name, async (compilation) => {
36
+ if (!compilation.contextDependencies.has(this.srcRoot)) {
37
+ compilation.contextDependencies.add(this.srcRoot);
38
+ }
39
+ const myMeta = compilation.moduleGraph.getMeta(this);
40
+ const setupFiles = myMeta["plaudit/setup-files"] ??= {};
41
+ const delegateContext = { compilation };
42
+ const overallHandlePrefix = `${this.config.targetHandlePrefix}/extensions/`;
43
+ const { addEntry, addEntryInjectionPromise, waitHook } = this.makeEntryManager(compiler, compilation, this.context);
44
+ const makeEntryOptions = (blockSlug, handleSuffix, options) => {
45
+ const { dir, name } = (0, node_path_1.parse)((0, node_path_1.normalize)((0, node_path_1.join)(this.dest.destination, (0, node_path_1.relative)(this.srcRoot, options.absoluteSrc))));
46
+ return (0, api_1.makePlauditEntryOptions)(handleConfig, overallHandlePrefix + blockSlug, handleSuffix, {
47
+ ...options,
48
+ additionalDependencies: this.dest.additionalDependencies,
49
+ baseDestination: this.dest.destination,
50
+ name: (0, node_path_1.join)(dir, name),
51
+ blockSlug: blockSlug
52
+ });
53
+ };
54
+ const extensionsJsonProcessingPromises = [];
55
+ for await (const dirent of await (0, promises_1.opendir)(this.srcRoot)) {
56
+ if ((0, utils_1.shouldBeSkipped)(dirent.name)) {
57
+ continue;
58
+ }
59
+ if (dirent.isFile()) {
60
+ const lcName = dirent.name.toLowerCase();
61
+ if (lcName.endsWith("-setup.php")) {
62
+ if (canProcessAlternateAssets) {
63
+ const absoluteSrc = (0, utils_1.joinPossiblyAbsolutePaths)(this.srcRoot, dirent.name);
64
+ addEntryInjectionPromise((0, promises_1.readFile)(absoluteSrc).then(contents => {
65
+ const destination = (0, node_path_1.join)(this.dest.destination, dirent.name);
66
+ compilation.emitAsset(destination, new webpack_1.sources.RawSource(contents), { size: Buffer.byteLength(contents) });
67
+ // We need to record that this is a setup file that we are managing
68
+ setupFiles[dirent.name] = dirent.name.slice(0, -10);
69
+ }));
70
+ }
71
+ continue;
72
+ }
73
+ const { name } = (0, node_path_1.parse)(lcName);
74
+ const { blockSlug, rawEpField } = /^(?<blockSlug>.+)-(?<rawEpField>(?:view|editor)(?:-(?:script|script[-_]module|style))?|script|script[-_]module|style|both)$/i.exec(name)?.groups ?? {};
75
+ if (blockSlug === undefined || rawEpField === undefined) {
76
+ continue;
77
+ }
78
+ const absoluteSrc = (0, utils_1.joinPossiblyAbsolutePaths)(this.srcRoot, dirent.name);
79
+ const conversionRes = safeConversionToEntrypointField(compilation, absoluteSrc, rawEpField);
80
+ if (conversionRes === false) {
81
+ continue;
82
+ }
83
+ const [entrypointField, type] = conversionRes;
84
+ const locations = { register: api_1.DEFAULT_WP_HOOK_PRIORITY };
85
+ if (entrypointField.startsWith("editor")) {
86
+ locations.clientEditor = api_1.DEFAULT_WP_HOOK_PRIORITY;
87
+ }
88
+ else if (entrypointField.startsWith("view")) {
89
+ locations.clientView = api_1.DEFAULT_WP_HOOK_PRIORITY;
90
+ }
91
+ else {
92
+ locations.clientEditor = api_1.DEFAULT_WP_HOOK_PRIORITY;
93
+ locations.clientView = api_1.DEFAULT_WP_HOOK_PRIORITY;
94
+ }
95
+ extensionsJsonProcessingPromises.push(makeEntryOptions(blockSlug, rawEpField, {
96
+ type,
97
+ flags: {},
98
+ absoluteSrc,
99
+ entrypointField,
100
+ locations,
101
+ }));
102
+ }
103
+ else if (dirent.isDirectory()) {
104
+ extensionsJsonProcessingPromises.push(this.recurseThroughDirectories(compilation, this.srcRoot, [dirent.name], makeEntryOptions, canProcessAlternateAssets, setupFiles, addEntryInjectionPromise, delegateContext));
105
+ }
106
+ }
107
+ for (const ep of (0, utils_1.dedupeEntrypointOutputPaths)((await Promise.all(extensionsJsonProcessingPromises)).flat())) {
108
+ if (processingModules === (ep.type === "script_module")) {
109
+ addEntry(ep.absoluteSrc, ep);
110
+ }
111
+ }
112
+ await waitHook();
113
+ });
114
+ compiler.hooks.thisCompilation.tap(this.constructor.name, compilation => {
115
+ compilation.hooks.processAssets.tap({ name: this.constructor.name, stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_REPORT }, () => {
116
+ const myMeta = compilation.moduleGraph.getMeta(this);
117
+ const setupFiles = myMeta["plaudit/setup-files"] ??= {};
118
+ const reportableData = {
119
+ assets: [],
120
+ setupFiles,
121
+ };
122
+ for (const entrypoint of compilation.entrypoints.values()) {
123
+ if ((0, api_1.isPlauditEntryOptions)(entrypoint.options) && this.dest.destination === entrypoint.options.baseDestination && (0, api_1.isExtensionEntryOptions)(entrypoint.options)) {
124
+ reportableData.assets.push(entrypoint.options.absoluteSrc);
125
+ }
126
+ }
127
+ this.coordinator.reportData(compilation, this, `extensions-directory:${this.dest.destination}`, reportableData);
128
+ });
129
+ });
130
+ //TODO: CONSIDER: If all files are two levels deep (i.e. core/group/view.ts), assume slash in middle. Use that to cut down on a few string ops
131
+ }
132
+ async recurseThroughDirectories(compilation, srcRoot, parent, makeEntryOptions, canProcessAlternateAssets, setupFiles, addEntryInjectionPromise, delegateContext) {
133
+ const res = [];
134
+ for await (const dirent of await (0, promises_1.opendir)((0, node_path_1.join)(srcRoot, ...parent))) {
135
+ if ((0, utils_1.shouldBeSkipped)(dirent.name)) {
136
+ continue;
137
+ }
138
+ if (dirent.isDirectory()) {
139
+ res.push(this.recurseThroughDirectories(compilation, srcRoot, [...parent, dirent.name], makeEntryOptions, canProcessAlternateAssets, setupFiles, addEntryInjectionPromise, delegateContext));
140
+ }
141
+ else if (dirent.isFile()) {
142
+ const lcName = dirent.name.toLowerCase();
143
+ if (lcName === 'setup.php' || lcName.endsWith("-setup.php") || lcName.endsWith(".setup.php")) {
144
+ if (canProcessAlternateAssets) {
145
+ const absoluteSrc = (0, node_path_1.join)(srcRoot, ...parent, dirent.name);
146
+ addEntryInjectionPromise((0, promises_1.readFile)(absoluteSrc).then(contents => {
147
+ const managedName = (0, node_path_1.join)(...parent, dirent.name);
148
+ const destination = (0, node_path_1.join)(this.dest.destination, managedName);
149
+ compilation.emitAsset(destination, new webpack_1.sources.RawSource(contents), { size: Buffer.byteLength(contents) });
150
+ // We need to record that this is a setup file that we are managing
151
+ setupFiles[managedName] = parent.join("-");
152
+ }));
153
+ }
154
+ continue;
155
+ }
156
+ const identifier = (0, api_1.parseEntrypointIdentifierForBlock)(dirent.name, false, delegateContext);
157
+ if (identifier === undefined) {
158
+ continue;
159
+ }
160
+ const { filePath, niceName, ...pluginOptions } = identifier;
161
+ const { entrypointField, locations } = (0, api_1.deriveEntrypointFieldAndBlockSafeLocations)(identifier, compilation.options.output.module, delegateContext);
162
+ if (entrypointField !== undefined) {
163
+ const handleSuffix = niceName ?? (0, node_path_1.parse)(filePath).name;
164
+ res.push(makeEntryOptions(parent.join("-"), handleSuffix, {
165
+ ...pluginOptions,
166
+ absoluteSrc: (0, node_path_1.join)(srcRoot, ...parent, dirent.name),
167
+ entrypointField,
168
+ locations,
169
+ }));
170
+ }
171
+ }
172
+ }
173
+ return (await Promise.all(res)).flat();
174
+ }
175
+ getCoordinatedEmissionTargets() {
176
+ return [];
177
+ }
178
+ }
179
+ exports.ExtensionsDirectoryProcessingPlugin = ExtensionsDirectoryProcessingPlugin;
180
+ /**
181
+ *
182
+ * @param compilation
183
+ * @param absoluteSrc
184
+ * @param value {string} this MUST match /^(?:view|editor)(?:-(?:script|script[-_]module|style))?|script|script[-_]module|style|both)$/
185
+ */
186
+ function safeConversionToEntrypointField(compilation, absoluteSrc, value) {
187
+ switch (value) {
188
+ case 'script':
189
+ return ['script', 'script'];
190
+ case 'script-module':
191
+ case 'script_module':
192
+ (0, utils_1.emitError)("Cannot enqueue script modules anywhere other than the view", { rawIdentifier: absoluteSrc, compilation });
193
+ return false;
194
+ case 'style':
195
+ return ['style', 'style'];
196
+ case 'both': {
197
+ const type = (0, api_1.getAssetType)(absoluteSrc);
198
+ return type === false || type === 'script_module' ? false : [type, type];
199
+ }
200
+ case 'editor':
201
+ case 'view': {
202
+ const type = (0, api_1.getAssetType)(absoluteSrc);
203
+ if (type === false) {
204
+ //TODO: Should we emit a warning here?
205
+ return false;
206
+ }
207
+ else if (value === 'editor' && type === 'script_module') {
208
+ (0, utils_1.emitError)("Cannot enqueue script modules for blocks anywhere other than the view", { rawIdentifier: absoluteSrc, compilation });
209
+ return false;
210
+ }
211
+ return [(value + "S" + type.substring(1)), type];
212
+ }
213
+ }
214
+ const firstDash = value.indexOf("-");
215
+ const prefix = value.substring(0, firstDash);
216
+ const suffix = value.substring(firstDash + 1);
217
+ if (prefix !== 'view' && prefix !== 'editor') {
218
+ return false;
219
+ }
220
+ if (suffix === 'script-module' || suffix === 'script_module') {
221
+ if (prefix === 'view') {
222
+ return ['viewScriptModule', 'script_module'];
223
+ }
224
+ (0, utils_1.emitError)("Cannot enqueue script modules for blocks anywhere other than the view", { rawIdentifier: absoluteSrc, compilation });
225
+ return false;
226
+ }
227
+ return [(prefix + "S" + suffix.substring(1)), suffix];
228
+ }
229
+ //# sourceMappingURL=ExtensionsDirectoryProcessingPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionsDirectoryProcessingPlugin.js","sourceRoot":"","sources":["../../../src/plugins/extensions/ExtensionsDirectoryProcessingPlugin.ts"],"names":[],"mappings":"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"}