@toyz/loom 0.19.9 → 0.20.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/app.d.ts +64 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +123 -3
- package/dist/app.js.map +1 -1
- package/dist/di/decorators.d.ts +3 -51
- package/dist/di/decorators.d.ts.map +1 -1
- package/dist/di/decorators.js +3 -73
- package/dist/di/decorators.js.map +1 -1
- package/dist/di/index.d.ts +4 -3
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +5 -4
- package/dist/di/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/app.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom — Application entry point
|
|
2
|
+
* Loom — Application entry point + DI container
|
|
3
3
|
*
|
|
4
4
|
* Boots the render loop, instantiates @service singletons,
|
|
5
5
|
* runs @factory methods, and registers @component custom elements.
|
|
6
|
+
* Also exports DI decorators: @service, @inject, @maybe, @factory.
|
|
6
7
|
*
|
|
7
8
|
* ```ts
|
|
8
|
-
* import { app } from "loom";
|
|
9
|
+
* import { app, service, inject } from "loom";
|
|
9
10
|
*
|
|
10
11
|
* app
|
|
11
12
|
* .use(natsConnection)
|
|
@@ -54,6 +55,14 @@ declare class LoomApp {
|
|
|
54
55
|
get<T = any>(key: any): T;
|
|
55
56
|
/** Retrieve a provider/service — returns LoomResult instead of undefined. */
|
|
56
57
|
maybe<T = any>(key: any): LoomResult<T, Error>;
|
|
58
|
+
/** Check if a provider is registered. */
|
|
59
|
+
has(key: any): boolean;
|
|
60
|
+
/** Replace an existing provider. Useful for testing / hot-swap. */
|
|
61
|
+
replace<T = any>(key: any, value: T): this;
|
|
62
|
+
/** Full container reset — providers, services, factories, components. */
|
|
63
|
+
reset(): void;
|
|
64
|
+
/** List all registered provider keys (debug / inspection). */
|
|
65
|
+
keys(): any[];
|
|
57
66
|
/** Resolve @inject parameter metadata for a constructor or method. */
|
|
58
67
|
private resolveParams;
|
|
59
68
|
/**
|
|
@@ -84,4 +93,57 @@ declare class LoomApp {
|
|
|
84
93
|
/** Module-level singleton — the Loom app instance */
|
|
85
94
|
export declare const app: LoomApp;
|
|
86
95
|
export type { LoomApp };
|
|
96
|
+
/**
|
|
97
|
+
* Auto-instantiated singleton. Registered on app.start().
|
|
98
|
+
* Optionally accepts a minification-safe name.
|
|
99
|
+
*
|
|
100
|
+
* ```ts
|
|
101
|
+
* @service
|
|
102
|
+
* class BookmarkStore extends CollectionStore<Bookmark> { ... }
|
|
103
|
+
*
|
|
104
|
+
* @service("UserService")
|
|
105
|
+
* class UserService { ... }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare const service: (name?: string | undefined) => (value: Function, context: ClassDecoratorContext) => void;
|
|
109
|
+
/**
|
|
110
|
+
* Resolve the display name for a service class.
|
|
111
|
+
* Returns the @service("name") value if present, otherwise class.name.
|
|
112
|
+
*/
|
|
113
|
+
export declare function resolveServiceName(cls: new (...args: any[]) => any): string;
|
|
114
|
+
/**
|
|
115
|
+
* Property-mode dependency injection via auto-accessor.
|
|
116
|
+
* Resolves lazily from the DI container on first access.
|
|
117
|
+
* Throws if the provider is not registered — use @maybe for optional.
|
|
118
|
+
*
|
|
119
|
+
* ```ts
|
|
120
|
+
* @inject(AuthService) accessor auth!: AuthService;
|
|
121
|
+
* @inject("AuthService") accessor auth!: AuthService;
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function inject<T = unknown>(key: (new (...args: unknown[]) => T) | string): <This extends object>(_target: ClassAccessorDecoratorTarget<This, T>, _context: ClassAccessorDecoratorContext<This, T>) => ClassAccessorDecoratorResult<This, T>;
|
|
125
|
+
/**
|
|
126
|
+
* Optional dependency injection. Returns `undefined` if the provider
|
|
127
|
+
* is not registered, instead of throwing.
|
|
128
|
+
*
|
|
129
|
+
* ```ts
|
|
130
|
+
* @maybe(AnalyticsService) accessor analytics?: AnalyticsService;
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function maybe<T = unknown>(key: (new (...args: unknown[]) => T) | string): <This extends object>(_target: ClassAccessorDecoratorTarget<This, T | undefined>, _context: ClassAccessorDecoratorContext<This, T | undefined>) => ClassAccessorDecoratorResult<This, T | undefined>;
|
|
134
|
+
/**
|
|
135
|
+
* Method decorator on @service classes.
|
|
136
|
+
* Return value is registered as a provider on app.start().
|
|
137
|
+
*
|
|
138
|
+
* ```ts
|
|
139
|
+
* @service
|
|
140
|
+
* class Boot {
|
|
141
|
+
* @factory(ChatServiceNatsClient)
|
|
142
|
+
* createChat() {
|
|
143
|
+
* return new ChatServiceNatsClient(app.get(NatsConnection));
|
|
144
|
+
* }
|
|
145
|
+
* }
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare const factory: (key?: unknown) => (method: Function, context: ClassMethodDecoratorContext) => void;
|
|
87
149
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom — Application entry point
|
|
2
|
+
* Loom — Application entry point + DI container
|
|
3
3
|
*
|
|
4
4
|
* Boots the render loop, instantiates @service singletons,
|
|
5
5
|
* runs @factory methods, and registers @component custom elements.
|
|
6
|
+
* Also exports DI decorators: @service, @inject, @maybe, @factory.
|
|
6
7
|
*
|
|
7
8
|
* ```ts
|
|
8
|
-
* import { app } from "loom";
|
|
9
|
+
* import { app, service, inject } from "loom";
|
|
9
10
|
*
|
|
10
11
|
* app
|
|
11
12
|
* .use(natsConnection)
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
*/
|
|
16
17
|
import { renderLoop } from "./render-loop";
|
|
17
18
|
import { INJECT_PARAMS, ON_HANDLERS, SERVICE_NAME } from "./decorators/symbols";
|
|
19
|
+
import { createDecorator } from "./decorators/create";
|
|
18
20
|
import { bus } from "./bus";
|
|
19
21
|
import { LoomResult } from "./result";
|
|
20
22
|
import { hasStart, hasStop, hasSuspend, hasResume } from "./lifecycle";
|
|
@@ -64,7 +66,9 @@ class LoomApp {
|
|
|
64
66
|
// ── Registration (called by decorators) ──
|
|
65
67
|
/** Queue a @service class for auto-instantiation on start() */
|
|
66
68
|
registerService(ctor) {
|
|
67
|
-
this.services.
|
|
69
|
+
if (!this.services.includes(ctor)) {
|
|
70
|
+
this.services.push(ctor);
|
|
71
|
+
}
|
|
68
72
|
}
|
|
69
73
|
/** Queue a @factory method for invocation on start() */
|
|
70
74
|
registerFactory(key, info) {
|
|
@@ -95,6 +99,31 @@ class LoomApp {
|
|
|
95
99
|
return LoomResult.ok(v);
|
|
96
100
|
return LoomResult.err(new Error(`[loom] no provider for ${key?.name ?? key}`));
|
|
97
101
|
}
|
|
102
|
+
/** Check if a provider is registered. */
|
|
103
|
+
has(key) {
|
|
104
|
+
return this.providers.has(key);
|
|
105
|
+
}
|
|
106
|
+
/** Replace an existing provider. Useful for testing / hot-swap. */
|
|
107
|
+
replace(key, value) {
|
|
108
|
+
this.providers.set(key, value);
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
/** Full container reset — providers, services, factories, components. */
|
|
112
|
+
reset() {
|
|
113
|
+
this.providers.clear();
|
|
114
|
+
this.services.length = 0;
|
|
115
|
+
this.factories.length = 0;
|
|
116
|
+
this.components.length = 0;
|
|
117
|
+
this._started = false;
|
|
118
|
+
if (this._visibilityCleanup) {
|
|
119
|
+
this._visibilityCleanup();
|
|
120
|
+
this._visibilityCleanup = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** List all registered provider keys (debug / inspection). */
|
|
124
|
+
keys() {
|
|
125
|
+
return [...this.providers.keys()];
|
|
126
|
+
}
|
|
98
127
|
/** Resolve @inject parameter metadata for a constructor or method. */
|
|
99
128
|
resolveParams(proto, method) {
|
|
100
129
|
const meta = proto?.[INJECT_PARAMS.key] ?? [];
|
|
@@ -218,4 +247,95 @@ class LoomApp {
|
|
|
218
247
|
}
|
|
219
248
|
/** Module-level singleton — the Loom app instance */
|
|
220
249
|
export const app = new LoomApp();
|
|
250
|
+
// ── DI decorators (merged from di/decorators.ts) ──
|
|
251
|
+
/**
|
|
252
|
+
* Auto-instantiated singleton. Registered on app.start().
|
|
253
|
+
* Optionally accepts a minification-safe name.
|
|
254
|
+
*
|
|
255
|
+
* ```ts
|
|
256
|
+
* @service
|
|
257
|
+
* class BookmarkStore extends CollectionStore<Bookmark> { ... }
|
|
258
|
+
*
|
|
259
|
+
* @service("UserService")
|
|
260
|
+
* class UserService { ... }
|
|
261
|
+
* ```
|
|
262
|
+
*/
|
|
263
|
+
export const service = createDecorator((ctor, name) => {
|
|
264
|
+
if (name)
|
|
265
|
+
ctor[SERVICE_NAME.key] = name;
|
|
266
|
+
// Duplicate guard — skip if already queued
|
|
267
|
+
if (!app.services.includes(ctor)) {
|
|
268
|
+
app.registerService(ctor);
|
|
269
|
+
}
|
|
270
|
+
}, { class: true });
|
|
271
|
+
/**
|
|
272
|
+
* Resolve the display name for a service class.
|
|
273
|
+
* Returns the @service("name") value if present, otherwise class.name.
|
|
274
|
+
*/
|
|
275
|
+
export function resolveServiceName(cls) {
|
|
276
|
+
return cls[SERVICE_NAME.key] ?? cls.name;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Property-mode dependency injection via auto-accessor.
|
|
280
|
+
* Resolves lazily from the DI container on first access.
|
|
281
|
+
* Throws if the provider is not registered — use @maybe for optional.
|
|
282
|
+
*
|
|
283
|
+
* ```ts
|
|
284
|
+
* @inject(AuthService) accessor auth!: AuthService;
|
|
285
|
+
* @inject("AuthService") accessor auth!: AuthService;
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
export function inject(key) {
|
|
289
|
+
return (_target, _context) => {
|
|
290
|
+
return {
|
|
291
|
+
get() {
|
|
292
|
+
return app.get(key);
|
|
293
|
+
},
|
|
294
|
+
set(_val) {
|
|
295
|
+
if (typeof console !== "undefined") {
|
|
296
|
+
console.warn(`[loom] Cannot set @inject property — injection is read-only.`);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Optional dependency injection. Returns `undefined` if the provider
|
|
304
|
+
* is not registered, instead of throwing.
|
|
305
|
+
*
|
|
306
|
+
* ```ts
|
|
307
|
+
* @maybe(AnalyticsService) accessor analytics?: AnalyticsService;
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
export function maybe(key) {
|
|
311
|
+
return (_target, _context) => {
|
|
312
|
+
return {
|
|
313
|
+
get() {
|
|
314
|
+
return app.has(key) ? app.get(key) : undefined;
|
|
315
|
+
},
|
|
316
|
+
set(_val) {
|
|
317
|
+
if (typeof console !== "undefined") {
|
|
318
|
+
console.warn(`[loom] Cannot set @maybe property — injection is read-only.`);
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
};
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Method decorator on @service classes.
|
|
326
|
+
* Return value is registered as a provider on app.start().
|
|
327
|
+
*
|
|
328
|
+
* ```ts
|
|
329
|
+
* @service
|
|
330
|
+
* class Boot {
|
|
331
|
+
* @factory(ChatServiceNatsClient)
|
|
332
|
+
* createChat() {
|
|
333
|
+
* return new ChatServiceNatsClient(app.get(NatsConnection));
|
|
334
|
+
* }
|
|
335
|
+
* }
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
338
|
+
export const factory = createDecorator((method, methodName, key) => {
|
|
339
|
+
app.registerFactory(key, { method: methodName, fn: method });
|
|
340
|
+
});
|
|
221
341
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/di/decorators.d.ts
CHANGED
|
@@ -1,55 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom — DI decorators (
|
|
2
|
+
* Loom — DI decorators (deprecated — now lives in app.ts)
|
|
3
3
|
*
|
|
4
|
-
* @
|
|
5
|
-
* Optionally accepts a minification-safe name: @service("MyService")
|
|
6
|
-
* @inject — Auto-accessor dependency injection (property mode only)
|
|
7
|
-
* @factory — Method decorator, return value registered as a provider
|
|
8
|
-
*
|
|
9
|
-
* Note: TC39 does not support parameter decorators.
|
|
10
|
-
* Use @inject as a property accessor: `@inject(Foo) accessor foo!: Foo;`
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Auto-instantiated singleton. Registered on app.start().
|
|
14
|
-
* Optionally accepts a minification-safe name.
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* @service
|
|
18
|
-
* class BookmarkStore extends CollectionStore<Bookmark> { ... }
|
|
19
|
-
*
|
|
20
|
-
* @service("UserService")
|
|
21
|
-
* class UserService { ... }
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare const service: (name?: string | undefined) => (value: Function, context: ClassDecoratorContext) => void;
|
|
25
|
-
/**
|
|
26
|
-
* Resolve the display name for a service class.
|
|
27
|
-
* Returns the @service("name") value if present, otherwise class.name.
|
|
28
|
-
*/
|
|
29
|
-
export declare function resolveServiceName(cls: new (...args: any[]) => any): string;
|
|
30
|
-
/**
|
|
31
|
-
* Property-mode dependency injection via auto-accessor.
|
|
32
|
-
* Resolves lazily from the DI container on first access.
|
|
33
|
-
*
|
|
34
|
-
* ```ts
|
|
35
|
-
* @inject(AuthService) accessor auth!: AuthService;
|
|
36
|
-
* @inject("AuthService") accessor auth!: AuthService;
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export declare function inject<T = unknown>(key: (new (...args: unknown[]) => T) | string): <This extends object>(_target: ClassAccessorDecoratorTarget<This, T>, _context: ClassAccessorDecoratorContext<This, T>) => ClassAccessorDecoratorResult<This, T>;
|
|
40
|
-
/**
|
|
41
|
-
* Method decorator on @service classes.
|
|
42
|
-
* Return value is registered as a provider on app.start().
|
|
43
|
-
*
|
|
44
|
-
* ```ts
|
|
45
|
-
* @service
|
|
46
|
-
* class Boot {
|
|
47
|
-
* @factory(ChatServiceNatsClient)
|
|
48
|
-
* createChat() {
|
|
49
|
-
* return new ChatServiceNatsClient(app.get(NatsConnection));
|
|
50
|
-
* }
|
|
51
|
-
* }
|
|
52
|
-
* ```
|
|
4
|
+
* @deprecated Import from "@toyz/loom" directly.
|
|
53
5
|
*/
|
|
54
|
-
export
|
|
6
|
+
export { service, resolveServiceName, inject, maybe, factory } from "../app";
|
|
55
7
|
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/di/decorators.js
CHANGED
|
@@ -1,77 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom — DI decorators (
|
|
2
|
+
* Loom — DI decorators (deprecated — now lives in app.ts)
|
|
3
3
|
*
|
|
4
|
-
* @
|
|
5
|
-
* Optionally accepts a minification-safe name: @service("MyService")
|
|
6
|
-
* @inject — Auto-accessor dependency injection (property mode only)
|
|
7
|
-
* @factory — Method decorator, return value registered as a provider
|
|
8
|
-
*
|
|
9
|
-
* Note: TC39 does not support parameter decorators.
|
|
10
|
-
* Use @inject as a property accessor: `@inject(Foo) accessor foo!: Foo;`
|
|
11
|
-
*/
|
|
12
|
-
import { app } from "../app";
|
|
13
|
-
import { createDecorator } from "../decorators/create";
|
|
14
|
-
import { SERVICE_NAME } from "../decorators/symbols";
|
|
15
|
-
/**
|
|
16
|
-
* Auto-instantiated singleton. Registered on app.start().
|
|
17
|
-
* Optionally accepts a minification-safe name.
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* @service
|
|
21
|
-
* class BookmarkStore extends CollectionStore<Bookmark> { ... }
|
|
22
|
-
*
|
|
23
|
-
* @service("UserService")
|
|
24
|
-
* class UserService { ... }
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export const service = createDecorator((ctor, name) => {
|
|
28
|
-
if (name)
|
|
29
|
-
ctor[SERVICE_NAME.key] = name;
|
|
30
|
-
app.registerService(ctor);
|
|
31
|
-
}, { class: true });
|
|
32
|
-
/**
|
|
33
|
-
* Resolve the display name for a service class.
|
|
34
|
-
* Returns the @service("name") value if present, otherwise class.name.
|
|
35
|
-
*/
|
|
36
|
-
export function resolveServiceName(cls) {
|
|
37
|
-
return cls[SERVICE_NAME.key] ?? cls.name;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Property-mode dependency injection via auto-accessor.
|
|
41
|
-
* Resolves lazily from the DI container on first access.
|
|
42
|
-
*
|
|
43
|
-
* ```ts
|
|
44
|
-
* @inject(AuthService) accessor auth!: AuthService;
|
|
45
|
-
* @inject("AuthService") accessor auth!: AuthService;
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export function inject(key) {
|
|
49
|
-
return (_target, _context) => {
|
|
50
|
-
return {
|
|
51
|
-
get() {
|
|
52
|
-
return app.get(key);
|
|
53
|
-
},
|
|
54
|
-
set(_val) {
|
|
55
|
-
// Injection is read-only
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Method decorator on @service classes.
|
|
62
|
-
* Return value is registered as a provider on app.start().
|
|
63
|
-
*
|
|
64
|
-
* ```ts
|
|
65
|
-
* @service
|
|
66
|
-
* class Boot {
|
|
67
|
-
* @factory(ChatServiceNatsClient)
|
|
68
|
-
* createChat() {
|
|
69
|
-
* return new ChatServiceNatsClient(app.get(NatsConnection));
|
|
70
|
-
* }
|
|
71
|
-
* }
|
|
72
|
-
* ```
|
|
4
|
+
* @deprecated Import from "@toyz/loom" directly.
|
|
73
5
|
*/
|
|
74
|
-
export
|
|
75
|
-
app.registerFactory(key, { method: methodName, fn: method });
|
|
76
|
-
});
|
|
6
|
+
export { service, resolveServiceName, inject, maybe, factory } from "../app";
|
|
77
7
|
//# sourceMappingURL=decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/di/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom DI —
|
|
2
|
+
* Loom DI — Deprecated barrel (re-exports from app.ts)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* @deprecated Import from "@toyz/loom" or "@toyz/loom/store" instead.
|
|
5
|
+
* This subpath is kept for backwards compatibility.
|
|
5
6
|
*/
|
|
6
|
-
export { service, resolveServiceName, inject, factory } from "
|
|
7
|
+
export { service, resolveServiceName, inject, maybe, factory } from "../app";
|
|
7
8
|
export { SERVICE_NAME } from "../decorators/symbols";
|
|
8
9
|
export { watch } from "./watch";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/di/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/di/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loom DI —
|
|
2
|
+
* Loom DI — Deprecated barrel (re-exports from app.ts)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* @deprecated Import from "@toyz/loom" or "@toyz/loom/store" instead.
|
|
5
|
+
* This subpath is kept for backwards compatibility.
|
|
5
6
|
*/
|
|
6
|
-
// DI decorators
|
|
7
|
-
export { service, resolveServiceName, inject, factory } from "
|
|
7
|
+
// DI decorators (now live in app.ts)
|
|
8
|
+
export { service, resolveServiceName, inject, maybe, factory } from "../app";
|
|
8
9
|
export { SERVICE_NAME } from "../decorators/symbols";
|
|
9
10
|
// DI-aware watch
|
|
10
11
|
export { watch } from "./watch";
|
package/dist/di/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,iBAAiB;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @toyz/loom/element — form, lazy, slot, transition, hotkey, portal, log, provide, consume, etc.
|
|
10
10
|
* @toyz/loom/query — api, intercept, createApiState
|
|
11
11
|
*/
|
|
12
|
-
export { app } from "./app";
|
|
12
|
+
export { app, service, inject, maybe, factory, resolveServiceName } from "./app";
|
|
13
13
|
export type { LoomApp } from "./app";
|
|
14
14
|
export { LoomEvent } from "./event";
|
|
15
15
|
export { EventBus, bus, useBus } from "./bus";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AACjF,YAAY,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAI1E,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC9C,KAAK,aAAa,EAAE,KAAK,gBAAgB,EACzC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GACtD,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @toyz/loom/element — form, lazy, slot, transition, hotkey, portal, log, provide, consume, etc.
|
|
10
10
|
* @toyz/loom/query — api, intercept, createApiState
|
|
11
11
|
*/
|
|
12
|
-
// App entry point
|
|
13
|
-
export { app } from "./app";
|
|
12
|
+
// App entry point + DI
|
|
13
|
+
export { app, service, inject, maybe, factory, resolveServiceName } from "./app";
|
|
14
14
|
// Event system
|
|
15
15
|
export { LoomEvent } from "./event";
|
|
16
16
|
export { EventBus, bus, useBus } from "./bus";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uBAAuB;AACvB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGjF,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG9C,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wDAAwD;AACxD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,4EAA4E;AAE5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1E,8CAA8C;AAE9C,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAE9C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GACtD,MAAM,WAAW,CAAC;AAEnB,+CAA+C;AAE/C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpG,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|