@wocker/core 1.0.8 → 1.0.10

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,15 +1,13 @@
1
- import { MODULE_METADATA } from "../env";
1
+ import { MODULE_METADATA, PLUGIN_NAME_METADATA } from "../env";
2
2
  import { Provider } from "../types/Provider";
3
- import { Type } from "../types/Type";
4
- type Config = {
5
- [MODULE_METADATA.NAME]?: string;
3
+ export type ModuleConfig = {
4
+ /**
5
+ * @deprecated
6
+ */
7
+ [PLUGIN_NAME_METADATA]?: string;
6
8
  [MODULE_METADATA.CONTROLLERS]?: any[];
7
9
  [MODULE_METADATA.PROVIDERS]?: Provider[];
8
10
  [MODULE_METADATA.IMPORTS]?: any[];
9
11
  [MODULE_METADATA.EXPORTS]?: any[];
10
12
  };
11
- export type DynamicModule = {
12
- providers?: any[];
13
- };
14
- export declare const Module: (config: Config) => <T extends Type>(Target: T) => void;
15
- export {};
13
+ export declare const Module: (config: ModuleConfig) => ClassDecorator;
@@ -3,14 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Module = void 0;
4
4
  const env_1 = require("../env");
5
5
  const Module = (config) => {
6
- const { [env_1.MODULE_METADATA.NAME]: name, [env_1.MODULE_METADATA.CONTROLLERS]: controllers = [], [env_1.MODULE_METADATA.PROVIDERS]: providers = [], [env_1.MODULE_METADATA.IMPORTS]: imports = [], [env_1.MODULE_METADATA.EXPORTS]: exports = [] } = config;
7
- return (Target) => {
8
- Reflect.defineMetadata("isModule", true, Target);
9
- Reflect.defineMetadata(env_1.MODULE_METADATA.NAME, name, Target);
10
- Reflect.defineMetadata(env_1.MODULE_METADATA.IMPORTS, imports, Target);
11
- Reflect.defineMetadata(env_1.MODULE_METADATA.CONTROLLERS, controllers, Target);
12
- Reflect.defineMetadata(env_1.MODULE_METADATA.PROVIDERS, providers, Target);
13
- Reflect.defineMetadata(env_1.MODULE_METADATA.EXPORTS, exports, Target);
6
+ const { [env_1.PLUGIN_NAME_METADATA]: name, [env_1.MODULE_METADATA.CONTROLLERS]: controllers = [], [env_1.MODULE_METADATA.PROVIDERS]: providers = [], [env_1.MODULE_METADATA.IMPORTS]: imports = [], [env_1.MODULE_METADATA.EXPORTS]: exports = [] } = config;
7
+ return (target) => {
8
+ if (name) {
9
+ Reflect.defineMetadata(env_1.PLUGIN_NAME_METADATA, name, target);
10
+ }
11
+ Reflect.defineMetadata("isModule", true, target);
12
+ Reflect.defineMetadata(env_1.MODULE_METADATA.IMPORTS, imports, target);
13
+ Reflect.defineMetadata(env_1.MODULE_METADATA.CONTROLLERS, controllers, target);
14
+ Reflect.defineMetadata(env_1.MODULE_METADATA.PROVIDERS, providers, target);
15
+ Reflect.defineMetadata(env_1.MODULE_METADATA.EXPORTS, exports, target);
14
16
  };
15
17
  };
16
18
  exports.Module = Module;
@@ -0,0 +1,7 @@
1
+ import { ModuleConfig } from "./Module";
2
+ import { PLUGIN_NAME_METADATA } from "../env";
3
+ type PluginConfig = ModuleConfig & {
4
+ [PLUGIN_NAME_METADATA]: string;
5
+ };
6
+ export declare const Plugin: (config: PluginConfig) => ClassDecorator;
7
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.Plugin = void 0;
15
+ const Module_1 = require("./Module");
16
+ const env_1 = require("../env");
17
+ const Plugin = (config) => {
18
+ const { name } = config, rest = __rest(config, ["name"]);
19
+ return (target) => {
20
+ Reflect.defineMetadata("isPlugin", true, target);
21
+ Reflect.defineMetadata(env_1.PLUGIN_NAME_METADATA, name, target);
22
+ (0, Module_1.Module)(rest)(target);
23
+ };
24
+ };
25
+ exports.Plugin = Plugin;
@@ -5,3 +5,4 @@ export * from "./Inject";
5
5
  export * from "./Injectable";
6
6
  export * from "./Module";
7
7
  export * from "./Option";
8
+ export * from "./Plugin";
@@ -21,3 +21,4 @@ __exportStar(require("./Inject"), exports);
21
21
  __exportStar(require("./Injectable"), exports);
22
22
  __exportStar(require("./Module"), exports);
23
23
  __exportStar(require("./Option"), exports);
24
+ __exportStar(require("./Plugin"), exports);
package/lib/env.d.ts CHANGED
@@ -9,6 +9,7 @@ export declare const PARAMTYPES_METADATA = "design:paramtypes";
9
9
  export declare const SELF_DECLARED_DEPS_METADATA = "self:paramtypes";
10
10
  export declare const INJECT_TOKEN_METADATA = "INJECT_TOKEN";
11
11
  export declare const PLUGIN_DIR_KEY = "PLUGIN_DIR";
12
+ export declare const PLUGIN_NAME_METADATA = "name";
12
13
  export declare enum MODULE_METADATA {
13
14
  NAME = "name",
14
15
  IMPORTS = "imports",
package/lib/env.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MODULE_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_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__";
@@ -12,6 +12,7 @@ exports.PARAMTYPES_METADATA = "design:paramtypes";
12
12
  exports.SELF_DECLARED_DEPS_METADATA = "self:paramtypes";
13
13
  exports.INJECT_TOKEN_METADATA = "INJECT_TOKEN";
14
14
  exports.PLUGIN_DIR_KEY = "PLUGIN_DIR";
15
+ exports.PLUGIN_NAME_METADATA = "name";
15
16
  var MODULE_METADATA;
16
17
  (function (MODULE_METADATA) {
17
18
  MODULE_METADATA["NAME"] = "name";
@@ -0,0 +1,9 @@
1
+ import { Type } from "../types/Type";
2
+ import { Container } from "./Container";
3
+ export declare class ApplicationContext {
4
+ protected module: any;
5
+ protected container: Container;
6
+ constructor(module: any, container: Container);
7
+ get<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | Function | string | symbol): TResult;
8
+ run(args: string[]): Promise<any>;
9
+ }
@@ -0,0 +1,34 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApplicationContext = void 0;
13
+ const cli_1 = require("@kearisp/cli");
14
+ class ApplicationContext {
15
+ constructor(module, container) {
16
+ this.module = module;
17
+ this.container = container;
18
+ }
19
+ get(typeOrToken) {
20
+ var _a;
21
+ const res = (_a = this.container.getModule(this.module)) === null || _a === void 0 ? void 0 : _a.get(typeOrToken);
22
+ if (!res) {
23
+ throw new Error("Instance not found");
24
+ }
25
+ return res;
26
+ }
27
+ run(args) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const cli = this.get(cli_1.Cli);
30
+ return cli.run(args);
31
+ });
32
+ }
33
+ }
34
+ exports.ApplicationContext = ApplicationContext;
@@ -0,0 +1,26 @@
1
+ import { EnvConfig, PickProperties } from "../types";
2
+ export type ConfigProperties = PickProperties<Config>;
3
+ export declare abstract class Config {
4
+ debug?: boolean;
5
+ logLevel: "off" | "info" | "warn" | "error";
6
+ plugins: string[];
7
+ projects: {
8
+ id: string;
9
+ name?: string;
10
+ src: string;
11
+ }[];
12
+ meta?: EnvConfig;
13
+ env?: EnvConfig;
14
+ protected constructor(data: ConfigProperties);
15
+ addPlugin(plugin: string): void;
16
+ removePlugin(removePlugin: string): void;
17
+ setProject(id: string, path: string): void;
18
+ getMeta(name: string, defaultValue: string): string;
19
+ setMeta(name: string, value: string): void;
20
+ unsetMeta(name: string): void;
21
+ getEnv(name: string, defaultValue: string): string;
22
+ setEnv(name: string, value: string): void;
23
+ unsetEnv(name: string): void;
24
+ abstract save(): Promise<void>;
25
+ toJson(): ConfigProperties;
26
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Config = void 0;
4
+ class Config {
5
+ constructor(data) {
6
+ this.logLevel = "off";
7
+ this.plugins = [];
8
+ this.projects = [];
9
+ Object.assign(this, data);
10
+ }
11
+ addPlugin(plugin) {
12
+ if (!this.plugins) {
13
+ this.plugins = [];
14
+ }
15
+ if (this.plugins.includes(plugin)) {
16
+ return;
17
+ }
18
+ this.plugins.push(plugin);
19
+ }
20
+ removePlugin(removePlugin) {
21
+ this.plugins = this.plugins.filter((plugin) => plugin !== removePlugin);
22
+ }
23
+ setProject(id, path) {
24
+ this.projects = [
25
+ ...this.projects.filter((project) => {
26
+ return project.id !== id && project.src !== path;
27
+ }),
28
+ {
29
+ id,
30
+ src: path
31
+ }
32
+ ];
33
+ }
34
+ getMeta(name, defaultValue) {
35
+ if (!this.meta || !(name in this.meta)) {
36
+ return defaultValue;
37
+ }
38
+ return this.meta[name];
39
+ }
40
+ setMeta(name, value) {
41
+ if (!this.meta) {
42
+ this.meta = {};
43
+ }
44
+ this.meta[name] = value;
45
+ }
46
+ unsetMeta(name) {
47
+ if (!this.meta || !(name in this.meta)) {
48
+ return;
49
+ }
50
+ delete this.meta[name];
51
+ if (Object.keys(this.meta).length === 0) {
52
+ delete this.meta;
53
+ }
54
+ }
55
+ getEnv(name, defaultValue) {
56
+ if (!this.env || !(name in this.env)) {
57
+ return defaultValue;
58
+ }
59
+ return this.env[name];
60
+ }
61
+ setEnv(name, value) {
62
+ if (!this.env) {
63
+ this.env = {};
64
+ }
65
+ this.env[name] = value;
66
+ }
67
+ unsetEnv(name) {
68
+ if (!this.env || !(name in this.env)) {
69
+ return;
70
+ }
71
+ delete this.env[name];
72
+ if (Object.keys(this.env).length === 0) {
73
+ delete this.env;
74
+ }
75
+ }
76
+ toJson() {
77
+ return {
78
+ debug: this.debug,
79
+ logLevel: this.logLevel,
80
+ plugins: this.plugins,
81
+ projects: this.projects,
82
+ meta: this.meta,
83
+ env: this.env
84
+ };
85
+ }
86
+ }
87
+ exports.Config = Config;
package/lib/makes/FS.d.ts CHANGED
@@ -8,12 +8,13 @@ type ReadFileOptions = Abortable & {
8
8
  encoding?: BufferEncoding;
9
9
  flag?: string;
10
10
  };
11
- declare class FS {
11
+ export declare class FS {
12
12
  static mkdir(path: PathLike, options?: MakeDirectoryOptions): Promise<unknown>;
13
13
  static readFile(filePath: PathOrFileDescriptor, options?: ReadFileOptions): Promise<string | Buffer>;
14
14
  static writeFile(filePath: PathOrFileDescriptor, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): Promise<unknown>;
15
15
  static readJSON(...paths: string[]): Promise<any>;
16
16
  static writeJSON(filePath: PathOrFileDescriptor, data: any, options?: WriteFileOptions): Promise<void>;
17
+ static readdir(path: PathLike): Promise<string[]>;
17
18
  static rm(path: PathLike, options?: RmOptions): Promise<void>;
18
19
  }
19
- export { FS };
20
+ export {};
package/lib/makes/FS.js CHANGED
@@ -31,15 +31,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
32
  });
33
33
  };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
34
37
  Object.defineProperty(exports, "__esModule", { value: true });
35
38
  exports.FS = void 0;
36
- const fs_1 = require("fs");
39
+ const fs_1 = __importDefault(require("fs"));
37
40
  const Path = __importStar(require("path"));
38
41
  class FS {
39
42
  static mkdir(path, options) {
40
43
  return __awaiter(this, void 0, void 0, function* () {
41
44
  return new Promise((resolve, reject) => {
42
- (0, fs_1.mkdir)(path, options, (err) => {
45
+ fs_1.default.mkdir(path, options, (err) => {
43
46
  if (err) {
44
47
  reject(err);
45
48
  return;
@@ -52,7 +55,7 @@ class FS {
52
55
  static readFile(filePath, options) {
53
56
  return __awaiter(this, void 0, void 0, function* () {
54
57
  return new Promise((resolve, reject) => {
55
- (0, fs_1.readFile)(filePath, options, (err, res) => {
58
+ fs_1.default.readFile(filePath, options, (err, res) => {
56
59
  if (err) {
57
60
  reject(err);
58
61
  return;
@@ -73,10 +76,10 @@ class FS {
73
76
  resolve(undefined);
74
77
  };
75
78
  if (options) {
76
- (0, fs_1.writeFile)(filePath, data, options, callback);
79
+ fs_1.default.writeFile(filePath, data, options, callback);
77
80
  }
78
81
  else {
79
- (0, fs_1.writeFile)(filePath, data, callback);
82
+ fs_1.default.writeFile(filePath, data, callback);
80
83
  }
81
84
  });
82
85
  });
@@ -85,7 +88,7 @@ class FS {
85
88
  return __awaiter(this, void 0, void 0, function* () {
86
89
  const res = yield new Promise((resolve, reject) => {
87
90
  const filePath = Path.join(...paths);
88
- (0, fs_1.readFile)(filePath, (err, data) => {
91
+ fs_1.default.readFile(filePath, (err, data) => {
89
92
  if (err) {
90
93
  reject(err);
91
94
  return;
@@ -108,14 +111,28 @@ class FS {
108
111
  resolve(undefined);
109
112
  };
110
113
  if (options) {
111
- (0, fs_1.writeFile)(filePath, json, options, callback);
114
+ fs_1.default.writeFile(filePath, json, options, callback);
112
115
  }
113
116
  else {
114
- (0, fs_1.writeFile)(filePath, json, callback);
117
+ fs_1.default.writeFile(filePath, json, callback);
115
118
  }
116
119
  });
117
120
  });
118
121
  }
122
+ static readdir(path) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ return new Promise((resolve, reject) => {
125
+ fs_1.default.readdir(path, (err, files) => {
126
+ if (!err) {
127
+ resolve(files);
128
+ }
129
+ else {
130
+ reject(err);
131
+ }
132
+ });
133
+ });
134
+ });
135
+ }
119
136
  static rm(path, options) {
120
137
  return __awaiter(this, void 0, void 0, function* () {
121
138
  return new Promise((resolve, reject) => {
@@ -127,10 +144,10 @@ class FS {
127
144
  resolve(undefined);
128
145
  };
129
146
  if (options) {
130
- (0, fs_1.rm)(path, options, callback);
147
+ fs_1.default.rm(path, options, callback);
131
148
  }
132
149
  else {
133
- (0, fs_1.rm)(path, callback);
150
+ fs_1.default.rm(path, callback);
134
151
  }
135
152
  });
136
153
  });
@@ -1,8 +1,9 @@
1
1
  /// <reference types="node" />
2
2
  import fs, { createReadStream, MakeDirectoryOptions, RmOptions } from "fs";
3
- declare class FSManager {
4
- protected source: string;
5
- protected destination: string;
3
+ import { FileSystem } from "./FileSystem";
4
+ export declare class FSManager {
5
+ readonly source: FileSystem;
6
+ readonly destination: FileSystem;
6
7
  constructor(source: string, destination: string);
7
8
  path(...parts: string[]): string;
8
9
  mkdir(path: string, options?: MakeDirectoryOptions): Promise<unknown>;
@@ -15,4 +16,3 @@ declare class FSManager {
15
16
  createWriteStream(...parts: string[]): fs.WriteStream;
16
17
  createReadStream(path: string, options?: Parameters<typeof createReadStream>[1]): fs.ReadStream;
17
18
  }
18
- export { FSManager };
@@ -34,18 +34,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  exports.FSManager = void 0;
36
36
  const fs_1 = __importStar(require("fs"));
37
- const Path = __importStar(require("path"));
37
+ const FileSystem_1 = require("./FileSystem");
38
38
  class FSManager {
39
39
  constructor(source, destination) {
40
- this.source = source;
41
- this.destination = destination;
40
+ this.source = new FileSystem_1.FileSystem(source);
41
+ this.destination = new FileSystem_1.FileSystem(destination);
42
42
  }
43
43
  path(...parts) {
44
- return Path.join(this.destination, ...parts);
44
+ return this.destination.path(...parts);
45
45
  }
46
46
  mkdir(path_1) {
47
47
  return __awaiter(this, arguments, void 0, function* (path, options = {}) {
48
- const fullPath = Path.join(this.destination, path);
48
+ const fullPath = this.path(path);
49
49
  return new Promise((resolve, reject) => {
50
50
  (0, fs_1.mkdir)(fullPath, options, (err) => {
51
51
  if (err) {
@@ -59,7 +59,7 @@ class FSManager {
59
59
  }
60
60
  readdir(path) {
61
61
  return __awaiter(this, void 0, void 0, function* () {
62
- const filePath = Path.join(this.destination, path);
62
+ const filePath = this.path(path);
63
63
  return new Promise((resolve, reject) => {
64
64
  (0, fs_1.readdir)(filePath, (err, files) => {
65
65
  if (err) {
@@ -72,16 +72,16 @@ class FSManager {
72
72
  });
73
73
  }
74
74
  exists(path) {
75
- const fullPath = Path.join(this.destination, path);
75
+ const fullPath = this.path(path);
76
76
  return (0, fs_1.existsSync)(fullPath);
77
77
  }
78
78
  copy(path) {
79
- const destination = Path.join(this.destination, path);
79
+ const destination = this.path(path);
80
80
  if ((0, fs_1.existsSync)(destination)) {
81
81
  return Promise.resolve();
82
82
  }
83
83
  return new Promise((resolve, reject) => {
84
- (0, fs_1.copyFile)(Path.join(this.source, path), destination, (err) => {
84
+ (0, fs_1.copyFile)(this.source.path(path), destination, (err) => {
85
85
  if (err) {
86
86
  reject(err);
87
87
  return;
@@ -92,7 +92,7 @@ class FSManager {
92
92
  }
93
93
  readJSON(path) {
94
94
  return __awaiter(this, void 0, void 0, function* () {
95
- const filePath = Path.join(this.destination, ...path);
95
+ const filePath = this.path(path);
96
96
  const res = yield new Promise((resolve, reject) => {
97
97
  (0, fs_1.readFile)(filePath, (err, data) => {
98
98
  if (err) {
@@ -108,7 +108,7 @@ class FSManager {
108
108
  writeJSON(path, data) {
109
109
  return __awaiter(this, void 0, void 0, function* () {
110
110
  const json = JSON.stringify(data, null, 4);
111
- const filePath = Path.join(this.destination, path);
111
+ const filePath = this.path(path);
112
112
  return new Promise((resolve, reject) => {
113
113
  (0, fs_1.writeFile)(filePath, json, (err) => {
114
114
  if (err) {
@@ -122,7 +122,7 @@ class FSManager {
122
122
  }
123
123
  rm(path_1) {
124
124
  return __awaiter(this, arguments, void 0, function* (path, options = {}) {
125
- const filePath = Path.join(this.destination, path);
125
+ const filePath = this.path(path);
126
126
  return new Promise((resolve, reject) => {
127
127
  fs_1.default.rm(filePath, options, (err) => {
128
128
  if (err) {
@@ -135,11 +135,11 @@ class FSManager {
135
135
  });
136
136
  }
137
137
  createWriteStream(...parts) {
138
- const filePath = Path.join(this.destination, ...parts);
138
+ const filePath = this.path(...parts);
139
139
  return (0, fs_1.createWriteStream)(filePath);
140
140
  }
141
141
  createReadStream(path, options) {
142
- const filePath = Path.join(this.destination, path);
142
+ const filePath = this.path(path);
143
143
  return (0, fs_1.createReadStream)(filePath, options);
144
144
  }
145
145
  }
@@ -1,3 +1,5 @@
1
+ import { ApplicationContext } from "./ApplicationContext";
2
+ import { Container } from "./Container";
1
3
  import { Module } from "./Module";
2
4
  export declare class Factory {
3
5
  private readonly cli;
@@ -13,5 +15,6 @@ export declare class Factory {
13
15
  log(...args: any[]): void;
14
16
  init(): Promise<void>;
15
17
  run(args: string[]): Promise<any>;
16
- static create(module: any): Promise<Factory>;
18
+ getContainer(): Container;
19
+ static create(module: any): Promise<ApplicationContext>;
17
20
  }
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Factory = void 0;
13
13
  const cli_1 = require("@kearisp/cli");
14
+ const ApplicationContext_1 = require("./ApplicationContext");
14
15
  const Container_1 = require("./Container");
15
16
  const Module_1 = require("./Module");
16
17
  const env_1 = require("../env");
@@ -98,7 +99,8 @@ class Factory {
98
99
  continue;
99
100
  }
100
101
  const commandName = Reflect.getMetadata(env_1.COMMAND_METADATA, descriptor.value);
101
- const completions = (Reflect.getMetadata(env_1.COMPLETION_METADATA, descriptor.value) || []).map((completion) => {
102
+ const completions = (Reflect.getMetadata(env_1.COMPLETION_METADATA, descriptor.value) || [])
103
+ .map((completion) => {
102
104
  return Object.assign(Object.assign({}, completion), { method: name });
103
105
  });
104
106
  if (completions.length > 0) {
@@ -190,11 +192,14 @@ class Factory {
190
192
  return this.cli.run(args);
191
193
  });
192
194
  }
195
+ getContainer() {
196
+ return this.container;
197
+ }
193
198
  static create(module) {
194
199
  return __awaiter(this, void 0, void 0, function* () {
195
200
  const factory = new this();
196
201
  yield factory.scan(module);
197
- return factory;
202
+ return new ApplicationContext_1.ApplicationContext(module, factory.getContainer());
198
203
  });
199
204
  }
200
205
  }
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import * as fs from "fs";
3
+ type ReaddirOptions = fs.ObjectEncodingOptions & {
4
+ recursive?: boolean | undefined;
5
+ };
6
+ export declare class FileSystem {
7
+ protected readonly source: string;
8
+ constructor(source: string);
9
+ path(...parts: string[]): string;
10
+ exists(...parts: string[]): boolean;
11
+ stat(...parts: string[]): fs.Stats;
12
+ mkdir(path: string, options?: fs.MakeDirectoryOptions): void;
13
+ readdir(...parts: string[]): Promise<unknown>;
14
+ readdirFiles(path?: string, options?: ReaddirOptions): Promise<string[]>;
15
+ }
16
+ export {};
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.FileSystem = void 0;
36
+ const fs = __importStar(require("fs"));
37
+ const Path = __importStar(require("path"));
38
+ class FileSystem {
39
+ constructor(source) {
40
+ this.source = source;
41
+ }
42
+ path(...parts) {
43
+ return Path.join(this.source, ...parts);
44
+ }
45
+ exists(...parts) {
46
+ const fullPath = this.path(...parts);
47
+ return fs.existsSync(fullPath);
48
+ }
49
+ stat(...parts) {
50
+ const fullPath = this.path(...parts);
51
+ return fs.statSync(fullPath);
52
+ }
53
+ mkdir(path, options) {
54
+ const fullPath = this.path(path);
55
+ fs.mkdirSync(fullPath, options);
56
+ }
57
+ readdir(...parts) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const fullPath = this.path(...parts);
60
+ return new Promise((resolve, reject) => {
61
+ fs.readdir(fullPath, (err, files) => {
62
+ if (err) {
63
+ reject(err);
64
+ return;
65
+ }
66
+ resolve(files);
67
+ });
68
+ });
69
+ });
70
+ }
71
+ readdirFiles() {
72
+ return __awaiter(this, arguments, void 0, function* (path = "", options) {
73
+ const fullPath = this.path(path);
74
+ return new Promise((resolve, reject) => {
75
+ fs.readdir(fullPath, options, (err, files) => {
76
+ if (err) {
77
+ reject(err);
78
+ return;
79
+ }
80
+ files = files.filter((path) => {
81
+ const stat = this.stat(path);
82
+ return stat.isFile();
83
+ });
84
+ resolve(files);
85
+ });
86
+ });
87
+ });
88
+ }
89
+ }
90
+ exports.FileSystem = FileSystem;
@@ -1,11 +1,6 @@
1
1
  import { PickProperties, EnvConfig } from "../types";
2
- import { DI } from "./DI";
3
- type SearchOptions = {
4
- id: string;
5
- name: string;
6
- path: string;
7
- };
8
- export declare class Project {
2
+ type ProjectProperties = Omit<PickProperties<Project>, "containerName">;
3
+ export declare abstract class Project {
9
4
  id: string;
10
5
  name: string;
11
6
  type: string;
@@ -19,7 +14,7 @@ export declare class Project {
19
14
  ports?: string[];
20
15
  volumes?: string[];
21
16
  metadata?: EnvConfig;
22
- protected constructor(data: PickProperties<Project>);
17
+ protected constructor(data: ProjectProperties);
23
18
  get containerName(): string;
24
19
  hasEnv(name: string): boolean;
25
20
  getEnv(name: string, defaultValue?: string): string | undefined;
@@ -33,11 +28,8 @@ export declare class Project {
33
28
  getVolumeByDestination(destination: string): string | undefined;
34
29
  volumeMount(...volumes: string[]): void;
35
30
  volumeUnmount(...volumes: string[]): void;
36
- save(): Promise<void>;
37
- static install(di: DI): void;
38
- static fromObject(data: any): Project;
39
- static search(params?: Partial<SearchOptions>): Promise<Project[]>;
40
- static searchOne(params: Partial<SearchOptions>): Promise<Project | null>;
31
+ abstract save(): Promise<void>;
32
+ toJSON(): ProjectProperties;
41
33
  }
42
34
  export declare const PROJECT_TYPE_DOCKERFILE = "dockerfile";
43
35
  export declare const PROJECT_TYPE_IMAGE = "image";
@@ -1,18 +1,7 @@
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.PROJECT_TYPE_IMAGE = exports.PROJECT_TYPE_DOCKERFILE = exports.Project = void 0;
13
4
  const volumeParse_1 = require("../utils/volumeParse");
14
- const services_1 = require("../services");
15
- let projectService;
16
5
  class Project {
17
6
  constructor(data) {
18
7
  this.id = data.id;
@@ -117,33 +106,22 @@ class Project {
117
106
  return !volumes.includes(mounted);
118
107
  });
119
108
  }
120
- save() {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- if (!projectService) {
123
- throw new Error("Dependency is missing");
124
- }
125
- yield projectService.save(this);
126
- });
127
- }
128
- static install(di) {
129
- projectService = di.resolveService(services_1.ProjectService);
130
- }
131
- static fromObject(data) {
132
- return new Project(data);
133
- }
134
- static search() {
135
- return __awaiter(this, arguments, void 0, function* (params = {}) {
136
- if (!projectService) {
137
- throw new Error("Dependency is missing");
138
- }
139
- return projectService.search(params);
140
- });
141
- }
142
- static searchOne(params) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const [project] = yield Project.search(params);
145
- return project || null;
146
- });
109
+ toJSON() {
110
+ return {
111
+ id: this.id,
112
+ name: this.name,
113
+ type: this.type,
114
+ path: this.path,
115
+ preset: this.preset,
116
+ imageName: this.imageName,
117
+ dockerfile: this.dockerfile,
118
+ scripts: this.scripts,
119
+ buildArgs: this.buildArgs,
120
+ env: this.env,
121
+ ports: this.ports,
122
+ volumes: this.volumes,
123
+ metadata: this.metadata
124
+ };
147
125
  }
148
126
  }
149
127
  exports.Project = Project;
@@ -1,9 +1,10 @@
1
+ export * from "./Config";
1
2
  export * from "./Container";
2
3
  export * from "./DI";
4
+ export * from "./FileSystem";
3
5
  export * from "./FS";
4
6
  export * from "./FSManager";
5
7
  export * from "./Logger";
6
- export * from "./Plugin";
7
8
  export * from "./Preset";
8
9
  export * from "./Project";
9
10
  export * from "./Factory";
@@ -14,12 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Config"), exports);
17
18
  __exportStar(require("./Container"), exports);
18
19
  __exportStar(require("./DI"), exports);
20
+ __exportStar(require("./FileSystem"), exports);
19
21
  __exportStar(require("./FS"), exports);
20
22
  __exportStar(require("./FSManager"), exports);
21
23
  __exportStar(require("./Logger"), exports);
22
- __exportStar(require("./Plugin"), exports);
23
24
  __exportStar(require("./Preset"), exports);
24
25
  __exportStar(require("./Project"), exports);
25
26
  __exportStar(require("./Factory"), exports);
@@ -1,22 +1,16 @@
1
- import { AppConfig } from "../types";
1
+ import { Config } from "../makes";
2
2
  type TypeMap = {
3
3
  [type: string]: string;
4
4
  };
5
5
  declare abstract class AppConfigService {
6
+ protected config?: Config;
6
7
  abstract dataPath(...args: string[]): string;
7
8
  abstract pluginsPath(...args: string[]): string;
8
9
  abstract getPWD(): string;
9
10
  abstract setPWD(pwd: string): void;
10
- abstract getAppConfig(): Promise<AppConfig>;
11
- abstract getMeta(name: string, defaultValue?: string): Promise<string | undefined>;
12
- abstract setMeta(name: string, value: string | number | undefined): Promise<void>;
13
- abstract getAllEnvVariables(): Promise<AppConfig["env"]>;
14
- abstract getEnvVariable(name: string, defaultValue?: string): Promise<string | undefined>;
15
- abstract setEnvVariable(name: string, value: string | number): Promise<void>;
16
- abstract setProjectConfig(id: string, path: string): Promise<void>;
17
11
  abstract getProjectTypes(): TypeMap;
18
12
  abstract registerProjectType(name: string, title?: string): void;
19
- abstract activatePlugin(name: string): Promise<void>;
20
- abstract deactivatePlugin(name: string): Promise<void>;
13
+ protected abstract loadConfig(): Promise<Config>;
14
+ getConfig(): Promise<Config>;
21
15
  }
22
16
  export { AppConfigService };
@@ -5,10 +5,27 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
8
17
  Object.defineProperty(exports, "__esModule", { value: true });
9
18
  exports.AppConfigService = void 0;
10
19
  const decorators_1 = require("../decorators");
11
20
  let AppConfigService = class AppConfigService {
21
+ getConfig() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ if (!this.config) {
24
+ this.config = yield this.loadConfig();
25
+ }
26
+ return this.config;
27
+ });
28
+ }
12
29
  };
13
30
  exports.AppConfigService = AppConfigService;
14
31
  exports.AppConfigService = AppConfigService = __decorate([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wocker/core",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "author": "Kris Papercut <krispcut@gmail.com>",
5
5
  "description": "Core of wocker",
6
6
  "license": "MIT",
@@ -32,6 +32,6 @@
32
32
  "devDependencies": {
33
33
  "@types/dockerode": "^3.3.23",
34
34
  "@types/node": "^20.11.7",
35
- "typescript": "^5.4.3"
35
+ "typescript": "^5.4.4"
36
36
  }
37
37
  }
@@ -1,4 +0,0 @@
1
- import { Cli } from "@kearisp/cli";
2
- export declare class Plugin {
3
- install(cli: Cli): void;
4
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Plugin = void 0;
4
- class Plugin {
5
- install(cli) {
6
- //
7
- }
8
- }
9
- exports.Plugin = Plugin;