@bundle-stats/utils 3.1.4-alpha.0 → 3.2.1-alpha.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.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
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
- ## [3.1.4-alpha.0](https://github.com/relative-ci/bundle-stats/compare/v3.1.3...v3.1.4-alpha.0) (2021-09-21)
6
+ ## [3.2.1-alpha.0](https://github.com/relative-ci/bundle-stats/compare/v3.2.0...v3.2.1-alpha.0) (2021-10-27)
7
7
 
8
8
  **Note:** Version bump only for package @bundle-stats/utils
9
9
 
@@ -11,6 +11,25 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
+ # [3.2.0](https://github.com/relative-ci/bundle-stats/compare/v3.1.3...v3.2.0) (2021-10-13)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * Consistent dependency versions across packages ([cceebb7](https://github.com/relative-ci/bundle-stats/commit/cceebb7724670a7c40c156c395449fc65d183690))
20
+ * **utils:** Use convert-units@beta ([731e7a4](https://github.com/relative-ci/bundle-stats/commit/731e7a4c1cf3fc2189f961388632fdbab838be3f))
21
+ * **utils:** Webpack module packages -construct patterns ([29c8606](https://github.com/relative-ci/bundle-stats/commit/29c86067d07188e4a553f7a41f70cc0621ea7c0d))
22
+ * **utils:** Webpack packages - make slug pattern more restrictive ([4d1ac7f](https://github.com/relative-ci/bundle-stats/commit/4d1ac7f7fc3c4783a0124efb651de2ff2752301e))
23
+
24
+
25
+ ### Features
26
+
27
+ * **utils:** Extract packages - add support for pnpm ([527e154](https://github.com/relative-ci/bundle-stats/commit/527e15422447c14dfa6f0ba0fdfe859c0aae7b9a))
28
+
29
+
30
+
31
+
32
+
14
33
  ## [3.1.2](https://github.com/relative-ci/bundle-stats/compare/v3.1.1...v3.1.2) (2021-08-10)
15
34
 
16
35
 
package/README.md CHANGED
@@ -41,9 +41,9 @@ console.log(report.insights.webpack.assetsSizeTotal.data.text);
41
41
 
42
42
  Specialized insights for web bundles:
43
43
 
44
- - Monitor and analyze bundle size, assets, modules, packages
44
+ - Analyze and monitor webpack stats(bundle size, assets, modules, packages)
45
45
  - GitHub Check, GitHub Pull Request, and Slack integrations
46
- - Support for all major CI services (CircleCI, GitHub Actions, Travis CI CI, Jenkins, Gitlab CI, Codeship)
46
+ - Support for all major CI services (CircleCI, GitHub Actions, Gitlab CI, Jenkins, Travis CI)
47
47
  - Free for OpenSource, developers and small teams
48
48
 
49
49
  [Try for free](https://relative-ci.com?utm_source=github&utm_medium=bundle-stats)
@@ -1,18 +1,38 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
6
25
  exports.formatPercentage = exports.formatCommit = exports.formatNumber = exports.formatDuration = exports.formatFileSize = void 0;
7
- const convert_units_1 = __importDefault(require("convert-units"));
26
+ const convert_units_1 = __importStar(require("convert-units"));
8
27
  const round_1 = __importDefault(require("lodash/round"));
28
+ const convert = convert_units_1.default({ digital: convert_units_1.digital, time: convert_units_1.time });
9
29
  const formatFileSize = (val) => {
10
- const res = convert_units_1.default(val).from('B').toBest();
30
+ const res = convert(val).from('B').toBest();
11
31
  return `${round_1.default(res.val, 2)}${res.unit}`;
12
32
  };
13
33
  exports.formatFileSize = formatFileSize;
14
34
  const formatDuration = (val) => {
15
- const res = convert_units_1.default(val).from('ms').toBest();
35
+ const res = convert(val).from('ms').toBest();
16
36
  return `${round_1.default(res.val, 4)}${res.unit}`;
17
37
  };
18
38
  exports.formatDuration = formatDuration;
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.js"],"names":[],"mappings":";;;;;;AAAA,kEAAoC;AACpC,yDAAiC;AAE1B,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,uBAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,uBAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAAjC,QAAA,YAAY,gBAAqB;AAEvC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAA1E,QAAA,YAAY,gBAA8D;AAEhF,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AAAtC,QAAA,gBAAgB,oBAAsB"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAqE;AACrE,yDAAiC;AAEjC,MAAM,OAAO,GAAG,uBAAqB,CAAC,EAAE,OAAO,EAAP,uBAAO,EAAE,IAAI,EAAJ,oBAAI,EAAE,CAAC,CAAC;AAElD,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAAjC,QAAA,YAAY,gBAAqB;AAEvC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAA1E,QAAA,YAAY,gBAA8D;AAEhF,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AAAtC,QAAA,gBAAgB,oBAAsB"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MODULE_PATH_PACKAGES = exports.SUMMARY_METRIC_PATHS = exports.SECTIONS = exports.SECTION_WEBPACK_PACKAGES = exports.SECTION_WEBPACK_MODULES = exports.SECTION_WEBPACK_ASSETS = exports.SECTION_WEBPACK_SIZES = exports.SECTION_WEBPACK_STATS = void 0;
3
+ exports.PACKAGE_PATH_NAME = exports.MODULE_PATH_PACKAGES = exports.SUMMARY_METRIC_PATHS = exports.SECTIONS = exports.SECTION_WEBPACK_PACKAGES = exports.SECTION_WEBPACK_MODULES = exports.SECTION_WEBPACK_ASSETS = exports.SECTION_WEBPACK_SIZES = exports.SECTION_WEBPACK_STATS = void 0;
4
4
  exports.SECTION_WEBPACK_STATS = 'stats';
5
5
  exports.SECTION_WEBPACK_SIZES = 'sizes';
6
6
  exports.SECTION_WEBPACK_ASSETS = 'assets';
@@ -24,5 +24,41 @@ exports.SUMMARY_METRIC_PATHS = [
24
24
  'packageCount',
25
25
  'duplicatePackagesCount',
26
26
  ];
27
- exports.MODULE_PATH_PACKAGES = /(node_modules|~)\/((!?@(([\w|\-|_|.]*)\/){2})|(([\w|\-|_|.]*)\/))/g;
27
+ const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
28
+ const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
29
+ const VERSION = /@[\w|\-|_|.]+/;
30
+ exports.MODULE_PATH_PACKAGES = new RegExp([
31
+ `(?:${PACKAGE_PREFIX.source}/)`,
32
+ '(?:',
33
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
34
+ `(?:${PACKAGE_SLUG.source}\\+)*`,
35
+ `(?:${PACKAGE_SLUG.source})`,
36
+ `(?:${VERSION.source})?`,
37
+ ')',
38
+ '(?:_',
39
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
40
+ `(?:${PACKAGE_SLUG.source})`,
41
+ `(?:@${PACKAGE_SLUG.source})?`,
42
+ ')*',
43
+ '/',
44
+ ].join(''), 'g');
45
+ exports.PACKAGE_PATH_NAME = new RegExp([
46
+ `(?:${PACKAGE_PREFIX.source}/)`,
47
+ '(?:',
48
+ '(',
49
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
50
+ `(?:(?:${PACKAGE_SLUG.source}\\+)*)`,
51
+ `(?:${PACKAGE_SLUG.source})`,
52
+ ')',
53
+ `(?:${VERSION.source})?`,
54
+ ')',
55
+ '(?:_',
56
+ '(',
57
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
58
+ `(?:${PACKAGE_SLUG.source})`,
59
+ ')',
60
+ `(?:@${PACKAGE_SLUG.source})`,
61
+ ')*',
62
+ '/',
63
+ ].join(''), 'g');
28
64
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/webpack/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAChC,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAChC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,uBAAuB,GAAG,SAAS,CAAC;AACpC,QAAA,wBAAwB,GAAG,UAAU,CAAC;AAEtC,QAAA,QAAQ,GAAG;IACtB,6BAAqB;IACrB,6BAAqB;IACrB,8BAAsB;IACtB,+BAAuB;IACvB,gCAAwB;CACzB,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,wBAAwB;CACzB,CAAC;AAGW,QAAA,oBAAoB,GAAG,oEAAoE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/webpack/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAChC,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAChC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,uBAAuB,GAAG,SAAS,CAAC;AACpC,QAAA,wBAAwB,GAAG,UAAU,CAAC;AAEtC,QAAA,QAAQ,GAAG;IACtB,6BAAqB;IACrB,6BAAqB;IACrB,8BAAsB;IACtB,+BAAuB;IACvB,gCAAwB;CACzB,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,wBAAwB;CACzB,CAAC;AAEF,MAAM,cAAc,GAAG,iCAAiC,CAAC;AACzD,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAC7D,MAAM,OAAO,GAAG,eAAe,CAAC;AAKnB,QAAA,oBAAoB,GAAG,IAAI,MAAM,CAAC;IAE7C,MAAM,cAAc,CAAC,MAAM,IAAI;IAE/B,KAAK;IAEH,OAAO,YAAY,CAAC,MAAM,SAAS;IAEnC,MAAM,YAAY,CAAC,MAAM,OAAO;IAEhC,MAAM,YAAY,CAAC,MAAM,GAAG;IAE5B,MAAM,OAAO,CAAC,MAAM,IAAI;IAC1B,GAAG;IAGH,MAAM;IACJ,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC5B,OAAO,YAAY,CAAC,MAAM,IAAI;IAChC,IAAI;IACJ,GAAG;CACJ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAMJ,QAAA,iBAAiB,GAAG,IAAI,MAAM,CAAC;IAC1C,MAAM,cAAc,CAAC,MAAM,IAAI;IAE/B,KAAK;IACH,GAAG;IACD,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,SAAS,YAAY,CAAC,MAAM,QAAQ;IACpC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC9B,GAAG;IACH,MAAM,OAAO,CAAC,MAAM,IAAI;IAC1B,GAAG;IAEH,MAAM;IACJ,GAAG;IACD,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC9B,GAAG;IACH,OAAO,YAAY,CAAC,MAAM,GAAG;IAC/B,IAAI;IACJ,GAAG;CACJ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC"}
@@ -6,15 +6,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.extractModulesPackages = exports.getPackageMetaFromModulePath = void 0;
7
7
  const max_1 = __importDefault(require("lodash/max"));
8
8
  const last_1 = __importDefault(require("lodash/last"));
9
+ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
9
10
  const config_1 = require("../../config");
10
11
  const constants_1 = require("../constants");
11
- const PACKAGE_PATH_REPLACE = /.*(node_modules|~)\/(.*)\/$/;
12
+ const uniqLast = (data) => {
13
+ const res = [];
14
+ data.forEach((item, index) => {
15
+ if (!data.slice(index + 1).includes(item)) {
16
+ res.push(item);
17
+ }
18
+ });
19
+ return res;
20
+ };
12
21
  const getPackageMetaFromModulePath = (modulePath) => {
13
22
  const paths = modulePath.match(constants_1.MODULE_PATH_PACKAGES);
14
23
  if (!paths) {
15
24
  return null;
16
25
  }
17
- const names = paths.map((packagePath) => packagePath.replace(PACKAGE_PATH_REPLACE, '$2'));
26
+ const names = uniqLast(paths
27
+ .map((packagePath) => {
28
+ const found = packagePath.matchAll(constants_1.PACKAGE_PATH_NAME);
29
+ if (!found) {
30
+ return [];
31
+ }
32
+ return [...found].flat().slice(1).filter(Boolean).map((name) => name.replace(/\+/g, '/'));
33
+ })
34
+ .flat());
35
+ if (isEmpty_1.default(names)) {
36
+ return null;
37
+ }
18
38
  const name = last_1.default(names);
19
39
  const pattern = new RegExp(`(.*)(${last_1.default(paths)}).*`);
20
40
  const path = modulePath.replace(pattern, '$1$2').replace(/\/$/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import convert from 'convert-units';
1
+ import configureMeasurements, { digital, time } from 'convert-units';
2
2
  import round from 'lodash/round';
3
+ const convert = configureMeasurements({ digital, time });
3
4
  export const formatFileSize = (val) => {
4
5
  const res = convert(val).from('B').toBest();
5
6
  return `${round(res.val, 2)}${res.unit}`;
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.js"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC"}
@@ -21,5 +21,41 @@ export const SUMMARY_METRIC_PATHS = [
21
21
  'packageCount',
22
22
  'duplicatePackagesCount',
23
23
  ];
24
- export const MODULE_PATH_PACKAGES = /(node_modules|~)\/((!?@(([\w|\-|_|.]*)\/){2})|(([\w|\-|_|.]*)\/))/g;
24
+ const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
25
+ const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
26
+ const VERSION = /@[\w|\-|_|.]+/;
27
+ export const MODULE_PATH_PACKAGES = new RegExp([
28
+ `(?:${PACKAGE_PREFIX.source}/)`,
29
+ '(?:',
30
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
31
+ `(?:${PACKAGE_SLUG.source}\\+)*`,
32
+ `(?:${PACKAGE_SLUG.source})`,
33
+ `(?:${VERSION.source})?`,
34
+ ')',
35
+ '(?:_',
36
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
37
+ `(?:${PACKAGE_SLUG.source})`,
38
+ `(?:@${PACKAGE_SLUG.source})?`,
39
+ ')*',
40
+ '/',
41
+ ].join(''), 'g');
42
+ export const PACKAGE_PATH_NAME = new RegExp([
43
+ `(?:${PACKAGE_PREFIX.source}/)`,
44
+ '(?:',
45
+ '(',
46
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
47
+ `(?:(?:${PACKAGE_SLUG.source}\\+)*)`,
48
+ `(?:${PACKAGE_SLUG.source})`,
49
+ ')',
50
+ `(?:${VERSION.source})?`,
51
+ ')',
52
+ '(?:_',
53
+ '(',
54
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
55
+ `(?:${PACKAGE_SLUG.source})`,
56
+ ')',
57
+ `(?:@${PACKAGE_SLUG.source})`,
58
+ ')*',
59
+ '/',
60
+ ].join(''), 'g');
25
61
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/webpack/constants.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,wBAAwB;CACzB,CAAC;AAGF,MAAM,CAAC,MAAM,oBAAoB,GAAG,oEAAoE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/webpack/constants.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,wBAAwB;CACzB,CAAC;AAEF,MAAM,cAAc,GAAG,iCAAiC,CAAC;AACzD,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAC7D,MAAM,OAAO,GAAG,eAAe,CAAC;AAKhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC;IAE7C,MAAM,cAAc,CAAC,MAAM,IAAI;IAE/B,KAAK;IAEH,OAAO,YAAY,CAAC,MAAM,SAAS;IAEnC,MAAM,YAAY,CAAC,MAAM,OAAO;IAEhC,MAAM,YAAY,CAAC,MAAM,GAAG;IAE5B,MAAM,OAAO,CAAC,MAAM,IAAI;IAC1B,GAAG;IAGH,MAAM;IACJ,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC5B,OAAO,YAAY,CAAC,MAAM,IAAI;IAChC,IAAI;IACJ,GAAG;CACJ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAMjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC;IAC1C,MAAM,cAAc,CAAC,MAAM,IAAI;IAE/B,KAAK;IACH,GAAG;IACD,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,SAAS,YAAY,CAAC,MAAM,QAAQ;IACpC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC9B,GAAG;IACH,MAAM,OAAO,CAAC,MAAM,IAAI;IAC1B,GAAG;IAEH,MAAM;IACJ,GAAG;IACD,OAAO,YAAY,CAAC,MAAM,SAAS;IACnC,MAAM,YAAY,CAAC,MAAM,GAAG;IAC9B,GAAG;IACH,OAAO,YAAY,CAAC,MAAM,GAAG;IAC/B,IAAI;IACJ,GAAG;CACJ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC"}
@@ -1,14 +1,34 @@
1
1
  import max from 'lodash/max';
2
2
  import last from 'lodash/last';
3
+ import isEmpty from 'lodash/isEmpty';
3
4
  import { PACKAGES_SEPARATOR, PACKAGE_ID_SEPARATOR } from '../../config';
4
- import { MODULE_PATH_PACKAGES } from '../constants';
5
- const PACKAGE_PATH_REPLACE = /.*(node_modules|~)\/(.*)\/$/;
5
+ import { MODULE_PATH_PACKAGES, PACKAGE_PATH_NAME } from '../constants';
6
+ const uniqLast = (data) => {
7
+ const res = [];
8
+ data.forEach((item, index) => {
9
+ if (!data.slice(index + 1).includes(item)) {
10
+ res.push(item);
11
+ }
12
+ });
13
+ return res;
14
+ };
6
15
  export const getPackageMetaFromModulePath = (modulePath) => {
7
16
  const paths = modulePath.match(MODULE_PATH_PACKAGES);
8
17
  if (!paths) {
9
18
  return null;
10
19
  }
11
- const names = paths.map((packagePath) => packagePath.replace(PACKAGE_PATH_REPLACE, '$2'));
20
+ const names = uniqLast(paths
21
+ .map((packagePath) => {
22
+ const found = packagePath.matchAll(PACKAGE_PATH_NAME);
23
+ if (!found) {
24
+ return [];
25
+ }
26
+ return [...found].flat().slice(1).filter(Boolean).map((name) => name.replace(/\+/g, '/'));
27
+ })
28
+ .flat());
29
+ if (isEmpty(names)) {
30
+ return null;
31
+ }
12
32
  const name = last(names);
13
33
  const pattern = new RegExp(`(.*)(${last(paths)}).*`);
14
34
  const path = modulePath.replace(pattern, '$1$2').replace(/\/$/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@bundle-stats/utils",
3
- "version": "3.1.4-alpha.0",
3
+ "version": "3.2.1-alpha.0",
4
4
  "description": "BundleStats utils",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
7
7
  "types": "types/index.d.ts",
8
+ "sideEffects": false,
8
9
  "engines": {
9
10
  "node": ">= 12.0"
10
11
  },
@@ -34,16 +35,16 @@
34
35
  },
35
36
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/utils#readme",
36
37
  "dependencies": {
37
- "@bundle-stats/plugin-webpack-filter": "^3.1.4-alpha.0",
38
- "@bundle-stats/plugin-webpack-validate": "^3.1.4-alpha.0",
39
- "convert-units": "^2.3.4",
38
+ "@bundle-stats/plugin-webpack-filter": "^3.2.1-alpha.0",
39
+ "@bundle-stats/plugin-webpack-validate": "^3.2.1-alpha.0",
40
+ "convert-units": "^3.0.0-beta.2",
40
41
  "query-string": "^7.0.0",
41
42
  "serialize-query-params": "^1.3.3"
42
43
  },
43
44
  "devDependencies": {
44
45
  "@types/jest": "26.0.24",
45
- "@types/lodash": "4.14.172",
46
- "core-js": "3.15.2",
46
+ "@types/lodash": "4.14.176",
47
+ "core-js": "3.19.0",
47
48
  "jest": "26.6.3",
48
49
  "jest-cli": "26.6.3",
49
50
  "jest-date-mock": "1.0.8",
@@ -53,8 +54,8 @@
53
54
  "ts-jest": "26.5.6"
54
55
  },
55
56
  "peerDependencies": {
56
- "core-js": "^3.9.1",
57
- "lodash": "^4.17.11"
57
+ "core-js": "^3.16.2",
58
+ "lodash": "^4.17.21"
58
59
  },
59
- "gitHead": "903d336ce3f7a0bd060fbd1327b57c5783f133ff"
60
+ "gitHead": "fdb4b6931ebbc35ad469608725603cde5ecab9b7"
60
61
  }
@@ -1,6 +1,8 @@
1
- import convert from 'convert-units';
1
+ import configureMeasurements, { digital, time } from 'convert-units';
2
2
  import round from 'lodash/round';
3
3
 
4
+ const convert = configureMeasurements({ digital, time });
5
+
4
6
  export const formatFileSize = (val) => {
5
7
  const res = convert(val).from('B').toBest();
6
8
  return `${round(res.val, 2)}${res.unit}`;
@@ -24,5 +24,60 @@ export const SUMMARY_METRIC_PATHS = [
24
24
  'duplicatePackagesCount',
25
25
  ];
26
26
 
27
- // Extract npm package names from a module path
28
- export const MODULE_PATH_PACKAGES = /(node_modules|~)\/((!?@(([\w|\-|_|.]*)\/){2})|(([\w|\-|_|.]*)\/))/g;
27
+ const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
28
+ const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
29
+ const VERSION = /@[\w|\-|_|.]+/;
30
+
31
+ // Extract package paths from module path
32
+ // https://regex101.com/r/22Leep/6
33
+ /* eslint-disable prettier/prettier */
34
+ export const MODULE_PATH_PACKAGES = new RegExp([
35
+ // match dependency directory (eg: `node_modules/`, `node_modules/.pnpm/`)
36
+ `(?:${PACKAGE_PREFIX.source}/)`,
37
+ // match package name
38
+ '(?:',
39
+ // match `@organization/` or `@organization+`(pnpm)
40
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
41
+ // match github.com+organization+
42
+ `(?:${PACKAGE_SLUG.source}\\+)*`,
43
+ // match package name
44
+ `(?:${PACKAGE_SLUG.source})`,
45
+ // match version
46
+ `(?:${VERSION.source})?`,
47
+ ')',
48
+
49
+ // Match pnpm peer dependencies (eg: package-a@version_package-b@version)
50
+ '(?:_',
51
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
52
+ `(?:${PACKAGE_SLUG.source})`,
53
+ `(?:@${PACKAGE_SLUG.source})?`,
54
+ ')*',
55
+ '/',
56
+ ].join(''), 'g');
57
+ /* eslint-enable prettier/prettier */
58
+
59
+ // Extract package name from package path
60
+ // https://regex101.com/r/tTlU0W/6
61
+ /* eslint-disable prettier/prettier */
62
+ export const PACKAGE_PATH_NAME = new RegExp([
63
+ `(?:${PACKAGE_PREFIX.source}/)`,
64
+ // match dependency
65
+ '(?:',
66
+ '(',
67
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
68
+ `(?:(?:${PACKAGE_SLUG.source}\\+)*)`,
69
+ `(?:${PACKAGE_SLUG.source})`,
70
+ ')',
71
+ `(?:${VERSION.source})?`,
72
+ ')',
73
+ // match peer dependency
74
+ '(?:_',
75
+ '(',
76
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
77
+ `(?:${PACKAGE_SLUG.source})`,
78
+ ')',
79
+ `(?:@${PACKAGE_SLUG.source})`,
80
+ ')*',
81
+ '/',
82
+ ].join(''), 'g');
83
+ /* eslint-enable prettier/prettier */
@@ -1,11 +1,22 @@
1
1
  import max from 'lodash/max';
2
2
  import last from 'lodash/last';
3
+ import isEmpty from 'lodash/isEmpty';
3
4
 
4
5
  import { PACKAGES_SEPARATOR, PACKAGE_ID_SEPARATOR } from '../../config';
5
6
  import { PackageMetric, WebpackMetricsModules, WebpackMetricsPackages } from '../../constants';
6
- import { MODULE_PATH_PACKAGES } from '../constants';
7
+ import { MODULE_PATH_PACKAGES, PACKAGE_PATH_NAME } from '../constants';
7
8
 
8
- const PACKAGE_PATH_REPLACE = /.*(node_modules|~)\/(.*)\/$/;
9
+ const uniqLast = (data: Array<unknown>) => {
10
+ const res: Array<unknown> = [];
11
+
12
+ data.forEach((item, index) => {
13
+ if (!data.slice(index + 1).includes(item)) {
14
+ res.push(item);
15
+ }
16
+ });
17
+
18
+ return res;
19
+ };
9
20
 
10
21
  /**
11
22
  * Heuristics to extract package id, name, and path from a module path
@@ -13,11 +24,33 @@ const PACKAGE_PATH_REPLACE = /.*(node_modules|~)\/(.*)\/$/;
13
24
  export const getPackageMetaFromModulePath = (modulePath: string) => {
14
25
  const paths = modulePath.match(MODULE_PATH_PACKAGES);
15
26
 
27
+ // No package paths found, skip
16
28
  if (!paths) {
17
29
  return null;
18
30
  }
19
31
 
20
- const names = paths.map((packagePath) => packagePath.replace(PACKAGE_PATH_REPLACE, '$2'));
32
+ // Extract package names from module path
33
+ // @NOTE check for uniq for pnpm cases
34
+ const names = uniqLast(
35
+ paths
36
+ .map((packagePath) => {
37
+ // @ts-ignore
38
+ const found = packagePath.matchAll(PACKAGE_PATH_NAME);
39
+
40
+ if (!found) {
41
+ return [];
42
+ }
43
+
44
+ return [...found].flat().slice(1).filter(Boolean).map((name) => name.replace(/\+/g, '/'));
45
+ })
46
+ .flat(),
47
+ );
48
+
49
+ // If no names, skip
50
+ if (isEmpty(names)) {
51
+ return null;
52
+ }
53
+
21
54
  const name = last(names);
22
55
 
23
56
  // Get package full path
@@ -6,3 +6,4 @@ export const SECTION_WEBPACK_PACKAGES: "packages";
6
6
  export const SECTIONS: string[];
7
7
  export const SUMMARY_METRIC_PATHS: string[];
8
8
  export const MODULE_PATH_PACKAGES: RegExp;
9
+ export const PACKAGE_PATH_NAME: RegExp;
@@ -1,7 +1,7 @@
1
1
  import { WebpackMetricsModules, WebpackMetricsPackages } from '../../constants';
2
2
  export declare const getPackageMetaFromModulePath: (modulePath: string) => {
3
3
  id: string;
4
- name: string | undefined;
4
+ name: unknown;
5
5
  path: string;
6
6
  } | null;
7
7
  export declare const extractModulesPackages: (webpackStats?: any, currentExtractedData?: WebpackMetricsModules | undefined) => WebpackMetricsPackages;