@hg-ts/config-loader 0.3.0 → 0.3.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.
@@ -1,4 +1,4 @@
1
- import { ZodDto } from '@hg-ts/validation';
1
+ import { ZodDto, ZodType } from '@hg-ts/validation';
2
2
  import { ConfigLoader } from './config-loader';
3
3
  import { PathBuilderOptions } from './path-builder';
4
4
  export type ConfigLoaderOptions = PathBuilderOptions & {
@@ -11,12 +11,12 @@ export declare class FileConfigLoader implements ConfigLoader {
11
11
  private readonly cacheMap;
12
12
  constructor(options?: ConfigLoaderOptions);
13
13
  load<ConfigType extends object>(dto: ZodDto<ConfigType>, name: string): Promise<ConfigType>;
14
- private loadRawConfig;
15
- private loadConfigFile;
16
- private mergeConfigs;
17
- private validate;
18
- private get cacheEnabled();
19
- private get isRecursive();
20
- private get recursiveRootKey();
14
+ protected loadRawConfig(name: string): Promise<unknown>;
15
+ protected loadConfigFile(path: string): Promise<unknown>;
16
+ protected mergeConfigs(configs: unknown[]): Record<string, unknown>;
17
+ protected validate<ConfigType>(schema: ZodType<ConfigType>, config: unknown): Promise<ConfigType>;
18
+ protected get cacheEnabled(): boolean;
19
+ protected get isRecursive(): boolean;
20
+ protected get recursiveRootKey(): string;
21
21
  }
22
22
  //# sourceMappingURL=file.config-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.config-loader.d.ts","sourceRoot":"","sources":["../src/file.config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EAEN,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAEN,kBAAkB,EAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAOF,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAEtC,OAAO,GAAE,mBAAwB;IAKvC,IAAI,CAAC,UAAU,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAqB1F,aAAa;YAkBb,cAAc;IAU5B,OAAO,CAAC,YAAY;YAeN,QAAQ;IAOtB,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAID,OAAO,KAAK,gBAAgB,GAE3B;CACD"}
1
+ {"version":3,"file":"file.config-loader.d.ts","sourceRoot":"","sources":["../src/file.config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,OAAO,EACP,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAEN,kBAAkB,EAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAOF,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAEtC,OAAO,GAAE,mBAAwB;IAKvC,IAAI,CAAC,UAAU,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;cAqBxF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;cAkB7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9D,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAenD,QAAQ,CAAC,UAAU,EAClC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAC3B,MAAM,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC;IAItB,SAAS,KAAK,YAAY,IAAI,OAAO,CAMpC;IAED,SAAS,KAAK,WAAW,IAAI,OAAO,CAMnC;IAID,SAAS,KAAK,gBAAgB,IAAI,MAAM,CAEvC;CACD"}
@@ -63,10 +63,16 @@ class FileConfigLoader {
63
63
  return schema.parseAsync(config);
64
64
  }
65
65
  get cacheEnabled() {
66
- return this.options.cache ?? false;
66
+ if (this.options.cache) {
67
+ return true;
68
+ }
69
+ return false;
67
70
  }
68
71
  get isRecursive() {
69
- return this.options.recursive ?? false;
72
+ if (this.options.recursive) {
73
+ return true;
74
+ }
75
+ return false;
70
76
  }
71
77
  get recursiveRootKey() {
72
78
  return 'root';
@@ -1 +1 @@
1
- {"version":3,"file":"file.config-loader.js","sourceRoot":"","sources":["../src/file.config-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.config-loader.js","sourceRoot":"","sources":["../src/file.config-loader.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,8 @@ export declare class ConfigLoaderTest extends Suite {
3
3
  simple(): Promise<void>;
4
4
  recursive(): Promise<void>;
5
5
  enforceEnv(): Promise<void>;
6
+ fullLoadSuccessWithCache(): Promise<void>;
7
+ fullLoadSuccessWithoutCache(): Promise<void>;
8
+ failOnNoBaseConfig(): Promise<void>;
6
9
  }
7
10
  //# sourceMappingURL=config-loader.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.test.d.ts","sourceRoot":"","sources":["../../src/tests/config-loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAKtB,qBACa,gBAAiB,SAAQ,KAAK;IAE7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAsBxC"}
1
+ {"version":3,"file":"config-loader.test.d.ts","sourceRoot":"","sources":["../../src/tests/config-loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAQtB,qBACa,gBAAiB,SAAQ,KAAK;IAE7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCzC,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD5C,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBhD"}
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConfigLoaderTest = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const tests_1 = require("@hg-ts/tests");
6
- const validation_1 = tslib_1.__importDefault(require("@hg-ts/validation"));
6
+ const validation_1 = tslib_1.__importStar(require("@hg-ts/validation"));
7
+ const promises_1 = tslib_1.__importDefault(require("node:fs/promises"));
8
+ const vitest_1 = require("vitest");
9
+ const exceptions_1 = require("../exceptions");
7
10
  const file_config_loader_1 = require("../file.config-loader");
8
11
  let ConfigLoaderTest = class ConfigLoaderTest extends tests_1.Suite {
9
12
  async simple() {
@@ -47,11 +50,17 @@ let ConfigLoaderTest = class ConfigLoaderTest extends tests_1.Suite {
47
50
  async enforceEnv() {
48
51
  const loader = new file_config_loader_1.FileConfigLoader();
49
52
  const configSchema = validation_1.default.object({
50
- number: validation_1.default.union([validation_1.default.number(), validation_1.default.string()])
53
+ number: validation_1.default.union([
54
+ validation_1.default.number(),
55
+ validation_1.default.string(),
56
+ ])
51
57
  .enforceEnv('SOME_NUMERIC_ENV')
52
58
  .transform(value => Number(value))
53
59
  .pipe(validation_1.default.number()),
54
- bool: validation_1.default.union([validation_1.default.string(), validation_1.default.boolean()])
60
+ bool: validation_1.default.union([
61
+ validation_1.default.string(),
62
+ validation_1.default.boolean(),
63
+ ])
55
64
  .enforceEnv('SOME_BOOLEAN_ENV')
56
65
  .transformBooleanString(),
57
66
  });
@@ -62,6 +71,94 @@ let ConfigLoaderTest = class ConfigLoaderTest extends tests_1.Suite {
62
71
  (0, tests_1.expect)(transformed.number).toBe(10);
63
72
  (0, tests_1.expect)(transformed.bool).toBe(false);
64
73
  }
74
+ async fullLoadSuccessWithCache() {
75
+ const schema = validation_1.z.object({
76
+ a: validation_1.z.string(),
77
+ b: validation_1.z.string(),
78
+ c: validation_1.z.string(),
79
+ d: validation_1.z.string(),
80
+ });
81
+ const loader = new file_config_loader_1.FileConfigLoader({ recursive: true, cache: true });
82
+ const loadFileSpy = vitest_1.vi.spyOn(promises_1.default, 'readFile');
83
+ const reults = [
84
+ {
85
+ a: 'a',
86
+ b: 'b',
87
+ c: 'c',
88
+ },
89
+ {
90
+ a: 'a',
91
+ b: 'd',
92
+ d: 'b',
93
+ },
94
+ 'sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf',
95
+ ];
96
+ loadFileSpy.mockImplementation(async () => JSON.stringify(reults.shift()));
97
+ const result = await loader.load(schema.toClass(), 'test');
98
+ (0, tests_1.expect)(result).toMatchObject({
99
+ a: 'a',
100
+ b: 'd',
101
+ c: 'c',
102
+ d: 'b',
103
+ });
104
+ const cached = await loader.load(schema.toClass(), 'test');
105
+ (0, tests_1.expect)(cached).toMatchObject(result);
106
+ }
107
+ async fullLoadSuccessWithoutCache() {
108
+ const schema = validation_1.z.object({
109
+ a: validation_1.z.string(),
110
+ b: validation_1.z.string(),
111
+ c: validation_1.z.string(),
112
+ d: validation_1.z.string(),
113
+ });
114
+ const loader = new file_config_loader_1.FileConfigLoader({ recursive: true, cache: false });
115
+ const loadFileSpy = vitest_1.vi.spyOn(promises_1.default, 'readFile');
116
+ const expects = [
117
+ {
118
+ a: 'a',
119
+ b: 'b',
120
+ c: 'c',
121
+ },
122
+ {
123
+ a: 'a',
124
+ b: 'd',
125
+ d: 'b',
126
+ },
127
+ 'sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf',
128
+ ];
129
+ loadFileSpy.mockImplementation(async () => JSON.stringify(expects.shift()));
130
+ const result = await loader.load(schema.toClass(), 'test');
131
+ expects.push({
132
+ a: 'a',
133
+ b: 'b',
134
+ c: 'c',
135
+ }, {
136
+ a: 'a',
137
+ d: 'd',
138
+ });
139
+ (0, tests_1.expect)(result).toMatchObject({
140
+ a: 'a',
141
+ b: 'd',
142
+ c: 'c',
143
+ d: 'b',
144
+ });
145
+ const cached = await loader.load(schema.toClass(), 'test');
146
+ (0, tests_1.expect)(cached).not.toMatchObject(result);
147
+ }
148
+ async failOnNoBaseConfig() {
149
+ const schema = validation_1.z.object({
150
+ a: validation_1.z.string(),
151
+ b: validation_1.z.string(),
152
+ c: validation_1.z.string(),
153
+ d: validation_1.z.string(),
154
+ });
155
+ const loader = new file_config_loader_1.FileConfigLoader({ recursive: true, cache: true });
156
+ const loadFileSpy = vitest_1.vi.spyOn(promises_1.default, 'readFile');
157
+ loadFileSpy.mockImplementation(() => {
158
+ throw new Error('file not found');
159
+ });
160
+ await loader.load(schema.toClass(), 'test');
161
+ }
65
162
  };
66
163
  exports.ConfigLoaderTest = ConfigLoaderTest;
67
164
  tslib_1.__decorate([
@@ -82,6 +179,25 @@ tslib_1.__decorate([
82
179
  tslib_1.__metadata("design:paramtypes", []),
83
180
  tslib_1.__metadata("design:returntype", Promise)
84
181
  ], ConfigLoaderTest.prototype, "enforceEnv", null);
182
+ tslib_1.__decorate([
183
+ (0, tests_1.Test)(),
184
+ tslib_1.__metadata("design:type", Function),
185
+ tslib_1.__metadata("design:paramtypes", []),
186
+ tslib_1.__metadata("design:returntype", Promise)
187
+ ], ConfigLoaderTest.prototype, "fullLoadSuccessWithCache", null);
188
+ tslib_1.__decorate([
189
+ (0, tests_1.Test)(),
190
+ tslib_1.__metadata("design:type", Function),
191
+ tslib_1.__metadata("design:paramtypes", []),
192
+ tslib_1.__metadata("design:returntype", Promise)
193
+ ], ConfigLoaderTest.prototype, "fullLoadSuccessWithoutCache", null);
194
+ tslib_1.__decorate([
195
+ (0, tests_1.Test)(),
196
+ (0, tests_1.ExpectException)(exceptions_1.NoBaseConfigException),
197
+ tslib_1.__metadata("design:type", Function),
198
+ tslib_1.__metadata("design:paramtypes", []),
199
+ tslib_1.__metadata("design:returntype", Promise)
200
+ ], ConfigLoaderTest.prototype, "failOnNoBaseConfig", null);
85
201
  exports.ConfigLoaderTest = ConfigLoaderTest = tslib_1.__decorate([
86
202
  (0, tests_1.Describe)()
87
203
  ], ConfigLoaderTest);
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.test.js","sourceRoot":"","sources":["../../src/tests/config-loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-loader.test.js","sourceRoot":"","sources":["../../src/tests/config-loader.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/config-loader",
3
- "version": "0.3.0",
3
+ "version": "0.3.3",
4
4
  "main": "dist/index.js",
5
5
  "exports": {
6
6
  ".": "./dist/index.js"
@@ -17,13 +17,14 @@
17
17
  "test:dev": "HG_ENV=test vitest watch"
18
18
  },
19
19
  "devDependencies": {
20
- "@hg-ts-config/typescript": "0.3.0",
21
- "@hg-ts/exception": "0.3.0",
22
- "@hg-ts/execution-mode": "0.3.0",
23
- "@hg-ts/linter": "0.3.0",
24
- "@hg-ts/tests": "0.3.0",
25
- "@hg-ts/types": "0.3.0",
20
+ "@hg-ts-config/typescript": "0.3.3",
21
+ "@hg-ts/exception": "0.3.3",
22
+ "@hg-ts/execution-mode": "0.3.3",
23
+ "@hg-ts/linter": "0.3.3",
24
+ "@hg-ts/tests": "0.3.3",
25
+ "@hg-ts/types": "0.3.3",
26
26
  "@types/node": "22.19.1",
27
+ "@vitest/coverage-v8": "4.0.14",
27
28
  "eslint": "9.18.0",
28
29
  "reflect-metadata": "0.2.2",
29
30
  "rxjs": "7.8.1",
@@ -34,14 +35,14 @@
34
35
  "vitest": "4.0.14"
35
36
  },
36
37
  "peerDependencies": {
37
- "@hg-ts/exception": "0.3.0",
38
- "@hg-ts/execution-mode": "0.3.0",
38
+ "@hg-ts/exception": "0.3.3",
39
+ "@hg-ts/execution-mode": "0.3.3",
39
40
  "reflect-metadata": "*",
40
41
  "rxjs": "*",
41
42
  "tslib": "*",
42
43
  "vitest": "*"
43
44
  },
44
45
  "dependencies": {
45
- "@hg-ts/validation": "0.3.0"
46
+ "@hg-ts/validation": "0.3.3"
46
47
  }
47
48
  }