@wocker/core 1.0.17-dev.1 → 1.0.17-dev.3
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/lib/makes/Container.d.ts +1 -0
- package/lib/makes/Container.js +7 -0
- package/lib/makes/Module.d.ts +1 -5
- package/lib/makes/Module.js +12 -17
- package/lib/makes/Project.d.ts +1 -0
- package/lib/makes/Project.js +2 -0
- package/lib/makes/Scanner.js +7 -5
- package/package.json +1 -1
package/lib/makes/Container.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export declare class Container {
|
|
|
9
9
|
addModule<TInput = any>(type: Type<TInput>, module: Module): void;
|
|
10
10
|
hasModule<TInput = any>(type: Type<TInput>): boolean;
|
|
11
11
|
getModule<TInput = any>(type: Type<TInput>): Module<TInput>;
|
|
12
|
+
addProvider(type: Type, wrapper: InstanceWrapper): void;
|
|
12
13
|
}
|
package/lib/makes/Container.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.Container = void 0;
|
|
|
4
4
|
const cli_1 = require("@kearisp/cli");
|
|
5
5
|
const InstanceWrapper_1 = require("./InstanceWrapper");
|
|
6
6
|
const Module_1 = require("./Module");
|
|
7
|
+
const env_1 = require("../env");
|
|
7
8
|
class Container {
|
|
8
9
|
constructor() {
|
|
9
10
|
this.modules = new Map();
|
|
@@ -24,5 +25,11 @@ class Container {
|
|
|
24
25
|
}
|
|
25
26
|
return module;
|
|
26
27
|
}
|
|
28
|
+
addProvider(type, wrapper) {
|
|
29
|
+
const token = typeof type !== "string"
|
|
30
|
+
? Reflect.getMetadata(env_1.INJECT_TOKEN_METADATA, type) || type
|
|
31
|
+
: type;
|
|
32
|
+
this.providers.set(token, wrapper);
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
35
|
exports.Container = Container;
|
package/lib/makes/Module.d.ts
CHANGED
|
@@ -5,18 +5,14 @@ import { InstanceWrapper } from "./InstanceWrapper";
|
|
|
5
5
|
export declare class Module<TInput = any> {
|
|
6
6
|
readonly container: Container;
|
|
7
7
|
type: TInput;
|
|
8
|
-
parent?: Module | undefined;
|
|
9
8
|
imports: Map<any, InstanceWrapper>;
|
|
10
9
|
controllers: Map<any, InstanceWrapper>;
|
|
11
10
|
providers: Map<any, InstanceWrapper>;
|
|
12
11
|
exports: Set<any>;
|
|
13
|
-
constructor(container: Container, type: TInput
|
|
12
|
+
constructor(container: Container, type: TInput);
|
|
14
13
|
get<TInput = any, TResult = TInput>(type: Type<TInput> | Function | string | symbol): TResult;
|
|
15
14
|
getWrapper(type: any): InstanceWrapper | undefined;
|
|
16
|
-
addImport(module: any): void;
|
|
17
15
|
addProvider(provider: Provider, instance?: any): void;
|
|
18
|
-
getProvider(): void;
|
|
19
|
-
addInjection(): void;
|
|
20
16
|
addController(type: any): void;
|
|
21
17
|
addExport(type: any): void;
|
|
22
18
|
}
|
package/lib/makes/Module.js
CHANGED
|
@@ -4,10 +4,9 @@ exports.Module = void 0;
|
|
|
4
4
|
const InstanceWrapper_1 = require("./InstanceWrapper");
|
|
5
5
|
const env_1 = require("../env");
|
|
6
6
|
class Module {
|
|
7
|
-
constructor(container, type
|
|
7
|
+
constructor(container, type) {
|
|
8
8
|
this.container = container;
|
|
9
9
|
this.type = type;
|
|
10
|
-
this.parent = parent;
|
|
11
10
|
this.imports = new Map();
|
|
12
11
|
this.controllers = new Map();
|
|
13
12
|
this.providers = new Map();
|
|
@@ -16,6 +15,12 @@ class Module {
|
|
|
16
15
|
get(type) {
|
|
17
16
|
const wrapper = this.getWrapper(type);
|
|
18
17
|
if (!wrapper) {
|
|
18
|
+
if (typeof type === "function") {
|
|
19
|
+
throw new Error(`Provider "${type.prototype.constructor.name}" not found`);
|
|
20
|
+
}
|
|
21
|
+
else if (typeof type === "string") {
|
|
22
|
+
throw new Error(`Provider "${type}" not found`);
|
|
23
|
+
}
|
|
19
24
|
throw new Error("Provider not found");
|
|
20
25
|
}
|
|
21
26
|
return wrapper.instance;
|
|
@@ -25,27 +30,15 @@ class Module {
|
|
|
25
30
|
? Reflect.getMetadata(env_1.INJECT_TOKEN_METADATA, type) || type
|
|
26
31
|
: type;
|
|
27
32
|
const wrapper = this.providers.get(token);
|
|
28
|
-
if (!wrapper && this.parent) {
|
|
29
|
-
return this.parent.getWrapper(type);
|
|
30
|
-
}
|
|
31
33
|
if (!wrapper) {
|
|
32
|
-
return this.container.providers.get(
|
|
34
|
+
return this.container.providers.get(token);
|
|
33
35
|
}
|
|
34
36
|
return wrapper;
|
|
35
37
|
}
|
|
36
|
-
addImport(module) {
|
|
37
|
-
// this.imports.add(module);
|
|
38
|
-
}
|
|
39
38
|
addProvider(provider, instance) {
|
|
40
39
|
const wrapper = new InstanceWrapper_1.InstanceWrapper(this, provider, instance);
|
|
41
40
|
this.providers.set(wrapper.token, wrapper);
|
|
42
41
|
}
|
|
43
|
-
getProvider() {
|
|
44
|
-
//
|
|
45
|
-
}
|
|
46
|
-
addInjection() {
|
|
47
|
-
//
|
|
48
|
-
}
|
|
49
42
|
addController(type) {
|
|
50
43
|
this.controllers.set(type, new InstanceWrapper_1.InstanceWrapper(this, type));
|
|
51
44
|
for (const name of Object.getOwnPropertyNames(type.prototype)) {
|
|
@@ -57,11 +50,13 @@ class Module {
|
|
|
57
50
|
if (!command) {
|
|
58
51
|
continue;
|
|
59
52
|
}
|
|
60
|
-
// console.log(">", name, command);
|
|
61
53
|
}
|
|
62
54
|
}
|
|
63
55
|
addExport(type) {
|
|
64
|
-
|
|
56
|
+
const token = typeof type !== "string"
|
|
57
|
+
? Reflect.getMetadata(env_1.INJECT_TOKEN_METADATA, type) || type
|
|
58
|
+
: type;
|
|
59
|
+
this.exports.add(token);
|
|
65
60
|
}
|
|
66
61
|
}
|
|
67
62
|
exports.Module = Module;
|
package/lib/makes/Project.d.ts
CHANGED
package/lib/makes/Project.js
CHANGED
|
@@ -9,6 +9,7 @@ class Project {
|
|
|
9
9
|
this.type = data.type;
|
|
10
10
|
this.path = data.path;
|
|
11
11
|
this.preset = data.preset;
|
|
12
|
+
this.presetMode = data.presetMode;
|
|
12
13
|
this.imageName = data.imageName;
|
|
13
14
|
this.dockerfile = data.dockerfile;
|
|
14
15
|
this.scripts = data.scripts;
|
|
@@ -177,6 +178,7 @@ class Project {
|
|
|
177
178
|
type: this.type,
|
|
178
179
|
path: this.path,
|
|
179
180
|
preset: this.preset,
|
|
181
|
+
presetMode: this.presetMode,
|
|
180
182
|
imageName: this.imageName,
|
|
181
183
|
dockerfile: this.dockerfile,
|
|
182
184
|
scripts: this.scripts,
|
package/lib/makes/Scanner.js
CHANGED
|
@@ -14,7 +14,6 @@ require("reflect-metadata");
|
|
|
14
14
|
const cli_1 = require("@kearisp/cli");
|
|
15
15
|
const Container_1 = require("./Container");
|
|
16
16
|
const Module_1 = require("./Module");
|
|
17
|
-
const Logger_1 = require("./Logger");
|
|
18
17
|
const env_1 = require("../env");
|
|
19
18
|
class Scanner {
|
|
20
19
|
constructor() {
|
|
@@ -74,7 +73,7 @@ class Scanner {
|
|
|
74
73
|
if (isGlobal) {
|
|
75
74
|
const wrapper = module.getWrapper(type);
|
|
76
75
|
if (wrapper) {
|
|
77
|
-
this.container.
|
|
76
|
+
this.container.addProvider(type, wrapper);
|
|
78
77
|
}
|
|
79
78
|
}
|
|
80
79
|
});
|
|
@@ -85,10 +84,11 @@ class Scanner {
|
|
|
85
84
|
return;
|
|
86
85
|
}
|
|
87
86
|
const cli = cliWrapper.instance;
|
|
88
|
-
// Logger.unmute();
|
|
89
|
-
Logger_1.Logger.info(">_<");
|
|
90
87
|
for (const [, module] of this.container.modules) {
|
|
91
88
|
for (const [type, controller] of module.controllers) {
|
|
89
|
+
if (!controller.instance) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
92
|
const controllerCommands = [];
|
|
93
93
|
const controllerCompletions = [];
|
|
94
94
|
for (const name of Object.getOwnPropertyNames(type.prototype)) {
|
|
@@ -96,6 +96,7 @@ class Scanner {
|
|
|
96
96
|
if (!descriptor) {
|
|
97
97
|
continue;
|
|
98
98
|
}
|
|
99
|
+
const description = Reflect.getMetadata(env_1.COMMAND_DESCRIPTION_METADATA, descriptor.value);
|
|
99
100
|
const commandName = Reflect.getMetadata(env_1.COMMAND_METADATA, descriptor.value);
|
|
100
101
|
const completions = (Reflect.getMetadata(env_1.COMPLETION_METADATA, descriptor.value) || [])
|
|
101
102
|
.map((completion) => {
|
|
@@ -114,7 +115,7 @@ class Scanner {
|
|
|
114
115
|
const argsMeta = Reflect.getMetadata(env_1.ARGS_METADATA, type, name) || [];
|
|
115
116
|
const command = cli.command(commandName);
|
|
116
117
|
command.help({
|
|
117
|
-
description:
|
|
118
|
+
description: description
|
|
118
119
|
});
|
|
119
120
|
for (const argMeta of argsMeta) {
|
|
120
121
|
if (argMeta.type === "option") {
|
|
@@ -184,6 +185,7 @@ class Scanner {
|
|
|
184
185
|
const provider = module.getWrapper(type);
|
|
185
186
|
if (!provider) {
|
|
186
187
|
// console.log(type, ">_<", provider);
|
|
188
|
+
return;
|
|
187
189
|
}
|
|
188
190
|
// @ts-ignore
|
|
189
191
|
parentModule.providers.set(type, provider);
|