UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

58 lines (56 loc) 1.84 kB
import { entries } from "./chunk-H2762RTS.mjs"; import { ifDefined } from "./chunk-JSON7A4X.mjs"; import { ofGet } from "./chunk-SJGQU3OG.mjs"; import { isA } from "./chunk-ZHXKBOK2.mjs"; import { isEmpty, isObject } from "./chunk-DEJ7A5PY.mjs"; // src/types/Json.ts var isJson = (subject) => isA(subject, "toJSON"); var json = { parse: (subject) => JSON.parse(JSON.stringify(subject ?? {})), merge: (...subjects) => json.parse(subjects.map((s) => asJson(s, (s2) => json.parse(s2))).reduce((js, j) => ({ ...js, ...j }), {})), delete: (subject, key) => { ifDefined(subject, () => delete subject[key]); return subject; }, set: (subject, key = "", value) => isEmpty(key) ? subject : value !== void 0 ? { ...subject, ...{ [key]: value } } : json.delete(subject, key), omit: (subject, ...keys) => keys.reduce((js, k) => json.delete(js, k), json.parse(subject)), pick: (subject, ...keys) => keys.reduce((js, k) => json.set(js, k, subject[k]), {}), defaults: (options = {}, defaults = {}) => json.merge(defaults, options), isSubset: (subject, subset) => !entries(subset).some(([k, v]) => subject[k] !== v) }; var toJson = json.merge; var asJson = (j, alt = {}) => isJson(j) ? j.toJSON() : isObject(j) ? j : ofGet(alt, j); var Any = class { constructor(value) { this.value = value; } merge = (...subjects) => any(json.merge(this.value, ...subjects)); delete = (key) => any(json.delete(this.value, key)); omit = (...keys) => any(json.omit(this.value, ...keys)); set = (key, value) => any(json.set(this.value, key, value)); toJSON() { return this.value; } }; var takeFirstKey = (j, alt = "") => entries(asJson(j)).first()?.[0] ?? alt; var any = (value) => new Any(value); export { isJson, json, toJson, asJson, takeFirstKey, any }; //# sourceMappingURL=chunk-KPEGHJSZ.mjs.map