@backstage/cli 0.26.11-next.1 → 0.27.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/config/eslint-factory.js +1 -0
  3. package/dist/cjs/Lockfile-B4mqBkH6.cjs.js +86 -0
  4. package/dist/cjs/{build-fqzNfqa5.cjs.js → build-D5DoFqm6.cjs.js} +9 -13
  5. package/dist/cjs/{buildBackend-CrQ_GwBs.cjs.js → buildBackend-UK6nC6VL.cjs.js} +41 -38
  6. package/dist/cjs/{buildWorkspace-Bv-xt2y-.cjs.js → buildWorkspace-Z-hpJt9g.cjs.js} +4 -4
  7. package/dist/cjs/{bump-DG3jcOMS.cjs.js → bump-Qc4jNLOA.cjs.js} +7 -84
  8. package/dist/cjs/{clean-BGNU8ShE.cjs.js → clean-CB6dTqaG.cjs.js} +2 -2
  9. package/dist/cjs/{clean-83xjoKEJ.cjs.js → clean-DlsJGDLw.cjs.js} +2 -2
  10. package/dist/cjs/{codeowners-B-nGMoIG.cjs.js → codeowners-0MT7UP_S.cjs.js} +2 -2
  11. package/dist/cjs/{config-eLDUbNFK.cjs.js → config-B1bkp-HP.cjs.js} +43 -35
  12. package/dist/cjs/{createDistWorkspace-vhWGDizr.cjs.js → createDistWorkspace-0v54ePDJ.cjs.js} +3 -3
  13. package/dist/cjs/{createPlugin-B1qnN0IC.cjs.js → createPlugin-CUOGhq6P.cjs.js} +6 -6
  14. package/dist/cjs/{diff-BU6vhJMf.cjs.js → diff-BaiaASdN.cjs.js} +2 -2
  15. package/dist/cjs/{docs-GJmQNVkJ.cjs.js → docs-D8vejOxE.cjs.js} +3 -3
  16. package/dist/cjs/{fix-BhwlcHp_.cjs.js → fix-C7T4cvOB.cjs.js} +2 -2
  17. package/dist/cjs/{index-CTTm1_x6.cjs.js → index-1VtfY6wb.cjs.js} +4 -4
  18. package/dist/cjs/{index-CYI5nGsH.cjs.js → index-B8Ebu0mP.cjs.js} +38 -16
  19. package/dist/cjs/{index-DX-m2Ed0.cjs.js → index-BAcLy7dK.cjs.js} +48 -47
  20. package/dist/cjs/{index-pTrNn6sL.cjs.js → index-Bu7Vqly9.cjs.js} +50 -63
  21. package/dist/cjs/{index-D8nglRxA.cjs.js → index-F8W-9gIc.cjs.js} +2 -2
  22. package/dist/cjs/{info-CSiHnHqF.cjs.js → info-D_IhL0i0.cjs.js} +4 -4
  23. package/dist/cjs/{install-C6PA5oT4.cjs.js → install-DGaf_UuL.cjs.js} +5 -5
  24. package/dist/cjs/{lint-yikicfA4.cjs.js → lint-CRqMLZJ5.cjs.js} +2 -2
  25. package/dist/cjs/lint-Dkx_fBkS.cjs.js +10 -0
  26. package/dist/cjs/{lint-D0v-Gi6H.cjs.js → lint-EJvdRB7_.cjs.js} +2 -2
  27. package/dist/cjs/{list-deprecations-Coko6Rsb.cjs.js → list-deprecations-COfvNjrB.cjs.js} +2 -2
  28. package/dist/cjs/{packageDetection-B6lJYBh9.cjs.js → moduleFederation-CQZbFAit.cjs.js} +179 -38
  29. package/dist/cjs/{new-Da1kvXDQ.cjs.js → new-DB_oe66E.cjs.js} +6 -6
  30. package/dist/cjs/{pack-D8b4JM6B.cjs.js → pack-BcxxlYor.cjs.js} +2 -2
  31. package/dist/cjs/{packageExports-DDff9ia4.cjs.js → packageExports-FpoAU1Be.cjs.js} +3 -3
  32. package/dist/cjs/{packageLintConfigs-Bfvzg--7.cjs.js → packageLintConfigs-D7LMvTow.cjs.js} +3 -3
  33. package/dist/cjs/{packageRole-CXerjPpL.cjs.js → packageRole-BeuvccV9.cjs.js} +2 -2
  34. package/dist/cjs/{packages-BgyW9VKx.cjs.js → packages-DPPEGYIi.cjs.js} +3 -3
  35. package/dist/cjs/{print-C5tbwB1-.cjs.js → print-DuJqsJ2y.cjs.js} +3 -3
  36. package/dist/cjs/{role-BjmWpqH5.cjs.js → role-DAaP4LE5.cjs.js} +2 -2
  37. package/dist/cjs/{run-ClbD5HPt.cjs.js → run-CPcG7YxR.cjs.js} +2 -2
  38. package/dist/cjs/{schema-DbqftE60.cjs.js → schema-CR794PHv.cjs.js} +3 -3
  39. package/dist/cjs/{tasks-XfFuuYgf.cjs.js → tasks-4L8FqWEM.cjs.js} +2 -2
  40. package/dist/cjs/{test-BYKGLz-_.cjs.js → test-303IpaqN.cjs.js} +3 -3
  41. package/dist/cjs/{test-BEyXOT0e.cjs.js → test-y8AV0JOP.cjs.js} +3 -3
  42. package/dist/cjs/{validate-D4vVgxsi.cjs.js → validate-DZJIL6CK.cjs.js} +3 -3
  43. package/dist/index.cjs.js +1 -1
  44. package/package.json +12 -11
  45. package/templates/default-backend-plugin/package.json.hbs +0 -1
  46. package/templates/default-backend-plugin/src/service/router.ts +2 -3
  47. package/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +2 -2
  48. package/dist/cjs/Lockfile-BndFvzHc.cjs.js +0 -221
  49. package/dist/cjs/lint-DqMGmvsS.cjs.js +0 -112
@@ -1,49 +1,42 @@
1
1
  'use strict';
2
2
 
3
- var role = require('./role-BjmWpqH5.cjs.js');
3
+ var role = require('./role-DAaP4LE5.cjs.js');
4
4
  var fs = require('fs-extra');
5
- var index = require('./index-DX-m2Ed0.cjs.js');
5
+ var index = require('./index-BAcLy7dK.cjs.js');
6
6
  var webpack = require('webpack');
7
- var packageDetection = require('./packageDetection-B6lJYBh9.cjs.js');
7
+ var moduleFederation = require('./moduleFederation-CQZbFAit.cjs.js');
8
8
  require('yn');
9
9
  var path = require('path');
10
10
  require('react-dev-utils/FileSizeReporter');
11
11
  require('react-dev-utils/formatWebpackMessages');
12
+ var chalk = require('chalk');
12
13
  require('eslint-webpack-plugin');
13
14
  require('fork-ts-checker-webpack-plugin');
14
15
  require('html-webpack-plugin');
16
+ require('@module-federation/enhanced/webpack');
15
17
  require('@backstage/cli-common');
16
18
  require('react-dev-utils/ModuleScopePlugin');
17
19
  require('run-script-webpack-plugin');
20
+ require('@pmmmwh/react-refresh-webpack-plugin');
18
21
  require('@manypkg/get-packages');
19
22
  require('webpack-node-externals');
20
23
  require('lodash/pickBy');
21
- require('./run-ClbD5HPt.cjs.js');
24
+ require('./run-CPcG7YxR.cjs.js');
22
25
  require('mini-css-extract-plugin');
23
- require('@pmmmwh/react-refresh-webpack-plugin');
24
- var chalk = require('chalk');
25
- var cliNode = require('@backstage/cli-node');
26
- var uniq = require('lodash/uniq');
27
26
  var openBrowser = require('react-dev-utils/openBrowser');
28
27
  var WebpackDevServer = require('webpack-dev-server');
29
- require('semver');
30
- require('@yarnpkg/parsers');
31
- require('@yarnpkg/lockfile');
32
- require('minimatch');
33
- require('./yarn-Ukl9MOS0.cjs.js');
34
- require('lodash/partition');
35
28
  require('@backstage/config-loader');
36
29
  require('@backstage/config');
30
+ require('@backstage/cli-node');
37
31
  var chokidar = require('chokidar');
38
32
  var ctrlcWindows = require('ctrlc-windows');
39
33
  var errors = require('@backstage/errors');
40
34
  var debounce = require('lodash/debounce');
41
35
  var url = require('url');
42
36
  var spawn = require('cross-spawn');
43
- var lint = require('./lint-DqMGmvsS.cjs.js');
44
- var config = require('./config-eLDUbNFK.cjs.js');
45
- var Lockfile = require('./Lockfile-BndFvzHc.cjs.js');
37
+ var config = require('./config-B1bkp-HP.cjs.js');
46
38
  require('commander');
39
+ require('semver');
47
40
  require('./entryPoints-CoHH4lBA.cjs.js');
48
41
  require('./svgrTemplate-BTjBQ3by.cjs.js');
49
42
  require('p-queue');
@@ -55,15 +48,14 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
55
48
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
56
49
  var webpack__default = /*#__PURE__*/_interopDefaultCompat(webpack);
57
50
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
58
- var uniq__default = /*#__PURE__*/_interopDefaultCompat(uniq);
59
51
  var openBrowser__default = /*#__PURE__*/_interopDefaultCompat(openBrowser);
60
52
  var WebpackDevServer__default = /*#__PURE__*/_interopDefaultCompat(WebpackDevServer);
61
53
  var debounce__default = /*#__PURE__*/_interopDefaultCompat(debounce);
62
54
  var spawn__default = /*#__PURE__*/_interopDefaultCompat(spawn);
63
55
 
64
56
  async function serveBackend(options) {
65
- const paths = packageDetection.resolveBundlingPaths(options);
66
- const config = await packageDetection.createBackendConfig(paths, {
57
+ const paths = moduleFederation.resolveBundlingPaths(options);
58
+ const config = await moduleFederation.createBackendConfig(paths, {
67
59
  ...options,
68
60
  isDev: true
69
61
  });
@@ -86,37 +78,9 @@ async function serveBackend(options) {
86
78
  }
87
79
 
88
80
  async function serveBundle(options) {
89
- const paths = packageDetection.resolveBundlingPaths(options);
81
+ const paths = moduleFederation.resolveBundlingPaths(options);
90
82
  const targetPkg = await fs__default.default.readJson(paths.targetPackageJson);
91
83
  if (options.verifyVersions) {
92
- const lockfile = await Lockfile.Lockfile.load(
93
- index.paths.resolveTargetRoot("yarn.lock")
94
- );
95
- const result = lockfile.analyze({
96
- filter: lint.includedFilter,
97
- localPackages: cliNode.PackageGraph.fromPackages(
98
- await cliNode.PackageGraph.listTargetPackages()
99
- )
100
- });
101
- const problemPackages = [...result.newVersions, ...result.newRanges].map(({ name: name2 }) => name2).filter(lint.forbiddenDuplicatesFilter);
102
- if (problemPackages.length > 1) {
103
- console.log(
104
- chalk__default.default.yellow(
105
- `\u26A0\uFE0F Some of the following packages may be outdated or have duplicate installations:
106
-
107
- ${uniq__default.default(problemPackages).join(", ")}
108
- `
109
- )
110
- );
111
- console.log(
112
- chalk__default.default.yellow(
113
- `\u26A0\uFE0F This can be resolved using the following command:
114
-
115
- yarn backstage-cli versions:check --fix
116
- `
117
- )
118
- );
119
- }
120
84
  if (targetPkg.dependencies?.["react-router"]?.includes("beta") || targetPkg.dependencies?.["react-router-dom"]?.includes("beta")) {
121
85
  console.warn(
122
86
  chalk__default.default.yellow(`
@@ -161,10 +125,12 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
161
125
  );
162
126
  }
163
127
  const { frontendConfig, fullConfig } = cliConfig;
164
- const url = packageDetection.resolveBaseUrl(frontendConfig);
165
- const host = frontendConfig.getOptionalString("app.listen.host") || url.hostname;
166
- const port = frontendConfig.getOptionalNumber("app.listen.port") || Number(url.port) || (url.protocol === "https:" ? 443 : 80);
167
- const detectedModulesEntryPoint = await packageDetection.createDetectedModulesEntryPoint({
128
+ const url = moduleFederation.resolveBaseUrl(frontendConfig, options.moduleFederation);
129
+ const { host, port } = moduleFederation.resolveEndpoint(
130
+ frontendConfig,
131
+ options.moduleFederation
132
+ );
133
+ const detectedModulesEntryPoint = await moduleFederation.createDetectedModulesEntryPoint({
168
134
  config: fullConfig,
169
135
  targetPath: paths.targetPath,
170
136
  watch() {
@@ -182,9 +148,10 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
182
148
  return latestFrontendAppConfigs;
183
149
  }
184
150
  };
185
- const config$1 = await packageDetection.createConfig(paths, {
151
+ const config$1 = await moduleFederation.createConfig(paths, {
186
152
  ...commonConfigOptions,
187
- additionalEntryPoints: detectedModulesEntryPoint
153
+ additionalEntryPoints: detectedModulesEntryPoint,
154
+ moduleFederation: options.moduleFederation
188
155
  });
189
156
  if (process.env.EXPERIMENTAL_VITE) {
190
157
  const vite = require("vite");
@@ -200,7 +167,7 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
200
167
  "process.env.APP_CONFIG": JSON.stringify(cliConfig.frontendAppConfigs),
201
168
  // This allows for conditional imports of react-dom/client, since there's no way
202
169
  // to check for presence of it in source code without module resolution errors.
203
- "process.env.HAS_REACT_DOM_CLIENT": JSON.stringify(packageDetection.hasReactDomClient())
170
+ "process.env.HAS_REACT_DOM_CLIENT": JSON.stringify(moduleFederation.hasReactDomClient())
204
171
  },
205
172
  plugins: [
206
173
  viteReact(),
@@ -226,7 +193,7 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
226
193
  root: paths.targetPath
227
194
  });
228
195
  } else {
229
- const publicPaths = await packageDetection.resolveOptionalBundlingPaths({
196
+ const publicPaths = await moduleFederation.resolveOptionalBundlingPaths({
230
197
  entry: "src/index-public-experimental",
231
198
  dist: "dist/public"
232
199
  });
@@ -237,7 +204,7 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
237
204
  )
238
205
  );
239
206
  }
240
- const compiler = publicPaths ? webpack__default.default([config$1, await packageDetection.createConfig(publicPaths, commonConfigOptions)]) : webpack__default.default(config$1);
207
+ const compiler = publicPaths ? webpack__default.default([config$1, await moduleFederation.createConfig(publicPaths, commonConfigOptions)]) : webpack__default.default(config$1);
241
208
  webpackServer = new WebpackDevServer__default.default(
242
209
  {
243
210
  hot: !process.env.CI,
@@ -249,7 +216,7 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
249
216
  publicPath: config$1.output?.publicPath,
250
217
  directory: paths.targetPublic
251
218
  } : void 0,
252
- historyApiFallback: {
219
+ historyApiFallback: options.moduleFederation?.mode === "remote" ? false : {
253
220
  // Paths with dots should still use the history fallback.
254
221
  // See https://github.com/facebookincubator/create-react-app/issues/387.
255
222
  disableDotRule: true,
@@ -269,7 +236,12 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
269
236
  // When the dev server is behind a proxy, the host and public hostname differ
270
237
  allowedHosts: [url.hostname],
271
238
  client: {
272
- webSocketURL: "auto://0.0.0.0:0/ws"
239
+ webSocketURL: { hostname: host, port }
240
+ },
241
+ headers: {
242
+ "Access-Control-Allow-Origin": "*",
243
+ "Access-Control-Allow-Methods": "GET, OPTIONS",
244
+ "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
273
245
  }
274
246
  },
275
247
  compiler
@@ -289,7 +261,9 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
289
261
  resolve();
290
262
  }
291
263
  });
292
- openBrowser__default.default(url.href);
264
+ if (!options.skipOpenBrowser) {
265
+ openBrowser__default.default(url.href);
266
+ }
293
267
  const waitForExit = async () => {
294
268
  for (const signal of ["SIGINT", "SIGTERM"]) {
295
269
  process.on(signal, () => {
@@ -589,11 +563,17 @@ async function cleanDistAndServeBackend(options) {
589
563
  }
590
564
 
591
565
  async function startFrontend(options) {
566
+ const { name } = await fs.readJson(index.paths.resolveTarget("package.json"));
592
567
  const waitForExit = await serveBundle({
593
568
  entry: options.entry,
594
569
  checksEnabled: options.checksEnabled,
595
570
  configPaths: options.configPaths,
596
- verifyVersions: options.verifyVersions
571
+ verifyVersions: options.verifyVersions,
572
+ skipOpenBrowser: options.skipOpenBrowser,
573
+ moduleFederation: moduleFederation.getModuleFederationOptions(
574
+ name,
575
+ options.isModuleFederationRemote
576
+ )
597
577
  });
598
578
  await waitForExit();
599
579
  }
@@ -624,6 +604,13 @@ async function command(opts) {
624
604
  case "frontend-plugin":
625
605
  case "frontend-plugin-module":
626
606
  return startFrontend({ entry: "dev/index", ...options });
607
+ case "frontend-dynamic-container":
608
+ return startFrontend({
609
+ entry: "src/index",
610
+ ...options,
611
+ skipOpenBrowser: true,
612
+ isModuleFederationRemote: true
613
+ });
627
614
  default:
628
615
  throw new Error(
629
616
  `Start command is not supported for package role '${role$1}'`
@@ -632,4 +619,4 @@ async function command(opts) {
632
619
  }
633
620
 
634
621
  exports.command = command;
635
- //# sourceMappingURL=index-pTrNn6sL.cjs.js.map
622
+ //# sourceMappingURL=index-Bu7Vqly9.cjs.js.map
@@ -4,7 +4,7 @@ var fs = require('fs-extra');
4
4
  var chalk = require('chalk');
5
5
  var yaml = require('yaml');
6
6
  var inquirer = require('inquirer');
7
- var index$1 = require('./index-DX-m2Ed0.cjs.js');
7
+ var index$1 = require('./index-BAcLy7dK.cjs.js');
8
8
  var crypto = require('crypto');
9
9
  var openBrowser = require('react-dev-utils/openBrowser');
10
10
  var request = require('@octokit/request');
@@ -224,4 +224,4 @@ async function verifyGithubOrg(org) {
224
224
  }
225
225
 
226
226
  exports.default = index;
227
- //# sourceMappingURL=index-D8nglRxA.cjs.js.map
227
+ //# sourceMappingURL=index-F8W-9gIc.cjs.js.map
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DX-m2Ed0.cjs.js');
3
+ var index = require('./index-BAcLy7dK.cjs.js');
4
4
  var os = require('os');
5
- var run = require('./run-ClbD5HPt.cjs.js');
6
- var Lockfile = require('./Lockfile-BndFvzHc.cjs.js');
5
+ var run = require('./run-CPcG7YxR.cjs.js');
6
+ var Lockfile = require('./Lockfile-B4mqBkH6.cjs.js');
7
7
  require('minimatch');
8
8
  require('@manypkg/get-packages');
9
9
  require('chalk');
@@ -57,4 +57,4 @@ var info = async () => {
57
57
  };
58
58
 
59
59
  exports.default = info;
60
- //# sourceMappingURL=info-CSiHnHqF.cjs.js.map
60
+ //# sourceMappingURL=info-D_IhL0i0.cjs.js.map
@@ -1,15 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- require('semver');
5
4
  require('@yarnpkg/parsers');
6
5
  require('@yarnpkg/lockfile');
7
- var packages = require('./packages-BgyW9VKx.cjs.js');
8
- var index = require('./index-DX-m2Ed0.cjs.js');
6
+ var packages = require('./packages-DPPEGYIi.cjs.js');
7
+ var index = require('./index-BAcLy7dK.cjs.js');
9
8
  var chalk = require('chalk');
10
9
  var sortBy = require('lodash/sortBy');
11
10
  var groupBy = require('lodash/groupBy');
12
- var run = require('./run-ClbD5HPt.cjs.js');
11
+ var run = require('./run-CPcG7YxR.cjs.js');
13
12
  require('minimatch');
14
13
  require('@manypkg/get-packages');
15
14
  require('./yarn-Ukl9MOS0.cjs.js');
@@ -17,6 +16,7 @@ require('@backstage/errors');
17
16
  require('child_process');
18
17
  require('util');
19
18
  require('commander');
19
+ require('semver');
20
20
  require('@backstage/cli-common');
21
21
 
22
22
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -265,4 +265,4 @@ var install = async (pluginId, cmd) => {
265
265
  };
266
266
 
267
267
  exports.default = install;
268
- //# sourceMappingURL=install-C6PA5oT4.cjs.js.map
268
+ //# sourceMappingURL=install-DGaf_UuL.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DX-m2Ed0.cjs.js');
3
+ var index = require('./index-BAcLy7dK.cjs.js');
4
4
  var eslint = require('eslint');
5
5
  require('commander');
6
6
  require('chalk');
@@ -33,4 +33,4 @@ var lint = async (directories, opts) => {
33
33
  };
34
34
 
35
35
  exports.default = lint;
36
- //# sourceMappingURL=lint-yikicfA4.cjs.js.map
36
+ //# sourceMappingURL=lint-CRqMLZJ5.cjs.js.map
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var lint = async () => {
4
+ throw new Error(
5
+ "This command has been removed, please consider alternatives such as `yarn dedupe` instead."
6
+ );
7
+ };
8
+
9
+ exports.default = lint;
10
+ //# sourceMappingURL=lint-Dkx_fBkS.cjs.js.map
@@ -3,7 +3,7 @@
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
5
  var cliNode = require('@backstage/cli-node');
6
- var index = require('./index-DX-m2Ed0.cjs.js');
6
+ var index = require('./index-BAcLy7dK.cjs.js');
7
7
  var parallel = require('./parallel-BszNaKyc.cjs.js');
8
8
  require('commander');
9
9
  require('fs-extra');
@@ -88,4 +88,4 @@ async function command(opts) {
88
88
  }
89
89
 
90
90
  exports.command = command;
91
- //# sourceMappingURL=lint-D0v-Gi6H.cjs.js.map
91
+ //# sourceMappingURL=lint-EJvdRB7_.cjs.js.map
@@ -4,7 +4,7 @@ var chalk = require('chalk');
4
4
  var eslint = require('eslint');
5
5
  var path = require('path');
6
6
  var cliNode = require('@backstage/cli-node');
7
- var index = require('./index-DX-m2Ed0.cjs.js');
7
+ var index = require('./index-BAcLy7dK.cjs.js');
8
8
  require('commander');
9
9
  require('fs-extra');
10
10
  require('semver');
@@ -76,4 +76,4 @@ async function command(opts) {
76
76
  }
77
77
 
78
78
  exports.command = command;
79
- //# sourceMappingURL=list-deprecations-Coko6Rsb.cjs.js.map
79
+ //# sourceMappingURL=list-deprecations-COfvNjrB.cjs.js.map