@modern-js/plugin-testing 2.0.0-beta.2 → 2.0.0-beta.4

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 (106) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/dist/js/modern/base/config/index.js +29 -9
  3. package/dist/js/modern/base/config/patches/assetsModule.js +7 -7
  4. package/dist/js/modern/base/config/patches/filemock.js +4 -1
  5. package/dist/js/modern/base/config/patches/index.js +30 -7
  6. package/dist/js/modern/base/config/patches/transformer.js +13 -18
  7. package/dist/js/modern/base/config/resolver.js +11 -6
  8. package/dist/js/modern/base/config/testConfigOperator.js +29 -23
  9. package/dist/js/modern/base/config/transformer/babelTransformer.js +16 -8
  10. package/dist/js/modern/base/hook.js +10 -5
  11. package/dist/js/modern/base/index.js +14 -6
  12. package/dist/js/modern/base/runJest.js +73 -62
  13. package/dist/js/modern/base/utils.js +40 -23
  14. package/dist/js/modern/cli/bff/app.js +37 -12
  15. package/dist/js/modern/cli/bff/constant.js +4 -1
  16. package/dist/js/modern/cli/bff/index.js +95 -52
  17. package/dist/js/modern/cli/bff/mockAPI.js +79 -64
  18. package/dist/js/modern/cli/bff/setup.js +71 -34
  19. package/dist/js/modern/cli/bff/utils/index.js +31 -15
  20. package/dist/js/modern/cli/index.js +64 -30
  21. package/dist/js/modern/cli/test.js +53 -18
  22. package/dist/js/modern/constant.js +4 -1
  23. package/dist/js/modern/index.js +3 -3
  24. package/dist/js/modern/modern-app.env.d.js +0 -0
  25. package/dist/js/modern/runtime-testing/app.js +25 -14
  26. package/dist/js/modern/runtime-testing/base.js +7 -3
  27. package/dist/js/modern/runtime-testing/customRender.js +24 -10
  28. package/dist/js/modern/runtime-testing/index.js +1 -1
  29. package/dist/js/modern/runtime-testing/reduck.js +41 -19
  30. package/dist/js/modern/runtime-testing/request.js +4 -4
  31. package/dist/js/modern/runtime-testing/resolvePlugins.js +24 -8
  32. package/dist/js/node/base/config/index.js +56 -18
  33. package/dist/js/node/base/config/patches/assetsModule.js +30 -12
  34. package/dist/js/node/base/config/patches/filemock.js +22 -7
  35. package/dist/js/node/base/config/patches/index.js +50 -15
  36. package/dist/js/node/base/config/patches/transformer.js +38 -25
  37. package/dist/js/node/base/config/resolver.js +37 -10
  38. package/dist/js/node/base/config/testConfigOperator.js +49 -30
  39. package/dist/js/node/base/config/transformer/babelTransformer.js +40 -15
  40. package/dist/js/node/base/hook.js +28 -13
  41. package/dist/js/node/base/index.js +31 -63
  42. package/dist/js/node/base/runJest.js +99 -71
  43. package/dist/js/node/base/utils.js +66 -34
  44. package/dist/js/node/cli/bff/app.js +57 -22
  45. package/dist/js/node/cli/bff/constant.js +22 -7
  46. package/dist/js/node/cli/bff/index.js +121 -65
  47. package/dist/js/node/cli/bff/mockAPI.js +103 -71
  48. package/dist/js/node/cli/bff/setup.js +100 -38
  49. package/dist/js/node/cli/bff/utils/index.js +55 -22
  50. package/dist/js/node/cli/index.js +87 -46
  51. package/dist/js/node/cli/test.js +79 -27
  52. package/dist/js/node/constant.js +22 -7
  53. package/dist/js/node/index.js +19 -18
  54. package/dist/js/node/modern-app.env.d.js +0 -0
  55. package/dist/js/node/runtime-testing/app.js +53 -25
  56. package/dist/js/node/runtime-testing/base.js +30 -33
  57. package/dist/js/node/runtime-testing/customRender.js +49 -18
  58. package/dist/js/node/runtime-testing/index.js +18 -27
  59. package/dist/js/node/runtime-testing/reduck.js +67 -31
  60. package/dist/js/node/runtime-testing/request.js +32 -13
  61. package/dist/js/node/runtime-testing/resolvePlugins.js +41 -12
  62. package/dist/js/treeshaking/base/config/index.js +150 -31
  63. package/dist/js/treeshaking/base/config/patches/assetsModule.js +9 -11
  64. package/dist/js/treeshaking/base/config/patches/filemock.js +2 -1
  65. package/dist/js/treeshaking/base/config/patches/index.js +221 -64
  66. package/dist/js/treeshaking/base/config/patches/transformer.js +34 -37
  67. package/dist/js/treeshaking/base/config/resolver.js +24 -11
  68. package/dist/js/treeshaking/base/config/testConfigOperator.js +120 -69
  69. package/dist/js/treeshaking/base/config/transformer/babelTransformer.js +16 -10
  70. package/dist/js/treeshaking/base/hook.js +8 -7
  71. package/dist/js/treeshaking/base/index.js +7 -6
  72. package/dist/js/treeshaking/base/runJest.js +281 -164
  73. package/dist/js/treeshaking/base/types/index.js +1 -0
  74. package/dist/js/treeshaking/base/utils.js +72 -48
  75. package/dist/js/treeshaking/cli/bff/app.js +192 -68
  76. package/dist/js/treeshaking/cli/bff/constant.js +2 -1
  77. package/dist/js/treeshaking/cli/bff/index.js +291 -130
  78. package/dist/js/treeshaking/cli/bff/mockAPI.js +181 -91
  79. package/dist/js/treeshaking/cli/bff/setup.js +185 -59
  80. package/dist/js/treeshaking/cli/bff/utils/index.js +47 -21
  81. package/dist/js/treeshaking/cli/index.js +248 -108
  82. package/dist/js/treeshaking/cli/test.js +177 -44
  83. package/dist/js/treeshaking/constant.js +2 -1
  84. package/dist/js/treeshaking/index.js +3 -3
  85. package/dist/js/treeshaking/modern-app.env.d.js +1 -0
  86. package/dist/js/treeshaking/runtime-testing/app.js +85 -39
  87. package/dist/js/treeshaking/runtime-testing/base.js +4 -3
  88. package/dist/js/treeshaking/runtime-testing/customRender.js +38 -10
  89. package/dist/js/treeshaking/runtime-testing/index.js +1 -1
  90. package/dist/js/treeshaking/runtime-testing/reduck.js +85 -33
  91. package/dist/js/treeshaking/runtime-testing/request.js +49 -19
  92. package/dist/js/treeshaking/runtime-testing/resolvePlugins.js +45 -14
  93. package/dist/types/base/config/index.d.ts +1 -0
  94. package/dist/types/base/config/patches/assetsModule.d.ts +1 -0
  95. package/dist/types/base/config/patches/filemock.d.ts +1 -0
  96. package/dist/types/base/config/patches/transformer.d.ts +1 -0
  97. package/dist/types/base/config/resolver.d.ts +2 -1
  98. package/dist/types/base/config/testConfigOperator.d.ts +2 -0
  99. package/dist/types/base/runJest.d.ts +2 -0
  100. package/dist/types/base/utils.d.ts +1 -0
  101. package/dist/types/cli/bff/index.d.ts +2 -0
  102. package/dist/types/cli/bff/mockAPI.d.ts +1 -0
  103. package/dist/types/cli/index.d.ts +2 -0
  104. package/dist/types/runtime-testing/app.d.ts +3 -0
  105. package/dist/types/runtime-testing/customRender.d.ts +2 -0
  106. package/package.json +13 -13
@@ -1,17 +1,27 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import fs from 'fs';
5
- import path from 'path';
6
- import { createDebugger } from '@modern-js/utils';
7
- export const debug = createDebugger('test');
8
- /**
9
- * Read `compilerOptions` in the current pwd's tsconfig.json file
10
- */
11
- export const readCompilerOptions = (pwd = process.cwd(), filename = 'tsconfig.json') => {
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import fs from "fs";
18
+ import path from "path";
19
+ import { createDebugger } from "@modern-js/utils";
20
+ const debug = createDebugger("test");
21
+ const readCompilerOptions = (pwd = process.cwd(), filename = "tsconfig.json") => {
12
22
  let tsConfig = {};
13
23
  let extendedCompilerOptions = {};
14
- let tsconfigFile = '';
24
+ let tsconfigFile = "";
15
25
  try {
16
26
  const maybeTsconfigFile = path.join(pwd, filename);
17
27
  if (fs.existsSync(maybeTsconfigFile)) {
@@ -19,23 +29,25 @@ export const readCompilerOptions = (pwd = process.cwd(), filename = 'tsconfig.js
19
29
  } else {
20
30
  tsconfigFile = require.resolve(filename);
21
31
  }
22
- ({
23
- config: tsConfig
24
- } = require('typescript').parseConfigFileTextToJson(tsconfigFile, fs.readFileSync(tsconfigFile, 'utf8')));
32
+ ({ config: tsConfig } = require("typescript").parseConfigFileTextToJson(
33
+ tsconfigFile,
34
+ fs.readFileSync(tsconfigFile, "utf8")
35
+ ));
25
36
  } catch (e) {
26
37
  return {};
27
38
  }
28
39
  if (tsConfig.extends) {
29
- extendedCompilerOptions = readCompilerOptions(path.dirname(tsconfigFile), tsConfig.extends);
40
+ extendedCompilerOptions = readCompilerOptions(
41
+ path.dirname(tsconfigFile),
42
+ tsConfig.extends
43
+ );
30
44
  }
31
- return _objectSpread(_objectSpread({}, extendedCompilerOptions), tsConfig.compilerOptions);
45
+ return __spreadValues(__spreadValues({}, extendedCompilerOptions), tsConfig.compilerOptions);
32
46
  };
33
- export const getModuleNameMapper = alias => Object.keys(alias).reduce((memo, cur) => {
47
+ const getModuleNameMapper = (alias) => Object.keys(alias).reduce((memo, cur) => {
34
48
  const aliasValue = Array.isArray(alias[cur]) ? alias[cur] : [alias[cur]];
35
- const isFile = aliasValue.some(s => s.endsWith('.js'));
36
-
37
- // It's special for if using @modern-js/runtime alias other module @modern-js/runtime/model would not work.
38
- if (cur === '@modern-js/runtime$') {
49
+ const isFile = aliasValue.some((s) => s.endsWith(".js"));
50
+ if (cur === "@modern-js/runtime$") {
39
51
  memo[`.+${cur}`] = aliasValue[0];
40
52
  return memo;
41
53
  }
@@ -46,4 +58,9 @@ export const getModuleNameMapper = alias => Object.keys(alias).reduce((memo, cur
46
58
  const value = path.normalize(`${aliasValue}/$1`);
47
59
  memo[key] = value;
48
60
  return memo;
49
- }, {});
61
+ }, {});
62
+ export {
63
+ debug,
64
+ getModuleNameMapper,
65
+ readCompilerOptions
66
+ };
@@ -1,11 +1,31 @@
1
- import { AsyncLocalStorage } from 'async_hooks';
2
- import { Server } from '@modern-js/prod-server';
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { AsyncLocalStorage } from "async_hooks";
22
+ import { Server } from "@modern-js/prod-server";
3
23
  const store = new AsyncLocalStorage();
4
- export const isInHandler = () => Boolean(store.getStore());
24
+ const isInHandler = () => Boolean(store.getStore());
5
25
  let server = null;
6
- const createApp = async (pwd, config, plugins, routes) => {
26
+ const createApp = (pwd, config, plugins, routes) => __async(void 0, null, function* () {
7
27
  if (!server) {
8
- config.output.path = './';
28
+ config.output.path = "./";
9
29
  server = new Server({
10
30
  apiOnly: true,
11
31
  pwd,
@@ -13,21 +33,26 @@ const createApp = async (pwd, config, plugins, routes) => {
13
33
  internalPlugins: plugins,
14
34
  routes
15
35
  });
16
- await server.init();
36
+ yield server.init();
17
37
  }
18
38
  const app = server.getRequestHandler();
19
39
  return app;
20
- };
40
+ });
21
41
  const getApp = () => {
22
42
  if (!server) {
23
- throw new Error('please createApp first');
43
+ throw new Error("please createApp first");
24
44
  }
25
45
  return server.getRequestHandler();
26
46
  };
27
- const closeServer = async () => {
47
+ const closeServer = () => __async(void 0, null, function* () {
28
48
  if (!server) {
29
- throw new Error('please createApp first');
49
+ throw new Error("please createApp first");
30
50
  }
31
- await server.close();
51
+ yield server.close();
52
+ });
53
+ export {
54
+ closeServer,
55
+ createApp,
56
+ getApp,
57
+ isInHandler
32
58
  };
33
- export { createApp, getApp, closeServer };
@@ -1 +1,4 @@
1
- export const bff_info_key = 'modern_bff_info';
1
+ const bff_info_key = "modern_bff_info";
2
+ export {
3
+ bff_info_key
4
+ };
@@ -1,26 +1,62 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import path from 'path';
5
- import { isApiOnly } from '@modern-js/utils';
6
- import { getModuleNameMapper, DEFAULT_RESOLVER_PATH } from "../../base";
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+ import path from "path";
38
+ import { isApiOnly } from "@modern-js/utils";
39
+ import {
40
+ getModuleNameMapper,
41
+ DEFAULT_RESOLVER_PATH
42
+ } from "../../base";
7
43
  import { bff_info_key } from "./constant";
8
44
  import { isBFFProject } from "./utils";
9
- export const setJestConfigForBFF = async ({
45
+ const setJestConfigForBFF = (_0) => __async(void 0, [_0], function* ({
10
46
  pwd,
11
47
  userConfig,
12
48
  plugins,
13
49
  routes,
14
50
  utils
15
- }) => {
16
- var _userConfig$source;
51
+ }) {
52
+ var _a;
17
53
  const bffConfig = {
18
- rootDir: path.join(pwd, './api'),
54
+ rootDir: path.join(pwd, "./api"),
19
55
  setupFilesAfterEnv: [require.resolve("./setup")],
20
- testEnvironment: 'node',
56
+ testEnvironment: "node",
21
57
  testMatch: [`**/api/**/*.test.[jt]s`],
22
58
  globals: {
23
- 'ts-jest': {
59
+ "ts-jest": {
24
60
  diagnostics: {
25
61
  warnOnly: true
26
62
  }
@@ -33,25 +69,17 @@ export const setJestConfigForBFF = async ({
33
69
  }
34
70
  }
35
71
  };
36
- const {
37
- jestConfig
38
- } = utils;
39
- const alias = (userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$source = userConfig.source) === null || _userConfig$source === void 0 ? void 0 : _userConfig$source.alias) || {};
72
+ const { jestConfig } = utils;
73
+ const alias = ((_a = userConfig == null ? void 0 : userConfig.source) == null ? void 0 : _a.alias) || {};
40
74
  const aliasMapper = getModuleNameMapper(alias);
41
- const {
42
- moduleNameMapper
43
- } = jestConfig;
44
-
45
- // 服务端统一使用 ts-jest
75
+ const { moduleNameMapper } = jestConfig;
46
76
  const transform = {
47
- '\\.[jt]sx?$': require.resolve('ts-jest')
77
+ "\\.[jt]sx?$": require.resolve("ts-jest")
48
78
  };
49
- const apiOnly = await isApiOnly(pwd);
50
- const mergedModuleNameMapper = _objectSpread(_objectSpread({}, moduleNameMapper), aliasMapper);
79
+ const apiOnly = yield isApiOnly(pwd);
80
+ const mergedModuleNameMapper = __spreadValues(__spreadValues({}, moduleNameMapper), aliasMapper);
51
81
  const resolver = jestConfig.resolver || DEFAULT_RESOLVER_PATH;
52
-
53
- // 这三个配置不能设置在 projects 中,需要设置在外层(https://github.com/facebook/jest/issues/9696)
54
- const configFields = ['coverage', 'collectCoverage', 'testTimeout'];
82
+ const configFields = ["coverage", "collectCoverage", "testTimeout"];
55
83
  const commonConfig = configFields.reduce((obj, field) => {
56
84
  if (jestConfig.hasOwnProperty(field)) {
57
85
  obj[field] = jestConfig[field];
@@ -59,40 +87,51 @@ export const setJestConfigForBFF = async ({
59
87
  return obj;
60
88
  }, {});
61
89
  if (!apiOnly) {
62
- utils.setJestConfig({
63
- projects: [_objectSpread({}, jestConfig), _objectSpread({
64
- transform,
65
- moduleNameMapper: mergedModuleNameMapper,
66
- resolver
67
- }, bffConfig)]
68
- }, {
69
- force: true
70
- });
90
+ utils.setJestConfig(
91
+ {
92
+ projects: [
93
+ __spreadValues({}, jestConfig),
94
+ __spreadValues({
95
+ transform,
96
+ moduleNameMapper: mergedModuleNameMapper,
97
+ resolver
98
+ }, bffConfig)
99
+ ]
100
+ },
101
+ {
102
+ force: true
103
+ }
104
+ );
71
105
  } else {
72
- utils.setJestConfig({
73
- projects: [_objectSpread({
74
- transform,
75
- moduleNameMapper: mergedModuleNameMapper,
76
- resolver
77
- }, bffConfig)]
78
- }, {
79
- force: true
80
- });
106
+ utils.setJestConfig(
107
+ {
108
+ projects: [
109
+ __spreadValues({
110
+ transform,
111
+ moduleNameMapper: mergedModuleNameMapper,
112
+ resolver
113
+ }, bffConfig)
114
+ ]
115
+ },
116
+ {
117
+ force: true
118
+ }
119
+ );
81
120
  }
82
121
  utils.setJestConfig(commonConfig);
83
- };
84
- export default (() => ({
85
- name: '@modern-js/testing-plugin-bff',
122
+ });
123
+ var bff_default = () => ({
124
+ name: "@modern-js/testing-plugin-bff",
86
125
  setup(api) {
87
126
  return {
88
- jestConfig: async (utils, next) => {
127
+ jestConfig: (utils, next) => __async(this, null, function* () {
89
128
  const appContext = api.useAppContext();
90
129
  const pwd = appContext.appDirectory;
91
130
  if (!isBFFProject(pwd)) {
92
131
  return next(utils);
93
132
  }
94
133
  const userConfig = api.useResolvedConfigContext();
95
- await setJestConfigForBFF({
134
+ yield setJestConfigForBFF({
96
135
  pwd,
97
136
  userConfig,
98
137
  routes: appContext.serverRoutes,
@@ -100,7 +139,11 @@ export default (() => ({
100
139
  utils
101
140
  });
102
141
  return next(utils);
103
- }
142
+ })
104
143
  };
105
144
  }
106
- }));
145
+ });
146
+ export {
147
+ bff_default as default,
148
+ setJestConfigForBFF
149
+ };
@@ -1,10 +1,21 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import * as ptr from 'path-to-regexp';
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import * as ptr from "path-to-regexp";
5
18
  import * as mockAppModule from "./app";
6
-
7
- // eslint-disable-next-line @typescript-eslint/naming-convention
8
19
  const mock_replaceUrlWithParams = (url, paramValues, payload) => {
9
20
  const keys = [];
10
21
  ptr.pathToRegexp(url, keys);
@@ -14,81 +25,85 @@ const mock_replaceUrlWithParams = (url, paramValues, payload) => {
14
25
  }
15
26
  return cur;
16
27
  }, {});
17
- const getFinalPath = ptr.compile(url, {
18
- encode: encodeURIComponent
19
- });
20
- return getFinalPath(_objectSpread(_objectSpread({}, params), payload));
28
+ const getFinalPath = ptr.compile(url, { encode: encodeURIComponent });
29
+ return getFinalPath(__spreadValues(__spreadValues({}, params), payload));
21
30
  };
22
-
23
- // eslint-disable-next-line @typescript-eslint/naming-convention
24
- const mock_getParamsAndPayload = args => {
31
+ const mock_getParamsAndPayload = (args) => {
25
32
  if (args.length === 0) {
26
33
  return [[], {}];
27
34
  }
28
35
  const head = args[0];
29
- if (typeof head === 'object') {
36
+ if (typeof head === "object") {
30
37
  return [[], head];
31
38
  } else {
32
39
  const latest = args[args.length - 1];
33
- if (typeof latest === 'object') {
40
+ if (typeof latest === "object") {
34
41
  return [args.slice(0, args.length - 1), latest];
35
42
  } else {
36
43
  return [args, {}];
37
44
  }
38
45
  }
39
46
  };
40
- export default (mockApiInfosByFile => {
47
+ var mockAPI_default = (mockApiInfosByFile) => {
41
48
  const files = Object.keys(mockApiInfosByFile);
42
- files.forEach(mockedFile => {
49
+ files.forEach((mockedFile) => {
43
50
  jest.mock(mockedFile, () => {
44
- const supertest = require('supertest');
45
- return mockApiInfosByFile[mockedFile].reduce((res, info) => {
46
- const module = {
47
- [info.name]: (...args) => {
48
- if (mockAppModule.isInHandler()) {
49
- return info.handler(...args);
50
- }
51
- const [params, payload] = mock_getParamsAndPayload(args);
52
- const {
53
- returnHttp
54
- } = module[info.name];
55
- const url = mock_replaceUrlWithParams(info.routePath, params, payload.params);
56
- const app = mockAppModule.getApp();
57
- let test = supertest(app)[info.httpMethod.toLowerCase()](url);
58
- if (payload.query) {
59
- test = test.query(payload.query);
60
- }
61
- if (payload.body) {
62
- test = test.send(payload.body);
63
- }
64
- if (payload.data) {
65
- test = test.send(payload.data);
66
- }
67
- if (payload.headers) {
68
- for (const name in payload.headers) {
69
- test = test.set(name, payload.headers[name]);
51
+ const supertest = require("supertest");
52
+ return mockApiInfosByFile[mockedFile].reduce(
53
+ (res, info) => {
54
+ const module = {
55
+ [info.name]: (...args) => {
56
+ if (mockAppModule.isInHandler()) {
57
+ return info.handler(...args);
70
58
  }
71
- }
72
- if (payload.cookies) {
73
- test = test.set('Cookie', [payload.cookies]);
74
- }
75
- if (returnHttp) {
76
- return test;
77
- }
78
- return test.then(value => {
79
- try {
80
- return JSON.parse(value.text);
81
- } catch (_unused) {
82
- return value.text;
59
+ const [params, payload] = mock_getParamsAndPayload(args);
60
+ const { returnHttp } = module[info.name];
61
+ const url = mock_replaceUrlWithParams(
62
+ info.routePath,
63
+ params,
64
+ payload.params
65
+ );
66
+ const app = mockAppModule.getApp();
67
+ let test = supertest(app)[info.httpMethod.toLowerCase()](url);
68
+ if (payload.query) {
69
+ test = test.query(payload.query);
70
+ }
71
+ if (payload.body) {
72
+ test = test.send(payload.body);
73
+ }
74
+ if (payload.data) {
75
+ test = test.send(payload.data);
76
+ }
77
+ if (payload.headers) {
78
+ for (const name in payload.headers) {
79
+ test = test.set(name, payload.headers[name]);
80
+ }
81
+ }
82
+ if (payload.cookies) {
83
+ test = test.set("Cookie", [payload.cookies]);
83
84
  }
84
- });
85
- }
86
- };
87
- res[info.name] = module[info.name];
88
- Object.assign(res[info.name], info.handler);
89
- res.__esModule = true;
90
- return res;
91
- }, {});
85
+ if (returnHttp) {
86
+ return test;
87
+ }
88
+ return test.then((value) => {
89
+ try {
90
+ return JSON.parse(value.text);
91
+ } catch (e) {
92
+ return value.text;
93
+ }
94
+ });
95
+ }
96
+ };
97
+ res[info.name] = module[info.name];
98
+ Object.assign(res[info.name], info.handler);
99
+ res.__esModule = true;
100
+ return res;
101
+ },
102
+ {}
103
+ );
92
104
  });
93
105
  });
94
- });
106
+ };
107
+ export {
108
+ mockAPI_default as default
109
+ };
@@ -1,38 +1,75 @@
1
- import path from 'path';
2
- import { ApiRouter } from '@modern-js/bff-core';
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __commonJS = (cb, mod) => function __require() {
3
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
+ };
5
+ var __async = (__this, __arguments, generator) => {
6
+ return new Promise((resolve, reject) => {
7
+ var fulfilled = (value) => {
8
+ try {
9
+ step(generator.next(value));
10
+ } catch (e) {
11
+ reject(e);
12
+ }
13
+ };
14
+ var rejected = (value) => {
15
+ try {
16
+ step(generator.throw(value));
17
+ } catch (e) {
18
+ reject(e);
19
+ }
20
+ };
21
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
22
+ step((generator = generator.apply(__this, __arguments)).next());
23
+ });
24
+ };
25
+ import path from "path";
26
+ import { ApiRouter } from "@modern-js/bff-core";
3
27
  import { bff_info_key } from "./constant";
4
28
  import mockAPI from "./mockAPI";
5
29
  import { createApp, closeServer } from "./app";
6
- let uped = false;
7
- const setup = () => {
8
- var _bff_info$modernUserC, _bff_info$modernUserC2;
9
- if (uped) {
10
- return;
30
+ var require_setup = __commonJS({
31
+ "src/cli/bff/setup.ts"(exports) {
32
+ let uped = false;
33
+ const setup = () => {
34
+ var _a, _b;
35
+ if (uped) {
36
+ return;
37
+ }
38
+ uped = true;
39
+ const bff_info = global[bff_info_key];
40
+ const prefix = (_b = (_a = bff_info == null ? void 0 : bff_info.modernUserConfig) == null ? void 0 : _a.bff) == null ? void 0 : _b.prefix;
41
+ const apiRouter = new ApiRouter({
42
+ apiDir: path.join(bff_info.appDir, "./api"),
43
+ prefix
44
+ });
45
+ const apiInfos = apiRouter.getApiHandlers();
46
+ const apiInfosByFile = apiInfos.reduce(
47
+ (res, apiInfo) => {
48
+ if (!res[apiInfo.filename]) {
49
+ res[apiInfo.filename] = [];
50
+ }
51
+ res[apiInfo.filename].push(apiInfo);
52
+ return res;
53
+ },
54
+ {}
55
+ );
56
+ let app = null;
57
+ beforeAll(() => __async(exports, null, function* () {
58
+ if (!app) {
59
+ app = yield createApp(
60
+ bff_info.appDir,
61
+ bff_info.modernUserConfig,
62
+ bff_info.plugins,
63
+ bff_info.routes
64
+ );
65
+ }
66
+ }));
67
+ afterAll(() => __async(exports, null, function* () {
68
+ yield closeServer();
69
+ }));
70
+ mockAPI(apiInfosByFile);
71
+ };
72
+ setup();
11
73
  }
12
- uped = true;
13
- const bff_info = global[bff_info_key];
14
- const prefix = bff_info === null || bff_info === void 0 ? void 0 : (_bff_info$modernUserC = bff_info.modernUserConfig) === null || _bff_info$modernUserC === void 0 ? void 0 : (_bff_info$modernUserC2 = _bff_info$modernUserC.bff) === null || _bff_info$modernUserC2 === void 0 ? void 0 : _bff_info$modernUserC2.prefix;
15
- const apiRouter = new ApiRouter({
16
- apiDir: path.join(bff_info.appDir, './api'),
17
- prefix
18
- });
19
- const apiInfos = apiRouter.getApiHandlers();
20
- const apiInfosByFile = apiInfos.reduce((res, apiInfo) => {
21
- if (!res[apiInfo.filename]) {
22
- res[apiInfo.filename] = [];
23
- }
24
- res[apiInfo.filename].push(apiInfo);
25
- return res;
26
- }, {});
27
- let app = null;
28
- beforeAll(async () => {
29
- if (!app) {
30
- app = await createApp(bff_info.appDir, bff_info.modernUserConfig, bff_info.plugins, bff_info.routes);
31
- }
32
- });
33
- afterAll(async () => {
34
- await closeServer();
35
- });
36
- mockAPI(apiInfosByFile);
37
- };
38
- setup();
74
+ });
75
+ export default require_setup();