@loutrejs/loutre 0.9.1 → 0.10.0
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/dist/adapters/aws-lambda.d.ts +1 -1
- package/dist/adapters/aws-lambda.js +8 -2
- package/dist/adapters/bun.d.ts +3 -2
- package/dist/adapters/bun.js +12 -6
- package/dist/adapters/cloudflare-workers.d.ts +1 -1
- package/dist/adapters/cloudflare-workers.js +2 -1
- package/dist/adapters/electron.d.ts +1 -1
- package/dist/adapters/electron.js +8 -51
- package/dist/adapters/server-transports.js +2 -2
- package/dist/adapters/websocket-native.js +4 -1
- package/dist/application/definition.d.ts +4 -7
- package/dist/application/definition.js +3 -1
- package/dist/application/kernel.d.ts +0 -2
- package/dist/application/kernel.js +1 -3
- package/dist/core/args.d.ts +1 -0
- package/dist/core/args.js +2 -1
- package/dist/core/env.d.ts +1 -0
- package/dist/core/env.js +2 -1
- package/dist/core/extension.d.ts +23 -13
- package/dist/core/extension.js +3 -1
- package/dist/core/generic-layer.d.ts +9 -2
- package/dist/core/generic-layer.js +2 -1
- package/dist/core/identity.d.ts +18 -0
- package/dist/core/identity.js +5 -0
- package/dist/core/index.d.ts +13 -5
- package/dist/core/index.js +7 -1
- package/dist/core/injection.d.ts +2 -1
- package/dist/core/instrumentation.d.ts +7 -5
- package/dist/core/lifecycle.d.ts +4 -0
- package/dist/core/logger-identity.d.ts +4 -0
- package/dist/core/logger-identity.js +9 -0
- package/dist/core/logger-internal.d.ts +5 -0
- package/dist/core/logger-internal.js +27 -0
- package/dist/core/logger-module.d.ts +5 -0
- package/dist/core/logger-module.js +8 -0
- package/dist/core/logger.d.ts +42 -0
- package/dist/core/logger.js +221 -0
- package/dist/core/model/context.d.ts +6 -3
- package/dist/core/model/context.js +17 -17
- package/dist/core/model/identity.d.ts +19 -0
- package/dist/core/model/identity.js +8 -0
- package/dist/core/model/lifecycle.d.ts +3 -2
- package/dist/core/model/lifecycle.js +7 -3
- package/dist/core/model/logger.d.ts +3 -0
- package/dist/core/model/logger.js +59 -0
- package/dist/core/model/modules.d.ts +4 -1
- package/dist/core/model/modules.js +6 -4
- package/dist/core/model/providers.d.ts +1 -1
- package/dist/core/model/providers.js +8 -8
- package/dist/core/model/types.d.ts +25 -18
- package/dist/core/model/validation.js +3 -2
- package/dist/core/model/visibility.js +7 -2
- package/dist/core/model.js +15 -7
- package/dist/core/module.d.ts +7 -7
- package/dist/core/module.js +0 -3
- package/dist/core/runtime-input.d.ts +2 -1
- package/dist/core/source-location.d.ts +14 -2
- package/dist/core/source-location.js +8 -3
- package/dist/core/token-internal.js +3 -1
- package/dist/core/token.d.ts +4 -2
- package/dist/core/token.js +3 -0
- package/dist/core/units.d.ts +22 -0
- package/dist/core/units.js +14 -0
- package/dist/devtools/capsule.d.ts +17 -13
- package/dist/devtools/capsule.js +14 -10
- package/dist/devtools/decoder.d.ts +15 -0
- package/dist/devtools/decoder.js +179 -0
- package/dist/devtools/identity-internal.d.ts +6 -0
- package/dist/devtools/identity-internal.js +5 -0
- package/dist/devtools/identity.d.ts +21 -0
- package/dist/devtools/identity.js +7 -0
- package/dist/devtools/index.d.ts +3 -0
- package/dist/devtools/index.js +2 -0
- package/dist/devtools/inspector.d.ts +18 -16
- package/dist/devtools/observer.d.ts +32 -28
- package/dist/devtools/runtime.js +34 -30
- package/dist/devtools/values.js +3 -5
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/graph/model.d.ts +25 -14
- package/dist/http/auth.d.ts +4 -2
- package/dist/http/client.d.ts +6 -3
- package/dist/http/client.js +8 -9
- package/dist/http/cors-internal.d.ts +7 -5
- package/dist/http/cors-internal.js +8 -6
- package/dist/http/extension.d.ts +60 -21
- package/dist/http/extension.js +91 -20
- package/dist/http/identity.d.ts +20 -0
- package/dist/http/identity.js +10 -0
- package/dist/http/index.d.ts +6 -2
- package/dist/http/index.js +3 -1
- package/dist/http/openapi-identity.d.ts +9 -0
- package/dist/http/openapi-identity.js +4 -0
- package/dist/http/openapi.d.ts +1 -1
- package/dist/http/openapi.js +10 -7
- package/dist/http/path.d.ts +8 -5
- package/dist/http/route-validation.js +2 -1
- package/dist/http/runtime/request.d.ts +3 -2
- package/dist/http/runtime/request.js +1 -4
- package/dist/http/websocket-upgrade.d.ts +2 -0
- package/dist/http/websocket-upgrade.js +4 -0
- package/dist/internal/brand.d.ts +8 -0
- package/dist/internal/brand.js +1 -0
- package/dist/message-port/extension.d.ts +4 -2
- package/dist/message-port/extension.js +15 -8
- package/dist/message-port/identity.d.ts +9 -0
- package/dist/message-port/identity.js +16 -0
- package/dist/message-port/index.d.ts +2 -0
- package/dist/message-port/index.js +1 -0
- package/dist/message-port/transport.d.ts +4 -2
- package/dist/message-port/transport.js +6 -1
- package/dist/runtime/async-iterator-lifecycle.d.ts +2 -1
- package/dist/runtime/async-iterator-lifecycle.js +2 -1
- package/dist/runtime/capability.d.ts +6 -2
- package/dist/runtime/capability.js +3 -1
- package/dist/runtime/di.d.ts +1 -3
- package/dist/runtime/di.js +62 -35
- package/dist/runtime/error.d.ts +3 -1
- package/dist/runtime/index.d.ts +6 -2
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/kernel.d.ts +0 -2
- package/dist/runtime/kernel.js +68 -30
- package/dist/runtime/logger-source.d.ts +4 -0
- package/dist/runtime/logger-source.js +47 -0
- package/dist/runtime/logger.d.ts +2 -38
- package/dist/runtime/logger.js +1 -209
- package/dist/runtime/node-capabilities.d.ts +1 -1
- package/dist/runtime/node-capabilities.js +2 -1
- package/dist/runtime/server-port.d.ts +5 -1
- package/dist/runtime/server-port.js +2 -1
- package/dist/runtime/shutdown-hooks.d.ts +1 -1
- package/dist/runtime/shutdown-hooks.js +5 -4
- package/dist/tasks/extension.d.ts +18 -16
- package/dist/tasks/extension.js +28 -23
- package/dist/tasks/identity.d.ts +9 -0
- package/dist/tasks/identity.js +4 -0
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/runtime/cron.d.ts +6 -2
- package/dist/tasks/runtime/cron.js +9 -0
- package/dist/websocket/extension.d.ts +19 -9
- package/dist/websocket/extension.js +103 -30
- package/dist/websocket/identity.d.ts +9 -0
- package/dist/websocket/identity.js +4 -0
- package/dist/websocket/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -46,7 +46,7 @@ export interface AwsLambdaResponseStream {
|
|
|
46
46
|
export type AwsLambdaStreamingHttpHandler = (event: AwsLambdaHttpEvent, output: AwsLambdaResponseStream, context?: unknown) => Promise<void>;
|
|
47
47
|
export declare const awsLambdaRuntime: {
|
|
48
48
|
readonly runtime: 'aws-lambda';
|
|
49
|
-
readonly capabilities:
|
|
49
|
+
readonly capabilities: ReadonlySet<import("../runtime/capability.js").RuntimeSupportFeature>;
|
|
50
50
|
readonly bind: typeof bind;
|
|
51
51
|
};
|
|
52
52
|
declare function bind<const TDefinition extends ApplicationDefinition>(options: AwsLambdaStreamingBindOptions<TDefinition>): AwsLambdaStreamingHttpHandler;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { runtimeSupportFeatures } from '../runtime/capability.js';
|
|
1
2
|
import { createKernelApplication, } from '../application/index.js';
|
|
2
3
|
import { bindApplicationCapability } from '../application/kernel-internal.js';
|
|
3
4
|
import { httpExecutionExtension } from '../http/index.js';
|
|
4
5
|
import { assertRuntimeEngine } from '../runtime/engine.js';
|
|
5
6
|
export const awsLambdaRuntime = {
|
|
6
7
|
runtime: 'aws-lambda',
|
|
7
|
-
capabilities:
|
|
8
|
+
capabilities: runtimeSupportFeatures([
|
|
8
9
|
'http.server',
|
|
9
10
|
'http.response.streaming',
|
|
10
11
|
'stream.readable',
|
|
@@ -35,7 +36,12 @@ function bind(options) {
|
|
|
35
36
|
initialize: async () => {
|
|
36
37
|
await application.init();
|
|
37
38
|
},
|
|
38
|
-
fetch: (request) =>
|
|
39
|
+
fetch: (request) => {
|
|
40
|
+
const hosted = application;
|
|
41
|
+
if (!hosted.http)
|
|
42
|
+
throw new Error('LUTRE_RUNTIME_HTTP_REQUIRED');
|
|
43
|
+
return hosted.http.fetch(request);
|
|
44
|
+
},
|
|
39
45
|
};
|
|
40
46
|
if (options.response === 'streaming') {
|
|
41
47
|
const handler = createAwsLambdaStreamingHttpDriver(http);
|
package/dist/adapters/bun.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type BoundPort } from '../runtime/server-port.js';
|
|
1
2
|
import { type ApplicationDefinition, type BootstrapArguments, type KernelHostedApplication } from '../application/index.js';
|
|
2
3
|
import type { RuntimeCapabilityBinding } from '../core/index.js';
|
|
3
4
|
export type BunCreateOptions<TDefinition extends ApplicationDefinition> = {
|
|
@@ -13,14 +14,14 @@ export interface BunServeOptions {
|
|
|
13
14
|
readonly shutdownHooks?: boolean;
|
|
14
15
|
}
|
|
15
16
|
export interface BunListenerHandle {
|
|
16
|
-
readonly port:
|
|
17
|
+
readonly port: BoundPort;
|
|
17
18
|
}
|
|
18
19
|
export type BunRuntimeApplication<TDefinition extends ApplicationDefinition = ApplicationDefinition> = KernelHostedApplication<TDefinition> & {
|
|
19
20
|
serve(options?: BunServeOptions): Promise<BunListenerHandle>;
|
|
20
21
|
};
|
|
21
22
|
export declare const bunRuntime: {
|
|
22
23
|
readonly runtime: 'bun';
|
|
23
|
-
readonly capabilities:
|
|
24
|
+
readonly capabilities: ReadonlySet<import("../runtime/capability.js").RuntimeSupportFeature>;
|
|
24
25
|
readonly create: typeof create;
|
|
25
26
|
};
|
|
26
27
|
declare function create<const TDefinition extends ApplicationDefinition>(options: BunCreateOptions<TDefinition>): Promise<BunRuntimeApplication<TDefinition>>;
|
package/dist/adapters/bun.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { boundPort, } from '../runtime/server-port.js';
|
|
2
|
+
import { runtimeSupportFeatures } from '../runtime/capability.js';
|
|
1
3
|
import { RuntimeShutdown } from '../runtime/shutdown.js';
|
|
2
4
|
import { ProcessShutdownHooks } from '../runtime/shutdown-hooks.js';
|
|
3
|
-
import {
|
|
5
|
+
import { LoggerToken } from '../runtime/logger.js';
|
|
4
6
|
import { createBunWebSocketDriver, } from './websocket-native.js';
|
|
5
7
|
import { serverTransportBindings, dispatchServerRequest, } from './server-transports.js';
|
|
6
8
|
import { createKernelApplication, } from '../application/index.js';
|
|
@@ -10,7 +12,7 @@ import { serverUrl } from '../runtime/server-url.js';
|
|
|
10
12
|
import { canRetryOnNextPort, initialServerPort, } from '../runtime/server-port.js';
|
|
11
13
|
export const bunRuntime = {
|
|
12
14
|
runtime: 'bun',
|
|
13
|
-
capabilities:
|
|
15
|
+
capabilities: runtimeSupportFeatures([
|
|
14
16
|
'http.server',
|
|
15
17
|
'websocket.server',
|
|
16
18
|
'http.request.streaming',
|
|
@@ -47,7 +49,7 @@ async function create(options) {
|
|
|
47
49
|
const application = hosted;
|
|
48
50
|
const closeApplication = application.close.bind(application);
|
|
49
51
|
let server;
|
|
50
|
-
const logger =
|
|
52
|
+
const logger = application.get(LoggerToken);
|
|
51
53
|
let serving = false;
|
|
52
54
|
let serverClosingPromise;
|
|
53
55
|
const beginServerClose = () => {
|
|
@@ -108,14 +110,14 @@ async function create(options) {
|
|
|
108
110
|
fetch: (request, upgradeServer) => websocketDriver.fetch(hosted, request, upgradeServer, dispatchServerRequest),
|
|
109
111
|
websocket: websocketDriver.websocket,
|
|
110
112
|
});
|
|
111
|
-
port = server.port;
|
|
113
|
+
port = boundPort(server.port);
|
|
112
114
|
break;
|
|
113
115
|
}
|
|
114
116
|
catch (error) {
|
|
115
117
|
if (requestedPort !== undefined || !canRetryOnNextPort(error, port)) {
|
|
116
118
|
throw error;
|
|
117
119
|
}
|
|
118
|
-
port
|
|
120
|
+
port = initialServerPort(port + 1);
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
123
|
presentation.ready({
|
|
@@ -134,7 +136,11 @@ async function create(options) {
|
|
|
134
136
|
const shutdownHooks = new ProcessShutdownHooks({
|
|
135
137
|
source: process,
|
|
136
138
|
close,
|
|
137
|
-
onError: (error, signal) => logger.error('Bun runtime shutdown failed', {
|
|
139
|
+
onError: (error, signal) => logger.error('Bun runtime shutdown failed', {
|
|
140
|
+
source: 'BunRuntime',
|
|
141
|
+
error,
|
|
142
|
+
signal,
|
|
143
|
+
}),
|
|
138
144
|
});
|
|
139
145
|
Object.assign(application, { serve, close });
|
|
140
146
|
shutdownHooks.setEnabled(options.shutdownHooks !== false);
|
|
@@ -11,7 +11,7 @@ export interface CloudflareWorkersBinding {
|
|
|
11
11
|
export declare const cloudflareWorkersRuntime: {
|
|
12
12
|
readonly runtime: 'cloudflare-workers';
|
|
13
13
|
readonly compatibilityDateMinimum: '2026-08-04';
|
|
14
|
-
readonly capabilities:
|
|
14
|
+
readonly capabilities: ReadonlySet<import("../runtime/capability.js").RuntimeSupportFeature>;
|
|
15
15
|
readonly bind: typeof bind;
|
|
16
16
|
};
|
|
17
17
|
declare function bind<const TDefinition extends ApplicationDefinition>(options: CloudflareWorkersBindOptions<TDefinition>): CloudflareWorkersBinding;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runtimeSupportFeatures } from '../runtime/capability.js';
|
|
1
2
|
import { createCloudflareWebSocketDriver } from './websocket-native.js';
|
|
2
3
|
import { serverTransportBindings, dispatchServerRequest, } from './server-transports.js';
|
|
3
4
|
import { createKernelApplication, } from '../application/index.js';
|
|
@@ -5,7 +6,7 @@ import { assertRuntimeEngine } from '../runtime/engine.js';
|
|
|
5
6
|
export const cloudflareWorkersRuntime = {
|
|
6
7
|
runtime: 'cloudflare-workers',
|
|
7
8
|
compatibilityDateMinimum: '2026-08-04',
|
|
8
|
-
capabilities:
|
|
9
|
+
capabilities: runtimeSupportFeatures([
|
|
9
10
|
'http.server',
|
|
10
11
|
'websocket.server',
|
|
11
12
|
'http.request.streaming',
|
|
@@ -28,7 +28,7 @@ export interface ElectronAttachment<TDefinition extends ApplicationDefinition =
|
|
|
28
28
|
}
|
|
29
29
|
export declare const electronRuntime: {
|
|
30
30
|
readonly runtime: 'electron';
|
|
31
|
-
readonly capabilities:
|
|
31
|
+
readonly capabilities: ReadonlySet<import("../runtime/capability.js").RuntimeSupportFeature>;
|
|
32
32
|
readonly attach: typeof attach;
|
|
33
33
|
};
|
|
34
34
|
declare function attach<const TDefinition extends ApplicationDefinition>(options: ElectronAttachOptions<TDefinition>): ElectronAttachment<TDefinition>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { runtimeSupportFeatures } from '../runtime/capability.js';
|
|
1
2
|
import { createKernelApplication, } from '../application/index.js';
|
|
2
|
-
import { messagePortExtension } from '../message-port/index.js';
|
|
3
|
+
import { messagePortExtension, attachMessagePort, } from '../message-port/index.js';
|
|
3
4
|
import { assertRuntimeEngine } from '../runtime/engine.js';
|
|
4
5
|
export const electronRuntime = {
|
|
5
6
|
runtime: 'electron',
|
|
6
|
-
capabilities:
|
|
7
|
+
capabilities: runtimeSupportFeatures([
|
|
7
8
|
'messagePort.send',
|
|
8
9
|
'messagePort.receive',
|
|
9
10
|
'messagePort.transfer',
|
|
@@ -34,8 +35,10 @@ function attach(options) {
|
|
|
34
35
|
void initialization.catch(() => undefined);
|
|
35
36
|
attachElectronMessagePortInvocation(async (method, input) => {
|
|
36
37
|
await initialization;
|
|
37
|
-
const
|
|
38
|
-
|
|
38
|
+
const hosted = application;
|
|
39
|
+
if (!hosted.messagePort)
|
|
40
|
+
throw new Error('LUTRE_RUNTIME_MESSAGE_PORT_REQUIRED');
|
|
41
|
+
return hosted.messagePort.invoke(method, input);
|
|
39
42
|
}, options.port);
|
|
40
43
|
return {
|
|
41
44
|
application,
|
|
@@ -43,47 +46,7 @@ function attach(options) {
|
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
48
|
function attachElectronMessagePortInvocation(invoke, port) {
|
|
46
|
-
|
|
47
|
-
normalized.addEventListener('message', async (event) => {
|
|
48
|
-
const request = event.data;
|
|
49
|
-
try {
|
|
50
|
-
const result = await invoke(request.procedure, request.input);
|
|
51
|
-
if (isAsyncIterable(result.value)) {
|
|
52
|
-
for await (const value of result.value) {
|
|
53
|
-
postToMessagePort(normalized, {
|
|
54
|
-
id: request.id,
|
|
55
|
-
response: result.response,
|
|
56
|
-
value,
|
|
57
|
-
done: false,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
postToMessagePort(normalized, {
|
|
61
|
-
id: request.id,
|
|
62
|
-
response: result.response,
|
|
63
|
-
done: true,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
postToMessagePort(normalized, {
|
|
68
|
-
id: request.id,
|
|
69
|
-
response: result.response,
|
|
70
|
-
value: result.value,
|
|
71
|
-
done: true,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
postToMessagePort(normalized, {
|
|
77
|
-
id: request.id,
|
|
78
|
-
error: error instanceof Error ? error.message : String(error),
|
|
79
|
-
done: true,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
normalized.start?.();
|
|
84
|
-
}
|
|
85
|
-
function postToMessagePort(port, value) {
|
|
86
|
-
port.postMessage(value);
|
|
49
|
+
attachMessagePort({ invoke }, normalizeMessagePort(port));
|
|
87
50
|
}
|
|
88
51
|
function normalizeMessagePort(port) {
|
|
89
52
|
if ('addEventListener' in port)
|
|
@@ -94,9 +57,3 @@ function normalizeMessagePort(port) {
|
|
|
94
57
|
start: () => port.start(),
|
|
95
58
|
};
|
|
96
59
|
}
|
|
97
|
-
function isAsyncIterable(value) {
|
|
98
|
-
return (typeof value === 'object' &&
|
|
99
|
-
value !== null &&
|
|
100
|
-
Symbol.asyncIterator in value &&
|
|
101
|
-
typeof value[Symbol.asyncIterator] === 'function');
|
|
102
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bindHttpServer } from '../http/index.js';
|
|
1
|
+
import { bindHttpServer, isWebSocketUpgrade, } from '../http/index.js';
|
|
2
2
|
import { bindWebSocketServer, } from '../websocket/index.js';
|
|
3
3
|
export function serverTransportBindings(model, runtime, websocket) {
|
|
4
4
|
const requires = (id) => model.executions.some((execution) => execution.capabilities.some((capability) => capability.id === id));
|
|
@@ -9,7 +9,7 @@ export function serverTransportBindings(model, runtime, websocket) {
|
|
|
9
9
|
}
|
|
10
10
|
export function dispatchServerRequest(application, request) {
|
|
11
11
|
const transports = application;
|
|
12
|
-
if (request
|
|
12
|
+
if (isWebSocketUpgrade(request)) {
|
|
13
13
|
return (transports.websocket?.upgrade(request) ??
|
|
14
14
|
Promise.resolve(new Response('Not Found', { status: 404 })));
|
|
15
15
|
}
|
|
@@ -3,7 +3,10 @@ export function createCloudflareWebSocketDriver() {
|
|
|
3
3
|
return {
|
|
4
4
|
runtime: 'cloudflare-workers',
|
|
5
5
|
async upgrade(_request, { protocol }) {
|
|
6
|
-
const
|
|
6
|
+
const platform = globalThis;
|
|
7
|
+
const Pair = platform.WebSocketPair;
|
|
8
|
+
if (!Pair)
|
|
9
|
+
throw new Error('WebSocketPairを利用できません。');
|
|
7
10
|
const pair = new Pair();
|
|
8
11
|
pair[1].accept();
|
|
9
12
|
// WorkersのI/Oはopening requestへ所属するため、別requestからのdrainをそのcontextへ戻す。
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
/// <reference lib="esnext.disposable" preserve="true" />
|
|
2
|
-
import type { ArgsClass, ApplicationModel, ExecutionExtension, HostApiOfExtension, ModuleExtensions,
|
|
3
|
-
|
|
4
|
-
export interface ApplicationDefinitionOptions<TModules extends readonly ModuleInput[], TArguments extends ArgsClass | undefined> {
|
|
2
|
+
import type { ArgsClass, ApplicationModel, ExecutionExtension, HostApiOfExtension, ModuleExtensions, ModuleInstance, SchemaInput } from '../core/index.js';
|
|
3
|
+
export interface ApplicationDefinitionOptions<TModules extends readonly ModuleInstance[], TArguments extends ArgsClass | undefined> {
|
|
5
4
|
readonly modules: TModules;
|
|
6
5
|
readonly arguments?: TArguments;
|
|
7
|
-
readonly logger?: Logger;
|
|
8
6
|
}
|
|
9
|
-
export interface ApplicationDefinition<TModules extends readonly
|
|
7
|
+
export interface ApplicationDefinition<TModules extends readonly ModuleInstance[] = readonly ModuleInstance[], TArguments extends ArgsClass | undefined = ArgsClass | undefined> {
|
|
10
8
|
readonly kind: 'application-definition';
|
|
11
9
|
readonly model: ApplicationModel;
|
|
12
10
|
readonly modules: TModules;
|
|
13
11
|
readonly arguments: TArguments;
|
|
14
|
-
readonly logger?: Logger;
|
|
15
12
|
}
|
|
16
|
-
export declare function defineApplication<const TModules extends readonly
|
|
13
|
+
export declare function defineApplication<const TModules extends readonly ModuleInstance[], const TArguments extends ArgsClass | undefined = undefined>(options: ApplicationDefinitionOptions<TModules, TArguments>): ApplicationDefinition<TModules, TArguments>;
|
|
17
14
|
export type ApplicationArgumentsInput<TDefinition extends ApplicationDefinition> = TDefinition['arguments'] extends ArgsClass<infer TSchema> ? SchemaInput<TSchema> : never;
|
|
18
15
|
export type BootstrapArguments<TDefinition extends ApplicationDefinition> = TDefinition['arguments'] extends ArgsClass<infer TSchema> ? {} extends SchemaInput<TSchema> ? {
|
|
19
16
|
readonly arguments?: SchemaInput<TSchema>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/// <reference lib="esnext.disposable" preserve="true" />
|
|
2
2
|
import { buildApplicationModel } from '../core/index.js';
|
|
3
3
|
export function defineApplication(options) {
|
|
4
|
+
if ('logger' in options) {
|
|
5
|
+
throw new TypeError('LUTRE_LOGGER_CONFIGURATION: Register provide(LoggerToken).useClass(LoggerService) in Module.providers.');
|
|
6
|
+
}
|
|
4
7
|
return Object.freeze({
|
|
5
8
|
kind: 'application-definition',
|
|
6
9
|
model: buildApplicationModel({
|
|
@@ -11,6 +14,5 @@ export function defineApplication(options) {
|
|
|
11
14
|
}),
|
|
12
15
|
modules: options.modules,
|
|
13
16
|
arguments: options.arguments,
|
|
14
|
-
...(options.logger === undefined ? {} : { logger: options.logger }),
|
|
15
17
|
});
|
|
16
18
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference lib="esnext.disposable" preserve="true" />
|
|
2
2
|
import type { RuntimeCapabilityBinding, RuntimeInstrumentation, TokenLike, TokenValue } from '../core/index.js';
|
|
3
3
|
import { type ApplicationModelGraphIR } from '../graph/index.js';
|
|
4
|
-
import { type Logger } from '../runtime/index.js';
|
|
5
4
|
import type { ApplicationDefinition, ApplicationExtensionHostApis, BootstrapArguments } from './definition.js';
|
|
6
5
|
export interface KernelApplicationBase extends AsyncDisposable {
|
|
7
6
|
readonly graph: ApplicationModelGraphIR;
|
|
@@ -14,7 +13,6 @@ export type KernelApplicationOptions<TDefinition extends ApplicationDefinition>
|
|
|
14
13
|
readonly application: TDefinition;
|
|
15
14
|
readonly capabilities?: readonly RuntimeCapabilityBinding[];
|
|
16
15
|
readonly environment?: unknown;
|
|
17
|
-
readonly logger?: Logger;
|
|
18
16
|
readonly forceShutdownTimeoutMs?: number;
|
|
19
17
|
readonly instrumentation?: RuntimeInstrumentation;
|
|
20
18
|
} & BootstrapArguments<TDefinition>;
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
import { projectApplicationModel, } from '../graph/index.js';
|
|
3
3
|
import { ApplicationKernelRuntime } from '../runtime/index.js';
|
|
4
4
|
export function createKernelApplication(options) {
|
|
5
|
-
const logger = options.logger ?? options.application.logger;
|
|
6
5
|
const runtime = new ApplicationKernelRuntime(options.application.model, {
|
|
7
6
|
...options,
|
|
8
|
-
...(logger === undefined ? {} : { logger }),
|
|
9
7
|
...('environment' in options
|
|
10
8
|
? { environmentSource: options.environment }
|
|
11
9
|
: {}),
|
|
@@ -53,7 +51,7 @@ export function createKernelApplication(options) {
|
|
|
53
51
|
return runtime.shutdown(signal);
|
|
54
52
|
},
|
|
55
53
|
[Symbol.asyncDispose]() {
|
|
56
|
-
return
|
|
54
|
+
return this.close();
|
|
57
55
|
},
|
|
58
56
|
});
|
|
59
57
|
return application;
|
package/dist/core/args.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type ArgsKey<TValue = unknown> = RuntimeInputKey<TValue> & {
|
|
|
7
7
|
readonly contract: ArgsClass;
|
|
8
8
|
};
|
|
9
9
|
export interface ArgsClass<TSchema extends ArgsSchema = ArgsSchema> extends Class<SchemaOutput<TSchema>> {
|
|
10
|
+
readonly '~loutre.descriptor': 'args';
|
|
10
11
|
readonly kind: 'arguments';
|
|
11
12
|
readonly schema: TSchema;
|
|
12
13
|
key<TKey extends keyof SchemaOutput<TSchema> & string>(key: TKey): ArgsKey<SchemaOutput<TSchema>[TKey]>;
|
package/dist/core/args.js
CHANGED
|
@@ -4,12 +4,13 @@ export function defineArgs(schema) {
|
|
|
4
4
|
static kind = 'arguments';
|
|
5
5
|
static schema = schema;
|
|
6
6
|
static key(key) {
|
|
7
|
-
|
|
7
|
+
const descriptor = {
|
|
8
8
|
kind: 'runtime-input-key',
|
|
9
9
|
source: 'arguments',
|
|
10
10
|
contract: this,
|
|
11
11
|
key,
|
|
12
12
|
};
|
|
13
|
+
return descriptor;
|
|
13
14
|
}
|
|
14
15
|
constructor(values) {
|
|
15
16
|
Object.assign(this, values);
|
package/dist/core/env.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type EnvKey<TValue = unknown> = RuntimeInputKey<TValue> & {
|
|
|
7
7
|
readonly contract: EnvClass;
|
|
8
8
|
};
|
|
9
9
|
export interface EnvClass<TSchema extends EnvSchema = EnvSchema> extends Class<SchemaOutput<TSchema>> {
|
|
10
|
+
readonly '~loutre.descriptor': 'env';
|
|
10
11
|
readonly kind: 'environment';
|
|
11
12
|
readonly schema: TSchema;
|
|
12
13
|
key<TKey extends keyof SchemaOutput<TSchema> & string>(key: TKey): EnvKey<SchemaOutput<TSchema>[TKey]>;
|
package/dist/core/env.js
CHANGED
|
@@ -4,12 +4,13 @@ export function defineEnv(schema) {
|
|
|
4
4
|
static kind = 'environment';
|
|
5
5
|
static schema = schema;
|
|
6
6
|
static key(key) {
|
|
7
|
-
|
|
7
|
+
const descriptor = {
|
|
8
8
|
kind: 'runtime-input-key',
|
|
9
9
|
source: 'environment',
|
|
10
10
|
contract: this,
|
|
11
11
|
key,
|
|
12
12
|
};
|
|
13
|
+
return descriptor;
|
|
13
14
|
}
|
|
14
15
|
constructor(values) {
|
|
15
16
|
Object.assign(this, values);
|
package/dist/core/extension.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
import type { Descriptor } from '../internal/brand.js';
|
|
2
|
+
import type { ModuleId, ExecutionNodeId } from './model/identity.js';
|
|
3
|
+
import type { CapabilityId, CapabilityIdentity, ExtensionName, ExtensionAbiVersion, ExtensionIdentity } from './identity.js';
|
|
4
|
+
import type { DurationMs } from './units.js';
|
|
1
5
|
import type { DependencyResolver } from './injection.js';
|
|
2
6
|
import type { Diagnostic } from './diagnostic.js';
|
|
3
7
|
import type { RuntimeExecutionMetadata, RuntimeInvocationRegistration, RuntimeOperationMetadata } from './instrumentation.js';
|
|
4
8
|
import type { TokenLike } from './token.js';
|
|
5
9
|
declare const runtimeCapabilityValue: unique symbol;
|
|
6
10
|
declare const executionExtensionTypeInfo: unique symbol;
|
|
7
|
-
export interface RuntimeCapability<TValue = unknown> {
|
|
11
|
+
export interface RuntimeCapability<TValue = unknown> extends Descriptor<'runtime-capability'> {
|
|
8
12
|
readonly kind: 'runtime-capability';
|
|
9
|
-
readonly id:
|
|
10
|
-
readonly identity:
|
|
13
|
+
readonly id: CapabilityId;
|
|
14
|
+
readonly identity: CapabilityIdentity;
|
|
11
15
|
readonly [runtimeCapabilityValue]?: TValue;
|
|
12
16
|
}
|
|
13
17
|
export type RuntimeCapabilityValue<TCapability> = TCapability extends RuntimeCapability<infer TValue> ? TValue : never;
|
|
@@ -46,14 +50,14 @@ export interface ExecutionKernelRuntime {
|
|
|
46
50
|
beginOperation?(metadata: RuntimeOperationMetadata, invocation?: RuntimeInvocationRegistration): ExecutionOperationLease;
|
|
47
51
|
}
|
|
48
52
|
export interface ExecutionExtensionDrainContext {
|
|
49
|
-
readonly timeoutMs:
|
|
53
|
+
readonly timeoutMs: DurationMs;
|
|
50
54
|
}
|
|
51
55
|
export interface ExecutionExtensionRuntime {
|
|
52
56
|
drain?(context: ExecutionExtensionDrainContext): void | Promise<void>;
|
|
53
57
|
close?(): void | Promise<void>;
|
|
54
58
|
}
|
|
55
59
|
export interface ExecutionCompileContext {
|
|
56
|
-
readonly moduleId:
|
|
60
|
+
readonly moduleId: ModuleId;
|
|
57
61
|
readonly definitionIndex: number;
|
|
58
62
|
}
|
|
59
63
|
export interface ExecutionContribution<TCompiled = unknown> {
|
|
@@ -64,15 +68,18 @@ export interface ExecutionContribution<TCompiled = unknown> {
|
|
|
64
68
|
readonly capabilities: readonly RuntimeCapability[];
|
|
65
69
|
readonly compiled: TCompiled;
|
|
66
70
|
}
|
|
71
|
+
export type ModelExecutionContribution<TCompiled = unknown> = ExecutionContribution<TCompiled> & {
|
|
72
|
+
readonly id: ExecutionNodeId;
|
|
73
|
+
};
|
|
67
74
|
export interface ExecutionRuntimeBinding<TCompiled = unknown> {
|
|
68
|
-
readonly execution:
|
|
75
|
+
readonly execution: ModelExecutionContribution<TCompiled>;
|
|
69
76
|
readonly resolve: DependencyResolver;
|
|
70
77
|
}
|
|
71
78
|
export interface ExecutionExtensionValidationContext<TCompiled = unknown> {
|
|
72
|
-
readonly executions: readonly
|
|
79
|
+
readonly executions: readonly ModelExecutionContribution<TCompiled>[];
|
|
73
80
|
}
|
|
74
81
|
export interface ExecutionProjectionContext<TCompiled = unknown> {
|
|
75
|
-
readonly execution:
|
|
82
|
+
readonly execution: ModelExecutionContribution<TCompiled>;
|
|
76
83
|
}
|
|
77
84
|
export interface ExecutionExtensionRuntimeContext<TCompiled = unknown> {
|
|
78
85
|
readonly executions: readonly ExecutionRuntimeBinding<TCompiled>[];
|
|
@@ -88,11 +95,11 @@ export interface HostExtension<TNamespace extends string = string, TApi extends
|
|
|
88
95
|
readonly namespace: TNamespace;
|
|
89
96
|
create(context: HostExtensionContext<TCompiled, TRuntime>): TApi;
|
|
90
97
|
}
|
|
91
|
-
export interface ExecutionExtension<TDefinition extends ExecutionDefinition<any> = ExecutionDefinition<any>, TCompiled = unknown, TNamespace extends string = string, THostApi extends object = object, TRuntime extends ExecutionExtensionRuntime = ExecutionExtensionRuntime> {
|
|
98
|
+
export interface ExecutionExtension<TDefinition extends ExecutionDefinition<any> = ExecutionDefinition<any>, TCompiled = unknown, TNamespace extends string = string, THostApi extends object = object, TRuntime extends ExecutionExtensionRuntime = ExecutionExtensionRuntime> extends Descriptor<'execution-extension'> {
|
|
92
99
|
readonly kind: 'execution-extension';
|
|
93
|
-
readonly name:
|
|
94
|
-
readonly abiVersion:
|
|
95
|
-
readonly identity:
|
|
100
|
+
readonly name: ExtensionName;
|
|
101
|
+
readonly abiVersion: ExtensionAbiVersion;
|
|
102
|
+
readonly identity: ExtensionIdentity;
|
|
96
103
|
readonly [executionExtensionTypeInfo]?: readonly [TNamespace, THostApi];
|
|
97
104
|
compile(definition: TDefinition, context: ExecutionCompileContext): ExecutionContribution<TCompiled>;
|
|
98
105
|
references?(definition: TDefinition): readonly ExecutionDefinition[];
|
|
@@ -101,7 +108,10 @@ export interface ExecutionExtension<TDefinition extends ExecutionDefinition<any>
|
|
|
101
108
|
projectGraph?(context: ExecutionProjectionContext<TCompiled>): unknown;
|
|
102
109
|
readonly host?: HostExtension<TNamespace, THostApi, TCompiled, TRuntime>;
|
|
103
110
|
}
|
|
104
|
-
export declare function defineExecutionExtension<const TDefinition extends ExecutionDefinition, TCompiled, const TNamespace extends string = never, THostApi extends object = {}, TRuntime extends ExecutionExtensionRuntime = ExecutionExtensionRuntime>(extension: Omit<ExecutionExtension<TDefinition, TCompiled, TNamespace, THostApi, TRuntime>, 'identity'
|
|
111
|
+
export declare function defineExecutionExtension<const TDefinition extends ExecutionDefinition, TCompiled, const TNamespace extends string = never, THostApi extends object = {}, TRuntime extends ExecutionExtensionRuntime = ExecutionExtensionRuntime>(extension: Omit<ExecutionExtension<TDefinition, TCompiled, TNamespace, THostApi, TRuntime>, 'identity' | 'name' | 'abiVersion' | '~loutre.descriptor'> & {
|
|
112
|
+
readonly name: string;
|
|
113
|
+
readonly abiVersion: string;
|
|
114
|
+
}): ExecutionExtension<TDefinition, TCompiled, TNamespace, THostApi, TRuntime>;
|
|
105
115
|
export declare const executionDefinitionBrand: unique symbol;
|
|
106
116
|
export interface ExecutionDefinition<TExtension extends AnyExecutionExtension = AnyExecutionExtension> {
|
|
107
117
|
readonly kind: 'execution-definition';
|
package/dist/core/extension.js
CHANGED
|
@@ -6,7 +6,7 @@ export function runtimeCapability(id) {
|
|
|
6
6
|
}
|
|
7
7
|
return Object.freeze({
|
|
8
8
|
kind: 'runtime-capability',
|
|
9
|
-
id,
|
|
9
|
+
id: id,
|
|
10
10
|
identity: Symbol.for(`${runtimeCapabilityIdentityNamespace}${id}`),
|
|
11
11
|
});
|
|
12
12
|
}
|
|
@@ -49,6 +49,8 @@ export function defineExecutionExtension(extension) {
|
|
|
49
49
|
}
|
|
50
50
|
return Object.freeze({
|
|
51
51
|
...extension,
|
|
52
|
+
name: extension.name,
|
|
53
|
+
abiVersion: extension.abiVersion,
|
|
52
54
|
...(extension.host === undefined
|
|
53
55
|
? {}
|
|
54
56
|
: { host: Object.freeze({ ...extension.host }) }),
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
import type { Descriptor } from '../internal/brand.js';
|
|
1
2
|
import type { RuntimeCapability } from './extension.js';
|
|
2
3
|
import { type DependencyResolver } from './injection.js';
|
|
3
4
|
import type { Type } from './type.js';
|
|
4
5
|
export interface GenericLayerContext<TState extends object = {}> {
|
|
5
6
|
readonly state: Readonly<TState>;
|
|
6
7
|
}
|
|
7
|
-
export type GenericLayerNext<TContribution extends object> = keyof TContribution extends never ? () => Promise<void> : (contribution: TContribution) => Promise<void>;
|
|
8
|
-
export interface GenericLayer<TContext extends object = object, TContribution extends object = {}, TOutcome = unknown> {
|
|
8
|
+
export type GenericLayerNext<TContribution extends object> = keyof TContribution extends never ? () => Promise<void> : {} extends TContribution ? (contribution?: TContribution) => Promise<void> : (contribution: TContribution) => Promise<void>;
|
|
9
|
+
export interface GenericLayer<TContext extends object = object, TContribution extends object = {}, TOutcome = unknown> extends Descriptor<'generic-layer'> {
|
|
9
10
|
readonly kind: 'generic-layer';
|
|
10
11
|
readonly state?: Type<TContribution>;
|
|
11
12
|
readonly name: string;
|
|
12
13
|
readonly capabilities: readonly RuntimeCapability[];
|
|
13
14
|
readonly factory: () => (context: TContext & GenericLayerContext, next: GenericLayerNext<TContribution>) => Promise<void | TOutcome>;
|
|
14
15
|
}
|
|
16
|
+
type LayerContribution<TLayer> = TLayer extends GenericLayer<any, infer TState, any> ? TState : never;
|
|
17
|
+
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer TState) => void ? TState : never;
|
|
18
|
+
export type LayerState<TLayers extends readonly GenericLayer<any, any, any>[]> = [
|
|
19
|
+
TLayers[number]
|
|
20
|
+
] extends [never] ? {} : UnionToIntersection<LayerContribution<TLayers[number]>> & object;
|
|
15
21
|
export declare function defineLayer<TContribution extends object = {}, TContext extends object = object, TOutcome = never>(declaration: {
|
|
16
22
|
readonly name: string;
|
|
17
23
|
readonly state?: Type<TContribution>;
|
|
@@ -24,3 +30,4 @@ export declare function composeLayers<TContext extends object, TOutcome>(options
|
|
|
24
30
|
readonly resolve: DependencyResolver;
|
|
25
31
|
readonly terminal: (context: TContext & GenericLayerContext<Record<string, unknown>>) => Promise<TOutcome>;
|
|
26
32
|
}): Promise<TOutcome>;
|
|
33
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { dependencyConsumerId } from './identity.js';
|
|
1
2
|
import { runInInjectionContext } from './injection.js';
|
|
2
3
|
export function defineLayer(declaration) {
|
|
3
4
|
return Object.freeze({
|
|
@@ -12,7 +13,7 @@ export function composeLayers(options) {
|
|
|
12
13
|
const runtimes = options.layers.map((layer, index) => runInInjectionContext({
|
|
13
14
|
consumer: {
|
|
14
15
|
kind: 'layer',
|
|
15
|
-
id: `layer:${index}:${layer.name}
|
|
16
|
+
id: dependencyConsumerId(`layer:${index}:${layer.name}`),
|
|
16
17
|
name: layer.name,
|
|
17
18
|
},
|
|
18
19
|
resolve: (token, consumer) => options.resolve(token, { source: layer.name, consumer }),
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Brand } from '../internal/brand.js';
|
|
2
|
+
import type { ExecutionNodeId, ModelNodeId } from './model/identity.js';
|
|
3
|
+
export type CapabilityId = Brand<string, 'core.capability-id'>;
|
|
4
|
+
export type CapabilityIdentity = Brand<symbol, 'core.capability-identity'>;
|
|
5
|
+
export type ExtensionName = Brand<string, 'core.extension-name'>;
|
|
6
|
+
export type ExtensionAbiVersion = Brand<string, 'core.extension-abi'>;
|
|
7
|
+
export type ExtensionIdentity = Brand<symbol, 'core.extension-identity'>;
|
|
8
|
+
export type TokenKey = Brand<symbol, 'core.token-key'>;
|
|
9
|
+
export type SyntheticExecutionId = Brand<string, 'core.synthetic-execution-id'>;
|
|
10
|
+
export type RuntimeExecutionId = ExecutionNodeId | SyntheticExecutionId;
|
|
11
|
+
export type DependencyConsumerId = ModelNodeId | Brand<string, 'core.dependency-consumer-id'>;
|
|
12
|
+
export type ModuleName = Brand<string, 'core.module-name'>;
|
|
13
|
+
export type HostNamespace = Brand<string, 'core.host-namespace'>;
|
|
14
|
+
export declare const runtimeExecutionId: (value: string) => RuntimeExecutionId;
|
|
15
|
+
export declare const syntheticExecutionId: (value: string) => SyntheticExecutionId;
|
|
16
|
+
export declare const dependencyConsumerId: (value: string) => DependencyConsumerId;
|
|
17
|
+
export declare const moduleName: (value: string) => ModuleName;
|
|
18
|
+
export declare const hostNamespace: (value: string) => HostNamespace;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { LoggerService, LoggerToken } from './logger.js';
|
|
2
|
+
export { LoggerModule } from './logger-module.js';
|
|
1
3
|
export { defineArgs, isArgsClass, loadArgs } from './args.js';
|
|
2
4
|
export type { ArgsClass, ArgsKey, ArgsSchema } from './args.js';
|
|
3
5
|
export { diagnostic, hasErrorDiagnostics, isErrorDiagnostic, } from './diagnostic.js';
|
|
@@ -7,18 +9,18 @@ export type { EnvClass, EnvKey, EnvSchema } from './env.js';
|
|
|
7
9
|
export { defineError, DomainError } from './error.js';
|
|
8
10
|
export type { ErrorDefinition } from './error.js';
|
|
9
11
|
export { bindRuntimeCapability, defineExecution, defineExecutionExtension, executionDefinitionBrand, isExecutionDefinition, runtimeCapability, RuntimeCapabilityRegistry, } from './extension.js';
|
|
10
|
-
export type { AnyExecutionExtension, ExecutionCompileContext, ExecutionContribution, ExecutionRuntimeBinding, ExecutionDefinition, ExecutionDeclaration, ExecutionGroup, ExecutionContextView, ExecutionExtension, ExecutionExtensionDrainContext, ExecutionExtensionRuntime, ExecutionExtensionRuntimeContext, ExecutionExtensionValidationContext, ExecutionKernelRuntime, ExecutionLease, ExecutionProjectionContext, ExecutionOperationLease, ExtensionOfDefinition, HostApiOfExtension, HostExtension, HostExtensionContext, RuntimeCapability, RuntimeCapabilityBinding, RuntimeCapabilityBindings, RuntimeCapabilityValue, } from './extension.js';
|
|
12
|
+
export type { AnyExecutionExtension, ExecutionCompileContext, ExecutionContribution, ModelExecutionContribution, ExecutionRuntimeBinding, ExecutionDefinition, ExecutionDeclaration, ExecutionGroup, ExecutionContextView, ExecutionExtension, ExecutionExtensionDrainContext, ExecutionExtensionRuntime, ExecutionExtensionRuntimeContext, ExecutionExtensionValidationContext, ExecutionKernelRuntime, ExecutionLease, ExecutionProjectionContext, ExecutionOperationLease, ExtensionOfDefinition, HostApiOfExtension, HostExtension, HostExtensionContext, RuntimeCapability, RuntimeCapabilityBinding, RuntimeCapabilityBindings, RuntimeCapabilityValue, } from './extension.js';
|
|
11
13
|
export type { RuntimeExecutionMetadata, RuntimeInstrumentation, RuntimeInstrumentationScope, RuntimeInvocationRegistration, RuntimeProviderMetadata, RuntimeOperationMetadata, } from './instrumentation.js';
|
|
12
14
|
export { composeLayers, defineLayer } from './generic-layer.js';
|
|
13
|
-
export type { GenericLayer, GenericLayerContext, GenericLayerNext, } from './generic-layer.js';
|
|
15
|
+
export type { GenericLayer, GenericLayerContext, GenericLayerNext, LayerState, } from './generic-layer.js';
|
|
14
16
|
export { collectInjectedDependencies, inject, injectInquirer, InjectionContextError, runInInjectionContext, } from './injection.js';
|
|
15
17
|
export type { DependencyConsumer, DependencyConsumerDescriptor, DependencyResolutionContext, DependencyResolver, InjectionContext, } from './injection.js';
|
|
16
18
|
export { hook } from './lifecycle.js';
|
|
17
|
-
export type { BeforeApplicationShutdown, LifecycleHook, ModuleLifecycle, OnApplicationBootstrap, OnApplicationShutdown, OnModuleDestroy, OnModuleInit, } from './lifecycle.js';
|
|
19
|
+
export type { BeforeApplicationShutdown, LifecycleHook, ModuleLifecycle, OnApplicationBootstrap, OnApplicationShutdown, OnApplicationDispose, OnModuleDestroy, OnModuleInit, } from './lifecycle.js';
|
|
18
20
|
export { ApplicationModelError, assertValidApplicationModel, buildApplicationModel, } from './model.js';
|
|
19
21
|
export type { ApplicationModel, ApplicationModelBuildOptions, ApplicationModelEdge, ApplicationModelExtension, ApplicationModelExtensions, ApplicationModelNode, CompiledOf, ExecutionModelNode, FrameworkModelNode, LifecycleModelNode, ModuleModelNode, ProviderModelNode, } from './model.js';
|
|
20
|
-
export {
|
|
21
|
-
export type { AnyModuleTemplate, ExtensionsOfModuleDefinition, ModuleDefinition, ModuleExtensions, ModuleHostApis, ModuleInstance,
|
|
22
|
+
export { defineModule, moduleTypeInfo } from './module.js';
|
|
23
|
+
export type { AnyModuleTemplate, ExtensionsOfModuleDefinition, ModuleDefinition, ModuleExtensions, ModuleHostApis, ModuleInstance, ModuleTemplate, ModuleTypeInfo, } from './module.js';
|
|
22
24
|
export { argumentsProvider, environmentProvider, normalizeProvider, provide, } from './provider.js';
|
|
23
25
|
export type { ArgumentsProvider, ClassProvider, ConditionalProvider, EnvironmentProvider, FactoryDefinition, FactoryProvider, ProviderDeclaration, ProviderDescriptor, ProviderScopeOptions, Scope, ValueProvider, } from './provider.js';
|
|
24
26
|
export type { RuntimeInputContract, RuntimeInputKey } from './runtime-input.js';
|
|
@@ -30,3 +32,9 @@ export { token, tokenName } from './token.js';
|
|
|
30
32
|
export type { AbstractClass, Class, Token, TokenLike, TokenOptions, TokenValue, } from './token.js';
|
|
31
33
|
export { type } from './type.js';
|
|
32
34
|
export type { Type, TypeOf } from './type.js';
|
|
35
|
+
export type * from './model/identity.js';
|
|
36
|
+
export * from './identity.js';
|
|
37
|
+
export * from './units.js';
|
|
38
|
+
export { parseModelNodeId, parseProviderNodeId } from './model/identity.js';
|
|
39
|
+
export { sourceFileReference, sourceLine, sourceColumn, } from './source-location.js';
|
|
40
|
+
export type { SourceLocationInput, SourceFileReference, SourceLine, SourceColumn, } from './source-location.js';
|