@xylabs/creatable 5.0.65 → 5.0.67
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/neutral/AbstractCreatable.d.ts +3 -1
- package/dist/neutral/AbstractCreatable.d.ts.map +1 -1
- package/dist/neutral/AbstractCreatableV2.d.ts +62 -0
- package/dist/neutral/AbstractCreatableV2.d.ts.map +1 -0
- package/dist/neutral/Creatable.d.ts +5 -0
- package/dist/neutral/Creatable.d.ts.map +1 -1
- package/dist/neutral/CreatableV2.d.ts +31 -0
- package/dist/neutral/CreatableV2.d.ts.map +1 -0
- package/dist/neutral/FactoryV2.d.ts +11 -0
- package/dist/neutral/FactoryV2.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +3 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +294 -0
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/model/CreatableInstance.d.ts +2 -1
- package/dist/neutral/model/CreatableInstance.d.ts.map +1 -1
- package/dist/neutral/model/CreatableInstanceV2.d.ts +14 -0
- package/dist/neutral/model/CreatableInstanceV2.d.ts.map +1 -0
- package/dist/neutral/model/CreatableName.d.ts +5 -0
- package/dist/neutral/model/CreatableName.d.ts.map +1 -0
- package/dist/neutral/model/CreatableParams.d.ts +1 -2
- package/dist/neutral/model/CreatableParams.d.ts.map +1 -1
- package/dist/neutral/model/CreatableParamsV2.d.ts +68 -0
- package/dist/neutral/model/CreatableParamsV2.d.ts.map +1 -0
- package/dist/neutral/model/CreatableStatusReporter.d.ts +7 -4
- package/dist/neutral/model/CreatableStatusReporter.d.ts.map +1 -1
- package/dist/neutral/model/CreatableStatusReporter.zod.d.ts +44 -0
- package/dist/neutral/model/CreatableStatusReporter.zod.d.ts.map +1 -0
- package/dist/neutral/model/CreatableStatusReporterV2.d.ts +7 -0
- package/dist/neutral/model/CreatableStatusReporterV2.d.ts.map +1 -0
- package/dist/neutral/model/index.d.ts +5 -0
- package/dist/neutral/model/index.d.ts.map +1 -1
- package/package.json +15 -9
- package/src/AbstractCreatable.ts +3 -1
- package/src/AbstractCreatableV2.ts +270 -0
- package/src/Creatable.ts +5 -0
- package/src/CreatableV2.ts +67 -0
- package/src/FactoryV2.ts +38 -0
- package/src/index.ts +3 -0
- package/src/model/CreatableInstance.ts +2 -1
- package/src/model/CreatableInstanceV2.ts +16 -0
- package/src/model/CreatableName.ts +3 -0
- package/src/model/CreatableParams.ts +1 -3
- package/src/model/CreatableParamsV2.ts +11 -0
- package/src/model/CreatableStatusReporter.ts +8 -4
- package/src/model/CreatableStatusReporter.zod.ts +31 -0
- package/src/model/CreatableStatusReporterV2.ts +11 -0
- package/src/model/index.ts +5 -0
|
@@ -4,7 +4,9 @@ import { type Logger } from '@xylabs/logger';
|
|
|
4
4
|
import type { Promisable } from '@xylabs/promise';
|
|
5
5
|
import { SpanConfig } from '@xylabs/telemetry';
|
|
6
6
|
import { type Creatable, CreatableFactory } from './Creatable.ts';
|
|
7
|
-
import
|
|
7
|
+
import { CreatableName } from './model/CreatableName.ts';
|
|
8
|
+
import type { CreatableInstance, CreatableParams, CreatableStatus, Labels, RequiredCreatableParams } from './model/index.ts';
|
|
9
|
+
/** @deprecated use AbstractCreatableV2 instead */
|
|
8
10
|
export declare class AbstractCreatable<TParams extends CreatableParams = CreatableParams, TEventData extends EventData = EventData> extends BaseEmitter<Partial<TParams & RequiredCreatableParams>, TEventData> {
|
|
9
11
|
defaultLogger?: Logger;
|
|
10
12
|
protected _startPromise: Promisable<boolean> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractCreatable.d.ts","sourceRoot":"","sources":["../../src/AbstractCreatable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EACL,UAAU,EACX,MAAM,mBAAmB,CAAA;AAO1B,OAAO,EACL,KAAK,SAAS,EAAa,gBAAgB,EAC5C,MAAM,gBAAgB,CAAA;AAGvB,OAAO,KAAK,EACV,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"AbstractCreatable.d.ts","sourceRoot":"","sources":["../../src/AbstractCreatable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { BaseEmitterParamsV2, EventData } from '@xylabs/events';
|
|
2
|
+
import { BaseEmitterV2 } from '@xylabs/events';
|
|
3
|
+
import { type Logger } from '@xylabs/logger';
|
|
4
|
+
import type { Promisable } from '@xylabs/promise';
|
|
5
|
+
import type { SpanConfig } from '@xylabs/telemetry';
|
|
6
|
+
import type { CreatableFactoryV2, CreatableV2 } from './CreatableV2.ts';
|
|
7
|
+
import type { CreatableInstanceV2, CreatableName, CreatableParamsV2, CreatableStatusV2, Labels } from './model/index.ts';
|
|
8
|
+
export declare abstract class AbstractCreatableV2<TParams extends CreatableParamsV2 = CreatableParamsV2, TEventData extends EventData = EventData> extends BaseEmitterV2<TParams, TEventData> {
|
|
9
|
+
defaultLogger?: Logger;
|
|
10
|
+
protected _startPromise: Promisable<boolean> | undefined;
|
|
11
|
+
private _status;
|
|
12
|
+
private _statusMutex;
|
|
13
|
+
private _validatedParams?;
|
|
14
|
+
constructor(key: unknown, params: TParams);
|
|
15
|
+
get context(): TParams['context'] & BaseEmitterParamsV2['context'];
|
|
16
|
+
get name(): CreatableName;
|
|
17
|
+
get params(): TParams & BaseEmitterParamsV2;
|
|
18
|
+
get startable(): boolean;
|
|
19
|
+
get status(): CreatableStatusV2 | null;
|
|
20
|
+
get statusReporter(): {
|
|
21
|
+
report: import("zod/v4/core").$InferOuterFunctionType<import("zod").ZodUnion<readonly [import("zod").ZodTuple<[import("zod").ZodString, import("zod").ZodEnum<{
|
|
22
|
+
creating: "creating";
|
|
23
|
+
created: "created";
|
|
24
|
+
starting: "starting";
|
|
25
|
+
started: "started";
|
|
26
|
+
stopping: "stopping";
|
|
27
|
+
stopped: "stopped";
|
|
28
|
+
}>, import("zod").ZodOptional<import("zod").ZodNumber>], null>, import("zod").ZodTuple<[import("zod").ZodString, import("zod").ZodEnum<{
|
|
29
|
+
error: "error";
|
|
30
|
+
}>, import("zod").ZodCustom<Error, Error>], null>, import("zod").ZodTuple<[import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
|
|
31
|
+
creating: "creating";
|
|
32
|
+
created: "created";
|
|
33
|
+
starting: "starting";
|
|
34
|
+
started: "started";
|
|
35
|
+
stopping: "stopping";
|
|
36
|
+
stopped: "stopped";
|
|
37
|
+
}>, import("zod").ZodEnum<{
|
|
38
|
+
error: "error";
|
|
39
|
+
}>]>], null>]>, import("zod").ZodVoid>;
|
|
40
|
+
} | undefined;
|
|
41
|
+
abstract get className(): CreatableName;
|
|
42
|
+
static create<T extends CreatableInstanceV2>(this: CreatableV2<T>, inParams?: Partial<T['params']>): Promise<T>;
|
|
43
|
+
static createHandler<T extends CreatableInstanceV2>(this: CreatableV2<T>, instance: T): Promisable<T>;
|
|
44
|
+
static paramsHandler<T extends CreatableInstanceV2>(this: CreatableV2<T>, params?: Partial<T['params']>): Promisable<T['params']>;
|
|
45
|
+
createHandler(): Promisable<void>;
|
|
46
|
+
paramsValidator(params: Partial<TParams>): TParams;
|
|
47
|
+
span<T>(name: string, fn: () => T): T;
|
|
48
|
+
spanAsync<T>(name: string, fn: () => Promise<T>, config?: SpanConfig): Promise<T>;
|
|
49
|
+
start(): Promise<boolean>;
|
|
50
|
+
started(notStartedAction?: 'error' | 'throw' | 'warn' | 'log' | 'none'): boolean;
|
|
51
|
+
startedAsync(notStartedAction?: 'error' | 'throw' | 'warn' | 'log' | 'none', tryStart?: boolean): Promise<boolean>;
|
|
52
|
+
stop(): Promise<boolean>;
|
|
53
|
+
protected _noOverride(functionName?: string): void;
|
|
54
|
+
protected setStatus(value: Exclude<CreatableStatusV2, 'error'>, progress?: number): void;
|
|
55
|
+
protected setStatus(value: Extract<CreatableStatusV2, 'error'>, error?: Error): void;
|
|
56
|
+
protected startHandler(): Promisable<void>;
|
|
57
|
+
protected stopHandler(): Promisable<void>;
|
|
58
|
+
}
|
|
59
|
+
export declare abstract class AbstractCreatableWithFactoryV2<TParams extends CreatableParamsV2 = CreatableParamsV2, TEventData extends EventData = EventData> extends AbstractCreatableV2<TParams, TEventData> {
|
|
60
|
+
static factory<T extends CreatableInstanceV2>(this: CreatableV2<T>, params?: Partial<T['params']>, labels?: Labels): CreatableFactoryV2<T>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=AbstractCreatableV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractCreatableV2.d.ts","sourceRoot":"","sources":["../../src/AbstractCreatableV2.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,11 @@ import type { Logger } from '@xylabs/logger';
|
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
3
|
import type { AbstractCreatable } from './AbstractCreatable.ts';
|
|
4
4
|
import type { CreatableInstance, CreatableParams, Labels, RequiredCreatableParams } from './model/index.ts';
|
|
5
|
+
/** @deprecated use CreatableFactoryV2 instead */
|
|
5
6
|
export interface CreatableFactory<T extends CreatableInstance = CreatableInstance> extends Omit<Creatable<T>, 'create' | 'createHandler' | 'paramsHandler' | 'defaultLogger' | 'factory'> {
|
|
6
7
|
create(this: CreatableFactory<T>, params?: Partial<T['params']>): Promise<T>;
|
|
7
8
|
}
|
|
9
|
+
/** @deprecated use CreatableV2 instead */
|
|
8
10
|
export interface Creatable<T extends CreatableInstance = CreatableInstance> {
|
|
9
11
|
defaultLogger?: Logger;
|
|
10
12
|
new (key: unknown, params: Partial<CreatableParams>): T & AbstractCreatable<T['params']>;
|
|
@@ -12,6 +14,7 @@ export interface Creatable<T extends CreatableInstance = CreatableInstance> {
|
|
|
12
14
|
createHandler<T extends CreatableInstance>(this: Creatable<T>, instance: T): Promisable<T>;
|
|
13
15
|
paramsHandler<T extends CreatableInstance>(this: Creatable<T>, params?: Partial<T['params']>): Promisable<T['params'] & RequiredCreatableParams>;
|
|
14
16
|
}
|
|
17
|
+
/** @deprecated use CreatableWithFactoryV2 instead */
|
|
15
18
|
export interface CreatableWithFactory<T extends CreatableInstance = CreatableInstance> extends Creatable<T> {
|
|
16
19
|
factory<T extends CreatableInstance>(this: Creatable<T>, params?: Partial<T['params']>, labels?: Labels): CreatableFactory<T>;
|
|
17
20
|
}
|
|
@@ -21,6 +24,7 @@ export interface CreatableWithFactory<T extends CreatableInstance = CreatableIns
|
|
|
21
24
|
* @returns The decorated Module requiring it implement the members
|
|
22
25
|
* of the CreatableModule as statics properties/methods
|
|
23
26
|
*/
|
|
27
|
+
/** @deprecated use creatableV2 instead */
|
|
24
28
|
export declare function creatable<T extends CreatableInstance>(): <U extends Creatable<T>>(constructor: U) => void;
|
|
25
29
|
/**
|
|
26
30
|
* Class annotation to be used to decorate Modules which support
|
|
@@ -28,5 +32,6 @@ export declare function creatable<T extends CreatableInstance>(): <U extends Cre
|
|
|
28
32
|
* @returns The decorated Module requiring it implement the members
|
|
29
33
|
* of the CreatableModule as statics properties/methods
|
|
30
34
|
*/
|
|
35
|
+
/** @deprecated use creatableFactoryV2 instead */
|
|
31
36
|
export declare function creatableFactory(): <U extends CreatableFactory>(constructor: U) => void;
|
|
32
37
|
//# sourceMappingURL=Creatable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.d.ts","sourceRoot":"","sources":["../../src/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EACV,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAC1C,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CAC/E,SAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;IAEtG,MAAM,CACJ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAExE,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,KAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvF,MAAM,CAAC,CAAC,SAAS,iBAAiB,EAChC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAE5C,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,GACV,UAAU,CAAC,CAAC,CAAC,CAAA;IAEhB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAA;CACxG;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACzG,OAAO,CAAC,CAAC,SAAS,iBAAiB,EACjC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,iBAAiB,MAC3C,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,UAI/C;AAED;;;;;GAKG;AAEH,wBAAgB,gBAAgB,KACtB,CAAC,SAAS,gBAAgB,EAAE,aAAa,CAAC,UAInD"}
|
|
1
|
+
{"version":3,"file":"Creatable.d.ts","sourceRoot":"","sources":["../../src/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EACV,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAC1C,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AAEzB,iDAAiD;AACjD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CAC/E,SAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;IAEtG,MAAM,CACJ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7C;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAExE,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,KAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvF,MAAM,CAAC,CAAC,SAAS,iBAAiB,EAChC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAE5C,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,GACV,UAAU,CAAC,CAAC,CAAC,CAAA;IAEhB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAA;CACxG;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACzG,OAAO,CAAC,CAAC,SAAS,iBAAiB,EACjC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;CACxC;AAED;;;;;GAKG;AACH,0CAA0C;AAC1C,wBAAgB,SAAS,CAAC,CAAC,SAAS,iBAAiB,MAC3C,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,UAI/C;AAED;;;;;GAKG;AAEH,iDAAiD;AACjD,wBAAgB,gBAAgB,KACtB,CAAC,SAAS,gBAAgB,EAAE,aAAa,CAAC,UAInD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Logger } from '@xylabs/logger';
|
|
2
|
+
import type { Promisable } from '@xylabs/promise';
|
|
3
|
+
import type { CreatableInstanceV2, CreatableParamsV2, Labels } from './model/index.ts';
|
|
4
|
+
export interface CreatableFactoryV2<T extends CreatableInstanceV2 = CreatableInstanceV2> extends Omit<CreatableV2<T>, 'create' | 'createHandler' | 'paramsHandler' | 'defaultLogger' | 'factory'> {
|
|
5
|
+
create(this: CreatableFactoryV2<T>, params?: Partial<T['params']>): Promise<T>;
|
|
6
|
+
}
|
|
7
|
+
export interface CreatableV2<T extends CreatableInstanceV2 = CreatableInstanceV2> {
|
|
8
|
+
defaultLogger?: Logger;
|
|
9
|
+
new (key: unknown, params: Partial<CreatableParamsV2>): T;
|
|
10
|
+
create<T extends CreatableInstanceV2>(this: CreatableV2<T>, params?: Partial<T['params']>): Promise<T>;
|
|
11
|
+
createHandler<T extends CreatableInstanceV2>(this: CreatableV2<T>, instance: T): Promisable<T>;
|
|
12
|
+
paramsHandler<T extends CreatableInstanceV2>(this: CreatableV2<T>, params?: Partial<T['params']>): Promisable<T['params']>;
|
|
13
|
+
}
|
|
14
|
+
export interface CreatableWithFactoryV2<T extends CreatableInstanceV2 = CreatableInstanceV2> extends CreatableV2<T> {
|
|
15
|
+
factory<T extends CreatableInstanceV2>(this: CreatableV2<T>, params?: Partial<T['params']>, labels?: Labels): CreatableFactoryV2<T>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Class annotation to be used to decorate Modules which support
|
|
19
|
+
* an asynchronous creation pattern
|
|
20
|
+
* @returns The decorated Module requiring it implement the members
|
|
21
|
+
* of the CreatableModule as statics properties/methods
|
|
22
|
+
*/
|
|
23
|
+
export declare function creatableV2<T extends CreatableInstanceV2>(): <U extends CreatableV2<T>>(constructor: U) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Class annotation to be used to decorate Modules which support
|
|
26
|
+
* an asynchronous creation factory pattern
|
|
27
|
+
* @returns The decorated Module requiring it implement the members
|
|
28
|
+
* of the CreatableModule as statics properties/methods
|
|
29
|
+
*/
|
|
30
|
+
export declare function creatableFactoryV2(): <U extends CreatableFactoryV2>(constructor: U) => void;
|
|
31
|
+
//# sourceMappingURL=CreatableV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreatableV2.d.ts","sourceRoot":"","sources":["../../src/CreatableV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EACV,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,EAC/C,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CACrF,SAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;IAExG,MAAM,CACJ,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAE9E,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,KAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAExD,MAAM,CAAC,CAAC,SAAS,mBAAmB,EAClC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAE5C,aAAa,CAAC,CAAC,SAAS,mBAAmB,EACzC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,QAAQ,EAAE,CAAC,GACV,UAAU,CAAC,CAAC,CAAC,CAAA;IAEhB,aAAa,CAAC,CAAC,SAAS,mBAAmB,EACzC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;CAChF;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACjH,OAAO,CAAC,CAAC,SAAS,mBAAmB,EACnC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;CAC1C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,mBAAmB,MAC/C,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,UAIjD;AAED;;;;;GAKG;AAEH,wBAAgB,kBAAkB,KACxB,CAAC,SAAS,kBAAkB,EAAE,aAAa,CAAC,UAIrD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CreatableFactoryV2, CreatableV2 } from './CreatableV2.ts';
|
|
2
|
+
import type { CreatableInstanceV2, Labels } from './model/index.ts';
|
|
3
|
+
export declare class FactoryV2<T extends CreatableInstanceV2 = CreatableInstanceV2> implements CreatableFactoryV2<T> {
|
|
4
|
+
creatable: CreatableV2<T>;
|
|
5
|
+
defaultParams?: Partial<T['params']>;
|
|
6
|
+
labels?: Labels;
|
|
7
|
+
constructor(creatable: CreatableV2<T>, params?: Partial<T['params']>, labels?: Labels);
|
|
8
|
+
static withParams<T extends CreatableInstanceV2>(creatableModule: CreatableV2<T>, params?: Partial<T['params']>, labels?: Labels): FactoryV2<T>;
|
|
9
|
+
create(params?: Partial<T['params']>): Promise<T>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=FactoryV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FactoryV2.d.ts","sourceRoot":"","sources":["../../src/FactoryV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EACV,mBAAmB,EAAE,MAAM,EAC5B,MAAM,kBAAkB,CAAA;AAEzB,qBAAa,SAAS,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAC1G,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAEzB,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEpC,MAAM,CAAC,EAAE,MAAM,CAAA;gBAGb,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7B,MAAM,GAAE,MAAW;IAOrB,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,mBAAmB,EAC7C,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,EAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7B,MAAM,GAAE,MAAW;IAKrB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAOlD"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from './AbstractCreatable.ts';
|
|
2
|
+
export * from './AbstractCreatableV2.ts';
|
|
2
3
|
export * from './Creatable.ts';
|
|
4
|
+
export * from './CreatableV2.ts';
|
|
3
5
|
export * from './Factory.ts';
|
|
6
|
+
export * from './FactoryV2.ts';
|
|
4
7
|
export * from './model/index.ts';
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -286,6 +286,289 @@ AbstractCreatableWithFactory = __decorateClass([
|
|
|
286
286
|
creatable()
|
|
287
287
|
], AbstractCreatableWithFactory);
|
|
288
288
|
|
|
289
|
+
// src/AbstractCreatableV2.ts
|
|
290
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
291
|
+
import { BaseEmitterV2 } from "@xylabs/events";
|
|
292
|
+
import { spanRoot as spanRoot2, spanRootAsync as spanRootAsync2 } from "@xylabs/telemetry";
|
|
293
|
+
import {
|
|
294
|
+
isError as isError2,
|
|
295
|
+
isNumber as isNumber3,
|
|
296
|
+
isString as isString2,
|
|
297
|
+
isUndefined as isUndefined2
|
|
298
|
+
} from "@xylabs/typeof";
|
|
299
|
+
import { Mutex as Mutex2 } from "async-mutex";
|
|
300
|
+
|
|
301
|
+
// src/FactoryV2.ts
|
|
302
|
+
var FactoryV2 = class _FactoryV2 {
|
|
303
|
+
creatable;
|
|
304
|
+
defaultParams;
|
|
305
|
+
labels;
|
|
306
|
+
constructor(creatable2, params, labels = {}) {
|
|
307
|
+
this.creatable = creatable2;
|
|
308
|
+
this.defaultParams = params;
|
|
309
|
+
this.labels = Object.assign({}, creatable2.labels ?? {}, labels ?? {});
|
|
310
|
+
}
|
|
311
|
+
static withParams(creatableModule, params, labels = {}) {
|
|
312
|
+
return new _FactoryV2(creatableModule, params, labels);
|
|
313
|
+
}
|
|
314
|
+
create(params) {
|
|
315
|
+
const mergedParams = {
|
|
316
|
+
...this.defaultParams,
|
|
317
|
+
...params
|
|
318
|
+
};
|
|
319
|
+
return this.creatable.create(mergedParams);
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
// src/AbstractCreatableV2.ts
|
|
324
|
+
var AbstractCreatableConstructorKey2 = /* @__PURE__ */ Symbol.for("AbstractCreatableConstructor");
|
|
325
|
+
var CREATABLE_NOT_STARTED2 = "Creatable not Started";
|
|
326
|
+
var AbstractCreatableV2 = class extends BaseEmitterV2 {
|
|
327
|
+
defaultLogger;
|
|
328
|
+
_startPromise;
|
|
329
|
+
_status = null;
|
|
330
|
+
_statusMutex = new Mutex2();
|
|
331
|
+
_validatedParams;
|
|
332
|
+
constructor(key, params) {
|
|
333
|
+
assertEx2(key === AbstractCreatableConstructorKey2, () => "AbstractCreatable should not be instantiated directly, use the static create method instead");
|
|
334
|
+
super(params);
|
|
335
|
+
}
|
|
336
|
+
get context() {
|
|
337
|
+
return this.params.context;
|
|
338
|
+
}
|
|
339
|
+
get name() {
|
|
340
|
+
return this.params.name;
|
|
341
|
+
}
|
|
342
|
+
get params() {
|
|
343
|
+
this._validatedParams = this._validatedParams ?? this.paramsValidator(super.params);
|
|
344
|
+
return assertEx2(this._validatedParams);
|
|
345
|
+
}
|
|
346
|
+
get startable() {
|
|
347
|
+
return this.status === "created" || this.status === "stopped";
|
|
348
|
+
}
|
|
349
|
+
get status() {
|
|
350
|
+
return this._status;
|
|
351
|
+
}
|
|
352
|
+
get statusReporter() {
|
|
353
|
+
return this.context.statusReporter;
|
|
354
|
+
}
|
|
355
|
+
static async create(inParams = {}) {
|
|
356
|
+
const params = await this.paramsHandler(inParams);
|
|
357
|
+
const name = params.name ?? this.name;
|
|
358
|
+
try {
|
|
359
|
+
const instance = new this(AbstractCreatableConstructorKey2, params);
|
|
360
|
+
instance.setStatus("creating");
|
|
361
|
+
const initializedInstance = await this.createHandler(instance);
|
|
362
|
+
await instance.createHandler();
|
|
363
|
+
instance.setStatus("created");
|
|
364
|
+
return initializedInstance;
|
|
365
|
+
} catch (ex) {
|
|
366
|
+
params.context.statusReporter?.report(name, "error", isError2(ex) ? ex : new Error(`Error creating: ${name}`));
|
|
367
|
+
params.context.logger?.error(`Error creating creatable [${name}]: ${isError2(ex) ? `${ex.message} ${ex.stack}` : ex}`);
|
|
368
|
+
throw isError2(ex) ? ex : new Error(`Error creating: ${name}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
static createHandler(instance) {
|
|
372
|
+
return instance;
|
|
373
|
+
}
|
|
374
|
+
static paramsHandler(params = {}) {
|
|
375
|
+
return { ...params };
|
|
376
|
+
}
|
|
377
|
+
createHandler() {
|
|
378
|
+
assertEx2(this._status === "creating", () => `createHandler can not be called [status = ${this.status}]`);
|
|
379
|
+
}
|
|
380
|
+
paramsValidator(params) {
|
|
381
|
+
return { ...params, name: params.name };
|
|
382
|
+
}
|
|
383
|
+
span(name, fn) {
|
|
384
|
+
return spanRoot2(name, fn, this.tracer);
|
|
385
|
+
}
|
|
386
|
+
async spanAsync(name, fn, config = {}) {
|
|
387
|
+
return await spanRootAsync2(name, fn, {
|
|
388
|
+
...config,
|
|
389
|
+
tracer: config.tracer ?? this.tracer,
|
|
390
|
+
logger: config.logger ?? this.defaultLogger
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
async start() {
|
|
394
|
+
this._noOverride("start");
|
|
395
|
+
if (this.status === "started") {
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
return await this._statusMutex.runExclusive(async () => {
|
|
399
|
+
try {
|
|
400
|
+
if (this.status === "started") {
|
|
401
|
+
return true;
|
|
402
|
+
}
|
|
403
|
+
assertEx2(this.startable, () => `Creatable [${this.name}] is not startable in status [${this.status}]`);
|
|
404
|
+
this.setStatus("starting");
|
|
405
|
+
await this.startHandler();
|
|
406
|
+
this.setStatus("started");
|
|
407
|
+
return true;
|
|
408
|
+
} catch (ex) {
|
|
409
|
+
this.setStatus("error", isError2(ex) ? ex : new Error(`Error starting: ${ex}`));
|
|
410
|
+
this.logger?.error(`Error starting creatable [${this.name}]: ${isError2(ex) ? `${ex.message} ${ex.stack}` : ex}`);
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
started(notStartedAction = "log") {
|
|
416
|
+
if (isString2(this.status) && this.status === "started") {
|
|
417
|
+
return true;
|
|
418
|
+
} else {
|
|
419
|
+
const message = () => `${CREATABLE_NOT_STARTED2} [${this.name}] current state: ${this.status}`;
|
|
420
|
+
switch (notStartedAction) {
|
|
421
|
+
case "error": {
|
|
422
|
+
throw new Error(message());
|
|
423
|
+
}
|
|
424
|
+
case "throw": {
|
|
425
|
+
throw new Error(message());
|
|
426
|
+
}
|
|
427
|
+
case "warn": {
|
|
428
|
+
this.logger?.warn(message());
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
case "log": {
|
|
432
|
+
this.logger?.log(message());
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
case "none": {
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
default: {
|
|
439
|
+
throw new Error(`Unknown notStartedAction: ${notStartedAction}`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
async startedAsync(notStartedAction = "log", tryStart = true) {
|
|
446
|
+
if (isString2(this.status) && this.status === "started") {
|
|
447
|
+
return true;
|
|
448
|
+
} else if (this.status === "created" || this.status === "stopped" || this.status === "starting") {
|
|
449
|
+
this._startPromise = this._startPromise ?? (async () => {
|
|
450
|
+
if (tryStart) {
|
|
451
|
+
try {
|
|
452
|
+
return await this.start();
|
|
453
|
+
} finally {
|
|
454
|
+
this._startPromise = void 0;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return this.started(notStartedAction);
|
|
458
|
+
})();
|
|
459
|
+
} else {
|
|
460
|
+
const message = `${CREATABLE_NOT_STARTED2} [${this.name}] current state: ${this.status}`;
|
|
461
|
+
throw new Error(message);
|
|
462
|
+
}
|
|
463
|
+
if (isUndefined2(this._startPromise)) {
|
|
464
|
+
throw new Error(`Failed to create start promise: ${this.status}`);
|
|
465
|
+
}
|
|
466
|
+
return await this._startPromise;
|
|
467
|
+
}
|
|
468
|
+
async stop() {
|
|
469
|
+
this._noOverride("stop");
|
|
470
|
+
if (this.status === "stopped") {
|
|
471
|
+
return true;
|
|
472
|
+
}
|
|
473
|
+
return await this._statusMutex.runExclusive(async () => {
|
|
474
|
+
try {
|
|
475
|
+
if (this.status === "stopped") {
|
|
476
|
+
return true;
|
|
477
|
+
}
|
|
478
|
+
assertEx2(this.status === "started", () => `Creatable [${this.name}] is not stoppable in status [${this.status}]`);
|
|
479
|
+
this.setStatus("stopping");
|
|
480
|
+
await this.stopHandler();
|
|
481
|
+
this.setStatus("stopped");
|
|
482
|
+
return true;
|
|
483
|
+
} catch (ex) {
|
|
484
|
+
this.setStatus("error", isError2(ex) ? ex : new Error(`Error stopping: ${ex}`));
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
_noOverride(functionName = getFunctionName(3)) {
|
|
490
|
+
const thisFunc = this[functionName];
|
|
491
|
+
const rootFunc = getRootFunction(this, functionName);
|
|
492
|
+
assertEx2(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`);
|
|
493
|
+
}
|
|
494
|
+
setStatus(value, progressOrError) {
|
|
495
|
+
this._status = value;
|
|
496
|
+
if (value !== null) {
|
|
497
|
+
if (value === "error") {
|
|
498
|
+
if (isError2(progressOrError)) {
|
|
499
|
+
this.statusReporter?.report(this.name, value, progressOrError);
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
} else {
|
|
503
|
+
if (isNumber3(progressOrError)) {
|
|
504
|
+
this.statusReporter?.report(this.name, value, progressOrError);
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
this.statusReporter?.report(this.name, value);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
startHandler() {
|
|
512
|
+
}
|
|
513
|
+
stopHandler() {
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
var AbstractCreatableWithFactoryV2 = class extends AbstractCreatableV2 {
|
|
517
|
+
static factory(params, labels) {
|
|
518
|
+
return FactoryV2.withParams(this, params, labels);
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
// src/CreatableV2.ts
|
|
523
|
+
function creatableV2() {
|
|
524
|
+
return (constructor) => {
|
|
525
|
+
constructor;
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
function creatableFactoryV2() {
|
|
529
|
+
return (constructor) => {
|
|
530
|
+
constructor;
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// src/model/CreatableParamsV2.ts
|
|
535
|
+
import { BaseContextZod } from "@xylabs/base";
|
|
536
|
+
import { BaseEmitterParamsV2Zod } from "@xylabs/events";
|
|
537
|
+
import z2 from "zod";
|
|
538
|
+
|
|
539
|
+
// src/model/CreatableStatusReporter.zod.ts
|
|
540
|
+
import { z } from "zod";
|
|
541
|
+
var CreatableStatusSuccessZod = z.enum(["creating", "created", "starting", "started", "stopping", "stopped"]);
|
|
542
|
+
var CreatableStatusErrorZod = z.enum(["error"]);
|
|
543
|
+
var CreatableStatusZod = z.union([CreatableStatusSuccessZod, CreatableStatusErrorZod]);
|
|
544
|
+
var CreatableStatusReporterV2Zod = z.object({
|
|
545
|
+
report: z.union([
|
|
546
|
+
z.function({
|
|
547
|
+
input: z.union([
|
|
548
|
+
z.tuple([
|
|
549
|
+
z.string(),
|
|
550
|
+
CreatableStatusSuccessZod,
|
|
551
|
+
z.number().optional()
|
|
552
|
+
]),
|
|
553
|
+
z.tuple([
|
|
554
|
+
z.string(),
|
|
555
|
+
CreatableStatusErrorZod,
|
|
556
|
+
z.instanceof(Error)
|
|
557
|
+
]),
|
|
558
|
+
z.tuple([
|
|
559
|
+
z.string(),
|
|
560
|
+
CreatableStatusZod
|
|
561
|
+
])
|
|
562
|
+
]),
|
|
563
|
+
output: z.void()
|
|
564
|
+
})
|
|
565
|
+
])
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
// src/model/CreatableParamsV2.ts
|
|
569
|
+
var CreatableContext = z2.intersection(BaseContextZod, z2.object({ name: z2.string(), statusReporter: CreatableStatusReporterV2Zod.optional() }));
|
|
570
|
+
var CreatableParamsV2Zod = BaseEmitterParamsV2Zod.extend(z2.object({ context: CreatableContext, name: z2.string() }).shape);
|
|
571
|
+
|
|
289
572
|
// src/model/Labels.ts
|
|
290
573
|
var hasAllLabels = (source, required) => {
|
|
291
574
|
if (!required) return true;
|
|
@@ -295,10 +578,21 @@ var hasAllLabels = (source, required) => {
|
|
|
295
578
|
};
|
|
296
579
|
export {
|
|
297
580
|
AbstractCreatable,
|
|
581
|
+
AbstractCreatableV2,
|
|
298
582
|
AbstractCreatableWithFactory,
|
|
583
|
+
AbstractCreatableWithFactoryV2,
|
|
584
|
+
CreatableContext,
|
|
585
|
+
CreatableParamsV2Zod,
|
|
586
|
+
CreatableStatusErrorZod,
|
|
587
|
+
CreatableStatusReporterV2Zod,
|
|
588
|
+
CreatableStatusSuccessZod,
|
|
589
|
+
CreatableStatusZod,
|
|
299
590
|
Factory,
|
|
591
|
+
FactoryV2,
|
|
300
592
|
creatable,
|
|
301
593
|
creatableFactory,
|
|
594
|
+
creatableFactoryV2,
|
|
595
|
+
creatableV2,
|
|
302
596
|
hasAllLabels
|
|
303
597
|
};
|
|
304
598
|
//# sourceMappingURL=index.mjs.map
|