@spinajs/configuration 1.1.2 → 1.1.7

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.
@@ -0,0 +1,7 @@
1
+ declare const config: {
2
+ configuration: {
3
+ isDevelopment: boolean;
4
+ isProduction: boolean;
5
+ };
6
+ };
7
+ export default config;
@@ -1,7 +1,10 @@
1
- module.exports = {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config = {
2
4
  configuration: {
3
5
  isDevelopment: process.env.NODE_ENV === "development",
4
- isProduction: process.env.NODE_ENV === "production"
6
+ isProduction: process.env.NODE_ENV === "production",
5
7
  }
6
8
  };
9
+ exports.default = config;
7
10
  //# sourceMappingURL=configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/config/configuration.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,GAAG;IACb,aAAa,EAAE;QACX,aAAa,EAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;QACtD,YAAY,EAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KACxD;CACJ,CAAA"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/config/configuration.ts"],"names":[],"mappings":";;AAAA,MAAM,MAAM,GAAG;IACX,aAAa,EAAE;QACX,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;QACrD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KACtD;CACJ,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -31,6 +31,14 @@ export declare class FrameworkConfiguration extends Configuration {
31
31
  * @returns { T | undefined }
32
32
  */
33
33
  get<T>(path: string[] | string, defaultValue?: T): T;
34
+ /**
35
+ * Sets at given path configuration value. Use when you want to override config
36
+ * loaded from files programatically
37
+ *
38
+ * @param path config path
39
+ * @param value value to set
40
+ */
41
+ set(path: string[] | string, value: any): void;
34
42
  resolveAsync(container: IContainer): Promise<void>;
35
43
  protected dir(toJoin: string): string;
36
44
  /**
@@ -34,7 +34,6 @@ const exceptions_1 = require("@spinajs/exceptions");
34
34
  const path_1 = require("path");
35
35
  const sources_1 = require("./sources");
36
36
  const types_1 = require("./types");
37
- const log_1 = require("@spinajs/log");
38
37
  const util_1 = require("./util");
39
38
  const _ = __importStar(require("lodash"));
40
39
  let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Configuration {
@@ -73,12 +72,21 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
73
72
  get(path, defaultValue) {
74
73
  return _.get(this.Config, path, defaultValue);
75
74
  }
75
+ /**
76
+ * Sets at given path configuration value. Use when you want to override config
77
+ * loaded from files programatically
78
+ *
79
+ * @param path config path
80
+ * @param value value to set
81
+ */
82
+ set(path, value) {
83
+ this.Config = _.set(this.Config, path, value);
84
+ }
76
85
  async resolveAsync(container) {
77
86
  if (!container.hasRegistered(sources_1.ConfigurationSource)) {
78
87
  throw new exceptions_1.InvalidOperation("No configuration sources configured. Please ensure that config module have any source to read from !");
79
88
  }
80
89
  this.Sources = await container.resolve(Array.ofType(sources_1.ConfigurationSource), [this.RunApp, this.CustomConfigPaths, this.AppBaseDir]);
81
- log_1.Log.trace(`Found ${this.Sources.map(x => x.constructor.name)} log sources`, "Configuration");
82
90
  await Promise.all(this.Sources.map(s => s.Load())).then(result => {
83
91
  result.map(c => _.merge(this.Config, c));
84
92
  });
@@ -87,7 +95,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
87
95
  await super.resolveAsync(container);
88
96
  }
89
97
  dir(toJoin) {
90
- return (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(this.BaseDir), toJoin));
98
+ return (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(this.AppBaseDir), toJoin));
91
99
  }
92
100
  /**
93
101
  * adds app dirs to system.dirs config
@@ -108,7 +116,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
108
116
  for (const prop of Object.keys(this.Config)) {
109
117
  const subconfig = this.Config[prop];
110
118
  if (_.isFunction(subconfig.configure)) {
111
- subconfig.configure.apply(this.Config, [subconfig]);
119
+ subconfig.configure.apply(this);
112
120
  }
113
121
  }
114
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,12 @@
1
+ /**
2
+ * We export default configuration for webpack modules
3
+ * Normally we load configuration from disk via filesystem
4
+ * But webpack is bundlig all files into one.
5
+ *
6
+ * When we export, we can see configuration variable
7
+ * in webpack module cache and webpack config loader can see it
8
+ */
9
+ export * from "./config/configuration";
1
10
  export * from "./types";
2
11
  export * from "./sources";
3
12
  export * from "./decorators";
package/lib/index.js CHANGED
@@ -10,6 +10,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
+ /**
14
+ * We export default configuration for webpack modules
15
+ * Normally we load configuration from disk via filesystem
16
+ * But webpack is bundlig all files into one.
17
+ *
18
+ * When we export, we can see configuration variable
19
+ * in webpack module cache and webpack config loader can see it
20
+ */
21
+ __exportStar(require("./config/configuration"), exports);
13
22
  __exportStar(require("./types"), exports);
14
23
  __exportStar(require("./sources"), exports);
15
24
  __exportStar(require("./decorators"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,yDAAuC;AACvC,0CAAwB;AACxB,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC"}
package/lib/sources.d.ts CHANGED
@@ -9,24 +9,14 @@ export declare abstract class BaseFileSource extends ConfigurationSource {
9
9
  * Configuration base dir, where to look for app config
10
10
  */
11
11
  BaseDir: string;
12
- /**
13
- * Default dirs to check for configuration files
14
- */
15
- protected CONFIG_DIRS: string[];
12
+ protected CommonDirs: string[];
13
+ protected BasePath: string;
16
14
  constructor(RunApp?: string, CustomConfigPaths?: string[], appBaseDir?: string);
17
15
  protected load(extension: string, callback: (file: string) => any): {};
18
16
  }
19
17
  export declare class JsFileSource extends BaseFileSource {
20
- /**
21
- * Default dirs to check for configuration files
22
- */
23
- protected CONFIG_DIRS: string[];
24
18
  Load(): Promise<any>;
25
19
  }
26
20
  export declare class JsonFileSource extends BaseFileSource {
27
- /**
28
- * Default dirs to check for configuration files
29
- */
30
- protected CONFIG_DIRS: string[];
31
21
  Load(): Promise<any>;
32
22
  }
package/lib/sources.js CHANGED
@@ -33,25 +33,12 @@ const path_1 = require("path");
33
33
  const util_1 = require("./util");
34
34
  const fs = __importStar(require("fs"));
35
35
  const path = __importStar(require("path"));
36
- const log_1 = require("@spinajs/log");
36
+ const log_1 = require("@spinajs/log/lib/log");
37
37
  function mergeArrays(target, source) {
38
38
  if (_.isArray(target)) {
39
39
  return target.concat(source);
40
40
  }
41
41
  }
42
- const DEFAULT_CONFIG_DIRS = [
43
- // this module path
44
- (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(__dirname), '/../config')),
45
- // for tests, in src dir
46
- (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(__dirname), '/config')),
47
- // other @spinajs modules paths
48
- 'node_modules/@spinajs/*/lib/config',
49
- // project paths - last to allow overwrite @spinajs conf
50
- 'lib/config',
51
- 'dist/config',
52
- 'build/config',
53
- 'config',
54
- ];
55
42
  class ConfigurationSource {
56
43
  }
57
44
  exports.ConfigurationSource = ConfigurationSource;
@@ -65,24 +52,33 @@ class BaseFileSource extends ConfigurationSource {
65
52
  * Configuration base dir, where to look for app config
66
53
  */
67
54
  this.BaseDir = './';
68
- /**
69
- * Default dirs to check for configuration files
70
- */
71
- this.CONFIG_DIRS = [];
55
+ this.CommonDirs = [
56
+ // this module path
57
+ (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(__dirname), '/../config')),
58
+ // for tests, in src dir
59
+ (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(__dirname), '/config')),
60
+ // other @spinajs modules paths
61
+ 'node_modules/@spinajs/*/lib/config',
62
+ // project paths - last to allow overwrite @spinajs conf
63
+ 'lib/config',
64
+ 'dist/config',
65
+ 'build/config',
66
+ 'config',
67
+ ];
68
+ this.BasePath = "";
69
+ this.BasePath = (0, util_1.findBasePath)(process.cwd());
72
70
  }
73
71
  load(extension, callback) {
74
72
  const config = {};
75
- let dirs = this.CONFIG_DIRS;
76
- const basePath = (0, util_1.findBasePath)(process.cwd());
77
73
  if (this.RunApp) {
78
- dirs = dirs.concat([(0, path_1.join)(this.appBaseDir, `/${this.RunApp}/config`)]);
74
+ this.CommonDirs = this.CommonDirs.concat([(0, path_1.join)(this.appBaseDir, `/${this.RunApp}/config`)]);
79
75
  }
80
76
  if (this.CustomConfigPaths) {
81
- dirs = dirs.concat(this.CustomConfigPaths);
77
+ this.CommonDirs = this.CommonDirs.concat(this.CustomConfigPaths);
82
78
  }
83
- dirs.map(f => path.isAbsolute(f) ? f : (0, path_1.join)(basePath, f))
79
+ this.CommonDirs.map(f => path.isAbsolute(f) ? f : (0, path_1.join)(this.BasePath, f))
84
80
  // get all config files
85
- .map(d => glob_1.glob.sync(d + `/**/${extension}`))
81
+ .map(d => glob_1.glob.sync(path.join(d, `/**/${extension}`)))
86
82
  // flatten files
87
83
  .reduce((prev, current) => {
88
84
  return prev.concat(_.flattenDeep(current));
@@ -92,19 +88,12 @@ class BaseFileSource extends ConfigurationSource {
92
88
  .map(callback)
93
89
  .filter((v) => v !== null)
94
90
  // load & merge configs
95
- .map((c) => _.mergeWith(config, c, mergeArrays));
91
+ .map((c) => { var _a; return _.mergeWith(config, (_a = c.default) !== null && _a !== void 0 ? _a : c, mergeArrays); });
96
92
  return config;
97
93
  }
98
94
  }
99
95
  exports.BaseFileSource = BaseFileSource;
100
96
  let JsFileSource = class JsFileSource extends BaseFileSource {
101
- constructor() {
102
- super(...arguments);
103
- /**
104
- * Default dirs to check for configuration files
105
- */
106
- this.CONFIG_DIRS = DEFAULT_CONFIG_DIRS;
107
- }
108
97
  async Load() {
109
98
  const common = this.load('!(*.dev|*.prod).js', _load);
110
99
  if (process.env.NODE_ENV) {
@@ -117,7 +106,7 @@ let JsFileSource = class JsFileSource extends BaseFileSource {
117
106
  }
118
107
  return common;
119
108
  function _load(file) {
120
- log_1.Log.trace(`Found configuration file at ${file}`, "Configuration");
109
+ log_1.Log.trace(`Trying to load file ${file}`, "Configuration");
121
110
  (0, util_1.uncache)(file);
122
111
  return require(file);
123
112
  }
@@ -128,31 +117,23 @@ JsFileSource = __decorate([
128
117
  ], JsFileSource);
129
118
  exports.JsFileSource = JsFileSource;
130
119
  let JsonFileSource = class JsonFileSource extends BaseFileSource {
131
- constructor() {
132
- super(...arguments);
133
- /**
134
- * Default dirs to check for configuration files
135
- */
136
- this.CONFIG_DIRS = DEFAULT_CONFIG_DIRS;
137
- }
138
120
  async Load() {
139
121
  const common = this.load('!(*.dev|*.prod).json', _load);
140
122
  if (process.env.NODE_ENV) {
141
123
  if (process.env.NODE_ENV === "development") {
142
- return _.merge(common, this.load("*.dev.json", _load));
124
+ return _.mergeWith(common, this.load("*.dev.json", _load), mergeArrays);
143
125
  }
144
126
  else if (process.env.NODE_ENV === "production") {
145
- return _.merge(common, this.load("*.prod.json", _load));
127
+ return _.mergeWith(common, this.load("*.prod.json", _load), mergeArrays);
146
128
  }
147
129
  }
148
130
  return common;
149
131
  function _load(file) {
150
132
  try {
151
- log_1.Log.trace(`Found configuration file at ${file}`, "Configuration");
133
+ log_1.Log.trace(`Trying to load file ${file}`, "Configuration");
152
134
  return JSON.parse(fs.readFileSync(file, "utf-8"));
153
135
  }
154
136
  catch (err) {
155
- log_1.Log.error(err, `Config ${file} invalid !`, "Configuration");
156
137
  return null;
157
138
  }
158
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -25,10 +25,6 @@ export interface ConfigurationOptions {
25
25
  watchFileChanges?: boolean;
26
26
  }
27
27
  export declare abstract class Configuration extends AsyncModule {
28
- /**
29
- * Configuration base dir, where to look for app config
30
- */
31
- BaseDir: string;
32
28
  /**
33
29
  * Current running app name
34
30
  */
@@ -43,4 +39,12 @@ export declare abstract class Configuration extends AsyncModule {
43
39
  * @param path - path to property eg. ["system","dirs"] or "system" or "system.dirs"
44
40
  */
45
41
  abstract get<T>(path: string[] | string, defaultValue?: T): T;
42
+ /**
43
+ * Sets at given path configuration value. Use when you want to override config
44
+ * loaded from files programatically
45
+ *
46
+ * @param path config path
47
+ * @param value value to set
48
+ */
49
+ abstract set(path: string[] | string, value: any): void;
46
50
  }
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,oCAA0C;AAgC1C,MAAsB,aAAc,SAAQ,gBAAW;CAuBtD;AAvBD,sCAuBC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,oCAA0C;AAgC1C,MAAsB,aAAc,SAAQ,gBAAW;CA2BtD;AA3BD,sCA2BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinajs/configuration",
3
- "version": "1.1.2",
3
+ "version": "1.1.7",
4
4
  "description": "framework configuration module",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -8,12 +8,12 @@
8
8
  "test": "ts-mocha -p tsconfig.json test/**/*.test.ts",
9
9
  "coverage": "nyc npm run test",
10
10
  "build-docs": "rimraf docs && typedoc --options typedoc.json src/",
11
- "build": "",
11
+ "build": "tsc",
12
12
  "build-watch": "tsc -w",
13
13
  "prepare": "npm run build",
14
14
  "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
15
15
  "lint": "tslint -p tsconfig.json",
16
-
16
+ "prepublishOnly": "npm test && npm run lint",
17
17
  "preversion": "npm run lint",
18
18
  "version": "npm run format && git add -A src",
19
19
  "postversion": "git push && git push --tags"
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "@spinajs/di": "^1.1.7",
43
43
  "@spinajs/exceptions": "^1.0.5",
44
- "@spinajs/log": "^1.1.0",
44
+ "@spinajs/log": "^1.1.6",
45
45
  "glob": "^7.1.4",
46
46
  "lodash": "^4.17.14"
47
47
  },