Skip to content

Commit 743f7e0

Browse files
committed
wip: other ssmprovider features
1 parent 672aa2f commit 743f7e0

File tree

3 files changed

+967
-10
lines changed

3 files changed

+967
-10
lines changed

Diff for: packages/parameters/src/SSMProvider.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ class SSMProvider extends BaseProvider {
183183

184184
// Fetch each possible batch param from cache and return if entire batch is cached
185185
const { cached, toFetch } = await this.getParametersByNameFromCache(parameters);
186-
if (Object.keys(cached).length > Object.keys(parameters).length) {
186+
if (Object.keys(cached).length >= Object.keys(parameters).length) {
187187
results.response = cached;
188188

189189
return results;
@@ -208,8 +208,10 @@ class SSMProvider extends BaseProvider {
208208

209209
for (const [ parameterName, parameterOptions ] of Object.entries(parameters)) {
210210
const cacheKey = [ parameterName, parameterOptions.transform ].toString();
211-
if (!super.hasKeyExpiredInCache(cacheKey)) {
212-
results.cached[parameterName] = super.store.get(cacheKey);
211+
if (!this.hasKeyExpiredInCache(cacheKey)) {
212+
// Since we know the key exists in the cache, we can safely use the non-null assertion operator
213+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
214+
results.cached[parameterName] = this.store.get(cacheKey)!.value;
213215
} else {
214216
results.toFetch[parameterName] = parameterOptions;
215217
}
@@ -291,7 +293,7 @@ class SSMProvider extends BaseProvider {
291293
};
292294

293295
for (const [ parameterName, parameterOptions ] of Object.entries(parameters)) {
294-
const overrides = parameterOptions || {};
296+
const overrides = parameterOptions;
295297
overrides.transform = overrides.transform || configs.transform;
296298

297299
if (!overrides.hasOwnProperty('decrypt')) {
@@ -338,11 +340,13 @@ class SSMProvider extends BaseProvider {
338340
// NOTE: if transform is set, we do it before caching to reduce number of operations
339341
if (parameterValue && parameterOptions.transform) {
340342
value = transformValue(parameterValue, parameterOptions.transform, throwOnError);
343+
} else if (parameterValue) {
344+
value = parameterValue;
341345
}
342346

343347
if (value) {
344348
const cacheKey = [ parameterName, parameterOptions.transform ].toString();
345-
super.addToCache(cacheKey, value, parameterOptions.maxAge || DEFAULT_MAX_AGE_SECS);
349+
this.addToCache(cacheKey, value, parameterOptions.maxAge || DEFAULT_MAX_AGE_SECS);
346350
}
347351

348352
results[parameterName] = value;

Diff for: packages/parameters/src/types/SSMProvider.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { GetParameterCommandInput, GetParametersByPathCommandInput } from '@aws-sdk/client-ssm';
2-
import { ExpirableValue } from 'BaseProvider';
32
import type { TransformOptions } from 'types/BaseProvider';
43

54
/**
@@ -24,7 +23,7 @@ interface SSMGetMultipleOptionsInterface {
2423
sdkOptions?: Partial<GetParametersByPathCommandInput>
2524
decrypt?: boolean
2625
recursive?: boolean
27-
transform?: string
26+
transform?: TransformOptions
2827
throwOnTransformError?: boolean
2928
}
3029

@@ -46,7 +45,7 @@ interface SSMGetParametersByNameOutputInterface {
4645
}
4746

4847
type SSMGetParametersByNameFromCacheOutputType = {
49-
cached: Record<string, ExpirableValue | undefined>
48+
cached: Record<string, string | Record<string, unknown>>
5049
toFetch: Record<string, SSMGetParametersByNameOptionsInterface>
5150
} & { [key: string]: SSMGetParametersByNameOptionsInterface };
5251

0 commit comments

Comments
 (0)