@effect-aws/secrets-manager 1.0.1 → 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.
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/ConfigProvider.js",
3
+ "module": "../dist/esm/ConfigProvider.js",
4
+ "types": "../dist/dts/ConfigProvider.d.ts",
5
+ "sideEffects": []
6
+ }
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2024 Victor Korzunin
1
+ Copyright (c) 2025 Victor Korzunin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -2,7 +2,8 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import { SecretsManagerService } from "@effect-aws/client-secrets-manager";
5
- import { ConfigProvider, Layer } from "effect";
5
+ import type { Layer } from "effect";
6
+ import { ConfigProvider } from "effect";
6
7
  /**
7
8
  * A config provider that loads configuration from AWS Secrets Manager.
8
9
  *
@@ -13,3 +14,4 @@ export declare const fromSecretsManager: (config?: {
13
14
  pathDelim?: string;
14
15
  serviceLayer?: Layer.Layer<SecretsManagerService, never, never>;
15
16
  }) => ConfigProvider.ConfigProvider;
17
+ //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAIL,cAAc,EAMf,MAAM,QAAQ,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YAAa;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACjE,KAAG,eAAe,cAyGlB,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromSecretsManager = void 0;
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ const client_secrets_manager_1 = require("@effect-aws/client-secrets-manager");
8
+ const effect_1 = require("effect");
9
+ /**
10
+ * A config provider that loads configuration from AWS Secrets Manager.
11
+ *
12
+ * @since 1.0.0
13
+ * @category constructors
14
+ */
15
+ const fromSecretsManager = (config) => {
16
+ const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: client_secrets_manager_1.SecretsManagerService.defaultLayer }, 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_secrets_manager_1.SecretsManagerService.getSecretValue({ SecretId: pathString }).pipe(effect_1.Effect.flatMap((value) => effect_1.Option.fromNullable(value.SecretString)), effect_1.Effect.catchTag("ResourceNotFoundException", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), effect_1.Effect.catchTag("NoSuchElementException", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), effect_1.Effect.catchTag("InvalidParameterException", () => effect_1.Effect.fail(effect_1.ConfigError.InvalidData(path, "Invalid parameter provided to AWS Secrets Manager"))), effect_1.Effect.catchTag("InvalidRequestException", () => effect_1.Effect.fail(effect_1.ConfigError.InvalidData(path, "Invalid request to AWS Secrets Manager"))), 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 Secrets Manager", 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_secrets_manager_1.SecretsManagerService.listSecrets({}).pipe(effect_1.Effect.flatMap((secrets) => effect_1.Option.fromNullable(secrets.SecretList)), effect_1.Effect.map(effect_1.Array.map((secret) => effect_1.Option.fromNullable(secret.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.fromSecretsManager = fromSecretsManager;
52
+ //# sourceMappingURL=ConfigProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["../../src/ConfigProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * from "./ConfigProvider.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,qBAAqB,CAAC"}
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ConfigProvider"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ1Byb3ZpZGVyXCI7XG4iXX0=
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ __exportStar(require("./ConfigProvider.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,sDAAoC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { SecretsManagerService } from "@effect-aws/client-secrets-manager";
5
+ import type { Layer } from "effect";
6
+ import { ConfigProvider } from "effect";
7
+ /**
8
+ * A config provider that loads configuration from AWS Secrets Manager.
9
+ *
10
+ * @since 1.0.0
11
+ * @category constructors
12
+ */
13
+ export declare const fromSecretsManager: (config?: {
14
+ pathDelim?: string;
15
+ serviceLayer?: Layer.Layer<SecretsManagerService, never, never>;
16
+ }) => ConfigProvider.ConfigProvider;
17
+ //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAIL,cAAc,EAMf,MAAM,QAAQ,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YAAa;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACjE,KAAG,eAAe,cAyGlB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * from "./ConfigProvider.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { SecretsManagerService } from "@effect-aws/client-secrets-manager";
5
+ import { Array, Cause, ConfigError, ConfigProvider, ConfigProviderPathPatch, Effect, HashSet, Option, pipe, } from "effect";
6
+ /**
7
+ * A config provider that loads configuration from AWS Secrets Manager.
8
+ *
9
+ * @since 1.0.0
10
+ * @category constructors
11
+ */
12
+ export const fromSecretsManager = (config) => {
13
+ const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: SecretsManagerService.defaultLayer }, 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 SecretsManagerService.getSecretValue({ SecretId: pathString }).pipe(Effect.flatMap((value) => Option.fromNullable(value.SecretString)), Effect.catchTag("ResourceNotFoundException", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), Effect.catchTag("NoSuchElementException", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), Effect.catchTag("InvalidParameterException", () => Effect.fail(ConfigError.InvalidData(path, "Invalid parameter provided to AWS Secrets Manager"))), Effect.catchTag("InvalidRequestException", () => Effect.fail(ConfigError.InvalidData(path, "Invalid request to AWS Secrets Manager"))), 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 Secrets Manager", 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) => SecretsManagerService.listSecrets({}).pipe(Effect.flatMap((secrets) => Option.fromNullable(secrets.SecretList)), Effect.map(Array.map((secret) => Option.fromNullable(secret.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=ConfigProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["../../src/ConfigProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * from "./ConfigProvider.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": []
4
+ }
package/package.json CHANGED
@@ -1,53 +1,44 @@
1
1
  {
2
2
  "name": "@effect-aws/secrets-manager",
3
+ "version": "1.1.0",
4
+ "description": "Effectful AWS Secrets Manager functions",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "github:floydspace/effect-aws",
9
+ "directory": "packages/secrets-manager"
10
+ },
11
+ "sideEffects": [],
3
12
  "author": {
4
13
  "name": "Victor Korzunin",
5
- "email": "ifloydrose@gmail.com",
6
- "organization": false
7
- },
8
- "devDependencies": {
9
- "@aws-sdk/client-secrets-manager": "^3",
10
- "@fluffy-spoon/substitute": "^1.208.0",
11
- "@types/node": "^18",
12
- "@typescript-eslint/eslint-plugin": "^7",
13
- "@typescript-eslint/parser": "^7",
14
- "effect": "3.0.0",
15
- "eslint": "^8",
16
- "eslint-config-prettier": "^9.1.0",
17
- "eslint-import-resolver-typescript": "^3.6.1",
18
- "eslint-plugin-import": "^2.29.1",
19
- "eslint-plugin-prettier": "^5.2.1",
20
- "prettier": "^3.2.5",
21
- "typescript": "^5.4.2",
22
- "vitest": "^2.0.5",
23
- "@effect-aws/client-secrets-manager": "^1.3.0"
14
+ "email": "ifloydrose@gmail.com"
24
15
  },
16
+ "homepage": "https://floydspace.github.io/effect-aws/docs/secrets-manager",
25
17
  "peerDependencies": {
26
- "@effect-aws/client-secrets-manager": "^1.1.0",
27
- "effect": ">=3.0.0 <4.0.0"
18
+ "effect": ">=3.0.4 <4.0.0",
19
+ "@effect-aws/client-secrets-manager": "^1.9.0"
28
20
  },
29
- "main": "lib/index.js",
30
- "license": "MIT",
31
- "homepage": "https://floydspace.github.io/effect-aws",
32
- "publishConfig": {
33
- "access": "public"
21
+ "main": "./dist/cjs/index.js",
22
+ "module": "./dist/esm/index.js",
23
+ "types": "./dist/dts/index.d.ts",
24
+ "exports": {
25
+ "./package.json": "./package.json",
26
+ ".": {
27
+ "types": "./dist/dts/index.d.ts",
28
+ "import": "./dist/esm/index.js",
29
+ "default": "./dist/cjs/index.js"
30
+ },
31
+ "./ConfigProvider": {
32
+ "types": "./dist/dts/ConfigProvider.d.ts",
33
+ "import": "./dist/esm/ConfigProvider.js",
34
+ "default": "./dist/cjs/ConfigProvider.js"
35
+ }
34
36
  },
35
- "version": "1.0.1",
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"
37
+ "typesVersions": {
38
+ "*": {
39
+ "ConfigProvider": [
40
+ "./dist/dts/ConfigProvider.d.ts"
41
+ ]
42
+ }
52
43
  }
53
44
  }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { SecretsManagerService } from "@effect-aws/client-secrets-manager";
5
+ import type { Config, Layer } from "effect";
6
+ import {
7
+ Array,
8
+ Cause,
9
+ ConfigError,
10
+ ConfigProvider,
11
+ ConfigProviderPathPatch,
12
+ Effect,
13
+ HashSet,
14
+ Option,
15
+ pipe,
16
+ } from "effect";
17
+
18
+ /**
19
+ * A config provider that loads configuration from AWS Secrets Manager.
20
+ *
21
+ * @since 1.0.0
22
+ * @category constructors
23
+ */
24
+ export const fromSecretsManager = (config?: {
25
+ pathDelim?: string;
26
+ serviceLayer?: Layer.Layer<SecretsManagerService, never, never>;
27
+ }): ConfigProvider.ConfigProvider => {
28
+ const { pathDelim, serviceLayer } = Object.assign(
29
+ {},
30
+ { pathDelim: "_", serviceLayer: SecretsManagerService.defaultLayer },
31
+ config,
32
+ );
33
+ const makePathString = (path: ReadonlyArray<string>): string => pipe(path, Array.join(pathDelim));
34
+ const unmakePathString = (pathString: string): ReadonlyArray<string> => pathString.split(pathDelim);
35
+
36
+ const load = <A>(
37
+ path: ReadonlyArray<string>,
38
+ primitive: Config.Config.Primitive<A>,
39
+ ): Effect.Effect<Array<A>, ConfigError.ConfigError> => {
40
+ const pathString = makePathString(path);
41
+ return SecretsManagerService.getSecretValue({ SecretId: pathString }).pipe(
42
+ Effect.flatMap((value) => Option.fromNullable(value.SecretString)),
43
+ Effect.catchTag("ResourceNotFoundException", () =>
44
+ Effect.fail(
45
+ ConfigError.MissingData(
46
+ path as Array<string>,
47
+ `Expected ${pathString} to exist in AWS Secrets Manager`,
48
+ ),
49
+ )),
50
+ Effect.catchTag("NoSuchElementException", () =>
51
+ Effect.fail(
52
+ ConfigError.MissingData(
53
+ path as Array<string>,
54
+ `Expected ${pathString} to exist in AWS Secrets Manager`,
55
+ ),
56
+ )),
57
+ Effect.catchTag("InvalidParameterException", () =>
58
+ Effect.fail(
59
+ ConfigError.InvalidData(
60
+ path as Array<string>,
61
+ "Invalid parameter provided to AWS Secrets Manager",
62
+ ),
63
+ )),
64
+ Effect.catchTag("InvalidRequestException", () =>
65
+ Effect.fail(
66
+ ConfigError.InvalidData(
67
+ path as Array<string>,
68
+ "Invalid request to AWS Secrets Manager",
69
+ ),
70
+ )),
71
+ Effect.catchAllCause((cause) =>
72
+ Cause.isFailType(cause) && ConfigError.isConfigError(cause.error)
73
+ ? Effect.fail(cause.error)
74
+ : Effect.fail(
75
+ ConfigError.SourceUnavailable(
76
+ path as Array<string>,
77
+ "Failed to load configuration from AWS Secrets Manager",
78
+ cause,
79
+ ),
80
+ )
81
+ ),
82
+ Effect.flatMap((value) =>
83
+ pipe(
84
+ primitive.parse(value),
85
+ Effect.mapBoth({
86
+ onFailure: ConfigError.prefixed(path as Array<string>),
87
+ onSuccess: Array.of,
88
+ }),
89
+ )
90
+ ),
91
+ Effect.provide(serviceLayer),
92
+ );
93
+ };
94
+
95
+ const enumerateChildren = (
96
+ path: ReadonlyArray<string>,
97
+ ): Effect.Effect<HashSet.HashSet<string>, ConfigError.ConfigError> =>
98
+ SecretsManagerService.listSecrets({}).pipe(
99
+ Effect.flatMap((secrets) => Option.fromNullable(secrets.SecretList)),
100
+ Effect.map(Array.map((secret) => Option.fromNullable(secret.Name))),
101
+ Effect.flatMap(Option.all),
102
+ Effect.orDie,
103
+ Effect.map((keys) => {
104
+ const keyPaths = keys.map(unmakePathString);
105
+ const filteredKeyPaths = keyPaths
106
+ .filter((keyPath) => {
107
+ for (let i = 0; i < path.length; i++) {
108
+ const pathComponent = pipe(path, Array.unsafeGet(i));
109
+ const currentElement = keyPath[i];
110
+ if (
111
+ currentElement === undefined ||
112
+ pathComponent !== currentElement
113
+ ) {
114
+ return false;
115
+ }
116
+ }
117
+ return true;
118
+ })
119
+ .flatMap((keyPath) => keyPath.slice(path.length, path.length + 1));
120
+ return HashSet.fromIterable(filteredKeyPaths);
121
+ }),
122
+ Effect.provide(serviceLayer),
123
+ );
124
+
125
+ return ConfigProvider.fromFlat(
126
+ ConfigProvider.makeFlat({
127
+ load,
128
+ enumerateChildren,
129
+ patch: ConfigProviderPathPatch.empty,
130
+ }),
131
+ );
132
+ };
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * from "./ConfigProvider.js";
package/CHANGELOG.md DELETED
@@ -1,14 +0,0 @@
1
- # @effect-aws/secrets-manager
2
-
3
- ## 1.0.1
4
-
5
- ### Patch Changes
6
-
7
- - [`cc97eae`](https://github.com/floydspace/effect-aws/commit/cc97eaed1f8df72b8e7fde05069e8ce8eaac578f) Thanks [@floydspace](https://github.com/floydspace)! - simplify layers configuration (closes #78)
8
-
9
- ## 1.0.0
10
-
11
- ### Major Changes
12
-
13
- - [`234a5e2`](https://github.com/floydspace/effect-aws/commit/234a5e2d76b8cf12c180ef88584956eaeb039e89) Thanks [@floydspace](https://github.com/floydspace)! - Implement `fromSecretsManager` ConfigProvider constructor, fetching configuration from AWS Secrets Manager service.
14
- Closes [#55](https://github.com/floydspace/effect-aws/issues/55)
package/docgen.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "../../node_modules/@effect/docgen/schema.json",
3
- "exclude": [
4
- "src/index.ts",
5
- "src/Errors.ts"
6
- ],
7
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
8
- }
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fromSecretsManager = void 0;
4
- /**
5
- * @since 1.0.0
6
- */
7
- const client_secrets_manager_1 = require("@effect-aws/client-secrets-manager");
8
- const effect_1 = require("effect");
9
- /**
10
- * A config provider that loads configuration from AWS Secrets Manager.
11
- *
12
- * @since 1.0.0
13
- * @category constructors
14
- */
15
- const fromSecretsManager = (config) => {
16
- const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: client_secrets_manager_1.DefaultSecretsManagerServiceLayer }, 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_secrets_manager_1.SecretsManagerService.getSecretValue({ SecretId: pathString }).pipe(effect_1.Effect.flatMap((value) => effect_1.Option.fromNullable(value.SecretString)), effect_1.Effect.catchTag("ResourceNotFoundException", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), effect_1.Effect.catchTag("NoSuchElementException", () => effect_1.Effect.fail(effect_1.ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), effect_1.Effect.catchTag("InvalidParameterException", () => effect_1.Effect.fail(effect_1.ConfigError.InvalidData(path, "Invalid parameter provided to AWS Secrets Manager"))), effect_1.Effect.catchTag("InvalidRequestException", () => effect_1.Effect.fail(effect_1.ConfigError.InvalidData(path, "Invalid request to AWS Secrets Manager"))), 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 Secrets Manager", 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_secrets_manager_1.SecretsManagerService.listSecrets({}).pipe(effect_1.Effect.flatMap((secrets) => effect_1.Option.fromNullable(secrets.SecretList)), effect_1.Effect.map(effect_1.Array.map((secret) => effect_1.Option.fromNullable(secret.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.fromSecretsManager = fromSecretsManager;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29uZmlnUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCwrRUFHNEM7QUFDNUMsbUNBWWdCO0FBRWhCOzs7OztHQUtHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BR2xDLEVBQWlDLEVBQUU7SUFDbEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMvQyxFQUFFLEVBQ0YsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSwwREFBaUMsRUFBRSxFQUNuRSxNQUFNLENBQ1AsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBMkIsRUFBVSxFQUFFLENBQzdELElBQUEsYUFBSSxFQUFDLElBQUksRUFBRSxjQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQWtCLEVBQXlCLEVBQUUsQ0FDckUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5QixNQUFNLElBQUksR0FBRyxDQUNYLElBQTJCLEVBQzNCLFNBQXFDLEVBQ2EsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTyw4Q0FBcUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3hFLGVBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGVBQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ2xFLGVBQU0sQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFLENBQ2hELGVBQU0sQ0FBQyxJQUFJLENBQ1Qsb0JB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QUNsQyxJQUNFLGNBQWMsS0FBSyxTQUFTO29CQUM1QixhQUFhLEtBQUssY0FBYyxFQUNoQyxDQUFDO29CQUNELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxnQkFBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUNGLGVBQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzdCLENBQUM7SUFFSixPQUFPLHVCQUFjLENBQUMsUUFBUSxDQUM1Qix1QkFBYyxDQUFDLFFBQVEsQ0FBQztRQUN0QixJQUFJO1FBQ0osaUJBQWlCO1FBQ2pCLEtBQUssRUFBRSxnQ0FBdUIsQ0FBQyxLQUFLO0tBQ3JDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBbEhXLFFBQUEsa0JBQWtCLHNCQWtIN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBEZWZhdWx0U2VjcmV0c01hbmFnZXJTZXJ2aWNlTGF5ZXIsXG4gIFNlY3JldHNNYW5hZ2VyU2VydmljZSxcbn0gZnJvbSBcIkBlZmZlY3QtYXdzL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIEFycmF5LFxuICBDYXVzZSxcbiAgQ29uZmlnLFxuICBDb25maWdFcnJvcixcbiAgQ29uZmlnUHJvdmlkZXIsXG4gIENvbmZpZ1Byb3ZpZGVyUGF0aFBhdGNoLFxuICBFZmZlY3QsXG4gIEhhc2hTZXQsXG4gIExheWVyLFxuICBPcHRpb24sXG4gIHBpcGUsXG59IGZyb20gXCJlZmZlY3RcIjtcblxuLyoqXG4gKiBBIGNvbmZpZyBwcm92aWRlciB0aGF0IGxvYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgZnJvbVNlY3JldHNNYW5hZ2VyID0gKGNvbmZpZz86IHtcbiAgcGF0aERlbGltPzogc3RyaW5nO1xuICBzZXJ2aWNlTGF5ZXI/OiBMYXllci5MYXllcjxTZWNyZXRzTWFuYWdlclNlcnZpY2UsIG5ldmVyLCBuZXZlcj47XG59KTogQ29uZmlnUHJvdmlkZXIuQ29uZmlnUHJvdmlkZXIgPT4ge1xuICBjb25zdCB7IHBhdGhEZWxpbSwgc2VydmljZUxheWVyIH0gPSBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIHsgcGF0aERlbGltOiBcIl9cIiwgc2VydmljZUxheWVyOiBEZWZhdWx0U2VjcmV0c01hbmFnZXJTZXJ2aWNlTGF5ZXIgfSxcbiAgICBjb25maWcsXG4gICk7XG4gIGNvbnN0IG1ha2VQYXRoU3RyaW5nID0gKHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPik6IHN0cmluZyA9PlxuICAgIHBpcGUocGF0aCwgQXJyYXkuam9pbihwYXRoRGVsaW0pKTtcbiAgY29uc3QgdW5tYWtlUGF0aFN0cmluZyA9IChwYXRoU3RyaW5nOiBzdHJpbmcpOiBSZWFkb25seUFycmF5PHN0cmluZz4gPT5cbiAgICBwYXRoU3RyaW5nLnNwbGl0KHBhdGhEZWxpbSk7XG5cbiAgY29uc3QgbG9hZCA9IDxBPihcbiAgICBwYXRoOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICAgcHJpbWl0aXZlOiBDb25maWcuQ29uZmlnLlByaW1pdGl2ZTxBPixcbiAgKTogRWZmZWN0LkVmZmVjdDxBcnJheTxBPiwgQ29uZmlnRXJyb3IuQ29uZmlnRXJyb3I+ID0+IHtcbiAgICBjb25zdCBwYXRoU3RyaW5nID0gbWFrZVBhdGhTdHJpbmcocGF0aCk7XG4gICAgcmV0dXJuIFNlY3JldHNNYW5hZ2VyU2VydmljZS5nZXRTZWNyZXRWYWx1ZSh7IFNlY3JldElkOiBwYXRoU3RyaW5nIH0pLnBpcGUoXG4gICAgICBFZmZlY3QuZmxhdE1hcCgodmFsdWUpID0+IE9wdGlvbi5mcm9tTnVsbGFibGUodmFsdWUuU2VjcmV0U3RyaW5nKSksXG4gICAgICBFZmZlY3QuY2F0Y2hUYWcoXCJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLk1pc3NpbmdEYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgYEV4cGVjdGVkICR7cGF0aFN0cmluZ30gdG8gZXhpc3QgaW4gQVdTIFNlY3JldHMgTWFuYWdlcmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QuY2F0Y2hUYWcoXCJOb1N1Y2hFbGVtZW50RXhjZXB0aW9uXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLk1pc3NpbmdEYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgYEV4cGVjdGVkICR7cGF0aFN0cmluZ30gdG8gZXhpc3QgaW4gQVdTIFNlY3JldHMgTWFuYWdlcmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QuY2F0Y2hUYWcoXCJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLkludmFsaWREYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgXCJJbnZhbGlkIHBhcmFtZXRlciBwcm92aWRlZCB0byBBV1MgU2VjcmV0cyBNYW5hZ2VyXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QuY2F0Y2hUYWcoXCJJbnZhbGlkUmVxdWVzdEV4Y2VwdGlvblwiLCAoKSA9PlxuICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICBDb25maWdFcnJvci5JbnZhbGlkRGF0YShcbiAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIFwiSW52YWxpZCByZXF1ZXN0IHRvIEFXUyBTZWNyZXRzIE1hbmFnZXJcIixcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaEFsbENhdXNlKChjYXVzZSkgPT5cbiAgICAgICAgQ2F1c2UuaXNGYWlsVHlwZShjYXVzZSkgJiYgQ29uZmlnRXJyb3IuaXNDb25maWdFcnJvcihjYXVzZS5lcnJvcilcbiAgICAgICAgICA/IEVmZmVjdC5mYWlsKGNhdXNlLmVycm9yKVxuICAgICAgICAgIDogRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICAgIENvbmZpZ0Vycm9yLlNvdXJjZVVuYXZhaWxhYmxlKFxuICAgICAgICAgICAgICAgIHBhdGggYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byBsb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyXCIsXG4gICAgICAgICAgICAgICAgY2F1c2UsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5mbGF0TWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBwcmltaXRpdmUucGFyc2UodmFsdWUpLFxuICAgICAgICAgIEVmZmVjdC5tYXBCb3RoKHtcbiAgICAgICAgICAgIG9uRmFpbHVyZTogQ29uZmlnRXJyb3IucHJlZml4ZWQocGF0aCBhcyBBcnJheTxzdHJpbmc+KSxcbiAgICAgICAgICAgIG9uU3VjY2VzczogQXJyYXkub2YsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LnByb3ZpZGUoc2VydmljZUxheWVyKSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGVudW1lcmF0ZUNoaWxkcmVuID0gKFxuICAgIHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgKTogRWZmZWN0LkVmZmVjdDxIYXNoU2V0Lkhhc2hTZXQ8c3RyaW5nPiwgQ29uZmlnRXJyb3IuQ29uZmlnRXJyb3I+ID0+XG4gICAgU2VjcmV0c01hbmFnZXJTZXJ2aWNlLmxpc3RTZWNyZXRzKHt9KS5waXBlKFxuICAgICAgRWZmZWN0LmZsYXRNYXAoKHNlY3JldHMpID0+IE9wdGlvbi5mcm9tTnVsbGFibGUoc2VjcmV0cy5TZWNyZXRMaXN0KSksXG4gICAgICBFZmZlY3QubWFwKEFycmF5Lm1hcCgoc2VjcmV0KSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHNlY3JldC5OYW1lKSkpLFxuICAgICAgRWZmZWN0LmZsYXRNYXAoT3B0aW9uLmFsbCksXG4gICAgICBFZmZlY3Qub3JEaWUsXG4gICAgICBFZmZlY3QubWFwKChrZXlzKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleVBhdGhzID0ga2V5cy5tYXAodW5tYWtlUGF0aFN0cmluZyk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkS2V5UGF0aHMgPSBrZXlQYXRoc1xuICAgICAgICAgIC5maWx0ZXIoKGtleVBhdGgpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBwYXRoQ29tcG9uZW50ID0gcGlwZShwYXRoLCBBcnJheS51bnNhZmVHZXQoaSkpO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGtleVBhdGhbaV07XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgcGF0aENvbXBvbmVudCAhPT0gY3VycmVudEVsZW1lbnRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mbGF0TWFwKChrZXlQYXRoKSA9PiBrZXlQYXRoLnNsaWNlKHBhdGgubGVuZ3RoLCBwYXRoLmxlbmd0aCArIDEpKTtcbiAgICAgICAgcmV0dXJuIEhhc2hTZXQuZnJvbUl0ZXJhYmxlKGZpbHRlcmVkS2V5UGF0aHMpO1xuICAgICAgfSksXG4gICAgICBFZmZlY3QucHJvdmlkZShzZXJ2aWNlTGF5ZXIpLFxuICAgICk7XG5cbiAgcmV0dXJuIENvbmZpZ1Byb3ZpZGVyLmZyb21GbGF0KFxuICAgIENvbmZpZ1Byb3ZpZGVyLm1ha2VGbGF0KHtcbiAgICAgIGxvYWQsXG4gICAgICBlbnVtZXJhdGVDaGlsZHJlbixcbiAgICAgIHBhdGNoOiBDb25maWdQcm92aWRlclBhdGhQYXRjaC5lbXB0eSxcbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=
@@ -1,48 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { DefaultSecretsManagerServiceLayer, SecretsManagerService, } from "@effect-aws/client-secrets-manager";
5
- import { Array, Cause, ConfigError, ConfigProvider, ConfigProviderPathPatch, Effect, HashSet, Option, pipe, } from "effect";
6
- /**
7
- * A config provider that loads configuration from AWS Secrets Manager.
8
- *
9
- * @since 1.0.0
10
- * @category constructors
11
- */
12
- export const fromSecretsManager = (config) => {
13
- const { pathDelim, serviceLayer } = Object.assign({}, { pathDelim: "_", serviceLayer: DefaultSecretsManagerServiceLayer }, 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 SecretsManagerService.getSecretValue({ SecretId: pathString }).pipe(Effect.flatMap((value) => Option.fromNullable(value.SecretString)), Effect.catchTag("ResourceNotFoundException", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), Effect.catchTag("NoSuchElementException", () => Effect.fail(ConfigError.MissingData(path, `Expected ${pathString} to exist in AWS Secrets Manager`))), Effect.catchTag("InvalidParameterException", () => Effect.fail(ConfigError.InvalidData(path, "Invalid parameter provided to AWS Secrets Manager"))), Effect.catchTag("InvalidRequestException", () => Effect.fail(ConfigError.InvalidData(path, "Invalid request to AWS Secrets Manager"))), 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 Secrets Manager", 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) => SecretsManagerService.listSecrets({}).pipe(Effect.flatMap((secrets) => Option.fromNullable(secrets.SecretList)), Effect.map(Array.map((secret) => Option.fromNullable(secret.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29uZmlnUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLHFCQUFxQixHQUN0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUVMLFdBQVcsRUFDWCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixPQUFPLEVBRVAsTUFBTSxFQUNOLElBQUksR0FDTCxNQUFNLFFBQVEsQ0FBQztBQUVoQjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFHbEMsRUFBaUMsRUFBRTtJQUNsQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQy9DLEVBQUUsRUFDRixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLGlDQUFpQyxFQUFFLEVBQ25FLE1BQU0sQ0FDUCxDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUEyQixFQUFVLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQWtCLEVBQXlCLEVBQUUsQ0FDckUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5QixNQUFNLElBQUksR0FBRyxDQUNYLElBQTJCLEVBQzNCLFNBQXFDLEVBQ2EsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3hFLE1BQU0s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QUFFLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFDRSxjQUFjLEtBQUssU0FBUztvQkFDNUIsYUFBYSxLQUFLLGNBQWMsRUFDaEMsQ0FBQztvQkFDRCxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzdCLENBQUM7SUFFSixPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQzVCLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDdEIsSUFBSTtRQUNKLGlCQUFpQjtRQUNqQixLQUFLLEVBQUUsdUJBQXVCLENBQUMsS0FBSztLQUNyQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIERlZmF1bHRTZWNyZXRzTWFuYWdlclNlcnZpY2VMYXllcixcbiAgU2VjcmV0c01hbmFnZXJTZXJ2aWNlLFxufSBmcm9tIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlY3JldHMtbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgQXJyYXksXG4gIENhdXNlLFxuICBDb25maWcsXG4gIENvbmZpZ0Vycm9yLFxuICBDb25maWdQcm92aWRlcixcbiAgQ29uZmlnUHJvdmlkZXJQYXRoUGF0Y2gsXG4gIEVmZmVjdCxcbiAgSGFzaFNldCxcbiAgTGF5ZXIsXG4gIE9wdGlvbixcbiAgcGlwZSxcbn0gZnJvbSBcImVmZmVjdFwiO1xuXG4vKipcbiAqIEEgY29uZmlnIHByb3ZpZGVyIHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tU2VjcmV0c01hbmFnZXIgPSAoY29uZmlnPzoge1xuICBwYXRoRGVsaW0/OiBzdHJpbmc7XG4gIHNlcnZpY2VMYXllcj86IExheWVyLkxheWVyPFNlY3JldHNNYW5hZ2VyU2VydmljZSwgbmV2ZXIsIG5ldmVyPjtcbn0pOiBDb25maWdQcm92aWRlci5Db25maWdQcm92aWRlciA9PiB7XG4gIGNvbnN0IHsgcGF0aERlbGltLCBzZXJ2aWNlTGF5ZXIgfSA9IE9iamVjdC5hc3NpZ24oXG4gICAge30sXG4gICAgeyBwYXRoRGVsaW06IFwiX1wiLCBzZXJ2aWNlTGF5ZXI6IERlZmF1bHRTZWNyZXRzTWFuYWdlclNlcnZpY2VMYXllciB9LFxuICAgIGNvbmZpZyxcbiAgKTtcbiAgY29uc3QgbWFrZVBhdGhTdHJpbmcgPSAocGF0aDogUmVhZG9ubHlBcnJheTxzdHJpbmc+KTogc3RyaW5nID0+XG4gICAgcGlwZShwYXRoLCBBcnJheS5qb2luKHBhdGhEZWxpbSkpO1xuICBjb25zdCB1bm1ha2VQYXRoU3RyaW5nID0gKHBhdGhTdHJpbmc6IHN0cmluZyk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9PlxuICAgIHBhdGhTdHJpbmcuc3BsaXQocGF0aERlbGltKTtcblxuICBjb25zdCBsb2FkID0gPEE+KFxuICAgIHBhdGg6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICBwcmltaXRpdmU6IENvbmZpZy5Db25maWcuUHJpbWl0aXZlPEE+LFxuICApOiBFZmZlY3QuRWZmZWN0PEFycmF5PEE+LCBDb25maWdFcnJvci5Db25maWdFcnJvcj4gPT4ge1xuICAgIGNvbnN0IHBhdGhTdHJpbmcgPSBtYWtlUGF0aFN0cmluZyhwYXRoKTtcbiAgICByZXR1cm4gU2VjcmV0c01hbmFnZXJTZXJ2aWNlLmdldFNlY3JldFZhbHVlKHsgU2VjcmV0SWQ6IHBhdGhTdHJpbmcgfSkucGlwZShcbiAgICAgIEVmZmVjdC5mbGF0TWFwKCh2YWx1ZSkgPT4gT3B0aW9uLmZyb21OdWxsYWJsZSh2YWx1ZS5TZWNyZXRTdHJpbmcpKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIlJlc291cmNlTm90Rm91bmRFeGNlcHRpb25cIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuTWlzc2luZ0RhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBgRXhwZWN0ZWQgJHtwYXRoU3RyaW5nfSB0byBleGlzdCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyYCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIk5vU3VjaEVsZW1lbnRFeGNlcHRpb25cIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuTWlzc2luZ0RhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBgRXhwZWN0ZWQgJHtwYXRoU3RyaW5nfSB0byBleGlzdCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyYCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIiwgKCkgPT5cbiAgICAgICAgRWZmZWN0LmZhaWwoXG4gICAgICAgICAgQ29uZmlnRXJyb3IuSW52YWxpZERhdGEoXG4gICAgICAgICAgICBwYXRoIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBcIkludmFsaWQgcGFyYW1ldGVyIHByb3ZpZGVkIHRvIEFXUyBTZWNyZXRzIE1hbmFnZXJcIixcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIEVmZmVjdC5jYXRjaFRhZyhcIkludmFsaWRSZXF1ZXN0RXhjZXB0aW9uXCIsICgpID0+XG4gICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgIENvbmZpZ0Vycm9yLkludmFsaWREYXRhKFxuICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgXCJJbnZhbGlkIHJlcXVlc3QgdG8gQVdTIFNlY3JldHMgTWFuYWdlclwiLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LmNhdGNoQWxsQ2F1c2UoKGNhdXNlKSA9PlxuICAgICAgICBDYXVzZS5pc0ZhaWxUeXBlKGNhdXNlKSAmJiBDb25maWdFcnJvci5pc0NvbmZpZ0Vycm9yKGNhdXNlLmVycm9yKVxuICAgICAgICAgID8gRWZmZWN0LmZhaWwoY2F1c2UuZXJyb3IpXG4gICAgICAgICAgOiBFZmZlY3QuZmFpbChcbiAgICAgICAgICAgICAgQ29uZmlnRXJyb3IuU291cmNlVW5hdmFpbGFibGUoXG4gICAgICAgICAgICAgICAgcGF0aCBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXJcIixcbiAgICAgICAgICAgICAgICBjYXVzZSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICApLFxuICAgICAgRWZmZWN0LmZsYXRNYXAoKHZhbHVlKSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIHByaW1pdGl2ZS5wYXJzZSh2YWx1ZSksXG4gICAgICAgICAgRWZmZWN0Lm1hcEJvdGgoe1xuICAgICAgICAgICAgb25GYWlsdXJlOiBDb25maWdFcnJvci5wcmVmaXhlZChwYXRoIGFzIEFycmF5PHN0cmluZz4pLFxuICAgICAgICAgICAgb25TdWNjZXNzOiBBcnJheS5vZixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBFZmZlY3QucHJvdmlkZShzZXJ2aWNlTGF5ZXIpLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZW51bWVyYXRlQ2hpbGRyZW4gPSAoXG4gICAgcGF0aDogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICApOiBFZmZlY3QuRWZmZWN0PEhhc2hTZXQuSGFzaFNldDxzdHJpbmc+LCBDb25maWdFcnJvci5Db25maWdFcnJvcj4gPT5cbiAgICBTZWNyZXRzTWFuYWdlclNlcnZpY2UubGlzdFNlY3JldHMoe30pLnBpcGUoXG4gICAgICBFZmZlY3QuZmxhdE1hcCgoc2VjcmV0cykgPT4gT3B0aW9uLmZyb21OdWxsYWJsZShzZWNyZXRzLlNlY3JldExpc3QpKSxcbiAgICAgIEVmZmVjdC5tYXAoQXJyYXkubWFwKChzZWNyZXQpID0+IE9wdGlvbi5mcm9tTnVsbGFibGUoc2VjcmV0Lk5hbWUpKSksXG4gICAgICBFZmZlY3QuZmxhdE1hcChPcHRpb24uYWxsKSxcbiAgICAgIEVmZmVjdC5vckRpZSxcbiAgICAgIEVmZmVjdC5tYXAoKGtleXMpID0+IHtcbiAgICAgICAgY29uc3Qga2V5UGF0aHMgPSBrZXlzLm1hcCh1bm1ha2VQYXRoU3RyaW5nKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRLZXlQYXRocyA9IGtleVBhdGhzXG4gICAgICAgICAgLmZpbHRlcigoa2V5UGF0aCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhDb21wb25lbnQgPSBwaXBlKHBhdGgsIEFycmF5LnVuc2FmZUdldChpKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0ga2V5UGF0aFtpXTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICBwYXRoQ29tcG9uZW50ICE9PSBjdXJyZW50RWxlbWVudFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZsYXRNYXAoKGtleVBhdGgpID0+IGtleVBhdGguc2xpY2UocGF0aC5sZW5ndGgsIHBhdGgubGVuZ3RoICsgMSkpO1xuICAgICAgICByZXR1cm4gSGFzaFNldC5mcm9tSXRlcmFibGUoZmlsdGVyZWRLZXlQYXRocyk7XG4gICAgICB9KSxcbiAgICAgIEVmZmVjdC5wcm92aWRlKHNlcnZpY2VMYXllciksXG4gICAgKTtcblxuICByZXR1cm4gQ29uZmlnUHJvdmlkZXIuZnJvbUZsYXQoXG4gICAgQ29uZmlnUHJvdmlkZXIubWFrZUZsYXQoe1xuICAgICAgbG9hZCxcbiAgICAgIGVudW1lcmF0ZUNoaWxkcmVuLFxuICAgICAgcGF0Y2g6IENvbmZpZ1Byb3ZpZGVyUGF0aFBhdGNoLmVtcHR5LFxuICAgIH0pLFxuICApO1xufTtcbiJdfQ==
package/lib/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "./ConfigProvider";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ1Byb3ZpZGVyXCI7XG4iXX0=
package/lib/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./ConfigProvider";
package/project.json DELETED
@@ -1,80 +0,0 @@
1
- {
2
- "name": "@effect-aws/secrets-manager",
3
- "root": "packages/secrets-manager",
4
- "targets": {
5
- "default": {
6
- "executor": "nx:run-commands",
7
- "options": {
8
- "command": "pnpm exec projen default",
9
- "cwd": "packages/secrets-manager"
10
- }
11
- },
12
- "pre-compile": {
13
- "executor": "nx:run-commands",
14
- "options": {
15
- "command": "pnpm exec projen pre-compile",
16
- "cwd": "packages/secrets-manager"
17
- }
18
- },
19
- "compile": {
20
- "executor": "nx:run-commands",
21
- "options": {
22
- "command": "pnpm exec projen compile",
23
- "cwd": "packages/secrets-manager"
24
- }
25
- },
26
- "post-compile": {
27
- "executor": "nx:run-commands",
28
- "options": {
29
- "command": "pnpm exec projen post-compile",
30
- "cwd": "packages/secrets-manager"
31
- }
32
- },
33
- "test": {
34
- "executor": "nx:run-commands",
35
- "options": {
36
- "command": "pnpm exec projen test",
37
- "cwd": "packages/secrets-manager"
38
- }
39
- },
40
- "package": {
41
- "executor": "nx:run-commands",
42
- "options": {
43
- "command": "pnpm exec projen package",
44
- "cwd": "packages/secrets-manager"
45
- }
46
- },
47
- "build": {
48
- "executor": "nx:run-commands",
49
- "options": {
50
- "command": "pnpm exec projen build",
51
- "cwd": "packages/secrets-manager"
52
- }
53
- },
54
- "watch": {
55
- "executor": "nx:run-commands",
56
- "options": {
57
- "command": "pnpm exec projen watch",
58
- "cwd": "packages/secrets-manager"
59
- }
60
- },
61
- "eslint": {
62
- "executor": "nx:run-commands",
63
- "options": {
64
- "command": "pnpm exec projen eslint",
65
- "cwd": "packages/secrets-manager"
66
- }
67
- },
68
- "test:watch": {
69
- "executor": "nx:run-commands",
70
- "options": {
71
- "command": "pnpm exec projen test:watch",
72
- "cwd": "packages/secrets-manager"
73
- }
74
- }
75
- },
76
- "implicitDependencies": [
77
- "@effect-aws/client-secrets-manager"
78
- ],
79
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
80
- }
package/vitest.config.ts DELETED
@@ -1,3 +0,0 @@
1
- import configShared from "../../vitest.shared";
2
-
3
- export default configShared;