@lenne.tech/nest-server 10.7.1 → 10.8.2
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.
- package/README.md +40 -0
- package/dist/config.env.d.ts +2 -3
- package/dist/config.env.js +3 -31
- package/dist/config.env.js.map +1 -1
- package/dist/core/common/helpers/config.helper.d.ts +9 -0
- package/dist/core/common/helpers/config.helper.js +105 -0
- package/dist/core/common/helpers/config.helper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/config.env.ts +5 -44
- package/src/core/common/helpers/config.helper.ts +147 -0
package/README.md
CHANGED
|
@@ -109,6 +109,46 @@ Project use following scripts (via `package.json`):
|
|
|
109
109
|
- `npm run link:nest-server` (for `yalc add @lenne.tech/nest-server && yalc link @lenne.tech/nest-server && npm install`)
|
|
110
110
|
- `npm run unlink:nest-server` (for `yalc remove @lenne.tech/nest-server && npm install`)
|
|
111
111
|
|
|
112
|
+
## Configuration
|
|
113
|
+
|
|
114
|
+
The configuration of the server is done via the `src/config.env.ts` file. This file is a TypeScript file that exports
|
|
115
|
+
an object with the configuration values. It is automatically integrated into the `ConfigService`
|
|
116
|
+
(see src/core/common/services/config.service.ts).
|
|
117
|
+
|
|
118
|
+
### Environment variables
|
|
119
|
+
|
|
120
|
+
To protect sensitive data and to avoid committing them to the repository the `.env` file can be used.
|
|
121
|
+
An example `.env` file is provided in the `.env.example` file.
|
|
122
|
+
|
|
123
|
+
There are multiple ways to manipulate or extend the configuration via environment variables:
|
|
124
|
+
1. Via "normal" integration of the environment variables into the `src/config.env.ts`
|
|
125
|
+
2. Via JSON in the `NEST_SERVER_CONFIG` environment variable
|
|
126
|
+
3. Via single environment variables with the prefix `NSC__` (Nest Server Config)
|
|
127
|
+
|
|
128
|
+
#### Normal environment variables
|
|
129
|
+
Using `dotenv` (see https://www.dotenv.org/) environment variables can directly integrated into the
|
|
130
|
+
`src/config.env.ts` via `process.env`. E.g.:
|
|
131
|
+
```typescript
|
|
132
|
+
export const config = {
|
|
133
|
+
development: {
|
|
134
|
+
port: process.env.PORT || 3000,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### JSON
|
|
140
|
+
The `NEST_SERVER_CONFIG` is the environment variable for the server configuration.
|
|
141
|
+
The value of `NEST_SERVER_CONFIG` must be a (multiline) JSON string that will be parsed by the server
|
|
142
|
+
(see config.env.ts). The keys will override the other configuration values via deep merge
|
|
143
|
+
(see https://lodash.com/docs/4.17.15#merge, without array merging).
|
|
144
|
+
|
|
145
|
+
#### Single config variables
|
|
146
|
+
The prefix `NSC__` (**N**est **S**erver **C**onfig) can be used to set single configuration values via environment
|
|
147
|
+
variables. The key is the name of the configuration value in uppercase and with double underscores (`__`) instead of
|
|
148
|
+
dots. Single underscores are used to separate compound terms like `DEFAULT_SENDER` for `defaultSender`.
|
|
149
|
+
For example, the configuration value `email.defaultSender.name` can be set via the environment variable
|
|
150
|
+
`NSC__EMAIL_DEFAULT_SENDER_NAME`.
|
|
151
|
+
|
|
112
152
|
## Documentation
|
|
113
153
|
The API and developer documentation can automatically be generated.
|
|
114
154
|
|
package/dist/config.env.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export default envConfig;
|
|
1
|
+
declare const _default: any;
|
|
2
|
+
export default _default;
|
package/dist/config.env.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const schedule_1 = require("@nestjs/schedule");
|
|
4
|
+
const dotenv = require("dotenv");
|
|
4
5
|
const path_1 = require("path");
|
|
5
6
|
const config_helper_1 = require("./core/common/helpers/config.helper");
|
|
7
|
+
dotenv.config();
|
|
6
8
|
const config = {
|
|
7
9
|
development: {
|
|
8
10
|
automaticObjectIdFiltering: true,
|
|
@@ -289,35 +291,5 @@ const config = {
|
|
|
289
291
|
},
|
|
290
292
|
},
|
|
291
293
|
};
|
|
292
|
-
|
|
293
|
-
const envConfig = config[env] || config.local;
|
|
294
|
-
console.info(`Configured for: ${envConfig.env}${env !== envConfig.env ? ` (requested: ${env})` : ''}`);
|
|
295
|
-
if (envConfig.loadLocalConfig) {
|
|
296
|
-
let localConfig;
|
|
297
|
-
if (typeof envConfig.loadLocalConfig === 'string') {
|
|
298
|
-
Promise.resolve(`${envConfig.loadLocalConfig}`).then(s => require(s)).then((loadedConfig) => {
|
|
299
|
-
localConfig = loadedConfig.default || loadedConfig;
|
|
300
|
-
(0, config_helper_1.merge)(envConfig, localConfig);
|
|
301
|
-
})
|
|
302
|
-
.catch(() => {
|
|
303
|
-
console.info(`Configuration ${envConfig.loadLocalConfig} not found!`);
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
Promise.resolve(`${(0, path_1.join)(__dirname, 'config.json')}`).then(s => require(s)).then((loadedConfig) => {
|
|
308
|
-
localConfig = loadedConfig.default || loadedConfig;
|
|
309
|
-
(0, config_helper_1.merge)(envConfig, localConfig);
|
|
310
|
-
})
|
|
311
|
-
.catch(() => {
|
|
312
|
-
Promise.resolve(`${(0, path_1.join)(__dirname, '..', 'config.json')}`).then(s => require(s)).then((loadedConfig) => {
|
|
313
|
-
localConfig = loadedConfig.default || loadedConfig;
|
|
314
|
-
(0, config_helper_1.merge)(envConfig, localConfig);
|
|
315
|
-
})
|
|
316
|
-
.catch(() => {
|
|
317
|
-
console.info('No local config.json found!');
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
exports.default = envConfig;
|
|
294
|
+
exports.default = (0, config_helper_1.getEnvironmentConfig)({ config });
|
|
323
295
|
//# sourceMappingURL=config.env.js.map
|
package/dist/config.env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAClD,+BAA4B;AAE5B,
|
|
1
|
+
{"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,3 +2,12 @@ export default class Config {
|
|
|
2
2
|
static merge(obj: Record<string, any>, ...sources: any[]): any;
|
|
3
3
|
}
|
|
4
4
|
export declare function merge(obj: Record<string, any>, ...sources: any[]): any;
|
|
5
|
+
export declare function getEnvironmentConfig(options: {
|
|
6
|
+
config?: Record<string, any>;
|
|
7
|
+
defaultEnv?: string;
|
|
8
|
+
envPath?: string;
|
|
9
|
+
}): any;
|
|
10
|
+
export declare function getEnvironmentObject(options?: {
|
|
11
|
+
prefix?: string;
|
|
12
|
+
processEnv?: Record<string, boolean | number | string>;
|
|
13
|
+
}): {};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.merge = merge;
|
|
4
|
+
exports.getEnvironmentConfig = getEnvironmentConfig;
|
|
5
|
+
exports.getEnvironmentObject = getEnvironmentObject;
|
|
6
|
+
const dotenv = require("dotenv");
|
|
7
|
+
const process = require("node:process");
|
|
8
|
+
const path_1 = require("path");
|
|
4
9
|
const _ = require("lodash");
|
|
5
10
|
class Config {
|
|
6
11
|
static merge(obj, ...sources) {
|
|
@@ -15,4 +20,104 @@ function merge(obj, ...sources) {
|
|
|
15
20
|
}
|
|
16
21
|
});
|
|
17
22
|
}
|
|
23
|
+
function getEnvironmentConfig(options) {
|
|
24
|
+
const { config, defaultEnv, envPath } = {
|
|
25
|
+
config: {},
|
|
26
|
+
defaultEnv: 'local',
|
|
27
|
+
...options,
|
|
28
|
+
};
|
|
29
|
+
if (envPath) {
|
|
30
|
+
dotenv.config({ path: envPath });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
dotenv.config();
|
|
34
|
+
}
|
|
35
|
+
const env = process.env['NODE' + '_ENV'] || defaultEnv;
|
|
36
|
+
const envConfig = config[env] || config.local || {};
|
|
37
|
+
if (envConfig.loadLocalConfig) {
|
|
38
|
+
let localConfig;
|
|
39
|
+
if (typeof envConfig.loadLocalConfig === 'string') {
|
|
40
|
+
Promise.resolve(`${envConfig.loadLocalConfig}`).then(s => require(s)).then((loadedConfig) => {
|
|
41
|
+
localConfig = loadedConfig.default || loadedConfig;
|
|
42
|
+
merge(envConfig, localConfig);
|
|
43
|
+
})
|
|
44
|
+
.catch(() => {
|
|
45
|
+
console.info(`Configuration ${envConfig.loadLocalConfig} not found!`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
Promise.resolve(`${(0, path_1.join)(__dirname, 'config.json')}`).then(s => require(s)).then((loadedConfig) => {
|
|
50
|
+
localConfig = loadedConfig.default || loadedConfig;
|
|
51
|
+
merge(envConfig, localConfig);
|
|
52
|
+
})
|
|
53
|
+
.catch(() => {
|
|
54
|
+
Promise.resolve(`${(0, path_1.join)(__dirname, '..', 'config.json')}`).then(s => require(s)).then((loadedConfig) => {
|
|
55
|
+
localConfig = loadedConfig.default || loadedConfig;
|
|
56
|
+
merge(envConfig, localConfig);
|
|
57
|
+
})
|
|
58
|
+
.catch(() => {
|
|
59
|
+
console.info('No local config.json found!');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (process.env['NEST_SERVER_CONFIG']) {
|
|
65
|
+
try {
|
|
66
|
+
const dotEnvConfig = JSON.parse(process.env['NEST_SERVER_CONFIG']);
|
|
67
|
+
if (dotEnvConfig && Object.keys(dotEnvConfig).length > 0) {
|
|
68
|
+
merge(envConfig, dotEnvConfig);
|
|
69
|
+
console.info('NEST_SERVER_CONFIG used from .env');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
console.error('Error parsing NEST_SERVER_CONFIG from .env: ', e);
|
|
74
|
+
console.error('Maybe the JSON is invalid? Please check the value of NEST_SERVER_CONFIG in .env file (e.g. via https://jsonlint.com/)');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const environmentObject = getEnvironmentObject();
|
|
78
|
+
const environmentObjectKeyCount = Object.keys(environmentObject).length;
|
|
79
|
+
if (environmentObjectKeyCount > 0) {
|
|
80
|
+
merge(envConfig, environmentObject);
|
|
81
|
+
console.info(`Environment object from the environment integrated into the configuration with ${environmentObjectKeyCount} keys`);
|
|
82
|
+
}
|
|
83
|
+
console.info(`Configured for: ${envConfig.env}${env !== envConfig.env ? ` (requested: ${env})` : ''}`);
|
|
84
|
+
return envConfig;
|
|
85
|
+
}
|
|
86
|
+
function getEnvironmentObject(options) {
|
|
87
|
+
const config = {
|
|
88
|
+
prefix: 'NSC__',
|
|
89
|
+
processEnv: process.env,
|
|
90
|
+
...options,
|
|
91
|
+
};
|
|
92
|
+
const output = {};
|
|
93
|
+
Object.entries(config.processEnv)
|
|
94
|
+
.filter(([key]) => key.startsWith(config.prefix))
|
|
95
|
+
.forEach(([key, value]) => {
|
|
96
|
+
const adjustedKey = key.slice(config.prefix?.length || 0);
|
|
97
|
+
const path = adjustedKey.split('__').map(part => part
|
|
98
|
+
.split('_')
|
|
99
|
+
.map((s, i) => (i === 0 ? s.toLowerCase() : s[0].toUpperCase() + s.slice(1).toLowerCase()))
|
|
100
|
+
.join(''));
|
|
101
|
+
let current = output;
|
|
102
|
+
for (let i = 0; i < path.length; i++) {
|
|
103
|
+
const segment = path[i];
|
|
104
|
+
if (i === path.length - 1) {
|
|
105
|
+
if (value === 'true') {
|
|
106
|
+
value = true;
|
|
107
|
+
}
|
|
108
|
+
else if (value === 'false') {
|
|
109
|
+
value = false;
|
|
110
|
+
}
|
|
111
|
+
else if (!isNaN(Number(value))) {
|
|
112
|
+
value = Number(value);
|
|
113
|
+
}
|
|
114
|
+
current[segment] = value;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
current = current[segment] = current[segment] || {};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return output;
|
|
122
|
+
}
|
|
18
123
|
//# sourceMappingURL=config.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/config.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/config.helper.ts"],"names":[],"mappings":"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"}
|