@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
1 lines • 1.77 kB
Source Map (JSON)
{"version":3,"sources":["../src/utils/Traverse.ts"],"sourcesContent":["import { AnyKey } from '../types/AnyKey';\n\nexport const traverse = (subject: unknown, property = ''): unknown => {\n subject ??= {};\n const props = property.split('.');\n const p = props.shift() as string;\n return props.length === 0 ? (subject as any)[p] : traverse((subject as any)[p], props.join('.'));\n};\n\nexport const traverseSet = <T>(subject: T, property: AnyKey<T>, value: unknown): unknown => {\n const props = property.split('.');\n const p = props.shift() as string;\n return {\n ...(subject as any),\n [p]: props.length === 0 ? value : traverseSet((subject as any)[p], props.join('.'), value),\n } as T;\n};\n\nexport const accumulate = <T>(items: T[], ...keys: AnyKey<T>[]): T[] =>\n items.map((t, i, arr) => {\n const acc = keys.reduce(\n (acc, v) => traverseSet(acc, v, i === 0 ? traverse(t, v) : (traverse(arr[i - 1], v) as number) + (traverse(t, v) as number)) as T,\n t\n );\n arr[i] = acc;\n return acc;\n });\n"],"mappings":";AAEO,IAAM,WAAW,CAAC,SAAkB,WAAW,OAAgB;AACpE,cAAY,CAAC;AACb,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAM,IAAI,MAAM,MAAM;AACtB,SAAO,MAAM,WAAW,IAAK,QAAgB,CAAC,IAAI,SAAU,QAAgB,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC;AACjG;AAEO,IAAM,cAAc,CAAI,SAAY,UAAqB,UAA4B;AAC1F,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAM,IAAI,MAAM,MAAM;AACtB,SAAO;AAAA,IACL,GAAI;AAAA,IACJ,CAAC,CAAC,GAAG,MAAM,WAAW,IAAI,QAAQ,YAAa,QAAgB,CAAC,GAAG,MAAM,KAAK,GAAG,GAAG,KAAK;AAAA,EAC3F;AACF;AAEO,IAAM,aAAa,CAAI,UAAe,SAC3C,MAAM,IAAI,CAAC,GAAG,GAAG,QAAQ;AACvB,QAAM,MAAM,KAAK;AAAA,IACf,CAACA,MAAK,MAAM,YAAYA,MAAK,GAAG,MAAM,IAAI,SAAS,GAAG,CAAC,IAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAgB,SAAS,GAAG,CAAC,CAAY;AAAA,IAC3H;AAAA,EACF;AACA,MAAI,CAAC,IAAI;AACT,SAAO;AACT,CAAC;","names":["acc"]}