UNPKG

@dsmrt/axiom-aws-sdk

Version:

AWS sdk library for working with axiom cli

102 lines (100 loc) 2.59 kB
// src/ssm-parameters.ts import { SSMClient, GetParametersByPathCommand, GetParametersCommand } from "@aws-sdk/client-ssm"; var ssmClient = new SSMClient({}); var getParametersByPath = async (path, parameters, nextToken, client) => { client ??= ssmClient; let returnParams = parameters || []; const command = new GetParametersByPathCommand({ Path: path, Recursive: true, WithDecryption: true, NextToken: nextToken }); const output = await client.send(command); if (output.Parameters !== void 0) { returnParams = [...returnParams, ...output.Parameters]; } if (output.NextToken !== void 0) { return getParametersByPath(path, returnParams, output.NextToken, client); } return returnParams; }; var getParameters = async (names, client) => { client ??= ssmClient; const command = new GetParametersCommand({ Names: names, WithDecryption: true }); const result = await client.send(command); if (result.Parameters === void 0) { return []; } return result.Parameters; }; var extractParamValue = (path, name, params) => { const fullName = `${path.replace(/\/$/, "")}/${name}`; const item = params.find((item2) => item2.Name === fullName); if (!item || !item.Value) { throw new Error(`Parameter '${fullName}' is not set.`); } return item.Value; }; // src/ssm-parameter-collection.ts var ParameterCollection = class { constructor(path, client) { this.path = path; this.client = client; } map = /* @__PURE__ */ new Map(); async hasParam(param) { if (this.map.size < 1) { await this.loadParameters(); } return this.map.has(param); } async findParam(param) { if (this.map.size < 1) { await this.loadParameters(); } return this.map.get(param); } async getParam(param) { if (!await this.hasParam(param)) { throw new Error(`Parameter '${param.toString()}' does not exist'`); } return this.map.get(param); } async get() { if (this.map.size < 1) { await this.loadParameters(); } return this.map; } async loadParameters() { if (!this.path) { throw new Error(`Parameter path is not set or is undefined`); } const params = await getParametersByPath( this.path, void 0, void 0, this.client ); params.forEach((param) => { const fullName = param.Name; const name = fullName.replace(`${this.path}/`, ""); this.map.set(name, param); }); } }; export { ParameterCollection, extractParamValue, getParameters, getParametersByPath, ssmClient };