@orion-js/env 3.11.8 → 4.0.0-alpha.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/dist/index.cjs +9544 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +9518 -0
- package/package.json +23 -16
- package/LICENSE +0 -21
- package/jest.config.js +0 -8
- package/lib/cli/add/encryptValue.d.ts +0 -2
- package/lib/cli/add/encryptValue.js +0 -8
- package/lib/cli/add/getConfig.d.ts +0 -2
- package/lib/cli/add/getConfig.js +0 -16
- package/lib/cli/add/getParams.d.ts +0 -5
- package/lib/cli/add/getParams.js +0 -26
- package/lib/cli/add/index.d.ts +0 -3
- package/lib/cli/add/index.js +0 -38
- package/lib/cli/index.d.ts +0 -2
- package/lib/cli/index.js +0 -43
- package/lib/cli/init/index.d.ts +0 -3
- package/lib/cli/init/index.js +0 -29
- package/lib/cli/read/index.d.ts +0 -5
- package/lib/cli/read/index.js +0 -21
- package/lib/crypto/index.d.ts +0 -13
- package/lib/crypto/index.js +0 -37
- package/lib/crypto/index.test.d.ts +0 -1
- package/lib/crypto/index.test.js +0 -30
- package/lib/crypto/tweetnacl.d.ts +0 -3
- package/lib/crypto/tweetnacl.js +0 -31
- package/lib/environment/getDts.d.ts +0 -4
- package/lib/environment/getDts.js +0 -32
- package/lib/environment/getVariables.d.ts +0 -17
- package/lib/environment/getVariables.js +0 -58
- package/lib/environment/index.d.ts +0 -8
- package/lib/environment/index.js +0 -35
- package/lib/environment/index.test.d.ts +0 -1
- package/lib/environment/index.test.js +0 -136
- package/lib/environment/load.d.ts +0 -6
- package/lib/environment/load.js +0 -33
- package/lib/files/index.d.ts +0 -3
- package/lib/files/index.js +0 -27
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -14
- package/lib/internalGetEnv.d.ts +0 -1
- package/lib/internalGetEnv.js +0 -14
- package/tsconfig.json +0 -20
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const crypto_1 = require("../crypto");
|
|
4
|
-
const getDts_1 = require("./getDts");
|
|
5
|
-
const getVariables_1 = require("./getVariables");
|
|
6
|
-
describe('Environment', () => {
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
;
|
|
9
|
-
global.__orion_env_final__ = undefined;
|
|
10
|
-
jest.resetModules();
|
|
11
|
-
});
|
|
12
|
-
it('should define all environment variables', async () => {
|
|
13
|
-
const secretKey = 'QShwQT1+d5wk/F6FVpT5VmZFXm50aFRt9/LaDbwSEGo=';
|
|
14
|
-
const secretValue = 'this_is_secret';
|
|
15
|
-
const data = {
|
|
16
|
-
version: '1.0',
|
|
17
|
-
publicKey: 'quyw/56O1P/BmjlHGfguZD27zKbjOtxNBDOTz+FOYho=',
|
|
18
|
-
cleanKeys: {
|
|
19
|
-
a_key: 'a_value'
|
|
20
|
-
},
|
|
21
|
-
encryptedKeys: {
|
|
22
|
-
secret1: 'nQCxsZxjVkOABeQSdIhYK7jSMYKUggUm9IWUGLpY3i4=:9gvH5IOhV/q5R4ngUIk2onf5oEZM5dIU89PRZ5TGjnnfcnrwkssLqsACNDmr0m4jQZVo0nBL'
|
|
23
|
-
},
|
|
24
|
-
readFromSecret: {
|
|
25
|
-
SECRET_ENV: ['secret2'],
|
|
26
|
-
SECRET2_ENV: ['secret3', 'secret4']
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
process.env.SECRET_ENV = JSON.stringify({ secret2: 'this_is_secret' });
|
|
30
|
-
process.env.SECRET2_ENV = JSON.stringify({ secret3: '3', secret4: '4' });
|
|
31
|
-
process.env.ORION_ENV_SECRET_KEY = secretKey;
|
|
32
|
-
const env = (0, getVariables_1.getVariables)(data, secretKey);
|
|
33
|
-
expect(env).toEqual({
|
|
34
|
-
a_key: 'a_value',
|
|
35
|
-
secret1: secretValue,
|
|
36
|
-
secret2: 'this_is_secret',
|
|
37
|
-
secret3: '3',
|
|
38
|
-
secret4: '4'
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
it('should thow an error when the secret key is not the one used to encrypt', () => {
|
|
42
|
-
const data = {
|
|
43
|
-
version: '1.0',
|
|
44
|
-
publicKey: 'quyw/56O1P/BmjlHGfguZD27zKbjOtxNBDOTz+FOYho=',
|
|
45
|
-
cleanKeys: {},
|
|
46
|
-
encryptedKeys: {
|
|
47
|
-
secret1: 'nQCxsZxjVkOABeQSdIhYK7jSMYKUggUm9IWUGLpY3i4=:9gvH5IOhV/q5R4ngUIk2onf5oEZM5dIU89PRZ5TGjnnfcnrwkssLqsACNDmr0m4jQZVo0nBL'
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
try {
|
|
51
|
-
const key = (0, crypto_1.generateKeys)().decryptKey;
|
|
52
|
-
(0, getVariables_1.getVariables)(data, key);
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
expect(error.message).toEqual('Orion encrypted env was passed but process.env.ORION_ENV_SECRET_KEY is not the right key for "secret1"');
|
|
56
|
-
}
|
|
57
|
-
expect.assertions(1);
|
|
58
|
-
});
|
|
59
|
-
it('should read the decyrpt key from the secret', () => {
|
|
60
|
-
const secretKey = 'QShwQT1+d5wk/F6FVpT5VmZFXm50aFRt9/LaDbwSEGo=';
|
|
61
|
-
const secretValue = 'this_is_secret';
|
|
62
|
-
const data = {
|
|
63
|
-
version: '1.0',
|
|
64
|
-
publicKey: 'quyw/56O1P/BmjlHGfguZD27zKbjOtxNBDOTz+FOYho=',
|
|
65
|
-
cleanKeys: {
|
|
66
|
-
a_key: 'a_value'
|
|
67
|
-
},
|
|
68
|
-
encryptedKeys: {
|
|
69
|
-
secret1: 'nQCxsZxjVkOABeQSdIhYK7jSMYKUggUm9IWUGLpY3i4=:9gvH5IOhV/q5R4ngUIk2onf5oEZM5dIU89PRZ5TGjnnfcnrwkssLqsACNDmr0m4jQZVo0nBL'
|
|
70
|
-
},
|
|
71
|
-
readFromSecret: {
|
|
72
|
-
SECRET_ENV: ['secret2']
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
process.env.SECRET_ENV = JSON.stringify({
|
|
76
|
-
secret2: 'this_is_secret',
|
|
77
|
-
ORION_ENV_SECRET_KEY: secretKey
|
|
78
|
-
});
|
|
79
|
-
const env = (0, getVariables_1.getVariables)(data, secretKey);
|
|
80
|
-
expect(env).toEqual({
|
|
81
|
-
a_key: 'a_value',
|
|
82
|
-
secret1: secretValue,
|
|
83
|
-
secret2: 'this_is_secret'
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
it('should log an error when the secret is not a valid JSON, and related secrets undefined', () => {
|
|
87
|
-
console.warn = jest.fn();
|
|
88
|
-
const secretKey = 'QShwQT1+d5wk/F6FVpT5VmZFXm50aFRt9/LaDbwSEGo=';
|
|
89
|
-
const secretValue = 'this_is_secret';
|
|
90
|
-
const data = {
|
|
91
|
-
version: '1.0',
|
|
92
|
-
publicKey: 'quyw/56O1P/BmjlHGfguZD27zKbjOtxNBDOTz+FOYho=',
|
|
93
|
-
cleanKeys: {
|
|
94
|
-
a_key: 'a_value'
|
|
95
|
-
},
|
|
96
|
-
encryptedKeys: {
|
|
97
|
-
secret1: 'nQCxsZxjVkOABeQSdIhYK7jSMYKUggUm9IWUGLpY3i4=:9gvH5IOhV/q5R4ngUIk2onf5oEZM5dIU89PRZ5TGjnnfcnrwkssLqsACNDmr0m4jQZVo0nBL'
|
|
98
|
-
},
|
|
99
|
-
readFromSecret: {
|
|
100
|
-
SECRET_ENV: ['secret2']
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
process.env.SECRET_ENV = 'not a json';
|
|
104
|
-
const env = (0, getVariables_1.getVariables)(data, secretKey);
|
|
105
|
-
expect(env).toEqual({
|
|
106
|
-
a_key: 'a_value',
|
|
107
|
-
secret1: secretValue,
|
|
108
|
-
secret2: undefined
|
|
109
|
-
});
|
|
110
|
-
expect(console.warn.mock.calls[0][0].includes('it is not a valid JSON')).toBe(true);
|
|
111
|
-
});
|
|
112
|
-
it('Dts should return the right types', () => {
|
|
113
|
-
const dts = (0, getDts_1.getDts)({
|
|
114
|
-
version: '1.0',
|
|
115
|
-
publicKey: 'public',
|
|
116
|
-
cleanKeys: {
|
|
117
|
-
a_key: 'a_value'
|
|
118
|
-
},
|
|
119
|
-
encryptedKeys: {
|
|
120
|
-
secret: 'encrypted'
|
|
121
|
-
},
|
|
122
|
-
readFromSecret: {
|
|
123
|
-
SECRET_ENV: ['secret2', 'secret3']
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
expect(dts).toEqual(`declare module '@orion-js/env' {
|
|
127
|
-
export const env: {
|
|
128
|
-
a_key: string
|
|
129
|
-
secret: string
|
|
130
|
-
secret2: string
|
|
131
|
-
secret3: string
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
`);
|
|
135
|
-
});
|
|
136
|
-
});
|
package/lib/environment/load.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadEnv = void 0;
|
|
4
|
-
const getConfig_1 = require("../cli/add/getConfig");
|
|
5
|
-
const getVariables_1 = require("./getVariables");
|
|
6
|
-
const defaultOptions = {
|
|
7
|
-
secretKey: process.env.ORION_ENV_SECRET_KEY,
|
|
8
|
-
envFilePath: process.env.ORION_ENV_FILE_PATH,
|
|
9
|
-
override: !!process.env.ORION_ENV_OVERRIDE
|
|
10
|
-
};
|
|
11
|
-
function loadEnv(passedOptions = {}) {
|
|
12
|
-
const options = { ...defaultOptions, ...passedOptions };
|
|
13
|
-
const data = (0, getConfig_1.getConfig)(options.envFilePath);
|
|
14
|
-
const variables = (0, getVariables_1.getVariables)(data, options.secretKey);
|
|
15
|
-
for (const key in variables) {
|
|
16
|
-
const variable = variables[key];
|
|
17
|
-
if (!Object.prototype.hasOwnProperty.call(process.env, key)) {
|
|
18
|
-
process.env[key] = variable;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
if (options.override) {
|
|
22
|
-
process.env[key] = variable;
|
|
23
|
-
}
|
|
24
|
-
if (options.override) {
|
|
25
|
-
console.log(`"${key}" is already defined in \`process.env\` and WAS overwritten`);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
console.log(`"${key}" is already defined in \`process.env\` and was NOT overwritten`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.loadEnv = loadEnv;
|
package/lib/files/index.d.ts
DELETED
package/lib/files/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ensureDirectory = exports.writeFile = exports.readFile = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
function readFile(filePath) {
|
|
10
|
-
if (!fs_1.default.existsSync(filePath))
|
|
11
|
-
return null;
|
|
12
|
-
return fs_1.default.readFileSync(filePath).toString();
|
|
13
|
-
}
|
|
14
|
-
exports.readFile = readFile;
|
|
15
|
-
function writeFile(path, content) {
|
|
16
|
-
ensureDirectory(path);
|
|
17
|
-
fs_1.default.writeFileSync(path, content);
|
|
18
|
-
}
|
|
19
|
-
exports.writeFile = writeFile;
|
|
20
|
-
function ensureDirectory(filePath) {
|
|
21
|
-
const dirname = path_1.default.dirname(filePath);
|
|
22
|
-
if (fs_1.default.existsSync(dirname))
|
|
23
|
-
return true;
|
|
24
|
-
ensureDirectory(dirname);
|
|
25
|
-
fs_1.default.mkdirSync(dirname);
|
|
26
|
-
}
|
|
27
|
-
exports.ensureDirectory = ensureDirectory;
|
package/lib/index.d.ts
DELETED
package/lib/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./environment"), exports);
|
|
14
|
-
__exportStar(require("./internalGetEnv"), exports);
|
package/lib/internalGetEnv.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const internalGetEnv: (orionEnvName: string, processEnvName: string) => string | null;
|
package/lib/internalGetEnv.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.internalGetEnv = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const internalGetEnv = (orionEnvName, processEnvName) => {
|
|
6
|
-
if (_1.env[orionEnvName]) {
|
|
7
|
-
return _1.env[orionEnvName];
|
|
8
|
-
}
|
|
9
|
-
if (process.env[processEnvName]) {
|
|
10
|
-
return process.env[processEnvName];
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
13
|
-
};
|
|
14
|
-
exports.internalGetEnv = internalGetEnv;
|
package/tsconfig.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"strict": false,
|
|
4
|
-
"outDir": "./lib",
|
|
5
|
-
"rootDir": "./src",
|
|
6
|
-
"module": "commonjs",
|
|
7
|
-
"target": "es2020",
|
|
8
|
-
"moduleResolution": "node",
|
|
9
|
-
"lib": ["es2020"],
|
|
10
|
-
"declaration": true,
|
|
11
|
-
|
|
12
|
-
"esModuleInterop": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"forceConsistentCasingInFileNames": true,
|
|
15
|
-
|
|
16
|
-
// required for ioc
|
|
17
|
-
"experimentalDecorators": true,
|
|
18
|
-
"emitDecoratorMetadata": true
|
|
19
|
-
}
|
|
20
|
-
}
|