UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

91 lines (89 loc) 2.64 kB
import { traverse } from "./chunk-SSROJBD5.mjs"; import { isEqual } from "./chunk-ONMLG5EJ.mjs"; import { isPageList, toPageList } from "./chunk-TORB7XB3.mjs"; import { asJson, json } from "./chunk-KPEGHJSZ.mjs"; import { choose } from "./chunk-XAIHCZT4.mjs"; import { meta } from "./chunk-WTFW6DLP.mjs"; import { ifDefined } from "./chunk-JSON7A4X.mjs"; import { isConstructor, use } from "./chunk-ZPNFXK7Y.mjs"; import { isArray, isBoolean, isFunction, isString } from "./chunk-DEJ7A5PY.mjs"; // src/utils/View.ts var ignore = Symbol("view.ignore"); var keep = Symbol("view.keep"); var toViewer = (key, value) => choose(value).is.not.defined((v) => v, { key, f: () => void 0 }).type(isBoolean, (b) => ({ key, f: () => b })).equals(ignore, { key, f: () => void 0 }).equals(keep, { key, f: (a) => traverse(a, key) }).type(isString, (s) => ({ key, f: (a) => traverse(a, s) })).type(isConstructor, (c) => ({ key, f: (a, key2) => use(traverse(a, key2), (v) => isArray(v) ? v.map((i) => optional(c, i)) : optional(c, v)) })).type(isSimpleView, (f) => ({ key, f: (a) => f.from(traverse(a, key)) })).type(isFunction, (f) => ({ key, f })).else((v) => ({ key, f: () => v })); var optional = (c, v) => ifDefined( v, (i) => new c(i), () => v ); var toViewers = (views2) => meta(views2).entries().map(([k, v]) => toViewer(k, v)); var View = class _View { constructor(views2 = {}, startsFrom = "scratch", viewers = toViewers(views2)) { this.views = views2; this.startsFrom = startsFrom; this.viewers = viewers; } get fromSource() { return new _View(this.views, "source", this.viewers); } from(source) { if (isPageList(source)) return toPageList( source.map((s) => this.reduce(s)), source.options ); if (isArray(source)) return source.map((s) => this.reduce(s)); return this.reduce(source); } same = (one, another) => isEqual(this.from(one), this.from(another)); reduce = (source) => use(asJson(source), (src) => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === "scratch" ? {} : src)); }; var isSimpleView = (a) => a instanceof View; var view = (views2) => new View(views2); var views = { ignore, keep, skip: ignore, value: (value) => () => value, or: { key: (altKey) => (a, key) => traverse(a, key) ?? traverse(a, altKey), value: (altValue) => (a, key) => traverse(a, key) ?? altValue, func: (altFunc) => (a, key) => traverse(a, key) ?? altFunc(a, key) } }; export { toViewer, View, isSimpleView, view, views }; //# sourceMappingURL=chunk-6G7SOGFB.mjs.map