@modern-js/plugin-testing 2.21.0 → 2.21.2-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/base/config/index.js +9 -3
  3. package/dist/cjs/base/config/patches/assetsModule.js +3 -1
  4. package/dist/cjs/base/config/patches/filemock.js +3 -1
  5. package/dist/cjs/base/config/patches/index.js +3 -1
  6. package/dist/cjs/base/config/patches/transformer.js +3 -1
  7. package/dist/cjs/base/config/testConfigOperator.js +3 -1
  8. package/dist/cjs/base/config/transformer/babelTransformer.js +3 -1
  9. package/dist/cjs/base/hook.js +9 -3
  10. package/dist/cjs/base/index.js +18 -6
  11. package/dist/cjs/base/runJest.js +6 -2
  12. package/dist/cjs/base/utils.js +9 -3
  13. package/dist/cjs/cli/bff/app.js +12 -4
  14. package/dist/cjs/cli/bff/constant.js +3 -1
  15. package/dist/cjs/cli/bff/index.js +6 -2
  16. package/dist/cjs/cli/bff/mockAPI.js +3 -1
  17. package/dist/cjs/cli/bff/setup.js +14 -14
  18. package/dist/cjs/cli/bff/utils/index.js +3 -1
  19. package/dist/cjs/cli/index.js +7 -2
  20. package/dist/cjs/cli/test.js +3 -1
  21. package/dist/cjs/constant.js +3 -1
  22. package/dist/cjs/runtime-testing/app.js +3 -1
  23. package/dist/cjs/runtime-testing/base.js +5 -11
  24. package/dist/cjs/runtime-testing/{request.js → bff.js} +4 -2
  25. package/dist/cjs/runtime-testing/customRender.js +3 -1
  26. package/dist/cjs/runtime-testing/reduck.js +12 -4
  27. package/dist/cjs/runtime-testing/resolvePlugins.js +3 -1
  28. package/dist/esm/cli/bff/setup.js +15 -14
  29. package/dist/esm/cli/index.js +1 -0
  30. package/dist/esm/runtime-testing/base.js +0 -1
  31. package/dist/esm/runtime-testing/{request.js → bff.js} +1 -1
  32. package/dist/esm-node/cli/bff/setup.js +14 -14
  33. package/dist/esm-node/cli/index.js +1 -0
  34. package/dist/esm-node/runtime-testing/base.js +0 -1
  35. package/dist/esm-node/runtime-testing/bff.js +14 -0
  36. package/dist/js/modern/base/config/index.js +36 -0
  37. package/dist/js/modern/base/config/patches/assetsModule.js +11 -0
  38. package/dist/js/modern/base/config/patches/filemock.js +4 -0
  39. package/dist/js/modern/base/config/patches/index.js +34 -0
  40. package/dist/js/modern/base/config/patches/transformer.js +38 -0
  41. package/dist/js/modern/base/config/resolver.js +21 -0
  42. package/dist/js/modern/base/config/testConfigOperator.js +69 -0
  43. package/dist/js/modern/base/config/transformer/babelTransformer.js +19 -0
  44. package/dist/js/modern/base/hook.js +12 -0
  45. package/dist/js/modern/base/index.js +14 -0
  46. package/dist/js/modern/base/runJest.js +102 -0
  47. package/dist/js/modern/base/types/index.js +0 -0
  48. package/dist/js/modern/base/utils.js +66 -0
  49. package/dist/js/modern/cli/bff/app.js +58 -0
  50. package/dist/js/modern/cli/bff/constant.js +4 -0
  51. package/dist/js/modern/cli/bff/index.js +149 -0
  52. package/dist/js/modern/cli/bff/mockAPI.js +109 -0
  53. package/dist/js/modern/cli/bff/setup.js +75 -0
  54. package/dist/js/modern/cli/bff/utils/index.js +37 -0
  55. package/dist/js/modern/cli/index.js +115 -0
  56. package/dist/js/modern/cli/test.js +61 -0
  57. package/dist/js/modern/constant.js +4 -0
  58. package/dist/js/modern/index.js +3 -0
  59. package/dist/js/modern/runtime-testing/app.js +48 -0
  60. package/dist/js/modern/runtime-testing/base.js +7 -0
  61. package/dist/js/modern/runtime-testing/customRender.js +25 -0
  62. package/dist/js/modern/runtime-testing/index.js +2 -0
  63. package/dist/js/modern/runtime-testing/reduck.js +55 -0
  64. package/dist/{esm-node → js/modern}/runtime-testing/request.js +3 -1
  65. package/dist/js/modern/runtime-testing/resolvePlugins.js +33 -0
  66. package/dist/js/node/base/config/index.js +67 -0
  67. package/dist/js/node/base/config/patches/assetsModule.js +40 -0
  68. package/dist/js/node/base/config/patches/filemock.js +25 -0
  69. package/dist/js/node/base/config/patches/index.js +57 -0
  70. package/dist/js/node/base/config/patches/transformer.js +67 -0
  71. package/dist/js/node/base/config/resolver.js +30 -0
  72. package/dist/js/node/base/config/testConfigOperator.js +90 -0
  73. package/dist/js/node/base/config/transformer/babelTransformer.js +46 -0
  74. package/dist/js/node/base/hook.js +37 -0
  75. package/dist/js/node/base/index.js +43 -0
  76. package/dist/js/node/base/runJest.js +132 -0
  77. package/dist/js/node/base/types/index.js +15 -0
  78. package/dist/js/node/base/utils.js +95 -0
  79. package/dist/js/node/cli/bff/app.js +84 -0
  80. package/dist/js/node/cli/bff/constant.js +27 -0
  81. package/dist/js/node/cli/bff/index.js +173 -0
  82. package/dist/js/node/cli/bff/mockAPI.js +134 -0
  83. package/dist/js/node/cli/bff/setup.js +84 -0
  84. package/dist/js/node/cli/bff/utils/index.js +64 -0
  85. package/dist/js/node/cli/index.js +135 -0
  86. package/dist/js/node/cli/test.js +88 -0
  87. package/dist/js/node/constant.js +27 -0
  88. package/dist/js/node/index.js +19 -0
  89. package/dist/js/node/runtime-testing/app.js +73 -0
  90. package/dist/js/node/runtime-testing/base.js +38 -0
  91. package/dist/js/node/runtime-testing/customRender.js +50 -0
  92. package/dist/js/node/runtime-testing/index.js +18 -0
  93. package/dist/js/node/runtime-testing/reduck.js +85 -0
  94. package/dist/js/node/runtime-testing/request.js +45 -0
  95. package/dist/js/node/runtime-testing/resolvePlugins.js +52 -0
  96. package/dist/js/treeshaking/base/config/index.js +154 -0
  97. package/dist/js/treeshaking/base/config/patches/assetsModule.js +9 -0
  98. package/dist/js/treeshaking/base/config/patches/filemock.js +2 -0
  99. package/dist/js/treeshaking/base/config/patches/index.js +225 -0
  100. package/dist/js/treeshaking/base/config/patches/transformer.js +36 -0
  101. package/dist/js/treeshaking/base/config/resolver.js +37 -0
  102. package/dist/js/treeshaking/base/config/testConfigOperator.js +127 -0
  103. package/dist/js/treeshaking/base/config/transformer/babelTransformer.js +17 -0
  104. package/dist/js/treeshaking/base/hook.js +8 -0
  105. package/dist/js/treeshaking/base/index.js +7 -0
  106. package/dist/js/treeshaking/base/runJest.js +292 -0
  107. package/dist/js/treeshaking/base/types/index.js +1 -0
  108. package/dist/js/treeshaking/base/utils.js +76 -0
  109. package/dist/js/treeshaking/cli/bff/app.js +200 -0
  110. package/dist/js/treeshaking/cli/bff/constant.js +2 -0
  111. package/dist/js/treeshaking/cli/bff/index.js +297 -0
  112. package/dist/js/treeshaking/cli/bff/mockAPI.js +188 -0
  113. package/dist/js/treeshaking/cli/bff/setup.js +192 -0
  114. package/dist/js/treeshaking/cli/bff/utils/index.js +47 -0
  115. package/dist/js/treeshaking/cli/index.js +255 -0
  116. package/dist/js/treeshaking/cli/test.js +180 -0
  117. package/dist/js/treeshaking/constant.js +2 -0
  118. package/dist/js/treeshaking/index.js +3 -0
  119. package/dist/js/treeshaking/runtime-testing/app.js +90 -0
  120. package/dist/js/treeshaking/runtime-testing/base.js +4 -0
  121. package/dist/js/treeshaking/runtime-testing/customRender.js +41 -0
  122. package/dist/js/treeshaking/runtime-testing/index.js +2 -0
  123. package/dist/js/treeshaking/runtime-testing/reduck.js +89 -0
  124. package/dist/js/treeshaking/runtime-testing/request.js +51 -0
  125. package/dist/js/treeshaking/runtime-testing/resolvePlugins.js +46 -0
  126. package/dist/types/runtime-testing/base.d.ts +1 -2
  127. package/dist/types/runtime-testing/{request.d.ts → bff.d.ts} +1 -1
  128. package/package.json +23 -14
  129. package/types/index.d.ts +6 -1
@@ -0,0 +1,95 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var utils_exports = {};
39
+ __export(utils_exports, {
40
+ debug: () => debug,
41
+ getModuleNameMapper: () => getModuleNameMapper,
42
+ readCompilerOptions: () => readCompilerOptions
43
+ });
44
+ module.exports = __toCommonJS(utils_exports);
45
+ var import_fs = __toESM(require("fs"));
46
+ var import_path = __toESM(require("path"));
47
+ var import_utils = require("@modern-js/utils");
48
+ const debug = (0, import_utils.createDebugger)("test");
49
+ const readCompilerOptions = (pwd = process.cwd(), filename = "tsconfig.json") => {
50
+ let tsConfig = {};
51
+ let extendedCompilerOptions = {};
52
+ let tsconfigFile = "";
53
+ try {
54
+ const maybeTsconfigFile = import_path.default.join(pwd, filename);
55
+ if (import_fs.default.existsSync(maybeTsconfigFile)) {
56
+ tsconfigFile = maybeTsconfigFile;
57
+ } else {
58
+ tsconfigFile = require.resolve(filename);
59
+ }
60
+ ({ config: tsConfig } = require("typescript").parseConfigFileTextToJson(
61
+ tsconfigFile,
62
+ import_fs.default.readFileSync(tsconfigFile, "utf8")
63
+ ));
64
+ } catch (e) {
65
+ return {};
66
+ }
67
+ if (tsConfig.extends) {
68
+ extendedCompilerOptions = readCompilerOptions(
69
+ import_path.default.dirname(tsconfigFile),
70
+ tsConfig.extends
71
+ );
72
+ }
73
+ return __spreadValues(__spreadValues({}, extendedCompilerOptions), tsConfig.compilerOptions);
74
+ };
75
+ const getModuleNameMapper = (alias) => Object.keys(alias).reduce((memo, cur) => {
76
+ const aliasValue = Array.isArray(alias[cur]) ? alias[cur] : [alias[cur]];
77
+ const isFile = aliasValue.some((s) => s.endsWith(".js"));
78
+ if (cur === "@modern-js/runtime$") {
79
+ memo[`.+${cur}`] = aliasValue[0];
80
+ return memo;
81
+ }
82
+ if (isFile) {
83
+ memo[cur] = aliasValue[0];
84
+ }
85
+ const key = `^${cur}/(.*)$`;
86
+ const value = import_path.default.normalize(`${aliasValue}/$1`);
87
+ memo[key] = value;
88
+ return memo;
89
+ }, {});
90
+ // Annotate the CommonJS export names for ESM import in node:
91
+ 0 && (module.exports = {
92
+ debug,
93
+ getModuleNameMapper,
94
+ readCompilerOptions
95
+ });
@@ -0,0 +1,84 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var __async = (__this, __arguments, generator) => {
19
+ return new Promise((resolve, reject) => {
20
+ var fulfilled = (value) => {
21
+ try {
22
+ step(generator.next(value));
23
+ } catch (e) {
24
+ reject(e);
25
+ }
26
+ };
27
+ var rejected = (value) => {
28
+ try {
29
+ step(generator.throw(value));
30
+ } catch (e) {
31
+ reject(e);
32
+ }
33
+ };
34
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
+ step((generator = generator.apply(__this, __arguments)).next());
36
+ });
37
+ };
38
+ var app_exports = {};
39
+ __export(app_exports, {
40
+ closeServer: () => closeServer,
41
+ createApp: () => createApp,
42
+ getApp: () => getApp,
43
+ isInHandler: () => isInHandler
44
+ });
45
+ module.exports = __toCommonJS(app_exports);
46
+ var import_async_hooks = require("async_hooks");
47
+ var import_prod_server = require("@modern-js/prod-server");
48
+ const store = new import_async_hooks.AsyncLocalStorage();
49
+ const isInHandler = () => Boolean(store.getStore());
50
+ let server = null;
51
+ const createApp = (pwd, config, plugins, routes) => __async(void 0, null, function* () {
52
+ if (!server) {
53
+ config.output.path = "./";
54
+ server = new import_prod_server.Server({
55
+ apiOnly: true,
56
+ pwd,
57
+ config,
58
+ internalPlugins: plugins,
59
+ routes
60
+ });
61
+ yield server.init();
62
+ }
63
+ const app = server.getRequestHandler();
64
+ return app;
65
+ });
66
+ const getApp = () => {
67
+ if (!server) {
68
+ throw new Error("please createApp first");
69
+ }
70
+ return server.getRequestHandler();
71
+ };
72
+ const closeServer = () => __async(void 0, null, function* () {
73
+ if (!server) {
74
+ throw new Error("please createApp first");
75
+ }
76
+ yield server.close();
77
+ });
78
+ // Annotate the CommonJS export names for ESM import in node:
79
+ 0 && (module.exports = {
80
+ closeServer,
81
+ createApp,
82
+ getApp,
83
+ isInHandler
84
+ });
@@ -0,0 +1,27 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var constant_exports = {};
19
+ __export(constant_exports, {
20
+ bff_info_key: () => bff_info_key
21
+ });
22
+ module.exports = __toCommonJS(constant_exports);
23
+ const bff_info_key = "modern_bff_info";
24
+ // Annotate the CommonJS export names for ESM import in node:
25
+ 0 && (module.exports = {
26
+ bff_info_key
27
+ });
@@ -0,0 +1,173 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var __async = (__this, __arguments, generator) => {
39
+ return new Promise((resolve, reject) => {
40
+ var fulfilled = (value) => {
41
+ try {
42
+ step(generator.next(value));
43
+ } catch (e) {
44
+ reject(e);
45
+ }
46
+ };
47
+ var rejected = (value) => {
48
+ try {
49
+ step(generator.throw(value));
50
+ } catch (e) {
51
+ reject(e);
52
+ }
53
+ };
54
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
55
+ step((generator = generator.apply(__this, __arguments)).next());
56
+ });
57
+ };
58
+ var bff_exports = {};
59
+ __export(bff_exports, {
60
+ default: () => bff_default,
61
+ setJestConfigForBFF: () => setJestConfigForBFF
62
+ });
63
+ module.exports = __toCommonJS(bff_exports);
64
+ var import_path = __toESM(require("path"));
65
+ var import_utils = require("@modern-js/utils");
66
+ var import_base = require("../../base");
67
+ var import_constant = require("./constant");
68
+ var import_utils2 = require("./utils");
69
+ const setJestConfigForBFF = (_0) => __async(void 0, [_0], function* ({
70
+ pwd,
71
+ userConfig,
72
+ plugins,
73
+ routes,
74
+ utils
75
+ }) {
76
+ var _a;
77
+ const bffConfig = {
78
+ rootDir: import_path.default.join(pwd, "./api"),
79
+ setupFilesAfterEnv: [require.resolve("./setup")],
80
+ testEnvironment: "node",
81
+ testMatch: [`**/api/**/*.test.[jt]s`],
82
+ globals: {
83
+ "ts-jest": {
84
+ diagnostics: {
85
+ warnOnly: true
86
+ }
87
+ },
88
+ [import_constant.bff_info_key]: {
89
+ appDir: pwd,
90
+ modernUserConfig: userConfig,
91
+ plugins,
92
+ routes
93
+ }
94
+ }
95
+ };
96
+ const { jestConfig } = utils;
97
+ const alias = ((_a = userConfig == null ? void 0 : userConfig.source) == null ? void 0 : _a.alias) || {};
98
+ const aliasMapper = (0, import_base.getModuleNameMapper)(alias);
99
+ const { moduleNameMapper } = jestConfig;
100
+ const transform = {
101
+ "\\.[jt]sx?$": require.resolve("ts-jest")
102
+ };
103
+ const apiOnly = yield (0, import_utils.isApiOnly)(pwd);
104
+ const mergedModuleNameMapper = __spreadValues(__spreadValues({}, moduleNameMapper), aliasMapper);
105
+ const resolver = jestConfig.resolver || import_base.DEFAULT_RESOLVER_PATH;
106
+ const configFields = ["coverage", "collectCoverage", "testTimeout"];
107
+ const commonConfig = configFields.reduce((obj, field) => {
108
+ if (jestConfig.hasOwnProperty(field)) {
109
+ obj[field] = jestConfig[field];
110
+ }
111
+ return obj;
112
+ }, {});
113
+ if (!apiOnly) {
114
+ utils.setJestConfig(
115
+ {
116
+ projects: [
117
+ __spreadValues({}, jestConfig),
118
+ __spreadValues({
119
+ transform,
120
+ moduleNameMapper: mergedModuleNameMapper,
121
+ resolver
122
+ }, bffConfig)
123
+ ]
124
+ },
125
+ {
126
+ force: true
127
+ }
128
+ );
129
+ } else {
130
+ utils.setJestConfig(
131
+ {
132
+ projects: [
133
+ __spreadValues({
134
+ transform,
135
+ moduleNameMapper: mergedModuleNameMapper,
136
+ resolver
137
+ }, bffConfig)
138
+ ]
139
+ },
140
+ {
141
+ force: true
142
+ }
143
+ );
144
+ }
145
+ utils.setJestConfig(commonConfig);
146
+ });
147
+ var bff_default = () => ({
148
+ name: "@modern-js/testing-plugin-bff",
149
+ setup(api) {
150
+ return {
151
+ jestConfig: (utils, next) => __async(this, null, function* () {
152
+ const appContext = api.useAppContext();
153
+ const pwd = appContext.appDirectory;
154
+ if (!(0, import_utils2.isBFFProject)(pwd)) {
155
+ return next(utils);
156
+ }
157
+ const userConfig = api.useResolvedConfigContext();
158
+ yield setJestConfigForBFF({
159
+ pwd,
160
+ userConfig,
161
+ routes: appContext.serverRoutes,
162
+ plugins: appContext.serverInternalPlugins,
163
+ utils
164
+ });
165
+ return next(utils);
166
+ })
167
+ };
168
+ }
169
+ });
170
+ // Annotate the CommonJS export names for ESM import in node:
171
+ 0 && (module.exports = {
172
+ setJestConfigForBFF
173
+ });
@@ -0,0 +1,134 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var mockAPI_exports = {};
39
+ __export(mockAPI_exports, {
40
+ default: () => mockAPI_default
41
+ });
42
+ module.exports = __toCommonJS(mockAPI_exports);
43
+ var ptr = __toESM(require("path-to-regexp"));
44
+ var mockAppModule = __toESM(require("./app"));
45
+ const mock_replaceUrlWithParams = (url, paramValues, payload) => {
46
+ const keys = [];
47
+ ptr.pathToRegexp(url, keys);
48
+ const params = keys.reduce((cur, key, index) => {
49
+ if (paramValues[index]) {
50
+ cur[key.name] = paramValues[index];
51
+ }
52
+ return cur;
53
+ }, {});
54
+ const getFinalPath = ptr.compile(url, { encode: encodeURIComponent });
55
+ return getFinalPath(__spreadValues(__spreadValues({}, params), payload));
56
+ };
57
+ const mock_getParamsAndPayload = (args) => {
58
+ if (args.length === 0) {
59
+ return [[], {}];
60
+ }
61
+ const head = args[0];
62
+ if (typeof head === "object") {
63
+ return [[], head];
64
+ } else {
65
+ const latest = args[args.length - 1];
66
+ if (typeof latest === "object") {
67
+ return [args.slice(0, args.length - 1), latest];
68
+ } else {
69
+ return [args, {}];
70
+ }
71
+ }
72
+ };
73
+ var mockAPI_default = (mockApiInfosByFile) => {
74
+ const files = Object.keys(mockApiInfosByFile);
75
+ files.forEach((mockedFile) => {
76
+ jest.mock(mockedFile, () => {
77
+ const supertest = require("supertest");
78
+ return mockApiInfosByFile[mockedFile].reduce(
79
+ (res, info) => {
80
+ const module2 = {
81
+ [info.name]: (...args) => {
82
+ if (mockAppModule.isInHandler()) {
83
+ return info.handler(...args);
84
+ }
85
+ const [params, payload] = mock_getParamsAndPayload(args);
86
+ const { returnHttp } = module2[info.name];
87
+ const url = mock_replaceUrlWithParams(
88
+ info.routePath,
89
+ params,
90
+ payload.params
91
+ );
92
+ const app = mockAppModule.getApp();
93
+ let test = supertest(app)[info.httpMethod.toLowerCase()](url);
94
+ if (payload.query) {
95
+ test = test.query(payload.query);
96
+ }
97
+ if (payload.body) {
98
+ test = test.send(payload.body);
99
+ }
100
+ if (payload.data) {
101
+ test = test.send(payload.data);
102
+ }
103
+ if (payload.headers) {
104
+ for (const name in payload.headers) {
105
+ test = test.set(name, payload.headers[name]);
106
+ }
107
+ }
108
+ if (payload.cookies) {
109
+ test = test.set("Cookie", [payload.cookies]);
110
+ }
111
+ if (returnHttp) {
112
+ return test;
113
+ }
114
+ return test.then((value) => {
115
+ try {
116
+ return JSON.parse(value.text);
117
+ } catch (e) {
118
+ return value.text;
119
+ }
120
+ });
121
+ }
122
+ };
123
+ res[info.name] = module2[info.name];
124
+ Object.assign(res[info.name], info.handler);
125
+ res.__esModule = true;
126
+ return res;
127
+ },
128
+ {}
129
+ );
130
+ });
131
+ });
132
+ };
133
+ // Annotate the CommonJS export names for ESM import in node:
134
+ 0 && (module.exports = {});
@@ -0,0 +1,84 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from))
10
+ if (!__hasOwnProp.call(to, key) && key !== except)
11
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ }
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
17
+ mod
18
+ ));
19
+ var __async = (__this, __arguments, generator) => {
20
+ return new Promise((resolve, reject) => {
21
+ var fulfilled = (value) => {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ };
28
+ var rejected = (value) => {
29
+ try {
30
+ step(generator.throw(value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ };
35
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
+ step((generator = generator.apply(__this, __arguments)).next());
37
+ });
38
+ };
39
+ var import_path = __toESM(require("path"));
40
+ var import_bff_core = require("@modern-js/bff-core");
41
+ var import_constant = require("./constant");
42
+ var import_mockAPI = __toESM(require("./mockAPI"));
43
+ var import_app = require("./app");
44
+ let uped = false;
45
+ const setup = () => {
46
+ var _a, _b;
47
+ if (uped) {
48
+ return;
49
+ }
50
+ uped = true;
51
+ const bff_info = global[import_constant.bff_info_key];
52
+ const prefix = (_b = (_a = bff_info == null ? void 0 : bff_info.modernUserConfig) == null ? void 0 : _a.bff) == null ? void 0 : _b.prefix;
53
+ const apiRouter = new import_bff_core.ApiRouter({
54
+ apiDir: import_path.default.join(bff_info.appDir, "./api"),
55
+ prefix
56
+ });
57
+ const apiInfos = apiRouter.getApiHandlers();
58
+ const apiInfosByFile = apiInfos.reduce(
59
+ (res, apiInfo) => {
60
+ if (!res[apiInfo.filename]) {
61
+ res[apiInfo.filename] = [];
62
+ }
63
+ res[apiInfo.filename].push(apiInfo);
64
+ return res;
65
+ },
66
+ {}
67
+ );
68
+ let app = null;
69
+ beforeAll(() => __async(exports, null, function* () {
70
+ if (!app) {
71
+ app = yield (0, import_app.createApp)(
72
+ bff_info.appDir,
73
+ bff_info.modernUserConfig,
74
+ bff_info.plugins,
75
+ bff_info.routes
76
+ );
77
+ }
78
+ }));
79
+ afterAll(() => __async(exports, null, function* () {
80
+ yield (0, import_app.closeServer)();
81
+ }));
82
+ (0, import_mockAPI.default)(apiInfosByFile);
83
+ };
84
+ setup();
@@ -0,0 +1,64 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var utils_exports = {};
39
+ __export(utils_exports, {
40
+ isBFFProject: () => isBFFProject
41
+ });
42
+ module.exports = __toCommonJS(utils_exports);
43
+ var import_path = __toESM(require("path"));
44
+ var import_utils = require("@modern-js/utils");
45
+ const isBFFProject = (pwd) => {
46
+ try {
47
+ const packageJson = require(import_path.default.join(pwd, "./package.json"));
48
+ const { dependencies, devDependencies } = packageJson;
49
+ const isBFF = Object.keys(__spreadValues(__spreadValues({}, dependencies), devDependencies)).some(
50
+ (dependency) => dependency.includes("plugin-bff")
51
+ );
52
+ const isMWA = Object.keys(devDependencies).some(
53
+ (devDependency) => devDependency.includes("app-tools")
54
+ );
55
+ return isMWA && isBFF;
56
+ } catch (error) {
57
+ console.log(import_utils.chalk.red(error));
58
+ return false;
59
+ }
60
+ };
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ isBFFProject
64
+ });