@bundle-stats/plugin-webpack-filter 4.0.0-alpha.9 → 4.0.0-rc.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/lib/index.js CHANGED
@@ -1,51 +1,59 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const flow_1 = __importDefault(require("lodash/fp/flow"));
7
- const fromPairs_1 = __importDefault(require("lodash/fp/fromPairs"));
8
- const get_1 = __importDefault(require("lodash/fp/get"));
9
- const map_1 = __importDefault(require("lodash/fp/map"));
10
- const filter_1 = __importDefault(require("lodash/fp/filter"));
11
- const pick_1 = __importDefault(require("lodash/fp/pick"));
12
- const toPairs_1 = __importDefault(require("lodash/fp/toPairs"));
13
3
  const PATH_IGNORE_PATTERN = '.map$';
14
4
  exports.default = (source, options = {}) => {
15
- var _a;
16
5
  const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
17
- const builtAt = (0, get_1.default)('builtAt')(source);
18
- const hash = (0, get_1.default)('hash')(source);
19
- const assets = (0, flow_1.default)([
20
- (0, get_1.default)('assets'),
21
- (0, map_1.default)((0, pick_1.default)(['name', 'size'])),
22
- (0, filter_1.default)(({ name }) => name && !pathIgnorePattern.test(name)),
23
- ])(source);
24
- const entrypoints = (0, flow_1.default)([
25
- (0, get_1.default)('entrypoints'),
26
- toPairs_1.default,
27
- (0, map_1.default)(([key, value]) => [key, (0, pick_1.default)('assets')(value)]),
28
- fromPairs_1.default,
29
- ])(source);
30
- const chunks = (0, flow_1.default)([
31
- (0, get_1.default)('chunks'),
32
- (0, map_1.default)((0, pick_1.default)(['id', 'entry', 'initial', 'files', 'names'])),
33
- (0, filter_1.default)(({ id }) => id !== null && typeof id !== 'undefined'),
34
- ])(source);
35
- const modules = (_a = source === null || source === void 0 ? void 0 : source.modules) === null || _a === void 0 ? void 0 : _a.map(({ name, size, chunks: moduleChunks, modules: concatenatedModules }) => ({
36
- name,
37
- size,
38
- chunks: moduleChunks === null || moduleChunks === void 0 ? void 0 : moduleChunks.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined'),
39
- modules: concatenatedModules === null || concatenatedModules === void 0 ? void 0 : concatenatedModules.map((concatenatedModule) => ({
40
- name: concatenatedModule.name,
41
- size: concatenatedModule.size,
42
- })),
43
- }));
6
+ const { builtAt, hash } = source;
7
+ const assets = source.assets?.reduce((agg, asset) => {
8
+ if (!asset.name || pathIgnorePattern.test(asset.name)) {
9
+ return agg;
10
+ }
11
+ agg.push({
12
+ name: asset.name,
13
+ size: asset.size,
14
+ });
15
+ return agg;
16
+ }, []) || [];
17
+ const chunks = source.chunks?.reduce((agg, chunk) => {
18
+ if (typeof chunk.id === 'undefined' || chunk.id === null) {
19
+ return agg;
20
+ }
21
+ agg.push({
22
+ id: chunk.id,
23
+ entry: chunk.entry,
24
+ initial: chunk.initial,
25
+ files: chunk.files,
26
+ names: chunk.names,
27
+ });
28
+ return agg;
29
+ }, []) || [];
30
+ const modules = source.modules?.reduce((agg, moduleStats) => {
31
+ if (!moduleStats.name) {
32
+ return agg;
33
+ }
34
+ const moduleChunks = moduleStats.chunks?.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined') || [];
35
+ const concatenatedModules = moduleStats.modules?.reduce((aggConcatenatedModules, concatenatedModule) => {
36
+ if (!concatenatedModule.name) {
37
+ return aggConcatenatedModules;
38
+ }
39
+ aggConcatenatedModules.push({
40
+ name: concatenatedModule.name,
41
+ size: concatenatedModule.size,
42
+ });
43
+ return aggConcatenatedModules;
44
+ }, []);
45
+ agg.push({
46
+ name: moduleStats.name,
47
+ size: moduleStats.size,
48
+ chunks: moduleChunks,
49
+ ...(concatenatedModules && { modules: concatenatedModules }),
50
+ });
51
+ return agg;
52
+ }, []) || [];
44
53
  return {
45
54
  builtAt,
46
55
  hash,
47
56
  assets,
48
- entrypoints,
49
57
  chunks,
50
58
  modules,
51
59
  };
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAEA,0DAAkC;AAClC,oEAA4C;AAC5C,wDAAgC;AAChC,wDAAgC;AAChC,8DAAuC;AACvC,0DAAkC;AAClC,gEAAwC;AAExC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAoCpC,kBAAe,CACb,MAAwB,EAAE,UAA8B,EAAE,EACpC,EAAE;;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAGjC,MAAM,MAAM,GAAG,IAAA,cAAI,EAAC;QAClB,IAAA,aAAG,EAAC,QAAQ,CAAC;QACb,IAAA,aAAG,EAAC,IAAA,cAAI,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAE3B,IAAA,gBAAO,EAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC;QACvB,IAAA,aAAG,EAAC,aAAa,CAAC;QAClB,iBAAO;QACP,IAAA,aAAG,EAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAA,cAAI,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,mBAAS;KACV,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,MAAM,GAAG,IAAA,cAAI,EAAC;QAClB,IAAA,aAAG,EAAC,QAAQ,CAAC;QACb,IAAA,aAAG,EAAC,IAAA,cAAI,EAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvD,IAAA,gBAAO,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,WAAW,CAAC;KAC9D,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,GAAG,CAClC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI;QACJ,IAAI;QACJ,MAAM,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAAC;QAC7F,OAAO,EAAE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;SAC9B,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IAEF,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,WAAW;QACX,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,MAAM,mBAAmB,GAAG,OAAO,CAAC;AA6CpC,kBAAe,CACb,MAAwB,EACxB,UAA8B,EAAE,EACV,EAAE;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAGjC,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,IAAI,EAAE,CAAC;IAEnD,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,IAAI,EAAE,CAAC;IAEnD,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACrB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,YAAY,GAChB,WAAW,CAAC,MAAM,EAAE,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAChE,IAAI,EAAE,CAAC;QAEV,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CACrD,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,EAAE;YAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAC5B,OAAO,sBAAsB,CAAC;aAC/B;YAED,sBAAsB,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;aAC9B,CAAC,CAAC;YAEH,OAAO,sBAAsB,CAAC;QAChC,CAAC,EACD,EAAmD,CACpD,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,MAAM,EAAE,YAAY;YACpB,GAAG,CAAC,mBAAmB,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,IAAI,EAAE,CAAC;IAExD,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
package/lib-esm/index.js CHANGED
@@ -1,46 +1,59 @@
1
- import flow from 'lodash/fp/flow';
2
- import fromPairs from 'lodash/fp/fromPairs';
3
- import get from 'lodash/fp/get';
4
- import map from 'lodash/fp/map';
5
- import _filter from 'lodash/fp/filter';
6
- import pick from 'lodash/fp/pick';
7
- import toPairs from 'lodash/fp/toPairs';
8
1
  const PATH_IGNORE_PATTERN = '.map$';
9
2
  export default (source, options = {}) => {
10
- var _a;
3
+ var _a, _b, _c;
11
4
  const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
12
- const builtAt = get('builtAt')(source);
13
- const hash = get('hash')(source);
14
- const assets = flow([
15
- get('assets'),
16
- map(pick(['name', 'size'])),
17
- _filter(({ name }) => name && !pathIgnorePattern.test(name)),
18
- ])(source);
19
- const entrypoints = flow([
20
- get('entrypoints'),
21
- toPairs,
22
- map(([key, value]) => [key, pick('assets')(value)]),
23
- fromPairs,
24
- ])(source);
25
- const chunks = flow([
26
- get('chunks'),
27
- map(pick(['id', 'entry', 'initial', 'files', 'names'])),
28
- _filter(({ id }) => id !== null && typeof id !== 'undefined'),
29
- ])(source);
30
- const modules = (_a = source === null || source === void 0 ? void 0 : source.modules) === null || _a === void 0 ? void 0 : _a.map(({ name, size, chunks: moduleChunks, modules: concatenatedModules }) => ({
31
- name,
32
- size,
33
- chunks: moduleChunks === null || moduleChunks === void 0 ? void 0 : moduleChunks.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined'),
34
- modules: concatenatedModules === null || concatenatedModules === void 0 ? void 0 : concatenatedModules.map((concatenatedModule) => ({
35
- name: concatenatedModule.name,
36
- size: concatenatedModule.size,
37
- })),
38
- }));
5
+ const { builtAt, hash } = source;
6
+ const assets = ((_a = source.assets) === null || _a === void 0 ? void 0 : _a.reduce((agg, asset) => {
7
+ if (!asset.name || pathIgnorePattern.test(asset.name)) {
8
+ return agg;
9
+ }
10
+ agg.push({
11
+ name: asset.name,
12
+ size: asset.size,
13
+ });
14
+ return agg;
15
+ }, [])) || [];
16
+ const chunks = ((_b = source.chunks) === null || _b === void 0 ? void 0 : _b.reduce((agg, chunk) => {
17
+ if (typeof chunk.id === 'undefined' || chunk.id === null) {
18
+ return agg;
19
+ }
20
+ agg.push({
21
+ id: chunk.id,
22
+ entry: chunk.entry,
23
+ initial: chunk.initial,
24
+ files: chunk.files,
25
+ names: chunk.names,
26
+ });
27
+ return agg;
28
+ }, [])) || [];
29
+ const modules = ((_c = source.modules) === null || _c === void 0 ? void 0 : _c.reduce((agg, moduleStats) => {
30
+ var _a, _b;
31
+ if (!moduleStats.name) {
32
+ return agg;
33
+ }
34
+ const moduleChunks = ((_a = moduleStats.chunks) === null || _a === void 0 ? void 0 : _a.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined')) || [];
35
+ const concatenatedModules = (_b = moduleStats.modules) === null || _b === void 0 ? void 0 : _b.reduce((aggConcatenatedModules, concatenatedModule) => {
36
+ if (!concatenatedModule.name) {
37
+ return aggConcatenatedModules;
38
+ }
39
+ aggConcatenatedModules.push({
40
+ name: concatenatedModule.name,
41
+ size: concatenatedModule.size,
42
+ });
43
+ return aggConcatenatedModules;
44
+ }, []);
45
+ agg.push({
46
+ name: moduleStats.name,
47
+ size: moduleStats.size,
48
+ chunks: moduleChunks,
49
+ ...(concatenatedModules && { modules: concatenatedModules }),
50
+ });
51
+ return agg;
52
+ }, [])) || [];
39
53
  return {
40
54
  builtAt,
41
55
  hash,
42
56
  assets,
43
- entrypoints,
44
57
  chunks,
45
58
  modules,
46
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAoCpC,eAAe,CACb,MAAwB,EAAE,UAA8B,EAAE,EACpC,EAAE;;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAGjC,MAAM,MAAM,GAAG,IAAI,CAAC;QAClB,GAAG,CAAC,QAAQ,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAE3B,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,WAAW,GAAG,IAAI,CAAC;QACvB,GAAG,CAAC,aAAa,CAAC;QAClB,OAAO;QACP,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,SAAS;KACV,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,MAAM,GAAG,IAAI,CAAC;QAClB,GAAG,CAAC,QAAQ,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,WAAW,CAAC;KAC9D,CAAC,CAAC,MAAM,CAAC,CAAC;IAEX,MAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,GAAG,CAClC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI;QACJ,IAAI;QACJ,MAAM,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAAC;QAC7F,OAAO,EAAE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;SAC9B,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IAEF,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,WAAW;QACX,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAG,OAAO,CAAC;AA6CpC,eAAe,CACb,MAAwB,EACxB,UAA8B,EAAE,EACV,EAAE;;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAGjC,MAAM,MAAM,GACV,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,KAAI,EAAE,CAAC;IAEnD,MAAM,MAAM,GACV,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,KAAI,EAAE,CAAC;IAEnD,MAAM,OAAO,GACX,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACrB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,YAAY,GAChB,CAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAChE,KAAI,EAAE,CAAC;QAEV,MAAM,mBAAmB,GAAG,MAAA,WAAW,CAAC,OAAO,0CAAE,MAAM,CACrD,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,EAAE;YAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAC5B,OAAO,sBAAsB,CAAC;aAC/B;YAED,sBAAsB,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;aAC9B,CAAC,CAAC;YAEH,OAAO,sBAAsB,CAAC;QAChC,CAAC,EACD,EAAmD,CACpD,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,MAAM,EAAE,YAAY;YACpB,GAAG,CAAC,mBAAmB,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,KAAI,EAAE,CAAC;IAExD,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/plugin-webpack-filter",
3
- "version": "4.0.0-alpha.9",
3
+ "version": "4.0.0-rc.3",
4
4
  "description": "BundleStats webpack filter plugin",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -35,21 +35,18 @@
35
35
  },
36
36
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/plugin-webpack-filter#readme",
37
37
  "devDependencies": {
38
- "@types/jest": "28.1.2",
39
- "@types/lodash": "4.14.182",
38
+ "@types/jest": "28.1.4",
40
39
  "@types/webpack": "5.28.0",
41
- "core-js": "3.23.1",
40
+ "core-js": "3.23.4",
42
41
  "jest": "27.5.1",
43
- "jest-cli": "28.1.1",
42
+ "jest-cli": "28.1.2",
44
43
  "jest-date-mock": "1.0.8",
45
- "lodash": "4.17.21",
46
44
  "regenerator-runtime": "0.13.9",
47
45
  "ts-jest": "28.0.5",
48
46
  "typescript": "4.7.4"
49
47
  },
50
48
  "peerDependencies": {
51
- "core-js": "^3.0.0",
52
- "lodash": "^4.0.0"
49
+ "core-js": "^3.0.0"
53
50
  },
54
- "gitHead": "2efc8ee51f6b58a9fb5e1528902ad0b5f9b659a8"
51
+ "gitHead": "bac9d4ce57a0957bc13bb748906d33efff417c18"
55
52
  }
package/src/index.ts CHANGED
@@ -1,12 +1,5 @@
1
1
  // eslint-disable-next-line import/no-extraneous-dependencies
2
- import { StatsAsset, StatsCompilation, StatsModule } from 'webpack';
3
- import flow from 'lodash/fp/flow';
4
- import fromPairs from 'lodash/fp/fromPairs';
5
- import get from 'lodash/fp/get';
6
- import map from 'lodash/fp/map';
7
- import _filter from 'lodash/fp/filter';
8
- import pick from 'lodash/fp/pick';
9
- import toPairs from 'lodash/fp/toPairs';
2
+ import { StatsCompilation } from 'webpack';
10
3
 
11
4
  const PATH_IGNORE_PATTERN = '.map$';
12
5
 
@@ -14,84 +7,129 @@ interface BundleStatsOptions {
14
7
  pathIgnorePattern?: string;
15
8
  }
16
9
 
17
- type WebpackStatsFilteredAsset = Pick<StatsAsset, 'name' | 'size'>;
18
-
19
- interface WebpackStatsFileteredEntrypoint {
20
- assets: Array<string>;
10
+ export interface WebpackStatsFilteredAsset {
11
+ name: string;
12
+ size?: number;
21
13
  }
22
14
 
23
- interface WebpackStatsFilteredChunk {
15
+ export interface WebpackStatsFilteredChunk {
24
16
  entry: boolean;
25
17
  id: number | string;
26
18
  initial: boolean;
27
- files: Array<string>;
28
- names: Array<string>;
19
+ files?: Array<string>;
20
+ names?: Array<string>;
21
+ }
22
+
23
+ export interface WebpackStatsFilteredModule {
24
+ name: string;
25
+ size?: number;
26
+ chunks: Array<string | number>;
27
+ }
28
+
29
+ export interface WebpackStatsFilteredConcatenatedModule {
30
+ name: string;
31
+ size?: number;
29
32
  }
30
33
 
31
- interface WebpackStatsFileteredModule extends Pick<StatsModule, 'name' | 'size' | 'chunks'> {
32
- modules?: Array<Pick<StatsModule, 'name' | 'size'>>;
34
+ export interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
35
+ modules?: Array<WebpackStatsFilteredConcatenatedModule>;
33
36
  }
34
37
 
35
- interface WebpackStatsFiltered {
36
- builtAt?: string;
38
+ export interface WebpackStatsFiltered {
39
+ builtAt?: number;
37
40
  hash?: string;
38
41
  assets?: Array<WebpackStatsFilteredAsset>;
39
- entrypoints?: Record<string, WebpackStatsFileteredEntrypoint>;
40
42
  chunks?: Array<WebpackStatsFilteredChunk>;
41
- modules?: Array<WebpackStatsFileteredModule>;
43
+ modules?: Array<WebpackStatsFilteredRootModule>;
42
44
  }
43
45
 
44
46
  /**
45
47
  * Filter webpack stats data
46
48
  */
47
49
  export default (
48
- source: StatsCompilation, options: BundleStatsOptions = {},
50
+ source: StatsCompilation,
51
+ options: BundleStatsOptions = {},
49
52
  ): WebpackStatsFiltered => {
50
53
  const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
51
54
 
52
55
  // meta
53
- const builtAt = get('builtAt')(source);
54
- const hash = get('hash')(source);
56
+ const { builtAt, hash } = source;
55
57
 
56
58
  // rawData
57
- const assets = flow([
58
- get('assets'),
59
- map(pick(['name', 'size'])),
60
- // Skip assets with empty name or ignore pattern
61
- _filter(({ name }) => name && !pathIgnorePattern.test(name)),
62
- ])(source);
63
-
64
- const entrypoints = flow([
65
- get('entrypoints'),
66
- toPairs,
67
- map(([key, value]) => [key, pick('assets')(value)]),
68
- fromPairs,
69
- ])(source);
70
-
71
- const chunks = flow([
72
- get('chunks'),
73
- map(pick(['id', 'entry', 'initial', 'files', 'names'])),
74
- // Skip chunks with empty id
75
- _filter(({ id }) => id !== null && typeof id !== 'undefined'),
76
- ])(source);
77
-
78
- const modules = source?.modules?.map(
79
- ({ name, size, chunks: moduleChunks, modules: concatenatedModules }) => ({
80
- name,
81
- size,
82
- chunks: moduleChunks?.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined'),
83
- modules: concatenatedModules?.map((concatenatedModule) => ({
84
- name: concatenatedModule.name,
85
- size: concatenatedModule.size,
86
- })),
87
- }),
88
- );
59
+ const assets =
60
+ source.assets?.reduce((agg, asset) => {
61
+ // Skip assets with empty name or ignore pattern
62
+ if (!asset.name || pathIgnorePattern.test(asset.name)) {
63
+ return agg;
64
+ }
65
+
66
+ agg.push({
67
+ name: asset.name,
68
+ size: asset.size,
69
+ });
70
+
71
+ return agg;
72
+ }, [] as Array<WebpackStatsFilteredAsset>) || [];
73
+
74
+ const chunks =
75
+ source.chunks?.reduce((agg, chunk) => {
76
+ // Skip chunks with empty ids
77
+ if (typeof chunk.id === 'undefined' || chunk.id === null) {
78
+ return agg;
79
+ }
80
+
81
+ agg.push({
82
+ id: chunk.id,
83
+ entry: chunk.entry,
84
+ initial: chunk.initial,
85
+ files: chunk.files,
86
+ names: chunk.names,
87
+ });
88
+
89
+ return agg;
90
+ }, [] as Array<WebpackStatsFilteredChunk>) || [];
91
+
92
+ const modules =
93
+ source.modules?.reduce((agg, moduleStats) => {
94
+ if (!moduleStats.name) {
95
+ return agg;
96
+ }
97
+
98
+ const moduleChunks =
99
+ moduleStats.chunks?.filter(
100
+ (chunkId) => chunkId !== null && typeof chunkId !== 'undefined',
101
+ ) || [];
102
+
103
+ const concatenatedModules = moduleStats.modules?.reduce(
104
+ (aggConcatenatedModules, concatenatedModule) => {
105
+ if (!concatenatedModule.name) {
106
+ return aggConcatenatedModules;
107
+ }
108
+
109
+ aggConcatenatedModules.push({
110
+ name: concatenatedModule.name,
111
+ size: concatenatedModule.size,
112
+ });
113
+
114
+ return aggConcatenatedModules;
115
+ },
116
+ [] as Array<WebpackStatsFilteredConcatenatedModule>,
117
+ );
118
+
119
+ agg.push({
120
+ name: moduleStats.name,
121
+ size: moduleStats.size,
122
+ chunks: moduleChunks,
123
+ ...(concatenatedModules && { modules: concatenatedModules }),
124
+ });
125
+
126
+ return agg;
127
+ }, [] as Array<WebpackStatsFilteredRootModule>) || [];
89
128
 
90
129
  return {
91
130
  builtAt,
92
131
  hash,
93
132
  assets,
94
- entrypoints,
95
133
  chunks,
96
134
  modules,
97
135
  };
package/types/index.d.ts CHANGED
@@ -1,28 +1,36 @@
1
- import { StatsAsset, StatsCompilation, StatsModule } from 'webpack';
1
+ import { StatsCompilation } from 'webpack';
2
2
  interface BundleStatsOptions {
3
3
  pathIgnorePattern?: string;
4
4
  }
5
- declare type WebpackStatsFilteredAsset = Pick<StatsAsset, 'name' | 'size'>;
6
- interface WebpackStatsFileteredEntrypoint {
7
- assets: Array<string>;
5
+ export interface WebpackStatsFilteredAsset {
6
+ name: string;
7
+ size?: number;
8
8
  }
9
- interface WebpackStatsFilteredChunk {
9
+ export interface WebpackStatsFilteredChunk {
10
10
  entry: boolean;
11
11
  id: number | string;
12
12
  initial: boolean;
13
- files: Array<string>;
14
- names: Array<string>;
13
+ files?: Array<string>;
14
+ names?: Array<string>;
15
15
  }
16
- interface WebpackStatsFileteredModule extends Pick<StatsModule, 'name' | 'size' | 'chunks'> {
17
- modules?: Array<Pick<StatsModule, 'name' | 'size'>>;
16
+ export interface WebpackStatsFilteredModule {
17
+ name: string;
18
+ size?: number;
19
+ chunks: Array<string | number>;
18
20
  }
19
- interface WebpackStatsFiltered {
20
- builtAt?: string;
21
+ export interface WebpackStatsFilteredConcatenatedModule {
22
+ name: string;
23
+ size?: number;
24
+ }
25
+ export interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
26
+ modules?: Array<WebpackStatsFilteredConcatenatedModule>;
27
+ }
28
+ export interface WebpackStatsFiltered {
29
+ builtAt?: number;
21
30
  hash?: string;
22
31
  assets?: Array<WebpackStatsFilteredAsset>;
23
- entrypoints?: Record<string, WebpackStatsFileteredEntrypoint>;
24
32
  chunks?: Array<WebpackStatsFilteredChunk>;
25
- modules?: Array<WebpackStatsFileteredModule>;
33
+ modules?: Array<WebpackStatsFilteredRootModule>;
26
34
  }
27
35
  declare const _default: (source: StatsCompilation, options?: BundleStatsOptions) => WebpackStatsFiltered;
28
36
  export default _default;