@effect-aws/ssm 1.0.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/CHANGELOG.md +12 -0
- package/LICENSE +19 -0
- package/README.md +60 -0
- package/docgen.json +8 -0
- package/lib/ConfigProvider.d.ts +15 -0
- package/lib/ConfigProvider.js +52 -0
- package/lib/esm/ConfigProvider.js +48 -0
- package/lib/esm/index.js +2 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +18 -0
- package/package.json +53 -0
- package/project.json +80 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# @effect-aws/ssm
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`225585c`](https://github.com/floydspace/effect-aws/commit/225585c0f1d5070de3f7b8effb721742a90f7619) Thanks [@floydspace](https://github.com/floydspace)! - Implement `fromParameterStore` ConfigProvider constructor
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`b22c449`](https://github.com/floydspace/effect-aws/commit/b22c44924a2fdf2892b7a08f4ec7f3df2c154b8a)]:
|
|
12
|
+
- @effect-aws/client-ssm@1.0.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2024 Victor Korzunin
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# @effect-aws/ssm
|
|
2
|
+
|
|
3
|
+
This package provides a `fromParameterStore` [ConfigProvider](https://effect.website/docs/guides/configuration) constructor function.
|
|
4
|
+
You can use it to read parameters from AWS Systems Manager Parameter Store as a `Config` schema.
|
|
5
|
+
|
|
6
|
+
The config primitive name must match the parameter Name or ARN in Parameter Store.
|
|
7
|
+
For example, `Config.string("my_parameter_name")` or `Config.string("arn:aws:ssm:eu-central-1:123456789012:parameter/my_parameter_name")`.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install --save @effect-aws/ssm @effect-aws/client-ssm
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
With default service layer:
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { Effect, Config, Console } from "effect";
|
|
21
|
+
import { fromParameterStore } from "@effect-aws/ssm";
|
|
22
|
+
|
|
23
|
+
const program = Effect.gen(function* () {
|
|
24
|
+
const param: string = yield* Config.string("my_parameter_name");
|
|
25
|
+
|
|
26
|
+
yield* Console.log("Parameter from Parameter Store: ", param);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
program.pipe(
|
|
30
|
+
Effect.provide(Layer.setConfigProvider(fromParameterStore())),
|
|
31
|
+
Effect.runPromise,
|
|
32
|
+
);
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
With custom service layer:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { Effect, Config, Console, Layer } from "effect";
|
|
39
|
+
import { SSMClient } from "@aws-sdk/client-ssm";
|
|
40
|
+
import { BaseSSMServiceLayer, SSMClientInstance } from "@effect-aws/client-ssm";
|
|
41
|
+
import { fromParameterStore } from "@effect-aws/ssm";
|
|
42
|
+
|
|
43
|
+
const program = Effect.gen(function* () {
|
|
44
|
+
const param: string = yield* Config.string("my_parameter_name");
|
|
45
|
+
|
|
46
|
+
yield* Console.log("Parameter from Parameter Store: ", param);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const SSMClientInstanceLayer = Layer.succeed(
|
|
50
|
+
SSMClientInstance,
|
|
51
|
+
new SSMClient({ region: "eu-central-1" }),
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const serviceLayer = Layer.provide(BaseSSMServiceLayer, SSMClientInstanceLayer);
|
|
55
|
+
|
|
56
|
+
program.pipe(
|
|
57
|
+
Effect.withConfigProvider(fromParameterStore({ serviceLayer })),
|
|
58
|
+
Effect.runPromise,
|
|
59
|
+
);
|
|
60
|
+
```
|
package/docgen.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { SSMService } from "@effect-aws/client-ssm";
|
|
5
|
+
import { ConfigProvider, Layer } from "effect";
|
|
6
|
+
/**
|
|
7
|
+
* A config provider that loads configuration from AWS Systems Manager Parameter Store.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category constructors
|
|
11
|
+
*/
|
|
12
|
+
export declare const fromParameterStore: (config?: {
|
|
13
|
+
pathDelim?: string;
|
|
14
|
+
serviceLayer?: Layer.Layer<SSMService, never, never>;
|
|
15
|
+
}) => ConfigProvider.ConfigProvider;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromParameterStore = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
const client_ssm_1 = require("@effect-aws/client-ssm");
|
|
8
|
+
const effect_1 = require("effect");
|
|
9
|
+
/**
|
|
10
|
+
* A config provider that loads configuration from AWS Systems Manager Parameter Store.
|
|
11
|
+
*
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category constructors
|
|
14
|
+
*/
|
|
15
|
+
const fromParameterStore = (config) => {
|
|
16
|
+
const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: client_ssm_1.DefaultSSMServiceLayer }, config);
|
|
17
|
+
const makePathString = (path) => (0, effect_1.pipe)(path, effect_1.Array.join(pathDelim));
|
|
18
|
+
const unmakePathString = (pathString) => pathString.split(pathDelim);
|
|
19
|
+
const load = (path, primitive) => {
|
|
20
|
+
const pathString = makePathString(path);
|
|
21
|
+
return client_ssm_1.SSMService.getParameter({ Name: pathString }).pipe(effect_1.Effect.flatMap((value) => { var _a; return effect_1.Option.fromNullable((_a = value.Parameter) === null || _a === void 0 ? void 0 : _a.Value); }), effect_1.Effect.catchTag("ParameterNotFound", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} parameter to exist in AWS Systems Manager Parameter Store`))), effect_1.Effect.catchTag("ParameterVersionNotFound", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} parameter version to exist in AWS Systems Manager Parameter Store`))), effect_1.Effect.catchTag("NoSuchElementException", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Systems Manager Parameter Store`))), effect_1.Effect.catchTag("InvalidKeyId", () => effect_1.Effect.fail(effect_1.ConfigError.InvalidData(path, "Invalid key ID when retrieving configuration from AWS Systems Manager Parameter Store"))), effect_1.Effect.catchAllCause((cause) => effect_1.Cause.isFailType(cause) && effect_1.ConfigError.isConfigError(cause.error)
|
|
22
|
+
? effect_1.Effect.fail(cause.error)
|
|
23
|
+
: effect_1.Effect.fail(effect_1.ConfigError.SourceUnavailable(path, "Failed to load configuration from AWS Systems Manager Parameter Store", cause))), effect_1.Effect.flatMap((value) => (0, effect_1.pipe)(primitive.parse(value), effect_1.Effect.mapBoth({
|
|
24
|
+
onFailure: effect_1.ConfigError.prefixed(path),
|
|
25
|
+
onSuccess: effect_1.Array.of,
|
|
26
|
+
}))), effect_1.Effect.provide(serviceLayer));
|
|
27
|
+
};
|
|
28
|
+
const enumerateChildren = (path) => client_ssm_1.SSMService.describeParameters({}).pipe(effect_1.Effect.flatMap((params) => effect_1.Option.fromNullable(params.Parameters)), effect_1.Effect.map(effect_1.Array.map((param) => effect_1.Option.fromNullable(param.Name))), effect_1.Effect.flatMap(effect_1.Option.all), effect_1.Effect.orDie, effect_1.Effect.map((keys) => {
|
|
29
|
+
const keyPaths = keys.map(unmakePathString);
|
|
30
|
+
const filteredKeyPaths = keyPaths
|
|
31
|
+
.filter((keyPath) => {
|
|
32
|
+
for (let i = 0; i < path.length; i++) {
|
|
33
|
+
const pathComponent = (0, effect_1.pipe)(path, effect_1.Array.unsafeGet(i));
|
|
34
|
+
const currentElement = keyPath[i];
|
|
35
|
+
if (currentElement === undefined ||
|
|
36
|
+
pathComponent !== currentElement) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
})
|
|
42
|
+
.flatMap((keyPath) => keyPath.slice(path.length, path.length + 1));
|
|
43
|
+
return effect_1.HashSet.fromIterable(filteredKeyPaths);
|
|
44
|
+
}), effect_1.Effect.provide(serviceLayer));
|
|
45
|
+
return effect_1.ConfigProvider.fromFlat(effect_1.ConfigProvider.makeFlat({
|
|
46
|
+
load,
|
|
47
|
+
enumerateChildren,
|
|
48
|
+
patch: effect_1.ConfigProviderPathPatch.empty,
|
|
49
|
+
}));
|
|
50
|
+
};
|
|
51
|
+
exports.fromParameterStore = fromParameterStore;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29uZmlnUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCx1REFBNEU7QUFDNUUsbUNBWWdCO0FBRWhCOzs7OztHQUtHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BR2xDLEVBQWlDLEVBQUU7SUFDbEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMvQyxFQUFFLEVBQ0YsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxtQ0FBc0IsRUFBRSxFQUN4RCxNQUFNLENBQ1AsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBMkIsRUFBVSxFQUFFLENBQzdELElBQUEsYUFBSSxFQUFDLElBQUksRUFBRSxjQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQWtCLEVBQXlCLEVBQUUsQ0FDckUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5QixNQUFNLElBQUksR0FBRyxDQUNYLElBQTJCLEVBQzNCLFNBQXFDLEVBQ2EsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTyx1QkFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkQsZUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQUMsT0FBQSxlQUFNLENBQUMsWUFBWSxDQUFDLE1BQUEsS0FBSyxDQUFDLFNBQVMsMENBQUUsS0FBSyxDQUFDLENBQUEsRUFBQSxDQUFDLEVBQ3RFLGVBQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFF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TSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxJQUNFLGNBQWMsS0FBSyxTQUFTO29CQUM1QixhQUFhLEtBQUssY0FBYyxFQUNoQyxDQUFDO29CQUNELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxnQkFBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUNGLGVBQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzdCLENBQUM7SUFFSixPQUFPLHVCQUFjLENBQUMsUUFBUSxDQUM1Qix1QkFBYyxDQUFDLFFBQVEsQ0FBQztRQUN0QixJQUFJO1FBQ0osaUJBQWlCO1FBQ2pCLEtBQUssRUFBRSxnQ0FBdUIsQ0FBQyxLQUFLO0tBQ3JDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBbEhXLFFBQUEsa0JBQWtCLHNCQWtIN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgeyBEZWZhdWx0U1NNU2VydmljZUxheWVyLCBTU01TZXJ2aWNlIH0gZnJvbSBcIkBlZmZlY3QtYXdzL2NsaWVudC1zc21cIjtcbmltcG9ydCB7XG4gIEFycmF5LFxuICBDYXVzZSxcbiAgQ29uZmlnLFxuICBDb25maWdFcnJvcixcbiAgQ29uZmlnUHJvdmlkZXIsXG4gIENvbmZpZ1Byb3ZpZGVyUGF0aFBhdGNoLFxuICBFZmZlY3QsXG4gIEhhc2hTZXQsXG4gIExheWVyLFxuICBPcHRpb24sXG4gIHBpcGUsXG59IGZyb20gXCJlZmZlY3RcIjtcblxuLyoqXG4gKiBBIGNvbmZpZyBwcm92aWRlciB0aGF0IGxvYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZS5cbiAqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21QYXJhbWV0ZXJTdG9yZSA9IChjb25maWc/OiB7XG4gIHBhdGhEZWxpbT86IHN0cmluZztcbiAgc2VydmljZUxheWVyPzogTGF5ZXIuTGF5ZXI8U1NNU2VydmljZSwgbmV2ZXIsIG5ldmVyPjtcbn0pOiBDb25maWdQcm92aWRlci5Db25maWdQcm92aWRlciA9PiB7XG4gIGNvbnN0IHsgcGF0aERlbGltLCBzZXJ2aWNlTGF5ZXIgfSA9IE9iamVjdC5hc3NpZ24oXG4gICAge30sXG4gICAgeyBwYXRoRGVsaW06IFwiX1wiLCBzZXJ2aWNlTGF5ZXI6IERlZmF1bHRTU01TZXJ2aWNlTGF5ZXIgfSxcbiAgICBjb25maWcsXG4gICk7XG4gIGNvbnN0IG1ha2VQYXRoU3RyaW5nID0gKHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPik6IHN0cmluZyA9PlxuICAgIHBpcGUocGF0aCwgQXJyYXkuam9pbihwYXRoRGVsaW0pKTtcbiAgY29uc3QgdW5tYWtlUGF0aFN0cmluZyA9IChwYXRoU3RyaW5nOiBzdHJpbmcpOiBSZWFkb25seUFycmF5PHN0cmluZz4gPT5cbiAgICBwYXRoU3RyaW5nLnNwbGl0KHBhdGhEZWxpbSk7XG5cbiAgY29uc3QgbG9hZCA9IDxBPihcbiAgICBwYXRoOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICAgcHJpbWl0aXZlOiBDb25maWcuQ29uZmlnLlByaW1pdGl2ZTxBPixcbiAgKTogRWZmZWN0LkVmZmVjdDxBcnJheTxBPiwgQ29uZmlnRXJyb3IuQ29uZmlnRXJyb3I+ID0+IHtcbiAgICBjb25zdCBwYXRoU3RyaW5nID0gbWFrZVBhdGhTdHJpbmcocGF0aCk7XG4gICAgcmV0dXJuIFNTTVNlcnZpY2UuZ2V0UGFyYW1ldGVyKHsgTmFtZTogcGF0aFN0cmluZyB9KS5waXBlKFxuICAgICAgRWZmZWN0LmZsYXRNYXAoKHZhbHVlKSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHZhbHVlLlBhcmFtZXRlcj8uVmFsdWUpKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIlBhcmFtZXRlck5vdEZvdW5kXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLk1pc3NpbmdEYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgYEV4cGVjdGVkICR7cGF0aFN0cmluZ30gcGFyYW1ldGVyIHRvIGV4aXN0IGluIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlYCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIlBhcmFtZXRlclZlcnNpb25Ob3RGb3VuZFwiLCAoKSA9PlxuICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICBDb25maWdFcnJvci5NaXNzaW5nRGF0YShcbiAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIGBFeHBlY3RlZCAke3BhdGhTdHJpbmd9IHBhcmFtZXRlciB2ZXJzaW9uIHRvIGV4aXN0IGluIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlYCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIk5vU3VjaEVsZW1lbnRFeGNlcHRpb25cIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuTWlzc2luZ0RhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBgRXhwZWN0ZWQgJHtwYXRoU3RyaW5nfSB0byBleGlzdCBpbiBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QuY2F0Y2hUYWcoXCJJbnZhbGlkS2V5SWRcIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuSW52YWxpZERhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBcIkludmFsaWQga2V5IElEIHdoZW4gcmV0cmlldmluZyBjb25maWd1cmF0aW9uIGZyb20gQVdTIFN5c3RlbXMgTWFuYWdlciBQYXJhbWV0ZXIgU3RvcmVcIixcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaEFsbENhdXNlKChjYXVzZSkgPT5cbiAgICAgICAgQ2F1c2UuaXNGYWlsVHlwZShjYXVzZSkgJiYgQ29uZmlnRXJyb3IuaXNDb25maWdFcnJvcihjYXVzZS5lcnJvcilcbiAgICAgICAgICA/IEVmZmVjdC5mYWlsKGNhdXNlLmVycm9yKVxuICAgICAgICAgIDogRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICAgIENvbmZpZ0Vycm9yLlNvdXJjZVVuYXZhaWxhYmxlKFxuICAgICAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byBsb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZVwiLFxuICAgICAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QuZmxhdE1hcCgodmFsdWUpID0+XG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgcHJpbWl0aXZlLnBhcnNlKHZhbHVlKSxcbiAgICAgICAgICBFZmZlY3QubWFwQm90aCh7XG4gICAgICAgICAgICBvbkZhaWx1cmU6IENvbmZpZ0Vycm9yLnByZWZpeGVkKHBhdGggYXMgQXJyYXk8c3RyaW5nPiksXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IEFycmF5Lm9mLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5wcm92aWRlKHNlcnZpY2VMYXllciksXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBlbnVtZXJhdGVDaGlsZHJlbiA9IChcbiAgICBwYXRoOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICk6IEVmZmVjdC5FZmZlY3Q8SGFzaFNldC5IYXNoU2V0PHN0cmluZz4sIENvbmZpZ0Vycm9yLkNvbmZpZ0Vycm9yPiA9PlxuICAgIFNTTVNlcnZpY2UuZGVzY3JpYmVQYXJhbWV0ZXJzKHt9KS5waXBlKFxuICAgICAgRWZmZWN0LmZsYXRNYXAoKHBhcmFtcykgPT4gT3B0aW9uLmZyb21OdWxsYWJsZShwYXJhbXMuUGFyYW1ldGVycykpLFxuICAgICAgRWZmZWN0Lm1hcChBcnJheS5tYXAoKHBhcmFtKSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHBhcmFtLk5hbWUpKSksXG4gICAgICBFZmZlY3QuZmxhdE1hcChPcHRpb24uYWxsKSxcbiAgICAgIEVmZmVjdC5vckRpZSxcbiAgICAgIEVmZmVjdC5tYXAoKGtleXMpID0+IHtcbiAgICAgICAgY29uc3Qga2V5UGF0aHMgPSBrZXlzLm1hcCh1bm1ha2VQYXRoU3RyaW5nKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRLZXlQYXRocyA9IGtleVBhdGhzXG4gICAgICAgICAgLmZpbHRlcigoa2V5UGF0aCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhDb21wb25lbnQgPSBwaXBlKHBhdGgsIEFycmF5LnVuc2FmZUdldChpKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0ga2V5UGF0aFtpXTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICBwYXRoQ29tcG9uZW50ICE9PSBjdXJyZW50RWxlbWVudFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZsYXRNYXAoKGtleVBhdGgpID0+IGtleVBhdGguc2xpY2UocGF0aC5sZW5ndGgsIHBhdGgubGVuZ3RoICsgMSkpO1xuICAgICAgICByZXR1cm4gSGFzaFNldC5mcm9tSXRlcmFibGUoZmlsdGVyZWRLZXlQYXRocyk7XG4gICAgICB9KSxcbiAgICAgIEVmZmVjdC5wcm92aWRlKHNlcnZpY2VMYXllciksXG4gICAgKTtcblxuICByZXR1cm4gQ29uZmlnUHJvdmlkZXIuZnJvbUZsYXQoXG4gICAgQ29uZmlnUHJvdmlkZXIubWFrZUZsYXQoe1xuICAgICAgbG9hZCxcbiAgICAgIGVudW1lcmF0ZUNoaWxkcmVuLFxuICAgICAgcGF0Y2g6IENvbmZpZ1Byb3ZpZGVyUGF0aFBhdGNoLmVtcHR5LFxuICAgIH0pLFxuICApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { DefaultSSMServiceLayer, SSMService } from "@effect-aws/client-ssm";
|
|
5
|
+
import { Array, Cause, ConfigError, ConfigProvider, ConfigProviderPathPatch, Effect, HashSet, Option, pipe, } from "effect";
|
|
6
|
+
/**
|
|
7
|
+
* A config provider that loads configuration from AWS Systems Manager Parameter Store.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category constructors
|
|
11
|
+
*/
|
|
12
|
+
export const fromParameterStore = (config) => {
|
|
13
|
+
const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: DefaultSSMServiceLayer }, config);
|
|
14
|
+
const makePathString = (path) => pipe(path, Array.join(pathDelim));
|
|
15
|
+
const unmakePathString = (pathString) => pathString.split(pathDelim);
|
|
16
|
+
const load = (path, primitive) => {
|
|
17
|
+
const pathString = makePathString(path);
|
|
18
|
+
return SSMService.getParameter({ Name: pathString }).pipe(Effect.flatMap((value) => { var _a; return Option.fromNullable((_a = value.Parameter) === null || _a === void 0 ? void 0 : _a.Value); }), Effect.catchTag("ParameterNotFound", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} parameter to exist in AWS Systems Manager Parameter Store`))), Effect.catchTag("ParameterVersionNotFound", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} parameter version to exist in AWS Systems Manager Parameter Store`))), Effect.catchTag("NoSuchElementException", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Systems Manager Parameter Store`))), Effect.catchTag("InvalidKeyId", () => Effect.fail(ConfigError.InvalidData(path, "Invalid key ID when retrieving configuration from AWS Systems Manager Parameter Store"))), Effect.catchAllCause((cause) => Cause.isFailType(cause) && ConfigError.isConfigError(cause.error)
|
|
19
|
+
? Effect.fail(cause.error)
|
|
20
|
+
: Effect.fail(ConfigError.SourceUnavailable(path, "Failed to load configuration from AWS Systems Manager Parameter Store", cause))), Effect.flatMap((value) => pipe(primitive.parse(value), Effect.mapBoth({
|
|
21
|
+
onFailure: ConfigError.prefixed(path),
|
|
22
|
+
onSuccess: Array.of,
|
|
23
|
+
}))), Effect.provide(serviceLayer));
|
|
24
|
+
};
|
|
25
|
+
const enumerateChildren = (path) => SSMService.describeParameters({}).pipe(Effect.flatMap((params) => Option.fromNullable(params.Parameters)), Effect.map(Array.map((param) => Option.fromNullable(param.Name))), Effect.flatMap(Option.all), Effect.orDie, Effect.map((keys) => {
|
|
26
|
+
const keyPaths = keys.map(unmakePathString);
|
|
27
|
+
const filteredKeyPaths = keyPaths
|
|
28
|
+
.filter((keyPath) => {
|
|
29
|
+
for (let i = 0; i < path.length; i++) {
|
|
30
|
+
const pathComponent = pipe(path, Array.unsafeGet(i));
|
|
31
|
+
const currentElement = keyPath[i];
|
|
32
|
+
if (currentElement === undefined ||
|
|
33
|
+
pathComponent !== currentElement) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
})
|
|
39
|
+
.flatMap((keyPath) => keyPath.slice(path.length, path.length + 1));
|
|
40
|
+
return HashSet.fromIterable(filteredKeyPaths);
|
|
41
|
+
}), Effect.provide(serviceLayer));
|
|
42
|
+
return ConfigProvider.fromFlat(ConfigProvider.makeFlat({
|
|
43
|
+
load,
|
|
44
|
+
enumerateChildren,
|
|
45
|
+
patch: ConfigProviderPathPatch.empty,
|
|
46
|
+
}));
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29uZmlnUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBRUwsV0FBVyxFQUNYLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLE9BQU8sRUFFUCxNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sUUFBUSxDQUFDO0FBRWhCOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUdsQyxFQUFpQyxFQUFFO0lBQ2xDLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDL0MsRUFBRSxFQUNGLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsRUFDeEQsTUFBTSxDQUNQLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQTJCLEVBQVUsRUFBRSxDQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBeUIsRUFBRSxDQUNyRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlCLE1BQU0sSUFBSSxHQUFHLENBQ1gsSUFBMkIsRUFDM0IsU0FBcUMsRUFDYSxFQUFFO1FBQ3BELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxP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QyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFDRSxjQUFjLEtBQUssU0FBUztvQkFDNUIsYUFBYSxLQUFLLGNBQWMsRUFDaEMsQ0FBQztvQkFDRCxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzdCLENBQUM7SUFFSixPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQzVCLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDdEIsSUFBSTtRQUNKLGlCQUFpQjtRQUNqQixLQUFLLEVBQUUsdUJBQXVCLENBQUMsS0FBSztLQUNyQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7IERlZmF1bHRTU01TZXJ2aWNlTGF5ZXIsIFNTTVNlcnZpY2UgfSBmcm9tIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNzbVwiO1xuaW1wb3J0IHtcbiAgQXJyYXksXG4gIENhdXNlLFxuICBDb25maWcsXG4gIENvbmZpZ0Vycm9yLFxuICBDb25maWdQcm92aWRlcixcbiAgQ29uZmlnUHJvdmlkZXJQYXRoUGF0Y2gsXG4gIEVmZmVjdCxcbiAgSGFzaFNldCxcbiAgTGF5ZXIsXG4gIE9wdGlvbixcbiAgcGlwZSxcbn0gZnJvbSBcImVmZmVjdFwiO1xuXG4vKipcbiAqIEEgY29uZmlnIHByb3ZpZGVyIHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgZnJvbVBhcmFtZXRlclN0b3JlID0gKGNvbmZpZz86IHtcbiAgcGF0aERlbGltPzogc3RyaW5nO1xuICBzZXJ2aWNlTGF5ZXI/OiBMYXllci5MYXllcjxTU01TZXJ2aWNlLCBuZXZlciwgbmV2ZXI+O1xufSk6IENvbmZpZ1Byb3ZpZGVyLkNvbmZpZ1Byb3ZpZGVyID0+IHtcbiAgY29uc3QgeyBwYXRoRGVsaW0sIHNlcnZpY2VMYXllciB9ID0gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICB7IHBhdGhEZWxpbTogXCJfXCIsIHNlcnZpY2VMYXllcjogRGVmYXVsdFNTTVNlcnZpY2VMYXllciB9LFxuICAgIGNvbmZpZyxcbiAgKTtcbiAgY29uc3QgbWFrZVBhdGhTdHJpbmcgPSAocGF0aDogUmVhZG9ubHlBcnJheTxzdHJpbmc+KTogc3RyaW5nID0+XG4gICAgcGlwZShwYXRoLCBBcnJheS5qb2luKHBhdGhEZWxpbSkpO1xuICBjb25zdCB1bm1ha2VQYXRoU3RyaW5nID0gKHBhdGhTdHJpbmc6IHN0cmluZyk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9PlxuICAgIHBhdGhTdHJpbmcuc3BsaXQocGF0aERlbGltKTtcblxuICBjb25zdCBsb2FkID0gPEE+KFxuICAgIHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICBwcmltaXRpdmU6IENvbmZpZy5Db25maWcuUHJpbWl0aXZlPEE+LFxuICApOiBFZmZlY3QuRWZmZWN0PEFycmF5PEE+LCBDb25maWdFcnJvci5Db25maWdFcnJvcj4gPT4ge1xuICAgIGNvbnN0IHBhdGhTdHJpbmcgPSBtYWtlUGF0aFN0cmluZyhwYXRoKTtcbiAgICByZXR1cm4gU1NNU2VydmljZS5nZXRQYXJhbWV0ZXIoeyBOYW1lOiBwYXRoU3RyaW5nIH0pLnBpcGUoXG4gICAgICBFZmZlY3QuZmxhdE1hcCgodmFsdWUpID0+IE9wdGlvbi5mcm9tTnVsbGFibGUodmFsdWUuUGFyYW1ldGVyPy5WYWx1ZSkpLFxuICAgICAgRWZmZWN0LmNhdGNoVGFnKFwiUGFyYW1ldGVyTm90Rm91bmRcIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuTWlzc2luZ0RhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBgRXhwZWN0ZWQgJHtwYXRoU3RyaW5nfSBwYXJhbWV0ZXIgdG8gZXhpc3QgaW4gQVdTIFN5c3RlbXMgTWFuYWdlciBQYXJhbWV0ZXIgU3RvcmVgLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LmNhdGNoVGFnKFwiUGFyYW1ldGVyVmVyc2lvbk5vdEZvdW5kXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLk1pc3NpbmdEYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgYEV4cGVjdGVkICR7cGF0aFN0cmluZ30gcGFyYW1ldGVyIHZlcnNpb24gdG8gZXhpc3QgaW4gQVdTIFN5c3RlbXMgTWFuYWdlciBQYXJhbWV0ZXIgU3RvcmVgLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LmNhdGNoVGFnKFwiTm9TdWNoRWxlbWVudEV4Y2VwdGlvblwiLCAoKSA9PlxuICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICBDb25maWdFcnJvci5NaXNzaW5nRGF0YShcbiAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIGBFeHBlY3RlZCAke3BhdGhTdHJpbmd9IHRvIGV4aXN0IGluIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlYCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIkludmFsaWRLZXlJZFwiLCAoKSA9PlxuICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICBDb25maWdFcnJvci5JbnZhbGlkRGF0YShcbiAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIFwiSW52YWxpZCBrZXkgSUQgd2hlbiByZXRyaWV2aW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZVwiLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LmNhdGNoQWxsQ2F1c2UoKGNhdXNlKSA9PlxuICAgICAgICBDYXVzZS5pc0ZhaWxUeXBlKGNhdXNlKSAmJiBDb25maWdFcnJvci5pc0NvbmZpZ0Vycm9yKGNhdXNlLmVycm9yKVxuICAgICAgICAgID8gRWZmZWN0LmZhaWwoY2F1c2UuZXJyb3IpXG4gICAgICAgICAgOiBFZmZlY3QuZmFpbChcbiAgICAgICAgICAgICAgQ29uZmlnRXJyb3IuU291cmNlVW5hdmFpbGFibGUoXG4gICAgICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlXCIsXG4gICAgICAgICAgICAgICAgY2F1c2UsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5mbGF0TWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBwcmltaXRpdmUucGFyc2UodmFsdWUpLFxuICAgICAgICAgIEVmZmVjdC5tYXBCb3RoKHtcbiAgICAgICAgICAgIG9uRmFpbHVyZTogQ29uZmlnRXJyb3IucHJlZml4ZWQocGF0aCBhcyBBcnJheTxzdHJpbmc+KSxcbiAgICAgICAgICAgIG9uU3VjY2VzczogQXJyYXkub2YsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LnByb3ZpZGUoc2VydmljZUxheWVyKSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGVudW1lcmF0ZUNoaWxkcmVuID0gKFxuICAgIHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgKTogRWZmZWN0LkVmZmVjdDxIYXNoU2V0Lkhhc2hTZXQ8c3RyaW5nPiwgQ29uZmlnRXJyb3IuQ29uZmlnRXJyb3I+ID0+XG4gICAgU1NNU2VydmljZS5kZXNjcmliZVBhcmFtZXRlcnMoe30pLnBpcGUoXG4gICAgICBFZmZlY3QuZmxhdE1hcCgocGFyYW1zKSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHBhcmFtcy5QYXJhbWV0ZXJzKSksXG4gICAgICBFZmZlY3QubWFwKEFycmF5Lm1hcCgocGFyYW0pID0+IE9wdGlvbi5mcm9tTnVsbGFibGUocGFyYW0uTmFtZSkpKSxcbiAgICAgIEVmZmVjdC5mbGF0TWFwKE9wdGlvbi5hbGwpLFxuICAgICAgRWZmZWN0Lm9yRGllLFxuICAgICAgRWZmZWN0Lm1hcCgoa2V5cykgPT4ge1xuICAgICAgICBjb25zdCBrZXlQYXRocyA9IGtleXMubWFwKHVubWFrZVBhdGhTdHJpbmcpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEtleVBhdGhzID0ga2V5UGF0aHNcbiAgICAgICAgICAuZmlsdGVyKChrZXlQYXRoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aENvbXBvbmVudCA9IHBpcGUocGF0aCwgQXJyYXkudW5zYWZlR2V0KGkpKTtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBrZXlQYXRoW2ldO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIHBhdGhDb21wb25lbnQgIT09IGN1cnJlbnRFbGVtZW50XG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmxhdE1hcCgoa2V5UGF0aCkgPT4ga2V5UGF0aC5zbGljZShwYXRoLmxlbmd0aCwgcGF0aC5sZW5ndGggKyAxKSk7XG4gICAgICAgIHJldHVybiBIYXNoU2V0LmZyb21JdGVyYWJsZShmaWx0ZXJlZEtleVBhdGhzKTtcbiAgICAgIH0pLFxuICAgICAgRWZmZWN0LnByb3ZpZGUoc2VydmljZUxheWVyKSxcbiAgICApO1xuXG4gIHJldHVybiBDb25maWdQcm92aWRlci5mcm9tRmxhdChcbiAgICBDb25maWdQcm92aWRlci5tYWtlRmxhdCh7XG4gICAgICBsb2FkLFxuICAgICAgZW51bWVyYXRlQ2hpbGRyZW4sXG4gICAgICBwYXRjaDogQ29uZmlnUHJvdmlkZXJQYXRoUGF0Y2guZW1wdHksXG4gICAgfSksXG4gICk7XG59O1xuIl19
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from "./ConfigProvider";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ1Byb3ZpZGVyXCI7XG4iXX0=
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ConfigProvider";
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ConfigProvider"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ1Byb3ZpZGVyXCI7XG4iXX0=
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effect-aws/ssm",
|
|
3
|
+
"author": {
|
|
4
|
+
"name": "Victor Korzunin",
|
|
5
|
+
"email": "ifloydrose@gmail.com",
|
|
6
|
+
"organization": false
|
|
7
|
+
},
|
|
8
|
+
"devDependencies": {
|
|
9
|
+
"@aws-sdk/client-ssm": "^3",
|
|
10
|
+
"@effect-aws/client-ssm": "1.0.0",
|
|
11
|
+
"@fluffy-spoon/substitute": "^1.208.0",
|
|
12
|
+
"@types/node": "^18",
|
|
13
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
14
|
+
"@typescript-eslint/parser": "^7",
|
|
15
|
+
"effect": "3.0.0",
|
|
16
|
+
"eslint": "^8",
|
|
17
|
+
"eslint-config-prettier": "^9.1.0",
|
|
18
|
+
"eslint-import-resolver-typescript": "^3.6.1",
|
|
19
|
+
"eslint-plugin-import": "^2.29.1",
|
|
20
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
21
|
+
"prettier": "^3.2.5",
|
|
22
|
+
"typescript": "^5.4.2",
|
|
23
|
+
"vitest": "^2.0.5"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@effect-aws/client-ssm": "^1.0.0",
|
|
27
|
+
"effect": ">=3.0.0 <4.0.0"
|
|
28
|
+
},
|
|
29
|
+
"main": "lib/index.js",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"homepage": "https://floydspace.github.io/effect-aws",
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"version": "1.0.0",
|
|
36
|
+
"types": "lib/index.d.ts",
|
|
37
|
+
"module": "lib/esm/index.js",
|
|
38
|
+
"sideEffects": [],
|
|
39
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".",
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "npx projen build",
|
|
42
|
+
"compile": "npx projen compile",
|
|
43
|
+
"default": "npx projen default",
|
|
44
|
+
"eslint": "npx projen eslint",
|
|
45
|
+
"package": "npx projen package",
|
|
46
|
+
"post-compile": "npx projen post-compile",
|
|
47
|
+
"pre-compile": "npx projen pre-compile",
|
|
48
|
+
"test": "npx projen test",
|
|
49
|
+
"test:watch": "npx projen test:watch",
|
|
50
|
+
"watch": "npx projen watch",
|
|
51
|
+
"docgen": "docgen"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/project.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effect-aws/ssm",
|
|
3
|
+
"root": "packages/ssm",
|
|
4
|
+
"targets": {
|
|
5
|
+
"default": {
|
|
6
|
+
"executor": "nx:run-commands",
|
|
7
|
+
"options": {
|
|
8
|
+
"command": "pnpm exec projen default",
|
|
9
|
+
"cwd": "packages/ssm"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"pre-compile": {
|
|
13
|
+
"executor": "nx:run-commands",
|
|
14
|
+
"options": {
|
|
15
|
+
"command": "pnpm exec projen pre-compile",
|
|
16
|
+
"cwd": "packages/ssm"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"compile": {
|
|
20
|
+
"executor": "nx:run-commands",
|
|
21
|
+
"options": {
|
|
22
|
+
"command": "pnpm exec projen compile",
|
|
23
|
+
"cwd": "packages/ssm"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"post-compile": {
|
|
27
|
+
"executor": "nx:run-commands",
|
|
28
|
+
"options": {
|
|
29
|
+
"command": "pnpm exec projen post-compile",
|
|
30
|
+
"cwd": "packages/ssm"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"test": {
|
|
34
|
+
"executor": "nx:run-commands",
|
|
35
|
+
"options": {
|
|
36
|
+
"command": "pnpm exec projen test",
|
|
37
|
+
"cwd": "packages/ssm"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"package": {
|
|
41
|
+
"executor": "nx:run-commands",
|
|
42
|
+
"options": {
|
|
43
|
+
"command": "pnpm exec projen package",
|
|
44
|
+
"cwd": "packages/ssm"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"build": {
|
|
48
|
+
"executor": "nx:run-commands",
|
|
49
|
+
"options": {
|
|
50
|
+
"command": "pnpm exec projen build",
|
|
51
|
+
"cwd": "packages/ssm"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"watch": {
|
|
55
|
+
"executor": "nx:run-commands",
|
|
56
|
+
"options": {
|
|
57
|
+
"command": "pnpm exec projen watch",
|
|
58
|
+
"cwd": "packages/ssm"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"eslint": {
|
|
62
|
+
"executor": "nx:run-commands",
|
|
63
|
+
"options": {
|
|
64
|
+
"command": "pnpm exec projen eslint",
|
|
65
|
+
"cwd": "packages/ssm"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"test:watch": {
|
|
69
|
+
"executor": "nx:run-commands",
|
|
70
|
+
"options": {
|
|
71
|
+
"command": "pnpm exec projen test:watch",
|
|
72
|
+
"cwd": "packages/ssm"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"implicitDependencies": [
|
|
77
|
+
"@effect-aws/client-ssm"
|
|
78
|
+
],
|
|
79
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
|
|
80
|
+
}
|