Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Format code with prettier #5

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 30 additions & 9 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { GetParameterCommand, GetParametersCommand, ParameterNotFound, SSMClient } from '@aws-sdk/client-ssm';
import {
GetParameterCommand,
GetParametersCommand,
ParameterNotFound,
SSMClient,
} from "@aws-sdk/client-ssm";

function chunk<T>(array: T[], chunkSize: number): Array<T[]> {
const arrays: Array<T[]> = [];
Expand Down Expand Up @@ -34,32 +39,36 @@ class SSMParameterStore<TParameters extends Record<string, string>> {
this.ssm = ssm;
this.parameterNamesToKeys = parameterNamesToKeys;
for (const key of Object.values(parameterNamesToKeys)) {
this.parameterKeysToValues[key] = '';
this.parameterKeysToValues[key] = "";
this.keyLoaded[key] = false;
}
}

private async fetchOne(key: string) {
try {
const ssmResponse = await this.ssm.send(new GetParameterCommand({ Name: key, WithDecryption: true }));
const ssmResponse = await this.ssm.send(
new GetParameterCommand({ Name: key, WithDecryption: true })
);
return ssmResponse.Parameter!.Value!;
} catch (err) {
if (err instanceof ParameterNotFound) {
return '';
return "";
}
throw err;
}
}

private async fetchTen(keys: string[]) {
const ssmResponse = await this.ssm.send(new GetParametersCommand({ Names: keys, WithDecryption: true }));
const ssmResponse = await this.ssm.send(
new GetParametersCommand({ Names: keys, WithDecryption: true })
);
const responseKeysToValues: Record<string, string> = {};

for (const parameter of ssmResponse.Parameters!) {
responseKeysToValues[parameter.Name!] = parameter.Value!;
}

return keys.map((key) => responseKeysToValues[key] || '');
return keys.map((key) => responseKeysToValues[key] || "");
}

private async loadAll() {
Expand All @@ -79,16 +88,28 @@ class SSMParameterStore<TParameters extends Record<string, string>> {
}

async preload(options: Options = { ignoreCache: false }) {
if (options.ignoreCache || Object.values(this.keyLoaded).some((keyLoadedState) => keyLoadedState === false)) {
if (
options.ignoreCache ||
Object.values(this.keyLoaded).some(
(keyLoadedState) => keyLoadedState === false
)
) {
return this.loadAll();
}
}

async get(name: keyof TParameters, options: Options = { ignoreCache: false }) {
async get(
name: keyof TParameters,
options: Options = { ignoreCache: false }
) {
const key = this.parameterNamesToKeys[name];

if (!key) {
throw new Error(`Unknown parameter ${String(name)}. Not in new SSMParameterStore({ }) declaration`);
throw new Error(
`Unknown parameter ${String(
name
)}. Not in new SSMParameterStore({ }) declaration`
);
}

if (options.ignoreCache || !this.keyLoaded[key]) {
Expand Down
20 changes: 10 additions & 10 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
const { SSMClient } = require('@aws-sdk/client-ssm');
const SsmParameterStore = require('./src');
const { SSMClient } = require("@aws-sdk/client-ssm");
const SsmParameterStore = require("./src");

async function main() {
const params = new SsmParameterStore(new SSMClient({ region: 'us-east-1' }), {
TestParameter: 'test_parameter',
TestNestedParameter: '/this/is/a/test/nested/parameter',
NonExistentParameter: 'doesntexist',
const params = new SsmParameterStore(new SSMClient({ region: "us-east-1" }), {
TestParameter: "test_parameter",
TestNestedParameter: "/this/is/a/test/nested/parameter",
NonExistentParameter: "doesntexist",
});

console.log(await params.get('NonExistentParameter'));
console.log(await params.get('TestNestedParameter'));
console.log(await params.get('TestNestedParameter', { ignoreCache: true }));
console.log(await params.get("NonExistentParameter"));
console.log(await params.get("TestNestedParameter"));
console.log(await params.get("TestNestedParameter", { ignoreCache: true }));

console.log(await params.getAll());

console.log(await params.getAll({ ignoreCache: true }));

console.log(await params.preload());

console.log(await params.get('UndeclaredParameter'));
console.log(await params.get("UndeclaredParameter"));
}

main();