@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,5 +1,5 @@
1
1
  /*
2
- * Copyright 2022 The Backstage Authors
2
+ * Copyright 2023 The Backstage Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -14,22 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- // 'jest-runtime' is included with jest and should be kept in sync with the installed jest version
18
- // eslint-disable-next-line @backstage/no-undeclared-imports
19
- const { default: JestRuntime } = require('jest-runtime');
20
-
21
- module.exports = class CachingJestRuntime extends JestRuntime {
22
- constructor(config, ...restArgs) {
23
- super(config, ...restArgs);
24
- this.allowLoadAsEsm = config.extensionsToTreatAsEsm.includes('.mts');
25
- }
26
-
27
- // Unfortunately we need to use this unstable API to make sure that .js files
28
- // are only loaded as modules where ESM is supported, i.e. Node.js packages.
29
- unstable_shouldLoadAsEsm(path, ...restArgs) {
30
- if (!this.allowLoadAsEsm) {
31
- return false;
32
- }
33
- return super.unstable_shouldLoadAsEsm(path, ...restArgs);
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestCachingModuleLoader');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest caching module loader. ' +
23
+ 'Please install it as a dependency.',
24
+ );
34
25
  }
35
- };
26
+ throw e;
27
+ }
@@ -14,31 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const path = require('node:path');
18
-
19
- module.exports = {
20
- process(src, filename) {
21
- const assetFilename = JSON.stringify(path.basename(filename));
22
-
23
- if (filename.match(/\.icon\.svg$/)) {
24
- return {
25
- code: `const React = require('react');
26
- const SvgIcon = require('@material-ui/core/SvgIcon').default;
27
- module.exports = {
28
- __esModule: true,
29
- default: props => React.createElement(SvgIcon, props, {
30
- $$typeof: Symbol.for('react.element'),
31
- type: 'svg',
32
- ref: ref,
33
- key: null,
34
- props: Object.assign({}, props, {
35
- children: ${assetFilename}
36
- })
37
- })
38
- };`,
39
- };
40
- }
41
-
42
- return { code: `module.exports = ${assetFilename};` };
43
- },
44
- };
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestFileTransform');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest file transform. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
27
+ }
@@ -14,57 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const http = require('node:http');
18
- const https = require('node:https');
19
-
20
- const errorMessage = 'Network requests are not allowed in tests';
21
-
22
- const origHttpAgent = http.globalAgent;
23
- const origHttpsAgent = https.globalAgent;
24
- const origFetch = global.fetch;
25
- const origXMLHttpRequest = global.XMLHttpRequest;
26
-
27
- http.globalAgent = new http.Agent({
28
- lookup() {
29
- throw new Error(errorMessage);
30
- },
31
- });
32
-
33
- https.globalAgent = new https.Agent({
34
- lookup() {
35
- throw new Error(errorMessage);
36
- },
37
- });
38
-
39
- const BLOCKING_FETCH_SYMBOL = Symbol.for(
40
- 'backstage.jestRejectNetworkRequests.blockingFetch',
41
- );
42
-
43
- if (global.fetch) {
44
- const blockingFetch = async (input, init) => {
45
- // If global.fetch still has our marker, block the request
46
- if (global.fetch[BLOCKING_FETCH_SYMBOL]) {
47
- throw new Error(errorMessage);
48
- }
49
- // MSW (or something else) wrapped us - pass through
50
- return origFetch(input, init);
51
- };
52
- blockingFetch[BLOCKING_FETCH_SYMBOL] = true;
53
- global.fetch = blockingFetch;
54
- }
55
-
56
- if (global.XMLHttpRequest) {
57
- global.XMLHttpRequest = class {
58
- constructor() {
59
- throw new Error(errorMessage);
60
- }
61
- };
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestRejectNetworkRequests');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest network request rejection. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
62
27
  }
63
-
64
- // Reset overrides after each suite to make sure we don't pollute the test environment
65
- afterAll(() => {
66
- http.globalAgent = origHttpAgent;
67
- https.globalAgent = origHttpsAgent;
68
- global.fetch = origFetch;
69
- global.XMLHttpRequest = origXMLHttpRequest;
70
- });
@@ -14,74 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const { createHash } = require('node:crypto');
18
- const { transform } = require('sucrase');
19
- const sucrasePkg = require('sucrase/package.json');
20
-
21
- const ESM_REGEX = /\b(?:import|export)\b/;
22
-
23
- function createTransformer(config) {
24
- const process = (source, filePath) => {
25
- let transforms;
26
-
27
- if (filePath.endsWith('.esm.js')) {
28
- transforms = ['imports'];
29
- } else if (filePath.endsWith('.js')) {
30
- // This is a very rough filter to avoid transforming things that we quickly
31
- // can be sure are definitely not ESM modules.
32
- if (ESM_REGEX.test(source)) {
33
- transforms = ['imports', 'jsx']; // JSX within .js is currently allowed
34
- }
35
- } else if (filePath.endsWith('.jsx')) {
36
- transforms = ['jsx', 'imports'];
37
- } else if (filePath.endsWith('.ts')) {
38
- transforms = ['typescript', 'imports'];
39
- } else if (filePath.endsWith('.tsx')) {
40
- transforms = ['typescript', 'jsx', 'imports'];
41
- }
42
-
43
- // Only apply the jest transform to the test files themselves
44
- if (transforms && filePath.includes('.test.')) {
45
- transforms.push('jest');
46
- }
47
-
48
- if (transforms) {
49
- const { code, sourceMap: map } = transform(source, {
50
- transforms,
51
- filePath,
52
- disableESTransforms: true,
53
- sourceMapOptions: {
54
- compiledFilename: filePath,
55
- },
56
- });
57
- if (config.enableSourceMaps) {
58
- const b64 = Buffer.from(JSON.stringify(map), 'utf8').toString('base64');
59
- const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${b64}`;
60
- // Include both inline and object source maps, as inline source maps are
61
- // needed for support of some editor integrations.
62
- return { code: `${code}\n${suffix}`, map };
63
- }
64
- // We only return the `map` result if source maps are enabled, as they
65
- // have a negative impact on the coverage accuracy.
66
- return { code };
67
- }
68
-
69
- return { code: source };
70
- };
71
-
72
- const getCacheKey = sourceText => {
73
- return createHash('sha256')
74
- .update(sourceText)
75
- .update(Buffer.alloc(1))
76
- .update(sucrasePkg.version)
77
- .update(Buffer.alloc(1))
78
- .update(JSON.stringify(config))
79
- .update(Buffer.alloc(1))
80
- .update('1') // increment whenever the transform logic in this file changes
81
- .digest('hex');
82
- };
83
-
84
- return { process, getCacheKey };
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestSucraseTransform');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest Sucrase transform. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
85
27
  }
86
-
87
- module.exports = { createTransformer };
@@ -13,32 +13,15 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- const { createTransformer: createSwcTransformer } = require('@swc/jest');
17
16
 
18
- const ESM_REGEX = /\b(?:import|export)\b/;
19
-
20
- function createTransformer(config) {
21
- const swcTransformer = createSwcTransformer({
22
- inputSourceMap: false,
23
- ...config,
24
- });
25
- const process = (source, filePath, jestOptions) => {
26
- // Skip transformation of .js files without ESM syntax, we never transform from CJS to ESM
27
- if (filePath.endsWith('.js') && !ESM_REGEX.test(source)) {
28
- return { code: source };
29
- }
30
-
31
- // Skip transformation of .mjs files, they should only be used if ESM support is available
32
- if (jestOptions.supportsStaticESM && filePath.endsWith('.mjs')) {
33
- return { code: source };
34
- }
35
-
36
- return swcTransformer.process(source, filePath, jestOptions);
37
- };
38
-
39
- const getCacheKey = swcTransformer.getCacheKey;
40
-
41
- return { process, getCacheKey };
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestSwcTransform');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest SWC transform. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
42
27
  }
43
-
44
- module.exports = { createTransformer };
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2022 The Backstage Authors
2
+ * Copyright 2020 The Backstage Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -14,27 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const yaml = require('yaml');
18
- const crypto = require('node:crypto');
19
-
20
- function createTransformer(config) {
21
- const process = source => {
22
- const json = JSON.stringify(yaml.parse(source), null, 2);
23
- return { code: `module.exports = ${json}`, map: null };
24
- };
25
-
26
- const getCacheKey = sourceText => {
27
- return crypto
28
- .createHash('sha256')
29
- .update(sourceText)
30
- .update(Buffer.alloc(1))
31
- .update(JSON.stringify(config))
32
- .update(Buffer.alloc(1))
33
- .update('1') // increment whenever the transform logic in this file changes
34
- .digest('hex');
35
- };
36
-
37
- return { process, getCacheKey };
17
+ try {
18
+ module.exports = require('@backstage/cli-module-test-jest/config/jestYamlTransform');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-module-test-jest is required to use the jest YAML transform. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
38
27
  }
39
-
40
- module.exports = { createTransformer };
@@ -14,74 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const { pathToFileURL } = require('node:url');
18
- const { transformSync } = require('@swc/core');
19
- const { addHook } = require('pirates');
20
- const { Module } = require('node:module');
21
-
22
- // This hooks into module resolution and overrides imports of packages that
23
- // exist in the linked workspace to instead be resolved from the linked workspace.
24
- if (process.env.BACKSTAGE_CLI_LINKED_WORKSPACE) {
25
- const { join: joinPath } = require('node:path');
26
- const { getPackagesSync } = require('@manypkg/get-packages');
27
- const { packages: linkedPackages, root: linkedRoot } = getPackagesSync(
28
- process.env.BACKSTAGE_CLI_LINKED_WORKSPACE,
29
- );
30
-
31
- // Matches all packages in the linked workspaces, as well as sub-path exports from them
32
- const replacementRegex = new RegExp(
33
- `^(?:${linkedPackages
34
- .map(pkg => pkg.packageJson.name)
35
- .join('|')})(?:/.*)?$`,
36
- );
37
-
38
- const origLoad = Module._load;
39
- Module._load = function requireHook(request, parent) {
40
- if (!replacementRegex.test(request)) {
41
- return origLoad.call(this, request, parent);
42
- }
43
-
44
- // The package import that we're overriding will always existing in the root
45
- // node_modules of the linked workspace, so it's enough to override the
46
- // parent paths with that single entry
47
- return origLoad.call(this, request, {
48
- ...parent,
49
- paths: [joinPath(linkedRoot.dir, 'node_modules')],
50
- });
51
- };
17
+ try {
18
+ require('@backstage/cli-node/config/nodeTransform.cjs');
19
+ } catch (e) {
20
+ if (e.code === 'MODULE_NOT_FOUND') {
21
+ throw new Error(
22
+ '@backstage/cli-node is required to use the node transform. ' +
23
+ 'Please install it as a dependency.',
24
+ );
25
+ }
26
+ throw e;
52
27
  }
53
-
54
- addHook(
55
- (code, filename) => {
56
- const transformed = transformSync(code, {
57
- filename,
58
- sourceMaps: 'inline',
59
- module: {
60
- type: 'commonjs',
61
- ignoreDynamic: true,
62
- },
63
- jsc: {
64
- target: 'es2023',
65
- parser: {
66
- syntax: 'typescript',
67
- },
68
- },
69
- });
70
- process.send?.({ type: 'watch', path: filename });
71
- return transformed.code;
72
- },
73
- { extensions: ['.ts', '.cts'], ignoreNodeModules: true },
74
- );
75
-
76
- addHook(
77
- (code, filename) => {
78
- process.send?.({ type: 'watch', path: filename });
79
- return code;
80
- },
81
- { extensions: ['.js', '.cjs'], ignoreNodeModules: true },
82
- );
83
-
84
- // Register module hooks, used by "type": "module" in package.json, .mjs and
85
- // .mts files, as well as dynamic import(...)s, although dynamic imports will be
86
- // handled be the CommonJS hooks in this file if what it points to is CommonJS.
87
- Module.register('./nodeTransformHooks.mjs', pathToFileURL(__filename));