diff --git a/package-lock.json b/package-lock.json index d360e80..86b1c3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "got": "^11.8.5", - "jsonata": "^1.8.6", + "jsonata": "^2.0.2", "jsrsasign": "^10.6.1" }, "devDependencies": { @@ -3119,9 +3119,9 @@ } }, "node_modules/jsonata": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", - "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.2.tgz", + "integrity": "sha512-CpwbpFNjuuukU+tIR6Qw+fhwQQ5iZGbB/Md8CVaU7/b/SI1RlQQVgf4rIEjoiG9/jDB7C45nKKwHXWKHQxvb7w==", "engines": { "node": ">= 8" } @@ -6694,9 +6694,9 @@ "dev": true }, "jsonata": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", - "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.2.tgz", + "integrity": "sha512-CpwbpFNjuuukU+tIR6Qw+fhwQQ5iZGbB/Md8CVaU7/b/SI1RlQQVgf4rIEjoiG9/jDB7C45nKKwHXWKHQxvb7w==" }, "jsrsasign": { "version": "10.6.1", diff --git a/package.json b/package.json index 56b7b36..0ada527 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "homepage": "https://github.com/hashicorp/vault-action#readme", "dependencies": { "got": "^11.8.5", - "jsonata": "^1.8.6", + "jsonata": "^2.0.2", "jsrsasign": "^10.6.1" }, "peerDependencies": { diff --git a/src/secrets.js b/src/secrets.js index 3834f6d..875249b 100644 --- a/src/secrets.js +++ b/src/secrets.js @@ -55,7 +55,7 @@ async function getSecrets(secretRequests, client) { selector = "data." + selector } - const value = selectData(body, selector); + const value = await selectData(body, selector); results.push({ request: secretRequest, value, @@ -70,12 +70,12 @@ async function getSecrets(secretRequests, client) { * @param {object} data * @param {string} selector */ -function selectData(data, selector) { +async function selectData(data, selector) { const ata = jsonata(selector); - let result = JSON.stringify(ata.evaluate(data)); + let result = JSON.stringify(await ata.evaluate(data)); // Compat for custom engines if (!result && ((ata.ast().type === "path" && ata.ast()['steps'].length === 1) || ata.ast().type === "string") && selector !== 'data' && 'data' in data) { - result = JSON.stringify(jsonata(`data.${selector}`).evaluate(data)); + result = JSON.stringify(await jsonata(`data.${selector}`).evaluate(data)); } else if (!result) { throw Error(`Unable to retrieve result for ${selector}. No match data was found. Double check your Key or Selector.`); }