@eggjs/mock 7.0.0-beta.20 → 7.0.0-beta.22

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 (96) hide show
  1. package/dist/app/extend/agent.d.ts +33 -38
  2. package/dist/app/extend/agent.js +46 -5
  3. package/dist/app/extend/application.d.ts +171 -5
  4. package/dist/app/extend/application.js +445 -9
  5. package/dist/app/middleware/cluster_app_mock.d.ts +2 -5
  6. package/dist/app/middleware/cluster_app_mock.js +99 -96
  7. package/dist/app.d.ts +5 -9
  8. package/dist/app.js +18 -17
  9. package/dist/bootstrap.d.ts +5 -15
  10. package/dist/bootstrap.js +13 -29
  11. package/dist/index.d.ts +77 -10
  12. package/dist/index.js +90 -22
  13. package/dist/inject_mocha.d.ts +1 -1
  14. package/dist/inject_mocha.js +35 -23
  15. package/dist/lib/agent_handler.d.ts +3 -10
  16. package/dist/lib/agent_handler.js +24 -9
  17. package/dist/lib/app.d.ts +3 -6
  18. package/dist/lib/app.js +291 -14
  19. package/dist/lib/app_handler.d.ts +5 -6
  20. package/dist/lib/app_handler.js +69 -21
  21. package/dist/lib/cluster.d.ts +121 -6
  22. package/dist/lib/cluster.js +340 -7
  23. package/dist/lib/context.d.ts +1 -4
  24. package/dist/lib/context.js +11 -3
  25. package/dist/lib/format_options.d.ts +2 -7
  26. package/dist/lib/format_options.js +93 -4
  27. package/dist/lib/inject_context.d.ts +1 -4
  28. package/dist/lib/inject_context.js +126 -22
  29. package/dist/lib/mock_agent.d.ts +4 -8
  30. package/dist/lib/mock_agent.js +45 -3
  31. package/dist/lib/mock_custom_loader.d.ts +1 -4
  32. package/dist/lib/mock_custom_loader.js +34 -3
  33. package/dist/lib/mock_http_server.d.ts +2 -6
  34. package/dist/lib/mock_http_server.js +18 -3
  35. package/dist/lib/mock_httpclient.d.ts +36 -2
  36. package/dist/lib/mock_httpclient.js +146 -4
  37. package/dist/lib/parallel/agent.d.ts +20 -5
  38. package/dist/lib/parallel/agent.js +117 -8
  39. package/dist/lib/parallel/app.d.ts +19 -24
  40. package/dist/lib/parallel/app.js +111 -9
  41. package/dist/lib/parallel/util.d.ts +3 -2
  42. package/dist/lib/parallel/util.js +66 -4
  43. package/dist/lib/prerequire.d.ts +1 -1
  44. package/dist/lib/prerequire.js +25 -1
  45. package/dist/lib/request_call_function.d.ts +1 -1
  46. package/dist/lib/request_call_function.js +47 -34
  47. package/dist/lib/restore.d.ts +1 -2
  48. package/dist/lib/restore.js +13 -9
  49. package/dist/lib/start-cluster.d.ts +2 -1
  50. package/dist/lib/start-cluster.js +14 -15
  51. package/dist/lib/supertest.d.ts +11 -2
  52. package/dist/lib/supertest.js +40 -5
  53. package/dist/lib/tmp/empty.d.ts +1 -1
  54. package/dist/lib/tmp/empty.js +2 -1
  55. package/dist/lib/types.d.ts +72 -3
  56. package/dist/lib/types.js +2 -3
  57. package/dist/lib/utils.d.ts +8 -11
  58. package/dist/lib/utils.js +69 -3
  59. package/dist/register.d.ts +7 -11
  60. package/dist/register.js +41 -55
  61. package/package.json +7 -7
  62. package/dist/agent-BKYkjoCx.js +0 -111
  63. package/dist/agent-CHCe8tnW.d.ts +0 -24
  64. package/dist/agent-DZ_fHoxJ.js +0 -48
  65. package/dist/agent_handler-DeUtoRVT.js +0 -26
  66. package/dist/app-6Bn3F5Uw.js +0 -252
  67. package/dist/app-CoypamK1.js +0 -99
  68. package/dist/app-l47a-gqT.d.ts +0 -7
  69. package/dist/app_handler-CkiK6fyC.js +0 -55
  70. package/dist/app_handler-Gp5J9X-v.d.ts +0 -9
  71. package/dist/application-BPpvw5dg.d.ts +0 -175
  72. package/dist/application-LrKwuOKn.js +0 -385
  73. package/dist/cluster-CA_hr9eV.js +0 -283
  74. package/dist/cluster-RTfUwmUd.d.ts +0 -126
  75. package/dist/context-BIduDy1M.js +0 -10
  76. package/dist/format_options-LRnReKde.js +0 -65
  77. package/dist/index-BtBMDZg8.d.ts +0 -78
  78. package/dist/inject_context-BxpcF-ds.js +0 -106
  79. package/dist/inject_mocha-BVf8v6El.js +0 -38
  80. package/dist/inject_mocha-Daf1Aj8M.d.ts +0 -1
  81. package/dist/mock_agent-CxT7Q0_N.js +0 -45
  82. package/dist/mock_custom_loader-f_tHRojG.js +0 -35
  83. package/dist/mock_http_server-De0r07gr.js +0 -17
  84. package/dist/mock_httpclient-1EgQkMxi.d.ts +0 -40
  85. package/dist/mock_httpclient-B6UVI7GS.js +0 -110
  86. package/dist/restore-BL0cE0KG.d.ts +0 -4
  87. package/dist/restore-CVQYXquh.js +0 -16
  88. package/dist/src-D22EjdGo.js +0 -47
  89. package/dist/supertest-BIds28yL.d.ts +0 -16
  90. package/dist/supertest-Cg412Los.js +0 -39
  91. package/dist/types-CPNMyF89.js +0 -1
  92. package/dist/types-CjZ-JeCo.d.ts +0 -75
  93. package/dist/typings/index.d.ts +0 -1
  94. package/dist/util-1xYBaaoh.d.ts +0 -6
  95. package/dist/util-BpppqTXv.js +0 -59
  96. package/dist/utils-MhP_Krx1.js +0 -40
@@ -1,22 +1,126 @@
1
- import "../mock_http_server-De0r07gr.js";
2
- import "../utils-MhP_Krx1.js";
3
- import "../supertest-Cg412Los.js";
4
- import "../format_options-LRnReKde.js";
5
- import "../cluster-CA_hr9eV.js";
6
- import "../context-BIduDy1M.js";
7
- import "../mock_custom_loader-f_tHRojG.js";
8
- import "../mock_agent-CxT7Q0_N.js";
9
- import "../mock_httpclient-B6UVI7GS.js";
10
- import "../types-CPNMyF89.js";
11
- import "../application-LrKwuOKn.js";
12
- import "../agent-DZ_fHoxJ.js";
13
- import "../app-6Bn3F5Uw.js";
14
- import "../restore-CVQYXquh.js";
15
- import "../util-BpppqTXv.js";
16
- import "../app-CoypamK1.js";
17
- import "../agent-BKYkjoCx.js";
18
- import "../agent_handler-DeUtoRVT.js";
19
- import "../app_handler-CkiK6fyC.js";
20
- import { injectContext } from "../inject_context-BxpcF-ds.js";
21
-
22
- export { injectContext };
1
+ import { debuglog } from 'node:util';
2
+ import assert from 'node:assert';
3
+ import { getApp } from "./app_handler.js";
4
+ const debug = debuglog('egg/mock/lib/inject_context');
5
+ const MOCHA_SUITE_APP = Symbol.for('mocha#suite#app');
6
+ /**
7
+ * Monkey patch the mocha instance with egg context.
8
+ *
9
+ * @param {Function} mocha - the module of mocha
10
+ */
11
+ export function injectContext(mocha) {
12
+ if (mocha._injectContextLoaded) {
13
+ debug('mocha already injected context, skip it');
14
+ return;
15
+ }
16
+ const { Runner } = mocha;
17
+ const runSuite = Runner.prototype.runSuite;
18
+ const runTests = Runner.prototype.runTests;
19
+ function getTestTitle(suite, test) {
20
+ const suiteTitle = suite.root ? 'root suite' : suite.title;
21
+ if (!test) {
22
+ return `"${suiteTitle}"`;
23
+ }
24
+ return `"${suiteTitle} - ${test.title}"`;
25
+ }
26
+ // Inject ctx for before/after.
27
+ Runner.prototype.runSuite = async function (suite, fn) {
28
+ debug('run suite: %s', suite.title);
29
+ let app;
30
+ const self = this;
31
+ try {
32
+ app = await getApp(suite);
33
+ debug('get app: %s', !!app);
34
+ await app.ready();
35
+ }
36
+ catch {
37
+ // 可能 app.ready 时报错,不使用失败的 app
38
+ app = null;
39
+ }
40
+ if (!app) {
41
+ // app 不存在,直接跳过,在 beforeEach 的 hook 中会报错
42
+ // 确保不打乱 mocha 的顺序,防止 mocha 内部状态错误
43
+ return runSuite.call(self, suite, fn);
44
+ }
45
+ let errSuite;
46
+ try {
47
+ suite.ctx[MOCHA_SUITE_APP] = app;
48
+ const mockContextFun = app.mockModuleContextScope || app.mockContextScope;
49
+ await mockContextFun.call(app, async function () {
50
+ await new Promise(resolve => {
51
+ runSuite.call(self, suite, (aErrSuite) => {
52
+ errSuite = aErrSuite;
53
+ resolve();
54
+ });
55
+ });
56
+ });
57
+ }
58
+ catch (err) {
59
+ // mockContext 失败后动态注册一个 beforeAll hook
60
+ // 快速失败,直接阻塞后续用例
61
+ suite.beforeAll('egg-mock-mock-ctx-failed', async () => {
62
+ throw err;
63
+ });
64
+ return runSuite.call(self, suite, (aErrSuite) => {
65
+ return fn(aErrSuite);
66
+ });
67
+ }
68
+ return fn(errSuite);
69
+ };
70
+ // Inject ctx for beforeEach/it/afterEach.
71
+ // And ctx with before/after is not same as beforeEach/it/afterEach.
72
+ Runner.prototype.runTests = async function (suite, fn) {
73
+ const tests = suite.tests.slice();
74
+ if (!tests.length) {
75
+ return runTests.call(this, suite, fn);
76
+ }
77
+ const app = suite.ctx[MOCHA_SUITE_APP];
78
+ const self = this;
79
+ if (!app) {
80
+ return runTests.call(self, suite, fn);
81
+ }
82
+ function done(errSuite) {
83
+ suite.tests = tests;
84
+ return fn(errSuite);
85
+ }
86
+ async function next(i) {
87
+ const test = tests[i];
88
+ if (!test) {
89
+ return done();
90
+ }
91
+ suite.tests = [test];
92
+ let app;
93
+ try {
94
+ app = await getApp(suite, test);
95
+ assert(app, `not found app for test ${getTestTitle(suite, test)}`);
96
+ await app.ready();
97
+ }
98
+ catch (err) {
99
+ self.fail(test, err);
100
+ return next(i + 1);
101
+ }
102
+ try {
103
+ const mockContextFun = app.mockModuleContextScope || app.mockContextScope;
104
+ await mockContextFun.call(app, async function () {
105
+ return await new Promise(resolve => {
106
+ runTests.call(self, suite, () => {
107
+ return resolve();
108
+ });
109
+ });
110
+ });
111
+ }
112
+ catch (err) {
113
+ self.fail(test, err);
114
+ return next(i + 1);
115
+ }
116
+ return next(i + 1);
117
+ }
118
+ next(0).catch(err => {
119
+ self.fail(suite, err);
120
+ done(suite);
121
+ });
122
+ };
123
+ mocha._injectContextLoaded = true;
124
+ debug('inject context success');
125
+ }
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luamVjdF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUV0RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBVTtJQUN0QyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUUzQyxTQUFTLFlBQVksQ0FBQyxLQUFVLEVBQUUsSUFBUztRQUN6QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLFVBQVUsR0FBRyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksVUFBVSxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0lBRUQsK0JBQStCO0lBQy9C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
@@ -1,9 +1,5 @@
1
- import { HttpClient, MockAgent } from "urllib";
2
-
3
- //#region src/lib/mock_agent.d.ts
4
- declare function getMockAgent(app?: {
5
- httpClient?: HttpClient;
1
+ import { MockAgent, HttpClient } from 'urllib';
2
+ export declare function getMockAgent(app?: {
3
+ httpClient?: HttpClient;
6
4
  }): MockAgent;
7
- declare function restoreMockAgent(): Promise<void>;
8
- //#endregion
9
- export { getMockAgent, restoreMockAgent };
5
+ export declare function restoreMockAgent(): Promise<void>;
@@ -1,3 +1,45 @@
1
- import { getMockAgent, restoreMockAgent } from "../mock_agent-CxT7Q0_N.js";
2
-
3
- export { getMockAgent, restoreMockAgent };
1
+ import { debuglog } from 'node:util';
2
+ import { MockAgent, setGlobalDispatcher, getGlobalDispatcher, Dispatcher, HttpClient } from 'urllib';
3
+ const debug = debuglog('egg/mock/lib/mock_agent');
4
+ globalThis.__mockAgent = null;
5
+ globalThis.__httpClientDispatchers = new Map();
6
+ export function getMockAgent(app) {
7
+ debug('getMockAgent');
8
+ if (!globalThis.__globalDispatcher) {
9
+ globalThis.__globalDispatcher = getGlobalDispatcher();
10
+ debug('create global dispatcher');
11
+ }
12
+ if (app?.httpClient && !globalThis.__httpClientDispatchers.has(app.httpClient)) {
13
+ globalThis.__httpClientDispatchers.set(app.httpClient, app.httpClient.getDispatcher());
14
+ debug('add new httpClient, size: %d', globalThis.__httpClientDispatchers.size);
15
+ }
16
+ if (!globalThis.__mockAgent) {
17
+ globalThis.__mockAgent = new MockAgent();
18
+ setGlobalDispatcher(globalThis.__mockAgent);
19
+ if (typeof app?.httpClient?.setDispatcher === 'function') {
20
+ app.httpClient.setDispatcher(globalThis.__mockAgent);
21
+ }
22
+ debug('create new mockAgent');
23
+ }
24
+ return globalThis.__mockAgent;
25
+ }
26
+ export async function restoreMockAgent() {
27
+ debug('restoreMockAgent start');
28
+ if (globalThis.__globalDispatcher) {
29
+ setGlobalDispatcher(globalThis.__globalDispatcher);
30
+ debug('restore global dispatcher');
31
+ }
32
+ debug('restore httpClient, size: %d', globalThis.__httpClientDispatchers.size);
33
+ for (const [httpClient, dispatcher] of globalThis.__httpClientDispatchers) {
34
+ httpClient.setDispatcher(dispatcher);
35
+ }
36
+ globalThis.__httpClientDispatchers.clear();
37
+ if (globalThis.__mockAgent) {
38
+ const agent = globalThis.__mockAgent;
39
+ globalThis.__mockAgent = null;
40
+ await agent.close();
41
+ debug('close mockAgent');
42
+ }
43
+ debug('restoreMockAgent end');
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9ja19hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyRyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQVFsRCxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUM5QixVQUFVLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7QUFFdkUsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFpQztJQUM1RCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxrQkFBa0IsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3RELEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLEdBQUcsRUFBRSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQy9FLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDdkYsS0FBSyxDQUFDLDhCQUE4QixFQUFFLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDekMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxHQUFHLEVBQUUsVUFBVSxFQUFFLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN6RCxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCO0lBQ3BDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ2hDLElBQUksVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0UsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNoQyxDQUFDIn0=
@@ -1,4 +1 @@
1
- //#region src/lib/mock_custom_loader.d.ts
2
- declare function setCustomLoader(app: any): void;
3
- //#endregion
4
- export { setCustomLoader };
1
+ export declare function setCustomLoader(app: any): void;
@@ -1,3 +1,34 @@
1
- import { setCustomLoader } from "../mock_custom_loader-f_tHRojG.js";
2
-
3
- export { setCustomLoader };
1
+ import { debuglog } from 'node:util';
2
+ const debug = debuglog('egg/mock/lib/mock_custom_loader');
3
+ export function setCustomLoader(app) {
4
+ const customLoader = app.config.customLoader;
5
+ if (!customLoader)
6
+ return;
7
+ for (const field of Object.keys(customLoader)) {
8
+ const loaderConfig = Object.assign({}, customLoader[field]);
9
+ loaderConfig.field = field;
10
+ addMethod(loaderConfig);
11
+ }
12
+ function addMethod(loaderConfig) {
13
+ const field = loaderConfig.field;
14
+ const appMethodName = 'mock' + field.replace(/^[a-z]/i, s => s.toUpperCase());
15
+ if (app[appMethodName]) {
16
+ app.coreLogger.warn("Can't override app.%s", appMethodName);
17
+ return;
18
+ }
19
+ debug('[addMethod] %s => %j', appMethodName, loaderConfig);
20
+ app[appMethodName] = function (service, methodName, fn) {
21
+ if (typeof service === 'string') {
22
+ const arr = service.split('.');
23
+ service = loaderConfig.inject === 'ctx' ? this[field + 'Classes'] : this[field];
24
+ for (const key of arr) {
25
+ service = service[key];
26
+ }
27
+ service = service.prototype || service;
28
+ }
29
+ this._mockFn(service, methodName, fn);
30
+ return this;
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19jdXN0b21fbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9tb2NrX2N1c3RvbV9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUUxRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVE7SUFDdEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDN0MsSUFBSSxDQUFDLFlBQVk7UUFBRSxPQUFPO0lBRTFCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsWUFBaUI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQWUsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzVELE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxDQUFDLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxPQUFZLEVBQUUsVUFBa0IsRUFBRSxFQUFPO1lBQ3RFLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN0QixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
@@ -1,6 +1,2 @@
1
- import { Server } from "node:http";
2
-
3
- //#region src/lib/mock_http_server.d.ts
4
- declare function createServer(app: any): Server;
5
- //#endregion
6
- export { createServer };
1
+ import { Server } from 'node:http';
2
+ export declare function createServer(app: any): Server;
@@ -1,3 +1,18 @@
1
- import { createServer } from "../mock_http_server-De0r07gr.js";
2
-
3
- export { createServer };
1
+ import http, { Server } from 'node:http';
2
+ const SERVER = Symbol('http_server');
3
+ export function createServer(app) {
4
+ let server = app[SERVER] || app.callback();
5
+ if (typeof server === 'function') {
6
+ server = http.createServer(server);
7
+ // cache server, avoid create many times
8
+ app[SERVER] = server;
9
+ if (!app.server) {
10
+ app.server = server;
11
+ }
12
+ // emit server event just like egg-cluster does
13
+ // https://github.com/eggjs/egg-cluster/blob/master/lib/app_worker.js#L52
14
+ app.emit('server', server);
15
+ }
16
+ return server;
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19odHRwX3NlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9ja19odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFckMsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFRO0lBQ25DLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0MsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyx3Q0FBd0M7UUFDeEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCwrQ0FBK0M7UUFDL0MseUVBQXlFO1FBQ3pFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
@@ -1,2 +1,36 @@
1
- import { MockHttpClientMethod, MockResponseCallbackOptions, MockResultFunction, MockResultOptions, ResultObject, createMockHttpClient } from "../mock_httpclient-1EgQkMxi.js";
2
- export { MockHttpClientMethod, MockResponseCallbackOptions, MockResultFunction, MockResultOptions, ResultObject, createMockHttpClient };
1
+ import type { Dispatcher, Headers, BodyInit } from 'urllib';
2
+ export interface MockResultOptions {
3
+ data: string | Buffer | Record<string, any>;
4
+ /**
5
+ * http status
6
+ */
7
+ status?: number;
8
+ /**
9
+ * response header
10
+ */
11
+ headers?: Record<string, string>;
12
+ /**
13
+ * delay the associated reply by a set amount in ms
14
+ */
15
+ delay?: number;
16
+ /**
17
+ * any matching request will always reply with the defined response indefinitely
18
+ */
19
+ persist?: boolean;
20
+ /**
21
+ * any matching request will reply with the defined response a fixed amount of times
22
+ */
23
+ repeats?: number;
24
+ }
25
+ export type ResultObject = MockResultOptions;
26
+ export interface MockResponseCallbackOptions {
27
+ path: string;
28
+ method: string;
29
+ headers?: Headers | Record<string, string>;
30
+ origin?: string;
31
+ body?: BodyInit | Dispatcher.DispatchOptions['body'] | null;
32
+ maxRedirections?: number;
33
+ }
34
+ export type MockResultFunction = (url: string, options: MockResponseCallbackOptions) => MockResultOptions | string;
35
+ export declare function createMockHttpClient(app: any): (mockUrl: string | RegExp, mockMethod: string | string[] | MockResultOptions | MockResultFunction, mockResult?: MockResultOptions | MockResultFunction | string) => void;
36
+ export type MockHttpClientMethod = ReturnType<typeof createMockHttpClient>;
@@ -1,4 +1,146 @@
1
- import "../mock_agent-CxT7Q0_N.js";
2
- import { createMockHttpClient } from "../mock_httpclient-B6UVI7GS.js";
3
-
4
- export { createMockHttpClient };
1
+ import { mm } from 'mm';
2
+ import { extend } from '@eggjs/extend2';
3
+ import { getMockAgent } from "./mock_agent.js";
4
+ function normalizeResult(result) {
5
+ if (typeof result === 'string') {
6
+ result = { data: result };
7
+ }
8
+ if (!result.status) {
9
+ result.status = 200;
10
+ }
11
+ result.data = result.data || '';
12
+ if (Buffer.isBuffer(result.data)) {
13
+ // do nothing
14
+ }
15
+ else if (typeof result.data === 'object') {
16
+ // json
17
+ result.data = Buffer.from(JSON.stringify(result.data));
18
+ }
19
+ else if (typeof result.data === 'string') {
20
+ // string
21
+ result.data = Buffer.from(result.data);
22
+ }
23
+ else {
24
+ throw new Error('`mockResult.data` must be buffer, string or json');
25
+ }
26
+ result.headers = result.headers ?? {};
27
+ return result;
28
+ }
29
+ const MOCK_CONFIGS = Symbol('MOCK_CONFIGS');
30
+ const MOCK_CONFIG_INDEX = Symbol('MOCK_CONFIG_INDEX');
31
+ export function createMockHttpClient(app) {
32
+ /**
33
+ * mock httpclient
34
+ * @function mockHttpclient
35
+ * @param {String} mockUrl - url
36
+ * @param {String|Array} mockMethod - http method, default is '*'
37
+ * @param {Object|Function} mockResult - you data
38
+ * - data - buffer / string / json
39
+ * - status - http status
40
+ * - headers - response header
41
+ * - delay - delay the associated reply by a set amount in ms.
42
+ * - persist - any matching request will always reply with the defined response indefinitely, default is true
43
+ * - repeats - number, any matching request will reply with the defined response a fixed amount of times
44
+ */
45
+ return function mockHttpClient(mockUrl, mockMethod, mockResult) {
46
+ let mockMethods = mockMethod;
47
+ if (!mockResult) {
48
+ // app.mockHttpclient(mockUrl, mockResult)
49
+ mockResult = mockMethod;
50
+ mockMethods = ['*'];
51
+ }
52
+ if (!Array.isArray(mockMethods)) {
53
+ mockMethods = [mockMethods];
54
+ }
55
+ mockMethods = mockMethods.map(method => (method || 'GET').toUpperCase());
56
+ // use MockAgent on undici
57
+ let mockConfigs = app[MOCK_CONFIGS];
58
+ if (!mockConfigs) {
59
+ mockConfigs = [];
60
+ mm(app, MOCK_CONFIGS, mockConfigs);
61
+ }
62
+ let mockConfigIndex = -1;
63
+ let origin = mockUrl;
64
+ let originMethod;
65
+ const pathname = mockUrl;
66
+ let pathMethod;
67
+ if (typeof mockUrl === 'string') {
68
+ const urlObject = new URL(mockUrl);
69
+ origin = urlObject.origin;
70
+ const originalPathname = urlObject.pathname;
71
+ pathMethod = path => {
72
+ if (path === originalPathname)
73
+ return true;
74
+ // should match /foo?a=1 including query
75
+ if (path.includes('?'))
76
+ return path.startsWith(originalPathname);
77
+ return false;
78
+ };
79
+ }
80
+ else if (mockUrl instanceof RegExp) {
81
+ let requestOrigin = '';
82
+ originMethod = value => {
83
+ requestOrigin = value;
84
+ return true;
85
+ };
86
+ pathMethod = path => {
87
+ for (const config of mockConfigs) {
88
+ if (config.mockUrl.test(`${requestOrigin}${path}`)) {
89
+ mm(app, MOCK_CONFIG_INDEX, config.mockConfigIndex);
90
+ return true;
91
+ }
92
+ }
93
+ return false;
94
+ };
95
+ mockConfigIndex = mockConfigs.length;
96
+ mockConfigs.push({ mockUrl, mockResult, mockConfigIndex });
97
+ }
98
+ const mockPool = originMethod
99
+ ? getMockAgent(app).get(originMethod)
100
+ : getMockAgent(app).get(originMethod ?? origin);
101
+ // persist default is true
102
+ let persist = true;
103
+ if (typeof mockResult === 'object' && typeof mockResult.persist === 'boolean') {
104
+ persist = mockResult.persist;
105
+ }
106
+ mockMethods.forEach(function (method) {
107
+ const mockScope = mockPool
108
+ .intercept({
109
+ path: pathMethod ?? pathname,
110
+ method: method === '*' ? () => true : method,
111
+ })
112
+ .reply(options => {
113
+ // not support mockResult as an async function
114
+ const requestUrl = `${options.origin}${options.path}`;
115
+ let mockRequestResult;
116
+ if (mockConfigIndex >= 0) {
117
+ mockResult = mockConfigs[app[MOCK_CONFIG_INDEX]].mockResult;
118
+ mockRequestResult = typeof mockResult === 'function' ? mockResult(requestUrl, options) : mockResult;
119
+ }
120
+ else {
121
+ mockRequestResult = typeof mockResult === 'function' ? mockResult(requestUrl, options) : mockResult;
122
+ }
123
+ const result = extend(true, {}, normalizeResult(mockRequestResult));
124
+ return {
125
+ statusCode: result.status,
126
+ data: result.data,
127
+ responseOptions: {
128
+ headers: result.headers,
129
+ },
130
+ };
131
+ });
132
+ if (typeof mockResult === 'object') {
133
+ if (mockResult.delay && mockResult.delay > 0) {
134
+ mockScope.delay(mockResult.delay);
135
+ }
136
+ }
137
+ if (persist) {
138
+ mockScope.persist();
139
+ }
140
+ else if (typeof mockResult === 'object' && mockResult.repeats && mockResult.repeats > 0) {
141
+ mockScope.times(mockResult.repeats);
142
+ }
143
+ });
144
+ };
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9tb2NrX2h0dHBjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBdUMvQyxTQUFTLGVBQWUsQ0FBQyxNQUFrQztJQUN6RCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakMsYUFBYTtJQUNmLENBQUM7U0FBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxPQUFPO1FBQ1AsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztTQUFNLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNDLFNBQVM7UUFDVCxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFD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
@@ -1,5 +1,20 @@
1
- import "../../mock_httpclient-1EgQkMxi.js";
2
- import "../../types-CjZ-JeCo.js";
3
- import "../../util-1xYBaaoh.js";
4
- import { MockAgent, createAgent } from "../../agent-CHCe8tnW.js";
5
- export { MockAgent, createAgent };
1
+ import { Base } from 'sdk-base';
2
+ import type { Agent as EggAgent } from 'egg';
3
+ import type { MockOptions, MockApplicationOptions } from '../types.ts';
4
+ import { APP_INIT } from './util.ts';
5
+ export declare class MockAgent extends Base {
6
+ #private;
7
+ options: MockApplicationOptions;
8
+ baseDir: string;
9
+ [APP_INIT]: boolean;
10
+ _instance: EggAgent;
11
+ constructor(options: MockApplicationOptions);
12
+ _init(): Promise<void>;
13
+ on(...args: any[]): this;
14
+ once(...args: any[]): this;
15
+ /**
16
+ * close agent
17
+ */
18
+ _close(): Promise<void>;
19
+ }
20
+ export declare function createAgent(options: MockOptions): MockAgent;