@dyanet/config-aws 1.0.2 → 1.1.0
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/LICENSE +21 -0
- package/README.md +20 -1
- package/dist/cjs/config-manager.js +7 -7
- package/dist/cjs/config-manager.js.map +1 -1
- package/dist/cjs/index.js +22 -22
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/loaders/env-file.loader.js +2 -2
- package/dist/cjs/loaders/env-file.loader.js.map +1 -1
- package/dist/cjs/loaders/index.js +10 -10
- package/dist/cjs/loaders/index.js.map +1 -1
- package/dist/cjs/loaders/s3.loader.js +62 -11
- package/dist/cjs/loaders/s3.loader.js.map +1 -1
- package/dist/cjs/loaders/secrets-manager.loader.js +61 -11
- package/dist/cjs/loaders/secrets-manager.loader.js.map +1 -1
- package/dist/cjs/loaders/ssm-parameter-store.loader.js +61 -11
- package/dist/cjs/loaders/ssm-parameter-store.loader.js.map +1 -1
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/utils/index.js +4 -4
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/optional-dependency.util.js +43 -0
- package/dist/cjs/utils/optional-dependency.util.js.map +1 -0
- package/dist/esm/config-manager.js +10 -4
- package/dist/esm/config-manager.js.map +1 -1
- package/dist/esm/errors/index.js +12 -0
- package/dist/esm/errors/index.js.map +1 -1
- package/dist/esm/index.js +9 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loaders/env-file.loader.js +7 -5
- package/dist/esm/loaders/env-file.loader.js.map +1 -1
- package/dist/esm/loaders/environment.loader.js +2 -0
- package/dist/esm/loaders/environment.loader.js.map +1 -1
- package/dist/esm/loaders/index.js +5 -5
- package/dist/esm/loaders/index.js.map +1 -1
- package/dist/esm/loaders/s3.loader.js +31 -9
- package/dist/esm/loaders/s3.loader.js.map +1 -1
- package/dist/esm/loaders/secrets-manager.loader.js +33 -10
- package/dist/esm/loaders/secrets-manager.loader.js.map +1 -1
- package/dist/esm/loaders/ssm-parameter-store.loader.js +33 -10
- package/dist/esm/loaders/ssm-parameter-store.loader.js.map +1 -1
- package/dist/esm/package.json +3 -0
- package/dist/esm/utils/env-file-parser.util.js +4 -4
- package/dist/esm/utils/env-file-parser.util.js.map +1 -1
- package/dist/esm/utils/index.js +2 -2
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/optional-dependency.util.js +40 -0
- package/dist/esm/utils/optional-dependency.util.js.map +1 -0
- package/dist/types/config-manager.d.ts +1 -1
- package/dist/types/config-manager.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -16
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/config-manager.interface.d.ts +1 -1
- package/dist/types/interfaces/config-manager.interface.d.ts.map +1 -1
- package/dist/types/interfaces/index.d.ts +7 -7
- package/dist/types/interfaces/index.d.ts.map +1 -1
- package/dist/types/loaders/env-file.loader.d.ts +2 -2
- package/dist/types/loaders/env-file.loader.d.ts.map +1 -1
- package/dist/types/loaders/environment.loader.d.ts +2 -2
- package/dist/types/loaders/environment.loader.d.ts.map +1 -1
- package/dist/types/loaders/index.d.ts +5 -5
- package/dist/types/loaders/index.d.ts.map +1 -1
- package/dist/types/loaders/s3.loader.d.ts +17 -5
- package/dist/types/loaders/s3.loader.d.ts.map +1 -1
- package/dist/types/loaders/secrets-manager.loader.d.ts +17 -5
- package/dist/types/loaders/secrets-manager.loader.d.ts.map +1 -1
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts +17 -5
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +2 -2
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/optional-dependency.util.d.ts +23 -0
- package/dist/types/utils/optional-dependency.util.d.ts.map +1 -0
- package/package.json +35 -3
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.SSMParameterStoreLoader = void 0;
|
|
4
|
-
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
5
|
-
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
6
37
|
const index_js_1 = require("../errors/index.js");
|
|
38
|
+
const optional_dependency_util_js_1 = require("../utils/optional-dependency.util.js");
|
|
7
39
|
/**
|
|
8
40
|
* Loader that reads configuration from AWS SSM Parameter Store.
|
|
9
41
|
* Supports environment-aware path construction, pagination, and decryption options.
|
|
@@ -41,11 +73,26 @@ class SSMParameterStoreLoader {
|
|
|
41
73
|
},
|
|
42
74
|
withDecryption: config.withDecryption ?? true,
|
|
43
75
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Lazily import the AWS SSM SDK. Imported on demand so the SDK is an optional
|
|
79
|
+
* peer dependency and is never loaded unless this loader runs.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
importSdk() {
|
|
83
|
+
return (0, optional_dependency_util_js_1.loadOptionalDependency)('@aws-sdk/client-ssm', () => Promise.resolve().then(() => __importStar(require('@aws-sdk/client-ssm'))));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get (creating on first use) the SSM client. The client relies on the AWS SDK's
|
|
87
|
+
* default Node credential provider chain.
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
async getClient() {
|
|
91
|
+
if (!this._client) {
|
|
92
|
+
const { SSMClient } = await this.importSdk();
|
|
93
|
+
this._client = new SSMClient({ region: this._config.region });
|
|
94
|
+
}
|
|
95
|
+
return this._client;
|
|
49
96
|
}
|
|
50
97
|
/**
|
|
51
98
|
* Get the name of this loader for logging and debugging.
|
|
@@ -71,8 +118,9 @@ class SSMParameterStoreLoader {
|
|
|
71
118
|
return false;
|
|
72
119
|
}
|
|
73
120
|
try {
|
|
74
|
-
// Test AWS credentials by
|
|
75
|
-
await this.
|
|
121
|
+
// Test AWS credentials by resolving the default provider chain
|
|
122
|
+
const client = await this.getClient();
|
|
123
|
+
await client.config.credentials();
|
|
76
124
|
return true;
|
|
77
125
|
}
|
|
78
126
|
catch {
|
|
@@ -92,17 +140,19 @@ class SSMParameterStoreLoader {
|
|
|
92
140
|
return {};
|
|
93
141
|
}
|
|
94
142
|
const parameterPath = this.buildParameterPath();
|
|
143
|
+
const { GetParametersByPathCommand } = await this.importSdk();
|
|
144
|
+
const client = await this.getClient();
|
|
95
145
|
const result = {};
|
|
96
146
|
let nextToken;
|
|
97
147
|
try {
|
|
98
148
|
do {
|
|
99
|
-
const command = new
|
|
149
|
+
const command = new GetParametersByPathCommand({
|
|
100
150
|
Path: parameterPath,
|
|
101
151
|
Recursive: true,
|
|
102
152
|
WithDecryption: this._config.withDecryption,
|
|
103
153
|
NextToken: nextToken,
|
|
104
154
|
});
|
|
105
|
-
const response = await
|
|
155
|
+
const response = await client.send(command);
|
|
106
156
|
if (!response.Parameters) {
|
|
107
157
|
// No parameters found - this is not necessarily an error
|
|
108
158
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,iDAA6E;AAC7E,sFAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,uBAAuB;IAQlC,YAAY,SAAwC,EAAE;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC;QAE5E,4BAA4B;QAC5B,IAAI,CAAC,OAAO,GAAG;YACb,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,aAAa;YACpD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,WAAW;YACjE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI;gBAC/C,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,YAAY;aACzB;YACD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;SAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACO,SAAS;QACjB,OAAO,IAAA,oDAAsB,EAAC,qBAAqB,EAAE,GAAG,EAAE,mDAAQ,qBAAqB,GAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,SAAS;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAGD;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChD,OAAO,2BAA2B,aAAa,GAAG,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,OAAO,2BAA2B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI;QACR,oCAAoC;QACpC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,SAA6B,CAAC;QAElC,IAAI,CAAC;YACH,GAAG,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC;oBAC7C,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,yDAAyD;oBACzD,MAAM;gBACR,CAAC;gBAED,yBAAyB;gBACzB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;oBAEnE,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBACrC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAED,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YACjC,CAAC,QAAQ,SAAS,EAAE;YAEpB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6BAA6B;YAC7B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACrF,iEAAiE;oBACjE,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBAC3C,MAAM,IAAI,0BAAe,CACvB,uDAAuD,aAAa,2CAA2C,EAC/G,KAAK,EACL,qBAAqB,EACrB,KAAK,CACN,CAAC;gBACJ,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAC7E,MAAM,IAAI,0BAAe,CACvB,2BAA2B,aAAa,uBAAuB,EAC/D,KAAK,EACL,qBAAqB,EACrB,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,MAAM,IAAI,0BAAe,CACvB,4CAA4C,aAAa,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClJ,KAAK,EACL,qBAAqB,EACrB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAGD;;;;OAIG;IACH,kBAAkB;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,iCAAsB,CAC9B,6CAA6C,IAAI,CAAC,OAAO,KAAK;gBAC5D,2BAA2B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACtF,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACK,sBAAsB,CAAC,aAAiC,EAAE,UAAkB;QAClF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,GAAG,aAAa,CAAC;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,kCAAkC;QAClC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,+CAA+C;QAC/C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5C,6BAA6B;QAC7B,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAChD,CAAC;CACF;AAvOD,0DAuOC"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EnvFileParser = exports.ConfigValidationUtil = void 0;
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "ConfigValidationUtil", { enumerable: true, get: function () { return
|
|
6
|
-
var
|
|
7
|
-
Object.defineProperty(exports, "EnvFileParser", { enumerable: true, get: function () { return
|
|
4
|
+
var validation_util_js_1 = require("./validation.util.js");
|
|
5
|
+
Object.defineProperty(exports, "ConfigValidationUtil", { enumerable: true, get: function () { return validation_util_js_1.ConfigValidationUtil; } });
|
|
6
|
+
var env_file_parser_util_js_1 = require("./env-file-parser.util.js");
|
|
7
|
+
Object.defineProperty(exports, "EnvFileParser", { enumerable: true, get: function () { return env_file_parser_util_js_1.EnvFileParser; } });
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAA4D;AAAnD,0HAAA,oBAAoB,OAAA;AAC7B,qEAA0D;AAAjD,wHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadOptionalDependency = loadOptionalDependency;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
/**
|
|
6
|
+
* Dynamically import an optional dependency (e.g. an AWS SDK client) only when a
|
|
7
|
+
* loader actually needs it.
|
|
8
|
+
*
|
|
9
|
+
* This keeps the AWS SDK packages as genuinely optional peer dependencies:
|
|
10
|
+
* consumers that never use AWS-backed loaders do not need them installed, and the
|
|
11
|
+
* SDKs are never loaded at module import time — only on first use of the loader.
|
|
12
|
+
*
|
|
13
|
+
* @param packageName The npm package name, used for the install hint and error message.
|
|
14
|
+
* @param importer A thunk performing the dynamic `import()` with a literal specifier.
|
|
15
|
+
* @returns The imported module namespace.
|
|
16
|
+
* @throws ConfigurationLoadError with an install hint when the package is not installed.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const { S3Client } = await loadOptionalDependency(
|
|
21
|
+
* '@aws-sdk/client-s3',
|
|
22
|
+
* () => import('@aws-sdk/client-s3'),
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
async function loadOptionalDependency(packageName, importer) {
|
|
27
|
+
try {
|
|
28
|
+
return await importer();
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const code = error?.code;
|
|
32
|
+
const message = error instanceof Error ? error.message : '';
|
|
33
|
+
const isMissing = code === 'MODULE_NOT_FOUND' ||
|
|
34
|
+
code === 'ERR_MODULE_NOT_FOUND' ||
|
|
35
|
+
/cannot find (module|package)/i.test(message);
|
|
36
|
+
if (isMissing) {
|
|
37
|
+
throw new errors_1.ConfigurationLoadError(`The optional dependency "${packageName}" is required for this loader but is not installed. ` +
|
|
38
|
+
`Install it with: npm install ${packageName}`, packageName, error instanceof Error ? error : undefined);
|
|
39
|
+
}
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=optional-dependency.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional-dependency.util.js","sourceRoot":"","sources":["../../../src/utils/optional-dependency.util.ts"],"names":[],"mappings":";;AAuBA,wDAyBC;AAhDD,sCAAmD;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,QAA0B;IAE1B,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GACb,IAAI,KAAK,kBAAkB;YAC3B,IAAI,KAAK,sBAAsB;YAC/B,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,+BAAsB,CAC9B,4BAA4B,WAAW,sDAAsD;gBAC3F,gCAAgC,WAAW,EAAE,EAC/C,WAAW,EACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigurationError, ConfigurationLoadError, ValidationError } from './errors';
|
|
1
|
+
import { ConfigurationError, ConfigurationLoadError, ValidationError } from './errors/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Default console logger implementation
|
|
4
4
|
*/
|
|
@@ -75,10 +75,16 @@ const PRECEDENCE_ORDERS = {
|
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
77
77
|
export class ConfigManager {
|
|
78
|
+
/** @internal */
|
|
79
|
+
_options;
|
|
80
|
+
/** @internal */
|
|
81
|
+
_logger;
|
|
82
|
+
/** @internal */
|
|
83
|
+
_verboseOptions;
|
|
84
|
+
config = null;
|
|
85
|
+
loadResult = null;
|
|
86
|
+
loaded = false;
|
|
78
87
|
constructor(options = {}) {
|
|
79
|
-
this.config = null;
|
|
80
|
-
this.loadResult = null;
|
|
81
|
-
this.loaded = false;
|
|
82
88
|
this._options = {
|
|
83
89
|
loaders: options.loaders ?? [],
|
|
84
90
|
schema: options.schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config-manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/errors/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Base error class for all configuration-related errors
|
|
3
3
|
*/
|
|
4
4
|
export class ConfigurationError extends Error {
|
|
5
|
+
/** The underlying cause of this error */
|
|
6
|
+
cause;
|
|
5
7
|
constructor(message, cause) {
|
|
6
8
|
super(message);
|
|
7
9
|
this.name = 'ConfigurationError';
|
|
@@ -13,6 +15,8 @@ export class ConfigurationError extends Error {
|
|
|
13
15
|
* Error thrown when configuration validation fails
|
|
14
16
|
*/
|
|
15
17
|
export class ValidationError extends ConfigurationError {
|
|
18
|
+
/** Detailed validation errors from Zod */
|
|
19
|
+
validationErrors;
|
|
16
20
|
constructor(message, validationErrors, cause) {
|
|
17
21
|
super(message, cause);
|
|
18
22
|
this.name = 'ValidationError';
|
|
@@ -24,6 +28,10 @@ export class ValidationError extends ConfigurationError {
|
|
|
24
28
|
* Error thrown when an AWS service operation fails
|
|
25
29
|
*/
|
|
26
30
|
export class AWSServiceError extends ConfigurationError {
|
|
31
|
+
/** The AWS service that failed */
|
|
32
|
+
service;
|
|
33
|
+
/** The operation that failed */
|
|
34
|
+
operation;
|
|
27
35
|
constructor(message, service, operation, cause) {
|
|
28
36
|
super(message, cause);
|
|
29
37
|
this.name = 'AWSServiceError';
|
|
@@ -36,6 +44,8 @@ export class AWSServiceError extends ConfigurationError {
|
|
|
36
44
|
* Error thrown when a configuration loader fails to load
|
|
37
45
|
*/
|
|
38
46
|
export class ConfigurationLoadError extends ConfigurationError {
|
|
47
|
+
/** The name of the loader that failed */
|
|
48
|
+
loader;
|
|
39
49
|
constructor(message, loader, cause) {
|
|
40
50
|
super(message, cause);
|
|
41
51
|
this.name = 'ConfigurationLoadError';
|
|
@@ -47,6 +57,8 @@ export class ConfigurationLoadError extends ConfigurationError {
|
|
|
47
57
|
* Error thrown when required configuration keys are missing
|
|
48
58
|
*/
|
|
49
59
|
export class MissingConfigurationError extends ConfigurationError {
|
|
60
|
+
/** The keys that are missing */
|
|
61
|
+
missingKeys;
|
|
50
62
|
constructor(message, missingKeys, cause) {
|
|
51
63
|
super(message, cause);
|
|
52
64
|
this.name = 'MissingConfigurationError';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,yCAAyC;IACzB,KAAK,CAAS;IAE9B,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IACrD,0CAA0C;IAC1B,gBAAgB,CAAU;IAE1C,YAAY,OAAe,EAAE,gBAAyB,EAAE,KAAa;QACnE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IACrD,kCAAkC;IAClB,OAAO,CAAS;IAChC,gCAAgC;IAChB,SAAS,CAAS;IAElC,YAAY,OAAe,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAa;QAC5E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,yCAAyC;IACzB,MAAM,CAAS;IAE/B,YAAY,OAAe,EAAE,MAAc,EAAE,KAAa;QACxD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IAC/D,gCAAgC;IAChB,WAAW,CAAW;IAEtC,YAAY,OAAe,EAAE,WAAqB,EAAE,KAAa;QAC/D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF"}
|
package/dist/esm/index.js
CHANGED
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
* S3, and .env files with configurable precedence.
|
|
7
7
|
*/
|
|
8
8
|
// Error classes
|
|
9
|
-
export { ConfigurationError, ValidationError, AWSServiceError, ConfigurationLoadError, MissingConfigurationError, } from './errors';
|
|
9
|
+
export { ConfigurationError, ValidationError, AWSServiceError, ConfigurationLoadError, MissingConfigurationError, } from './errors/index.js';
|
|
10
10
|
// Loaders
|
|
11
|
-
export { EnvironmentLoader } from './loaders/environment.loader';
|
|
12
|
-
export { EnvFileLoader } from './loaders/env-file.loader';
|
|
13
|
-
export { S3Loader } from './loaders/s3.loader';
|
|
14
|
-
export { SecretsManagerLoader } from './loaders/secrets-manager.loader';
|
|
15
|
-
export { SSMParameterStoreLoader } from './loaders/ssm-parameter-store.loader';
|
|
11
|
+
export { EnvironmentLoader } from './loaders/environment.loader.js';
|
|
12
|
+
export { EnvFileLoader } from './loaders/env-file.loader.js';
|
|
13
|
+
export { S3Loader } from './loaders/s3.loader.js';
|
|
14
|
+
export { SecretsManagerLoader } from './loaders/secrets-manager.loader.js';
|
|
15
|
+
export { SSMParameterStoreLoader } from './loaders/ssm-parameter-store.loader.js';
|
|
16
16
|
// ConfigManager
|
|
17
|
-
export { ConfigManager } from './config-manager';
|
|
17
|
+
export { ConfigManager } from './config-manager.js';
|
|
18
18
|
// Utilities
|
|
19
|
-
export { ConfigValidationUtil } from './utils/validation.util';
|
|
20
|
-
export { EnvFileParser } from './utils/env-file-parser.util';
|
|
19
|
+
export { ConfigValidationUtil } from './utils/validation.util.js';
|
|
20
|
+
export { EnvFileParser } from './utils/env-file-parser.util.js';
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsCH,gBAAgB;AAChB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsCH,gBAAgB;AAChB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { EnvFileParser } from '../utils/env-file-parser.util';
|
|
3
|
+
import { EnvFileParser } from '../utils/env-file-parser.util.js';
|
|
4
4
|
import { ConfigurationLoadError } from '../errors/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Loader that reads configuration from .env files on the filesystem.
|
|
@@ -26,6 +26,12 @@ import { ConfigurationLoadError } from '../errors/index.js';
|
|
|
26
26
|
* @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html
|
|
27
27
|
*/
|
|
28
28
|
export class EnvFileLoader {
|
|
29
|
+
/** @internal */
|
|
30
|
+
_config;
|
|
31
|
+
/** Default paths to search for .env files */
|
|
32
|
+
static DEFAULT_PATHS = ['.env', '.env.local'];
|
|
33
|
+
/** Default file encoding */
|
|
34
|
+
static DEFAULT_ENCODING = 'utf-8';
|
|
29
35
|
constructor(config = {}) {
|
|
30
36
|
this._config = {
|
|
31
37
|
paths: config.paths ?? EnvFileLoader.DEFAULT_PATHS,
|
|
@@ -123,8 +129,4 @@ export class EnvFileLoader {
|
|
|
123
129
|
return fs.promises.readFile(filePath, { encoding: this._config.encoding });
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
|
-
/** Default paths to search for .env files */
|
|
127
|
-
EnvFileLoader.DEFAULT_PATHS = ['.env', '.env.local'];
|
|
128
|
-
/** Default file encoding */
|
|
129
|
-
EnvFileLoader.DEFAULT_ENCODING = 'utf-8';
|
|
130
132
|
//# sourceMappingURL=env-file.loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.loader.js","sourceRoot":"","sources":["../../../src/loaders/environment.loader.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"environment.loader.js","sourceRoot":"","sources":["../../../src/loaders/environment.loader.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,iBAAiB;IAC5B,gBAAgB;IACG,OAAO,CAA0B;IAEpD,YAAY,SAAkC,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,wBAAwB;YACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,0BAA0B;YAC1B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,wBAAwB;oBACxB,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC7C,0DAA0D;oBAC1D,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,wCAAwC;YAC1C,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { EnvironmentLoader } from './environment.loader';
|
|
2
|
-
export { EnvFileLoader } from './env-file.loader';
|
|
3
|
-
export { S3Loader } from './s3.loader';
|
|
4
|
-
export { SecretsManagerLoader } from './secrets-manager.loader';
|
|
5
|
-
export { SSMParameterStoreLoader } from './ssm-parameter-store.loader';
|
|
1
|
+
export { EnvironmentLoader } from './environment.loader.js';
|
|
2
|
+
export { EnvFileLoader } from './env-file.loader.js';
|
|
3
|
+
export { S3Loader } from './s3.loader.js';
|
|
4
|
+
export { SecretsManagerLoader } from './secrets-manager.loader.js';
|
|
5
|
+
export { SSMParameterStoreLoader } from './ssm-parameter-store.loader.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/loaders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/loaders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
-
import { EnvFileParser } from '../utils/env-file-parser.util';
|
|
1
|
+
import { EnvFileParser } from '../utils/env-file-parser.util.js';
|
|
4
2
|
import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
3
|
+
import { loadOptionalDependency } from '../utils/optional-dependency.util.js';
|
|
5
4
|
/**
|
|
6
5
|
* Loader that reads configuration from S3 buckets.
|
|
7
6
|
* Supports JSON and .env file formats with auto-detection.
|
|
@@ -25,6 +24,10 @@ import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
|
25
24
|
* @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html
|
|
26
25
|
*/
|
|
27
26
|
export class S3Loader {
|
|
27
|
+
/** @internal */
|
|
28
|
+
_config;
|
|
29
|
+
/** @internal Lazily created on first use so the AWS SDK stays optional. */
|
|
30
|
+
_client;
|
|
28
31
|
constructor(config) {
|
|
29
32
|
this._config = {
|
|
30
33
|
bucket: config.bucket,
|
|
@@ -32,10 +35,26 @@ export class S3Loader {
|
|
|
32
35
|
region: config.region || process.env['AWS_REGION'] || 'us-east-1',
|
|
33
36
|
format: config.format || 'auto',
|
|
34
37
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Lazily import the AWS S3 SDK. Imported on demand so the SDK is an optional
|
|
41
|
+
* peer dependency and is never loaded unless this loader runs.
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
importSdk() {
|
|
45
|
+
return loadOptionalDependency('@aws-sdk/client-s3', () => import('@aws-sdk/client-s3'));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get (creating on first use) the S3 client. The client relies on the AWS SDK's
|
|
49
|
+
* default Node credential provider chain.
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
async getClient() {
|
|
53
|
+
if (!this._client) {
|
|
54
|
+
const { S3Client } = await this.importSdk();
|
|
55
|
+
this._client = new S3Client({ region: this._config.region });
|
|
56
|
+
}
|
|
57
|
+
return this._client;
|
|
39
58
|
}
|
|
40
59
|
getName() {
|
|
41
60
|
return `S3Loader(s3://${this._config.bucket}/${this._config.key})`;
|
|
@@ -46,7 +65,8 @@ export class S3Loader {
|
|
|
46
65
|
*/
|
|
47
66
|
async isAvailable() {
|
|
48
67
|
try {
|
|
49
|
-
await this.
|
|
68
|
+
const client = await this.getClient();
|
|
69
|
+
await client.config.credentials();
|
|
50
70
|
return true;
|
|
51
71
|
}
|
|
52
72
|
catch {
|
|
@@ -60,12 +80,14 @@ export class S3Loader {
|
|
|
60
80
|
* @throws ConfigurationLoadError if content cannot be parsed
|
|
61
81
|
*/
|
|
62
82
|
async load() {
|
|
83
|
+
const { GetObjectCommand } = await this.importSdk();
|
|
63
84
|
try {
|
|
85
|
+
const client = await this.getClient();
|
|
64
86
|
const command = new GetObjectCommand({
|
|
65
87
|
Bucket: this._config.bucket,
|
|
66
88
|
Key: this._config.key,
|
|
67
89
|
});
|
|
68
|
-
const response = await
|
|
90
|
+
const response = await client.send(command);
|
|
69
91
|
if (!response.Body) {
|
|
70
92
|
return {};
|
|
71
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
|
|
2
|
-
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
1
|
import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
2
|
+
import { loadOptionalDependency } from '../utils/optional-dependency.util.js';
|
|
4
3
|
/**
|
|
5
4
|
* Loader that reads configuration from AWS Secrets Manager.
|
|
6
5
|
* Supports environment-aware path construction.
|
|
@@ -25,6 +24,12 @@ import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
|
25
24
|
* ```
|
|
26
25
|
*/
|
|
27
26
|
export class SecretsManagerLoader {
|
|
27
|
+
/** @internal Lazily created on first use so the AWS SDK stays optional. */
|
|
28
|
+
_client;
|
|
29
|
+
/** @internal */
|
|
30
|
+
_config;
|
|
31
|
+
/** @internal */
|
|
32
|
+
_appEnv;
|
|
28
33
|
constructor(config = {}) {
|
|
29
34
|
this._appEnv = process.env['APP_ENV'] || process.env['NODE_ENV'] || 'local';
|
|
30
35
|
// Set default configuration
|
|
@@ -37,11 +42,26 @@ export class SecretsManagerLoader {
|
|
|
37
42
|
production: 'production',
|
|
38
43
|
},
|
|
39
44
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Lazily import the AWS Secrets Manager SDK. Imported on demand so the SDK is an
|
|
48
|
+
* optional peer dependency and is never loaded unless this loader runs.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
importSdk() {
|
|
52
|
+
return loadOptionalDependency('@aws-sdk/client-secrets-manager', () => import('@aws-sdk/client-secrets-manager'));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get (creating on first use) the Secrets Manager client. The client relies on the
|
|
56
|
+
* AWS SDK's default Node credential provider chain.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
async getClient() {
|
|
60
|
+
if (!this._client) {
|
|
61
|
+
const { SecretsManagerClient } = await this.importSdk();
|
|
62
|
+
this._client = new SecretsManagerClient({ region: this._config.region });
|
|
63
|
+
}
|
|
64
|
+
return this._client;
|
|
45
65
|
}
|
|
46
66
|
/**
|
|
47
67
|
* Get the name of this loader for logging and debugging.
|
|
@@ -68,8 +88,9 @@ export class SecretsManagerLoader {
|
|
|
68
88
|
return false;
|
|
69
89
|
}
|
|
70
90
|
try {
|
|
71
|
-
// Test AWS credentials by
|
|
72
|
-
await this.
|
|
91
|
+
// Test AWS credentials by resolving the default provider chain
|
|
92
|
+
const client = await this.getClient();
|
|
93
|
+
await client.config.credentials();
|
|
73
94
|
return true;
|
|
74
95
|
}
|
|
75
96
|
catch {
|
|
@@ -88,9 +109,11 @@ export class SecretsManagerLoader {
|
|
|
88
109
|
return {};
|
|
89
110
|
}
|
|
90
111
|
const secretName = this.buildSecretName();
|
|
112
|
+
const { GetSecretValueCommand } = await this.importSdk();
|
|
91
113
|
try {
|
|
114
|
+
const client = await this.getClient();
|
|
92
115
|
const command = new GetSecretValueCommand({ SecretId: secretName });
|
|
93
|
-
const response = await
|
|
116
|
+
const response = await client.send(command);
|
|
94
117
|
if (!response.SecretString) {
|
|
95
118
|
return {};
|
|
96
119
|
}
|