@sigx/runtime-core 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/dist/app-types.d.ts +55 -15
- package/dist/app-types.d.ts.map +1 -1
- package/dist/app.d.ts +4 -8
- package/dist/app.d.ts.map +1 -1
- package/dist/async-context.d.ts +47 -0
- package/dist/async-context.d.ts.map +1 -0
- package/dist/component.d.ts +146 -40
- package/dist/component.d.ts.map +1 -1
- package/dist/compound.d.ts +34 -0
- package/dist/compound.d.ts.map +1 -0
- package/dist/di/factory.d.ts +3 -2
- package/dist/di/factory.d.ts.map +1 -1
- package/dist/di/injectable.d.ts +80 -6
- package/dist/di/injectable.d.ts.map +1 -1
- package/dist/directives.d.ts +111 -0
- package/dist/directives.d.ts.map +1 -0
- package/dist/error-boundary.d.ts +40 -0
- package/dist/error-boundary.d.ts.map +1 -0
- package/dist/hydration/index.d.ts +88 -0
- package/dist/hydration/index.d.ts.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +576 -696
- package/dist/index.js.map +1 -1
- package/dist/jsx-runtime.d.ts +3 -2
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/lazy.d.ts.map +1 -1
- package/dist/model.d.ts +68 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/platform.d.ts +9 -9
- package/dist/platform.d.ts.map +1 -1
- package/dist/renderer.d.ts +18 -3
- package/dist/renderer.d.ts.map +1 -1
- package/dist/utils/is-component.d.ts +30 -0
- package/dist/utils/is-component.d.ts.map +1 -0
- package/dist/utils/normalize.d.ts +4 -1
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/props-accessor.d.ts +6 -9
- package/dist/utils/props-accessor.d.ts.map +1 -1
- package/package.json +15 -6
- package/dist/sheet.d.ts +0 -51
- package/dist/sheet.d.ts.map +0 -1
- package/dist/stores/store.d.ts +0 -70
- package/dist/stores/store.d.ts.map +0 -1
- package/dist/styled.d.ts +0 -15
- package/dist/styled.d.ts.map +0 -1
- package/dist/utils/component-helpers.d.ts +0 -38
- package/dist/utils/component-helpers.d.ts.map +0 -1
package/dist/app-types.d.ts
CHANGED
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { VNode } from './jsx-runtime.js';
|
|
8
8
|
import type { ComponentSetupContext } from './component.js';
|
|
9
|
+
import type { InjectableFunction } from './di/injectable.js';
|
|
10
|
+
import type { DirectiveDefinition } from './directives.js';
|
|
9
11
|
/**
|
|
10
12
|
* Component instance info passed to lifecycle hooks.
|
|
11
13
|
* This is renderer-agnostic - works with DOM, Terminal, or any platform.
|
|
12
14
|
*/
|
|
13
15
|
export interface ComponentInstance {
|
|
14
|
-
/** Component name (if defined via
|
|
16
|
+
/** Component name (if defined via component options) */
|
|
15
17
|
name?: string;
|
|
16
18
|
/** The component's setup context with props, slots, emit, etc. */
|
|
17
19
|
ctx: ComponentSetupContext;
|
|
@@ -75,16 +77,20 @@ export interface AppContext {
|
|
|
75
77
|
config: AppConfig;
|
|
76
78
|
/** Lifecycle hooks from all plugins */
|
|
77
79
|
hooks: AppLifecycleHooks[];
|
|
80
|
+
/** Registered directives */
|
|
81
|
+
directives: Map<string, DirectiveDefinition>;
|
|
78
82
|
}
|
|
79
83
|
/**
|
|
80
84
|
* Plugin interface - plugins implement install() to configure the app.
|
|
81
85
|
*
|
|
82
86
|
* @example
|
|
83
87
|
* ```typescript
|
|
88
|
+
* const useMyService = defineInjectable(() => new MyService());
|
|
89
|
+
*
|
|
84
90
|
* const myPlugin: Plugin<{ debug?: boolean }> = {
|
|
85
91
|
* name: 'my-plugin',
|
|
86
92
|
* install(app, options) {
|
|
87
|
-
* app.
|
|
93
|
+
* app.defineProvide(useMyService);
|
|
88
94
|
* app.hook({
|
|
89
95
|
* onComponentMounted: (instance) => {
|
|
90
96
|
* if (options?.debug) console.log('Mounted:', instance.name);
|
|
@@ -109,8 +115,10 @@ export interface Plugin<Options = any> {
|
|
|
109
115
|
*
|
|
110
116
|
* @example
|
|
111
117
|
* ```typescript
|
|
118
|
+
* const useLogger = defineInjectable(() => createLogger());
|
|
119
|
+
*
|
|
112
120
|
* const simplePlugin: PluginInstallFn = (app) => {
|
|
113
|
-
* app.
|
|
121
|
+
* app.defineProvide(useLogger);
|
|
114
122
|
* };
|
|
115
123
|
* ```
|
|
116
124
|
*/
|
|
@@ -153,13 +161,11 @@ export type UnmountFn<TContainer = any> = (container: TContainer) => void;
|
|
|
153
161
|
*
|
|
154
162
|
* // Using with defineInjectable tokens
|
|
155
163
|
* const useConfig = defineInjectable(() => ({ apiUrl: 'https://...' }));
|
|
156
|
-
* app.
|
|
157
|
-
*
|
|
158
|
-
* // Or with simple symbols/values
|
|
159
|
-
* app.provide(ConfigToken, myConfig);
|
|
164
|
+
* const config = app.defineProvide(useConfig);
|
|
165
|
+
* config.apiUrl = 'https://custom.api.com';
|
|
160
166
|
*
|
|
161
167
|
* app.use(routerPlugin)
|
|
162
|
-
* .mount(document.getElementById('app')
|
|
168
|
+
* .mount(document.getElementById('app')!);
|
|
163
169
|
* ```
|
|
164
170
|
*/
|
|
165
171
|
export interface App<TContainer = any> {
|
|
@@ -172,20 +178,49 @@ export interface App<TContainer = any> {
|
|
|
172
178
|
*/
|
|
173
179
|
use<Options>(plugin: Plugin<Options> | PluginInstallFn<Options>, options?: Options): App<TContainer>;
|
|
174
180
|
/**
|
|
175
|
-
* Provide a
|
|
181
|
+
* Provide a new instance of an injectable at app level.
|
|
182
|
+
* All components will receive this instance when calling the injectable function.
|
|
176
183
|
*
|
|
177
|
-
*
|
|
178
|
-
* -
|
|
179
|
-
*
|
|
180
|
-
*
|
|
184
|
+
* @param useFn - An injectable function created by defineInjectable
|
|
185
|
+
* @param factory - Optional custom factory. If not provided, uses the injectable's default factory.
|
|
186
|
+
* @returns The created instance
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* const useApiConfig = defineInjectable(() => ({ baseUrl: 'https://api.example.com' }));
|
|
181
191
|
*
|
|
182
|
-
*
|
|
192
|
+
* const app = defineApp(<App />);
|
|
193
|
+
*
|
|
194
|
+
* // Use default factory
|
|
195
|
+
* const config = app.defineProvide(useApiConfig);
|
|
196
|
+
* config.baseUrl = 'https://custom.api.com';
|
|
197
|
+
*
|
|
198
|
+
* // Or provide custom factory
|
|
199
|
+
* app.defineProvide(useApiConfig, () => ({ baseUrl: 'https://other.api.com' }));
|
|
200
|
+
* ```
|
|
183
201
|
*/
|
|
184
|
-
|
|
202
|
+
defineProvide<T>(useFn: InjectableFunction<T>, factory?: () => T): T;
|
|
185
203
|
/**
|
|
186
204
|
* Register lifecycle hooks to observe all components
|
|
187
205
|
*/
|
|
188
206
|
hook(hooks: AppLifecycleHooks): App<TContainer>;
|
|
207
|
+
/**
|
|
208
|
+
* Register a global directive, or retrieve a registered one.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* // Register
|
|
213
|
+
* app.directive('tooltip', {
|
|
214
|
+
* mounted(el, { value }) { el.title = value; },
|
|
215
|
+
* updated(el, { value }) { el.title = value; }
|
|
216
|
+
* });
|
|
217
|
+
*
|
|
218
|
+
* // Retrieve
|
|
219
|
+
* const dir = app.directive('tooltip');
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
directive(name: string, definition: DirectiveDefinition): App<TContainer>;
|
|
223
|
+
directive(name: string): DirectiveDefinition | undefined;
|
|
189
224
|
/**
|
|
190
225
|
* Mount the app to a container.
|
|
191
226
|
*
|
|
@@ -222,5 +257,10 @@ export interface App<TContainer = any> {
|
|
|
222
257
|
* @internal
|
|
223
258
|
*/
|
|
224
259
|
_container: TContainer | null;
|
|
260
|
+
/**
|
|
261
|
+
* The root component passed to defineApp()
|
|
262
|
+
* @internal
|
|
263
|
+
*/
|
|
264
|
+
_rootComponent: any;
|
|
225
265
|
}
|
|
226
266
|
//# sourceMappingURL=app-types.d.ts.map
|
package/dist/app-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-types.d.ts","sourceRoot":"","sources":["../src/app-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app-types.d.ts","sourceRoot":"","sources":["../src/app-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,EAAE,qBAAqB,CAAC;IAC3B,mCAAmC;IACnC,KAAK,EAAE,KAAK,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAEhG;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvF;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE7D;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE3D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;CAChG;AAMD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,uBAAuB;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,kEAAkE;IAClE,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE,SAAS,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,GAAG;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAMnF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,OAAO,CAAC,UAAU,GAAG,GAAG,IAAI,CACpC,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,KACrB,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,KAAK,IAAI,CAAC;AAM1E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,GAAG;IACjC;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAErG;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAErE;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAEhD;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAEzD;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7E;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,EAAE,UAAU,CAAC;IAErB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,cAAc,EAAE,GAAG,CAAC;CACvB"}
|
package/dist/app.d.ts
CHANGED
|
@@ -6,10 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export type { ComponentInstance, AppConfig, AppLifecycleHooks, AppContext, Plugin, PluginInstallFn, MountFn, UnmountFn, App } from './app-types.js';
|
|
8
8
|
import type { ComponentInstance, AppContext, MountFn, App } from './app-types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Unique symbol for app context injection
|
|
11
|
-
*/
|
|
12
|
-
export declare const AppContextKey: unique symbol;
|
|
13
9
|
/**
|
|
14
10
|
* Set the default mount function for the platform.
|
|
15
11
|
* Called by platform packages (runtime-dom, runtime-terminal) on import.
|
|
@@ -33,7 +29,6 @@ export declare function getDefaultMount(): MountFn<any> | null;
|
|
|
33
29
|
* @example
|
|
34
30
|
* ```tsx
|
|
35
31
|
* import { defineApp, defineInjectable } from '@sigx/runtime-core';
|
|
36
|
-
* import { render } from '@sigx/runtime-dom';
|
|
37
32
|
*
|
|
38
33
|
* // Define an injectable service
|
|
39
34
|
* const useApiConfig = defineInjectable(() => ({ baseUrl: 'https://api.example.com' }));
|
|
@@ -42,10 +37,11 @@ export declare function getDefaultMount(): MountFn<any> | null;
|
|
|
42
37
|
*
|
|
43
38
|
* app.use(myPlugin, { option: 'value' });
|
|
44
39
|
*
|
|
45
|
-
* // Provide
|
|
46
|
-
* app.
|
|
40
|
+
* // Provide custom instance at app level
|
|
41
|
+
* const config = app.defineProvide(useApiConfig);
|
|
42
|
+
* config.baseUrl = 'https://custom.api.com';
|
|
47
43
|
*
|
|
48
|
-
* app.mount(document.getElementById('app')
|
|
44
|
+
* app.mount(document.getElementById('app')!);
|
|
49
45
|
* ```
|
|
50
46
|
*/
|
|
51
47
|
export declare function defineApp<TContainer = any>(rootComponent: any): App<TContainer>;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACR,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,eAAe,EACf,OAAO,EACP,SAAS,EACT,GAAG,EACN,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EACR,iBAAiB,EAEjB,UAAU,EAGV,OAAO,EACP,GAAG,EACN,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACR,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,eAAe,EACf,OAAO,EACP,SAAS,EACT,GAAG,EACN,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EACR,iBAAiB,EAEjB,UAAU,EAGV,OAAO,EACP,GAAG,EACN,MAAM,gBAAgB,CAAC;AAuBxB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,UAAU,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAEpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAErD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,UAAU,GAAG,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAsJ/E;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CASpG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CASpG;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAStG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CASpG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,UAAU,GAAG,IAAI,EAC1B,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAClC,IAAI,EAAE,MAAM,GACb,OAAO,CAyBT"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async-safe context storage for SSR request isolation.
|
|
3
|
+
*
|
|
4
|
+
* On Node.js (server), uses AsyncLocalStorage to scope state per-request,
|
|
5
|
+
* preventing cross-request contamination when concurrent requests share
|
|
6
|
+
* the same process (e.g., async component setup with `await`).
|
|
7
|
+
*
|
|
8
|
+
* On browsers (client), falls back to simple module-level variables
|
|
9
|
+
* since there's only ever one "request" in the browser.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Get the current component context (request-safe).
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCurrentInstanceSafe(): any | null;
|
|
15
|
+
/**
|
|
16
|
+
* Set the current component context (request-safe).
|
|
17
|
+
* Returns the previous value.
|
|
18
|
+
*/
|
|
19
|
+
export declare function setCurrentInstanceSafe(ctx: any | null): any | null;
|
|
20
|
+
/**
|
|
21
|
+
* Get the current suspense boundary (request-safe).
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCurrentSuspenseBoundarySafe(): any | null;
|
|
24
|
+
/**
|
|
25
|
+
* Set the current suspense boundary (request-safe).
|
|
26
|
+
* Returns the previous value.
|
|
27
|
+
*/
|
|
28
|
+
export declare function setCurrentSuspenseBoundarySafe(boundary: any | null): any | null;
|
|
29
|
+
/**
|
|
30
|
+
* Run a function within a new isolated request context.
|
|
31
|
+
* On Node.js, uses AsyncLocalStorage.run() to create a new scope.
|
|
32
|
+
* On browsers, simply calls the function (no isolation needed).
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* // In SSR request handler:
|
|
37
|
+
* const html = await runInRequestScope(async () => {
|
|
38
|
+
* return await ssr.render(<App />);
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function runInRequestScope<T>(fn: () => T): T;
|
|
43
|
+
/**
|
|
44
|
+
* Check if AsyncLocalStorage-based request isolation is available.
|
|
45
|
+
*/
|
|
46
|
+
export declare function hasRequestIsolation(): boolean;
|
|
47
|
+
//# sourceMappingURL=async-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-context.d.ts","sourceRoot":"","sources":["../src/async-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsDH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,GAAG,GAAG,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,GAAG,GAAG,IAAI,CAE3D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAK/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAUnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
package/dist/component.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JSXElement } from "./jsx-runtime.js";
|
|
2
2
|
import { signal } from "@sigx/reactivity";
|
|
3
|
+
import type { Model as ModelType } from "./model.js";
|
|
3
4
|
/**
|
|
4
5
|
* Extension point for additional component attributes.
|
|
5
6
|
* Use module augmentation to add attributes to all components:
|
|
@@ -27,9 +28,86 @@ export type DefineProp<TName extends string, TType, Required extends boolean = f
|
|
|
27
28
|
[K in TName]: TType;
|
|
28
29
|
};
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* Model binding tuple type - [stateObject, key] for forwarding
|
|
32
|
+
* The state object can be a Signal or any object with the given key
|
|
31
33
|
*/
|
|
32
|
-
export type
|
|
34
|
+
export type ModelBinding<T> = [object, string];
|
|
35
|
+
/**
|
|
36
|
+
* Re-export Model type for convenience
|
|
37
|
+
*/
|
|
38
|
+
export type { ModelType as Model };
|
|
39
|
+
/**
|
|
40
|
+
* Define a 2-way bound model.
|
|
41
|
+
*
|
|
42
|
+
* The component receives a Model<T> object with:
|
|
43
|
+
* - `.value` - Get or set the current value
|
|
44
|
+
* - `.binding` - The underlying binding for forwarding
|
|
45
|
+
*
|
|
46
|
+
* Default form: DefineModel<T>
|
|
47
|
+
* - props.model: Model<T> (read/write/forward)
|
|
48
|
+
* - props.model.value to read/write
|
|
49
|
+
* - <Child model={props.model} /> to forward
|
|
50
|
+
*
|
|
51
|
+
* Named form: DefineModel<"name", T>
|
|
52
|
+
* - props.name: Model<T> (read/write/forward)
|
|
53
|
+
* - props.name.value to read/write
|
|
54
|
+
* - <Child model={props.name} /> to forward
|
|
55
|
+
*
|
|
56
|
+
* Callers use: model={() => state.prop} or model:name={() => state.prop}
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* interface InputProps extends DefineModel<string> {
|
|
61
|
+
* placeholder?: string;
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* const Input = component<InputProps>(({ props }) => {
|
|
65
|
+
* // Read
|
|
66
|
+
* console.log(props.model.value);
|
|
67
|
+
*
|
|
68
|
+
* // Write
|
|
69
|
+
* props.model.value = "new value";
|
|
70
|
+
*
|
|
71
|
+
* // Forward
|
|
72
|
+
* <Child model={props.model} />
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export type DefineModel<TNameOrType, TType = void> = TType extends void ? {
|
|
77
|
+
model?: ModelType<TNameOrType>;
|
|
78
|
+
/** @internal Marker for JSX to accept binding tuples */
|
|
79
|
+
__modelBindings?: {
|
|
80
|
+
model: TNameOrType;
|
|
81
|
+
};
|
|
82
|
+
} & DefineEvent<"update:modelValue", TNameOrType> : TNameOrType extends string ? {
|
|
83
|
+
[K in TNameOrType]?: ModelType<TType>;
|
|
84
|
+
} & {
|
|
85
|
+
/** @internal Marker for JSX to accept binding tuples */
|
|
86
|
+
__modelBindings?: {
|
|
87
|
+
[K in TNameOrType]: TType;
|
|
88
|
+
};
|
|
89
|
+
} & DefineEvent<`update:${TNameOrType}`, TType> : never;
|
|
90
|
+
/**
|
|
91
|
+
* Extract model binding definitions from a component props type.
|
|
92
|
+
* Used at JSX level to allow binding tuples for model props.
|
|
93
|
+
*/
|
|
94
|
+
type ExtractModelBindings<T> = T extends {
|
|
95
|
+
__modelBindings?: infer M;
|
|
96
|
+
} ? NonNullable<M> : {};
|
|
97
|
+
/**
|
|
98
|
+
* Map model keys to their JSX prop names.
|
|
99
|
+
* - "model" stays as "model" (default model)
|
|
100
|
+
* - Other names become "model:name" (named models)
|
|
101
|
+
*/
|
|
102
|
+
type ModelPropName<K extends string> = K extends "model" ? "model" : `model:${K}`;
|
|
103
|
+
/**
|
|
104
|
+
* Transform Model<T> props to also accept binding syntax at JSX level.
|
|
105
|
+
* This allows: model={[state, "value"]} or model={props.model}
|
|
106
|
+
* For named models: model:title={[state, "title"]} or model:title={() => state.title}
|
|
107
|
+
*/
|
|
108
|
+
type ExternalModelProps<T> = {
|
|
109
|
+
[K in keyof ExtractModelBindings<T> as K extends string ? ModelPropName<K> : never]?: ModelType<ExtractModelBindings<T>[K]> | ModelBinding<ExtractModelBindings<T>[K]> | (() => ExtractModelBindings<T>[K]);
|
|
110
|
+
};
|
|
33
111
|
export type EventDefinition<T> = {
|
|
34
112
|
__eventDetail: T;
|
|
35
113
|
};
|
|
@@ -111,14 +189,6 @@ export interface MountContext<TElement = PlatformElement> {
|
|
|
111
189
|
*/
|
|
112
190
|
export interface SetupContext {
|
|
113
191
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Type for defaults object - REQUIRES all optional keys to be provided.
|
|
116
|
-
* Required props (where undefined is not assignable) get type 'never' to prevent setting them.
|
|
117
|
-
* This ensures you don't forget to add a default when adding a new optional prop.
|
|
118
|
-
*/
|
|
119
|
-
type DefaultsFor<TProps> = {
|
|
120
|
-
[K in keyof TProps as undefined extends TProps[K] ? K : never]-?: NonNullable<TProps[K]>;
|
|
121
|
-
};
|
|
122
192
|
/**
|
|
123
193
|
* Props type after defaults are applied - all props become required (non-undefined)
|
|
124
194
|
*/
|
|
@@ -126,47 +196,53 @@ export type PropsWithDefaults<TProps, D> = {
|
|
|
126
196
|
readonly [K in keyof TProps]-?: K extends keyof D ? NonNullable<TProps[K]> : TProps[K];
|
|
127
197
|
};
|
|
128
198
|
/**
|
|
129
|
-
* Props accessor -
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* When calling props(), you MUST provide defaults for ALL optional props.
|
|
133
|
-
* This ensures you don't forget to add a default when adding a new optional prop.
|
|
134
|
-
* Required props cannot be in the defaults object.
|
|
199
|
+
* Props accessor - a reactive proxy for component props.
|
|
200
|
+
* Use destructuring with defaults for optional props.
|
|
135
201
|
*
|
|
136
202
|
* @example
|
|
137
203
|
* ```tsx
|
|
138
|
-
* //
|
|
139
|
-
* const
|
|
140
|
-
* return () => <button class={
|
|
204
|
+
* // Destructure with defaults
|
|
205
|
+
* const { variant = 'primary', size = 'md' } = ctx.props;
|
|
206
|
+
* return () => <button class={variant}>...</button>
|
|
207
|
+
*
|
|
208
|
+
* // Or spread to forward all props
|
|
209
|
+
* return () => <ChildComponent {...ctx.props} />
|
|
141
210
|
* ```
|
|
142
211
|
*/
|
|
143
212
|
export type PropsAccessor<TProps> = {
|
|
144
213
|
readonly [K in keyof TProps]: TProps[K];
|
|
145
|
-
} & {
|
|
146
|
-
(defaults: DefaultsFor<TProps>): PropsWithDefaults<TProps, DefaultsFor<TProps>> & PropsAccessor<TProps>;
|
|
147
214
|
};
|
|
148
215
|
export interface ComponentSetupContext<TElement = PlatformElement, TProps extends Record<string, any> = {}, TEvents extends Record<string, any> = {}, TRef = any, TSlots = {}> extends SetupContext {
|
|
149
216
|
el: TElement;
|
|
150
217
|
signal: typeof signal;
|
|
151
218
|
/**
|
|
152
|
-
* Component props -
|
|
153
|
-
*
|
|
219
|
+
* Component props - includes regular props and Model<T> objects.
|
|
220
|
+
*
|
|
221
|
+
* Models are accessed via props: props.model.value, props.title.value
|
|
154
222
|
*
|
|
155
223
|
* @example
|
|
156
224
|
* ```tsx
|
|
157
|
-
* //
|
|
158
|
-
*
|
|
225
|
+
* // Read model
|
|
226
|
+
* const value = props.model.value;
|
|
227
|
+
*
|
|
228
|
+
* // Write model
|
|
229
|
+
* props.model.value = "new value";
|
|
159
230
|
*
|
|
160
|
-
* //
|
|
161
|
-
*
|
|
231
|
+
* // Forward to child
|
|
232
|
+
* <Child model={props.model} />
|
|
233
|
+
*
|
|
234
|
+
* // Forward via context
|
|
235
|
+
* defineProvide(ctx, () => props.model);
|
|
162
236
|
* ```
|
|
163
237
|
*/
|
|
164
238
|
props: PropsAccessor<TProps>;
|
|
165
239
|
slots: SlotsObject<TSlots>;
|
|
166
240
|
emit: EmitFn<TEvents>;
|
|
167
241
|
parent: any | null;
|
|
168
|
-
|
|
169
|
-
|
|
242
|
+
onMounted(fn: (ctx: MountContext<TElement>) => void): void;
|
|
243
|
+
onUnmounted(fn: (ctx: MountContext<TElement>) => void): void;
|
|
244
|
+
onCreated(fn: () => void): void;
|
|
245
|
+
onUpdated(fn: () => void): void;
|
|
170
246
|
expose(exposed: TRef): void;
|
|
171
247
|
/**
|
|
172
248
|
* The current render function. Can be replaced directly for HMR.
|
|
@@ -179,14 +255,16 @@ export interface ComponentSetupContext<TElement = PlatformElement, TProps extend
|
|
|
179
255
|
*/
|
|
180
256
|
update(): void;
|
|
181
257
|
}
|
|
182
|
-
export declare function getCurrentInstance():
|
|
183
|
-
export declare function setCurrentInstance(ctx: ComponentSetupContext<any, any, any> | null):
|
|
184
|
-
export declare function
|
|
185
|
-
export declare function
|
|
258
|
+
export declare function getCurrentInstance(): any;
|
|
259
|
+
export declare function setCurrentInstance(ctx: ComponentSetupContext<any, any, any> | null): any;
|
|
260
|
+
export declare function onMounted(fn: (ctx: MountContext) => void): void;
|
|
261
|
+
export declare function onUnmounted(fn: (ctx: MountContext) => void): void;
|
|
262
|
+
export declare function onCreated(fn: () => void): void;
|
|
263
|
+
export declare function onUpdated(fn: () => void): void;
|
|
186
264
|
export type ViewFn = () => JSXElement | JSXElement[] | undefined;
|
|
187
265
|
/**
|
|
188
266
|
* Type for component setup functions.
|
|
189
|
-
* Includes Props, Events, Ref and Slots generics to preserve type information.
|
|
267
|
+
* Includes Props, Events, Ref, and Slots generics to preserve type information.
|
|
190
268
|
* Can be sync or async - async setup is awaited on server, runs sync on client hydration.
|
|
191
269
|
*/
|
|
192
270
|
export type SetupFn<TProps extends Record<string, any> = {}, TEvents extends Record<string, any> = {}, TRef = any, TSlots = {}> = (ctx: ComponentSetupContext<PlatformElement, TProps, TEvents, TRef, TSlots>) => ViewFn | Promise<ViewFn>;
|
|
@@ -238,9 +316,25 @@ export type ComponentRef<T extends {
|
|
|
238
316
|
__ref: any;
|
|
239
317
|
}> = Ref<T["__ref"]>;
|
|
240
318
|
/**
|
|
241
|
-
* Strip internal type markers from props
|
|
319
|
+
* Strip internal type markers from component props for setup context (internal use).
|
|
320
|
+
* Preserves model keys so components can access props.model, props.title, etc.
|
|
321
|
+
*
|
|
322
|
+
* Strips:
|
|
323
|
+
* - Internal markers: __exposed, __slots, __models, __modelBindings
|
|
324
|
+
* - JSX model:name syntax markers
|
|
325
|
+
* - Event markers (update:*)
|
|
326
|
+
*/
|
|
327
|
+
type StripInternalMarkers<T> = {
|
|
328
|
+
[K in keyof T as K extends "__exposed" | "__slots" | "__models" | "__modelBindings" ? never : K extends `model:${string}` ? never : K extends `update:${string}` ? never : K]: T[K];
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* Strip props for JSX external signature.
|
|
332
|
+
* Same as StripInternalMarkers but also strips model keys so ExternalModelProps
|
|
333
|
+
* is the sole source (avoiding intersection conflicts between Model<T> and widened union).
|
|
242
334
|
*/
|
|
243
|
-
type
|
|
335
|
+
type StripForJSX<T> = {
|
|
336
|
+
[K in keyof T as K extends "__exposed" | "__slots" | "__models" | "__modelBindings" ? never : K extends `model:${string}` ? never : K extends `update:${string}` ? never : K extends keyof ExtractModelBindings<T> ? never : K]: T[K];
|
|
337
|
+
};
|
|
244
338
|
/**
|
|
245
339
|
* Component options (optional second param)
|
|
246
340
|
*/
|
|
@@ -254,7 +348,18 @@ export interface ComponentOptions {
|
|
|
254
348
|
type SlotProps<TSlots> = TSlots extends Record<string, any> ? {
|
|
255
349
|
slots?: Partial<TSlots>;
|
|
256
350
|
} : {};
|
|
257
|
-
|
|
351
|
+
/**
|
|
352
|
+
* Sync binding type - used at JSX level to enable two-way binding
|
|
353
|
+
* The JSX runtime transforms sync into value + onUpdate:value
|
|
354
|
+
*/
|
|
355
|
+
type SyncBinding<T> = [object, string] | (() => T);
|
|
356
|
+
/**
|
|
357
|
+
* Sync props - if the component has a 'value' prop, allow 'sync' binding
|
|
358
|
+
*/
|
|
359
|
+
type SyncProps<TCombined> = 'value' extends keyof TCombined ? {
|
|
360
|
+
sync?: SyncBinding<TCombined['value']>;
|
|
361
|
+
} : {};
|
|
362
|
+
export type ComponentFactory<TCombined extends Record<string, any>, TRef, TSlots> = ((props: StripForJSX<Omit<TCombined, EventNames<TCombined>>> & EventHandlers<TCombined> & SlotProps<TSlots> & SyncProps<TCombined> & ExternalModelProps<TCombined> & JSX.IntrinsicAttributes & ComponentAttributeExtensions & {
|
|
258
363
|
ref?: Ref<TRef>;
|
|
259
364
|
children?: any;
|
|
260
365
|
}) => JSXElement) & {
|
|
@@ -262,6 +367,8 @@ export type ComponentFactory<TCombined extends Record<string, any>, TRef, TSlots
|
|
|
262
367
|
__setup: SetupFn<StripInternalMarkers<TCombined>, TCombined, TRef, TSlots>;
|
|
263
368
|
/** @internal Component name for debugging */
|
|
264
369
|
__name?: string;
|
|
370
|
+
/** @internal Stable island identity based on file path (injected by sigxIslandsPlugin) */
|
|
371
|
+
__islandId?: string;
|
|
265
372
|
/** @internal Type brand for props */
|
|
266
373
|
__props: StripInternalMarkers<TCombined>;
|
|
267
374
|
/** @internal Type brand for events */
|
|
@@ -281,7 +388,7 @@ export type ComponentFactory<TCombined extends Record<string, any>, TRef, TSlots
|
|
|
281
388
|
* ```tsx
|
|
282
389
|
* type CardProps = DefineProp<"title", string> & DefineSlot<"header">;
|
|
283
390
|
*
|
|
284
|
-
* export const Card =
|
|
391
|
+
* export const Card = component<CardProps>((ctx) => {
|
|
285
392
|
* const { title } = ctx.props;
|
|
286
393
|
* const { slots } = ctx;
|
|
287
394
|
*
|
|
@@ -294,6 +401,5 @@ export type ComponentFactory<TCombined extends Record<string, any>, TRef, TSlots
|
|
|
294
401
|
* });
|
|
295
402
|
* ```
|
|
296
403
|
*/
|
|
297
|
-
export declare function
|
|
298
|
-
export {};
|
|
404
|
+
export declare function component<TCombined extends Record<string, any> = {}, TRef = ExtractExposed<TCombined>, TSlots = ExtractSlots<TCombined>>(setup: (ctx: ComponentSetupContext<PlatformElement, StripInternalMarkers<TCombined>, TCombined, TRef, TSlots>) => ViewFn | Promise<ViewFn>, options?: ComponentOptions): ComponentFactory<TCombined, TRef, TSlots>;
|
|
299
405
|
//# sourceMappingURL=component.d.ts.map
|
package/dist/component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,4BAA4B;CAE5C;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,SAAS,OAAO,GAAG,KAAK,IAAI,QAAQ,SAAS,KAAK,GACxG;KAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK;CAAE,GACxB;KAAG,CAAC,IAAI,KAAK,GAAG,KAAK;CAAE,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ComponentFactory } from './component.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a compound component by attaching sub-components as static properties.
|
|
4
|
+
*
|
|
5
|
+
* This enables the pattern of `Parent.Child` components (e.g., `Menu.Item`, `Card.Body`)
|
|
6
|
+
* while preserving full TypeScript type inference for both the parent and children.
|
|
7
|
+
*
|
|
8
|
+
* @param main - The main/parent component factory
|
|
9
|
+
* @param sub - An object containing sub-components to attach
|
|
10
|
+
* @returns The main component with sub-components attached as static properties
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // Define individual components
|
|
15
|
+
* const _Menu = component<MenuProps>(ctx => { ... });
|
|
16
|
+
* const _MenuItem = component<MenuItemProps>(ctx => { ... });
|
|
17
|
+
* const _MenuTitle = component<MenuTitleProps>(ctx => { ... });
|
|
18
|
+
*
|
|
19
|
+
* // Create compound component
|
|
20
|
+
* export const Menu = compound(_Menu, {
|
|
21
|
+
* Item: _MenuItem,
|
|
22
|
+
* Title: _MenuTitle,
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Usage in JSX
|
|
26
|
+
* <Menu>
|
|
27
|
+
* <Menu.Title>Navigation</Menu.Title>
|
|
28
|
+
* <Menu.Item value="home">Home</Menu.Item>
|
|
29
|
+
* <Menu.Item value="about">About</Menu.Item>
|
|
30
|
+
* </Menu>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function compound<TMain extends ComponentFactory<any, any, any>, TSub extends Record<string, ComponentFactory<any, any, any>>>(main: TMain, sub: TSub): TMain & TSub;
|
|
34
|
+
//# sourceMappingURL=compound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../src/compound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,QAAQ,CACpB,KAAK,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7C,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAC9D,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,CAEtC"}
|
package/dist/di/factory.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type InjectableFunction } from "./injectable.js";
|
|
1
2
|
import { InstanceLifetimes, guid } from "../models/index.js";
|
|
2
3
|
export declare class SubscriptionHandler {
|
|
3
4
|
private unsubs;
|
|
@@ -9,9 +10,9 @@ export interface SetupFactoryContext {
|
|
|
9
10
|
subscriptions: SubscriptionHandler;
|
|
10
11
|
overrideDispose(onDispose: (fn: () => void) => void): void;
|
|
11
12
|
}
|
|
12
|
-
export declare function defineFactory<InferReturnSetup>(setup: (ctx: SetupFactoryContext, ...args: any) => InferReturnSetup, lifetime: InstanceLifetimes, typeIdentifier?: guid):
|
|
13
|
+
export declare function defineFactory<InferReturnSetup>(setup: (ctx: SetupFactoryContext, ...args: any) => InferReturnSetup, lifetime: InstanceLifetimes, typeIdentifier?: guid): InjectableFunction<InferReturnSetup & {
|
|
13
14
|
dispose?: () => void;
|
|
14
|
-
}
|
|
15
|
+
}>;
|
|
15
16
|
export declare function defineFactory<InferReturnSetup, T1>(setup: (ctx: SetupFactoryContext, param1: T1) => InferReturnSetup, lifetime: InstanceLifetimes, typeIdentifier?: guid): (param1: T1) => InferReturnSetup;
|
|
16
17
|
export declare function defineFactory<InferReturnSetup, T1, T2>(setup: (ctx: SetupFactoryContext, param1: T1, param2: T2) => InferReturnSetup, lifetime: InstanceLifetimes, typeIdentifier?: string): (param1: T1, param2: T2) => InferReturnSetup;
|
|
17
18
|
export declare function defineFactory<InferReturnSetup, T1, T2, T3>(setup: (ctx: SetupFactoryContext, param1: T1, param2: T2, param3: T3) => InferReturnSetup, lifetime: InstanceLifetimes, typeIdentifier?: guid): (param1: T1, param2: T2, param3: T3) => InferReturnSetup;
|
package/dist/di/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/di/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/di/factory.ts"],"names":[],"mappings":"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"}
|