Files
personal_site/frontend/node_modules/@aws-cdk/toolkit-lib/lib/util/json.js
T

68 lines
5.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getResultObj = getResultObj;
exports.findJsonValue = findJsonValue;
/**
* This gets the values of the jsonObject at the paths specified in propertiesToReturn.
*
* For example, jsonObject = {
* key1: 'abc',
* key2: {
* foo: 'qwerty',
* bar: 'data',
* }
* }
*
* propertiesToReturn = ['key1', 'key2.foo'];
*
* The returned object is:
*
* ```
* {
* key1: 'abc',
* 'key2.foo': 'qwerty',
* Identifier: identifier
* }
* ```
*/
function getResultObj(jsonObject, identifier, propertiesToReturn) {
const propsObj = {};
propertiesToReturn.forEach((propName) => {
Object.assign(propsObj, { [propName]: findJsonValue(jsonObject, propName) });
});
Object.assign(propsObj, { ['Identifier']: identifier });
return propsObj;
}
/**
* This finds the value of the jsonObject at the path. Path is delimited by '.'.
*
* For example, jsonObject = {
* key1: 'abc',
* key2: {
* foo: 'qwerty',
* bar: 'data',
* }
* }
*
* If path is 'key1', then it will return 'abc'.
* If path is 'key2.foo', then it will return 'qwerty'.
* If path is 'key2', then it will return the object:
* {
* foo: 'qwerty',
* bar: 'data',
* }
*
* If the path is not found, an Error will be thrown stating which token is missing.
*/
function findJsonValue(jsonObject, path) {
const paths = path.split('.');
let obj = jsonObject;
paths.forEach(p => {
obj = obj[p];
if (obj === undefined) {
throw new TypeError(`Cannot read field ${path}. ${p} is not found.`);
}
});
return obj;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1QkEsb0NBT0M7QUF1QkQsc0NBVUM7QUEvREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxTQUFnQixZQUFZLENBQUMsVUFBZSxFQUFFLFVBQWtCLEVBQUUsa0JBQTRCO0lBQzVGLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4RCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLFVBQWUsRUFBRSxJQUFZO0lBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDO0lBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxTQUFTLENBQUMscUJBQXFCLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGdldHMgdGhlIHZhbHVlcyBvZiB0aGUganNvbk9iamVjdCBhdCB0aGUgcGF0aHMgc3BlY2lmaWVkIGluIHByb3BlcnRpZXNUb1JldHVybi5cbiAqXG4gKiBGb3IgZXhhbXBsZSwganNvbk9iamVjdCA9IHtcbiAqICAga2V5MTogJ2FiYycsXG4gKiAgIGtleTI6IHtcbiAqICAgICBmb286ICdxd2VydHknLFxuICogICAgIGJhcjogJ2RhdGEnLFxuICogICB9XG4gKiB9XG4gKlxuICogcHJvcGVydGllc1RvUmV0dXJuID0gWydrZXkxJywgJ2tleTIuZm9vJ107XG4gKlxuICogVGhlIHJldHVybmVkIG9iamVjdCBpczpcbiAqXG4gKiBgYGBcbiAqIHtcbiAqICAga2V5MTogJ2FiYycsXG4gKiAgICdrZXkyLmZvbyc6ICdxd2VydHknLFxuICogICBJZGVudGlmaWVyOiBpZGVudGlmaWVyXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3VsdE9iaihqc29uT2JqZWN0OiBhbnksIGlkZW50aWZpZXI6IHN0cmluZywgcHJvcGVydGllc1RvUmV0dXJuOiBzdHJpbmdbXSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICBjb25zdCBwcm9wc09iaiA9IHt9O1xuICBwcm9wZXJ0aWVzVG9SZXR1cm4uZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKHByb3BzT2JqLCB7IFtwcm9wTmFtZV06IGZpbmRKc29uVmFsdWUoanNvbk9iamVjdCwgcHJvcE5hbWUpIH0pO1xuICB9KTtcbiAgT2JqZWN0LmFzc2lnbihwcm9wc09iaiwgeyBbJ0lkZW50aWZpZXInXTogaWRlbnRpZmllciB9KTtcbiAgcmV0dXJuIHByb3BzT2JqO1xufVxuXG4vKipcbiAqIFRoaXMgZmluZHMgdGhlIHZhbHVlIG9mIHRoZSBqc29uT2JqZWN0IGF0IHRoZSBwYXRoLiAgUGF0aCBpcyBkZWxpbWl0ZWQgYnkgJy4nLlxuICpcbiAqIEZvciBleGFtcGxlLCBqc29uT2JqZWN0ID0ge1xuICogICBrZXkxOiAnYWJjJyxcbiAqICAga2V5Mjoge1xuICogICAgIGZvbzogJ3F3ZXJ0eScsXG4gKiAgICAgYmFyOiAnZGF0YScsXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBJZiBwYXRoIGlzICdrZXkxJywgdGhlbiBpdCB3aWxsIHJldHVybiAnYWJjJy5cbiAqIElmIHBhdGggaXMgJ2tleTIuZm9vJywgdGhlbiBpdCB3aWxsIHJldHVybiAncXdlcnR5Jy5cbiAqIElmIHBhdGggaXMgJ2tleTInLCB0aGVuIGl0IHdpbGwgcmV0dXJuIHRoZSBvYmplY3Q6XG4gKiB7XG4gKiAgIGZvbzogJ3F3ZXJ0eScsXG4gKiAgIGJhcjogJ2RhdGEnLFxuICogfVxuICpcbiAqIElmIHRoZSBwYXRoIGlzIG5vdCBmb3VuZCwgYW4gRXJyb3Igd2lsbCBiZSB0aHJvd24gc3RhdGluZyB3aGljaCB0b2tlbiBpcyBtaXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEpzb25WYWx1ZShqc29uT2JqZWN0OiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XG4gIGNvbnN0IHBhdGhzID0gcGF0aC5zcGxpdCgnLicpO1xuICBsZXQgb2JqID0ganNvbk9iamVjdDtcbiAgcGF0aHMuZm9yRWFjaChwID0+IHtcbiAgICBvYmogPSBvYmpbcF07XG4gICAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgcmVhZCBmaWVsZCAke3BhdGh9LiAke3B9IGlzIG5vdCBmb3VuZC5gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb2JqO1xufVxuIl19