@modern-js/server 1.4.1 → 1.4.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 (145) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/js/modern/dev-tools/mock/index.js +1 -1
  3. package/dist/js/modern/dev-tools/socket-server.js +63 -46
  4. package/dist/js/modern/index.js +1 -1
  5. package/dist/js/modern/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
  6. package/dist/js/modern/server/{dev-server/dev-server.js → dev-server.js} +19 -14
  7. package/dist/js/modern/server/index.js +15 -138
  8. package/dist/js/modern/{libs/render/cache/type.js → types.js} +0 -0
  9. package/dist/js/node/dev-tools/mock/index.js +2 -2
  10. package/dist/js/node/dev-tools/socket-server.js +63 -47
  11. package/dist/js/node/index.js +2 -2
  12. package/dist/js/node/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
  13. package/dist/js/node/server/{dev-server/dev-server.js → dev-server.js} +22 -24
  14. package/dist/js/node/server/index.js +17 -152
  15. package/dist/js/node/{libs/render/cache/type.js → types.js} +0 -0
  16. package/dist/types/dev-tools/babel/register.d.ts +1 -1
  17. package/dist/types/dev-tools/dev-server-plugin.d.ts +1 -1
  18. package/dist/types/dev-tools/launch-editor/index.d.ts +1 -2
  19. package/dist/types/dev-tools/mock/getMockData.d.ts +1 -2
  20. package/dist/types/dev-tools/mock/index.d.ts +1 -2
  21. package/dist/types/dev-tools/socket-server.d.ts +5 -1
  22. package/dist/types/index.d.ts +4 -5
  23. package/dist/types/server/{dev-server/dev-server-split.d.ts → dev-server-split.d.ts} +5 -4
  24. package/dist/types/server/{dev-server/dev-server.d.ts → dev-server.d.ts} +4 -3
  25. package/dist/types/server/index.d.ts +4 -19
  26. package/dist/types/types.d.ts +28 -0
  27. package/modern.config.js +5 -1
  28. package/package.json +8 -39
  29. package/tests/dev.test.ts +17 -0
  30. package/tests/server.test.ts +10 -3
  31. package/dist/js/modern/constants.js +0 -26
  32. package/dist/js/modern/libs/context/context.js +0 -180
  33. package/dist/js/modern/libs/context/index.js +0 -3
  34. package/dist/js/modern/libs/hook-api/route.js +0 -39
  35. package/dist/js/modern/libs/hook-api/template.js +0 -61
  36. package/dist/js/modern/libs/metrics.js +0 -12
  37. package/dist/js/modern/libs/proxy.js +0 -59
  38. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -70
  39. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -233
  40. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +0 -53
  41. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +0 -35
  42. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +0 -121
  43. package/dist/js/modern/libs/render/cache/index.js +0 -74
  44. package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -9
  45. package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -35
  46. package/dist/js/modern/libs/render/cache/spr.js +0 -280
  47. package/dist/js/modern/libs/render/cache/util.js +0 -79
  48. package/dist/js/modern/libs/render/index.js +0 -65
  49. package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
  50. package/dist/js/modern/libs/render/modern/index.js +0 -42
  51. package/dist/js/modern/libs/render/reader.js +0 -112
  52. package/dist/js/modern/libs/render/ssr.js +0 -58
  53. package/dist/js/modern/libs/render/static.js +0 -46
  54. package/dist/js/modern/libs/render/type.js +0 -7
  55. package/dist/js/modern/libs/route/index.js +0 -68
  56. package/dist/js/modern/libs/route/matcher.js +0 -94
  57. package/dist/js/modern/libs/route/route.js +0 -24
  58. package/dist/js/modern/libs/serve-file.js +0 -28
  59. package/dist/js/modern/server/dev-server/index.js +0 -2
  60. package/dist/js/modern/server/modern-server-split.js +0 -81
  61. package/dist/js/modern/server/modern-server.js +0 -584
  62. package/dist/js/modern/type.js +0 -1
  63. package/dist/js/modern/utils.js +0 -112
  64. package/dist/js/node/constants.js +0 -36
  65. package/dist/js/node/libs/context/context.js +0 -194
  66. package/dist/js/node/libs/context/index.js +0 -18
  67. package/dist/js/node/libs/hook-api/route.js +0 -48
  68. package/dist/js/node/libs/hook-api/template.js +0 -69
  69. package/dist/js/node/libs/metrics.js +0 -18
  70. package/dist/js/node/libs/proxy.js +0 -69
  71. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -77
  72. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -238
  73. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +0 -60
  74. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +0 -42
  75. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +0 -128
  76. package/dist/js/node/libs/render/cache/index.js +0 -86
  77. package/dist/js/node/libs/render/cache/page-caches/index.js +0 -17
  78. package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -47
  79. package/dist/js/node/libs/render/cache/spr.js +0 -298
  80. package/dist/js/node/libs/render/cache/util.js +0 -105
  81. package/dist/js/node/libs/render/index.js +0 -91
  82. package/dist/js/node/libs/render/modern/browser-list.js +0 -14
  83. package/dist/js/node/libs/render/modern/index.js +0 -58
  84. package/dist/js/node/libs/render/reader.js +0 -139
  85. package/dist/js/node/libs/render/ssr.js +0 -76
  86. package/dist/js/node/libs/render/static.js +0 -62
  87. package/dist/js/node/libs/render/type.js +0 -14
  88. package/dist/js/node/libs/route/index.js +0 -83
  89. package/dist/js/node/libs/route/matcher.js +0 -108
  90. package/dist/js/node/libs/route/route.js +0 -33
  91. package/dist/js/node/libs/serve-file.js +0 -41
  92. package/dist/js/node/server/dev-server/index.js +0 -27
  93. package/dist/js/node/server/modern-server-split.js +0 -97
  94. package/dist/js/node/server/modern-server.js +0 -622
  95. package/dist/js/node/type.js +0 -5
  96. package/dist/js/node/utils.js +0 -143
  97. package/dist/types/constants.d.ts +0 -20
  98. package/dist/types/libs/context/context.d.ts +0 -61
  99. package/dist/types/libs/context/index.d.ts +0 -4
  100. package/dist/types/libs/hook-api/route.d.ts +0 -14
  101. package/dist/types/libs/hook-api/template.d.ts +0 -14
  102. package/dist/types/libs/metrics.d.ts +0 -3
  103. package/dist/types/libs/proxy.d.ts +0 -16
  104. package/dist/types/libs/render/cache/__tests__/cache.fun.test.d.ts +0 -1
  105. package/dist/types/libs/render/cache/__tests__/cache.test.d.ts +0 -1
  106. package/dist/types/libs/render/cache/__tests__/cacheable.d.ts +0 -62
  107. package/dist/types/libs/render/cache/__tests__/error-configuration.d.ts +0 -28
  108. package/dist/types/libs/render/cache/__tests__/matched-cache.d.ts +0 -124
  109. package/dist/types/libs/render/cache/index.d.ts +0 -6
  110. package/dist/types/libs/render/cache/page-caches/index.d.ts +0 -2
  111. package/dist/types/libs/render/cache/page-caches/lru.d.ts +0 -15
  112. package/dist/types/libs/render/cache/spr.d.ts +0 -24
  113. package/dist/types/libs/render/cache/type.d.ts +0 -48
  114. package/dist/types/libs/render/cache/util.d.ts +0 -17
  115. package/dist/types/libs/render/index.d.ts +0 -18
  116. package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
  117. package/dist/types/libs/render/modern/index.d.ts +0 -3
  118. package/dist/types/libs/render/reader.d.ts +0 -18
  119. package/dist/types/libs/render/ssr.d.ts +0 -10
  120. package/dist/types/libs/render/static.d.ts +0 -3
  121. package/dist/types/libs/render/type.d.ts +0 -34
  122. package/dist/types/libs/route/index.d.ts +0 -15
  123. package/dist/types/libs/route/matcher.d.ts +0 -15
  124. package/dist/types/libs/route/route.d.ts +0 -14
  125. package/dist/types/libs/serve-file.d.ts +0 -8
  126. package/dist/types/server/dev-server/index.d.ts +0 -2
  127. package/dist/types/server/modern-server-split.d.ts +0 -26
  128. package/dist/types/server/modern-server.d.ts +0 -72
  129. package/dist/types/type.d.ts +0 -80
  130. package/dist/types/utils.d.ts +0 -19
  131. package/tests/context.test.ts +0 -52
  132. package/tests/fixtures/hosting-files/static/index.js +0 -1
  133. package/tests/fixtures/reader/index.ts +0 -3
  134. package/tests/fixtures/route-spec/dynamic.json +0 -13
  135. package/tests/fixtures/route-spec/index.json +0 -29
  136. package/tests/fixtures/ssr/bundle.js +0 -5
  137. package/tests/fixtures/static-dir/bar.html +0 -11
  138. package/tests/fixtures/static-dir/baz/index.html +0 -11
  139. package/tests/fixtures/static-dir/foo/index.html +0 -11
  140. package/tests/helper.ts +0 -8
  141. package/tests/hook.test.ts +0 -44
  142. package/tests/middleware.test.ts +0 -179
  143. package/tests/render.test.ts +0 -102
  144. package/tests/route.test.ts +0 -77
  145. package/tests/utils.test.ts +0 -106
@@ -1,179 +0,0 @@
1
- import path from 'path';
2
- import EventEmitter from 'events';
3
- import { Readable } from 'stream';
4
- import { createServer, Server } from 'http';
5
- import httpMocks from 'node-mocks-http';
6
- import portfinder from 'portfinder';
7
- import axios from 'axios';
8
- import { createContext } from '../src/libs/context';
9
- import { createStaticFileHandler } from '../src/libs/serve-file';
10
- import { createProxyHandler } from '../src/libs/proxy';
11
-
12
- describe('test middleware create factory', () => {
13
- describe('should create static-file handler correctly', () => {
14
- const middleware = createStaticFileHandler([
15
- {
16
- path: /static\/|upload\//,
17
- target: path.join(__dirname, './fixtures/hosting-files'),
18
- },
19
- ]);
20
-
21
- test('should get static file correctly', resolve => {
22
- const req = httpMocks.createRequest({
23
- path: '/static/index.js',
24
- eventEmitter: Readable,
25
- });
26
- const res = httpMocks.createResponse({ eventEmitter: EventEmitter });
27
- const mockContext = createContext(req, res);
28
- res.on('finish', () => {
29
- expect(res._getBuffer().toString().trim()).toBe(
30
- "console.info('index.js');",
31
- );
32
- resolve();
33
- });
34
-
35
- middleware(mockContext, () => {
36
- throw new Error('should not happened');
37
- });
38
- });
39
-
40
- test('should miss static file correctly', resolve => {
41
- const req = httpMocks.createRequest({
42
- path: '/static/index.css',
43
- eventEmitter: Readable,
44
- });
45
- const res = httpMocks.createResponse({ eventEmitter: EventEmitter });
46
- const mockContext = createContext(req, res);
47
- res.on('finish', () => {
48
- throw new Error('should not happened');
49
- });
50
-
51
- middleware(mockContext, () => {
52
- req.destroy();
53
- expect(true).toBeTruthy();
54
- resolve();
55
- });
56
- });
57
- });
58
-
59
- jest.setTimeout(1000 * 10);
60
- describe('should create proxy handler correctly', () => {
61
- test('should return null if no options', () => {
62
- expect(createProxyHandler(null as any)).toBeNull();
63
- });
64
-
65
- let sourceServerPort = 8080;
66
- let sourceServer: Server | null = null;
67
- beforeAll(async () => {
68
- let done: any;
69
- const promise = new Promise(resolve => (done = resolve));
70
- sourceServerPort = await portfinder.getPortPromise();
71
- sourceServer = createServer((req, res) => {
72
- res.setHeader('Access-Control-Allow-Origin', '*');
73
- res.write(req.url?.slice(1));
74
- res.end();
75
- }).listen(sourceServerPort, done);
76
- return promise;
77
- });
78
-
79
- afterAll(() => {
80
- if (sourceServer) {
81
- sourceServer.close();
82
- }
83
- });
84
-
85
- test('should proxy correctly use simply options', async () => {
86
- const port = await portfinder.getPortPromise();
87
- const middlewares = createProxyHandler({
88
- '/simple': `http://localhost:${sourceServerPort}`,
89
- });
90
- const proxyHandler = middlewares![0];
91
-
92
- const server = createServer((req, res) => {
93
- const context = createContext(req, res);
94
- proxyHandler(context, () => {
95
- throw new Error('should not happened');
96
- });
97
- }).listen(port);
98
-
99
- try {
100
- const { data } = await axios.get(`http://localhost:${port}/simple`);
101
- expect(data).toBe('simple');
102
- } finally {
103
- server.close();
104
- }
105
- });
106
-
107
- test('should proxy correctly use simply obj options', async () => {
108
- const port = await portfinder.getPortPromise();
109
- const middlewares = createProxyHandler({
110
- '/simple-obj': {
111
- target: `http://localhost:${sourceServerPort}`,
112
- },
113
- });
114
- const proxyHandler = middlewares![0];
115
-
116
- const server = createServer((req, res) => {
117
- const context = createContext(req, res);
118
- proxyHandler(context, () => {
119
- throw new Error('should not happened');
120
- });
121
- }).listen(port);
122
-
123
- try {
124
- const { data } = await axios.get(`http://localhost:${port}/simple-obj`);
125
- expect(data).toBe('simple-obj');
126
- } finally {
127
- server.close();
128
- }
129
- });
130
-
131
- test('should proxy correctly use context options', async () => {
132
- const port = await portfinder.getPortPromise();
133
- const middlewares = createProxyHandler({
134
- context: '/context',
135
- target: `http://localhost:${sourceServerPort}`,
136
- });
137
- const proxyHandler = middlewares![0];
138
-
139
- const server = createServer((req, res) => {
140
- const context = createContext(req, res);
141
- proxyHandler(context, () => {
142
- throw new Error('should not happened');
143
- });
144
- }).listen(port);
145
-
146
- try {
147
- const { data } = await axios.get(`http://localhost:${port}/context`);
148
- expect(data).toBe('context');
149
- } finally {
150
- server.close();
151
- }
152
- });
153
-
154
- test('should proxy correctly use array options', async () => {
155
- const port = await portfinder.getPortPromise();
156
- const middlewares = createProxyHandler([
157
- {
158
- context: '/array',
159
- target: `http://localhost:${sourceServerPort}`,
160
- },
161
- ]);
162
- const proxyHandler = middlewares![0];
163
-
164
- const server = createServer((req, res) => {
165
- const context = createContext(req, res);
166
- proxyHandler(context, () => {
167
- throw new Error('should not happened');
168
- });
169
- }).listen(port);
170
-
171
- try {
172
- const { data } = await axios.get(`http://localhost:${port}/array`);
173
- expect(data).toBe('array');
174
- } finally {
175
- server.close();
176
- }
177
- });
178
- });
179
- });
@@ -1,102 +0,0 @@
1
- import path from 'path';
2
- import { render } from '../src/libs/render/ssr';
3
- import { handleDirectory } from '../src/libs/render/static';
4
- import { LruReader } from '../src/libs/render/reader';
5
-
6
- describe('test render function', () => {
7
- test('should return content correctly ', async () => {
8
- const renderResult = await render(
9
- {
10
- params: {},
11
- pathname: '/foo',
12
- host: 'localhost:8080',
13
- query: {},
14
- url: 'localhost:8080/foo',
15
- cookieMap: {},
16
- headers: {},
17
- } as any,
18
- {
19
- urlPath: '/foo',
20
- bundle: 'bundle.js',
21
- distDir: path.join(__dirname, 'fixtures', 'ssr'),
22
- template: 'tpl.html',
23
- entryName: 'foo',
24
- staticGenerate: false,
25
- } as any,
26
- {
27
- extendSSRContext: () => {
28
- // empty
29
- },
30
- } as any,
31
- );
32
-
33
- expect(renderResult.content).toMatch('Modern.js');
34
- expect(renderResult.contentType).toMatch('text/html; charset=utf-8');
35
- });
36
-
37
- test('should handle directory for .html correctly', async () => {
38
- const entryPath = path.join(__dirname, 'fixtures', 'static-dir');
39
-
40
- const res1 = await handleDirectory(
41
- {
42
- path: '/modern/bar',
43
- } as any,
44
- entryPath,
45
- '/modern',
46
- );
47
-
48
- expect(res1?.content.toString()).toMatch('bar');
49
- });
50
-
51
- test('should handle directory for index.html correctly', async () => {
52
- const entryPath = path.join(__dirname, 'fixtures', 'static-dir');
53
-
54
- const res1 = await handleDirectory(
55
- {
56
- path: '/modern/foo',
57
- } as any,
58
- entryPath,
59
- '/modern',
60
- );
61
-
62
- expect(res1?.content.toString()).toMatch('foo');
63
- });
64
-
65
- test('should handle directory for /index.html correctly', async () => {
66
- const entryPath = path.join(__dirname, 'fixtures', 'static-dir');
67
-
68
- const res1 = await handleDirectory(
69
- {
70
- path: '/modern/baz/',
71
- } as any,
72
- entryPath,
73
- '/modern',
74
- );
75
-
76
- expect(res1?.content.toString()).toMatch('baz');
77
- });
78
-
79
- test('should reader work correctly', async () => {
80
- const reader = new LruReader();
81
- const dir = path.join(__dirname, 'fixtures', 'reader');
82
-
83
- const nullRes = await reader.read(path.join(dir, 'foo.ts'));
84
- expect(nullRes).toBeNull();
85
-
86
- const dirRes = await reader.read(path.join(dir, 'test-dir'));
87
- expect(dirRes).toBeNull();
88
-
89
- const res = await reader.read(path.join(dir, 'index.ts'));
90
- expect(res).not.toBeNull();
91
- expect(res?.content.toString()).toMatch('modern');
92
-
93
- const res1 = await reader.read(path.join(dir, 'index.ts'));
94
- expect(res1).not.toBeNull();
95
- expect(res1?.content.toString()).toMatch('modern');
96
-
97
- reader.update();
98
- const res2 = await reader.read(path.join(dir, 'index.ts'));
99
- expect(res2).not.toBeNull();
100
- expect(res2?.content.toString()).toMatch('modern');
101
- });
102
- });
@@ -1,77 +0,0 @@
1
- import { RouteMatchManager, RouteMatcher } from '../src/libs/route';
2
- import spec from './fixtures/route-spec/index.json';
3
- import dynamic from './fixtures/route-spec/dynamic.json';
4
-
5
- describe('test route', () => {
6
- describe('test route matcher', () => {
7
- test('should matcher work correctyl with simple spec', () => {
8
- const routeSpec = spec.routes[0];
9
- const matcher = new RouteMatcher(routeSpec);
10
- expect(matcher.spec).toBe(routeSpec);
11
- expect(matcher.urlPath).toBe(routeSpec.urlPath);
12
- expect(matcher.urlReg).toBeUndefined();
13
- expect(matcher.urlMatcher).toBeUndefined();
14
-
15
- const { isSSR, isApi, isSPA, urlPath, entryName, entryPath } =
16
- matcher.generate('');
17
-
18
- expect(isSSR).toBeTruthy();
19
- expect(isApi).toBeFalsy();
20
- expect(isSPA).toBeTruthy();
21
- expect(urlPath).toBe(routeSpec.urlPath);
22
- expect(entryName).toBe(routeSpec.entryName);
23
- expect(entryPath).toBe(routeSpec.entryPath);
24
-
25
- expect(matcher.matchEntry('entry')).toBeTruthy();
26
- expect(matcher.matchEntry('home')).toBeFalsy();
27
- expect(matcher.matchLength('/entry')).toBe(6);
28
- expect(matcher.matchUrlPath('/entry')).toBeTruthy();
29
- expect(matcher.matchUrlPath('/home')).toBeFalsy();
30
- });
31
- });
32
-
33
- describe('test route manager', () => {
34
- test('should manager work correctly with simple spec', async () => {
35
- const manager = new RouteMatchManager();
36
- expect(manager.matchers.length).toBe(0);
37
- manager.reset(spec.routes);
38
- expect(manager.matchers.length).toBe(3);
39
-
40
- const matchedByEntry = manager.matchEntry('home');
41
- expect(matchedByEntry).toBeDefined();
42
- expect(matchedByEntry?.generate('').entryName).toBe('home');
43
-
44
- const matchedByUrl = manager.match('/entry');
45
- expect(matchedByUrl).toBeDefined();
46
- expect(matchedByUrl?.generate('').entryName).toBe('entry');
47
-
48
- const SSRUrlBundles = manager.getBundles();
49
- expect(SSRUrlBundles).toEqual(['bundles/entry.js', 'bundles/home.js']);
50
-
51
- manager.reset([]);
52
- expect(manager.matchers.length).toBe(0);
53
- });
54
-
55
- test('should manager work correctly with dynamic spec', async () => {
56
- const manager = new RouteMatchManager();
57
- expect(manager.matchers.length).toBe(0);
58
- manager.reset(dynamic.routes);
59
- expect(manager.matchers.length).toBe(1);
60
-
61
- const matched = manager.match('/entry/001');
62
- expect(matched).toBeDefined();
63
- const route = matched?.generate('/entry/001');
64
- expect(route?.entryName).toBe('entry');
65
- expect(route?.params).toEqual({ id: '001' });
66
-
67
- const matchedWithTrail = manager.match('/entry/001/a');
68
- expect(matchedWithTrail).toBeDefined();
69
- const routeWithTrail = matchedWithTrail?.generate('/entry/001/a');
70
- expect(routeWithTrail?.entryName).toBe('entry');
71
- expect(routeWithTrail?.params).toEqual({ id: '001' });
72
-
73
- const miss = manager.match('/entry');
74
- expect(miss).toBeUndefined();
75
- });
76
- });
77
- });
@@ -1,106 +0,0 @@
1
- import { compile } from 'path-to-regexp';
2
- import {
3
- noop,
4
- mergeExtension,
5
- toMessage,
6
- createErrorDocument,
7
- createMiddlewareCollecter,
8
- getStaticReg,
9
- } from '../src/utils';
10
-
11
- describe('test server utils', () => {
12
- test('should get nothing from noop', async () => {
13
- const rtn = noop();
14
- expect(rtn).toBeUndefined();
15
- });
16
-
17
- test('should merge extension', () => {
18
- const middleware = ['foo', 'baz'];
19
- const extension = mergeExtension(middleware);
20
- expect(extension.middleware).toEqual(middleware);
21
- });
22
-
23
- describe('test some case by toMessage func', () => {
24
- test('should get message from error like object', () => {
25
- const error = new Error('some error happened');
26
- const message = toMessage('error info', error);
27
- expect(message).toBe('error info: some error happened');
28
- });
29
-
30
- test('should get message from error message', () => {
31
- const errorMsg = 'some error happened';
32
- const message = toMessage('error info', errorMsg);
33
- expect(message).toBe('error info: some error happened');
34
- });
35
- });
36
-
37
- test('should return document text', () => {
38
- const doc = createErrorDocument(302, 'redirect');
39
- expect(doc).toMatch('302');
40
- expect(doc).toMatch('redirect');
41
- expect(doc).toMatch('302: redirect');
42
- });
43
-
44
- describe('test middleware collector', () => {
45
- test('shoule return web middleware correctly', () => {
46
- const { addWebMiddleware, getMiddlewares } = createMiddlewareCollecter();
47
-
48
- const before = getMiddlewares();
49
- expect(before.web).toEqual([]);
50
-
51
- const middleware = async () => {
52
- // empty
53
- };
54
- addWebMiddleware(middleware);
55
- const after = getMiddlewares();
56
- expect(after.web).toEqual([middleware]);
57
- });
58
-
59
- test('shoule return api middleware correctly', () => {
60
- const { addAPIMiddleware, getMiddlewares } = createMiddlewareCollecter();
61
-
62
- const before = getMiddlewares();
63
- expect(before.web).toEqual([]);
64
-
65
- const middleware = async () => {
66
- // empty
67
- };
68
- addAPIMiddleware(middleware);
69
- const after = getMiddlewares();
70
- expect(after.api).toEqual([middleware]);
71
- });
72
- });
73
-
74
- test('should return full path', () => {
75
- const fn = compile('/home/:id', { encode: encodeURIComponent });
76
- expect(fn({ id: 2 })).toBe('/home/2');
77
- });
78
-
79
- describe('test create static reg', () => {
80
- test('should test static path correctly', () => {
81
- const reg = getStaticReg();
82
- expect(reg.test('/static')).toBeTruthy();
83
- expect(reg.test('/upload')).toBeTruthy();
84
- });
85
-
86
- test('should test custom static path correctly', () => {
87
- const reg = getStaticReg({
88
- cssPath: 'static-css',
89
- });
90
- expect(reg.test('/static-css')).toBeTruthy();
91
- });
92
-
93
- test('should test favicon path correctly', () => {
94
- const reg = getStaticReg({
95
- favicon: 'index.icon',
96
- faviconByEntries: {
97
- foo: 'foo.icon',
98
- baz: 'baz.icon',
99
- },
100
- });
101
- expect(reg.test('/index.icon')).toBeTruthy();
102
- expect(reg.test('/foo.icon')).toBeTruthy();
103
- expect(reg.test('/baz.icon')).toBeTruthy();
104
- });
105
- });
106
- });