@cleverapps/secrets-client
v1.0.1
Published
Client for the infiscal secrets service: get a secret by key, a batch by keys, or resolve secrets:// references in a json, with a ttl cache
Keywords
Readme
Installation
npm i @cleverapps/secrets-clientUsage
The client talks to the infiscal secrets service (cleverapps/microservices/infiscal): secrets.cleverappssg.com,
secrets.labsystech.ru (release) or secrets-staging.labsystech.ru (staging). Keys are <project>.<field>, e.g.
mergecraft.instantAppSecret, common.xsollaAuthKey.
const SecretsClient = require("@cleverapps/secrets-client"); // or require("cleverapps/common/secrets-client") inside the monorepo
const secrets = new SecretsClient({
url: process.env.secretsApiURL,
token: process.env.secretsToken,
ttl: 300 // seconds a value stays in the cache, default 300; 0 = no cache
});One secret
const value = await secrets.get("mergecraft.instantAppSecret"); // undefined when the key is unknownSeveral secrets in one request
const { values, missing } = await secrets.list(["mergecraft.instantAppSecret", "common.xsollaAuthKey"]);
// values = { "mergecraft.instantAppSecret": "...", "common.xsollaAuthKey": "..." }, missing = []Resolve a whole json: every string secrets://<project>/<key> (or secrets://<project>.<key>) is replaced in place,
all of them in one request. Unresolved references are kept as they are and listed in missing.
const config = {
instant: { appId: "229012", appSecret: "secrets://mergecraft/instantAppSecret" },
xsolla: { authKey: "secrets://common/xsollaAuthKey" }
};
const { missing } = await secrets.resolve(config);
SecretsClient.collectRefs(config); // ["secrets://mergecraft/instantAppSecret", "secrets://common/xsollaAuthKey"] - the references, without resolvingValues come back as stored - a string, or a json object when the secret is one. Values are cached for ttl seconds, parallel requests for the same key share one HTTP call, a missing key is
never cached. Transport errors, timeouts (timeout option, default 10s) and non-2xx answers other than 404 throw.
secrets.clear() drops the cache.
Test
npm test