@wocker/core 1.0.10 → 1.0.11

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.
@@ -1 +1,2 @@
1
+ import "reflect-metadata";
1
2
  export declare const Command: (command: string) => MethodDecorator;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Command = void 0;
4
+ require("reflect-metadata");
4
5
  const env_1 = require("../env");
5
6
  const Command = (command) => {
6
7
  return (target, key, descriptor) => {
@@ -1 +1,2 @@
1
+ import "reflect-metadata";
1
2
  export declare const Completion: (name: string, command?: string) => MethodDecorator;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Completion = void 0;
4
+ require("reflect-metadata");
4
5
  const Completion = (name, command) => {
5
6
  return (target, propertyKey, descriptor) => {
6
7
  Reflect.defineMetadata("completion", [
@@ -0,0 +1,2 @@
1
+ import "reflect-metadata";
2
+ export declare const Description: (description: string) => MethodDecorator;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Description = void 0;
4
+ require("reflect-metadata");
5
+ const env_1 = require("../env");
6
+ const Description = (description) => {
7
+ return (target, propertyKey, descriptor) => {
8
+ Reflect.defineMetadata(env_1.COMMAND_DESCRIPTION_METADATA, description, descriptor);
9
+ };
10
+ };
11
+ exports.Description = Description;
@@ -1 +1,2 @@
1
- export declare const Param: (name: string) => MethodDecorator;
1
+ import "reflect-metadata";
2
+ export declare const Param: (name: string) => ParameterDecorator;
@@ -1,8 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Param = void 0;
4
+ require("reflect-metadata");
5
+ const env_1 = require("../env");
4
6
  const Param = (name) => {
5
- return (target, propertyKey, descriptor) => {
7
+ return (target, propertyKey, parameterIndex) => {
8
+ if (!propertyKey) {
9
+ return;
10
+ }
11
+ Reflect.defineMetadata(env_1.ARGS_METADATA, [
12
+ ...Reflect.getMetadata(env_1.ARGS_METADATA, target.constructor, propertyKey) || [],
13
+ {
14
+ type: "param",
15
+ name,
16
+ index: parameterIndex
17
+ }
18
+ ], target.constructor, propertyKey);
6
19
  };
7
20
  };
8
21
  exports.Param = Param;
@@ -1,8 +1,10 @@
1
1
  export * from "./Command";
2
2
  export * from "./Completion";
3
3
  export * from "./Controller";
4
+ export * from "./Description";
4
5
  export * from "./Inject";
5
6
  export * from "./Injectable";
6
7
  export * from "./Module";
7
8
  export * from "./Option";
9
+ export * from "./Param";
8
10
  export * from "./Plugin";
@@ -17,8 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Command"), exports);
18
18
  __exportStar(require("./Completion"), exports);
19
19
  __exportStar(require("./Controller"), exports);
20
+ __exportStar(require("./Description"), exports);
20
21
  __exportStar(require("./Inject"), exports);
21
22
  __exportStar(require("./Injectable"), exports);
22
23
  __exportStar(require("./Module"), exports);
23
24
  __exportStar(require("./Option"), exports);
25
+ __exportStar(require("./Param"), exports);
24
26
  __exportStar(require("./Plugin"), exports);
package/lib/env.d.ts CHANGED
@@ -2,6 +2,7 @@ export declare const IS_MODULE = "IS_MODULE";
2
2
  export declare const INJECTABLE_WATERMARK = "__injectable__";
3
3
  export declare const ARGS_META = "__ARGS__";
4
4
  export declare const COMMAND_METADATA = "command";
5
+ export declare const COMMAND_DESCRIPTION_METADATA = "__COMMAND_DESCRIPTION__";
5
6
  export declare const COMPLETION_METADATA = "completion";
6
7
  export declare const ARGS_METADATA = "__ARGS__";
7
8
  export declare const OPTION_META = "__OPTION_META__";
package/lib/env.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MODULE_METADATA = exports.PLUGIN_NAME_METADATA = exports.PLUGIN_DIR_KEY = exports.INJECT_TOKEN_METADATA = exports.SELF_DECLARED_DEPS_METADATA = exports.PARAMTYPES_METADATA = exports.OPTION_META = exports.ARGS_METADATA = exports.COMPLETION_METADATA = exports.COMMAND_METADATA = exports.ARGS_META = exports.INJECTABLE_WATERMARK = exports.IS_MODULE = void 0;
3
+ exports.MODULE_METADATA = exports.PLUGIN_NAME_METADATA = exports.PLUGIN_DIR_KEY = exports.INJECT_TOKEN_METADATA = exports.SELF_DECLARED_DEPS_METADATA = exports.PARAMTYPES_METADATA = exports.OPTION_META = exports.ARGS_METADATA = exports.COMPLETION_METADATA = exports.COMMAND_DESCRIPTION_METADATA = exports.COMMAND_METADATA = exports.ARGS_META = exports.INJECTABLE_WATERMARK = exports.IS_MODULE = void 0;
4
4
  exports.IS_MODULE = "IS_MODULE";
5
5
  exports.INJECTABLE_WATERMARK = "__injectable__";
6
6
  exports.ARGS_META = "__ARGS__";
7
7
  exports.COMMAND_METADATA = "command";
8
+ exports.COMMAND_DESCRIPTION_METADATA = "__COMMAND_DESCRIPTION__";
8
9
  exports.COMPLETION_METADATA = "completion";
9
10
  exports.ARGS_METADATA = "__ARGS__";
10
11
  exports.OPTION_META = "__OPTION_META__";
@@ -1,9 +1,9 @@
1
1
  import { Type } from "../types/Type";
2
2
  import { Container } from "./Container";
3
3
  export declare class ApplicationContext {
4
- protected module: any;
5
- protected container: Container;
4
+ protected readonly module: any;
5
+ protected readonly container: Container;
6
6
  constructor(module: any, container: Container);
7
7
  get<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | Function | string | symbol): TResult;
8
- run(args: string[]): Promise<any>;
8
+ run(args: string[]): Promise<string>;
9
9
  }
@@ -17,8 +17,11 @@ class ApplicationContext {
17
17
  this.container = container;
18
18
  }
19
19
  get(typeOrToken) {
20
- var _a;
21
- const res = (_a = this.container.getModule(this.module)) === null || _a === void 0 ? void 0 : _a.get(typeOrToken);
20
+ const module = this.container.getModule(this.module);
21
+ if (!module) {
22
+ throw new Error("Module not found");
23
+ }
24
+ const res = module.get(typeOrToken);
22
25
  if (!res) {
23
26
  throw new Error("Instance not found");
24
27
  }
@@ -1,5 +1,7 @@
1
1
  import { EnvConfig, PickProperties } from "../types";
2
- export type ConfigProperties = PickProperties<Config>;
2
+ export type ConfigProperties = Omit<PickProperties<Config>, "logLevel"> & {
3
+ logLevel?: Config["logLevel"];
4
+ };
3
5
  export declare abstract class Config {
4
6
  debug?: boolean;
5
7
  logLevel: "off" | "info" | "warn" | "error";
@@ -4,5 +4,4 @@ export declare class Container {
4
4
  hasModule(type: any): boolean;
5
5
  getModule(type: any): Module | undefined;
6
6
  addModule(type: any, module: Module): void;
7
- addController(moduleType: any, type: any): void;
8
7
  }
@@ -4,6 +4,15 @@ exports.Container = void 0;
4
4
  class Container {
5
5
  constructor() {
6
6
  this.modules = new Map();
7
+ // public addController(moduleType: any, type: any): void {
8
+ // const module = this.getModule(moduleType);
9
+ //
10
+ // if(!module) {
11
+ // return;
12
+ // }
13
+ //
14
+ // module.addController(type);
15
+ // }
7
16
  }
8
17
  hasModule(type) {
9
18
  return this.modules.has(type);
@@ -14,12 +23,5 @@ class Container {
14
23
  addModule(type, module) {
15
24
  this.modules.set(type, module);
16
25
  }
17
- addController(moduleType, type) {
18
- const module = this.getModule(moduleType);
19
- if (!module) {
20
- return;
21
- }
22
- module.addController(type);
23
- }
24
26
  }
25
27
  exports.Container = Container;
@@ -12,9 +12,8 @@ export declare class Factory {
12
12
  scanModuleDependencies(module: Module): Promise<void>;
13
13
  scanDynamicModules(): Promise<void>;
14
14
  scanRoutes(): Promise<void>;
15
- log(...args: any[]): void;
16
15
  init(): Promise<void>;
17
- run(args: string[]): Promise<any>;
16
+ run(args: string[]): Promise<string>;
18
17
  getContainer(): Container;
19
18
  static create(module: any): Promise<ApplicationContext>;
20
19
  }
@@ -58,8 +58,10 @@ class Factory {
58
58
  scanModuleDependencies(module) {
59
59
  return __awaiter(this, void 0, void 0, function* () {
60
60
  const providers = Reflect.getMetadata(env_1.MODULE_METADATA.PROVIDERS, module.type) || [];
61
+ // Logger.info(module.type.name, providers);
61
62
  module.addProvider(cli_1.Cli, this.cli);
62
63
  providers.forEach((providerType) => {
64
+ // Logger.info(" ->", (providerType as any).name);
63
65
  module.addProvider(providerType);
64
66
  });
65
67
  const controllers = Reflect.getMetadata(env_1.MODULE_METADATA.CONTROLLERS, module.type) || [];
@@ -115,6 +117,9 @@ class Factory {
115
117
  });
116
118
  const argsMeta = Reflect.getMetadata(env_1.ARGS_METADATA, type, name) || [];
117
119
  const command = this.cli.command(commandName);
120
+ command.help({
121
+ description: "Des"
122
+ });
118
123
  for (const argMeta of argsMeta) {
119
124
  if (argMeta.type === "option") {
120
125
  command.option(argMeta.name, argMeta.params);
@@ -136,11 +141,15 @@ class Factory {
136
141
  for (const controllerCommand of controllerCommands) {
137
142
  const { command: commandName, method, argsMeta } = controllerCommand;
138
143
  this.cli.command(commandName)
139
- .action((options, ...params) => {
144
+ .action((input) => {
140
145
  const args = [];
146
+ const params = Object.values(input.arguments());
141
147
  argsMeta.forEach((argMeta) => {
142
- if (argMeta.type === "option") {
143
- args[argMeta.index] = options[argMeta.name];
148
+ if (argMeta.type === "param") {
149
+ args[argMeta.index] = input.argument(argMeta.name);
150
+ }
151
+ else if (argMeta.type === "option") {
152
+ args[argMeta.index] = input.option(argMeta.name);
144
153
  }
145
154
  });
146
155
  return controller.instance[method](...args, ...params);
@@ -166,15 +175,6 @@ class Factory {
166
175
  }
167
176
  });
168
177
  }
169
- log(...args) {
170
- for (const [, module] of this.container.modules) {
171
- module.providers.forEach((provider) => {
172
- if (provider.instance.info) {
173
- provider.instance.info(...args);
174
- }
175
- });
176
- }
177
- }
178
178
  init() {
179
179
  return __awaiter(this, void 0, void 0, function* () {
180
180
  for (const [, module] of this.container.modules) {
@@ -1,10 +1,10 @@
1
+ import "reflect-metadata";
1
2
  import { Module } from "./Module";
2
3
  export declare class InstanceWrapper {
3
4
  private readonly module;
4
- private readonly token;
5
5
  private readonly provider;
6
6
  private _instance?;
7
- constructor(module: Module, token: any, provider: any, _instance?: any);
7
+ constructor(module: Module, provider: any, _instance?: any);
8
8
  get instance(): any;
9
9
  set instance(instance: any);
10
10
  }
@@ -1,18 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InstanceWrapper = void 0;
4
+ require("reflect-metadata");
4
5
  const env_1 = require("../env");
5
6
  class InstanceWrapper {
6
- constructor(module, token, provider, _instance) {
7
+ constructor(module, provider, _instance) {
7
8
  this.module = module;
8
- this.token = token;
9
9
  this.provider = provider;
10
10
  this._instance = _instance;
11
11
  }
12
12
  get instance() {
13
- if (!this.provider) {
14
- return null;
15
- }
16
13
  if (!this._instance) {
17
14
  const types = [
18
15
  ...Reflect.getMetadata(env_1.PARAMTYPES_METADATA, this.provider) || []
@@ -1,4 +1,4 @@
1
- import { LogService } from "../services/LogService";
1
+ import { LogService } from "../services";
2
2
  export declare class Logger {
3
3
  static install(ls: LogService): void;
4
4
  static log(...data: any[]): void;
@@ -34,19 +34,24 @@ class Module {
34
34
  }
35
35
  addProvider(provider, instance) {
36
36
  if ("provide" in provider && "useValue" in provider) {
37
- const wrapper = new InstanceWrapper_1.InstanceWrapper(this, provider.provide, provider.provide, provider.useValue);
37
+ const wrapper = new InstanceWrapper_1.InstanceWrapper(this, provider.provide, provider.useValue);
38
+ this.providers.set(provider.provide, wrapper);
39
+ return;
40
+ }
41
+ if ("provide" in provider && "useClass" in provider) {
42
+ const wrapper = new InstanceWrapper_1.InstanceWrapper(this, provider.useClass);
38
43
  this.providers.set(provider.provide, wrapper);
39
44
  return;
40
45
  }
41
46
  const token = Reflect.getMetadata("INJECT_TOKEN", provider) || provider;
42
- const wrapper = new InstanceWrapper_1.InstanceWrapper(this, token, provider, instance);
47
+ const wrapper = new InstanceWrapper_1.InstanceWrapper(this, provider, instance);
43
48
  this.providers.set(token, wrapper);
44
49
  }
45
50
  addInjection() {
46
51
  //
47
52
  }
48
53
  addController(type) {
49
- this.controllers.set(type, new InstanceWrapper_1.InstanceWrapper(this, type, type));
54
+ this.controllers.set(type, new InstanceWrapper_1.InstanceWrapper(this, type));
50
55
  for (const name of Object.getOwnPropertyNames(type.prototype)) {
51
56
  const descriptor = Object.getOwnPropertyDescriptor(type.prototype, name);
52
57
  if (!descriptor) {
@@ -1,6 +1,3 @@
1
- import { DI } from "./DI";
2
- import { PresetServiceSearchOptions as SearchOptions } from "../services/PresetService";
3
- import { EnvConfig } from "../types";
4
1
  type TextOption = {
5
2
  type: "string" | "number" | "int";
6
3
  message?: string;
@@ -23,7 +20,7 @@ type SelectOption = {
23
20
  default?: string;
24
21
  };
25
22
  type AnyOption = TextOption | ConfirmOption | SelectOption;
26
- declare class Preset {
23
+ export declare abstract class Preset {
27
24
  id: string;
28
25
  name: string;
29
26
  version: string;
@@ -36,11 +33,7 @@ declare class Preset {
36
33
  };
37
34
  volumes?: string[];
38
35
  volumeOptions?: string[];
39
- constructor(data: any);
40
- save(): Promise<void>;
41
- getImageName(buildArgs?: EnvConfig): string;
42
- static install(di: DI): void;
43
- static search(options: SearchOptions): Promise<any[]>;
44
- static searchOne(options: SearchOptions): Promise<any>;
36
+ protected constructor(data: any);
37
+ abstract save(): Promise<void>;
45
38
  }
46
- export { Preset };
39
+ export {};
@@ -1,17 +1,6 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.Preset = void 0;
13
- const PresetService_1 = require("../services/PresetService");
14
- let _di;
15
4
  class Preset {
16
5
  constructor(data) {
17
6
  this.id = data.id;
@@ -23,22 +12,5 @@ class Preset {
23
12
  this.volumes = data.volumes;
24
13
  this.volumeOptions = data.volumeOptions;
25
14
  }
26
- save() {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- return _di.resolveService(PresetService_1.PresetService).save(this);
29
- });
30
- }
31
- getImageName(buildArgs) {
32
- return _di.resolveService(PresetService_1.PresetService).getImageName(this, buildArgs);
33
- }
34
- static install(di) {
35
- _di = di;
36
- }
37
- static search(options) {
38
- return _di.resolveService(PresetService_1.PresetService).search(options);
39
- }
40
- static searchOne(options) {
41
- return _di.resolveService(PresetService_1.PresetService).searchOne(options);
42
- }
43
15
  }
44
16
  exports.Preset = Preset;
@@ -1,5 +1,5 @@
1
1
  import { PickProperties, EnvConfig } from "../types";
2
- type ProjectProperties = Omit<PickProperties<Project>, "containerName">;
2
+ export type ProjectProperties = Omit<PickProperties<Project>, "containerName">;
3
3
  export declare abstract class Project {
4
4
  id: string;
5
5
  name: string;
@@ -33,4 +33,3 @@ export declare abstract class Project {
33
33
  }
34
34
  export declare const PROJECT_TYPE_DOCKERFILE = "dockerfile";
35
35
  export declare const PROJECT_TYPE_IMAGE = "image";
36
- export {};
@@ -1,6 +1,5 @@
1
1
  export * from "./Config";
2
2
  export * from "./Container";
3
- export * from "./DI";
4
3
  export * from "./FileSystem";
5
4
  export * from "./FS";
6
5
  export * from "./FSManager";
@@ -16,7 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Config"), exports);
18
18
  __exportStar(require("./Container"), exports);
19
- __exportStar(require("./DI"), exports);
20
19
  __exportStar(require("./FileSystem"), exports);
21
20
  __exportStar(require("./FS"), exports);
22
21
  __exportStar(require("./FSManager"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wocker/core",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "author": "Kris Papercut <krispcut@gmail.com>",
5
5
  "description": "Core of wocker",
6
6
  "license": "MIT",
@@ -19,19 +19,24 @@
19
19
  },
20
20
  "scripts": {
21
21
  "prepare": "npm run build",
22
- "watch": "tsc -w",
23
- "build": "tsc",
24
- "test": "echo \"Error: no test specified\" && exit 1"
22
+ "build": "tsc --project tsconfig.build.json",
23
+ "watch": "tsc -w --project tsconfig.build.json",
24
+ "watch:test": "jest --colors --watchAll --coverage",
25
+ "test": "jest --colors"
25
26
  },
26
27
  "dependencies": {
27
- "@kearisp/cli": "^1.0.7",
28
+ "@kearisp/cli": "^2.0.4",
28
29
  "fs": "^0.0.1-security",
29
30
  "path": "^0.12.7",
30
31
  "reflect-metadata": "^0.2.1"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@types/dockerode": "^3.3.23",
35
+ "@types/jest": "^29.5.12",
34
36
  "@types/node": "^20.11.7",
35
- "typescript": "^5.4.4"
37
+ "jest": "^29.7.0",
38
+ "ts-jest": "^29.1.2",
39
+ "ts-node": "^10.9.2",
40
+ "typescript": "^5.4.5"
36
41
  }
37
42
  }
package/lib/makes/DI.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import "reflect-metadata";
2
- declare class DI {
3
- private services;
4
- resolveService<T>(key: any): T;
5
- registerService(key: any, service: any): void;
6
- }
7
- export { DI };
package/lib/makes/DI.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DI = void 0;
4
- require("reflect-metadata");
5
- class DI {
6
- constructor() {
7
- this.services = new Map();
8
- }
9
- resolveService(key) {
10
- let res = this.services.get(key);
11
- if (!res) {
12
- const types = Reflect.getMetadata("design:paramtypes", key);
13
- if (types && types.length > 0) {
14
- types.forEach((type) => {
15
- this.resolveService(type);
16
- });
17
- }
18
- res = new key(this);
19
- this.services.set(key, res);
20
- }
21
- return res;
22
- }
23
- registerService(key, service) {
24
- this.services.set(key, service);
25
- }
26
- }
27
- exports.DI = DI;