@incanta/config 2.1.1 → 2.1.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.
Files changed (49) hide show
  1. package/package.json +7 -5
  2. package/lib/config-env.d.ts +0 -3
  3. package/lib/config-env.d.ts.map +0 -1
  4. package/lib/config-env.js +0 -55
  5. package/lib/config-env.js.map +0 -1
  6. package/lib/config.d.ts +0 -44
  7. package/lib/config.d.ts.map +0 -1
  8. package/lib/config.js +0 -354
  9. package/lib/config.js.map +0 -1
  10. package/lib/index.d.ts +0 -4
  11. package/lib/index.d.ts.map +0 -1
  12. package/lib/index.js +0 -14
  13. package/lib/index.js.map +0 -1
  14. package/lib/loader.d.ts +0 -18
  15. package/lib/loader.d.ts.map +0 -1
  16. package/lib/loader.js +0 -226
  17. package/lib/loader.js.map +0 -1
  18. package/lib/merge-customizer.d.ts +0 -2
  19. package/lib/merge-customizer.d.ts.map +0 -1
  20. package/lib/merge-customizer.js +0 -10
  21. package/lib/merge-customizer.js.map +0 -1
  22. package/lib/secrets/aws-secrets-manager.d.ts +0 -7
  23. package/lib/secrets/aws-secrets-manager.d.ts.map +0 -1
  24. package/lib/secrets/aws-secrets-manager.js +0 -28
  25. package/lib/secrets/aws-secrets-manager.js.map +0 -1
  26. package/lib/secrets/azure-key-vault.d.ts +0 -7
  27. package/lib/secrets/azure-key-vault.d.ts.map +0 -1
  28. package/lib/secrets/azure-key-vault.js +0 -26
  29. package/lib/secrets/azure-key-vault.js.map +0 -1
  30. package/lib/secrets/gcp-secret-manager.d.ts +0 -7
  31. package/lib/secrets/gcp-secret-manager.d.ts.map +0 -1
  32. package/lib/secrets/gcp-secret-manager.js +0 -34
  33. package/lib/secrets/gcp-secret-manager.js.map +0 -1
  34. package/lib/secrets/hcp-vault.d.ts +0 -30
  35. package/lib/secrets/hcp-vault.d.ts.map +0 -1
  36. package/lib/secrets/hcp-vault.js +0 -59
  37. package/lib/secrets/hcp-vault.js.map +0 -1
  38. package/lib/secrets/local.d.ts +0 -7
  39. package/lib/secrets/local.d.ts.map +0 -1
  40. package/lib/secrets/local.js +0 -44
  41. package/lib/secrets/local.js.map +0 -1
  42. package/lib/secrets/provider.d.ts +0 -20
  43. package/lib/secrets/provider.d.ts.map +0 -1
  44. package/lib/secrets/provider.js +0 -38
  45. package/lib/secrets/provider.js.map +0 -1
  46. package/lib/secrets/vault.d.ts +0 -7
  47. package/lib/secrets/vault.d.ts.map +0 -1
  48. package/lib/secrets/vault.js +0 -86
  49. package/lib/secrets/vault.js.map +0 -1
package/lib/loader.js DELETED
@@ -1,226 +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.Loader = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const jsonc_parser_1 = require("jsonc-parser");
10
- const json5_1 = __importDefault(require("json5"));
11
- const js_yaml_1 = __importDefault(require("js-yaml"));
12
- const lodash_mergewith_1 = __importDefault(require("lodash.mergewith"));
13
- const merge_customizer_1 = require("./merge-customizer");
14
- class Loader {
15
- static readConfigSettings(folder) {
16
- let options = {};
17
- const configFiles = ["_config.json", "config.json"];
18
- for (const configFile of configFiles) {
19
- if (fs_1.default.existsSync(path_1.default.join(folder, configFile))) {
20
- try {
21
- options = JSON.parse(fs_1.default.readFileSync(path_1.default.join(folder, configFile), {
22
- encoding: "utf-8",
23
- }));
24
- break;
25
- }
26
- catch (e) {
27
- console.error(`Invalid JSON in ${path_1.default.join(folder, configFile)} file; skipping configuration`);
28
- break;
29
- }
30
- }
31
- }
32
- return options;
33
- }
34
- // add additional camelCase keys for any kebab-case keys (without overwriting existing keys)
35
- static convertKebabToCamelCase(obj, options) {
36
- const newObj = {};
37
- const objectOptions = {
38
- ...options,
39
- };
40
- if (typeof obj.variableCasing === "string") {
41
- objectOptions.variableCasing = obj.variableCasing;
42
- }
43
- for (const key of Object.keys(obj)) {
44
- if (key === "variableCasing") {
45
- continue;
46
- }
47
- const newKey = key.replace(/-([a-zA-Z0-9])/g, function (_, match) {
48
- return match.toUpperCase();
49
- });
50
- if (typeof obj[newKey] !== "undefined" && newKey !== key) {
51
- console.error(`Key ${newKey} already exists in object, but ${key} was also defined, skipping ${key}`);
52
- continue;
53
- }
54
- let newSubObj = {};
55
- if (typeof obj[key] === "object" &&
56
- !Array.isArray(obj[key]) &&
57
- obj[key] !== null) {
58
- newSubObj = Loader.convertKebabToCamelCase(obj[key], objectOptions);
59
- }
60
- else if (Array.isArray(obj[key])) {
61
- newSubObj = obj[key].map((item) => {
62
- if (typeof item === "object" &&
63
- !Array.isArray(item) &&
64
- item !== null) {
65
- return Loader.convertKebabToCamelCase(item, objectOptions);
66
- }
67
- else {
68
- return item;
69
- }
70
- });
71
- }
72
- else {
73
- newSubObj = obj[key];
74
- }
75
- const keepCamel = typeof objectOptions.variableCasing === "undefined" ||
76
- objectOptions.variableCasing === "camel" ||
77
- objectOptions.variableCasing === "both";
78
- const keepOriginal = objectOptions.variableCasing === "original" ||
79
- objectOptions.variableCasing === "both";
80
- if (keepCamel) {
81
- newObj[newKey] = newSubObj;
82
- }
83
- if (keepOriginal && ((keepCamel && newKey !== key) || !keepCamel)) {
84
- newObj[key] = newSubObj;
85
- }
86
- }
87
- return newObj;
88
- }
89
- static loadFile(filePath, options) {
90
- if (!fs_1.default.existsSync(filePath)) {
91
- return {};
92
- }
93
- const fileContents = fs_1.default.readFileSync(filePath, {
94
- encoding: "utf-8",
95
- });
96
- const fileParts = filePath.split(".");
97
- const extension = fileParts[fileParts.length - 1];
98
- let obj;
99
- if (/^ya?ml$/i.exec(extension)) {
100
- // yaml file
101
- obj = js_yaml_1.default.load(fileContents);
102
- }
103
- else if (/^json$/i.exec(extension)) {
104
- // json file
105
- obj = JSON.parse(fileContents);
106
- }
107
- else if (/^jsonc$/i.exec(extension)) {
108
- // jsonc file
109
- obj = (0, jsonc_parser_1.parse)(fileContents); // todo: handle error callback
110
- }
111
- else if (/^json5$/i.exec(extension)) {
112
- // json5 file
113
- obj = json5_1.default.parse(fileContents);
114
- }
115
- else {
116
- console.log(`Invalid file name ${filePath}. Only yml, yaml, json, jsonc, json5 extensions are supported (case insensitive).`);
117
- obj = {};
118
- }
119
- return obj;
120
- }
121
- static loadRoot(folder, options, config) {
122
- const baseObj = {};
123
- let loadedNames = options.loadedNames || [];
124
- loadedNames.push(path_1.default.basename(folder));
125
- if (options.parentNames) {
126
- if (typeof options.parentNames === "string") {
127
- throw new Error("parentNames should be an array of strings, not a single string");
128
- }
129
- for (const parentName of options.parentNames) {
130
- if (parentName === "default") {
131
- // skip explicitly stated default parents; they're already loaded
132
- continue;
133
- }
134
- if (loadedNames.includes(parentName)) {
135
- continue;
136
- }
137
- const parentFolder = config.configEnvDir(parentName);
138
- if (parentFolder) {
139
- const parentOptions = Loader.readConfigSettings(parentFolder);
140
- const parentResult = Loader.loadRoot(parentFolder, {
141
- ...options,
142
- parentNames: parentOptions.parentNames,
143
- loadedNames,
144
- existingObj: {
145
- ...options.existingObj,
146
- },
147
- }, config);
148
- (0, lodash_mergewith_1.default)(baseObj, parentResult.data, merge_customizer_1.mergeWithCustomizer);
149
- loadedNames = parentResult.loadedNames;
150
- }
151
- }
152
- }
153
- (0, lodash_mergewith_1.default)(baseObj, Loader.load(folder, options), merge_customizer_1.mergeWithCustomizer);
154
- return {
155
- data: baseObj,
156
- loadedNames,
157
- };
158
- }
159
- static load(folder, options) {
160
- if (!fs_1.default.existsSync(folder)) {
161
- return {};
162
- }
163
- const baseObj = {};
164
- const contents = fs_1.default.readdirSync(folder, {
165
- encoding: "utf-8",
166
- withFileTypes: true,
167
- });
168
- // first load the index file
169
- for (const content of contents) {
170
- if (!content.isDirectory() && /^_?index\./.exec(content.name) !== null) {
171
- (0, lodash_mergewith_1.default)(baseObj, Loader.loadFile(path_1.default.join(folder, content.name), options), merge_customizer_1.mergeWithCustomizer);
172
- }
173
- }
174
- // load the base config for other files to copy before merging
175
- if (typeof baseObj.incantaConfigBase === "string") {
176
- const baseFolder = contents.find((content) => content.name.startsWith(`${baseObj.incantaConfigBase}.`));
177
- if (baseFolder) {
178
- const incantaConfigBaseObj = Loader.loadFile(path_1.default.join(folder, baseFolder.name), options);
179
- if (typeof baseObj[baseObj.incantaConfigBase] === "undefined") {
180
- baseObj[baseObj.incantaConfigBase] = {};
181
- }
182
- (0, lodash_mergewith_1.default)(baseObj[baseObj.incantaConfigBase], incantaConfigBaseObj, merge_customizer_1.mergeWithCustomizer);
183
- }
184
- }
185
- // then load other files
186
- for (const content of contents) {
187
- // skip git meta files (.gitignore, .gitattributes, etc)
188
- if (/^\.git/.exec(content.name) !== null) {
189
- continue;
190
- }
191
- if (content.isDirectory()) {
192
- const key = content.name;
193
- if (typeof baseObj[key] === "undefined") {
194
- baseObj[key] = {};
195
- }
196
- const obj = Loader.load(path_1.default.join(folder, content.name), {
197
- ...options,
198
- existingObj: options.existingObj?.[key] || {},
199
- });
200
- (0, lodash_mergewith_1.default)(baseObj[key], obj, merge_customizer_1.mergeWithCustomizer);
201
- }
202
- else {
203
- if (/^_?index\./.exec(content.name) !== null) {
204
- // we already loaded this to be be in the base config
205
- continue;
206
- }
207
- const fileParts = content.name.split(".");
208
- if (fileParts.length === 2) {
209
- const key = fileParts[0];
210
- if (typeof baseObj[key] === "undefined") {
211
- baseObj[key] = {};
212
- }
213
- const obj = Loader.loadFile(path_1.default.join(folder, content.name), options);
214
- (0, lodash_mergewith_1.default)(baseObj[key], obj, merge_customizer_1.mergeWithCustomizer);
215
- }
216
- else {
217
- console.log(`Invalid file name ${content.name}. Config files must have a supported extension and contain no extra periods in the file name`);
218
- continue;
219
- }
220
- }
221
- }
222
- return baseObj;
223
- }
224
- }
225
- exports.Loader = Loader;
226
- //# sourceMappingURL=loader.js.map
package/lib/loader.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function mergeWithCustomizer(objValue: any, srcValue: any): any;
2
- //# sourceMappingURL=merge-customizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-customizer.d.ts","sourceRoot":"","sources":["../src/merge-customizer.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,CAKrE"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeWithCustomizer = mergeWithCustomizer;
4
- function mergeWithCustomizer(objValue, srcValue) {
5
- if (Array.isArray(objValue) || Array.isArray(srcValue)) {
6
- // we want arrays to be replaced, not merged
7
- return srcValue;
8
- }
9
- }
10
- //# sourceMappingURL=merge-customizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-customizer.js","sourceRoot":"","sources":["../src/merge-customizer.ts"],"names":[],"mappings":";;AAAA,kDAKC;AALD,SAAgB,mBAAmB,CAAC,QAAa,EAAE,QAAa;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,4CAA4C;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import { ISecretsProvider, ISecretsToken } from "./provider";
2
- import Config from "../config";
3
- export declare class AwsSecretsManagerSecretsProvider implements ISecretsProvider {
4
- getAuthToken(config: Config): Promise<ISecretsToken>;
5
- getSecret(config: Config, token: string, name: string): Promise<string>;
6
- }
7
- //# sourceMappingURL=aws-secrets-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aws-secrets-manager.d.ts","sourceRoot":"","sources":["../../src/secrets/aws-secrets-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,qBAAa,gCAAiC,YAAW,gBAAgB;IAC1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOpD,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;CAoBnB"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AwsSecretsManagerSecretsProvider = void 0;
4
- const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
- class AwsSecretsManagerSecretsProvider {
6
- async getAuthToken(config) {
7
- return {
8
- value: "", // auth happens automatically with AWS SDK
9
- expires: new Date(Date.now() + 3600 * 1000),
10
- };
11
- }
12
- async getSecret(config, token, name) {
13
- const region = config.get("secrets.aws-kms.region");
14
- const client = new client_secrets_manager_1.SecretsManagerClient({
15
- region,
16
- });
17
- const response = await client.send(new client_secrets_manager_1.GetSecretValueCommand({
18
- SecretId: name,
19
- VersionStage: "AWSCURRENT",
20
- }));
21
- if (!response.SecretString) {
22
- throw new Error(`No secret found with name: ${name}`);
23
- }
24
- return response.SecretString;
25
- }
26
- }
27
- exports.AwsSecretsManagerSecretsProvider = AwsSecretsManagerSecretsProvider;
28
- //# sourceMappingURL=aws-secrets-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aws-secrets-manager.js","sourceRoot":"","sources":["../../src/secrets/aws-secrets-manager.ts"],"names":[],"mappings":";;;AAAA,4EAGyC;AAIzC,MAAa,gCAAgC;IACpC,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,OAAO;YACL,KAAK,EAAE,EAAE,EAAE,0CAA0C;YACrD,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAAc,EACd,KAAa,EACb,IAAY;QAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAS,wBAAwB,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAI,6CAAoB,CAAC;YACtC,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,IAAI,8CAAqB,CAAC;YACxB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,YAAY;SAC3B,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC/B,CAAC;CACF;AAhCD,4EAgCC"}
@@ -1,7 +0,0 @@
1
- import { ISecretsProvider, ISecretsToken } from "./provider";
2
- import Config from "../config";
3
- export declare class AzureKeyVaultSecretsProvider implements ISecretsProvider {
4
- getAuthToken(config: Config): Promise<ISecretsToken>;
5
- getSecret(config: Config, token: string, name: string): Promise<string>;
6
- }
7
- //# sourceMappingURL=azure-key-vault.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"azure-key-vault.d.ts","sourceRoot":"","sources":["../../src/secrets/azure-key-vault.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,qBAAa,4BAA6B,YAAW,gBAAgB;IACtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOpD,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;CAenB"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AzureKeyVaultSecretsProvider = void 0;
4
- const keyvault_secrets_1 = require("@azure/keyvault-secrets");
5
- const identity_1 = require("@azure/identity");
6
- class AzureKeyVaultSecretsProvider {
7
- async getAuthToken(config) {
8
- return {
9
- value: "", // auth happens automatically with the Azure SDK
10
- expires: new Date(Date.now() + 3600 * 1000),
11
- };
12
- }
13
- async getSecret(config, token, name) {
14
- // DefaultAzureCredential expects the following three environment variables:
15
- // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
16
- // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
17
- // - AZURE_CLIENT_SECRET: The client secret for the registered application
18
- const credential = new identity_1.DefaultAzureCredential();
19
- const endpoint = config.get("secrets.azure-key-vault.endpoint");
20
- const client = new keyvault_secrets_1.SecretClient(endpoint, credential);
21
- const secret = await client.getSecret(name);
22
- return secret.value || "";
23
- }
24
- }
25
- exports.AzureKeyVaultSecretsProvider = AzureKeyVaultSecretsProvider;
26
- //# sourceMappingURL=azure-key-vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"azure-key-vault.js","sourceRoot":"","sources":["../../src/secrets/azure-key-vault.ts"],"names":[],"mappings":";;;AAAA,8DAAuD;AACvD,8CAAyD;AAIzD,MAAa,4BAA4B;IAChC,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,OAAO;YACL,KAAK,EAAE,EAAE,EAAE,gDAAgD;YAC3D,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAAc,EACd,KAAa,EACb,IAAY;QAEZ,4EAA4E;QAC5E,6DAA6D;QAC7D,8EAA8E;QAC9E,0EAA0E;QAC1E,MAAM,UAAU,GAAG,IAAI,iCAAsB,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAS,kCAAkC,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,IAAI,+BAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,CAAC;CACF;AA3BD,oEA2BC"}
@@ -1,7 +0,0 @@
1
- import { ISecretsProvider, ISecretsToken } from "./provider";
2
- import Config from "../config";
3
- export declare class GcpSecretManagerSecretsProvider implements ISecretsProvider {
4
- getAuthToken(config: Config): Promise<ISecretsToken>;
5
- getSecret(config: Config, token: string, name: string): Promise<string>;
6
- }
7
- //# sourceMappingURL=gcp-secret-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcp-secret-manager.d.ts","sourceRoot":"","sources":["../../src/secrets/gcp-secret-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/B,qBAAa,+BAAgC,YAAW,gBAAgB;IACzD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOpD,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;CA0BnB"}
@@ -1,34 +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.GcpSecretManagerSecretsProvider = void 0;
7
- const secret_manager_1 = require("@google-cloud/secret-manager");
8
- const { SecretManagerServiceClient } = secret_manager_1.v1;
9
- const path_1 = __importDefault(require("path"));
10
- class GcpSecretManagerSecretsProvider {
11
- async getAuthToken(config) {
12
- return {
13
- value: "", // auth happens automatically with the Azure SDK
14
- expires: new Date(Date.now() + 3600 * 1000),
15
- };
16
- }
17
- async getSecret(config, token, name) {
18
- if (!process.env.GOOGLE_APPLICATION_CREDENTIALS) {
19
- const credentialsPath = path_1.default.resolve(process.cwd(), config.get("secrets.gcp-secret-manager.credentials-file"));
20
- process.env.GOOGLE_APPLICATION_CREDENTIALS = credentialsPath;
21
- }
22
- const client = new SecretManagerServiceClient();
23
- const projectId = config.get("secrets.gcp-secret-manager.project-id");
24
- const [secret] = await client.accessSecretVersion({
25
- name: `projects/${projectId}/secrets/${name}/versions/latest`,
26
- });
27
- if (!secret.payload || !secret.payload.data) {
28
- throw new Error(`No secret found with name: ${name}`);
29
- }
30
- return secret.payload.data.toString();
31
- }
32
- }
33
- exports.GcpSecretManagerSecretsProvider = GcpSecretManagerSecretsProvider;
34
- //# sourceMappingURL=gcp-secret-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcp-secret-manager.js","sourceRoot":"","sources":["../../src/secrets/gcp-secret-manager.ts"],"names":[],"mappings":";;;;;;AAAA,iEAAkD;AAClD,MAAM,EAAE,0BAA0B,EAAE,GAAG,mBAAE,CAAC;AAG1C,gDAAwB;AAExB,MAAa,+BAA+B;IACnC,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,OAAO;YACL,KAAK,EAAE,EAAE,EAAE,gDAAgD;YAC3D,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAAc,EACd,KAAa,EACb,IAAY;QAEZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAChD,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAClC,OAAO,CAAC,GAAG,EAAE,EACb,MAAM,CAAC,GAAG,CAAS,6CAA6C,CAAC,CAClE,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,eAAe,CAAC;QAC/D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAEhD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAC1B,uCAAuC,CACxC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC;YAChD,IAAI,EAAE,YAAY,SAAS,YAAY,IAAI,kBAAkB;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;CACF;AAtCD,0EAsCC"}
@@ -1,30 +0,0 @@
1
- import Config from "../config";
2
- import { ISecretsProvider, ISecretsToken } from "./provider";
3
- export interface IHcpVaultSecret {
4
- name: string;
5
- version: {
6
- version: string;
7
- type: string;
8
- created_at: string;
9
- value: string;
10
- created_by: {
11
- name: string;
12
- type: string;
13
- email: string;
14
- };
15
- };
16
- created_at: string;
17
- latest_version: string;
18
- created_by: {
19
- name: string;
20
- type: string;
21
- email: string;
22
- };
23
- sync_status: any;
24
- }
25
- export declare class HcpVaultSecretsProvider implements ISecretsProvider {
26
- getAuthToken(): Promise<ISecretsToken>;
27
- getSecrets(config: Config, token: string): Promise<Record<string, string>>;
28
- getSecret(config: Config, token: string, secretName: string): Promise<string>;
29
- }
30
- //# sourceMappingURL=hcp-vault.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hcp-vault.d.ts","sourceRoot":"","sources":["../../src/secrets/hcp-vault.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IACjD,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IA4BtC,UAAU,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAqBrB,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAenB"}
@@ -1,59 +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.HcpVaultSecretsProvider = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- class HcpVaultSecretsProvider {
9
- async getAuthToken() {
10
- try {
11
- const response = await axios_1.default.post("https://auth.idp.hashicorp.com/oauth2/token", {
12
- client_id: process.env.HCP_CLIENT_ID,
13
- client_secret: process.env.HCP_CLIENT_SECRET,
14
- grant_type: "client_credentials",
15
- audience: "https://api.hashicorp.cloud",
16
- }, {
17
- headers: {
18
- "Content-Type": "application/x-www-form-urlencoded",
19
- },
20
- });
21
- return {
22
- value: response.data.access_token,
23
- expires: new Date(Date.now() + response.data.expires_in * 1000),
24
- };
25
- }
26
- catch (error) {
27
- const typedError = error;
28
- throw new Error(`Failed to get HCP Vault token: ${typedError.code}; did you set HCP_CLIENT_ID and HCP_CLIENT_SECRET?`);
29
- }
30
- }
31
- async getSecrets(config, token) {
32
- const orgId = config.get("secrets.hcp-vault.organization-id");
33
- const projectId = config.get("secrets.hcp-vault.project-id");
34
- const appName = config.get("secrets.hcp-vault.app-name");
35
- const response = await axios_1.default.get(`https://api.cloud.hashicorp.com/secrets/2023-06-13/organizations/${orgId}/projects/${projectId}/apps/${appName}/open`, {
36
- headers: {
37
- Authorization: `Bearer ${token}`,
38
- },
39
- });
40
- const secrets = {};
41
- for (const secret of response.data.secrets) {
42
- secrets[secret.name] = secret.version.value;
43
- }
44
- return secrets;
45
- }
46
- async getSecret(config, token, secretName) {
47
- const orgId = config.get("secrets.hcp-vault.organization-id");
48
- const projectId = config.get("secrets.hcp-vault.project-id");
49
- const appName = config.get("secrets.hcp-vault.app-name");
50
- const response = await axios_1.default.get(`https://api.cloud.hashicorp.com/secrets/2023-06-13/organizations/${orgId}/projects/${projectId}/apps/${appName}/open/${secretName}`, {
51
- headers: {
52
- Authorization: `Bearer ${token}`,
53
- },
54
- });
55
- return response.data.secret.version.value;
56
- }
57
- }
58
- exports.HcpVaultSecretsProvider = HcpVaultSecretsProvider;
59
- //# sourceMappingURL=hcp-vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hcp-vault.js","sourceRoot":"","sources":["../../src/secrets/hcp-vault.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AA2B1C,MAAa,uBAAuB;IAC3B,KAAK,CAAC,YAAY;QACvB,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,6CAA6C,EAC7C;gBACE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACpC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBAC5C,UAAU,EAAE,oBAAoB;gBAChC,QAAQ,EAAE,6BAA6B;aACxC,EACD;gBACE,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;iBACpD;aACF,CACF,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;gBACjC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aAChE,CAAC;SACH;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,UAAU,GAAG,KAAmB,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,CAAC,IAAI,oDAAoD,CACtG,CAAC;SACH;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,MAAc,EACd,KAAa;QAEb,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAS,mCAAmC,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAS,8BAA8B,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAS,4BAA4B,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,oEAAoE,KAAK,aAAa,SAAS,SAAS,OAAO,OAAO,EACtH;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CACF,CAAC;QAEF,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,OAA4B,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAC7C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAAc,EACd,KAAa,EACb,UAAkB;QAElB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAS,mCAAmC,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAS,8BAA8B,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAS,4BAA4B,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,oEAAoE,KAAK,aAAa,SAAS,SAAS,OAAO,SAAS,UAAU,EAAE,EACpI;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CACF,CAAC;QAEF,OAAQ,QAAQ,CAAC,IAAI,CAAC,MAA0B,CAAC,OAAO,CAAC,KAAK,CAAC;IACjE,CAAC;CACF;AAxED,0DAwEC"}
@@ -1,7 +0,0 @@
1
- import { ISecretsProvider, ISecretsToken } from "./provider";
2
- import Config from "../config";
3
- export declare class LocalSecretsProvider implements ISecretsProvider {
4
- getAuthToken(config: Config): Promise<ISecretsToken>;
5
- getSecret(config: Config, token: string, name: string): Promise<string>;
6
- }
7
- //# sourceMappingURL=local.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/secrets/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,MAAM,MAAM,WAAW,CAAC;AAI/B,qBAAa,oBAAqB,YAAW,gBAAgB;IAC9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOpD,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;CAmCnB"}
@@ -1,44 +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.LocalSecretsProvider = void 0;
7
- const fs_1 = require("fs");
8
- const path_1 = __importDefault(require("path"));
9
- class LocalSecretsProvider {
10
- async getAuthToken(config) {
11
- return {
12
- value: "", // there is no auth token for local secrets
13
- expires: new Date(Date.now() + 3600 * 1000),
14
- };
15
- }
16
- async getSecret(config, token, name) {
17
- let filePath = config.tryGet("secrets.local.file-path");
18
- if (filePath === null) {
19
- filePath = ".secrets";
20
- }
21
- const absolutePath = path_1.default.resolve(process.cwd(), filePath);
22
- if ((0, fs_1.existsSync)(absolutePath) === false) {
23
- throw new Error(`Secrets file does not exist: ${absolutePath}`);
24
- }
25
- const contents = await fs_1.promises.readFile(absolutePath, "utf8");
26
- const secretLines = contents.replace(/\r\n/g, "\n").split("\n");
27
- const secretMap = {};
28
- for (const line of secretLines) {
29
- const [key, value] = line.split("=");
30
- if (key && value) {
31
- secretMap[key.trim()] = value.trim();
32
- }
33
- }
34
- if (Object.keys(secretMap).length === 0) {
35
- throw new Error(`No secrets found in file: ${filePath}`);
36
- }
37
- if (!secretMap[name]) {
38
- throw new Error(`No secret found with name: ${name}`);
39
- }
40
- return secretMap[name];
41
- }
42
- }
43
- exports.LocalSecretsProvider = LocalSecretsProvider;
44
- //# sourceMappingURL=local.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/secrets/local.ts"],"names":[],"mappings":";;;;;;AAEA,2BAAgD;AAChD,gDAAwB;AAExB,MAAa,oBAAoB;IACxB,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,OAAO;YACL,KAAK,EAAE,EAAE,EAAE,2CAA2C;YACtD,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAAc,EACd,KAAa,EACb,IAAY;QAEZ,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAS,yBAAyB,CAAC,CAAC;QAEhE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,QAAQ,GAAG,UAAU,CAAC;QACxB,CAAC;QAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3D,IAAI,IAAA,eAAU,EAAC,YAAY,CAAC,KAAK,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBACjB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AA/CD,oDA+CC"}
@@ -1,20 +0,0 @@
1
- import Config from "../config";
2
- export declare enum SecretsProviderType {
3
- HcpVault = "hcp-vault",
4
- Vault = "vault",
5
- AwsSecretsManager = "aws-secrets-manager",
6
- AzureKeyVault = "azure-key-vault",
7
- GcpSecretManager = "gcp-secret-manager",
8
- Local = "local",
9
- None = "none"
10
- }
11
- export interface ISecretsToken {
12
- value: string;
13
- expires: Date;
14
- }
15
- export interface ISecretsProvider {
16
- getAuthToken(config: Config): Promise<ISecretsToken>;
17
- getSecret(config: Config, token: string, name: string): Promise<string>;
18
- }
19
- export declare function GetSecretsProvider(provider: SecretsProviderType): ISecretsProvider;
20
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/secrets/provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAO/B,oBAAY,mBAAmB;IAC7B,QAAQ,cAAc;IACtB,KAAK,UAAU;IACf,iBAAiB,wBAAwB;IACzC,aAAa,oBAAoB;IACjC,gBAAgB,uBAAuB;IACvC,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,mBAAmB,GAC5B,gBAAgB,CAmBlB"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SecretsProviderType = void 0;
4
- exports.GetSecretsProvider = GetSecretsProvider;
5
- const vault_1 = require("./vault");
6
- const aws_secrets_manager_1 = require("./aws-secrets-manager");
7
- const azure_key_vault_1 = require("./azure-key-vault");
8
- const gcp_secret_manager_1 = require("./gcp-secret-manager");
9
- const local_1 = require("./local");
10
- var SecretsProviderType;
11
- (function (SecretsProviderType) {
12
- SecretsProviderType["HcpVault"] = "hcp-vault";
13
- SecretsProviderType["Vault"] = "vault";
14
- SecretsProviderType["AwsSecretsManager"] = "aws-secrets-manager";
15
- SecretsProviderType["AzureKeyVault"] = "azure-key-vault";
16
- SecretsProviderType["GcpSecretManager"] = "gcp-secret-manager";
17
- SecretsProviderType["Local"] = "local";
18
- SecretsProviderType["None"] = "none";
19
- })(SecretsProviderType || (exports.SecretsProviderType = SecretsProviderType = {}));
20
- function GetSecretsProvider(provider) {
21
- switch (provider) {
22
- case SecretsProviderType.HcpVault:
23
- throw new Error(`Hashicorp's managed HCP Vault has been discontinued; please use another secrets provider\n\nhttps://developer.hashicorp.com/hcp/docs/vault-secrets/end-of-sale-announcement\n`);
24
- case SecretsProviderType.Vault:
25
- return new vault_1.VaultSecretsProvider();
26
- case SecretsProviderType.AwsSecretsManager:
27
- return new aws_secrets_manager_1.AwsSecretsManagerSecretsProvider();
28
- case SecretsProviderType.AzureKeyVault:
29
- return new azure_key_vault_1.AzureKeyVaultSecretsProvider();
30
- case SecretsProviderType.GcpSecretManager:
31
- return new gcp_secret_manager_1.GcpSecretManagerSecretsProvider();
32
- case SecretsProviderType.Local:
33
- return new local_1.LocalSecretsProvider();
34
- default:
35
- throw new Error(`Unknown secrets provider: ${provider}`);
36
- }
37
- }
38
- //# sourceMappingURL=provider.js.map