@useavalon/avalon 0.1.5 → 0.1.7
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.
- package/package.json +31 -58
- package/src/build/prop-extractors/index.ts +11 -11
- package/src/build/prop-extractors/lit.ts +1 -1
- package/src/build/prop-extractors/qwik.ts +2 -2
- package/src/build/prop-extractors/solid.ts +1 -1
- package/src/build/prop-extractors/svelte.ts +1 -1
- package/src/schemas/routing.ts +2 -2
- package/src/vite-plugin/nitro-integration.ts +1 -1
- package/src/vite-plugin/plugin.ts +20 -16
- package/src/build/README.md +0 -310
- package/src/client/tests/css-hmr-handler.test.ts +0 -360
- package/src/client/tests/framework-adapter.test.ts +0 -519
- package/src/client/tests/hmr-coordinator.test.ts +0 -176
- package/src/client/tests/hydration-option-parsing.test.ts +0 -107
- package/src/client/tests/lit-adapter.test.ts +0 -427
- package/src/client/tests/preact-adapter.test.ts +0 -353
- package/src/client/tests/qwik-adapter.test.ts +0 -343
- package/src/client/tests/react-adapter.test.ts +0 -317
- package/src/client/tests/solid-adapter.test.ts +0 -396
- package/src/client/tests/svelte-adapter.test.ts +0 -387
- package/src/client/tests/vue-adapter.test.ts +0 -407
- package/src/components/tests/component-analyzer.test.ts +0 -96
- package/src/components/tests/component-detection.test.ts +0 -347
- package/src/components/tests/persistent-islands.test.ts +0 -398
- package/src/core/components/tests/enhanced-framework-detector.test.ts +0 -577
- package/src/core/components/tests/framework-registry.test.ts +0 -465
- package/src/core/integrations/README.md +0 -282
- package/src/core/layout/tests/enhanced-layout-resolver.test.ts +0 -477
- package/src/core/layout/tests/layout-cache-optimization.test.ts +0 -149
- package/src/core/layout/tests/layout-composer.test.ts +0 -486
- package/src/core/layout/tests/layout-data-loader.test.ts +0 -443
- package/src/core/layout/tests/layout-discovery.test.ts +0 -253
- package/src/core/layout/tests/layout-matcher.test.ts +0 -480
- package/src/core/modules/tests/framework-module-resolver.test.ts +0 -263
- package/src/core/modules/tests/module-resolution-integration.test.ts +0 -117
- package/src/islands/discovery/tests/island-discovery.test.ts +0 -881
- package/src/middleware/__tests__/discovery.test.ts +0 -107
- package/src/types/tests/layout-types.test.ts +0 -197
- package/src/vite-plugin/tests/image-optimization.test.ts +0 -54
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for FrameworkModuleResolver
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import { FrameworkModuleResolver } from '../framework-module-resolver.ts';
|
|
7
|
-
|
|
8
|
-
describe('FrameworkModuleResolver - Basic functionality', () => {
|
|
9
|
-
it('should create resolver with default settings', () => {
|
|
10
|
-
const resolver = new FrameworkModuleResolver();
|
|
11
|
-
expect(resolver.getMode()).toEqual('development');
|
|
12
|
-
expect(resolver.getBaseUrl()).toEqual('');
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should create resolver with custom settings', () => {
|
|
16
|
-
const resolver = new FrameworkModuleResolver('production', 'https://example.com');
|
|
17
|
-
expect(resolver.getMode()).toEqual('production');
|
|
18
|
-
expect(resolver.getBaseUrl()).toEqual('https://example.com');
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should update mode and base URL', () => {
|
|
22
|
-
const resolver = new FrameworkModuleResolver();
|
|
23
|
-
resolver.setMode('production');
|
|
24
|
-
resolver.setBaseUrl('https://test.com');
|
|
25
|
-
expect(resolver.getMode()).toEqual('production');
|
|
26
|
-
expect(resolver.getBaseUrl()).toEqual('https://test.com');
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
describe('FrameworkModuleResolver - Framework support', () => {
|
|
31
|
-
const resolver = new FrameworkModuleResolver();
|
|
32
|
-
|
|
33
|
-
it('should support known frameworks', () => {
|
|
34
|
-
expect(resolver.isFrameworkSupported('solid')).toEqual(true);
|
|
35
|
-
expect(resolver.isFrameworkSupported('preact')).toEqual(true);
|
|
36
|
-
expect(resolver.isFrameworkSupported('vue')).toEqual(true);
|
|
37
|
-
expect(resolver.isFrameworkSupported('svelte')).toEqual(true);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should not support unknown frameworks', () => {
|
|
41
|
-
expect(resolver.isFrameworkSupported('unknown')).toEqual(false);
|
|
42
|
-
expect(resolver.isFrameworkSupported('react')).toEqual(false);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('should return supported frameworks list', () => {
|
|
46
|
-
const frameworks = resolver.getSupportedFrameworks();
|
|
47
|
-
expect(frameworks.includes('solid')).toEqual(true);
|
|
48
|
-
expect(frameworks.includes('preact')).toEqual(true);
|
|
49
|
-
expect(frameworks.includes('vue')).toEqual(true);
|
|
50
|
-
expect(frameworks.includes('svelte')).toEqual(true);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should get framework configuration', () => {
|
|
54
|
-
const solidConfig = resolver.getFrameworkConfig('solid');
|
|
55
|
-
expect(solidConfig?.extensions.includes('.tsx')).toEqual(true);
|
|
56
|
-
expect(solidConfig?.hydrationExtension).toEqual('.js');
|
|
57
|
-
expect(solidConfig?.mimeType).toEqual('application/javascript');
|
|
58
|
-
|
|
59
|
-
const unknownConfig = resolver.getFrameworkConfig('unknown');
|
|
60
|
-
expect(unknownConfig).toEqual(undefined);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
describe('FrameworkModuleResolver - Solid path transformation', () => {
|
|
65
|
-
const resolver = new FrameworkModuleResolver();
|
|
66
|
-
|
|
67
|
-
it('should transform .tsx to .js for Solid hydration', () => {
|
|
68
|
-
const result = resolver.resolveModule('/src/islands/Counter.tsx', 'solid', {
|
|
69
|
-
forHydration: true,
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.tsx');
|
|
73
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
74
|
-
expect(result.framework).toEqual('solid');
|
|
75
|
-
expect(result.shouldTransform).toEqual(true);
|
|
76
|
-
expect(result.mimeType).toEqual('application/javascript');
|
|
77
|
-
expect(result.url).toEqual('/src/islands/Counter.js');
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('should transform .jsx to .js for Solid hydration', () => {
|
|
81
|
-
const result = resolver.resolveModule('/src/islands/Counter.jsx', 'solid', {
|
|
82
|
-
forHydration: true,
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.jsx');
|
|
86
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
87
|
-
expect(result.shouldTransform).toEqual(true);
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it('should not transform non-hydration requests', () => {
|
|
91
|
-
const result = resolver.resolveModule('/src/islands/Counter.tsx', 'solid', {
|
|
92
|
-
forHydration: false,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.tsx');
|
|
96
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.tsx');
|
|
97
|
-
expect(result.shouldTransform).toEqual(false);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it('should not transform .js files', () => {
|
|
101
|
-
const result = resolver.resolveModule('/src/islands/Counter.js', 'solid', {
|
|
102
|
-
forHydration: true,
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.js');
|
|
106
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
107
|
-
expect(result.shouldTransform).toEqual(false);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
describe('FrameworkModuleResolver - Preact path transformation', () => {
|
|
112
|
-
const resolver = new FrameworkModuleResolver();
|
|
113
|
-
|
|
114
|
-
it('should transform .tsx to .js for Preact hydration', () => {
|
|
115
|
-
const result = resolver.resolveModule('/src/islands/Counter.tsx', 'preact', {
|
|
116
|
-
forHydration: true,
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.tsx');
|
|
120
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
121
|
-
expect(result.framework).toEqual('preact');
|
|
122
|
-
expect(result.shouldTransform).toEqual(true);
|
|
123
|
-
expect(result.mimeType).toEqual('application/javascript');
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('should transform .jsx to .js for Preact hydration', () => {
|
|
127
|
-
const result = resolver.resolveModule('/src/islands/Counter.jsx', 'preact', {
|
|
128
|
-
forHydration: true,
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
132
|
-
expect(result.shouldTransform).toEqual(true);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
describe('FrameworkModuleResolver - Vue path transformation', () => {
|
|
137
|
-
const resolver = new FrameworkModuleResolver();
|
|
138
|
-
|
|
139
|
-
it('should transform .vue to .js for Vue hydration', () => {
|
|
140
|
-
const result = resolver.resolveModule('/src/islands/Counter.vue', 'vue', {
|
|
141
|
-
forHydration: true,
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.vue');
|
|
145
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
146
|
-
expect(result.framework).toEqual('vue');
|
|
147
|
-
expect(result.shouldTransform).toEqual(true);
|
|
148
|
-
expect(result.mimeType).toEqual('application/javascript');
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
describe('FrameworkModuleResolver - Svelte path transformation', () => {
|
|
153
|
-
const resolver = new FrameworkModuleResolver();
|
|
154
|
-
|
|
155
|
-
it('should transform .svelte to .js for Svelte hydration', () => {
|
|
156
|
-
const result = resolver.resolveModule('/src/islands/Counter.svelte', 'svelte', {
|
|
157
|
-
forHydration: true,
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.svelte');
|
|
161
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
162
|
-
expect(result.framework).toEqual('svelte');
|
|
163
|
-
expect(result.shouldTransform).toEqual(true);
|
|
164
|
-
expect(result.mimeType).toEqual('application/javascript');
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
describe('FrameworkModuleResolver - MIME type detection', () => {
|
|
169
|
-
const resolver = new FrameworkModuleResolver();
|
|
170
|
-
|
|
171
|
-
it('should detect JavaScript MIME types', () => {
|
|
172
|
-
expect(resolver.getMimeType('/test.js')).toEqual('application/javascript');
|
|
173
|
-
expect(resolver.getMimeType('/test.mjs')).toEqual('application/javascript');
|
|
174
|
-
expect(resolver.getMimeType('/test.ts')).toEqual('application/javascript');
|
|
175
|
-
expect(resolver.getMimeType('/test.tsx')).toEqual('application/javascript');
|
|
176
|
-
expect(resolver.getMimeType('/test.jsx')).toEqual('application/javascript');
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it('should detect component MIME types', () => {
|
|
180
|
-
expect(resolver.getMimeType('/test.vue')).toEqual('application/javascript');
|
|
181
|
-
expect(resolver.getMimeType('/test.svelte')).toEqual('application/javascript');
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
it('should detect other MIME types', () => {
|
|
185
|
-
expect(resolver.getMimeType('/test.css')).toEqual('text/css');
|
|
186
|
-
expect(resolver.getMimeType('/test.json')).toEqual('application/json');
|
|
187
|
-
expect(resolver.getMimeType('/test.txt')).toEqual('text/plain');
|
|
188
|
-
expect(resolver.getMimeType('/test.unknown')).toEqual('text/plain');
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
describe('FrameworkModuleResolver - URL generation', () => {
|
|
193
|
-
it('should generate URLs without base URL', () => {
|
|
194
|
-
const resolver = new FrameworkModuleResolver();
|
|
195
|
-
expect(resolver.generateModuleUrl('/src/test.js')).toEqual('/src/test.js');
|
|
196
|
-
expect(resolver.generateModuleUrl('src/test.js')).toEqual('/src/test.js');
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it('should generate URLs with base URL', () => {
|
|
200
|
-
const resolver = new FrameworkModuleResolver('development', 'https://example.com');
|
|
201
|
-
expect(resolver.generateModuleUrl('/src/test.js')).toEqual('https://example.com/src/test.js');
|
|
202
|
-
expect(resolver.generateModuleUrl('src/test.js')).toEqual('https://example.com/src/test.js');
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it('should handle base URL with trailing slash', () => {
|
|
206
|
-
const resolver = new FrameworkModuleResolver('development', 'https://example.com/');
|
|
207
|
-
expect(resolver.generateModuleUrl('/src/test.js')).toEqual('https://example.com/src/test.js');
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it('should generate URLs with custom base URL option', () => {
|
|
211
|
-
const resolver = new FrameworkModuleResolver();
|
|
212
|
-
const result = resolver.resolveModule('/src/test.tsx', 'solid', {
|
|
213
|
-
forHydration: true,
|
|
214
|
-
baseUrl: 'https://custom.com',
|
|
215
|
-
});
|
|
216
|
-
expect(result.url).toEqual('https://custom.com/src/test.js');
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
describe('FrameworkModuleResolver - Transformation detection', () => {
|
|
221
|
-
const resolver = new FrameworkModuleResolver();
|
|
222
|
-
|
|
223
|
-
it('should detect when transformation is needed', () => {
|
|
224
|
-
expect(resolver.needsTransformation('/test.tsx', 'solid')).toEqual(true);
|
|
225
|
-
expect(resolver.needsTransformation('/test.jsx', 'solid')).toEqual(true);
|
|
226
|
-
expect(resolver.needsTransformation('/test.vue', 'vue')).toEqual(true);
|
|
227
|
-
expect(resolver.needsTransformation('/test.svelte', 'svelte')).toEqual(true);
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
it('should detect when transformation is not needed', () => {
|
|
231
|
-
expect(resolver.needsTransformation('/test.js', 'solid')).toEqual(false);
|
|
232
|
-
expect(resolver.needsTransformation('/test.css', 'solid')).toEqual(false);
|
|
233
|
-
expect(resolver.needsTransformation('/test.tsx', 'unknown')).toEqual(false);
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
describe('FrameworkModuleResolver - Error handling', () => {
|
|
238
|
-
const resolver = new FrameworkModuleResolver();
|
|
239
|
-
|
|
240
|
-
it('should throw error for unknown framework', () => {
|
|
241
|
-
expect(() => {
|
|
242
|
-
resolver.resolveModule('/test.tsx', 'unknown');
|
|
243
|
-
}).toThrow('Unknown framework: unknown');
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
describe('FrameworkModuleResolver - Development vs Production mode', () => {
|
|
248
|
-
it('should handle development mode', () => {
|
|
249
|
-
const resolver = new FrameworkModuleResolver('development');
|
|
250
|
-
const result = resolver.resolveModule('/src/test.tsx', 'solid', {
|
|
251
|
-
forHydration: true,
|
|
252
|
-
});
|
|
253
|
-
expect(result.resolvedPath).toEqual('/src/test.js');
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
it('should handle production mode', () => {
|
|
257
|
-
const resolver = new FrameworkModuleResolver('production');
|
|
258
|
-
const result = resolver.resolveModule('/src/test.tsx', 'solid', {
|
|
259
|
-
forHydration: true,
|
|
260
|
-
});
|
|
261
|
-
expect(result.resolvedPath).toEqual('/src/test.js');
|
|
262
|
-
});
|
|
263
|
-
});
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration tests for module resolution system
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import { FrameworkModuleResolver } from '../framework-module-resolver.ts';
|
|
7
|
-
|
|
8
|
-
describe('Module Resolution Integration - End-to-end flow', () => {
|
|
9
|
-
it('should resolve Solid .tsx to .js for hydration', () => {
|
|
10
|
-
const resolver = new FrameworkModuleResolver('development');
|
|
11
|
-
|
|
12
|
-
const result = resolver.resolveModule('/src/islands/Counter.tsx', 'solid', {
|
|
13
|
-
forHydration: true,
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
expect(result.originalPath).toEqual('/src/islands/Counter.tsx');
|
|
17
|
-
expect(result.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
18
|
-
expect(result.framework).toEqual('solid');
|
|
19
|
-
expect(result.shouldTransform).toEqual(true);
|
|
20
|
-
expect(result.mimeType).toEqual('application/javascript');
|
|
21
|
-
expect(result.url).toEqual('/src/islands/Counter.js');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should handle different frameworks correctly', () => {
|
|
25
|
-
const resolver = new FrameworkModuleResolver('production', 'https://cdn.example.com');
|
|
26
|
-
|
|
27
|
-
// Test Preact
|
|
28
|
-
const preactResult = resolver.resolveModule('/components/Button.jsx', 'preact', {
|
|
29
|
-
forHydration: true,
|
|
30
|
-
});
|
|
31
|
-
expect(preactResult.resolvedPath).toEqual('/components/Button.js');
|
|
32
|
-
expect(preactResult.url).toEqual('https://cdn.example.com/components/Button.js');
|
|
33
|
-
|
|
34
|
-
// Test Vue
|
|
35
|
-
const vueResult = resolver.resolveModule('/components/Modal.vue', 'vue', {
|
|
36
|
-
forHydration: true,
|
|
37
|
-
});
|
|
38
|
-
expect(vueResult.resolvedPath).toEqual('/components/Modal.js');
|
|
39
|
-
expect(vueResult.mimeType).toEqual('application/javascript');
|
|
40
|
-
|
|
41
|
-
// Test Svelte
|
|
42
|
-
const svelteResult = resolver.resolveModule('/components/Card.svelte', 'svelte', {
|
|
43
|
-
forHydration: true,
|
|
44
|
-
});
|
|
45
|
-
expect(svelteResult.resolvedPath).toEqual('/components/Card.js');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('should handle development vs production modes', () => {
|
|
49
|
-
const devResolver = new FrameworkModuleResolver('development');
|
|
50
|
-
const prodResolver = new FrameworkModuleResolver('production');
|
|
51
|
-
|
|
52
|
-
const testPath = '/src/islands/Counter.tsx';
|
|
53
|
-
|
|
54
|
-
const devResult = devResolver.resolveModule(testPath, 'solid', { forHydration: true });
|
|
55
|
-
const prodResult = prodResolver.resolveModule(testPath, 'solid', { forHydration: true });
|
|
56
|
-
|
|
57
|
-
expect(devResult.resolvedPath).toEqual(prodResult.resolvedPath);
|
|
58
|
-
expect(devResult.resolvedPath).toEqual('/src/islands/Counter.js');
|
|
59
|
-
|
|
60
|
-
expect(devResolver.getMode()).toEqual('development');
|
|
61
|
-
expect(prodResolver.getMode()).toEqual('production');
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('Module Resolution Integration - Error scenarios', () => {
|
|
66
|
-
it('should handle unsupported frameworks gracefully', () => {
|
|
67
|
-
const resolver = new FrameworkModuleResolver();
|
|
68
|
-
|
|
69
|
-
expect(() => {
|
|
70
|
-
resolver.resolveModule('/test.tsx', 'react');
|
|
71
|
-
}).toThrow('Unknown framework: react');
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('should handle invalid paths gracefully', () => {
|
|
75
|
-
const resolver = new FrameworkModuleResolver();
|
|
76
|
-
|
|
77
|
-
const result = resolver.resolveModule('', 'solid', { forHydration: true });
|
|
78
|
-
expect(result.originalPath).toEqual('');
|
|
79
|
-
expect(result.resolvedPath).toEqual('');
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('should handle MIME type detection for unknown extensions', () => {
|
|
83
|
-
const resolver = new FrameworkModuleResolver();
|
|
84
|
-
|
|
85
|
-
expect(resolver.getMimeType('/test.unknown')).toEqual('text/plain');
|
|
86
|
-
expect(resolver.getMimeType('/test')).toEqual('text/plain');
|
|
87
|
-
expect(resolver.getMimeType('')).toEqual('text/plain');
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
describe('Module Resolution Integration - Performance considerations', () => {
|
|
92
|
-
it('should handle multiple resolutions efficiently', () => {
|
|
93
|
-
const resolver = new FrameworkModuleResolver();
|
|
94
|
-
const startTime = performance.now();
|
|
95
|
-
|
|
96
|
-
for (let i = 0; i < 100; i++) {
|
|
97
|
-
resolver.resolveModule(`/src/islands/Counter${i}.tsx`, 'solid', {
|
|
98
|
-
forHydration: true,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const endTime = performance.now();
|
|
103
|
-
const duration = endTime - startTime;
|
|
104
|
-
|
|
105
|
-
expect(duration < 100).toEqual(true);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('should cache framework configurations', () => {
|
|
109
|
-
const resolver = new FrameworkModuleResolver();
|
|
110
|
-
|
|
111
|
-
const config1 = resolver.getFrameworkConfig('solid');
|
|
112
|
-
const config2 = resolver.getFrameworkConfig('solid');
|
|
113
|
-
|
|
114
|
-
expect(config1).toEqual(config2);
|
|
115
|
-
expect(config1?.extensions.includes('.tsx')).toEqual(true);
|
|
116
|
-
});
|
|
117
|
-
});
|