@backstage/cli 0.36.0-next.1 → 0.36.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 (263) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/config/eslint-factory.js +1 -0
  3. package/config/getJestEnvironment.js +7 -29
  4. package/config/jest-environment-jsdom/index.js +9 -43
  5. package/config/jest.js +7 -401
  6. package/config/jestCacheResultProcessor.cjs +10 -6
  7. package/config/jestCachingModuleLoader.js +11 -19
  8. package/config/jestFileTransform.js +11 -28
  9. package/config/jestRejectNetworkRequests.js +10 -53
  10. package/config/jestSucraseTransform.js +10 -70
  11. package/config/jestSwcTransform.js +10 -27
  12. package/config/jestYamlTransform.js +11 -24
  13. package/config/nodeTransform.cjs +10 -70
  14. package/config/nodeTransformHooks.mjs +4 -278
  15. package/config/webpack-public-path.js +10 -14
  16. package/dist/cli-internal/src/InternalCliModule.cjs.js +11 -0
  17. package/dist/cli-internal/src/InternalCommandNode.cjs.js +25 -0
  18. package/dist/cli-internal/src/knownPluginPackages.cjs.js +40 -0
  19. package/dist/index.cjs.js +21 -10
  20. package/dist/wiring/CliInitializer.cjs.js +61 -20
  21. package/dist/wiring/CommandGraph.cjs.js +81 -23
  22. package/dist/wiring/discoverCliModules.cjs.js +44 -0
  23. package/package.json +27 -154
  24. package/dist/modules/build/commands/buildWorkspace.cjs.js +0 -24
  25. package/dist/modules/build/commands/package/build/command.cjs.js +0 -89
  26. package/dist/modules/build/commands/package/build/index.cjs.js +0 -8
  27. package/dist/modules/build/commands/package/clean.cjs.js +0 -21
  28. package/dist/modules/build/commands/package/postpack.cjs.js +0 -15
  29. package/dist/modules/build/commands/package/prepack.cjs.js +0 -29
  30. package/dist/modules/build/commands/package/start/command.cjs.js +0 -23
  31. package/dist/modules/build/commands/package/start/index.cjs.js +0 -8
  32. package/dist/modules/build/commands/package/start/resolveLinkedWorkspace.cjs.js +0 -34
  33. package/dist/modules/build/commands/package/start/startBackend.cjs.js +0 -46
  34. package/dist/modules/build/commands/package/start/startFrontend.cjs.js +0 -50
  35. package/dist/modules/build/commands/package/start/startPackage.cjs.js +0 -53
  36. package/dist/modules/build/commands/repo/build.cjs.js +0 -114
  37. package/dist/modules/build/commands/repo/clean.cjs.js +0 -41
  38. package/dist/modules/build/commands/repo/start.cjs.js +0 -150
  39. package/dist/modules/build/index.cjs.js +0 -192
  40. package/dist/modules/build/lib/buildBackend.cjs.js +0 -81
  41. package/dist/modules/build/lib/buildFrontend.cjs.js +0 -50
  42. package/dist/modules/build/lib/builder/config.cjs.js +0 -257
  43. package/dist/modules/build/lib/builder/packager.cjs.js +0 -131
  44. package/dist/modules/build/lib/builder/plugins.cjs.js +0 -125
  45. package/dist/modules/build/lib/builder/types.cjs.js +0 -10
  46. package/dist/modules/build/lib/bundler/ConfigInjectingHtmlWebpackPlugin.cjs.js +0 -43
  47. package/dist/modules/build/lib/bundler/bundle.cjs.js +0 -189
  48. package/dist/modules/build/lib/bundler/config.cjs.js +0 -308
  49. package/dist/modules/build/lib/bundler/hasReactDomClient.cjs.js +0 -17
  50. package/dist/modules/build/lib/bundler/linkWorkspaces.cjs.js +0 -34
  51. package/dist/modules/build/lib/bundler/moduleFederation.cjs.js +0 -135
  52. package/dist/modules/build/lib/bundler/optimization.cjs.js +0 -68
  53. package/dist/modules/build/lib/bundler/packageDetection.cjs.js +0 -124
  54. package/dist/modules/build/lib/bundler/paths.cjs.js +0 -62
  55. package/dist/modules/build/lib/bundler/server.cjs.js +0 -231
  56. package/dist/modules/build/lib/bundler/transforms.cjs.js +0 -145
  57. package/dist/modules/build/lib/config.cjs.js +0 -94
  58. package/dist/modules/build/lib/entryPoints.cjs.js +0 -49
  59. package/dist/modules/build/lib/ipc/IpcServer.cjs.js +0 -60
  60. package/dist/modules/build/lib/ipc/ServerDataStore.cjs.js +0 -36
  61. package/dist/modules/build/lib/optionsParser.cjs.js +0 -37
  62. package/dist/modules/build/lib/packager/createDistWorkspace.cjs.js +0 -235
  63. package/dist/modules/build/lib/packager/productionPack.cjs.js +0 -160
  64. package/dist/modules/build/lib/publishing.cjs.js +0 -40
  65. package/dist/modules/build/lib/role.cjs.js +0 -24
  66. package/dist/modules/build/lib/runner/runBackend.cjs.js +0 -136
  67. package/dist/modules/build/lib/typeDistProject.cjs.js +0 -89
  68. package/dist/modules/build/lib/urls.cjs.js +0 -13
  69. package/dist/modules/config/commands/docs.cjs.js +0 -62
  70. package/dist/modules/config/commands/print.cjs.js +0 -80
  71. package/dist/modules/config/commands/schema.cjs.js +0 -55
  72. package/dist/modules/config/commands/validate.cjs.js +0 -49
  73. package/dist/modules/config/index.cjs.js +0 -51
  74. package/dist/modules/config/lib/config.cjs.js +0 -94
  75. package/dist/modules/create-github-app/commands/create-github-app/GithubCreateAppServer.cjs.js +0 -127
  76. package/dist/modules/create-github-app/commands/create-github-app/index.cjs.js +0 -115
  77. package/dist/modules/create-github-app/index.cjs.js +0 -27
  78. package/dist/modules/info/commands/info.cjs.js +0 -181
  79. package/dist/modules/info/index.cjs.js +0 -19
  80. package/dist/modules/lint/commands/package/lint.cjs.js +0 -46
  81. package/dist/modules/lint/commands/repo/lint.cjs.js +0 -212
  82. package/dist/modules/lint/index.cjs.js +0 -82
  83. package/dist/modules/lint/lib/optionsParser.cjs.js +0 -37
  84. package/dist/modules/maintenance/commands/repo/fix.cjs.js +0 -400
  85. package/dist/modules/maintenance/commands/repo/list-deprecations.cjs.js +0 -74
  86. package/dist/modules/maintenance/index.cjs.js +0 -42
  87. package/dist/modules/migrate/commands/packageExports.cjs.js +0 -15
  88. package/dist/modules/migrate/commands/packageLintConfigs.cjs.js +0 -77
  89. package/dist/modules/migrate/commands/packageRole.cjs.js +0 -57
  90. package/dist/modules/migrate/commands/packageScripts.cjs.js +0 -87
  91. package/dist/modules/migrate/commands/reactRouterDeps.cjs.js +0 -51
  92. package/dist/modules/migrate/commands/versions/bump.cjs.js +0 -373
  93. package/dist/modules/migrate/commands/versions/migrate.cjs.js +0 -112
  94. package/dist/modules/migrate/index.cjs.js +0 -82
  95. package/dist/modules/migrate/lib/utils.cjs.js +0 -44
  96. package/dist/modules/migrate/lib/versioning/packages.cjs.js +0 -71
  97. package/dist/modules/migrate/lib/versioning/yarn.cjs.js +0 -28
  98. package/dist/modules/new/commands/new.cjs.js +0 -60
  99. package/dist/modules/new/index.cjs.js +0 -68
  100. package/dist/modules/new/lib/codeowners/codeowners.cjs.js +0 -92
  101. package/dist/modules/new/lib/createNewPackage.cjs.js +0 -32
  102. package/dist/modules/new/lib/defaultTemplates.cjs.js +0 -17
  103. package/dist/modules/new/lib/execution/PortableTemplater.cjs.js +0 -89
  104. package/dist/modules/new/lib/execution/executePortableTemplate.cjs.js +0 -66
  105. package/dist/modules/new/lib/execution/installNewPackage.cjs.js +0 -127
  106. package/dist/modules/new/lib/execution/writeTemplateContents.cjs.js +0 -116
  107. package/dist/modules/new/lib/preparation/collectPortableTemplateInput.cjs.js +0 -157
  108. package/dist/modules/new/lib/preparation/loadPortableTemplate.cjs.js +0 -81
  109. package/dist/modules/new/lib/preparation/loadPortableTemplateConfig.cjs.js +0 -132
  110. package/dist/modules/new/lib/preparation/resolvePackageParams.cjs.js +0 -40
  111. package/dist/modules/new/lib/preparation/selectTemplateInteractively.cjs.js +0 -38
  112. package/dist/modules/new/lib/tasks.cjs.js +0 -51
  113. package/dist/modules/new/lib/types.cjs.js +0 -19
  114. package/dist/modules/new/lib/version.cjs.js +0 -91
  115. package/dist/modules/test/commands/package/test.cjs.js +0 -65
  116. package/dist/modules/test/commands/repo/test.cjs.js +0 -288
  117. package/dist/modules/test/index.cjs.js +0 -54
  118. package/dist/modules/translations/commands/export.cjs.js +0 -127
  119. package/dist/modules/translations/commands/import.cjs.js +0 -164
  120. package/dist/modules/translations/index.cjs.js +0 -24
  121. package/dist/modules/translations/lib/discoverPackages.cjs.js +0 -121
  122. package/dist/modules/translations/lib/extractTranslations.cjs.js +0 -71
  123. package/dist/modules/translations/lib/messageFilePath.cjs.js +0 -43
  124. package/dist/packages/backend-defaults/package.json.cjs.js +0 -6
  125. package/dist/packages/backend-plugin-api/package.json.cjs.js +0 -6
  126. package/dist/packages/backend-test-utils/package.json.cjs.js +0 -6
  127. package/dist/packages/catalog-client/package.json.cjs.js +0 -6
  128. package/dist/packages/cli/package.json.cjs.js +0 -156
  129. package/dist/packages/config/package.json.cjs.js +0 -6
  130. package/dist/packages/core-app-api/package.json.cjs.js +0 -6
  131. package/dist/packages/core-components/package.json.cjs.js +0 -6
  132. package/dist/packages/core-plugin-api/package.json.cjs.js +0 -6
  133. package/dist/packages/dev-utils/package.json.cjs.js +0 -6
  134. package/dist/packages/errors/package.json.cjs.js +0 -6
  135. package/dist/packages/frontend-defaults/package.json.cjs.js +0 -6
  136. package/dist/packages/frontend-plugin-api/package.json.cjs.js +0 -6
  137. package/dist/packages/frontend-plugin-api/src/routing/describeParentCallSite.cjs.js +0 -26
  138. package/dist/packages/frontend-test-utils/package.json.cjs.js +0 -6
  139. package/dist/packages/test-utils/package.json.cjs.js +0 -6
  140. package/dist/packages/theme/package.json.cjs.js +0 -6
  141. package/dist/packages/types/package.json.cjs.js +0 -6
  142. package/dist/plugins/auth-backend/package.json.cjs.js +0 -6
  143. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +0 -6
  144. package/dist/plugins/catalog-node/package.json.cjs.js +0 -6
  145. package/dist/plugins/scaffolder-node/package.json.cjs.js +0 -6
  146. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +0 -6
  147. package/dist/wiring/CommandRegistry.cjs.js +0 -14
  148. package/dist/wiring/factory.cjs.js +0 -15
  149. package/dist/wiring/lazy.cjs.js +0 -22
  150. package/dist/wiring/types.cjs.js +0 -11
  151. package/templates/backend-plugin/.eslintrc.js.hbs +0 -1
  152. package/templates/backend-plugin/README.md.hbs +0 -28
  153. package/templates/backend-plugin/dev/index.ts.hbs +0 -60
  154. package/templates/backend-plugin/package.json.hbs +0 -44
  155. package/templates/backend-plugin/portable-template.yaml +0 -5
  156. package/templates/backend-plugin/src/index.ts.hbs +0 -1
  157. package/templates/backend-plugin/src/plugin.test.ts.hbs +0 -129
  158. package/templates/backend-plugin/src/plugin.ts.hbs +0 -32
  159. package/templates/backend-plugin/src/router.test.ts +0 -67
  160. package/templates/backend-plugin/src/router.ts +0 -51
  161. package/templates/backend-plugin/src/services/TodoListService.ts +0 -155
  162. package/templates/backend-plugin/src/setupTests.ts +0 -1
  163. package/templates/backend-plugin-module/.eslintrc.js.hbs +0 -1
  164. package/templates/backend-plugin-module/README.md.hbs +0 -5
  165. package/templates/backend-plugin-module/package.json.hbs +0 -34
  166. package/templates/backend-plugin-module/portable-template.yaml +0 -5
  167. package/templates/backend-plugin-module/src/index.ts.hbs +0 -8
  168. package/templates/backend-plugin-module/src/module.ts.hbs +0 -17
  169. package/templates/catalog-provider-module/.eslintrc.js.hbs +0 -1
  170. package/templates/catalog-provider-module/README.md.hbs +0 -5
  171. package/templates/catalog-provider-module/config.d.ts.hbs +0 -34
  172. package/templates/catalog-provider-module/package.json.hbs +0 -36
  173. package/templates/catalog-provider-module/portable-template.yaml +0 -9
  174. package/templates/catalog-provider-module/src/index.ts.hbs +0 -8
  175. package/templates/catalog-provider-module/src/module.ts.hbs +0 -29
  176. package/templates/catalog-provider-module/src/provider/readProviderConfigs.ts.hbs +0 -78
  177. package/templates/catalog-provider-module/src/provider/{{providerClass}}.test.ts.hbs +0 -18
  178. package/templates/catalog-provider-module/src/provider/{{providerClass}}.ts.hbs +0 -109
  179. package/templates/frontend-plugin/.eslintrc.js.hbs +0 -1
  180. package/templates/frontend-plugin/README.md.hbs +0 -13
  181. package/templates/frontend-plugin/dev/index.tsx.hbs +0 -11
  182. package/templates/frontend-plugin/package.json.hbs +0 -54
  183. package/templates/frontend-plugin/portable-template.yaml +0 -6
  184. package/templates/frontend-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +0 -28
  185. package/templates/frontend-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs +0 -37
  186. package/templates/frontend-plugin/src/components/ExampleComponent/index.ts +0 -1
  187. package/templates/frontend-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs +0 -19
  188. package/templates/frontend-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx.hbs +0 -308
  189. package/templates/frontend-plugin/src/components/ExampleFetchComponent/index.ts +0 -1
  190. package/templates/frontend-plugin/src/index.ts.hbs +0 -1
  191. package/templates/frontend-plugin/src/plugin.test.ts.hbs +0 -7
  192. package/templates/frontend-plugin/src/plugin.ts.hbs +0 -22
  193. package/templates/frontend-plugin/src/routes.ts.hbs +0 -5
  194. package/templates/frontend-plugin/src/setupTests.ts +0 -1
  195. package/templates/new-frontend-plugin/.eslintrc.js.hbs +0 -1
  196. package/templates/new-frontend-plugin/README.md.hbs +0 -20
  197. package/templates/new-frontend-plugin/dev/index.tsx +0 -10
  198. package/templates/new-frontend-plugin/package.json.hbs +0 -49
  199. package/templates/new-frontend-plugin/portable-template.yaml +0 -5
  200. package/templates/new-frontend-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +0 -28
  201. package/templates/new-frontend-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs +0 -37
  202. package/templates/new-frontend-plugin/src/components/ExampleComponent/index.ts +0 -1
  203. package/templates/new-frontend-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs +0 -19
  204. package/templates/new-frontend-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx.hbs +0 -308
  205. package/templates/new-frontend-plugin/src/components/ExampleFetchComponent/index.ts +0 -1
  206. package/templates/new-frontend-plugin/src/index.ts.hbs +0 -1
  207. package/templates/new-frontend-plugin/src/plugin.test.ts.hbs +0 -7
  208. package/templates/new-frontend-plugin/src/plugin.tsx.hbs +0 -25
  209. package/templates/new-frontend-plugin/src/routes.ts +0 -3
  210. package/templates/new-frontend-plugin/src/setupTests.ts +0 -1
  211. package/templates/new-frontend-plugin-module/.eslintrc.js.hbs +0 -1
  212. package/templates/new-frontend-plugin-module/README.md.hbs +0 -5
  213. package/templates/new-frontend-plugin-module/package.json.hbs +0 -35
  214. package/templates/new-frontend-plugin-module/portable-template.yaml +0 -5
  215. package/templates/new-frontend-plugin-module/src/index.ts.hbs +0 -1
  216. package/templates/new-frontend-plugin-module/src/module.tsx.hbs +0 -8
  217. package/templates/new-frontend-plugin-module/src/setupTests.ts +0 -1
  218. package/templates/node-library/.eslintrc.js.hbs +0 -1
  219. package/templates/node-library/README.md.hbs +0 -12
  220. package/templates/node-library/package.json.hbs +0 -29
  221. package/templates/node-library/portable-template.yaml +0 -3
  222. package/templates/node-library/src/index.ts.hbs +0 -1
  223. package/templates/node-library/src/setupTests.ts +0 -1
  224. package/templates/plugin-common-library/.eslintrc.js.hbs +0 -1
  225. package/templates/plugin-common-library/README.md.hbs +0 -5
  226. package/templates/plugin-common-library/package.json.hbs +0 -31
  227. package/templates/plugin-common-library/portable-template.yaml +0 -3
  228. package/templates/plugin-common-library/src/index.ts.hbs +0 -19
  229. package/templates/plugin-common-library/src/setupTests.ts +0 -1
  230. package/templates/plugin-node-library/.eslintrc.js.hbs +0 -1
  231. package/templates/plugin-node-library/README.md.hbs +0 -5
  232. package/templates/plugin-node-library/package.json.hbs +0 -30
  233. package/templates/plugin-node-library/portable-template.yaml +0 -3
  234. package/templates/plugin-node-library/src/index.ts.hbs +0 -18
  235. package/templates/plugin-node-library/src/setupTests.ts +0 -1
  236. package/templates/plugin-web-library/.eslintrc.js.hbs +0 -1
  237. package/templates/plugin-web-library/README.md.hbs +0 -5
  238. package/templates/plugin-web-library/package.json.hbs +0 -42
  239. package/templates/plugin-web-library/portable-template.yaml +0 -3
  240. package/templates/plugin-web-library/src/components/ExampleComponent/ExampleComponent.test.tsx +0 -17
  241. package/templates/plugin-web-library/src/components/ExampleComponent/ExampleComponent.tsx +0 -28
  242. package/templates/plugin-web-library/src/components/ExampleComponent/index.ts +0 -2
  243. package/templates/plugin-web-library/src/components/index.ts +0 -5
  244. package/templates/plugin-web-library/src/hooks/index.ts +0 -5
  245. package/templates/plugin-web-library/src/hooks/useExample/index.ts +0 -1
  246. package/templates/plugin-web-library/src/hooks/useExample/useExample.ts +0 -15
  247. package/templates/plugin-web-library/src/index.ts.hbs +0 -12
  248. package/templates/plugin-web-library/src/setupTests.ts +0 -1
  249. package/templates/scaffolder-backend-module/.eslintrc.js.hbs +0 -1
  250. package/templates/scaffolder-backend-module/README.md.hbs +0 -5
  251. package/templates/scaffolder-backend-module/package.json.hbs +0 -36
  252. package/templates/scaffolder-backend-module/portable-template.yaml +0 -6
  253. package/templates/scaffolder-backend-module/src/actions/example.test.ts +0 -24
  254. package/templates/scaffolder-backend-module/src/actions/example.ts +0 -39
  255. package/templates/scaffolder-backend-module/src/index.ts.hbs +0 -8
  256. package/templates/scaffolder-backend-module/src/module.ts +0 -21
  257. package/templates/web-library/.eslintrc.js.hbs +0 -1
  258. package/templates/web-library/README.md.hbs +0 -12
  259. package/templates/web-library/package.json.hbs +0 -30
  260. package/templates/web-library/portable-template.yaml +0 -3
  261. package/templates/web-library/src/index.ts.hbs +0 -1
  262. package/templates/web-library/src/setupTests.ts +0 -1
  263. /package/dist/{packages/opaque-internal → opaque-internal}/src/OpaqueType.cjs.js +0 -0
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@rspack/core');
4
-
5
- const optimization = (options) => {
6
- const { isDev, webpack } = options;
7
- const MinifyPlugin = webpack ? require("esbuild-loader").EsbuildPlugin : core.SwcJsMinimizerRspackPlugin;
8
- return {
9
- minimize: !isDev,
10
- minimizer: [
11
- new MinifyPlugin({
12
- target: "ES2023",
13
- format: "iife",
14
- exclude: "remoteEntry.js"
15
- }),
16
- // Avoid iife wrapping of module federation remote entry as it breaks the variable assignment
17
- new MinifyPlugin({
18
- target: "ES2023",
19
- format: void 0,
20
- include: "remoteEntry.js"
21
- }),
22
- webpack ? void 0 : new core.LightningCssMinimizerRspackPlugin()
23
- ],
24
- runtimeChunk: "single",
25
- splitChunks: {
26
- automaticNameDelimiter: "-",
27
- cacheGroups: {
28
- default: false,
29
- // Put all vendor code needed for initial page load in individual files if they're big
30
- // enough, if they're smaller they end up in the main
31
- packages: {
32
- chunks: "initial",
33
- test(module) {
34
- return Boolean(
35
- module?.resource?.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)
36
- );
37
- },
38
- name(module) {
39
- const packageName = module.resource.match(
40
- /[\\/]node_modules[\\/](.*?)([\\/]|$)/
41
- )[1];
42
- return packageName.replace("@", "");
43
- },
44
- filename: isDev ? "module-[name].js" : "static/module-[name].[contenthash:8].js",
45
- priority: 10,
46
- minSize: 1e5,
47
- minChunks: 1,
48
- ...webpack && {
49
- maxAsyncRequests: Infinity,
50
- maxInitialRequests: Infinity
51
- }
52
- },
53
- // filename is not included in type, but we need it
54
- // Group together the smallest modules
55
- vendor: {
56
- chunks: "initial",
57
- test: /[\\/]node_modules[\\/]/,
58
- name: "vendor",
59
- priority: 5,
60
- enforce: true
61
- }
62
- }
63
- }
64
- };
65
- };
66
-
67
- exports.optimization = optimization;
68
- //# sourceMappingURL=optimization.cjs.js.map
@@ -1,124 +0,0 @@
1
- 'use strict';
2
-
3
- var config = require('@backstage/config');
4
- var chokidar = require('chokidar');
5
- var fs = require('fs-extra');
6
- var PQueue = require('p-queue');
7
- var path = require('node:path');
8
- var cliCommon = require('@backstage/cli-common');
9
-
10
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
-
12
- var chokidar__default = /*#__PURE__*/_interopDefaultCompat(chokidar);
13
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
14
- var PQueue__default = /*#__PURE__*/_interopDefaultCompat(PQueue);
15
-
16
- const DETECTED_MODULES_MODULE_NAME = "__backstage-autodetected-plugins__";
17
- function readPackageDetectionConfig(config$1) {
18
- const packages = config$1.getOptional("app.packages");
19
- if (packages === void 0 || packages === null) {
20
- return void 0;
21
- }
22
- if (typeof packages === "string") {
23
- if (packages !== "all") {
24
- throw new Error(
25
- `Invalid app.packages mode, got '${packages}', expected 'all'`
26
- );
27
- }
28
- return {};
29
- }
30
- if (typeof packages !== "object" || Array.isArray(packages)) {
31
- throw new Error("Invalid config at 'app.packages', expected object");
32
- }
33
- const packagesConfig = new config.ConfigReader(packages, "app.packages");
34
- return {
35
- include: packagesConfig.getOptionalStringArray("include"),
36
- exclude: packagesConfig.getOptionalStringArray("exclude")
37
- };
38
- }
39
- async function detectPackages(targetPath, { include, exclude }) {
40
- const pkg = await fs__default.default.readJson(
41
- path.resolve(targetPath, "package.json")
42
- );
43
- return Object.keys(pkg.dependencies ?? {}).flatMap((depName) => {
44
- if (exclude?.includes(depName)) {
45
- return [];
46
- }
47
- if (include && !include.includes(depName)) {
48
- return [];
49
- }
50
- try {
51
- const depPackageJson = require(require.resolve(
52
- `${depName}/package.json`,
53
- { paths: [targetPath] }
54
- ));
55
- if (["frontend-plugin", "frontend-plugin-module"].includes(
56
- depPackageJson.backstage?.role ?? ""
57
- )) {
58
- const exp = depPackageJson.exports;
59
- if (exp && typeof exp === "object" && "./alpha" in exp) {
60
- return [
61
- { name: depName, import: depName },
62
- { name: depName, export: "./alpha", import: `${depName}/alpha` }
63
- ];
64
- }
65
- return [{ name: depName, import: depName }];
66
- }
67
- } catch {
68
- }
69
- return [];
70
- });
71
- }
72
- const writeQueue = new PQueue__default.default({ concurrency: 1 });
73
- async function writeDetectedPackagesModule(targetPath, pkgs) {
74
- const requirePackageScript = pkgs?.map(
75
- (pkg) => `{ name: ${JSON.stringify(pkg.name)}, export: ${JSON.stringify(
76
- pkg.export
77
- )}, default: require('${pkg.import}').default }`
78
- ).join(",");
79
- await writeQueue.add(async () => {
80
- const detectedModulesPath = path.join(
81
- targetPath,
82
- "node_modules",
83
- `${DETECTED_MODULES_MODULE_NAME}.js`
84
- );
85
- await fs__default.default.ensureDir(path.dirname(detectedModulesPath));
86
- await fs__default.default.writeFile(
87
- detectedModulesPath,
88
- `window['__@backstage/discovered__'] = { modules: [${requirePackageScript}] };`
89
- );
90
- });
91
- }
92
- async function createDetectedModulesEntryPoint(options) {
93
- const { config, watch, targetPath } = options;
94
- const detectionConfig = readPackageDetectionConfig(config);
95
- if (!detectionConfig) {
96
- return [];
97
- }
98
- const legacyDetectedModulesPath = path.join(
99
- cliCommon.targetPaths.rootDir,
100
- "node_modules",
101
- `${DETECTED_MODULES_MODULE_NAME}.js`
102
- );
103
- if (await fs__default.default.pathExists(legacyDetectedModulesPath)) {
104
- await fs__default.default.remove(legacyDetectedModulesPath);
105
- }
106
- if (watch) {
107
- const watcher = chokidar__default.default.watch(path.resolve(targetPath, "package.json"));
108
- watcher.on("change", async () => {
109
- await writeDetectedPackagesModule(
110
- targetPath,
111
- await detectPackages(targetPath, detectionConfig)
112
- );
113
- watch();
114
- });
115
- }
116
- await writeDetectedPackagesModule(
117
- targetPath,
118
- await detectPackages(targetPath, detectionConfig)
119
- );
120
- return [DETECTED_MODULES_MODULE_NAME];
121
- }
122
-
123
- exports.createDetectedModulesEntryPoint = createDetectedModulesEntryPoint;
124
- //# sourceMappingURL=packageDetection.cjs.js.map
@@ -1,62 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var path = require('node:path');
5
- var cliCommon = require('@backstage/cli-common');
6
-
7
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
-
9
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
10
-
11
- function resolveBundlingPaths(options) {
12
- const { entry, targetDir = cliCommon.targetPaths.dir } = options;
13
- const resolveTargetModule = (pathString) => {
14
- for (const ext of ["mjs", "js", "ts", "tsx", "jsx"]) {
15
- const filePath = path.resolve(targetDir, `${pathString}.${ext}`);
16
- if (fs__default.default.pathExistsSync(filePath)) {
17
- return filePath;
18
- }
19
- }
20
- return path.resolve(targetDir, `${pathString}.js`);
21
- };
22
- let targetPublic = void 0;
23
- let targetHtml = path.resolve(targetDir, "public/index.html");
24
- if (fs__default.default.pathExistsSync(targetHtml)) {
25
- targetPublic = path.resolve(targetDir, "public");
26
- } else {
27
- targetHtml = path.resolve(targetDir, `${entry}.html`);
28
- if (!fs__default.default.pathExistsSync(targetHtml)) {
29
- targetHtml = cliCommon.findOwnPaths(__dirname).resolve(
30
- "templates/serve_index.html"
31
- );
32
- }
33
- }
34
- const targetRunFile = path.resolve(targetDir, "src/run.ts");
35
- const runFileExists = fs__default.default.pathExistsSync(targetRunFile);
36
- return {
37
- targetHtml,
38
- targetPublic,
39
- targetPath: path.resolve(targetDir, "."),
40
- targetRunFile: runFileExists ? targetRunFile : void 0,
41
- targetDist: path.resolve(targetDir, options.dist ?? "dist"),
42
- targetAssets: path.resolve(targetDir, "assets"),
43
- targetSrc: path.resolve(targetDir, "src"),
44
- targetDev: path.resolve(targetDir, "dev"),
45
- targetEntry: resolveTargetModule(entry),
46
- targetTsConfig: cliCommon.targetPaths.resolveRoot("tsconfig.json"),
47
- targetPackageJson: path.resolve(targetDir, "package.json"),
48
- rootNodeModules: cliCommon.targetPaths.resolveRoot("node_modules"),
49
- root: cliCommon.targetPaths.rootDir
50
- };
51
- }
52
- async function resolveOptionalBundlingPaths(options) {
53
- const resolvedPaths = resolveBundlingPaths(options);
54
- if (await fs__default.default.pathExists(resolvedPaths.targetEntry)) {
55
- return resolvedPaths;
56
- }
57
- return void 0;
58
- }
59
-
60
- exports.resolveBundlingPaths = resolveBundlingPaths;
61
- exports.resolveOptionalBundlingPaths = resolveOptionalBundlingPaths;
62
- //# sourceMappingURL=paths.cjs.js.map
@@ -1,231 +0,0 @@
1
- 'use strict';
2
-
3
- var chalk = require('chalk');
4
- var fs = require('fs-extra');
5
- var path = require('node:path');
6
- var openBrowser = require('react-dev-utils/openBrowser');
7
- var core = require('@rspack/core');
8
- var devServer = require('@rspack/dev-server');
9
- var cliCommon = require('@backstage/cli-common');
10
- var config = require('../config.cjs.js');
11
- var config$1 = require('./config.cjs.js');
12
- var packageDetection = require('./packageDetection.cjs.js');
13
- var paths = require('./paths.cjs.js');
14
- var moduleFederation = require('./moduleFederation.cjs.js');
15
-
16
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
17
-
18
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
19
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
20
- var openBrowser__default = /*#__PURE__*/_interopDefaultCompat(openBrowser);
21
-
22
- async function serveBundle(options) {
23
- const paths$1 = paths.resolveBundlingPaths(options);
24
- const targetPkg = await fs__default.default.readJson(paths$1.targetPackageJson);
25
- if (options.verifyVersions) {
26
- if (targetPkg.dependencies?.["react-router"]?.includes("beta") || targetPkg.dependencies?.["react-router-dom"]?.includes("beta")) {
27
- console.warn(
28
- chalk__default.default.yellow(`
29
- DEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release.
30
- Please migrate to use React Router v6 stable.
31
- See https://backstage.io/docs/tutorials/react-router-stable-migration
32
- `)
33
- );
34
- }
35
- }
36
- checkReactVersion();
37
- const { name } = await fs__default.default.readJson(
38
- path.resolve(options.targetDir ?? cliCommon.targetPaths.dir, "package.json")
39
- );
40
- let devServer$1 = void 0;
41
- let latestFrontendAppConfigs = [];
42
- const triggerReload = () => {
43
- if (devServer$1) {
44
- devServer$1.invalidate();
45
- if (!process.env.LEGACY_WEBPACK_BUILD) {
46
- devServer$1.sendMessage(
47
- devServer$1.webSocketServer?.clients ?? [],
48
- "static-changed"
49
- );
50
- }
51
- }
52
- };
53
- const cliConfig = await config.loadCliConfig({
54
- args: options.configPaths,
55
- targetDir: options.targetDir,
56
- fromPackage: name,
57
- withFilteredKeys: true,
58
- watch(appConfigs) {
59
- latestFrontendAppConfigs = appConfigs;
60
- triggerReload();
61
- }
62
- });
63
- latestFrontendAppConfigs = cliConfig.frontendAppConfigs;
64
- const appBaseUrl = cliConfig.frontendConfig.getOptionalString("app.baseUrl");
65
- const backendBaseUrl = cliConfig.frontendConfig.getOptionalString("backend.baseUrl");
66
- if (appBaseUrl && appBaseUrl === backendBaseUrl) {
67
- console.log(
68
- chalk__default.default.yellow(
69
- `\u26A0\uFE0F Conflict between app baseUrl and backend baseUrl:
70
-
71
- app.baseUrl: ${appBaseUrl}
72
- backend.baseUrl: ${backendBaseUrl}
73
-
74
- Must have unique hostname and/or ports.
75
-
76
- This can be resolved by changing app.baseUrl and backend.baseUrl to point to their respective local development ports.
77
- `
78
- )
79
- );
80
- }
81
- const { frontendConfig, fullConfig } = cliConfig;
82
- const url = config$1.resolveBaseUrl(frontendConfig, options.moduleFederationRemote);
83
- const { host, port } = config$1.resolveEndpoint(
84
- frontendConfig,
85
- options.moduleFederationRemote
86
- );
87
- const detectedModulesEntryPoint = await packageDetection.createDetectedModulesEntryPoint({
88
- config: fullConfig,
89
- targetPath: paths$1.targetPath,
90
- watch() {
91
- triggerReload();
92
- }
93
- });
94
- const moduleFederationSharedDependenciesEntryPoint = await moduleFederation.createRuntimeSharedDependenciesEntryPoint({
95
- targetPath: paths$1.targetPath,
96
- watch() {
97
- triggerReload();
98
- }
99
- });
100
- const webpack = process.env.LEGACY_WEBPACK_BUILD ? require("webpack") : void 0;
101
- const commonConfigOptions = {
102
- ...options,
103
- checksEnabled: options.checksEnabled,
104
- isDev: true,
105
- baseUrl: url,
106
- frontendConfig,
107
- webpack,
108
- getFrontendAppConfigs: () => {
109
- return latestFrontendAppConfigs;
110
- }
111
- };
112
- const config$2 = await config$1.createConfig(paths$1, {
113
- ...commonConfigOptions,
114
- additionalEntryPoints: [
115
- ...detectedModulesEntryPoint,
116
- ...moduleFederationSharedDependenciesEntryPoint
117
- ],
118
- moduleFederationRemote: options.moduleFederationRemote
119
- });
120
- const bundler = webpack ?? core.rspack;
121
- const DevServer = webpack ? require("webpack-dev-server") : devServer.RspackDevServer;
122
- if (webpack) {
123
- console.log(chalk__default.default.yellow(`\u26A0\uFE0F WARNING: Using legacy WebPack dev server.`));
124
- }
125
- const publicPaths = await paths.resolveOptionalBundlingPaths({
126
- entry: "src/index-public-experimental",
127
- dist: "dist/public"
128
- });
129
- if (publicPaths) {
130
- console.log(
131
- chalk__default.default.yellow(
132
- `\u26A0\uFE0F WARNING: The app /public entry point is an experimental feature that may receive immediate breaking changes.`
133
- )
134
- );
135
- }
136
- const compiler = publicPaths ? bundler([config$2, await config$1.createConfig(publicPaths, commonConfigOptions)]) : bundler(config$2);
137
- devServer$1 = new DevServer(
138
- {
139
- hot: !process.env.CI,
140
- devMiddleware: {
141
- publicPath: config$2.output?.publicPath,
142
- stats: "errors-warnings"
143
- },
144
- static: paths$1.targetPublic ? {
145
- publicPath: config$2.output?.publicPath,
146
- directory: paths$1.targetPublic
147
- } : void 0,
148
- historyApiFallback: options.moduleFederationRemote ? false : {
149
- // Paths with dots should still use the history fallback.
150
- // See https://github.com/facebookincubator/create-react-app/issues/387.
151
- disableDotRule: true,
152
- // The index needs to be rewritten relative to the new public path, including subroutes.
153
- index: `${config$2.output?.publicPath}index.html`
154
- },
155
- server: url.protocol === "https:" ? {
156
- type: "https",
157
- options: {
158
- cert: fullConfig.getOptionalString(
159
- "app.https.certificate.cert"
160
- ),
161
- key: fullConfig.getOptionalString("app.https.certificate.key")
162
- }
163
- } : {},
164
- host,
165
- port,
166
- proxy: targetPkg.proxy,
167
- // When the dev server is behind a proxy, the host and public hostname differ
168
- allowedHosts: [url.hostname],
169
- client: {
170
- webSocketURL: { hostname: host, port }
171
- },
172
- headers: {
173
- "Access-Control-Allow-Origin": "*",
174
- "Access-Control-Allow-Methods": "GET, OPTIONS",
175
- "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
176
- }
177
- },
178
- compiler
179
- );
180
- await new Promise(async (resolve, reject) => {
181
- if (devServer$1) {
182
- devServer$1.startCallback((err) => {
183
- if (err) {
184
- reject(err);
185
- return;
186
- }
187
- resolve();
188
- });
189
- } else {
190
- resolve();
191
- }
192
- });
193
- if (!options.skipOpenBrowser) {
194
- openBrowser__default.default(url.href);
195
- }
196
- const waitForExit = async () => {
197
- for (const signal of ["SIGINT", "SIGTERM"]) {
198
- process.on(signal, () => {
199
- devServer$1?.stop();
200
- process.exit();
201
- });
202
- }
203
- return new Promise(() => {
204
- });
205
- };
206
- return waitForExit;
207
- }
208
- function checkReactVersion() {
209
- try {
210
- const reactPkgPath = require.resolve("react/package.json", {
211
- paths: [cliCommon.targetPaths.rootDir]
212
- });
213
- const reactPkg = require(reactPkgPath);
214
- if (reactPkg.version.startsWith("16.")) {
215
- console.log(
216
- chalk__default.default.yellow(
217
- `
218
- \u26A0\uFE0F \u26A0\uFE0F
219
- \u26A0\uFE0F You are using React version 16, which is deprecated for use in Backstage. \u26A0\uFE0F
220
- \u26A0\uFE0F Please upgrade to React 17 by updating your packages/app dependencies. \u26A0\uFE0F
221
- \u26A0\uFE0F \u26A0\uFE0F
222
- `
223
- )
224
- );
225
- }
226
- } catch {
227
- }
228
- }
229
-
230
- exports.serveBundle = serveBundle;
231
- //# sourceMappingURL=server.cjs.js.map
@@ -1,145 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@rspack/core');
4
-
5
- const transforms = (options) => {
6
- const { isDev, isBackend, webpack } = options;
7
- const CssExtractPlugin = webpack ? require("mini-css-extract-plugin") : core.CssExtractRspackPlugin;
8
- function insertBeforeJssStyles(element) {
9
- const head = document.head;
10
- const firstJssNode = head.querySelector("style[data-jss]");
11
- if (!firstJssNode) {
12
- head.appendChild(element);
13
- } else {
14
- head.insertBefore(element, firstJssNode);
15
- }
16
- }
17
- const loaders = [
18
- {
19
- test: /\.(tsx?)$/,
20
- exclude: /node_modules/,
21
- use: [
22
- {
23
- loader: webpack ? require.resolve("swc-loader") : "builtin:swc-loader",
24
- options: {
25
- jsc: {
26
- target: "es2023",
27
- externalHelpers: !isBackend,
28
- parser: {
29
- syntax: "typescript",
30
- tsx: !isBackend,
31
- dynamicImport: true
32
- },
33
- transform: {
34
- react: isBackend ? void 0 : {
35
- runtime: "automatic",
36
- refresh: isDev
37
- }
38
- }
39
- }
40
- }
41
- }
42
- ]
43
- },
44
- {
45
- test: /\.(jsx?|mjs|cjs)$/,
46
- exclude: /node_modules/,
47
- use: [
48
- {
49
- loader: webpack ? require.resolve("swc-loader") : "builtin:swc-loader",
50
- options: {
51
- jsc: {
52
- target: "es2023",
53
- externalHelpers: !isBackend,
54
- parser: {
55
- syntax: "ecmascript",
56
- jsx: !isBackend,
57
- dynamicImport: true
58
- },
59
- transform: {
60
- react: isBackend ? void 0 : {
61
- runtime: "automatic",
62
- refresh: isDev
63
- }
64
- }
65
- }
66
- }
67
- }
68
- ]
69
- },
70
- {
71
- test: /\.(js|mjs|cjs)$/,
72
- resolve: {
73
- fullySpecified: false
74
- }
75
- },
76
- {
77
- test: [
78
- /\.bmp$/,
79
- /\.gif$/,
80
- /\.jpe?g$/,
81
- /\.png$/,
82
- /\.frag$/,
83
- /\.vert$/,
84
- { and: [/\.svg$/, { not: [/\.icon\.svg$/] }] },
85
- /\.xml$/,
86
- /\.ico$/,
87
- /\.webp$/
88
- ],
89
- type: "asset/resource",
90
- generator: {
91
- filename: "static/[name].[hash:8][ext]"
92
- }
93
- },
94
- {
95
- test: /\.(eot|woff|woff2|ttf)$/i,
96
- type: "asset/resource",
97
- generator: {
98
- filename: "static/[name].[hash][ext][query]"
99
- }
100
- },
101
- {
102
- test: /\.ya?ml$/,
103
- use: require.resolve("yml-loader")
104
- },
105
- {
106
- include: /\.(md)$/,
107
- type: "asset/resource",
108
- generator: {
109
- filename: "static/[name].[hash][ext][query]"
110
- }
111
- },
112
- {
113
- test: /\.css$/i,
114
- use: [
115
- isDev ? {
116
- loader: require.resolve("style-loader"),
117
- options: {
118
- insert: insertBeforeJssStyles
119
- }
120
- } : CssExtractPlugin.loader,
121
- {
122
- loader: require.resolve("css-loader"),
123
- options: {
124
- sourceMap: true
125
- }
126
- }
127
- ]
128
- }
129
- ];
130
- const plugins = new Array();
131
- if (!isDev) {
132
- plugins.push(
133
- new CssExtractPlugin({
134
- filename: "static/[name].[contenthash:8].css",
135
- chunkFilename: "static/[name].[id].[contenthash:8].css",
136
- insert: insertBeforeJssStyles
137
- // Only applies to async chunks
138
- })
139
- );
140
- }
141
- return { loaders, plugins };
142
- };
143
-
144
- exports.transforms = transforms;
145
- //# sourceMappingURL=transforms.cjs.js.map