@fluojs/core 1.0.0-beta.4 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +7 -7
- package/README.md +7 -7
- package/dist/decorators.d.ts +3 -3
- package/dist/decorators.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/metadata/types.d.ts +2 -2
- package/dist/metadata/types.d.ts.map +1 -1
- package/dist/types.d.ts +28 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -70,7 +70,7 @@ ensureMetadataSymbol();
|
|
|
70
70
|
|
|
71
71
|
### 명시적인 의존성 메타데이터
|
|
72
72
|
|
|
73
|
-
`@Inject(...)`는 리플렉션 기반 추론 대신 코드 안에서 의존성 토큰을 직접 드러냅니다. 상속된 constructor 토큰을 명시적으로 비우려면 `@Inject()`를 사용하면 됩니다.
|
|
73
|
+
`@Inject(...)`는 리플렉션 기반 추론 대신 코드 안에서 의존성 토큰을 직접 드러냅니다. 이 데코레이터는 표준 클래스 데코레이터이므로 constructor parameter나 property가 아니라 생성자 토큰을 선언할 클래스 위에 붙입니다. 상속된 constructor 토큰을 명시적으로 비우려면 `@Inject()`를 사용하면 됩니다.
|
|
74
74
|
|
|
75
75
|
```ts
|
|
76
76
|
const CONFIG_TOKEN = Symbol('CONFIG_TOKEN');
|
|
@@ -81,16 +81,16 @@ class UsesConfigValue {
|
|
|
81
81
|
}
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
여러 constructor 토큰은 `@Inject(A, B)`처럼 variadic 호출로 지정하면 dependency metadata가 표준 데코레이터 사용 방식과 맞게 유지됩니다. `@Inject([A, B])` 배열 형태도 허용되지만, 새 코드는 variadic 형태를 사용하는 것이 좋습니다.
|
|
84
|
+
여러 constructor 토큰은 `@Inject(A, B)`처럼 variadic 호출로 지정하면 dependency metadata가 표준 데코레이터 사용 방식과 맞게 유지됩니다. `@Inject([A, B])` 배열 형태도 허용되지만, 새 코드는 variadic 형태를 사용하는 것이 좋습니다. 데코레이션 시점에 아직 사용할 수 없는 토큰은 해당 토큰만 `forwardRef(...)`로 감싸고, 없어도 되는 의존성은 해당 토큰만 `optional(...)`로 감쌉니다.
|
|
85
85
|
|
|
86
86
|
### 형제 패키지를 위한 공용 메타데이터 헬퍼
|
|
87
87
|
|
|
88
|
-
내부 메타데이터 reader/writer는 `@fluojs/core/internal` 아래에 있으며, `@fluojs/di`, `@fluojs/http`, `@fluojs/runtime` 같은 패키지들이 같은 메타데이터 모델을 공유할 수 있게 합니다.
|
|
88
|
+
`getModuleMetadata()`는 테스트와 도구에서 read-only 모듈 inspection을 할 수 있도록 공개 루트 엔트리포인트에서 사용할 수 있습니다. 더 넓은 내부 메타데이터 reader/writer는 `@fluojs/core/internal` 아래에 있으며, `@fluojs/di`, `@fluojs/http`, `@fluojs/runtime` 같은 패키지들이 같은 메타데이터 모델을 공유할 수 있게 합니다.
|
|
89
89
|
|
|
90
|
-
애플리케이션 코드는 공개
|
|
90
|
+
애플리케이션 코드는 공개 데코레이터, `ensureMetadataSymbol()`, read-only module metadata inspection을 `@fluojs/core`에서 import해야 합니다. `@fluojs/core/internal` 서브패스는 메타데이터 레코드, 컨트롤러/라우트 헬퍼, injection/validation 헬퍼, clone 유틸리티가 필요한 fluo 패키지를 위한 경로입니다. 표준 metadata bag helper는 current/native `Symbol.metadata`와 fallback symbol이 섞인 lookup을 처리합니다. 어느 era에서 온 own metadata든 같은 key에 대해서는 어느 era에서 온 inherited metadata보다 우선하지만, child가 다른 key만 소유한 경우 parent constructor의 inherited key는 계속 보입니다. DI와 모듈 그래프 hot path의 allocation을 줄이기 위해 `getModuleMetadata()`, `getOwnClassDiMetadata()`, `getInheritedClassDiMetadata()`, `getClassDiMetadata()`는 frozen snapshot을 반환하며 write 사이에는 같은 reference를 재사용할 수 있습니다. 이 결과, collection 필드, module provider descriptor wrapper와 middleware route-config wrapper(그 안의 `routes` 배열 포함)는 immutable로 취급해야 합니다. `useValue` payload 객체와 runtime middleware/guard/interceptor instance는 mutable reference로 유지되며 이 snapshot 때문에 freeze되지 않습니다. 다른 metadata reader는 각 reader의 테스트가 stable-reference 재사용을 문서화하지 않는 한 기존 defensive-read 동작을 유지합니다.
|
|
91
91
|
|
|
92
92
|
```ts
|
|
93
|
-
import { getModuleMetadata } from '@fluojs/core
|
|
93
|
+
import { getModuleMetadata } from '@fluojs/core';
|
|
94
94
|
|
|
95
95
|
const metadata = getModuleMetadata(AppModule);
|
|
96
96
|
console.log(metadata.providers);
|
|
@@ -159,8 +159,8 @@ class Logger {}
|
|
|
159
159
|
|
|
160
160
|
- **데코레이터**: `Module`, `Global`, `Inject`, `Scope`
|
|
161
161
|
- **에러**: `FluoError`, `InvariantError`, `FluoCodeError`, `FluoErrorOptions`, `formatTokenName`
|
|
162
|
-
- **메타데이터 런타임**: `ensureMetadataSymbol`
|
|
163
|
-
- **타입**: `Constructor<T>`, `Token<T>`, `MaybePromise<T>`, `AsyncModuleOptions`, `MetadataPropertyKey`, `MetadataSource`
|
|
162
|
+
- **메타데이터 런타임**: `ensureMetadataSymbol`, `getModuleMetadata`
|
|
163
|
+
- **타입**: `Constructor<T>`, `Token<T>`, `InjectionToken<T>`, `ForwardRefToken<T>`, `OptionalInjectToken<T>`, `MaybePromise<T>`, `AsyncModuleOptions`, `MetadataPropertyKey`, `MetadataSource`
|
|
164
164
|
- **내부 서브패스**: `@fluojs/core/internal`을 통한 메타데이터 헬퍼, 컨트롤러/라우트 헬퍼, injection 헬퍼, validation 헬퍼, clone 유틸리티
|
|
165
165
|
|
|
166
166
|
## 관련 패키지
|
package/README.md
CHANGED
|
@@ -72,7 +72,7 @@ ensureMetadataSymbol();
|
|
|
72
72
|
|
|
73
73
|
### Explicit dependency metadata
|
|
74
74
|
|
|
75
|
-
`@Inject(...)` keeps dependency wiring visible in code instead of relying on emitted reflection metadata. Call `@Inject()` when you want to record an explicit empty override for inherited constructor tokens.
|
|
75
|
+
`@Inject(...)` keeps dependency wiring visible in code instead of relying on emitted reflection metadata. It is a standard class decorator: place it on the class whose constructor tokens you are declaring, not on constructor parameters or properties. Call `@Inject()` when you want to record an explicit empty override for inherited constructor tokens.
|
|
76
76
|
|
|
77
77
|
```ts
|
|
78
78
|
const CONFIG_TOKEN = Symbol('CONFIG_TOKEN');
|
|
@@ -83,16 +83,16 @@ class UsesConfigValue {
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
Pass multiple constructor tokens as variadic arguments, such as `@Inject(A, B)`, so dependency metadata stays aligned with standard decorator usage. The array form `@Inject([A, B])` is also accepted, but new code should prefer the variadic form.
|
|
86
|
+
Pass multiple constructor tokens as variadic arguments, such as `@Inject(A, B)`, so dependency metadata stays aligned with standard decorator usage. The array form `@Inject([A, B])` is also accepted, but new code should prefer the variadic form. If a token is unavailable at decoration time, wrap that one token with `forwardRef(...)`; if a dependency may be absent, wrap that token with `optional(...)`.
|
|
87
87
|
|
|
88
88
|
### Shared metadata helpers for sibling packages
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
`getModuleMetadata()` is available from the public root entrypoint for read-only module inspection in tests and tooling. Broader internal readers and writers live under `@fluojs/core/internal`, which is how packages like `@fluojs/di`, `@fluojs/http`, and `@fluojs/runtime` consume the same metadata model.
|
|
91
91
|
|
|
92
|
-
Application code should import public decorators
|
|
92
|
+
Application code should import public decorators, `ensureMetadataSymbol()`, and read-only module metadata inspection from `@fluojs/core`. The `@fluojs/core/internal` subpath is reserved for fluo packages that need metadata records, controller/route helpers, injection and validation helpers, or clone utilities. Standard metadata bag helpers handle mixed-era lookups across current/native `Symbol.metadata` and the fallback symbol: own metadata from either era overrides inherited metadata from either era for the same key, while inherited keys from parent constructors remain visible when the child owns a different key. To reduce DI and module-graph hot-path allocations, `getModuleMetadata()`, `getOwnClassDiMetadata()`, `getInheritedClassDiMetadata()`, and `getClassDiMetadata()` return frozen snapshots and may reuse the same reference between writes. Treat those results, their collection fields, module provider descriptor wrappers, and middleware route-config wrappers (including their `routes` arrays) as immutable. `useValue` payload objects and runtime middleware/guard/interceptor instances remain mutable references and are not frozen by these snapshots. Other metadata readers keep their existing defensive-read behavior unless their own tests document stable-reference reuse.
|
|
93
93
|
|
|
94
94
|
```ts
|
|
95
|
-
import { getModuleMetadata } from '@fluojs/core
|
|
95
|
+
import { getModuleMetadata } from '@fluojs/core';
|
|
96
96
|
|
|
97
97
|
const metadata = getModuleMetadata(AppModule);
|
|
98
98
|
console.log(metadata.providers);
|
|
@@ -161,8 +161,8 @@ Standard decorators cannot automatically infer types for abstract classes or int
|
|
|
161
161
|
|
|
162
162
|
- **Decorators**: `Module`, `Global`, `Inject`, `Scope`
|
|
163
163
|
- **Errors**: `FluoError`, `InvariantError`, `FluoCodeError`, `FluoErrorOptions`, `formatTokenName`
|
|
164
|
-
- **Metadata runtime**: `ensureMetadataSymbol`
|
|
165
|
-
- **Types**: `Constructor<T>`, `Token<T>`, `MaybePromise<T>`, `AsyncModuleOptions`, `MetadataPropertyKey`, `MetadataSource`
|
|
164
|
+
- **Metadata runtime**: `ensureMetadataSymbol`, `getModuleMetadata`
|
|
165
|
+
- **Types**: `Constructor<T>`, `Token<T>`, `InjectionToken<T>`, `ForwardRefToken<T>`, `OptionalInjectToken<T>`, `MaybePromise<T>`, `AsyncModuleOptions`, `MetadataPropertyKey`, `MetadataSource`
|
|
166
166
|
- **Internal subpath**: metadata helpers, controller/route helpers, injection helpers, validation helpers, and clone utilities via `@fluojs/core/internal`
|
|
167
167
|
|
|
168
168
|
## Related Packages
|
package/dist/decorators.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ClassDiMetadata, type ModuleMetadata } from './metadata.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { InjectionToken } from './types.js';
|
|
3
3
|
type StandardClassDecoratorFn = (value: Function, context: ClassDecoratorContext) => void;
|
|
4
4
|
type TupleOnly<T extends readonly unknown[]> = number extends T['length'] ? never : T;
|
|
5
5
|
/**
|
|
@@ -32,14 +32,14 @@ export declare function Inject(): StandardClassDecoratorFn;
|
|
|
32
32
|
* @param tokens Constructor-parameter token list used by `@fluojs/di` during dependency resolution.
|
|
33
33
|
* @returns A standard class decorator that stores explicit injection metadata on the target class.
|
|
34
34
|
*/
|
|
35
|
-
export declare function Inject<const TTokens extends readonly
|
|
35
|
+
export declare function Inject<const TTokens extends readonly InjectionToken[]>(...tokens: TupleOnly<TTokens>): StandardClassDecoratorFn;
|
|
36
36
|
/**
|
|
37
37
|
* Defines explicit constructor injection tokens for the decorated class.
|
|
38
38
|
*
|
|
39
39
|
* @param tokens Constructor-parameter token list used by `@fluojs/di` during dependency resolution.
|
|
40
40
|
* @returns A standard class decorator that stores explicit injection metadata on the target class.
|
|
41
41
|
*/
|
|
42
|
-
export declare function Inject(tokens: readonly
|
|
42
|
+
export declare function Inject(tokens: readonly InjectionToken[]): StandardClassDecoratorFn;
|
|
43
43
|
/**
|
|
44
44
|
* Sets the provider lifecycle scope used by the DI container.
|
|
45
45
|
*
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,KAAK,wBAAwB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE1F,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAEtF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,wBAAwB,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,wBAAwB,CAIjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,IAAI,wBAAwB,CAAC;AACnD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,cAAc,EAAE,EACpE,GAAG,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,GAC5B,wBAAwB,CAAC;AAC5B;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,wBAAwB,CAAC;AAiBpF;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,wBAAwB,CAI5F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Global, Inject, Module, Scope } from './decorators.js';
|
|
2
2
|
export { InvariantError, FluoCodeError, FluoError, formatTokenName, type FluoErrorOptions } from './errors.js';
|
|
3
|
-
export { ensureMetadataSymbol } from './metadata.js';
|
|
4
|
-
export type { AsyncModuleOptions, Constructor, MaybePromise, MetadataPropertyKey, MetadataSource, Token } from './types.js';
|
|
3
|
+
export { ensureMetadataSymbol, getModuleMetadata } from './metadata.js';
|
|
4
|
+
export type { AsyncModuleOptions, Constructor, ForwardRefToken, InjectionToken, MaybePromise, MetadataPropertyKey, MetadataSource, OptionalInjectToken, Token, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,KAAK,GACN,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Global, Inject, Module, Scope } from './decorators.js';
|
|
2
2
|
export { InvariantError, FluoCodeError, FluoError, formatTokenName } from './errors.js';
|
|
3
|
-
export { ensureMetadataSymbol } from './metadata.js';
|
|
3
|
+
export { ensureMetadataSymbol, getModuleMetadata } from './metadata.js';
|
package/dist/metadata/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Constructor, MaybePromise, MetadataPropertyKey, MetadataSource, Token } from '../types.js';
|
|
1
|
+
import type { Constructor, InjectionToken, MaybePromise, MetadataPropertyKey, MetadataSource, Token } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Defines the metadata collection type.
|
|
4
4
|
*/
|
|
@@ -235,7 +235,7 @@ export interface InjectionMetadata {
|
|
|
235
235
|
* Describes the class di metadata contract.
|
|
236
236
|
*/
|
|
237
237
|
export interface ClassDiMetadata {
|
|
238
|
-
inject?:
|
|
238
|
+
inject?: InjectionToken[];
|
|
239
239
|
scope?: 'singleton' | 'request' | 'transient';
|
|
240
240
|
}
|
|
241
241
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/metadata/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -16,6 +16,33 @@ export type Constructor<T = unknown> = new (...args: any[]) => T;
|
|
|
16
16
|
* interface-like or cross-package registrations where no concrete class should leak.
|
|
17
17
|
*/
|
|
18
18
|
export type Token<T = unknown> = string | symbol | Constructor<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Deferred dependency-token wrapper accepted inside injection metadata.
|
|
21
|
+
*
|
|
22
|
+
* `@fluojs/di` creates this shape with `forwardRef(...)` so class decorators can
|
|
23
|
+
* record tokens that are not available at decoration time without widening provider tokens.
|
|
24
|
+
*/
|
|
25
|
+
export interface ForwardRefToken<T = unknown> {
|
|
26
|
+
__forwardRef__: true;
|
|
27
|
+
forwardRef: () => Token<T>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Optional dependency-token wrapper accepted inside injection metadata.
|
|
31
|
+
*
|
|
32
|
+
* `@fluojs/di` creates this shape with `optional(...)` so required and optional
|
|
33
|
+
* constructor dependencies can share the same class-level `@Inject(...)` list.
|
|
34
|
+
*/
|
|
35
|
+
export interface OptionalInjectToken<T = unknown> {
|
|
36
|
+
__optional__: true;
|
|
37
|
+
token: Token<T>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Constructor dependency entry accepted by `@Inject(...)` and provider inject arrays.
|
|
41
|
+
*
|
|
42
|
+
* Plain `Token` values register required dependencies, while `ForwardRefToken` and
|
|
43
|
+
* `OptionalInjectToken` preserve documented `forwardRef(...)` and `optional(...)` wrappers.
|
|
44
|
+
*/
|
|
45
|
+
export type InjectionToken<T = unknown> = Token<T> | ForwardRefToken<T> | OptionalInjectToken<T>;
|
|
19
46
|
/**
|
|
20
47
|
* Value that may be returned synchronously or wrapped in a `Promise`.
|
|
21
48
|
*
|
|
@@ -29,7 +56,7 @@ export type MaybePromise<T> = T | Promise<T>;
|
|
|
29
56
|
* @typeParam T Resolved options shape returned to the module factory.
|
|
30
57
|
*/
|
|
31
58
|
export interface AsyncModuleOptions<T> {
|
|
32
|
-
inject?:
|
|
59
|
+
inject?: InjectionToken[];
|
|
33
60
|
useFactory: (...deps: unknown[]) => MaybePromise<T>;
|
|
34
61
|
}
|
|
35
62
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,cAAc,EAAE,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,YAAY,EAAE,IAAI,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC"}
|