@elementor/generate-wordpress-asset-file-webpack-plugin 0.3.1 → 0.3.3

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.
package/CHANGELOG.md CHANGED
@@ -3,24 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [0.3.1](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.0...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.1) (2023-10-19)
6
+ ## [0.3.3](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.2...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.3) (2024-08-05)
7
7
 
8
- **Note:** Version bump only for package @elementor/generate-wordpress-asset-file-webpack-plugin
8
+ ### Bug Fixes
9
9
 
10
+ - publish only necessary files to npm ([#226](https://github.com/elementor/elementor-packages/issues/226)) ([d808e2f](https://github.com/elementor/elementor-packages/commit/d808e2f60eb7ca2d7b8560d0b79c0e62c2f969a8))
10
11
 
12
+ ## [0.3.2](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.1...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.2) (2024-07-16)
11
13
 
14
+ **Note:** Version bump only for package @elementor/generate-wordpress-asset-file-webpack-plugin
12
15
 
16
+ ## [0.3.1](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.0...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.1) (2023-10-19)
13
17
 
14
- # [0.3.0](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.2.1...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.0) (2023-07-11)
18
+ **Note:** Version bump only for package @elementor/generate-wordpress-asset-file-webpack-plugin
15
19
 
20
+ # [0.3.0](https://github.com/elementor/elementor-packages/compare/@elementor/generate-wordpress-asset-file-webpack-plugin@0.2.1...@elementor/generate-wordpress-asset-file-webpack-plugin@0.3.0) (2023-07-11)
16
21
 
17
22
  ### Features
18
23
 
19
- * **webpack-plugins:** simplify logic ([#78](https://github.com/elementor/elementor-packages/issues/78)) ([e4cadc0](https://github.com/elementor/elementor-packages/commit/e4cadc06be61450437274610e65b9d92eb245844))
20
-
21
-
22
-
23
-
24
+ - **webpack-plugins:** simplify logic ([#78](https://github.com/elementor/elementor-packages/issues/78)) ([e4cadc0](https://github.com/elementor/elementor-packages/commit/e4cadc06be61450437274610e65b9d92eb245844))
24
25
 
25
26
  ## 0.2.1 (2023-07-02)
26
27
 
package/dist/index.js CHANGED
@@ -91,12 +91,8 @@ var GenerateWordPressAssetFileWebpackPlugin = class {
91
91
  const transformEntryNameToHandle = this.options.handle;
92
92
  const entryHandle = transformEntryNameToHandle(entryName);
93
93
  const depsHandles = this.getDepsHandlesFromChunk(compilation, chunk);
94
- const assetFilePath = createAssetFilePath(
95
- compilation.getPath("[file]", { filename: chunkJSFile })
96
- );
97
- compilation.assets[assetFilePath] = new import_webpack.sources.RawSource(
98
- getAssetFileContent(entryHandle, depsHandles)
99
- );
94
+ const assetFilePath = createAssetFilePath(compilation.getPath("[file]", { filename: chunkJSFile }));
95
+ compilation.assets[assetFilePath] = new import_webpack.sources.RawSource(getAssetFileContent(entryHandle, depsHandles));
100
96
  chunk.files.add(assetFilePath);
101
97
  }
102
98
  getDepsHandlesFromChunk(compilation, chunk) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/utils.ts"],"sourcesContent":["export { default as GenerateWordPressAssetFileWebpackPlugin } from './plugin';\n","// Inspired by \"Dependency Extraction Webpack Plugin\" by @wordpress team.\n// Link: https://github.com/WordPress/gutenberg/tree/trunk/packages/dependency-extraction-webpack-plugin\nimport { sources, Compilation, Compiler, Chunk } from 'webpack';\nimport { createAssetFilePath, getAssetFileContent, transformRequestToHandle } from './utils';\nimport { RequestToHandleMap } from './types';\n\ntype Options = {\n\thandle: ( entryName: string ) => string;\n\tmap: RequestToHandleMap\n}\n\ntype Module = {\n\tuserRequest?: string;\n\tmodules?: Module[];\n}\n\nexport default class GenerateWordPressAssetFileWebpackPlugin {\n\toptions: Options;\n\n\tconstructor( options: Options ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ) {\n\t\tcompiler.hooks.thisCompilation.tap( this.constructor.name, ( compilation ) => {\n\t\t\tcompilation.hooks.processAssets.tap( { name: this.constructor.name }, () => {\n\t\t\t\t[ ...compilation.entrypoints ].forEach( ( [ entryName, entrypoint ] ) => {\n\t\t\t\t\tconst chunk = entrypoint.chunks.find( ( { name } ) => name === entryName );\n\n\t\t\t\t\tif ( ! chunk ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.addAssetFileToEntrypoint( compilation, entryName, chunk );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t}\n\n\taddAssetFileToEntrypoint( compilation: Compilation, entryName: string, chunk: Chunk ) {\n\t\tconst chunkJSFile = this.getFileFromChunk( chunk );\n\n\t\tif ( ! chunkJSFile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformEntryNameToHandle = this.options.handle;\n\n\t\tconst entryHandle = transformEntryNameToHandle( entryName );\n\t\tconst depsHandles = this.getDepsHandlesFromChunk( compilation, chunk );\n\n\t\tconst assetFilePath = createAssetFilePath(\n\t\t\tcompilation.getPath( '[file]', { filename: chunkJSFile } )\n\t\t);\n\n\t\t// Add source and file into compilation for webpack to output.\n\t\tcompilation.assets[ assetFilePath ] = new sources.RawSource(\n\t\t\tgetAssetFileContent( entryHandle, depsHandles )\n\t\t);\n\n\t\tchunk.files.add( assetFilePath );\n\t}\n\n\tgetDepsHandlesFromChunk( compilation: Compilation, chunk: Chunk ) {\n\t\tconst depsSet = new Set<string>();\n\n\t\tcompilation.chunkGraph.getChunkModules( chunk ).forEach( ( module ) => {\n\t\t\t// There are some issues with types in webpack, so we need to cast it.\n\t\t\tconst theModule = module as Module;\n\n\t\t\t[ ...( theModule.modules || [] ), theModule ].forEach( ( subModule ) => {\n\t\t\t\tconst depHandle = transformRequestToHandle( subModule.userRequest, this.options.map );\n\n\t\t\t\tif ( depHandle ) {\n\t\t\t\t\tdepsSet.add( depHandle );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn [ ...depsSet ];\n\t}\n\n\tgetFileFromChunk( chunk: Chunk ) {\n\t\treturn [ ...chunk.files ].find( ( f ) => /\\.js$/i.test( f ) );\n\t}\n}\n","import { RequestToHandleMap } from './types';\n\nexport function getAssetFileContent( entryHandle: string, depsHandles: string[] ) {\n\tconst depsAsString = depsHandles\n\t\t.filter( ( dep ) => dep !== entryHandle )\n\t\t.sort()\n\t\t.map( ( dep ) => `'${ dep }',` )\n\t\t.join( '\\n\\t\\t' );\n\n\treturn `<?php\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n/**\n * This file is generated by Webpack, do not edit it directly.\n */\nreturn [\n\t'handle' => '${ entryHandle }',\n\t'deps' => [\n\t\t${ depsAsString }\n\t],\n];\n`;\n}\n\nexport function transformRequestToHandle( request: string | undefined, map: RequestToHandleMap ) {\n\tif ( ! request ) {\n\t\treturn request;\n\t}\n\n\tfor ( const item of map ) {\n\t\tlet { request: requestRegex, handle } = item;\n\n\t\tif ( ! ( requestRegex instanceof RegExp ) ) {\n\t\t\trequestRegex = new RegExp( `^${ requestRegex }$` );\n\t\t}\n\n\t\tconst matches = request.match( requestRegex );\n\n\t\tif ( matches ) {\n\t\t\treturn request.replace( requestRegex, handle );\n\t\t}\n\t}\n}\n\nexport function createAssetFilePath( path: string, suffix = '.asset.php' ) {\n\treturn path.replace( /(\\.min)?\\.js$/i, suffix );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,qBAAsD;;;ACA/C,SAAS,oBAAqB,aAAqB,aAAwB;AACjF,QAAM,eAAe,YACnB,OAAQ,CAAE,QAAS,QAAQ,WAAY,EACvC,KAAK,EACL,IAAK,CAAE,QAAS,IAAK,GAAI,IAAK,EAC9B,KAAM,MAAS;AAEjB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAQS,WAAY;AAAA;AAAA,IAExB,YAAa;AAAA;AAAA;AAAA;AAIlB;AAEO,SAAS,yBAA0B,SAA6B,KAA0B;AAChG,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,aAAY,QAAQ,KAAM;AACzB,QAAI,EAAE,SAAS,cAAc,OAAO,IAAI;AAExC,QAAK,EAAI,wBAAwB,SAAW;AAC3C,qBAAe,IAAI,OAAQ,IAAK,YAAa,GAAI;AAAA,IAClD;AAEA,UAAM,UAAU,QAAQ,MAAO,YAAa;AAE5C,QAAK,SAAU;AACd,aAAO,QAAQ,QAAS,cAAc,MAAO;AAAA,IAC9C;AAAA,EACD;AACD;AAEO,SAAS,oBAAqB,MAAc,SAAS,cAAe;AAC1E,SAAO,KAAK,QAAS,kBAAkB,MAAO;AAC/C;;;AD/BA,IAAqB,0CAArB,MAA6D;AAAA,EAC5D;AAAA,EAEA,YAAa,SAAmB;AAC/B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAO,UAAqB;AAC3B,aAAS,MAAM,gBAAgB,IAAK,KAAK,YAAY,MAAM,CAAE,gBAAiB;AAC7E,kBAAY,MAAM,cAAc,IAAK,EAAE,MAAM,KAAK,YAAY,KAAK,GAAG,MAAM;AAC3E,SAAE,GAAG,YAAY,WAAY,EAAE,QAAS,CAAE,CAAE,WAAW,UAAW,MAAO;AACxE,gBAAM,QAAQ,WAAW,OAAO,KAAM,CAAE,EAAE,KAAK,MAAO,SAAS,SAAU;AAEzE,cAAK,CAAE,OAAQ;AACd;AAAA,UACD;AAEA,eAAK,yBAA0B,aAAa,WAAW,KAAM;AAAA,QAC9D,CAAE;AAAA,MACH,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAAA,EAEA,yBAA0B,aAA0B,WAAmB,OAAe;AACrF,UAAM,cAAc,KAAK,iBAAkB,KAAM;AAEjD,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AAEA,UAAM,6BAA6B,KAAK,QAAQ;AAEhD,UAAM,cAAc,2BAA4B,SAAU;AAC1D,UAAM,cAAc,KAAK,wBAAyB,aAAa,KAAM;AAErE,UAAM,gBAAgB;AAAA,MACrB,YAAY,QAAS,UAAU,EAAE,UAAU,YAAY,CAAE;AAAA,IAC1D;AAGA,gBAAY,OAAQ,aAAc,IAAI,IAAI,uBAAQ;AAAA,MACjD,oBAAqB,aAAa,WAAY;AAAA,IAC/C;AAEA,UAAM,MAAM,IAAK,aAAc;AAAA,EAChC;AAAA,EAEA,wBAAyB,aAA0B,OAAe;AACjE,UAAM,UAAU,oBAAI,IAAY;AAEhC,gBAAY,WAAW,gBAAiB,KAAM,EAAE,QAAS,CAAEA,YAAY;AAEtE,YAAM,YAAYA;AAElB,OAAE,GAAK,UAAU,WAAW,CAAC,GAAK,SAAU,EAAE,QAAS,CAAE,cAAe;AACvE,cAAM,YAAY,yBAA0B,UAAU,aAAa,KAAK,QAAQ,GAAI;AAEpF,YAAK,WAAY;AAChB,kBAAQ,IAAK,SAAU;AAAA,QACxB;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAEF,WAAO,CAAE,GAAG,OAAQ;AAAA,EACrB;AAAA,EAEA,iBAAkB,OAAe;AAChC,WAAO,CAAE,GAAG,MAAM,KAAM,EAAE,KAAM,CAAE,MAAO,SAAS,KAAM,CAAE,CAAE;AAAA,EAC7D;AACD;","names":["module"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/utils.ts"],"sourcesContent":["export { default as GenerateWordPressAssetFileWebpackPlugin } from './plugin';\n","// Inspired by \"Dependency Extraction Webpack Plugin\" by @wordpress team.\n// Link: https://github.com/WordPress/gutenberg/tree/trunk/packages/dependency-extraction-webpack-plugin\nimport { sources, Compilation, Compiler, Chunk } from 'webpack';\nimport { createAssetFilePath, getAssetFileContent, transformRequestToHandle } from './utils';\nimport { RequestToHandleMap } from './types';\n\ntype Options = {\n\thandle: ( entryName: string ) => string;\n\tmap: RequestToHandleMap;\n};\n\ntype Module = {\n\tuserRequest?: string;\n\tmodules?: Module[];\n};\n\nexport default class GenerateWordPressAssetFileWebpackPlugin {\n\toptions: Options;\n\n\tconstructor( options: Options ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ) {\n\t\tcompiler.hooks.thisCompilation.tap( this.constructor.name, ( compilation ) => {\n\t\t\tcompilation.hooks.processAssets.tap( { name: this.constructor.name }, () => {\n\t\t\t\t[ ...compilation.entrypoints ].forEach( ( [ entryName, entrypoint ] ) => {\n\t\t\t\t\tconst chunk = entrypoint.chunks.find( ( { name } ) => name === entryName );\n\n\t\t\t\t\tif ( ! chunk ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.addAssetFileToEntrypoint( compilation, entryName, chunk );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t}\n\n\taddAssetFileToEntrypoint( compilation: Compilation, entryName: string, chunk: Chunk ) {\n\t\tconst chunkJSFile = this.getFileFromChunk( chunk );\n\n\t\tif ( ! chunkJSFile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformEntryNameToHandle = this.options.handle;\n\n\t\tconst entryHandle = transformEntryNameToHandle( entryName );\n\t\tconst depsHandles = this.getDepsHandlesFromChunk( compilation, chunk );\n\n\t\tconst assetFilePath = createAssetFilePath( compilation.getPath( '[file]', { filename: chunkJSFile } ) );\n\n\t\t// Add source and file into compilation for webpack to output.\n\t\tcompilation.assets[ assetFilePath ] = new sources.RawSource( getAssetFileContent( entryHandle, depsHandles ) );\n\n\t\tchunk.files.add( assetFilePath );\n\t}\n\n\tgetDepsHandlesFromChunk( compilation: Compilation, chunk: Chunk ) {\n\t\tconst depsSet = new Set< string >();\n\n\t\tcompilation.chunkGraph.getChunkModules( chunk ).forEach( ( module ) => {\n\t\t\t// There are some issues with types in webpack, so we need to cast it.\n\t\t\tconst theModule = module as Module;\n\n\t\t\t[ ...( theModule.modules || [] ), theModule ].forEach( ( subModule ) => {\n\t\t\t\tconst depHandle = transformRequestToHandle( subModule.userRequest, this.options.map );\n\n\t\t\t\tif ( depHandle ) {\n\t\t\t\t\tdepsSet.add( depHandle );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn [ ...depsSet ];\n\t}\n\n\tgetFileFromChunk( chunk: Chunk ) {\n\t\treturn [ ...chunk.files ].find( ( f ) => /\\.js$/i.test( f ) );\n\t}\n}\n","import { RequestToHandleMap } from './types';\n\nexport function getAssetFileContent( entryHandle: string, depsHandles: string[] ) {\n\tconst depsAsString = depsHandles\n\t\t.filter( ( dep ) => dep !== entryHandle )\n\t\t.sort()\n\t\t.map( ( dep ) => `'${ dep }',` )\n\t\t.join( '\\n\\t\\t' );\n\n\treturn `<?php\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n/**\n * This file is generated by Webpack, do not edit it directly.\n */\nreturn [\n\t'handle' => '${ entryHandle }',\n\t'deps' => [\n\t\t${ depsAsString }\n\t],\n];\n`;\n}\n\nexport function transformRequestToHandle( request: string | undefined, map: RequestToHandleMap ) {\n\tif ( ! request ) {\n\t\treturn request;\n\t}\n\n\tfor ( const item of map ) {\n\t\tlet { request: requestRegex, handle } = item;\n\n\t\tif ( ! ( requestRegex instanceof RegExp ) ) {\n\t\t\trequestRegex = new RegExp( `^${ requestRegex }$` );\n\t\t}\n\n\t\tconst matches = request.match( requestRegex );\n\n\t\tif ( matches ) {\n\t\t\treturn request.replace( requestRegex, handle );\n\t\t}\n\t}\n}\n\nexport function createAssetFilePath( path: string, suffix = '.asset.php' ) {\n\treturn path.replace( /(\\.min)?\\.js$/i, suffix );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,qBAAsD;;;ACA/C,SAAS,oBAAqB,aAAqB,aAAwB;AACjF,QAAM,eAAe,YACnB,OAAQ,CAAE,QAAS,QAAQ,WAAY,EACvC,KAAK,EACL,IAAK,CAAE,QAAS,IAAK,GAAI,IAAK,EAC9B,KAAM,MAAS;AAEjB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAQS,WAAY;AAAA;AAAA,IAExB,YAAa;AAAA;AAAA;AAAA;AAIlB;AAEO,SAAS,yBAA0B,SAA6B,KAA0B;AAChG,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,aAAY,QAAQ,KAAM;AACzB,QAAI,EAAE,SAAS,cAAc,OAAO,IAAI;AAExC,QAAK,EAAI,wBAAwB,SAAW;AAC3C,qBAAe,IAAI,OAAQ,IAAK,YAAa,GAAI;AAAA,IAClD;AAEA,UAAM,UAAU,QAAQ,MAAO,YAAa;AAE5C,QAAK,SAAU;AACd,aAAO,QAAQ,QAAS,cAAc,MAAO;AAAA,IAC9C;AAAA,EACD;AACD;AAEO,SAAS,oBAAqB,MAAc,SAAS,cAAe;AAC1E,SAAO,KAAK,QAAS,kBAAkB,MAAO;AAC/C;;;AD/BA,IAAqB,0CAArB,MAA6D;AAAA,EAC5D;AAAA,EAEA,YAAa,SAAmB;AAC/B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAO,UAAqB;AAC3B,aAAS,MAAM,gBAAgB,IAAK,KAAK,YAAY,MAAM,CAAE,gBAAiB;AAC7E,kBAAY,MAAM,cAAc,IAAK,EAAE,MAAM,KAAK,YAAY,KAAK,GAAG,MAAM;AAC3E,SAAE,GAAG,YAAY,WAAY,EAAE,QAAS,CAAE,CAAE,WAAW,UAAW,MAAO;AACxE,gBAAM,QAAQ,WAAW,OAAO,KAAM,CAAE,EAAE,KAAK,MAAO,SAAS,SAAU;AAEzE,cAAK,CAAE,OAAQ;AACd;AAAA,UACD;AAEA,eAAK,yBAA0B,aAAa,WAAW,KAAM;AAAA,QAC9D,CAAE;AAAA,MACH,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAAA,EAEA,yBAA0B,aAA0B,WAAmB,OAAe;AACrF,UAAM,cAAc,KAAK,iBAAkB,KAAM;AAEjD,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AAEA,UAAM,6BAA6B,KAAK,QAAQ;AAEhD,UAAM,cAAc,2BAA4B,SAAU;AAC1D,UAAM,cAAc,KAAK,wBAAyB,aAAa,KAAM;AAErE,UAAM,gBAAgB,oBAAqB,YAAY,QAAS,UAAU,EAAE,UAAU,YAAY,CAAE,CAAE;AAGtG,gBAAY,OAAQ,aAAc,IAAI,IAAI,uBAAQ,UAAW,oBAAqB,aAAa,WAAY,CAAE;AAE7G,UAAM,MAAM,IAAK,aAAc;AAAA,EAChC;AAAA,EAEA,wBAAyB,aAA0B,OAAe;AACjE,UAAM,UAAU,oBAAI,IAAc;AAElC,gBAAY,WAAW,gBAAiB,KAAM,EAAE,QAAS,CAAEA,YAAY;AAEtE,YAAM,YAAYA;AAElB,OAAE,GAAK,UAAU,WAAW,CAAC,GAAK,SAAU,EAAE,QAAS,CAAE,cAAe;AACvE,cAAM,YAAY,yBAA0B,UAAU,aAAa,KAAK,QAAQ,GAAI;AAEpF,YAAK,WAAY;AAChB,kBAAQ,IAAK,SAAU;AAAA,QACxB;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAEF,WAAO,CAAE,GAAG,OAAQ;AAAA,EACrB;AAAA,EAEA,iBAAkB,OAAe;AAChC,WAAO,CAAE,GAAG,MAAM,KAAM,EAAE,KAAM,CAAE,MAAO,SAAS,KAAM,CAAE,CAAE;AAAA,EAC7D;AACD;","names":["module"]}
package/dist/index.mjs CHANGED
@@ -65,12 +65,8 @@ var GenerateWordPressAssetFileWebpackPlugin = class {
65
65
  const transformEntryNameToHandle = this.options.handle;
66
66
  const entryHandle = transformEntryNameToHandle(entryName);
67
67
  const depsHandles = this.getDepsHandlesFromChunk(compilation, chunk);
68
- const assetFilePath = createAssetFilePath(
69
- compilation.getPath("[file]", { filename: chunkJSFile })
70
- );
71
- compilation.assets[assetFilePath] = new sources.RawSource(
72
- getAssetFileContent(entryHandle, depsHandles)
73
- );
68
+ const assetFilePath = createAssetFilePath(compilation.getPath("[file]", { filename: chunkJSFile }));
69
+ compilation.assets[assetFilePath] = new sources.RawSource(getAssetFileContent(entryHandle, depsHandles));
74
70
  chunk.files.add(assetFilePath);
75
71
  }
76
72
  getDepsHandlesFromChunk(compilation, chunk) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin.ts","../src/utils.ts"],"sourcesContent":["// Inspired by \"Dependency Extraction Webpack Plugin\" by @wordpress team.\n// Link: https://github.com/WordPress/gutenberg/tree/trunk/packages/dependency-extraction-webpack-plugin\nimport { sources, Compilation, Compiler, Chunk } from 'webpack';\nimport { createAssetFilePath, getAssetFileContent, transformRequestToHandle } from './utils';\nimport { RequestToHandleMap } from './types';\n\ntype Options = {\n\thandle: ( entryName: string ) => string;\n\tmap: RequestToHandleMap\n}\n\ntype Module = {\n\tuserRequest?: string;\n\tmodules?: Module[];\n}\n\nexport default class GenerateWordPressAssetFileWebpackPlugin {\n\toptions: Options;\n\n\tconstructor( options: Options ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ) {\n\t\tcompiler.hooks.thisCompilation.tap( this.constructor.name, ( compilation ) => {\n\t\t\tcompilation.hooks.processAssets.tap( { name: this.constructor.name }, () => {\n\t\t\t\t[ ...compilation.entrypoints ].forEach( ( [ entryName, entrypoint ] ) => {\n\t\t\t\t\tconst chunk = entrypoint.chunks.find( ( { name } ) => name === entryName );\n\n\t\t\t\t\tif ( ! chunk ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.addAssetFileToEntrypoint( compilation, entryName, chunk );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t}\n\n\taddAssetFileToEntrypoint( compilation: Compilation, entryName: string, chunk: Chunk ) {\n\t\tconst chunkJSFile = this.getFileFromChunk( chunk );\n\n\t\tif ( ! chunkJSFile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformEntryNameToHandle = this.options.handle;\n\n\t\tconst entryHandle = transformEntryNameToHandle( entryName );\n\t\tconst depsHandles = this.getDepsHandlesFromChunk( compilation, chunk );\n\n\t\tconst assetFilePath = createAssetFilePath(\n\t\t\tcompilation.getPath( '[file]', { filename: chunkJSFile } )\n\t\t);\n\n\t\t// Add source and file into compilation for webpack to output.\n\t\tcompilation.assets[ assetFilePath ] = new sources.RawSource(\n\t\t\tgetAssetFileContent( entryHandle, depsHandles )\n\t\t);\n\n\t\tchunk.files.add( assetFilePath );\n\t}\n\n\tgetDepsHandlesFromChunk( compilation: Compilation, chunk: Chunk ) {\n\t\tconst depsSet = new Set<string>();\n\n\t\tcompilation.chunkGraph.getChunkModules( chunk ).forEach( ( module ) => {\n\t\t\t// There are some issues with types in webpack, so we need to cast it.\n\t\t\tconst theModule = module as Module;\n\n\t\t\t[ ...( theModule.modules || [] ), theModule ].forEach( ( subModule ) => {\n\t\t\t\tconst depHandle = transformRequestToHandle( subModule.userRequest, this.options.map );\n\n\t\t\t\tif ( depHandle ) {\n\t\t\t\t\tdepsSet.add( depHandle );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn [ ...depsSet ];\n\t}\n\n\tgetFileFromChunk( chunk: Chunk ) {\n\t\treturn [ ...chunk.files ].find( ( f ) => /\\.js$/i.test( f ) );\n\t}\n}\n","import { RequestToHandleMap } from './types';\n\nexport function getAssetFileContent( entryHandle: string, depsHandles: string[] ) {\n\tconst depsAsString = depsHandles\n\t\t.filter( ( dep ) => dep !== entryHandle )\n\t\t.sort()\n\t\t.map( ( dep ) => `'${ dep }',` )\n\t\t.join( '\\n\\t\\t' );\n\n\treturn `<?php\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n/**\n * This file is generated by Webpack, do not edit it directly.\n */\nreturn [\n\t'handle' => '${ entryHandle }',\n\t'deps' => [\n\t\t${ depsAsString }\n\t],\n];\n`;\n}\n\nexport function transformRequestToHandle( request: string | undefined, map: RequestToHandleMap ) {\n\tif ( ! request ) {\n\t\treturn request;\n\t}\n\n\tfor ( const item of map ) {\n\t\tlet { request: requestRegex, handle } = item;\n\n\t\tif ( ! ( requestRegex instanceof RegExp ) ) {\n\t\t\trequestRegex = new RegExp( `^${ requestRegex }$` );\n\t\t}\n\n\t\tconst matches = request.match( requestRegex );\n\n\t\tif ( matches ) {\n\t\t\treturn request.replace( requestRegex, handle );\n\t\t}\n\t}\n}\n\nexport function createAssetFilePath( path: string, suffix = '.asset.php' ) {\n\treturn path.replace( /(\\.min)?\\.js$/i, suffix );\n}\n"],"mappings":";AAEA,SAAS,eAA6C;;;ACA/C,SAAS,oBAAqB,aAAqB,aAAwB;AACjF,QAAM,eAAe,YACnB,OAAQ,CAAE,QAAS,QAAQ,WAAY,EACvC,KAAK,EACL,IAAK,CAAE,QAAS,IAAK,GAAI,IAAK,EAC9B,KAAM,MAAS;AAEjB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAQS,WAAY;AAAA;AAAA,IAExB,YAAa;AAAA;AAAA;AAAA;AAIlB;AAEO,SAAS,yBAA0B,SAA6B,KAA0B;AAChG,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,aAAY,QAAQ,KAAM;AACzB,QAAI,EAAE,SAAS,cAAc,OAAO,IAAI;AAExC,QAAK,EAAI,wBAAwB,SAAW;AAC3C,qBAAe,IAAI,OAAQ,IAAK,YAAa,GAAI;AAAA,IAClD;AAEA,UAAM,UAAU,QAAQ,MAAO,YAAa;AAE5C,QAAK,SAAU;AACd,aAAO,QAAQ,QAAS,cAAc,MAAO;AAAA,IAC9C;AAAA,EACD;AACD;AAEO,SAAS,oBAAqB,MAAc,SAAS,cAAe;AAC1E,SAAO,KAAK,QAAS,kBAAkB,MAAO;AAC/C;;;AD/BA,IAAqB,0CAArB,MAA6D;AAAA,EAC5D;AAAA,EAEA,YAAa,SAAmB;AAC/B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAO,UAAqB;AAC3B,aAAS,MAAM,gBAAgB,IAAK,KAAK,YAAY,MAAM,CAAE,gBAAiB;AAC7E,kBAAY,MAAM,cAAc,IAAK,EAAE,MAAM,KAAK,YAAY,KAAK,GAAG,MAAM;AAC3E,SAAE,GAAG,YAAY,WAAY,EAAE,QAAS,CAAE,CAAE,WAAW,UAAW,MAAO;AACxE,gBAAM,QAAQ,WAAW,OAAO,KAAM,CAAE,EAAE,KAAK,MAAO,SAAS,SAAU;AAEzE,cAAK,CAAE,OAAQ;AACd;AAAA,UACD;AAEA,eAAK,yBAA0B,aAAa,WAAW,KAAM;AAAA,QAC9D,CAAE;AAAA,MACH,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAAA,EAEA,yBAA0B,aAA0B,WAAmB,OAAe;AACrF,UAAM,cAAc,KAAK,iBAAkB,KAAM;AAEjD,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AAEA,UAAM,6BAA6B,KAAK,QAAQ;AAEhD,UAAM,cAAc,2BAA4B,SAAU;AAC1D,UAAM,cAAc,KAAK,wBAAyB,aAAa,KAAM;AAErE,UAAM,gBAAgB;AAAA,MACrB,YAAY,QAAS,UAAU,EAAE,UAAU,YAAY,CAAE;AAAA,IAC1D;AAGA,gBAAY,OAAQ,aAAc,IAAI,IAAI,QAAQ;AAAA,MACjD,oBAAqB,aAAa,WAAY;AAAA,IAC/C;AAEA,UAAM,MAAM,IAAK,aAAc;AAAA,EAChC;AAAA,EAEA,wBAAyB,aAA0B,OAAe;AACjE,UAAM,UAAU,oBAAI,IAAY;AAEhC,gBAAY,WAAW,gBAAiB,KAAM,EAAE,QAAS,CAAE,WAAY;AAEtE,YAAM,YAAY;AAElB,OAAE,GAAK,UAAU,WAAW,CAAC,GAAK,SAAU,EAAE,QAAS,CAAE,cAAe;AACvE,cAAM,YAAY,yBAA0B,UAAU,aAAa,KAAK,QAAQ,GAAI;AAEpF,YAAK,WAAY;AAChB,kBAAQ,IAAK,SAAU;AAAA,QACxB;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAEF,WAAO,CAAE,GAAG,OAAQ;AAAA,EACrB;AAAA,EAEA,iBAAkB,OAAe;AAChC,WAAO,CAAE,GAAG,MAAM,KAAM,EAAE,KAAM,CAAE,MAAO,SAAS,KAAM,CAAE,CAAE;AAAA,EAC7D;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/plugin.ts","../src/utils.ts"],"sourcesContent":["// Inspired by \"Dependency Extraction Webpack Plugin\" by @wordpress team.\n// Link: https://github.com/WordPress/gutenberg/tree/trunk/packages/dependency-extraction-webpack-plugin\nimport { sources, Compilation, Compiler, Chunk } from 'webpack';\nimport { createAssetFilePath, getAssetFileContent, transformRequestToHandle } from './utils';\nimport { RequestToHandleMap } from './types';\n\ntype Options = {\n\thandle: ( entryName: string ) => string;\n\tmap: RequestToHandleMap;\n};\n\ntype Module = {\n\tuserRequest?: string;\n\tmodules?: Module[];\n};\n\nexport default class GenerateWordPressAssetFileWebpackPlugin {\n\toptions: Options;\n\n\tconstructor( options: Options ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ) {\n\t\tcompiler.hooks.thisCompilation.tap( this.constructor.name, ( compilation ) => {\n\t\t\tcompilation.hooks.processAssets.tap( { name: this.constructor.name }, () => {\n\t\t\t\t[ ...compilation.entrypoints ].forEach( ( [ entryName, entrypoint ] ) => {\n\t\t\t\t\tconst chunk = entrypoint.chunks.find( ( { name } ) => name === entryName );\n\n\t\t\t\t\tif ( ! chunk ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.addAssetFileToEntrypoint( compilation, entryName, chunk );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t}\n\n\taddAssetFileToEntrypoint( compilation: Compilation, entryName: string, chunk: Chunk ) {\n\t\tconst chunkJSFile = this.getFileFromChunk( chunk );\n\n\t\tif ( ! chunkJSFile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformEntryNameToHandle = this.options.handle;\n\n\t\tconst entryHandle = transformEntryNameToHandle( entryName );\n\t\tconst depsHandles = this.getDepsHandlesFromChunk( compilation, chunk );\n\n\t\tconst assetFilePath = createAssetFilePath( compilation.getPath( '[file]', { filename: chunkJSFile } ) );\n\n\t\t// Add source and file into compilation for webpack to output.\n\t\tcompilation.assets[ assetFilePath ] = new sources.RawSource( getAssetFileContent( entryHandle, depsHandles ) );\n\n\t\tchunk.files.add( assetFilePath );\n\t}\n\n\tgetDepsHandlesFromChunk( compilation: Compilation, chunk: Chunk ) {\n\t\tconst depsSet = new Set< string >();\n\n\t\tcompilation.chunkGraph.getChunkModules( chunk ).forEach( ( module ) => {\n\t\t\t// There are some issues with types in webpack, so we need to cast it.\n\t\t\tconst theModule = module as Module;\n\n\t\t\t[ ...( theModule.modules || [] ), theModule ].forEach( ( subModule ) => {\n\t\t\t\tconst depHandle = transformRequestToHandle( subModule.userRequest, this.options.map );\n\n\t\t\t\tif ( depHandle ) {\n\t\t\t\t\tdepsSet.add( depHandle );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn [ ...depsSet ];\n\t}\n\n\tgetFileFromChunk( chunk: Chunk ) {\n\t\treturn [ ...chunk.files ].find( ( f ) => /\\.js$/i.test( f ) );\n\t}\n}\n","import { RequestToHandleMap } from './types';\n\nexport function getAssetFileContent( entryHandle: string, depsHandles: string[] ) {\n\tconst depsAsString = depsHandles\n\t\t.filter( ( dep ) => dep !== entryHandle )\n\t\t.sort()\n\t\t.map( ( dep ) => `'${ dep }',` )\n\t\t.join( '\\n\\t\\t' );\n\n\treturn `<?php\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n/**\n * This file is generated by Webpack, do not edit it directly.\n */\nreturn [\n\t'handle' => '${ entryHandle }',\n\t'deps' => [\n\t\t${ depsAsString }\n\t],\n];\n`;\n}\n\nexport function transformRequestToHandle( request: string | undefined, map: RequestToHandleMap ) {\n\tif ( ! request ) {\n\t\treturn request;\n\t}\n\n\tfor ( const item of map ) {\n\t\tlet { request: requestRegex, handle } = item;\n\n\t\tif ( ! ( requestRegex instanceof RegExp ) ) {\n\t\t\trequestRegex = new RegExp( `^${ requestRegex }$` );\n\t\t}\n\n\t\tconst matches = request.match( requestRegex );\n\n\t\tif ( matches ) {\n\t\t\treturn request.replace( requestRegex, handle );\n\t\t}\n\t}\n}\n\nexport function createAssetFilePath( path: string, suffix = '.asset.php' ) {\n\treturn path.replace( /(\\.min)?\\.js$/i, suffix );\n}\n"],"mappings":";AAEA,SAAS,eAA6C;;;ACA/C,SAAS,oBAAqB,aAAqB,aAAwB;AACjF,QAAM,eAAe,YACnB,OAAQ,CAAE,QAAS,QAAQ,WAAY,EACvC,KAAK,EACL,IAAK,CAAE,QAAS,IAAK,GAAI,IAAK,EAC9B,KAAM,MAAS;AAEjB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAQS,WAAY;AAAA;AAAA,IAExB,YAAa;AAAA;AAAA;AAAA;AAIlB;AAEO,SAAS,yBAA0B,SAA6B,KAA0B;AAChG,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,aAAY,QAAQ,KAAM;AACzB,QAAI,EAAE,SAAS,cAAc,OAAO,IAAI;AAExC,QAAK,EAAI,wBAAwB,SAAW;AAC3C,qBAAe,IAAI,OAAQ,IAAK,YAAa,GAAI;AAAA,IAClD;AAEA,UAAM,UAAU,QAAQ,MAAO,YAAa;AAE5C,QAAK,SAAU;AACd,aAAO,QAAQ,QAAS,cAAc,MAAO;AAAA,IAC9C;AAAA,EACD;AACD;AAEO,SAAS,oBAAqB,MAAc,SAAS,cAAe;AAC1E,SAAO,KAAK,QAAS,kBAAkB,MAAO;AAC/C;;;AD/BA,IAAqB,0CAArB,MAA6D;AAAA,EAC5D;AAAA,EAEA,YAAa,SAAmB;AAC/B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAO,UAAqB;AAC3B,aAAS,MAAM,gBAAgB,IAAK,KAAK,YAAY,MAAM,CAAE,gBAAiB;AAC7E,kBAAY,MAAM,cAAc,IAAK,EAAE,MAAM,KAAK,YAAY,KAAK,GAAG,MAAM;AAC3E,SAAE,GAAG,YAAY,WAAY,EAAE,QAAS,CAAE,CAAE,WAAW,UAAW,MAAO;AACxE,gBAAM,QAAQ,WAAW,OAAO,KAAM,CAAE,EAAE,KAAK,MAAO,SAAS,SAAU;AAEzE,cAAK,CAAE,OAAQ;AACd;AAAA,UACD;AAEA,eAAK,yBAA0B,aAAa,WAAW,KAAM;AAAA,QAC9D,CAAE;AAAA,MACH,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAAA,EAEA,yBAA0B,aAA0B,WAAmB,OAAe;AACrF,UAAM,cAAc,KAAK,iBAAkB,KAAM;AAEjD,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AAEA,UAAM,6BAA6B,KAAK,QAAQ;AAEhD,UAAM,cAAc,2BAA4B,SAAU;AAC1D,UAAM,cAAc,KAAK,wBAAyB,aAAa,KAAM;AAErE,UAAM,gBAAgB,oBAAqB,YAAY,QAAS,UAAU,EAAE,UAAU,YAAY,CAAE,CAAE;AAGtG,gBAAY,OAAQ,aAAc,IAAI,IAAI,QAAQ,UAAW,oBAAqB,aAAa,WAAY,CAAE;AAE7G,UAAM,MAAM,IAAK,aAAc;AAAA,EAChC;AAAA,EAEA,wBAAyB,aAA0B,OAAe;AACjE,UAAM,UAAU,oBAAI,IAAc;AAElC,gBAAY,WAAW,gBAAiB,KAAM,EAAE,QAAS,CAAE,WAAY;AAEtE,YAAM,YAAY;AAElB,OAAE,GAAK,UAAU,WAAW,CAAC,GAAK,SAAU,EAAE,QAAS,CAAE,cAAe;AACvE,cAAM,YAAY,yBAA0B,UAAU,aAAa,KAAK,QAAQ,GAAI;AAEpF,YAAK,WAAY;AAChB,kBAAQ,IAAK,SAAU;AAAA,QACxB;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAEF,WAAO,CAAE,GAAG,OAAQ;AAAA,EACrB;AAAA,EAEA,iBAAkB,OAAe;AAChC,WAAO,CAAE,GAAG,MAAM,KAAM,EAAE,KAAM,CAAE,MAAO,SAAS,KAAM,CAAE,CAAE;AAAA,EAC7D;AACD;","names":[]}
package/package.json CHANGED
@@ -1,38 +1,45 @@
1
1
  {
2
- "name": "@elementor/generate-wordpress-asset-file-webpack-plugin",
3
- "version": "0.3.1",
4
- "private": false,
5
- "author": "Elementor Team",
6
- "homepage": "https://elementor.com/",
7
- "license": "GPL-3.0-or-later",
8
- "main": "dist/index.js",
9
- "module": "dist/index.mjs",
10
- "types": "dist/index.d.ts",
11
- "exports": {
12
- ".": {
13
- "import": "./dist/index.mjs",
14
- "require": "./dist/index.js",
15
- "types": "./dist/index.d.ts"
16
- },
17
- "./package.json": "./package.json"
18
- },
19
- "repository": {
20
- "type": "git",
21
- "url": "https://github.com/elementor/elementor-packages.git",
22
- "directory": "packages/tools/generated-wordpress-asset-file-webpack-plugin"
23
- },
24
- "bugs": {
25
- "url": "https://github.com/elementor/elementor-packages/issues"
26
- },
27
- "publishConfig": {
28
- "access": "public"
29
- },
30
- "scripts": {
31
- "build": "tsup --config=../../tsup.build.ts",
32
- "dev": "tsup --config=../../tsup.dev.ts --format=esm,cjs"
33
- },
34
- "peerDependencies": {
35
- "webpack": "5.x"
36
- },
37
- "gitHead": "c692bd825e856d1ac04f671b425a57c1b8466512"
2
+ "name": "@elementor/generate-wordpress-asset-file-webpack-plugin",
3
+ "version": "0.3.3",
4
+ "private": false,
5
+ "author": "Elementor Team",
6
+ "homepage": "https://elementor.com/",
7
+ "license": "GPL-3.0-or-later",
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.mjs",
10
+ "types": "dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.mjs",
14
+ "require": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/elementor/elementor-packages.git",
22
+ "directory": "packages/tools/generated-wordpress-asset-file-webpack-plugin"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/elementor/elementor-packages/issues"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "files": [
31
+ "README.md",
32
+ "CHANGELOG.md",
33
+ "/dist",
34
+ "/src",
35
+ "!**/__tests__"
36
+ ],
37
+ "scripts": {
38
+ "build": "tsup --config=../../tsup.build.ts",
39
+ "dev": "tsup --config=../../tsup.dev.ts --format=esm,cjs"
40
+ },
41
+ "peerDependencies": {
42
+ "webpack": "5.x"
43
+ },
44
+ "gitHead": "f4ca33da0842a29d83736d0a173633085edddaee"
38
45
  }
package/src/plugin.ts CHANGED
@@ -6,13 +6,13 @@ import { RequestToHandleMap } from './types';
6
6
 
7
7
  type Options = {
8
8
  handle: ( entryName: string ) => string;
9
- map: RequestToHandleMap
10
- }
9
+ map: RequestToHandleMap;
10
+ };
11
11
 
12
12
  type Module = {
13
13
  userRequest?: string;
14
14
  modules?: Module[];
15
- }
15
+ };
16
16
 
17
17
  export default class GenerateWordPressAssetFileWebpackPlugin {
18
18
  options: Options;
@@ -49,20 +49,16 @@ export default class GenerateWordPressAssetFileWebpackPlugin {
49
49
  const entryHandle = transformEntryNameToHandle( entryName );
50
50
  const depsHandles = this.getDepsHandlesFromChunk( compilation, chunk );
51
51
 
52
- const assetFilePath = createAssetFilePath(
53
- compilation.getPath( '[file]', { filename: chunkJSFile } )
54
- );
52
+ const assetFilePath = createAssetFilePath( compilation.getPath( '[file]', { filename: chunkJSFile } ) );
55
53
 
56
54
  // Add source and file into compilation for webpack to output.
57
- compilation.assets[ assetFilePath ] = new sources.RawSource(
58
- getAssetFileContent( entryHandle, depsHandles )
59
- );
55
+ compilation.assets[ assetFilePath ] = new sources.RawSource( getAssetFileContent( entryHandle, depsHandles ) );
60
56
 
61
57
  chunk.files.add( assetFilePath );
62
58
  }
63
59
 
64
60
  getDepsHandlesFromChunk( compilation: Compilation, chunk: Chunk ) {
65
- const depsSet = new Set<string>();
61
+ const depsSet = new Set< string >();
66
62
 
67
63
  compilation.chunkGraph.getChunkModules( chunk ).forEach( ( module ) => {
68
64
  // There are some issues with types in webpack, so we need to cast it.
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type RequestToHandleMap = Array<{
2
- request: string | RegExp,
3
- handle: string
4
- }>
1
+ export type RequestToHandleMap = Array< {
2
+ request: string | RegExp;
3
+ handle: string;
4
+ } >;
@@ -1,61 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`@elementor/generate-wordpress-asset-file-webpack-plugin should generate assets files: app.asset.php 1`] = `
4
- "<?php
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit;
7
- }
8
- /**
9
- * This file is generated by Webpack, do not edit it directly.
10
- */
11
- return [
12
- 'handle' => 'elementor-v2-app',
13
- 'deps' => [
14
- 'elementor-v2-editor',
15
- 'react',
16
- 'react-dom',
17
- 'wp-element',
18
- ],
19
- ];
20
- "
21
- `;
22
-
23
- exports[`@elementor/generate-wordpress-asset-file-webpack-plugin should generate assets files: extension.asset.php 1`] = `
24
- "<?php
25
- if ( ! defined( 'ABSPATH' ) ) {
26
- exit;
27
- }
28
- /**
29
- * This file is generated by Webpack, do not edit it directly.
30
- */
31
- return [
32
- 'handle' => 'elementor-v2-extension',
33
- 'deps' => [
34
- 'elementor-v2-editor',
35
- 'react',
36
- 'react-dom',
37
- 'wp-element',
38
- ],
39
- ];
40
- "
41
- `;
42
-
43
- exports[`@elementor/generate-wordpress-asset-file-webpack-plugin should generate assets files: util.asset.php 1`] = `
44
- "<?php
45
- if ( ! defined( 'ABSPATH' ) ) {
46
- exit;
47
- }
48
- /**
49
- * This file is generated by Webpack, do not edit it directly.
50
- */
51
- return [
52
- 'handle' => 'elementor-v2-util',
53
- 'deps' => [
54
- 'elementor-v2-editor',
55
- 'react',
56
- 'react-dom',
57
- 'wp-element',
58
- ],
59
- ];
60
- "
61
- `;
@@ -1,95 +0,0 @@
1
- /**
2
- * @jest-environment node
3
- */
4
-
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import { webpack } from 'webpack';
8
- import { GenerateWordPressAssetFileWebpackPlugin } from '../index';
9
- import { vol } from 'memfs';
10
-
11
- jest.mock( 'fs', () => jest.requireActual( 'memfs' ) );
12
-
13
- describe( '@elementor/generate-wordpress-asset-file-webpack-plugin', () => {
14
- beforeEach( () => {
15
- const fileContent = `
16
- import elementor from '@elementor/editor';
17
- import wp from '@wordpress/element';
18
- import other from '@other/package';
19
- import react from 'react';
20
- import ReactDOM from 'react-dom';
21
-
22
- elementor();
23
- wp();
24
- other();
25
- `;
26
-
27
- fs.writeFileSync( path.resolve( '/app.js' ), fileContent );
28
- fs.writeFileSync( path.resolve( '/extension.js' ), fileContent );
29
- fs.writeFileSync( path.resolve( '/util.js' ), fileContent );
30
- } );
31
-
32
- afterEach( () => {
33
- vol.reset();
34
- } );
35
-
36
- it( 'should generate assets files', ( done ) => {
37
- // Arrange.
38
- const compiler = webpack( {
39
- mode: 'development',
40
- entry: {
41
- app: path.resolve( '/app.js' ),
42
- extension: path.resolve( '/extension.js' ),
43
- util: path.resolve( '/util.js' ),
44
- },
45
- output: {
46
- filename: '[name].js',
47
- path: path.resolve( '/dist' ),
48
- },
49
- externals: {
50
- // Required so webpack won't try to resolve those packages, which don't exist.
51
- '@elementor/editor': 'editor',
52
- '@wordpress/element': 'wp',
53
- '@other/package': 'other',
54
- react: 'react',
55
- 'react-dom': 'reactDOM',
56
- },
57
- plugins: [
58
- new GenerateWordPressAssetFileWebpackPlugin( {
59
- handle: ( entryName ) => `elementor-v2-${ entryName }`,
60
- map: [
61
- { request: 'react', handle: 'react' },
62
- { request: 'react-dom', handle: 'react-dom' },
63
- { request: /^@elementor\/(.+)$/, handle: 'elementor-v2-$1' },
64
- { request: /^@wordpress\/(.+)$/, handle: 'wp-$1' },
65
- ],
66
- } ),
67
- ],
68
- } );
69
-
70
- // Expect.
71
- expect.assertions( 6 );
72
-
73
- // Act.
74
- compiler.run( ( err, stats ) => {
75
- // Assert.
76
- expect( err ).toBe( null );
77
- expect( stats?.hasErrors() ).toBe( false );
78
- expect( stats?.hasWarnings() ).toBe( false );
79
-
80
- const files = [
81
- 'app.asset.php',
82
- 'extension.asset.php',
83
- 'util.asset.php',
84
- ];
85
-
86
- files.forEach( ( fileName ) => {
87
- const fileContent = fs.readFileSync( path.resolve( `/dist/${ fileName }` ), { encoding: 'utf8' } );
88
-
89
- expect( fileContent ).toMatchSnapshot( fileName );
90
- } );
91
-
92
- done();
93
- } );
94
- } );
95
- } );