@shellicar/core-di 0.0.1
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/LICENSE +21 -0
- package/README.md +110 -0
- package/dist/cjs/ServiceCollection.d.ts +13 -0
- package/dist/cjs/ServiceCollection.d.ts.map +1 -0
- package/dist/cjs/ServiceCollection.js +64 -0
- package/dist/cjs/ServiceCollection.js.map +1 -0
- package/dist/cjs/ServiceProvider.d.ts +22 -0
- package/dist/cjs/ServiceProvider.d.ts.map +1 -0
- package/dist/cjs/ServiceProvider.js +138 -0
- package/dist/cjs/ServiceProvider.js.map +1 -0
- package/dist/cjs/constants.d.ts +8 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +12 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/createServiceCollection.d.ts +3 -0
- package/dist/cjs/createServiceCollection.d.ts.map +1 -0
- package/dist/cjs/createServiceCollection.js +7 -0
- package/dist/cjs/createServiceCollection.js.map +1 -0
- package/dist/cjs/debug.d.ts +4 -0
- package/dist/cjs/debug.d.ts.map +1 -0
- package/dist/cjs/debug.js +25 -0
- package/dist/cjs/debug.js.map +1 -0
- package/dist/cjs/dependsOn.d.ts +3 -0
- package/dist/cjs/dependsOn.d.ts.map +1 -0
- package/dist/cjs/dependsOn.js +27 -0
- package/dist/cjs/dependsOn.js.map +1 -0
- package/dist/cjs/errors.d.ts +11 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +22 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +17 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces.d.ts +22 -0
- package/dist/cjs/interfaces.d.ts.map +1 -0
- package/dist/cjs/interfaces.js +19 -0
- package/dist/cjs/interfaces.js.map +1 -0
- package/dist/cjs/metadata.d.ts +5 -0
- package/dist/cjs/metadata.d.ts.map +1 -0
- package/dist/cjs/metadata.js +17 -0
- package/dist/cjs/metadata.js.map +1 -0
- package/dist/cjs/types.d.ts +35 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/ServiceCollection.d.ts +13 -0
- package/dist/esm/ServiceCollection.d.ts.map +1 -0
- package/dist/esm/ServiceCollection.js +60 -0
- package/dist/esm/ServiceCollection.js.map +1 -0
- package/dist/esm/ServiceProvider.d.ts +22 -0
- package/dist/esm/ServiceProvider.d.ts.map +1 -0
- package/dist/esm/ServiceProvider.js +134 -0
- package/dist/esm/ServiceProvider.js.map +1 -0
- package/dist/esm/constants.d.ts +8 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +9 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/createServiceCollection.d.ts +3 -0
- package/dist/esm/createServiceCollection.d.ts.map +1 -0
- package/dist/esm/createServiceCollection.js +3 -0
- package/dist/esm/createServiceCollection.js.map +1 -0
- package/dist/esm/debug.d.ts +4 -0
- package/dist/esm/debug.d.ts.map +1 -0
- package/dist/esm/debug.js +22 -0
- package/dist/esm/debug.js.map +1 -0
- package/dist/esm/dependsOn.d.ts +3 -0
- package/dist/esm/dependsOn.d.ts.map +1 -0
- package/dist/esm/dependsOn.js +23 -0
- package/dist/esm/dependsOn.js.map +1 -0
- package/dist/esm/errors.d.ts +11 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +16 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces.d.ts +22 -0
- package/dist/esm/interfaces.d.ts.map +1 -0
- package/dist/esm/interfaces.js +11 -0
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/metadata.d.ts +5 -0
- package/dist/esm/metadata.d.ts.map +1 -0
- package/dist/esm/metadata.js +12 -0
- package/dist/esm/metadata.js.map +1 -0
- package/dist/esm/types.d.ts +35 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/ServiceCollection.d.ts +13 -0
- package/dist/types/ServiceCollection.d.ts.map +1 -0
- package/dist/types/ServiceProvider.d.ts +22 -0
- package/dist/types/ServiceProvider.d.ts.map +1 -0
- package/dist/types/constants.d.ts +8 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/createServiceCollection.d.ts +3 -0
- package/dist/types/createServiceCollection.d.ts.map +1 -0
- package/dist/types/debug.d.ts +4 -0
- package/dist/types/debug.d.ts.map +1 -0
- package/dist/types/dependsOn.d.ts +3 -0
- package/dist/types/dependsOn.d.ts.map +1 -0
- package/dist/types/errors.d.ts +11 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces.d.ts +22 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/metadata.d.ts +5 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/types.d.ts +35 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Lifetime } from './constants';
|
|
2
|
+
import type { IServiceModule, IServiceProvider, IServiceScope } from './interfaces';
|
|
3
|
+
export type SourceType = object;
|
|
4
|
+
export type AbstractNewable<T> = abstract new (...args: any[]) => T;
|
|
5
|
+
export type Newable<T> = new (...args: any[]) => T;
|
|
6
|
+
export type ServiceIdentifier<T extends SourceType> = {
|
|
7
|
+
prototype: T;
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
export type ServiceImplementation<T extends SourceType> = Newable<T>;
|
|
11
|
+
export type InstanceFactory<T extends SourceType> = (x: IServiceScope & IServiceProvider) => T;
|
|
12
|
+
export type ServiceModuleType = Newable<IServiceModule>;
|
|
13
|
+
export type ServiceDescriptorFactory<T extends SourceType> = {
|
|
14
|
+
implementation: ServiceIdentifier<T>;
|
|
15
|
+
factory: InstanceFactory<T>;
|
|
16
|
+
lifetime: Lifetime;
|
|
17
|
+
};
|
|
18
|
+
export type ServiceDescriptorConcrete<T extends SourceType> = {
|
|
19
|
+
implementation: ServiceImplementation<T>;
|
|
20
|
+
lifetime: Lifetime;
|
|
21
|
+
};
|
|
22
|
+
export type ServiceDescriptor<T extends SourceType> = ServiceDescriptorConcrete<T> | ServiceDescriptorFactory<T>;
|
|
23
|
+
export type LifetimeBuilder = {
|
|
24
|
+
singleton: () => LifetimeBuilder;
|
|
25
|
+
scoped: () => LifetimeBuilder;
|
|
26
|
+
transient: () => LifetimeBuilder;
|
|
27
|
+
};
|
|
28
|
+
export type ServiceBuilder<T extends SourceType> = {
|
|
29
|
+
to: {
|
|
30
|
+
(implementation: ServiceImplementation<T>): LifetimeBuilder;
|
|
31
|
+
(implementation: ServiceIdentifier<T>, factory: InstanceFactory<T>): LifetimeBuilder;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type MetadataType<T extends SourceType> = Record<string | symbol, ServiceIdentifier<T>>;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACpE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI;IAAE,SAAS,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACrF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,KAAK,CAAC,CAAC;AAE/F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC3D,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5D,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAOjH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,eAAe,CAAC;IAC9B,SAAS,EAAE,MAAM,eAAe,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IACjD,EAAE,EAAE;QACF,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;QAC5D,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;KACtF,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SourceType, ServiceBuilder, ServiceDescriptor, ServiceIdentifier, Newable } from './types';
|
|
2
|
+
import type { IServiceCollection, IServiceModule, IServiceProvider } from './interfaces';
|
|
3
|
+
export declare class ServiceCollection implements IServiceCollection {
|
|
4
|
+
private readonly services;
|
|
5
|
+
constructor(services?: Map<ServiceIdentifier<any>, ServiceDescriptor<any>[]>);
|
|
6
|
+
registerModules(modules: Newable<IServiceModule>[]): void;
|
|
7
|
+
get<T extends SourceType>(key: ServiceIdentifier<T>): ServiceDescriptor<T>[];
|
|
8
|
+
register<T extends SourceType>(identifier: ServiceIdentifier<T>): ServiceBuilder<T>;
|
|
9
|
+
private addService;
|
|
10
|
+
clone(): IServiceCollection;
|
|
11
|
+
buildProvider(): IServiceProvider;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ServiceCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceCollection.d.ts","sourceRoot":"","sources":["../../src/ServiceCollection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAyB,OAAO,EAAE,MAAM,SAAS,CAAC;AACjJ,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIzF,qBAAa,iBAAkB,YAAW,kBAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,wDAA8D;IAG5F,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAOhE,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE;IAI5E,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAgBnF,OAAO,CAAC,UAAU;IAUX,KAAK,IAAI,kBAAkB;IAU3B,aAAa,IAAI,gBAAgB;CAIzC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IServiceProvider, IDisposable, IServiceCollection } from './interfaces';
|
|
2
|
+
import { IServiceScope } from './interfaces';
|
|
3
|
+
import type { ServiceIdentifier, ServiceImplementation, SourceType } from './types';
|
|
4
|
+
type Id<T extends SourceType> = ServiceIdentifier<T> | ServiceImplementation<T>;
|
|
5
|
+
type ResolveMap<T extends SourceType> = Map<ServiceIdentifier<T>, Map<Id<T>, T>>;
|
|
6
|
+
export declare class ServiceProvider implements IServiceProvider, IServiceScope {
|
|
7
|
+
private services;
|
|
8
|
+
private singletons;
|
|
9
|
+
private scoped;
|
|
10
|
+
private created;
|
|
11
|
+
constructor(services: IServiceCollection, singletons?: ResolveMap<object>);
|
|
12
|
+
[Symbol.dispose](): void;
|
|
13
|
+
private resolveFrom;
|
|
14
|
+
private resolveInternal;
|
|
15
|
+
resolveAll<T extends SourceType>(identifier: ServiceIdentifier<T>, currentResolve?: ResolveMap<T>): T[];
|
|
16
|
+
resolve<T extends SourceType>(identifier: ServiceIdentifier<T>, currentResolve?: ResolveMap<T>): T;
|
|
17
|
+
private createInstance;
|
|
18
|
+
createScope(): IServiceScope & IDisposable;
|
|
19
|
+
private setDependencies;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../src/ServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAqB,qBAAqB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGvG,KAAK,EAAE,CAAC,CAAC,SAAS,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAIjF,qBAAa,eAAgB,YAAW,gBAAgB,EAAE,aAAa;IAKnE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAqB;gBAG1B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,qBAAqB;IAGzC,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,eAAe;IAmBhB,UAAU,CAAC,CAAC,SAAS,UAAU,EACpC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChC,cAAc,gBAAwB,GACrC,CAAC,EAAE;IAKC,OAAO,CAAC,CAAC,SAAS,UAAU,EACjC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChC,cAAc,gBAAwB,GACrC,CAAC;IAiBJ,OAAO,CAAC,cAAc;IAiCf,WAAW,IAAI,aAAa,GAAG,WAAW;IAIjD,OAAO,CAAC,eAAe;CAkBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createServiceCollection.d.ts","sourceRoot":"","sources":["../../src/createServiceCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,uBAAuB,QAAO,kBAAmE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,GAAG,aATO,MAAM,qBAAqB,OAAO,EAAE,SASjB,CAAC;AAC3C,eAAO,MAAM,MAAM,YAA6B,CAAC;AACjD,eAAO,MAAM,OAAO,YAA8B,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ServiceIdentifier, SourceType } from './types';
|
|
2
|
+
export declare const dependsOn: <T extends SourceType>(identifier: ServiceIdentifier<T>) => (value: undefined, ctx: ClassFieldDecoratorContext) => (this: object, initialValue: any) => any;
|
|
3
|
+
//# sourceMappingURL=dependsOn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependsOn.d.ts","sourceRoot":"","sources":["../../src/dependsOn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAY7D,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,UAAU,cAAc,iBAAiB,CAAC,CAAC,CAAC,aAC/D,SAAS,OAAO,0BAA0B,YAChC,MAAM,gBAAgB,GAAG,QAUnD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ServiceIdentifier } from './types';
|
|
2
|
+
export declare class UnregisteredServiceError<T extends object> extends Error {
|
|
3
|
+
constructor(identifier: ServiceIdentifier<T>);
|
|
4
|
+
}
|
|
5
|
+
export declare class MultipleRegistrationError<T extends object> extends Error {
|
|
6
|
+
constructor(identifier: ServiceIdentifier<T>);
|
|
7
|
+
}
|
|
8
|
+
export declare class SelfDependencyError extends Error {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;gBACvD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAG7C;AAED,qBAAa,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;gBACxD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAG7C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAI7C"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createServiceCollection } from './createServiceCollection';
|
|
2
|
+
export { dependsOn } from './dependsOn';
|
|
3
|
+
export { IDisposable, IServiceCollection, IServiceModule, IServiceProvider, IServiceScope } from './interfaces';
|
|
4
|
+
export type { AbstractNewable, InstanceFactory, LifetimeBuilder, MetadataType, Newable, ServiceBuilder, ServiceDescriptor, ServiceDescriptorConcrete, ServiceDescriptorFactory, ServiceIdentifier, ServiceImplementation, ServiceModuleType, SourceType, } from './types';
|
|
5
|
+
export { enable, disable, } from './debug';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChH,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,GAAG,MAAM,SAAS,CAAC;AAC1Q,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SourceType, ServiceBuilder, ServiceDescriptor, ServiceIdentifier, ServiceModuleType } from './types';
|
|
2
|
+
export declare abstract class IDisposable {
|
|
3
|
+
abstract [Symbol.dispose]: () => void;
|
|
4
|
+
}
|
|
5
|
+
export declare abstract class IServiceModule {
|
|
6
|
+
abstract registerServices(services: IServiceCollection): void;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class IServiceScope {
|
|
9
|
+
abstract resolve<T extends SourceType>(identifier: ServiceIdentifier<T>): T;
|
|
10
|
+
abstract resolveAll<T extends SourceType>(identifier: ServiceIdentifier<T>): T[];
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class IServiceProvider extends IServiceScope {
|
|
13
|
+
abstract createScope(): IServiceScope & IDisposable;
|
|
14
|
+
}
|
|
15
|
+
export declare abstract class IServiceCollection {
|
|
16
|
+
abstract get<T extends SourceType>(key: ServiceIdentifier<T>): ServiceDescriptor<T>[];
|
|
17
|
+
abstract register<T extends SourceType>(identifier: ServiceIdentifier<T>): ServiceBuilder<T>;
|
|
18
|
+
abstract registerModules(modules: ServiceModuleType[]): void;
|
|
19
|
+
abstract buildProvider(): IServiceProvider;
|
|
20
|
+
abstract clone(): IServiceCollection;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnH,8BAAsB,WAAW;IAC/B,SAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9C;AAED,8BAAsB,cAAc;aAClB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CACrE;AAED,8BAAsB,aAAa;aACjB,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;aAClE,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CACxF;AAED,8BAAsB,gBAAiB,SAAQ,aAAa;aAC1C,WAAW,IAAI,aAAa,GAAG,WAAW;CAC3D;AAED,8BAAsB,kBAAkB;aACtB,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE;aAC5E,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;aACnF,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI;aACnD,aAAa,IAAI,gBAAgB;aACjC,KAAK,IAAI,kBAAkB;CAC5C"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { MetadataType, SourceType } from './types';
|
|
3
|
+
export declare const getMetadata: <T extends SourceType>(key: string, obj: object) => MetadataType<T> | undefined;
|
|
4
|
+
export declare const defineMetadata: <T extends SourceType>(key: string, metadata: MetadataType<T>, obj: object) => void;
|
|
5
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,UAAU,OAAO,MAAM,OAAO,MAAM,KAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAM9F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,UAAU,OAAO,MAAM,YAAY,YAAY,CAAC,CAAC,CAAC,OAAO,MAAM,SAEvG,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Lifetime } from './constants';
|
|
2
|
+
import type { IServiceModule, IServiceProvider, IServiceScope } from './interfaces';
|
|
3
|
+
export type SourceType = object;
|
|
4
|
+
export type AbstractNewable<T> = abstract new (...args: any[]) => T;
|
|
5
|
+
export type Newable<T> = new (...args: any[]) => T;
|
|
6
|
+
export type ServiceIdentifier<T extends SourceType> = {
|
|
7
|
+
prototype: T;
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
export type ServiceImplementation<T extends SourceType> = Newable<T>;
|
|
11
|
+
export type InstanceFactory<T extends SourceType> = (x: IServiceScope & IServiceProvider) => T;
|
|
12
|
+
export type ServiceModuleType = Newable<IServiceModule>;
|
|
13
|
+
export type ServiceDescriptorFactory<T extends SourceType> = {
|
|
14
|
+
implementation: ServiceIdentifier<T>;
|
|
15
|
+
factory: InstanceFactory<T>;
|
|
16
|
+
lifetime: Lifetime;
|
|
17
|
+
};
|
|
18
|
+
export type ServiceDescriptorConcrete<T extends SourceType> = {
|
|
19
|
+
implementation: ServiceImplementation<T>;
|
|
20
|
+
lifetime: Lifetime;
|
|
21
|
+
};
|
|
22
|
+
export type ServiceDescriptor<T extends SourceType> = ServiceDescriptorConcrete<T> | ServiceDescriptorFactory<T>;
|
|
23
|
+
export type LifetimeBuilder = {
|
|
24
|
+
singleton: () => LifetimeBuilder;
|
|
25
|
+
scoped: () => LifetimeBuilder;
|
|
26
|
+
transient: () => LifetimeBuilder;
|
|
27
|
+
};
|
|
28
|
+
export type ServiceBuilder<T extends SourceType> = {
|
|
29
|
+
to: {
|
|
30
|
+
(implementation: ServiceImplementation<T>): LifetimeBuilder;
|
|
31
|
+
(implementation: ServiceIdentifier<T>, factory: InstanceFactory<T>): LifetimeBuilder;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type MetadataType<T extends SourceType> = Record<string | symbol, ServiceIdentifier<T>>;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACpE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI;IAAE,SAAS,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACrF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,KAAK,CAAC,CAAC;AAE/F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC3D,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5D,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAOjH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,eAAe,CAAC;IAC9B,SAAS,EAAE,MAAM,eAAe,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IACjD,EAAE,EAAE;QACF,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;QAC5D,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;KACtF,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@shellicar/core-di",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A basic dependency injection library",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/shellicar/core-di.git"
|
|
8
|
+
},
|
|
9
|
+
"private": false,
|
|
10
|
+
"packageManager": "pnpm@9.9.0",
|
|
11
|
+
"main": "./dist/cjs/index.js",
|
|
12
|
+
"module": "./dist/esm/index.js",
|
|
13
|
+
"types": "./dist/types/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"import": "./dist/esm/index.js",
|
|
17
|
+
"require": "./dist/cjs/index.js",
|
|
18
|
+
"types": "./dist/types/index.d.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"clean": "rimraf dist",
|
|
26
|
+
"build": "run-p build:esm build:cjs build:types",
|
|
27
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
28
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
29
|
+
"build:types": "tsc -p tsconfig.types.json",
|
|
30
|
+
"check": "tsc --noEmit --composite false --skipLibCheck",
|
|
31
|
+
"test": "mocha",
|
|
32
|
+
"lint": "eslint .",
|
|
33
|
+
"prepublishOnly": "run-s clean build"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"dependency injection",
|
|
37
|
+
"di",
|
|
38
|
+
"inversion of control container",
|
|
39
|
+
"ioc"
|
|
40
|
+
],
|
|
41
|
+
"author": "Stephen Hellicar",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://github.com/shellicar/core-di/issues"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/shellicar/core-di#readme",
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@stylistic/eslint-plugin": "^2.6.4",
|
|
49
|
+
"@types/mocha": "^10.0.7",
|
|
50
|
+
"@types/node": "^20.14.15",
|
|
51
|
+
"@typescript-eslint/parser": "^8.3.0",
|
|
52
|
+
"eslint": "^9.9.0",
|
|
53
|
+
"eslint-plugin-prefer-arrow-functions": "^3.4.1",
|
|
54
|
+
"eslint-plugin-turbo": "^2.1.1",
|
|
55
|
+
"eslint-plugin-unicorn": "^55.0.0",
|
|
56
|
+
"mocha": "^10.7.3",
|
|
57
|
+
"npm-run-all2": "^6.2.2",
|
|
58
|
+
"rimraf": "^6.0.1",
|
|
59
|
+
"tsx": "^4.19.0",
|
|
60
|
+
"typescript": "^5.5.4",
|
|
61
|
+
"typescript-eslint": "^8.3.0"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"reflect-metadata": "^0.2.2"
|
|
65
|
+
}
|
|
66
|
+
}
|