UNPKG

@tangential/core

Version:

Core types and support code for Tangential

63 lines 7.48 kB
export class ObjMapUtil { static fromKeyedEntityArray(values, keyField = '$key') { values = values || []; const m = {}; for (let i = 0; i < values.length; i++) { m[values[i][keyField]] = values[i]; } return m; } static toArray(map) { return Object.keys(map).map((key) => { return map[key]; }); } static toKeyedEntityArray(map, keyField = '$key') { return Object.keys(map).map((key) => { const keyObj = {}; // semicolon actually required here. keyObj[keyField] = key; return Object.assign({}, map[key], keyObj); }); } static toTruthMap(map) { const result = {}; Object.keys(map).forEach((key) => { result[key] = true; }); return result; } static addAll(map, mapB, noOverwrite = false) { map = map || {}; mapB = mapB || {}; Object.keys(mapB).forEach((key) => { if (noOverwrite && map[key] !== undefined) { throw new Error(`Key already exists on map, cannot replace: ${key}.`); } map[key] = mapB[key]; }); return map; } static removeAll(map, mapB) { Object.keys(mapB).forEach((key) => { if (map[key] !== undefined) { delete map[key]; } }); } /** * Remove the child fields from the provided map. * @param map * @param fields {string[]} * @returns {ObjMap<V>} */ static deleteValueFields(map, fields = ['$key']) { map = map || {}; fields.forEach((fieldKey) => { Object.keys(map).forEach((key) => { delete map[key][fieldKey]; }); }); return map; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqLW1hcC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ2VudGlhbC9jb3JlL3NyYy9saWIvbGFuZy9vYmotbWFwLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLFVBQVU7SUFFckIsTUFBTSxDQUFDLG9CQUFvQixDQUFJLE1BQVcsRUFBRSxXQUFtQixNQUFNO1FBQ25FLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFBO1FBQ3JCLE1BQU0sQ0FBQyxHQUFjLEVBQUUsQ0FBQTtRQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxDQUFTLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JEO1FBQ0QsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBSSxHQUFjO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUksR0FBYyxFQUFFLFdBQW1CLE1BQU07UUFDcEUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztZQUN0RCxNQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFBO1lBQy9CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzVDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUksR0FBYztRQUNqQyxNQUFNLE1BQU0sR0FBb0IsRUFBRSxDQUFBO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUksR0FBYyxFQUFFLElBQWUsRUFBRSxjQUF1QixLQUFLO1FBQzVFLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFBO1FBQ2YsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN4QyxJQUFJLFdBQVcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxHQUFHLEdBQUcsQ0FBQyxDQUFBO2FBQ3RFO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUksR0FBYyxFQUFFLElBQWU7UUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN4QyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQzFCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2hCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUksR0FBYyxFQUFFLFNBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ3JFLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFBO1FBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQy9CLE9BQVEsR0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3BDLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JqTWFwfSBmcm9tICcuL29iai1tYXAnXG5leHBvcnQgY2xhc3MgT2JqTWFwVXRpbCB7XG5cbiAgc3RhdGljIGZyb21LZXllZEVudGl0eUFycmF5PFY+KHZhbHVlczogVltdLCBrZXlGaWVsZDogc3RyaW5nID0gJyRrZXknKTogT2JqTWFwPFY+IHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMgfHwgW11cbiAgICBjb25zdCBtOiBPYmpNYXA8Vj4gPSB7fVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAobSBhcyBhbnkpWyh2YWx1ZXNbaV0gYXMgYW55KVtrZXlGaWVsZF1dID0gdmFsdWVzW2ldXG4gICAgfVxuICAgIHJldHVybiBtXG4gIH1cblxuICBzdGF0aWMgdG9BcnJheTxWPihtYXA6IE9iak1hcDxWPik6IFZbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKChrZXkpID0+IHtcbiAgICAgIHJldHVybiBtYXBba2V5XVxuICAgIH0pXG4gIH1cblxuICBzdGF0aWMgdG9LZXllZEVudGl0eUFycmF5PFY+KG1hcDogT2JqTWFwPFY+LCBrZXlGaWVsZDogc3RyaW5nID0gJyRrZXknKTogVltdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3Qga2V5T2JqID0ge307IC8vIHNlbWljb2xvbiBhY3R1YWxseSByZXF1aXJlZCBoZXJlLlxuICAgICAgKGtleU9iaiBhcyBhbnkpW2tleUZpZWxkXSA9IGtleVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG1hcFtrZXldLCBrZXlPYmopXG4gICAgfSlcbiAgfVxuXG4gIHN0YXRpYyB0b1RydXRoTWFwPFY+KG1hcDogT2JqTWFwPFY+KTogT2JqTWFwPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXN1bHQ6IE9iak1hcDxib29sZWFuPiA9IHt9XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHJlc3VsdFtrZXldID0gdHJ1ZVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgc3RhdGljIGFkZEFsbDxWPihtYXA6IE9iak1hcDxWPiwgbWFwQjogT2JqTWFwPFY+LCBub092ZXJ3cml0ZTogYm9vbGVhbiA9IGZhbHNlKTogT2JqTWFwPFY+IHtcbiAgICBtYXAgPSBtYXAgfHwge31cbiAgICBtYXBCID0gbWFwQiB8fCB7fVxuICAgIE9iamVjdC5rZXlzKG1hcEIpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobm9PdmVyd3JpdGUgJiYgbWFwW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSBhbHJlYWR5IGV4aXN0cyBvbiBtYXAsIGNhbm5vdCByZXBsYWNlOiAke2tleX0uYClcbiAgICAgIH1cbiAgICAgIG1hcFtrZXldID0gbWFwQltrZXldXG4gICAgfSlcbiAgICByZXR1cm4gbWFwXG4gIH1cblxuICBzdGF0aWMgcmVtb3ZlQWxsPFY+KG1hcDogT2JqTWFwPFY+LCBtYXBCOiBPYmpNYXA8Vj4pIHtcbiAgICBPYmplY3Qua2V5cyhtYXBCKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKG1hcFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIG1hcFtrZXldXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGNoaWxkIGZpZWxkcyBmcm9tIHRoZSBwcm92aWRlZCBtYXAuXG4gICAqIEBwYXJhbSBtYXBcbiAgICogQHBhcmFtIGZpZWxkcyB7c3RyaW5nW119XG4gICAqIEByZXR1cm5zIHtPYmpNYXA8Vj59XG4gICAqL1xuICBzdGF0aWMgZGVsZXRlVmFsdWVGaWVsZHM8Vj4obWFwOiBPYmpNYXA8Vj4sIGZpZWxkczogc3RyaW5nW10gPSBbJyRrZXknXSk6IE9iak1hcDxWPiB7XG4gICAgbWFwID0gbWFwIHx8IHt9XG4gICAgZmllbGRzLmZvckVhY2goKGZpZWxkS2V5KSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkZWxldGUgKG1hcCBhcyBhbnkpW2tleV1bZmllbGRLZXldXG4gICAgICB9KVxuICAgIH0pXG4gICAgcmV0dXJuIG1hcFxuICB9XG59XG4iXX0=