@griffin-app/griffin-executor 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,5 +5,5 @@ export { AxiosAdapter, StubAdapter, type StubResponse, } from "./adapters/index.
5
5
  export { LocalEventEmitter, DurableEventEmitter, type ExecutionEventEmitter, type DurableEventBusAdapter, } from "./events/emitter.js";
6
6
  export type { ExecutionEvent, BaseEvent, MonitorStartEvent, MonitorEndEvent, NodeStartEvent, NodeEndEvent, HttpRequestEvent, HttpResponseEvent, HttpRetryEvent, AssertionResultEvent, WaitStartEvent, NodeStreamEvent, ErrorEvent, } from "./events/types.js";
7
7
  export { KinesisAdapter, type KinesisAdapterOptions, InMemoryAdapter, } from "./events/adapters/index.js";
8
- export { type SecretProvider, type SecretRef, type SecretRefData, type SecretResolveOptions, SecretResolutionError, isSecretRef, resolveSecretsInMonitor, collectSecretsFromMonitor, planHasSecrets, EnvSecretProvider, type EnvSecretProviderOptions, createSecretProvider, type SecretProviderConfig, type EnvProviderConfig, } from "./secrets/index.js";
8
+ export { type SecretProvider, type SecretRef, type SecretRefData, type SecretResolveOptions, SecretResolutionError, isSecretRef, resolveSecretsInMonitor, collectSecretsFromMonitor, planHasSecrets, EnvSecretProvider, type EnvSecretProviderOptions, HubSecretProvider, createSecretProvider, type SecretProviderConfig, type EnvProviderConfig, } from "./secrets/index.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,WAAW,IAAI,eAAe,EAC9B,QAAQ,EACR,aAAa,EACb,IAAI,GACL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,cAAc,EACd,KAAK,qBAAqB,EAC1B,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,WAAW,EAEX,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EAEd,iBAAiB,EACjB,KAAK,wBAAwB,EAE7B,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,WAAW,IAAI,eAAe,EAC9B,QAAQ,EACR,aAAa,EACb,IAAI,GACL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,cAAc,EACd,KAAK,qBAAqB,EAC1B,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,WAAW,EAEX,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EAEd,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,EAEjB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ export { SecretResolutionError, isSecretRef,
9
9
  // Resolution utilities
10
10
  resolveSecretsInMonitor, collectSecretsFromMonitor, planHasSecrets,
11
11
  // Providers
12
- EnvSecretProvider,
12
+ EnvSecretProvider, HubSecretProvider,
13
13
  // Factory functions
14
14
  createSecretProvider, } from "./secrets/index.js";
15
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAkBjD,OAAO,EACL,YAAY,EACZ,WAAW,GAEZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO;AACL,qBAAqB;AACrB,cAAc,EAEd,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,wBAAwB;AACxB,OAAO,EAML,qBAAqB,EACrB,WAAW;AACX,uBAAuB;AACvB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc;AACd,YAAY;AACZ,iBAAiB;AAEjB,oBAAoB;AACpB,oBAAoB,GAGrB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAkBjD,OAAO,EACL,YAAY,EACZ,WAAW,GAEZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO;AACL,qBAAqB;AACrB,cAAc,EAEd,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,wBAAwB;AACxB,OAAO,EAML,qBAAqB,EACrB,WAAW;AACX,uBAAuB;AACvB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc;AACd,YAAY;AACZ,iBAAiB,EAEjB,iBAAiB;AACjB,oBAAoB;AACpB,oBAAoB,GAGrB,MAAM,oBAAoB,CAAC"}
@@ -11,6 +11,6 @@
11
11
  */
12
12
  export { type SecretProvider, type SecretRef, type SecretRefData, type SecretResolveOptions, SecretResolutionError, isSecretRef, isStringLiteral, } from "./types.js";
13
13
  export { resolveSecretsInMonitor, collectSecretsFromMonitor, planHasSecrets, } from "./resolver.js";
14
- export { EnvSecretProvider, type EnvSecretProviderOptions, } from "./providers/index.js";
14
+ export { EnvSecretProvider, type EnvSecretProviderOptions, HubSecretProvider, } from "./providers/index.js";
15
15
  export { createSecretProvider, type SecretProviderConfig, type EnvProviderConfig, } from "./factory.js";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC"}
@@ -14,7 +14,7 @@ export { SecretResolutionError, isSecretRef, isStringLiteral, } from "./types.js
14
14
  // Resolution utilities
15
15
  export { resolveSecretsInMonitor, collectSecretsFromMonitor, planHasSecrets, } from "./resolver.js";
16
16
  // Providers
17
- export { EnvSecretProvider, } from "./providers/index.js";
17
+ export { EnvSecretProvider, HubSecretProvider, } from "./providers/index.js";
18
18
  // Factory functions
19
19
  export { createSecretProvider, } from "./factory.js";
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,aAAa;AACb,OAAO,EAKL,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY;AACZ,OAAO,EACL,iBAAiB,GAElB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,oBAAoB,GAGrB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,aAAa;AACb,OAAO,EAKL,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY;AACZ,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,oBAAoB,GAGrB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Hub secret provider.
3
+ *
4
+ * Resolves secrets via the hub's POST /secrets/resolve endpoint.
5
+ * The hub is the sole gateway for AWS Secrets Manager — no credentials leave the hub.
6
+ */
7
+ import type { GriffinHubSdk } from "@griffin-app/griffin-hub-sdk";
8
+ import type { SecretProvider, SecretResolveOptions } from "../types.js";
9
+ export declare class HubSecretProvider implements SecretProvider {
10
+ readonly name = "hub";
11
+ private readonly sdk;
12
+ private readonly environment;
13
+ private readonly cache?;
14
+ private readonly cacheExpires?;
15
+ private readonly ttlMs;
16
+ constructor(sdk: GriffinHubSdk, environment: string, cache?: Map<string, string>, ttlMs?: number);
17
+ resolve(ref: string, options?: SecretResolveOptions): Promise<string>;
18
+ }
19
+ //# sourceMappingURL=hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/hub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQxE,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAG7B,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM;IAWV,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;CAkC5E"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Hub secret provider.
3
+ *
4
+ * Resolves secrets via the hub's POST /secrets/resolve endpoint.
5
+ * The hub is the sole gateway for AWS Secrets Manager — no credentials leave the hub.
6
+ */
7
+ import { SecretResolutionError } from "../types.js";
8
+ function cacheKey(ref, options) {
9
+ if (!options?.version && !options?.field)
10
+ return ref;
11
+ return `${ref}\0${options.version ?? ""}\0${options.field ?? ""}`;
12
+ }
13
+ export class HubSecretProvider {
14
+ name = "hub";
15
+ sdk;
16
+ environment;
17
+ cache;
18
+ cacheExpires;
19
+ ttlMs;
20
+ constructor(sdk, environment, cache, ttlMs) {
21
+ this.sdk = sdk;
22
+ this.environment = environment;
23
+ this.cache = cache;
24
+ this.ttlMs = ttlMs ?? 0;
25
+ if (this.cache != null && this.ttlMs > 0) {
26
+ this.cacheExpires = new Map();
27
+ }
28
+ }
29
+ async resolve(ref, options) {
30
+ const key = cacheKey(ref, options);
31
+ if (this.cache != null) {
32
+ const expiresAt = this.cacheExpires?.get(key);
33
+ const now = Date.now();
34
+ if (expiresAt == null || now < expiresAt) {
35
+ const cached = this.cache.get(key);
36
+ if (cached !== undefined)
37
+ return cached;
38
+ }
39
+ else {
40
+ this.cache.delete(key);
41
+ this.cacheExpires?.delete(key);
42
+ }
43
+ }
44
+ const response = await this.sdk.postSecretsResolve({
45
+ body: { name: ref, environment: this.environment },
46
+ });
47
+ const value = response.data?.data?.value;
48
+ if (value === undefined) {
49
+ throw new SecretResolutionError(`Secret "${ref}" not found for environment "${this.environment}"`, { ref });
50
+ }
51
+ if (this.cache != null) {
52
+ this.cache.set(key, value);
53
+ if (this.cacheExpires != null && this.ttlMs > 0) {
54
+ this.cacheExpires.set(key, Date.now() + this.ttlMs);
55
+ }
56
+ }
57
+ return value;
58
+ }
59
+ }
60
+ //# sourceMappingURL=hub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.js","sourceRoot":"","sources":["../../../src/secrets/providers/hub.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@
2
2
  * Secret provider implementations.
3
3
  */
4
4
  export { EnvSecretProvider, type EnvSecretProviderOptions } from "./env.js";
5
+ export { HubSecretProvider } from "./hub.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -2,4 +2,5 @@
2
2
  * Secret provider implementations.
3
3
  */
4
4
  export { EnvSecretProvider } from "./env.js";
5
+ export { HubSecretProvider } from "./hub.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/secrets/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/secrets/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@griffin-app/griffin-executor",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Executor for griffin JSON test monitors",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,8 +22,6 @@
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
24
  "@aws-sdk/client-kinesis": "^3.975.0",
25
- "@aws-sdk/client-secrets-manager": "^3.981.0",
26
- "@aws-sdk/client-sts": "^3.981.0",
27
25
  "@griffin-app/griffin-hub-sdk": "1.0.27",
28
26
  "@griffin-app/griffin-core": "0.2.2",
29
27
  "axios": "^1.13.2",
package/src/index.ts CHANGED
@@ -66,6 +66,7 @@ export {
66
66
  // Providers
67
67
  EnvSecretProvider,
68
68
  type EnvSecretProviderOptions,
69
+ HubSecretProvider,
69
70
  // Factory functions
70
71
  createSecretProvider,
71
72
  type SecretProviderConfig,
@@ -32,6 +32,7 @@ export {
32
32
  export {
33
33
  EnvSecretProvider,
34
34
  type EnvSecretProviderOptions,
35
+ HubSecretProvider,
35
36
  } from "./providers/index.js";
36
37
 
37
38
  // Factory functions
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Hub secret provider.
3
+ *
4
+ * Resolves secrets via the hub's POST /secrets/resolve endpoint.
5
+ * The hub is the sole gateway for AWS Secrets Manager — no credentials leave the hub.
6
+ */
7
+
8
+ import type { GriffinHubSdk } from "@griffin-app/griffin-hub-sdk";
9
+ import type { SecretProvider, SecretResolveOptions } from "../types.js";
10
+ import { SecretResolutionError } from "../types.js";
11
+
12
+ function cacheKey(ref: string, options?: SecretResolveOptions): string {
13
+ if (!options?.version && !options?.field) return ref;
14
+ return `${ref}\0${options.version ?? ""}\0${options.field ?? ""}`;
15
+ }
16
+
17
+ export class HubSecretProvider implements SecretProvider {
18
+ readonly name = "hub";
19
+ private readonly sdk: GriffinHubSdk;
20
+ private readonly environment: string;
21
+ private readonly cache?: Map<string, string>;
22
+ private readonly cacheExpires?: Map<string, number>;
23
+ private readonly ttlMs: number;
24
+
25
+ constructor(
26
+ sdk: GriffinHubSdk,
27
+ environment: string,
28
+ cache?: Map<string, string>,
29
+ ttlMs?: number,
30
+ ) {
31
+ this.sdk = sdk;
32
+ this.environment = environment;
33
+ this.cache = cache;
34
+ this.ttlMs = ttlMs ?? 0;
35
+ if (this.cache != null && this.ttlMs > 0) {
36
+ this.cacheExpires = new Map();
37
+ }
38
+ }
39
+
40
+ async resolve(ref: string, options?: SecretResolveOptions): Promise<string> {
41
+ const key = cacheKey(ref, options);
42
+ if (this.cache != null) {
43
+ const expiresAt = this.cacheExpires?.get(key);
44
+ const now = Date.now();
45
+ if (expiresAt == null || now < expiresAt) {
46
+ const cached = this.cache.get(key);
47
+ if (cached !== undefined) return cached;
48
+ } else {
49
+ this.cache.delete(key);
50
+ this.cacheExpires?.delete(key);
51
+ }
52
+ }
53
+
54
+ const response = await this.sdk.postSecretsResolve({
55
+ body: { name: ref, environment: this.environment },
56
+ });
57
+
58
+ const value = response.data?.data?.value;
59
+ if (value === undefined) {
60
+ throw new SecretResolutionError(
61
+ `Secret "${ref}" not found for environment "${this.environment}"`,
62
+ { ref },
63
+ );
64
+ }
65
+
66
+ if (this.cache != null) {
67
+ this.cache.set(key, value);
68
+ if (this.cacheExpires != null && this.ttlMs > 0) {
69
+ this.cacheExpires.set(key, Date.now() + this.ttlMs);
70
+ }
71
+ }
72
+ return value;
73
+ }
74
+ }
@@ -3,3 +3,4 @@
3
3
  */
4
4
 
5
5
  export { EnvSecretProvider, type EnvSecretProviderOptions } from "./env.js";
6
+ export { HubSecretProvider } from "./hub.js";
@@ -1 +0,0 @@
1
- {"root":["./src/executor.test.ts","./src/executor.ts","./src/index.ts","./src/shared.ts","./src/test-monitor-types.ts","./src/types.ts","./src/adapters/axios.ts","./src/adapters/index.ts","./src/adapters/stub.ts","./src/events/emitter.test.ts","./src/events/emitter.ts","./src/events/index.ts","./src/events/types.ts","./src/events/adapters/in-memory.test.ts","./src/events/adapters/in-memory.ts","./src/events/adapters/index.ts","./src/events/adapters/kinesis.test.ts","./src/events/adapters/kinesis.ts","./src/secrets/factory.ts","./src/secrets/index.ts","./src/secrets/resolver.ts","./src/secrets/secrets.test.ts","./src/secrets/types.ts","./src/secrets/providers/aws.ts","./src/secrets/providers/env.ts","./src/secrets/providers/index.ts","./src/secrets/providers/vault.ts","./src/utils/dates.ts"],"version":"5.9.3"}