@hg-ts/config-loader 0.0.15

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.
Files changed (88) hide show
  1. package/.eslintcache +1 -0
  2. package/.eslintrc.json +3 -0
  3. package/.mocharc.cjs +1 -0
  4. package/README.md +106 -0
  5. package/dist/config-loader.d.ts +18 -0
  6. package/dist/config-loader.d.ts.map +1 -0
  7. package/dist/config-loader.js +75 -0
  8. package/dist/config-loader.js.map +1 -0
  9. package/dist/decorators/enforce-env.decorator.d.ts +2 -0
  10. package/dist/decorators/enforce-env.decorator.d.ts.map +1 -0
  11. package/dist/decorators/enforce-env.decorator.js +9 -0
  12. package/dist/decorators/enforce-env.decorator.js.map +1 -0
  13. package/dist/decorators/index.d.ts +2 -0
  14. package/dist/decorators/index.d.ts.map +1 -0
  15. package/dist/decorators/index.js +5 -0
  16. package/dist/decorators/index.js.map +1 -0
  17. package/dist/exceptions/index.d.ts +2 -0
  18. package/dist/exceptions/index.d.ts.map +1 -0
  19. package/dist/exceptions/index.js +5 -0
  20. package/dist/exceptions/index.js.map +1 -0
  21. package/dist/exceptions/no-base-config.exception.d.ts +5 -0
  22. package/dist/exceptions/no-base-config.exception.d.ts.map +1 -0
  23. package/dist/exceptions/no-base-config.exception.js +11 -0
  24. package/dist/exceptions/no-base-config.exception.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/path-builder.d.ts +22 -0
  30. package/dist/path-builder.d.ts.map +1 -0
  31. package/dist/path-builder.js +79 -0
  32. package/dist/path-builder.js.map +1 -0
  33. package/dist/tests/config-loader.test-suite.d.ts +7 -0
  34. package/dist/tests/config-loader.test-suite.d.ts.map +1 -0
  35. package/dist/tests/config-loader.test-suite.js +94 -0
  36. package/dist/tests/config-loader.test-suite.js.map +1 -0
  37. package/dist/tests/path-builder.test-suite.d.ts +15 -0
  38. package/dist/tests/path-builder.test-suite.d.ts.map +1 -0
  39. package/dist/tests/path-builder.test-suite.js +155 -0
  40. package/dist/tests/path-builder.test-suite.js.map +1 -0
  41. package/dist-esm/config-loader.d.ts +18 -0
  42. package/dist-esm/config-loader.d.ts.map +1 -0
  43. package/dist-esm/config-loader.js +70 -0
  44. package/dist-esm/config-loader.js.map +1 -0
  45. package/dist-esm/decorators/enforce-env.decorator.d.ts +2 -0
  46. package/dist-esm/decorators/enforce-env.decorator.d.ts.map +1 -0
  47. package/dist-esm/decorators/enforce-env.decorator.js +5 -0
  48. package/dist-esm/decorators/enforce-env.decorator.js.map +1 -0
  49. package/dist-esm/decorators/index.d.ts +2 -0
  50. package/dist-esm/decorators/index.d.ts.map +1 -0
  51. package/dist-esm/decorators/index.js +2 -0
  52. package/dist-esm/decorators/index.js.map +1 -0
  53. package/dist-esm/exceptions/index.d.ts +2 -0
  54. package/dist-esm/exceptions/index.d.ts.map +1 -0
  55. package/dist-esm/exceptions/index.js +2 -0
  56. package/dist-esm/exceptions/index.js.map +1 -0
  57. package/dist-esm/exceptions/no-base-config.exception.d.ts +5 -0
  58. package/dist-esm/exceptions/no-base-config.exception.d.ts.map +1 -0
  59. package/dist-esm/exceptions/no-base-config.exception.js +7 -0
  60. package/dist-esm/exceptions/no-base-config.exception.js.map +1 -0
  61. package/dist-esm/index.d.ts +4 -0
  62. package/dist-esm/index.d.ts.map +1 -0
  63. package/dist-esm/index.js +4 -0
  64. package/dist-esm/index.js.map +1 -0
  65. package/dist-esm/path-builder.d.ts +22 -0
  66. package/dist-esm/path-builder.d.ts.map +1 -0
  67. package/dist-esm/path-builder.js +75 -0
  68. package/dist-esm/path-builder.js.map +1 -0
  69. package/dist-esm/tests/config-loader.test-suite.d.ts +7 -0
  70. package/dist-esm/tests/config-loader.test-suite.d.ts.map +1 -0
  71. package/dist-esm/tests/config-loader.test-suite.js +91 -0
  72. package/dist-esm/tests/config-loader.test-suite.js.map +1 -0
  73. package/dist-esm/tests/path-builder.test-suite.d.ts +15 -0
  74. package/dist-esm/tests/path-builder.test-suite.d.ts.map +1 -0
  75. package/dist-esm/tests/path-builder.test-suite.js +152 -0
  76. package/dist-esm/tests/path-builder.test-suite.js.map +1 -0
  77. package/package.json +45 -0
  78. package/src/config-loader.ts +103 -0
  79. package/src/decorators/enforce-env.decorator.ts +5 -0
  80. package/src/decorators/index.ts +1 -0
  81. package/src/exceptions/index.ts +1 -0
  82. package/src/exceptions/no-base-config.exception.ts +7 -0
  83. package/src/index.ts +4 -0
  84. package/src/path-builder.ts +158 -0
  85. package/src/tests/config-loader.test-suite.ts +87 -0
  86. package/src/tests/path-builder.test-suite.ts +133 -0
  87. package/tsconfig.esm.json +10 -0
  88. package/tsconfig.json +11 -0
@@ -0,0 +1,133 @@
1
+ import {
2
+ Describe,
3
+ expect,
4
+ Test,
5
+ TestSuite,
6
+ } from '@hg-ts/tests';
7
+ import {
8
+ ExecutionModeVariants,
9
+ MockExecutionMode,
10
+ } from '@hg-ts/execution-mode';
11
+
12
+ import {
13
+ PathBuilder,
14
+ PathBuilderOptions,
15
+ } from '../path-builder';
16
+
17
+ @Describe()
18
+ export class PathBuilderTestSuite extends TestSuite {
19
+ @Test()
20
+ public async simple(): Promise<void> {
21
+ const paths = this.getPaths();
22
+
23
+ expect(paths).toHaveLength(1);
24
+ expect(paths[0]).toBe('/tmp/example.json');
25
+ }
26
+
27
+ @Test()
28
+ public async recursive(): Promise<void> {
29
+ const paths = this.getPaths({ recursive: true });
30
+
31
+ expect(paths).toHaveLength(2);
32
+ expect(paths[0]).toBe('/tmp/example.json');
33
+ expect(paths[1]).toBe('/example.json');
34
+ }
35
+
36
+ @Test()
37
+ public async full(): Promise<void> {
38
+ const paths = this.getPaths({
39
+ recursive: true,
40
+ overridePostfix: 'override',
41
+ basePostfix: 'config',
42
+ envBuilder: true,
43
+ overrideEnv: new MockExecutionMode(ExecutionModeVariants.DEMO),
44
+ configDir: 'config',
45
+ });
46
+
47
+ let index = 0;
48
+
49
+ expect(paths).toHaveLength(12);
50
+ expect(paths[index++]).toBe('/tmp/config/base/example.config.json');
51
+ expect(paths[index++]).toBe('/tmp/config/base/example.override.json');
52
+ expect(paths[index++]).toBe('/tmp/config/demo/example.config.json');
53
+ expect(paths[index++]).toBe('/tmp/config/demo/example.override.json');
54
+ expect(paths[index++]).toBe('/tmp/config/local/example.config.json');
55
+ expect(paths[index++]).toBe('/tmp/config/local/example.override.json');
56
+
57
+ expect(paths[index++]).toBe('/config/base/example.config.json');
58
+ expect(paths[index++]).toBe('/config/base/example.override.json');
59
+ expect(paths[index++]).toBe('/config/demo/example.config.json');
60
+ expect(paths[index++]).toBe('/config/demo/example.override.json');
61
+ expect(paths[index++]).toBe('/config/local/example.config.json');
62
+ expect(paths[index++]).toBe('/config/local/example.override.json');
63
+ }
64
+
65
+ @Test()
66
+ public async configDir(): Promise<void> {
67
+ const paths = this.getPaths({ configDir: 'config' });
68
+
69
+ expect(paths).toHaveLength(1);
70
+ expect(paths[0]).toBe('/tmp/config/example.json');
71
+ }
72
+
73
+ @Test()
74
+ public async envBuilder(): Promise<void> {
75
+ const paths = this.getPaths({ envBuilder: true });
76
+
77
+ expect(paths).toHaveLength(2);
78
+ expect(paths[0]).toBe('/tmp/base/example.json');
79
+ expect(paths[1]).toBe('/tmp/local/example.json');
80
+ }
81
+
82
+ @Test()
83
+ public async envBuilderWithOverrideProd(): Promise<void> {
84
+ const paths = this.getPaths({ envBuilder: true, overrideEnv: new MockExecutionMode(ExecutionModeVariants.PROD) });
85
+
86
+ expect(paths).toHaveLength(3);
87
+ expect(paths[0]).toBe('/tmp/base/example.json');
88
+ expect(paths[1]).toBe('/tmp/prod/example.json');
89
+ expect(paths[2]).toBe('/tmp/local/example.json');
90
+ }
91
+
92
+ @Test()
93
+ public async envBuilderWithOverrideDev(): Promise<void> {
94
+ const paths = this.getPaths({ envBuilder: true, overrideEnv: new MockExecutionMode(ExecutionModeVariants.DEV) });
95
+
96
+ expect(paths).toHaveLength(3);
97
+ expect(paths[0]).toBe('/tmp/base/example.json');
98
+ expect(paths[1]).toBe('/tmp/dev/example.json');
99
+ expect(paths[2]).toBe('/tmp/local/example.json');
100
+ }
101
+
102
+ @Test()
103
+ public async basePostfix(): Promise<void> {
104
+ const paths = this.getPaths({ basePostfix: 'config' });
105
+
106
+ expect(paths).toHaveLength(1);
107
+ expect(paths[0]).toBe('/tmp/example.config.json');
108
+ }
109
+
110
+ @Test()
111
+ public async basePostfixWithOverridePostfix(): Promise<void> {
112
+ const paths = this.getPaths({ basePostfix: 'config', overridePostfix: 'override' });
113
+
114
+ expect(paths).toHaveLength(2);
115
+ expect(paths[0]).toBe('/tmp/example.config.json');
116
+ expect(paths[1]).toBe('/tmp/example.override.json');
117
+ }
118
+
119
+ @Test()
120
+ public async overridePostfix(): Promise<void> {
121
+ const paths = this.getPaths({ overridePostfix: 'override' });
122
+
123
+ expect(paths).toHaveLength(2);
124
+ expect(paths[0]).toBe('/tmp/example.json');
125
+ expect(paths[1]).toBe('/tmp/example.override.json');
126
+ }
127
+
128
+ private getPaths(options: Omit<PathBuilderOptions, 'appPath'> = {}): string[] {
129
+ const builder = new PathBuilder({ appPath: '/tmp', ...options });
130
+
131
+ return builder.build('example');
132
+ }
133
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "@hg-ts-config/typescript",
3
+ "compilerOptions": {
4
+ "baseUrl": "src",
5
+ "rootDir": "src",
6
+ "outDir": "dist-esm",
7
+ "skipLibCheck": true
8
+ },
9
+ "exclude": ["dist", "dist-esm"]
10
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "@hg-ts-config/typescript",
3
+ "compilerOptions": {
4
+ "module": "CommonJS",
5
+ "baseUrl": "src",
6
+ "rootDir": "src",
7
+ "outDir": "dist",
8
+ "skipLibCheck": true
9
+ },
10
+ "exclude": ["dist", "dist-esm"]
11
+ }