@modern-js/utils 1.8.1 → 1.16.0-alpha.underfin.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/compiled/ajv/codegen.js +1 -0
  3. package/compiled/ajv/index.js +9 -0
  4. package/compiled/ajv/license +22 -0
  5. package/compiled/ajv/package.json +1 -0
  6. package/compiled/ajv/types/ajv.d.ts +16 -0
  7. package/compiled/ajv/types/compile/codegen/code.d.ts +40 -0
  8. package/compiled/ajv/types/compile/codegen/index.d.ts +79 -0
  9. package/compiled/ajv/types/compile/codegen/scope.d.ts +79 -0
  10. package/compiled/ajv/types/compile/errors.d.ts +13 -0
  11. package/compiled/ajv/types/compile/index.d.ts +80 -0
  12. package/compiled/ajv/types/compile/ref_error.d.ts +6 -0
  13. package/compiled/ajv/types/compile/resolve.d.ts +12 -0
  14. package/compiled/ajv/types/compile/rules.d.ts +28 -0
  15. package/compiled/ajv/types/compile/util.d.ts +40 -0
  16. package/compiled/ajv/types/compile/validate/index.d.ts +42 -0
  17. package/compiled/ajv/types/compile/validate/subschema.d.ts +47 -0
  18. package/compiled/ajv/types/core.d.ts +173 -0
  19. package/compiled/ajv/types/runtime/validation_error.d.ts +7 -0
  20. package/compiled/ajv/types/types/index.d.ts +183 -0
  21. package/compiled/ajv/types/types/json-schema.d.ts +124 -0
  22. package/compiled/ajv/types/types/jtd-schema.d.ts +169 -0
  23. package/compiled/ajv/uri-js/dist/es5/uri.all.d.ts +59 -0
  24. package/compiled/ajv-keywords/index.d.ts +1 -0
  25. package/compiled/ajv-keywords/index.js +1 -0
  26. package/compiled/ajv-keywords/license +21 -0
  27. package/compiled/ajv-keywords/package.json +1 -0
  28. package/compiled/better-ajv-errors/index.d.ts +1 -0
  29. package/compiled/better-ajv-errors/index.js +1 -0
  30. package/compiled/better-ajv-errors/license +13 -0
  31. package/compiled/better-ajv-errors/package.json +1 -0
  32. package/compiled/browserslist/index.js +1 -1
  33. package/compiled/execa/index.js +1 -1
  34. package/compiled/fast-glob/index.js +2 -2
  35. package/compiled/glob/index.js +1 -1
  36. package/compiled/inquirer/index.js +1 -1
  37. package/compiled/ora/index.js +2 -2
  38. package/compiled/schema-utils3/index.d.ts +1 -0
  39. package/compiled/schema-utils3/index.js +3 -0
  40. package/compiled/schema-utils3/license +20 -0
  41. package/compiled/schema-utils3/package.json +1 -0
  42. package/compiled/webpack-dev-middleware/index.js +7 -0
  43. package/compiled/webpack-dev-middleware/license +20 -0
  44. package/compiled/webpack-dev-middleware/package.json +1 -0
  45. package/compiled/webpack-dev-middleware/types/index.d.ts +257 -0
  46. package/dist/analyzeProject.d.ts +1 -1
  47. package/dist/analyzeProject.js +2 -2
  48. package/dist/chainId.d.ts +37 -0
  49. package/dist/chainId.js +37 -0
  50. package/dist/constants.js +0 -14
  51. package/dist/format.d.ts +1 -4
  52. package/dist/format.js +15 -45
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +1 -0
  55. package/dist/prettyInstructions.d.ts +4 -0
  56. package/dist/prettyInstructions.js +3 -2
  57. package/dist/reactVersion.d.ts +1 -0
  58. package/dist/reactVersion.js +24 -0
  59. package/dist/runtimeExports.d.ts +1 -1
  60. package/dist/runtimeExports.js +2 -6
  61. package/package.json +32 -5
package/dist/chainId.js CHANGED
@@ -8,6 +8,30 @@ exports.CHAIN_ID = {
8
8
  MJS: 'mjs',
9
9
  /** Rule for predefined loaders */
10
10
  LOADERS: 'loaders',
11
+ /** Rule for fonts */
12
+ FONT: 'font',
13
+ /** Rule for images */
14
+ IMAGE: 'image',
15
+ /** Rule for media */
16
+ MEDIA: 'media',
17
+ /** Rule for js */
18
+ JS: 'js',
19
+ /** Rule for ts */
20
+ TS: 'ts',
21
+ /** Rule for css */
22
+ CSS: 'css',
23
+ /** Rule for less */
24
+ LESS: 'less',
25
+ /** Rule for sass */
26
+ SASS: 'sass',
27
+ /** Rule for svg */
28
+ SVG: 'svg',
29
+ /** Rule for pug */
30
+ PUG: 'pug',
31
+ /** Rule for toml */
32
+ TOML: 'toml',
33
+ /** Rule for yaml */
34
+ YAML: 'yaml',
11
35
  },
12
36
  /** Predefined rule groups */
13
37
  ONE_OF: {
@@ -26,6 +50,7 @@ exports.CHAIN_ID = {
26
50
  SASS_MODULES: 'sass-modules',
27
51
  SVG: 'svg',
28
52
  SVG_URL: 'svg-url',
53
+ SVG_ASSET: 'svg-asset',
29
54
  SVG_INLINE: 'svg-inline',
30
55
  ASSETS: 'assets',
31
56
  ASSETS_URL: 'assets-url',
@@ -37,8 +62,14 @@ exports.CHAIN_ID = {
37
62
  TS: 'ts',
38
63
  /** css-loader */
39
64
  CSS: 'css',
65
+ /** sass-loader */
66
+ SASS: 'sass',
67
+ /** less-loader */
68
+ LESS: 'less',
40
69
  /** url-loader */
41
70
  URL: 'url',
71
+ /** pug-loader */
72
+ PUG: 'pug',
42
73
  /** file-loader */
43
74
  FILE: 'file',
44
75
  /** @svgr/webpack */
@@ -51,6 +82,8 @@ exports.CHAIN_ID = {
51
82
  HTML: 'html',
52
83
  /** babel-loader */
53
84
  BABEL: 'babel',
85
+ /** esbuild-loader */
86
+ ESBUILD: 'esbuild',
54
87
  /** style-loader */
55
88
  STYLE: 'style-loader',
56
89
  /** postcss-loader */
@@ -92,12 +125,16 @@ exports.CHAIN_ID = {
92
125
  BUNDLE_ANALYZER: 'bundle-analyze',
93
126
  /** BottomTemplatePlugin */
94
127
  BOTTOM_TEMPLATE: 'bottom-template',
128
+ /** HtmlCrossOriginPlugin */
129
+ HTML_CROSS_ORIGIN: 'html-cross-origin',
95
130
  /** MiniCssExtractPlugin */
96
131
  MINI_CSS_EXTRACT: 'mini-css-extract',
97
132
  /** ReactFastRefreshPlugin */
98
133
  REACT_FAST_REFRESH: 'react-fast-refresh',
99
134
  /** ProvidePlugin for node polyfill */
100
135
  NODE_POLYFILL_PROVIDE: 'node-polyfill-provide',
136
+ /** ModuleDependencyErrorPlugin */
137
+ MODULE_DEPENDENCY_ERROR: 'module-dependency-error',
101
138
  },
102
139
  /** Predefined minimizers */
103
140
  MINIMIZER: {
package/dist/constants.js CHANGED
@@ -72,7 +72,6 @@ exports.INTERNAL_PLUGINS = {
72
72
  '@modern-js/plugin-electron': { cli: '@modern-js/plugin-electron/cli' },
73
73
  '@modern-js/plugin-testing': { cli: '@modern-js/plugin-testing/cli' },
74
74
  '@modern-js/plugin-storybook': { cli: '@modern-js/plugin-storybook/cli' },
75
- '@modern-js/plugin-docsite': { cli: '@modern-js/plugin-docsite/cli' },
76
75
  '@modern-js/plugin-express': {
77
76
  cli: '@modern-js/plugin-express/cli',
78
77
  server: '@modern-js/plugin-express',
@@ -99,25 +98,12 @@ exports.INTERNAL_PLUGINS = {
99
98
  cli: '@modern-js/plugin-garfish/cli',
100
99
  },
101
100
  '@modern-js/plugin-tailwindcss': { cli: '@modern-js/plugin-tailwindcss/cli' },
102
- '@modern-js/plugin-lambda-fc': { cli: '@modern-js/plugin-lambda-fc/cli' },
103
- '@modern-js/plugin-lambda-scf': { cli: '@modern-js/plugin-lambda-scf/cli' },
104
- '@modern-js/plugin-cdn-oss': { cli: '@modern-js/plugin-cdn-oss/cli' },
105
- '@modern-js/plugin-cdn-cos': { cli: '@modern-js/plugin-cdn-cos/cli' },
106
- '@modern-js/plugin-static-hosting': {
107
- cli: '@modern-js/plugin-static-hosting/cli',
108
- },
109
101
  '@modern-js/plugin-polyfill': {
110
102
  cli: '@modern-js/plugin-polyfill/cli',
111
103
  server: '@modern-js/plugin-polyfill',
112
104
  },
113
- '@modern-js/plugin-multiprocess': {
114
- cli: '@modern-js/plugin-multiprocess/cli',
115
- },
116
105
  // TODO: Maybe can remove it
117
106
  '@modern-js/plugin-nocode': { cli: '@modern-js/plugin-nocode/cli' },
118
- '@modern-js/plugin-design-token': {
119
- cli: '@modern-js/plugin-design-token/cli',
120
- },
121
107
  };
122
108
  /**
123
109
  * The schema registered in the plugin.
package/dist/format.d.ts CHANGED
@@ -5,12 +5,9 @@
5
5
  * LICENSE file at
6
6
  * https://github.com/facebook/create-react-app/blob/master/LICENSE
7
7
  */
8
- import { StatsCompilation } from 'webpack';
9
- import type { ProxyDetail, BffProxyOptions } from '@modern-js/types';
8
+ import type { StatsCompilation } from 'webpack';
10
9
  declare function formatWebpackMessages(json: StatsCompilation): {
11
10
  errors: string[];
12
11
  warnings: string[];
13
12
  };
14
13
  export { formatWebpackMessages };
15
- declare function formatProxyOptions(proxyOptions: BffProxyOptions): ProxyDetail[];
16
- export { formatProxyOptions };
package/dist/format.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable no-param-reassign */
3
2
  /**
4
3
  * Copyright (c) 2015-present, Facebook, Inc.
5
4
  *
@@ -8,23 +7,27 @@
8
7
  * https://github.com/facebook/create-react-app/blob/master/LICENSE
9
8
  */
10
9
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.formatProxyOptions = exports.formatWebpackMessages = void 0;
12
- const friendlySyntaxErrorLabel = 'Syntax error:';
10
+ exports.formatWebpackMessages = void 0;
11
+ const friendlySyntaxErrorLabel = 'SyntaxError:';
13
12
  function isLikelyASyntaxError(message) {
14
13
  return message.includes(friendlySyntaxErrorLabel);
15
14
  }
16
15
  // Cleans up webpack error messages.
17
- function formatMessage(message) {
18
- var _a;
16
+ function formatMessage(stats) {
19
17
  let lines = [];
18
+ let message;
20
19
  // webpack 5 stats error object
21
- if (typeof message === 'object') {
22
- message = `${(message.moduleName && `${message.moduleName}\n`)}${message.details || message.stack || message.message}`;
20
+ if (typeof stats === 'object') {
21
+ const fileName = stats.moduleName ? `File: ${stats.moduleName}\n` : '';
22
+ const mainMessage = stats.message;
23
+ const details = stats.details ? `\nDetails: ${stats.details}\n` : '';
24
+ const stack = stats.stack ? `\n${stats.stack}` : '';
25
+ message = `${fileName}${mainMessage}${details}${stack}`;
26
+ }
27
+ else {
28
+ message = stats;
23
29
  }
24
30
  lines = message.split('\n');
25
- // Strip webpack-added headers off errors/warnings
26
- // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js
27
- lines = lines.filter(line => !/Module [A-z ]+\(from/.test(line));
28
31
  // Transform parsing error into syntax error
29
32
  lines = lines.map(line => {
30
33
  const parsingError = /Line (\d+):(?:(\d+):)?\s*Parsing error: (.+)$/.exec(line);
@@ -45,15 +48,8 @@ function formatMessage(message) {
45
48
  // Clean up file name
46
49
  lines[0] = lines[0].replace(/^(.*) \d+:\d+-\d+$/, '$1');
47
50
  // Cleans up verbose "module not found" messages for files and packages.
48
- if ((_a = lines[1]) === null || _a === void 0 ? void 0 : _a.startsWith('Module not found: ')) {
49
- lines = [
50
- lines[0],
51
- lines[1]
52
- .replace('Error: ', '')
53
- .replace('Module not found: Cannot find file:', 'Cannot find file:')
54
- .replace('[CaseSensitivePathsPlugin] ', '')
55
- .replace("Cannot resolve 'file' or 'directory' ", ''),
56
- ];
51
+ if (lines[1] && lines[1].indexOf('Module not found:') !== -1) {
52
+ lines[1] = lines[1].replace('Error: ', '');
57
53
  }
58
54
  message = lines.join('\n');
59
55
  // Internal stacks are generally useless so we strip them... with the
@@ -90,29 +86,3 @@ function formatWebpackMessages(json) {
90
86
  return result;
91
87
  }
92
88
  exports.formatWebpackMessages = formatWebpackMessages;
93
- /* eslint-enable no-param-reassign */
94
- function formatProxyOptions(proxyOptions) {
95
- const formattedProxy = [];
96
- if (!Array.isArray(proxyOptions)) {
97
- if ('target' in proxyOptions) {
98
- formattedProxy.push(proxyOptions);
99
- }
100
- else {
101
- Array.prototype.push.apply(formattedProxy, Object.keys(proxyOptions).reduce((total, source) => {
102
- const option = proxyOptions[source];
103
- total.push({
104
- context: source,
105
- changeOrigin: true,
106
- logLevel: 'warn',
107
- ...(typeof option === 'string' ? { target: option } : option),
108
- });
109
- return total;
110
- }, []));
111
- }
112
- }
113
- else {
114
- formattedProxy.push(...proxyOptions);
115
- }
116
- return formattedProxy;
117
- }
118
- exports.formatProxyOptions = formatProxyOptions;
package/dist/index.d.ts CHANGED
@@ -34,3 +34,4 @@ export * from './ssr';
34
34
  export * from './tryResolve';
35
35
  export * from './analyzeProject';
36
36
  export * from './chainId';
37
+ export * from './reactVersion';
package/dist/index.js CHANGED
@@ -50,3 +50,4 @@ __exportStar(require("./ssr"), exports);
50
50
  __exportStar(require("./tryResolve"), exports);
51
51
  __exportStar(require("./analyzeProject"), exports);
52
52
  __exportStar(require("./chainId"), exports);
53
+ __exportStar(require("./reactVersion"), exports);
@@ -5,5 +5,9 @@ interface EntryPoint {
5
5
  }
6
6
  export declare const isSingleEntry: (entrypoints: EntryPoint[]) => boolean;
7
7
  export declare const getIpv4Interfaces: () => os.NetworkInterfaceInfo[];
8
+ export declare const getAddressUrls: (protocol: string | undefined, port: number) => {
9
+ type: string;
10
+ url: string;
11
+ }[];
8
12
  export declare const prettyInstructions: (appContext: any, config: any) => string;
9
13
  export {};
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.prettyInstructions = exports.getIpv4Interfaces = exports.isSingleEntry = void 0;
6
+ exports.prettyInstructions = exports.getAddressUrls = exports.getIpv4Interfaces = exports.isSingleEntry = void 0;
7
7
  const os_1 = __importDefault(require("os"));
8
8
  const compiled_1 = require("./compiled");
9
9
  const is_1 = require("./is");
@@ -39,9 +39,10 @@ const getAddressUrls = (protocol = 'http', port) => {
39
39
  return memo;
40
40
  }, []);
41
41
  };
42
+ exports.getAddressUrls = getAddressUrls;
42
43
  const prettyInstructions = (appContext, config) => {
43
44
  const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
44
- const urls = getAddressUrls(config.dev.https && (0, is_1.isDev)() ? 'https' : 'http', port);
45
+ const urls = (0, exports.getAddressUrls)(config.dev.https && (0, is_1.isDev)() ? 'https' : 'http', port);
45
46
  const routes = !apiOnly
46
47
  ? serverRoutes.filter(route => route.entryName)
47
48
  : serverRoutes;
@@ -0,0 +1 @@
1
+ export declare const isReact18: (cwd: string) => boolean;
@@ -0,0 +1,24 @@
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.isReact18 = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const compiled_1 = require("./compiled");
9
+ const isReact18 = (cwd) => {
10
+ const pkgPath = path_1.default.join(cwd, 'package.json');
11
+ if (!compiled_1.fs.existsSync(pkgPath)) {
12
+ return false;
13
+ }
14
+ const pkgInfo = JSON.parse(compiled_1.fs.readFileSync(pkgPath, 'utf8'));
15
+ const deps = {
16
+ ...pkgInfo.devDependencies,
17
+ ...pkgInfo.dependencies,
18
+ };
19
+ if (typeof deps.react !== 'string') {
20
+ return false;
21
+ }
22
+ return compiled_1.semver.satisfies(compiled_1.semver.minVersion(deps.react), '>=18.0.0');
23
+ };
24
+ exports.isReact18 = isReact18;
@@ -1,4 +1,4 @@
1
- export declare const createRuntimeExportsUtils: (pwd: any, namespace: string, ts?: any) => {
1
+ export declare const createRuntimeExportsUtils: (pwd?: any, namespace?: any) => {
2
2
  addExport: (statement: string) => void;
3
3
  getPath: () => string;
4
4
  };
@@ -20,9 +20,8 @@ const memo = (fn) => {
20
20
  return res;
21
21
  };
22
22
  };
23
- exports.createRuntimeExportsUtils = memo((pwd = '', namespace, ts = false) => {
24
- const entryExportFile = path_1.default.join(pwd, `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`);
25
- const entryExportTsFile = path_1.default.join(pwd, `.runtime-exports/${namespace ? `${namespace}.d.ts` : 'index.d.ts'}`);
23
+ exports.createRuntimeExportsUtils = memo((pwd = '', namespace = 'index') => {
24
+ const entryExportFile = path_1.default.join(pwd, `.runtime-exports/${namespace}.js`);
26
25
  // const ensure = () => {
27
26
  // if (!fs.existsSync(entryExportFile)) {
28
27
  // fs.outputFileSync(entryExportFile, '');
@@ -34,11 +33,8 @@ exports.createRuntimeExportsUtils = memo((pwd = '', namespace, ts = false) => {
34
33
  statement = (0, path_2.normalizeOutputPath)(statement);
35
34
  try {
36
35
  compiled_1.fs.ensureFileSync(entryExportFile);
37
- compiled_1.fs.ensureFileSync(entryExportTsFile);
38
36
  if (!compiled_1.fs.readFileSync(entryExportFile, 'utf8').includes(statement)) {
39
37
  compiled_1.fs.appendFileSync(entryExportFile, `${statement}\n`);
40
- ts &&
41
- compiled_1.fs.appendFileSync(entryExportTsFile, `${statement.replace('.js', '.d')}\n`);
42
38
  }
43
39
  }
44
40
  catch {
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.8.1",
14
+ "version": "1.16.0-alpha.underfin.001",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/index.d.ts",
17
17
  "main": "./dist/index.js",
@@ -23,19 +23,25 @@
23
23
  "./format": "./dist/format.js",
24
24
  "./constants": "./dist/constants.js",
25
25
  "./ssr": "./dist/ssr.js",
26
+ "./ajv": "./compiled/ajv/index.js",
26
27
  "./glob": "./compiled/glob/index.js",
27
28
  "./chalk": "./compiled/chalk/index.js",
28
29
  "./json5": "./compiled/json5/index.js",
29
30
  "./semver": "./compiled/semver/index.js",
30
31
  "./lodash": "./compiled/lodash/index.js",
31
32
  "./globby": "./compiled/globby/index.js",
33
+ "./fs-extra": "./compiled/fs-extra/index.js",
32
34
  "./fast-glob": "./compiled/fast-glob/index.js",
33
35
  "./gzip-size": "./compiled/gzip-size/index.js",
34
36
  "./mime-types": "./compiled/mime-types/index.js",
35
37
  "./strip-ansi": "./compiled/strip-ansi/index.js",
38
+ "./ajv-keywords": "./compiled/ajv-keywords/index.js",
36
39
  "./browserslist": "./compiled/browserslist/index.js",
37
40
  "./webpack-chain": "./compiled/webpack-chain/index.js",
38
- "./tsconfig-paths": "./compiled/tsconfig-paths/index.js"
41
+ "./tsconfig-paths": "./compiled/tsconfig-paths/index.js",
42
+ "./better-ajv-errors": "./compiled/better-ajv-errors/index.js",
43
+ "./webpack-dev-middleware": "./compiled/webpack-dev-middleware/index.js",
44
+ "./chain-id": "./dist/chainId.js"
39
45
  },
40
46
  "publishConfig": {
41
47
  "registry": "https://registry.npmjs.org/",
@@ -52,6 +58,12 @@
52
58
  "ssr": [
53
59
  "./dist/ssr.d.ts"
54
60
  ],
61
+ "ajv": [
62
+ "./compiled/ajv/types/ajv.d.ts"
63
+ ],
64
+ "ajv/json-schema": [
65
+ "./compiled/ajv/types/types/json-schema.d.ts"
66
+ ],
55
67
  "glob": [
56
68
  "./compiled/glob/index.d.ts"
57
69
  ],
@@ -70,6 +82,9 @@
70
82
  "globby": [
71
83
  "./compiled/globby/index.d.ts"
72
84
  ],
85
+ "fs-extra": [
86
+ "./compiled/fs-extra/index.d.ts"
87
+ ],
73
88
  "fast-glob": [
74
89
  "./compiled/fast-glob/index.d.ts"
75
90
  ],
@@ -82,6 +97,9 @@
82
97
  "strip-ansi": [
83
98
  "./compiled/strip-ansi/index.d.ts"
84
99
  ],
100
+ "ajv-keywords": [
101
+ "./compiled/ajv-keywords/index.d.ts"
102
+ ],
85
103
  "browserslist": [
86
104
  "./compiled/browserslist/index.d.ts"
87
105
  ],
@@ -90,6 +108,15 @@
90
108
  ],
91
109
  "tsconfig-paths": [
92
110
  "./compiled/tsconfig-paths/lib/index.d.ts"
111
+ ],
112
+ "better-ajv-errors": [
113
+ "./compiled/better-ajv-errors/index.d.ts"
114
+ ],
115
+ "webpack-dev-middleware": [
116
+ "./compiled/webpack-dev-middleware/types/index.d.ts"
117
+ ],
118
+ "chain-id": [
119
+ "./dist/chainId.d.ts"
93
120
  ]
94
121
  }
95
122
  },
@@ -98,9 +125,9 @@
98
125
  "lodash": "^4.17.21"
99
126
  },
100
127
  "devDependencies": {
101
- "@modern-js/types": "1.6.2",
102
- "@scripts/build": "0.0.0",
103
- "@scripts/jest-config": "0.0.0",
128
+ "@modern-js/types": "1.16.0",
129
+ "@scripts/build": "1.15.0",
130
+ "@scripts/jest-config": "1.15.0",
104
131
  "@types/jest": "^27",
105
132
  "@types/node": "^14",
106
133
  "typescript": "^4",