@fluojs/testing 1.0.3 → 1.0.5
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/README.ko.md +1 -3
- package/README.md +1 -3
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +40 -18
- package/dist/portability/http-adapter-portability.d.ts.map +1 -1
- package/dist/portability/http-adapter-portability.js +15 -26
- package/dist/vitest/tooling.d.ts.map +1 -1
- package/dist/vitest/tooling.js +13 -1
- package/package.json +10 -10
package/README.ko.md
CHANGED
|
@@ -165,10 +165,8 @@ fluo는 테스트가 명시적인 `rootModule`을 이름으로 지정해야 한
|
|
|
165
165
|
|
|
166
166
|
## 공개 API
|
|
167
167
|
|
|
168
|
-
- **루트 패키지**: `createTestingModule(...)`, `createTestApp(...)`, 모듈 introspection 헬퍼, 공용 테스트 타입
|
|
168
|
+
- **루트 패키지**: `createTestingModule(...)`, `Test.createTestingModule(...)`, `createTestApp(...)`, 모듈 introspection 헬퍼, 공용 테스트 타입
|
|
169
169
|
- **서브패스**: `@fluojs/testing/app`, `@fluojs/testing/module`, `@fluojs/testing/http`, `@fluojs/testing/mock`, `@fluojs/testing/types`, `@fluojs/testing/vitest`, `@fluojs/testing/vitest/tooling`
|
|
170
|
-
- **Mock 서브패스**: `@fluojs/testing/mock`
|
|
171
|
-
- **HTTP 헬퍼**: `@fluojs/testing/http`
|
|
172
170
|
- **하니스 서브패스**: `platform-conformance`, `http-adapter-portability`, `web-runtime-adapter-portability`, `fetch-style-websocket-conformance`
|
|
173
171
|
- **도구 지원**: `@fluojs/testing/vitest`의 `fluoBabelDecoratorsPlugin()` 및 `@fluojs/testing/vitest/tooling`의 Vitest workspace config helper (`vitest`와 `@babel/core`를 함께 요구)
|
|
174
172
|
|
package/README.md
CHANGED
|
@@ -163,10 +163,8 @@ fluo differs from NestJS by requiring tests to name an explicit `rootModule`. Th
|
|
|
163
163
|
|
|
164
164
|
## Public API
|
|
165
165
|
|
|
166
|
-
- **Root package**: `createTestingModule(...)`, `createTestApp(...)`, module introspection helpers, shared testing types
|
|
166
|
+
- **Root package**: `createTestingModule(...)`, `Test.createTestingModule(...)`, `createTestApp(...)`, module introspection helpers, shared testing types
|
|
167
167
|
- **Subpaths**: `@fluojs/testing/app`, `@fluojs/testing/module`, `@fluojs/testing/http`, `@fluojs/testing/mock`, `@fluojs/testing/types`, `@fluojs/testing/vitest`, `@fluojs/testing/vitest/tooling`
|
|
168
|
-
- **Mock subpath**: `@fluojs/testing/mock`
|
|
169
|
-
- **HTTP helpers**: `@fluojs/testing/http`
|
|
170
168
|
- **Harness subpaths**: `platform-conformance`, `http-adapter-portability`, `web-runtime-adapter-portability`, `fetch-style-websocket-conformance`
|
|
171
169
|
- **Tooling**: `@fluojs/testing/vitest` with `fluoBabelDecoratorsPlugin()` and `@fluojs/testing/vitest/tooling` with Vitest workspace config helpers (requires `vitest` and `@babel/core` in the consuming workspace)
|
|
172
170
|
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EAKd,KAAK,QAAQ,EAEd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAqC,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMrF,OAAO,KAAK,EAA2B,oBAAoB,EAAE,oBAAoB,EAAoB,MAAM,YAAY,CAAC;AAExH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,EAAE,CAQzE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,EAAE,CAQ5E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,CAQzE;AA+vBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CAEvF;AAED;;GAEG;AACH,eAAO,MAAM,IAAI;;CAEhB,CAAC"}
|
package/dist/module.js
CHANGED
|
@@ -90,20 +90,8 @@ function normalizeOverride(token, value) {
|
|
|
90
90
|
useValue: value
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
-
function isContainerIntrospection(value) {
|
|
94
|
-
if (typeof value !== 'object' || value === null) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
const candidate = value;
|
|
98
|
-
const parentValid = candidate.parent === undefined || isContainerIntrospection(candidate.parent);
|
|
99
|
-
const requestScopeValid = candidate.requestScopeEnabled === undefined || typeof candidate.requestScopeEnabled === 'boolean';
|
|
100
|
-
return candidate.registrations instanceof Map && candidate.multiRegistrations instanceof Map && candidate.multiSingletonCache instanceof Map && candidate.singletonCache instanceof Map && parentValid && requestScopeValid;
|
|
101
|
-
}
|
|
102
93
|
function toContainerIntrospection(container) {
|
|
103
|
-
|
|
104
|
-
throw new Error('Testing container introspection is unavailable for the current container implementation.');
|
|
105
|
-
}
|
|
106
|
-
return container;
|
|
94
|
+
return container.inspectResolutionState();
|
|
107
95
|
}
|
|
108
96
|
function isPromiseLike(value) {
|
|
109
97
|
return (typeof value === 'object' || typeof value === 'function') && value !== null && typeof value.then === 'function';
|
|
@@ -126,14 +114,37 @@ function effectiveProvidersForToken(introspection, token) {
|
|
|
126
114
|
return provider ? [provider] : [];
|
|
127
115
|
}
|
|
128
116
|
function isSingletonLifecycleProvider(provider) {
|
|
129
|
-
if (provider.multi === true) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
117
|
if (provider.scope !== Scope.DEFAULT) {
|
|
133
118
|
return false;
|
|
134
119
|
}
|
|
135
120
|
return provider.type === 'class' || provider.type === 'value' && hasAnyBootstrapLifecycleHook(provider.useValue);
|
|
136
121
|
}
|
|
122
|
+
async function resolveLifecycleDependency(entry, bootstrapped, introspection) {
|
|
123
|
+
if (isOptionalToken(entry) && !hasTokenInContainer(introspection, entry.token)) {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
return bootstrapped.container.resolve(dependencyToken(entry));
|
|
127
|
+
}
|
|
128
|
+
async function instantiateLifecycleProvider(provider, bootstrapped, introspection) {
|
|
129
|
+
if (provider.type !== 'class' || !provider.useClass) {
|
|
130
|
+
throw new Error(`Lifecycle provider ${String(provider.provide)} must use a class provider.`);
|
|
131
|
+
}
|
|
132
|
+
const dependencies = await Promise.all(provider.inject.map(entry => resolveLifecycleDependency(entry, bootstrapped, introspection)));
|
|
133
|
+
return new provider.useClass(...dependencies);
|
|
134
|
+
}
|
|
135
|
+
async function resolveMultiLifecycleProvider(provider, bootstrapped, introspection) {
|
|
136
|
+
const cache = rootContainerIntrospection(introspection).multiSingletonCache;
|
|
137
|
+
const cached = cache.get(provider);
|
|
138
|
+
if (cached) {
|
|
139
|
+
return cached;
|
|
140
|
+
}
|
|
141
|
+
const instance = instantiateLifecycleProvider(provider, bootstrapped, introspection).catch(error => {
|
|
142
|
+
cache.delete(provider);
|
|
143
|
+
throw error;
|
|
144
|
+
});
|
|
145
|
+
cache.set(provider, instance);
|
|
146
|
+
return instance;
|
|
147
|
+
}
|
|
137
148
|
async function resolveTestingLifecycleInstances(bootstrapped, overrides = []) {
|
|
138
149
|
const lifecycleProviders = [...bootstrapped.effectiveProviders.runtimeProviders, ...bootstrapped.effectiveProviders.moduleProviders, ...overrides];
|
|
139
150
|
const instances = [];
|
|
@@ -142,7 +153,11 @@ async function resolveTestingLifecycleInstances(bootstrapped, overrides = []) {
|
|
|
142
153
|
for (const provider of lifecycleProviders) {
|
|
143
154
|
const token = providerToken(provider);
|
|
144
155
|
const effectiveProviders = effectiveProvidersForToken(introspection, token);
|
|
145
|
-
for (
|
|
156
|
+
for (let index = 0; index < effectiveProviders.length; index += 1) {
|
|
157
|
+
const effectiveProvider = effectiveProviders[index];
|
|
158
|
+
if (!effectiveProvider) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
146
161
|
if (seenProviders.has(effectiveProvider)) {
|
|
147
162
|
continue;
|
|
148
163
|
}
|
|
@@ -155,6 +170,10 @@ async function resolveTestingLifecycleInstances(bootstrapped, overrides = []) {
|
|
|
155
170
|
continue;
|
|
156
171
|
}
|
|
157
172
|
try {
|
|
173
|
+
if (effectiveProvider.multi === true) {
|
|
174
|
+
instances.push(await resolveMultiLifecycleProvider(effectiveProvider, bootstrapped, introspection));
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
158
177
|
instances.push(await bootstrapped.container.resolve(token));
|
|
159
178
|
} catch (error) {
|
|
160
179
|
if (error instanceof Error && error.message.includes('Request-scoped provider')) {
|
|
@@ -195,7 +214,10 @@ function lookupProvider(target, token) {
|
|
|
195
214
|
return target.parent ? lookupProvider(target.parent, token) : undefined;
|
|
196
215
|
}
|
|
197
216
|
function hasToken(state, token) {
|
|
198
|
-
return
|
|
217
|
+
return hasTokenInContainer(state.introspection, token);
|
|
218
|
+
}
|
|
219
|
+
function hasTokenInContainer(introspection, token) {
|
|
220
|
+
return lookupProvider(introspection, token) !== undefined || collectMultiProviders(introspection, token).length > 0;
|
|
199
221
|
}
|
|
200
222
|
function dependencyToken(entry) {
|
|
201
223
|
if (isOptionalToken(entry)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-adapter-portability.d.ts","sourceRoot":"","sources":["../../src/portability/http-adapter-portability.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3G,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;CACF;AAED,KAAK,OAAO,GAAG;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAUF;;;;;;GAMG;AACH,MAAM,WAAW,oCAAoC,CACnD,iBAAiB,SAAS,MAAM,EAChC,WAAW,SAAS,MAAM,EAC1B,IAAI,SAAS,OAAO,GAAG,OAAO;IAE9B;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,2BAA2B,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IACH,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;
|
|
1
|
+
{"version":3,"file":"http-adapter-portability.d.ts","sourceRoot":"","sources":["../../src/portability/http-adapter-portability.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3G,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;CACF;AAED,KAAK,OAAO,GAAG;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAUF;;;;;;GAMG;AACH,MAAM,WAAW,oCAAoC,CACnD,iBAAiB,SAAS,MAAM,EAChC,WAAW,SAAS,MAAM,EAC1B,IAAI,SAAS,OAAO,GAAG,OAAO;IAE9B;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,2BAA2B,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IACH,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AA6HD;;;;;;;GAOG;AACH,qBAAa,6BAA6B,CACxC,iBAAiB,SAAS,MAAM,EAChC,WAAW,SAAS,MAAM,EAC1B,IAAI,SAAS,OAAO,GAAG,OAAO;IAOlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC;;;;OAIG;gBAC0B,OAAO,EAAE,oCAAoC,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC;IAEhH;;;OAGG;IACG,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC;IAiDrD,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC;IAqErD,wDAAwD,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CzE,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDlD,8CAA8C,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD/D,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAkDjD;;;OAGG;IACG,mCAAmC,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDpD,wCAAwC,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCzD,4BAA4B,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjF,8CAA8C,IAAI,OAAO,CAAC,IAAI,CAAC;CA2CtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CACjD,iBAAiB,SAAS,MAAM,EAChC,WAAW,SAAS,MAAM,EAC1B,IAAI,SAAS,OAAO,GAAG,OAAO,EAE9B,OAAO,EAAE,oCAAoC,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,GAClF,6BAA6B,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,CAErE"}
|
|
@@ -50,6 +50,17 @@ async function requestHttps(url) {
|
|
|
50
50
|
request.end();
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
+
function createLogCaptureLogger() {
|
|
54
|
+
const messages = [];
|
|
55
|
+
const capture = (...args) => messages.push(args.map(arg => String(arg)).join(' '));
|
|
56
|
+
return {
|
|
57
|
+
debug: capture,
|
|
58
|
+
error: capture,
|
|
59
|
+
log: capture,
|
|
60
|
+
messages,
|
|
61
|
+
warn: capture
|
|
62
|
+
};
|
|
63
|
+
}
|
|
53
64
|
async function runWithCleanup(app, adapterName, assertion) {
|
|
54
65
|
let hasAssertionError = false;
|
|
55
66
|
let assertionError;
|
|
@@ -522,17 +533,7 @@ export class HttpAdapterPortabilityHarness {
|
|
|
522
533
|
}
|
|
523
534
|
async assertReportsConfiguredHostInStartupLogs() {
|
|
524
535
|
let _initProto8, _initClass8;
|
|
525
|
-
const
|
|
526
|
-
const logger = {
|
|
527
|
-
debug() {},
|
|
528
|
-
error(message, error, context) {
|
|
529
|
-
loggerEvents.push(`error:${context}:${message}:${error instanceof Error ? error.message : 'none'}`);
|
|
530
|
-
},
|
|
531
|
-
log(message, context) {
|
|
532
|
-
loggerEvents.push(`log:${context}:${message}`);
|
|
533
|
-
},
|
|
534
|
-
warn() {}
|
|
535
|
-
};
|
|
536
|
+
const logger = createLogCaptureLogger();
|
|
536
537
|
let _HealthController;
|
|
537
538
|
class HealthController {
|
|
538
539
|
static {
|
|
@@ -574,25 +575,14 @@ export class HttpAdapterPortabilityHarness {
|
|
|
574
575
|
})) {
|
|
575
576
|
throw new Error(`${this.options.name} adapter changed host-bound response payload.`);
|
|
576
577
|
}
|
|
577
|
-
|
|
578
|
-
if (!loggerEvents.includes(expectedLog)) {
|
|
578
|
+
if (!logger.messages.some(message => message.includes(`Listening on ${baseUrl}`))) {
|
|
579
579
|
throw new Error(`${this.options.name} adapter changed startup host logging.`);
|
|
580
580
|
}
|
|
581
581
|
});
|
|
582
582
|
}
|
|
583
583
|
async assertReportsHttpsStartupUrl(https) {
|
|
584
584
|
let _initProto9, _initClass9;
|
|
585
|
-
const
|
|
586
|
-
const logger = {
|
|
587
|
-
debug() {},
|
|
588
|
-
error(message, error, context) {
|
|
589
|
-
loggerEvents.push(`error:${context}:${message}:${error instanceof Error ? error.message : 'none'}`);
|
|
590
|
-
},
|
|
591
|
-
log(message, context) {
|
|
592
|
-
loggerEvents.push(`log:${context}:${message}`);
|
|
593
|
-
},
|
|
594
|
-
warn() {}
|
|
595
|
-
};
|
|
585
|
+
const logger = createLogCaptureLogger();
|
|
596
586
|
let _HealthController2;
|
|
597
587
|
class HealthController {
|
|
598
588
|
static {
|
|
@@ -634,8 +624,7 @@ export class HttpAdapterPortabilityHarness {
|
|
|
634
624
|
})) {
|
|
635
625
|
throw new Error(`${this.options.name} adapter changed HTTPS response payload semantics.`);
|
|
636
626
|
}
|
|
637
|
-
|
|
638
|
-
if (!loggerEvents.includes(expectedLog)) {
|
|
627
|
+
if (!logger.messages.some(message => message.includes(`Listening on ${baseUrl}`))) {
|
|
639
628
|
throw new Error(`${this.options.name} adapter changed HTTPS startup logging.`);
|
|
640
629
|
}
|
|
641
630
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../src/vitest/tooling.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../src/vitest/tooling.ts"],"names":[],"mappings":"AA8EA;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYzF;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,KAAK,uBAaxF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,wBAErC"}
|
package/dist/vitest/tooling.js
CHANGED
|
@@ -3,6 +3,7 @@ import { extname, join, relative, sep } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { defineConfig, mergeConfig } from 'vitest/config';
|
|
5
5
|
import { fluoBabelDecoratorsPlugin } from '../vitest.js';
|
|
6
|
+
const workspaceAliasCache = new Map();
|
|
6
7
|
function collectSourceEntries(sourceRoot) {
|
|
7
8
|
const entries = [];
|
|
8
9
|
for (const directoryEntry of readdirSync(sourceRoot, {
|
|
@@ -58,7 +59,18 @@ function collectWorkspaceAliasesFromRoot(repoRoot) {
|
|
|
58
59
|
* @returns A Vite/Vitest alias map that points public package imports at workspace source files.
|
|
59
60
|
*/
|
|
60
61
|
export function collectWorkspaceAliases(repoRootUrl) {
|
|
61
|
-
|
|
62
|
+
const repoRoot = fileURLToPath(repoRootUrl);
|
|
63
|
+
const cachedAliases = workspaceAliasCache.get(repoRoot);
|
|
64
|
+
if (cachedAliases) {
|
|
65
|
+
return {
|
|
66
|
+
...cachedAliases
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const aliases = collectWorkspaceAliasesFromRoot(repoRoot);
|
|
70
|
+
workspaceAliasCache.set(repoRoot, aliases);
|
|
71
|
+
return {
|
|
72
|
+
...aliases
|
|
73
|
+
};
|
|
62
74
|
}
|
|
63
75
|
|
|
64
76
|
/**
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"override",
|
|
10
10
|
"module-builder"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.
|
|
12
|
+
"version": "1.0.5",
|
|
13
13
|
"private": false,
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"repository": {
|
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
"dist"
|
|
81
81
|
],
|
|
82
82
|
"dependencies": {
|
|
83
|
-
"@fluojs/core": "^1.0.3",
|
|
84
83
|
"@fluojs/config": "^1.0.2",
|
|
85
84
|
"@fluojs/http": "^1.1.0",
|
|
86
|
-
"@fluojs/di": "^1.0
|
|
87
|
-
"@fluojs/
|
|
85
|
+
"@fluojs/di": "^1.1.0",
|
|
86
|
+
"@fluojs/core": "^1.0.3",
|
|
87
|
+
"@fluojs/runtime": "^1.1.6"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"@babel/core": ">=7.0.0",
|
|
@@ -92,12 +92,12 @@
|
|
|
92
92
|
},
|
|
93
93
|
"devDependencies": {
|
|
94
94
|
"vitest": "^3.2.4",
|
|
95
|
-
"@fluojs/platform-bun": "^1.0.
|
|
96
|
-
"@fluojs/platform-deno": "^1.0.
|
|
97
|
-
"@fluojs/platform-nodejs": "^1.0.
|
|
98
|
-
"@fluojs/platform-
|
|
99
|
-
"@fluojs/platform-
|
|
100
|
-
"@fluojs/platform-
|
|
95
|
+
"@fluojs/platform-bun": "^1.0.5",
|
|
96
|
+
"@fluojs/platform-deno": "^1.0.6",
|
|
97
|
+
"@fluojs/platform-nodejs": "^1.0.5",
|
|
98
|
+
"@fluojs/platform-cloudflare-workers": "^1.0.3",
|
|
99
|
+
"@fluojs/platform-express": "^1.0.5",
|
|
100
|
+
"@fluojs/platform-fastify": "^1.0.6"
|
|
101
101
|
},
|
|
102
102
|
"scripts": {
|
|
103
103
|
"prebuild": "node ../../tooling/scripts/clean-dist.mjs",
|