@bessemer/cornerstone 0.5.82 → 0.5.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/error.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- export declare const isError: (value: any) => value is Error;
1
+ export declare const isError: (value: unknown) => value is Error;
2
+ export declare const getCausalChain: (error: Error) => Array<Error>;
2
3
  export declare const findInCausalChain: (error: Error, predicate: (error: Error) => boolean) => Error | undefined;
3
4
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,gCAAW,CAAA;AAE/B,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAU9F,CAAA"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAEjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,CAexD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAE9F,CAAA"}
package/dist/error.js CHANGED
@@ -1,18 +1,26 @@
1
1
  // src/error.ts
2
- import { isError as _isError } from "lodash-es";
3
2
  import { isPresent } from "@bessemer/cornerstone/object";
4
- var isError = _isError;
5
- var findInCausalChain = (error, predicate) => {
6
- if (predicate(error)) {
7
- return error;
8
- }
9
- if (isPresent(error.cause) && error.cause instanceof Error) {
10
- return findInCausalChain(error.cause, predicate);
3
+ var isError = (value) => {
4
+ return value instanceof Error;
5
+ };
6
+ var getCausalChain = (error) => {
7
+ const chain = [];
8
+ let current = error;
9
+ while (true) {
10
+ chain.push(current);
11
+ if (!isPresent(current.cause) || !isError(current.cause)) {
12
+ break;
13
+ }
14
+ current = current.cause;
11
15
  }
12
- return void 0;
16
+ return chain;
17
+ };
18
+ var findInCausalChain = (error, predicate) => {
19
+ return getCausalChain(error).find(predicate);
13
20
  };
14
21
  export {
15
22
  findInCausalChain,
23
+ getCausalChain,
16
24
  isError
17
25
  };
18
26
  //# sourceMappingURL=error.js.map
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error.ts"],"sourcesContent":["import { isError as _isError } from 'lodash-es'\nimport { isPresent } from '@bessemer/cornerstone/object'\nimport { Throwable } from '@bessemer/cornerstone/types'\n\nexport const isError = _isError\n\nexport const findInCausalChain = (error: Error, predicate: (error: Error) => boolean): Error | undefined => {\n if (predicate(error)) {\n return error\n }\n\n if (isPresent(error.cause) && error.cause instanceof Error) {\n return findInCausalChain(error.cause, predicate)\n }\n\n return undefined\n}\n\nconst serializeError = (error: Throwable): any => {\n if (!isPresent(error)) {\n return undefined\n }\n\n if (!isError(error)) {\n return error\n }\n\n const cause = isPresent(error.cause) ? serializeError(error.cause) : undefined\n\n const serialized = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n cause,\n }\n\n return serialized\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,iBAAiB;AAGnB,IAAM,UAAU;AAEhB,IAAM,oBAAoB,CAAC,OAAc,cAA4D;AAC1G,MAAI,UAAU,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM,KAAK,KAAK,MAAM,iBAAiB,OAAO;AAC1D,WAAO,kBAAkB,MAAM,OAAO,SAAS;AAAA,EACjD;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/error.ts"],"sourcesContent":["import { isPresent } from '@bessemer/cornerstone/object'\nimport { Throwable } from '@bessemer/cornerstone/types'\n\nexport const isError = (value: unknown): value is Error => {\n return value instanceof Error\n}\n\nexport const getCausalChain = (error: Error): Array<Error> => {\n const chain: Array<Error> = []\n let current: Error = error\n\n while (true) {\n chain.push(current)\n\n if (!isPresent(current.cause) || !isError(current.cause)) {\n break\n }\n\n current = current.cause\n }\n\n return chain\n}\n\nexport const findInCausalChain = (error: Error, predicate: (error: Error) => boolean): Error | undefined => {\n return getCausalChain(error).find(predicate)\n}\n\nconst serializeError = (error: Throwable): any => {\n if (!isPresent(error)) {\n return undefined\n }\n\n if (!isError(error)) {\n return error\n }\n\n const cause = isPresent(error.cause) ? serializeError(error.cause) : undefined\n\n const serialized = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n cause,\n }\n\n return serialized\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAGnB,IAAM,UAAU,CAAC,UAAmC;AACzD,SAAO,iBAAiB;AAC1B;AAEO,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM,QAAsB,CAAC;AAC7B,MAAI,UAAiB;AAErB,SAAO,MAAM;AACX,UAAM,KAAK,OAAO;AAElB,QAAI,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC,QAAQ,QAAQ,KAAK,GAAG;AACxD;AAAA,IACF;AAEA,cAAU,QAAQ;AAAA,EACpB;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAC,OAAc,cAA4D;AAC1G,SAAO,eAAe,KAAK,EAAE,KAAK,SAAS;AAC7C;","names":[]}
package/dist/map.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import { Entry } from '@bessemer/cornerstone/entry';
2
+ import { Dictionary } from '@bessemer/cornerstone/types';
3
+ export declare const from: <ValueType>(record: Dictionary<ValueType>) => Map<string, ValueType>;
4
+ export declare const fromEntries: <KeyType extends string | number | symbol, ValueType>(entries: Array<Entry<KeyType, ValueType>>) => Map<KeyType, ValueType>;
2
5
  export declare const groupBy: <CollectionType, KeyType>(iterable: Iterable<CollectionType>, mapper: (it: CollectionType) => KeyType) => Map<KeyType, Array<CollectionType>>;
3
6
  export declare const fuse: <KeyType, FuseType, ValueType>(target: Map<KeyType, FuseType>, valuesMap: Map<FuseType, ValueType>) => Map<KeyType, ValueType>;
4
7
  export declare const mapKeys: <KeyType, ValueType, NewKeyType>(target: Map<KeyType, ValueType>, mapper: (key: KeyType) => NewKeyType) => Map<NewKeyType, ValueType>;
package/dist/map.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"}
package/dist/map.js CHANGED
@@ -2,6 +2,12 @@
2
2
  import { concatenate as arrayConcatenate } from "@bessemer/cornerstone/array";
3
3
  import { assert, assertPresent } from "@bessemer/cornerstone/assertion";
4
4
  import { Objects } from "@bessemer/cornerstone/index";
5
+ var from = (record) => {
6
+ return fromEntries(Object.entries(record));
7
+ };
8
+ var fromEntries = (entries) => {
9
+ return collect(entries, (it) => it);
10
+ };
5
11
  var groupBy = (iterable, mapper) => {
6
12
  return collect(
7
13
  iterable,
@@ -108,6 +114,8 @@ export {
108
114
  concatenateInto,
109
115
  filter,
110
116
  filterFrom,
117
+ from,
118
+ fromEntries,
111
119
  fuse,
112
120
  groupBy,
113
121
  map,
package/dist/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.ts"],"sourcesContent":["import { Entry } from '@bessemer/cornerstone/entry'\nimport { concatenate as arrayConcatenate } from '@bessemer/cornerstone/array'\nimport { assert, assertPresent } from '@bessemer/cornerstone/assertion'\nimport { Objects } from '@bessemer/cornerstone/index'\n\nexport const groupBy = <CollectionType, KeyType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => KeyType\n): Map<KeyType, Array<CollectionType>> => {\n return collect(\n iterable,\n (it) => [mapper(it), [it]],\n (_, first, second) => arrayConcatenate(first, second)\n )\n}\n\nexport const fuse = <KeyType, FuseType, ValueType>(target: Map<KeyType, FuseType>, valuesMap: Map<FuseType, ValueType>): Map<KeyType, ValueType> => {\n return mapValues(target, (value) => {\n const newValue = valuesMap.get(value)\n assertPresent(newValue, () => `Maps.fuse - Encountered missing linkage: ${value}`)\n return newValue\n })\n}\n\nexport const mapKeys = <KeyType, ValueType, NewKeyType>(\n target: Map<KeyType, ValueType>,\n mapper: (key: KeyType) => NewKeyType\n): Map<NewKeyType, ValueType> => {\n return map(target, ([key, value]) => [mapper(key), value])\n}\n\nexport const mapValues = <KeyType, ValueType, NewValueType>(\n target: Map<KeyType, ValueType>,\n mapper: (value: ValueType) => NewValueType\n): Map<KeyType, NewValueType> => {\n return map(target, ([key, value]) => [key, mapper(value)])\n}\n\nexport const map = <KeyType, ValueType, NewKeyType, NewValueType>(\n target: Map<KeyType, ValueType>,\n mapper: (entry: Entry<KeyType, ValueType>) => Entry<NewKeyType, NewValueType>\n): Map<NewKeyType, NewValueType> => {\n return collect(target.entries(), mapper, (key) => {\n throw new Error(`Maps.transform - Encountered illegal duplicate collection value: ${key}`)\n })\n}\n\nexport const collectKeys = <CollectionType, KeyType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => KeyType\n): Map<KeyType, CollectionType> => {\n return collect(\n iterable,\n (it) => [mapper(it), it],\n (key) => {\n throw new Error(`Maps.collectKeys - Encountered illegal duplicate collection value: ${key}`)\n }\n )\n}\n\nexport const collectValues = <CollectionType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => ValueType\n): Map<CollectionType, ValueType> => {\n return collect(\n iterable,\n (it) => [it, mapper(it)],\n (key) => {\n throw new Error(`Maps.mapValues - Encountered illegal duplicate collection value: ${key}`)\n }\n )\n}\n\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>\n): Map<KeyType, ValueType>\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>,\n reducer: (key: KeyType, first: ValueType, second: ValueType) => ValueType\n): Map<KeyType, ValueType>\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>,\n reducer?: (key: KeyType, first: ValueType, second: ValueType) => ValueType\n): Map<KeyType, ValueType> {\n const result = new Map<KeyType, ValueType>()\n\n for (const item of iterable) {\n const [key, value] = mapEntry(item)\n\n if (result.has(key)) {\n if (Objects.isNil(reducer)) {\n throw new Error(`Maps.collect - Encountered illegal duplicate collection key: ${key}`)\n }\n\n const existingValue = result.get(key)!\n const reducedValue = reducer(key, existingValue, value)\n result.set(key, reducedValue)\n } else {\n result.set(key, value)\n }\n }\n\n return result\n}\n\nexport const append = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>): Map<KeyType, ValueType> => {\n const result = new Map(map.entries())\n appendInto(result, ...values)\n return result\n}\n\nexport const appendInto = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>): void => {\n for (const [key, value] of values) {\n assert(!map.has(key), () => `Maps.append - Encountered illegal duplicate key: ${key}`)\n map.set(key, value)\n }\n}\n\nexport const concatenate = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>): Map<KeyType, ValueType> => {\n const result = new Map(map)\n concatenateInto(result, ...values)\n return result\n}\n\nexport const concatenateInto = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>): void => {\n for (const otherMap of values) {\n for (const [key, value] of otherMap) {\n assert(!map.has(key), () => `Maps.concatenate - Encountered illegal duplicate key: ${key}`)\n map.set(key, value)\n }\n }\n}\n\nexport const filter = <KeyType, ValueType>(\n map: Map<KeyType, ValueType>,\n predicate: (entry: Entry<KeyType, ValueType>) => boolean\n): Map<KeyType, ValueType> => {\n const result = new Map(map)\n filterFrom(result, predicate)\n return result\n}\n\nexport const filterFrom = <KeyType, ValueType>(map: Map<KeyType, ValueType>, predicate: (entry: Entry<KeyType, ValueType>) => boolean): void => {\n for (const entry of map) {\n if (!predicate(entry)) {\n map.delete(entry[0])\n }\n }\n}\n"],"mappings":";AACA,SAAS,eAAe,wBAAwB;AAChD,SAAS,QAAQ,qBAAqB;AACtC,SAAS,eAAe;AAEjB,IAAM,UAAU,CACrB,UACA,WACwC;AACxC,SAAO;AAAA,IACL;AAAA,IACA,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAAA,IACzB,CAAC,GAAG,OAAO,WAAW,iBAAiB,OAAO,MAAM;AAAA,EACtD;AACF;AAEO,IAAM,OAAO,CAA+B,QAAgC,cAAiE;AAClJ,SAAO,UAAU,QAAQ,CAAC,UAAU;AAClC,UAAM,WAAW,UAAU,IAAI,KAAK;AACpC,kBAAc,UAAU,MAAM,4CAA4C,KAAK,EAAE;AACjF,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,UAAU,CACrB,QACA,WAC+B;AAC/B,SAAO,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,GAAG,GAAG,KAAK,CAAC;AAC3D;AAEO,IAAM,YAAY,CACvB,QACA,WAC+B;AAC/B,SAAO,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC;AAC3D;AAEO,IAAM,MAAM,CACjB,QACA,WACkC;AAClC,SAAO,QAAQ,OAAO,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAChD,UAAM,IAAI,MAAM,oEAAoE,GAAG,EAAE;AAAA,EAC3F,CAAC;AACH;AAEO,IAAM,cAAc,CACzB,UACA,WACiC;AACjC,SAAO;AAAA,IACL;AAAA,IACA,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;AAAA,IACvB,CAAC,QAAQ;AACP,YAAM,IAAI,MAAM,sEAAsE,GAAG,EAAE;AAAA,IAC7F;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,CAC3B,UACA,WACmC;AACnC,SAAO;AAAA,IACL;AAAA,IACA,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;AAAA,IACvB,CAAC,QAAQ;AACP,YAAM,IAAI,MAAM,oEAAoE,GAAG,EAAE;AAAA,IAC3F;AAAA,EACF;AACF;AAWO,SAAS,QACd,UACA,UACA,SACyB;AACzB,QAAM,SAAS,oBAAI,IAAwB;AAE3C,aAAW,QAAQ,UAAU;AAC3B,UAAM,CAAC,KAAK,KAAK,IAAI,SAAS,IAAI;AAElC,QAAI,OAAO,IAAI,GAAG,GAAG;AACnB,UAAI,QAAQ,MAAM,OAAO,GAAG;AAC1B,cAAM,IAAI,MAAM,gEAAgE,GAAG,EAAE;AAAA,MACvF;AAEA,YAAM,gBAAgB,OAAO,IAAI,GAAG;AACpC,YAAM,eAAe,QAAQ,KAAK,eAAe,KAAK;AACtD,aAAO,IAAI,KAAK,YAAY;AAAA,IAC9B,OAAO;AACL,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,SAAS,CAAqBA,SAAiC,WAAsE;AAChJ,QAAM,SAAS,IAAI,IAAIA,KAAI,QAAQ,CAAC;AACpC,aAAW,QAAQ,GAAG,MAAM;AAC5B,SAAO;AACT;AAEO,IAAM,aAAa,CAAqBA,SAAiC,WAAmD;AACjI,aAAW,CAAC,KAAK,KAAK,KAAK,QAAQ;AACjC,WAAO,CAACA,KAAI,IAAI,GAAG,GAAG,MAAM,oDAAoD,GAAG,EAAE;AACrF,IAAAA,KAAI,IAAI,KAAK,KAAK;AAAA,EACpB;AACF;AAEO,IAAM,cAAc,CAAqBA,SAAiC,WAAoE;AACnJ,QAAM,SAAS,IAAI,IAAIA,IAAG;AAC1B,kBAAgB,QAAQ,GAAG,MAAM;AACjC,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAqBA,SAAiC,WAAiD;AACpI,aAAW,YAAY,QAAQ;AAC7B,eAAW,CAAC,KAAK,KAAK,KAAK,UAAU;AACnC,aAAO,CAACA,KAAI,IAAI,GAAG,GAAG,MAAM,yDAAyD,GAAG,EAAE;AAC1F,MAAAA,KAAI,IAAI,KAAK,KAAK;AAAA,IACpB;AAAA,EACF;AACF;AAEO,IAAM,SAAS,CACpBA,MACA,cAC4B;AAC5B,QAAM,SAAS,IAAI,IAAIA,IAAG;AAC1B,aAAW,QAAQ,SAAS;AAC5B,SAAO;AACT;AAEO,IAAM,aAAa,CAAqBA,MAA8B,cAAmE;AAC9I,aAAW,SAASA,MAAK;AACvB,QAAI,CAAC,UAAU,KAAK,GAAG;AACrB,MAAAA,KAAI,OAAO,MAAM,CAAC,CAAC;AAAA,IACrB;AAAA,EACF;AACF;","names":["map"]}
1
+ {"version":3,"sources":["../src/map.ts"],"sourcesContent":["import { Entry } from '@bessemer/cornerstone/entry'\nimport { concatenate as arrayConcatenate } from '@bessemer/cornerstone/array'\nimport { assert, assertPresent } from '@bessemer/cornerstone/assertion'\nimport { Objects } from '@bessemer/cornerstone/index'\nimport { Dictionary } from '@bessemer/cornerstone/types'\n\nexport const from = <ValueType>(record: Dictionary<ValueType>): Map<string, ValueType> => {\n return fromEntries(Object.entries(record))\n}\n\nexport const fromEntries = <KeyType extends string | number | symbol, ValueType>(\n entries: Array<Entry<KeyType, ValueType>>\n): Map<KeyType, ValueType> => {\n return collect(entries, (it) => it)\n}\n\nexport const groupBy = <CollectionType, KeyType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => KeyType\n): Map<KeyType, Array<CollectionType>> => {\n return collect(\n iterable,\n (it) => [mapper(it), [it]],\n (_, first, second) => arrayConcatenate(first, second)\n )\n}\n\nexport const fuse = <KeyType, FuseType, ValueType>(target: Map<KeyType, FuseType>, valuesMap: Map<FuseType, ValueType>): Map<KeyType, ValueType> => {\n return mapValues(target, (value) => {\n const newValue = valuesMap.get(value)\n assertPresent(newValue, () => `Maps.fuse - Encountered missing linkage: ${value}`)\n return newValue\n })\n}\n\nexport const mapKeys = <KeyType, ValueType, NewKeyType>(\n target: Map<KeyType, ValueType>,\n mapper: (key: KeyType) => NewKeyType\n): Map<NewKeyType, ValueType> => {\n return map(target, ([key, value]) => [mapper(key), value])\n}\n\nexport const mapValues = <KeyType, ValueType, NewValueType>(\n target: Map<KeyType, ValueType>,\n mapper: (value: ValueType) => NewValueType\n): Map<KeyType, NewValueType> => {\n return map(target, ([key, value]) => [key, mapper(value)])\n}\n\nexport const map = <KeyType, ValueType, NewKeyType, NewValueType>(\n target: Map<KeyType, ValueType>,\n mapper: (entry: Entry<KeyType, ValueType>) => Entry<NewKeyType, NewValueType>\n): Map<NewKeyType, NewValueType> => {\n return collect(target.entries(), mapper, (key) => {\n throw new Error(`Maps.transform - Encountered illegal duplicate collection value: ${key}`)\n })\n}\n\nexport const collectKeys = <CollectionType, KeyType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => KeyType\n): Map<KeyType, CollectionType> => {\n return collect(\n iterable,\n (it) => [mapper(it), it],\n (key) => {\n throw new Error(`Maps.collectKeys - Encountered illegal duplicate collection value: ${key}`)\n }\n )\n}\n\nexport const collectValues = <CollectionType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapper: (it: CollectionType) => ValueType\n): Map<CollectionType, ValueType> => {\n return collect(\n iterable,\n (it) => [it, mapper(it)],\n (key) => {\n throw new Error(`Maps.mapValues - Encountered illegal duplicate collection value: ${key}`)\n }\n )\n}\n\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>\n): Map<KeyType, ValueType>\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>,\n reducer: (key: KeyType, first: ValueType, second: ValueType) => ValueType\n): Map<KeyType, ValueType>\nexport function collect<CollectionType, KeyType, ValueType>(\n iterable: Iterable<CollectionType>,\n mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>,\n reducer?: (key: KeyType, first: ValueType, second: ValueType) => ValueType\n): Map<KeyType, ValueType> {\n const result = new Map<KeyType, ValueType>()\n\n for (const item of iterable) {\n const [key, value] = mapEntry(item)\n\n if (result.has(key)) {\n if (Objects.isNil(reducer)) {\n throw new Error(`Maps.collect - Encountered illegal duplicate collection key: ${key}`)\n }\n\n const existingValue = result.get(key)!\n const reducedValue = reducer(key, existingValue, value)\n result.set(key, reducedValue)\n } else {\n result.set(key, value)\n }\n }\n\n return result\n}\n\nexport const append = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>): Map<KeyType, ValueType> => {\n const result = new Map(map.entries())\n appendInto(result, ...values)\n return result\n}\n\nexport const appendInto = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>): void => {\n for (const [key, value] of values) {\n assert(!map.has(key), () => `Maps.append - Encountered illegal duplicate key: ${key}`)\n map.set(key, value)\n }\n}\n\nexport const concatenate = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>): Map<KeyType, ValueType> => {\n const result = new Map(map)\n concatenateInto(result, ...values)\n return result\n}\n\nexport const concatenateInto = <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>): void => {\n for (const otherMap of values) {\n for (const [key, value] of otherMap) {\n assert(!map.has(key), () => `Maps.concatenate - Encountered illegal duplicate key: ${key}`)\n map.set(key, value)\n }\n }\n}\n\nexport const filter = <KeyType, ValueType>(\n map: Map<KeyType, ValueType>,\n predicate: (entry: Entry<KeyType, ValueType>) => boolean\n): Map<KeyType, ValueType> => {\n const result = new Map(map)\n filterFrom(result, predicate)\n return result\n}\n\nexport const filterFrom = <KeyType, ValueType>(map: Map<KeyType, ValueType>, predicate: (entry: Entry<KeyType, ValueType>) => boolean): void => {\n for (const entry of map) {\n if (!predicate(entry)) {\n map.delete(entry[0])\n }\n }\n}\n"],"mappings":"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","names":["map"]}
@@ -35,5 +35,5 @@ export type ObjectDiff<N> = Array<ObjectDiffEntry<N>>;
35
35
  export declare const add: <N>() => <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, value: TypePathGet<T, N>) => AddObjectDiff<N, T>;
36
36
  export declare const remove: <N>() => <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, originalValue: TypePathGet<T, N>) => RemoveObjectDiff<N, T>;
37
37
  export declare const update: <N>() => <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, value: TypePathGet<T, N>, originalValue: TypePathGet<T, N>) => UpdateObjectDiff<N, T>;
38
- export declare const matchesPath: <N, T extends TypePathType>(diff: ObjectDiffEntry<N>, path: TypePath<T>) => diff is ObjectDiffEntry<N, T>;
38
+ export declare const matchesPath: <N, MatchingPath extends TypePathType>(diff: ObjectDiffEntry<N>, path: TypePath<MatchingPath>) => diff is ObjectDiffEntry<N, MatchingPath>;
39
39
  //# sourceMappingURL=object-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-diff.d.ts","sourceRoot":"","sources":["../../src/object/object-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-diff.d.ts","sourceRoot":"","sources":["../../src/object/object-diff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/object/object-diff.ts"],"sourcesContent":["import { ObjectPath } from '@bessemer/cornerstone/object/object-path'\nimport { ConstrainTypePath, ObjectPathType, TypePathGet, TypePathType } from '@bessemer/cornerstone/object/type-path-type'\nimport { matches as typePathMatches, TypePath } from '@bessemer/cornerstone/object/type-path'\n\nexport enum ObjectDiffType {\n Add = 'Add',\n Remove = 'Remove',\n Update = 'Update',\n Move = 'Move',\n}\n\nexport type AddObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Add\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n}\n\nexport type RemoveObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Remove\n path: ObjectPath<T>\n originalValue: TypePathGet<T, N>\n}\n\nexport type UpdateObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Update\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n originalValue: TypePathGet<T, N>\n}\n\nexport type MoveObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Move\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n position: number\n originalPosition: number\n}\n\nexport type ObjectDiffEntry<N, T extends TypePathType = TypePathType> =\n | AddObjectDiff<N, T>\n | RemoveObjectDiff<N, T>\n | UpdateObjectDiff<N, T>\n | MoveObjectDiff<N, T>\n\nexport type ObjectDiff<N> = Array<ObjectDiffEntry<N>>\n\nexport const add =\n <N>() =>\n <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, value: TypePathGet<T, N>): AddObjectDiff<N, T> => {\n return { type: ObjectDiffType.Add, path, value }\n }\n\nexport const remove =\n <N>() =>\n <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, originalValue: TypePathGet<T, N>): RemoveObjectDiff<N, T> => {\n return { type: ObjectDiffType.Remove, path, originalValue }\n }\n\nexport const update =\n <N>() =>\n <T extends ObjectPathType>(\n path: ObjectPath<ConstrainTypePath<T, N>>,\n value: TypePathGet<T, N>,\n originalValue: TypePathGet<T, N>\n ): UpdateObjectDiff<N, T> => {\n return { type: ObjectDiffType.Update, path, value, originalValue }\n }\n\nexport const matchesPath = <N, T extends TypePathType>(diff: ObjectDiffEntry<N>, path: TypePath<T>): diff is ObjectDiffEntry<N, T> => {\n return typePathMatches(diff.path, path)\n}\n"],"mappings":";AAEA,SAAS,WAAW,uBAAiC;AAE9C,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,UAAO;AAJG,SAAAA;AAAA,GAAA;AA0CL,IAAM,MACX,MACA,CAA2B,MAA2C,UAAkD;AACtH,SAAO,EAAE,MAAM,iBAAoB,MAAM,MAAM;AACjD;AAEK,IAAM,SACX,MACA,CAA2B,MAA2C,kBAA6D;AACjI,SAAO,EAAE,MAAM,uBAAuB,MAAM,cAAc;AAC5D;AAEK,IAAM,SACX,MACA,CACE,MACA,OACA,kBAC2B;AAC3B,SAAO,EAAE,MAAM,uBAAuB,MAAM,OAAO,cAAc;AACnE;AAEK,IAAM,cAAc,CAA4B,MAA0B,SAAqD;AACpI,SAAO,gBAAgB,KAAK,MAAM,IAAI;AACxC;","names":["ObjectDiffType"]}
1
+ {"version":3,"sources":["../../src/object/object-diff.ts"],"sourcesContent":["import { ObjectPath } from '@bessemer/cornerstone/object/object-path'\nimport { ConstrainTypePath, ObjectPathType, TypePathGet, TypePathType } from '@bessemer/cornerstone/object/type-path-type'\nimport { matches as typePathMatches, TypePath } from '@bessemer/cornerstone/object/type-path'\n\nexport enum ObjectDiffType {\n Add = 'Add',\n Remove = 'Remove',\n Update = 'Update',\n Move = 'Move',\n}\n\nexport type AddObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Add\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n}\n\nexport type RemoveObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Remove\n path: ObjectPath<T>\n originalValue: TypePathGet<T, N>\n}\n\nexport type UpdateObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Update\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n originalValue: TypePathGet<T, N>\n}\n\nexport type MoveObjectDiff<N, T extends TypePathType> = {\n type: ObjectDiffType.Move\n path: ObjectPath<T>\n value: TypePathGet<T, N>\n position: number\n originalPosition: number\n}\n\nexport type ObjectDiffEntry<N, T extends TypePathType = TypePathType> =\n | AddObjectDiff<N, T>\n | RemoveObjectDiff<N, T>\n | UpdateObjectDiff<N, T>\n | MoveObjectDiff<N, T>\n\nexport type ObjectDiff<N> = Array<ObjectDiffEntry<N>>\n\nexport const add =\n <N>() =>\n <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, value: TypePathGet<T, N>): AddObjectDiff<N, T> => {\n return { type: ObjectDiffType.Add, path, value }\n }\n\nexport const remove =\n <N>() =>\n <T extends ObjectPathType>(path: ObjectPath<ConstrainTypePath<T, N>>, originalValue: TypePathGet<T, N>): RemoveObjectDiff<N, T> => {\n return { type: ObjectDiffType.Remove, path, originalValue }\n }\n\nexport const update =\n <N>() =>\n <T extends ObjectPathType>(\n path: ObjectPath<ConstrainTypePath<T, N>>,\n value: TypePathGet<T, N>,\n originalValue: TypePathGet<T, N>\n ): UpdateObjectDiff<N, T> => {\n return { type: ObjectDiffType.Update, path, value, originalValue }\n }\n\nexport const matchesPath = <N, MatchingPath extends TypePathType>(\n diff: ObjectDiffEntry<N>,\n path: TypePath<MatchingPath>\n): diff is ObjectDiffEntry<N, MatchingPath> => {\n return typePathMatches(diff.path, path)\n}\n"],"mappings":";AAEA,SAAS,WAAW,uBAAiC;AAE9C,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,UAAO;AAJG,SAAAA;AAAA,GAAA;AA0CL,IAAM,MACX,MACA,CAA2B,MAA2C,UAAkD;AACtH,SAAO,EAAE,MAAM,iBAAoB,MAAM,MAAM;AACjD;AAEK,IAAM,SACX,MACA,CAA2B,MAA2C,kBAA6D;AACjI,SAAO,EAAE,MAAM,uBAAuB,MAAM,cAAc;AAC5D;AAEK,IAAM,SACX,MACA,CACE,MACA,OACA,kBAC2B;AAC3B,SAAO,EAAE,MAAM,uBAAuB,MAAM,OAAO,cAAc;AACnE;AAEK,IAAM,cAAc,CACzB,MACA,SAC6C;AAC7C,SAAO,gBAAgB,KAAK,MAAM,IAAI;AACxC;","names":["ObjectDiffType"]}
@@ -9,6 +9,6 @@ export declare const Schema: Zod.ZodPipe<Zod.ZodUnion<readonly [Zod.ZodArray<Zod
9
9
  export declare const getValue: <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N) => TypePathGet<T, N>;
10
10
  export declare const applyValue: <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N, valueToApply: TypePathGet<T, N>) => N;
11
11
  export declare const applyAnyValue: (path: ObjectPath, object: unknown, valueToApply: unknown) => unknown;
12
- export declare const matches: <IntersectingPath extends TypePathType>(targetPath: ObjectPath, matchingPath: TypePath<IntersectingPath>) => targetPath is ObjectPath<IntersectingPath>;
12
+ export declare const matches: <MatchingPath extends TypePathType>(targetPath: ObjectPath, matchingPath: TypePath<MatchingPath>) => targetPath is ObjectPath<MatchingPath>;
13
13
  export declare const intersect: <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(targetPath: ObjectPath<TargetPath>, intersectingPath: TypePath<IntersectingPath>) => ObjectPath;
14
14
  //# sourceMappingURL=object-path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-path.d.ts","sourceRoot":"","sources":["../../src/object/object-path.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAKL,QAAQ,EACT,MAAM,wCAAwC,CAAA;AAM/C,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,sBAAsB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AAEpH,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,sBAAsB,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAE5F,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAanF,CAAA;AAED,eAAO,MAAM,MAAM,mJAMjB,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAEtG,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,cAAc,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAEzH,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,UAAU,EAAE,QAAQ,OAAO,EAAE,cAAc,OAAO,KAAG,OAkBxF,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,gBAAgB,SAAS,YAAY,EAC3D,YAAY,UAAU,EACtB,cAAc,QAAQ,CAAC,gBAAgB,CAAC,KACvC,UAAU,IAAI,UAAU,CAAC,gBAAgB,CAE3C,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,YAAY,EAAE,gBAAgB,SAAS,YAAY,EAC9F,YAAY,UAAU,CAAC,UAAU,CAAC,EAClC,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,KAC3C,UAEF,CAAA"}
1
+ {"version":3,"file":"object-path.d.ts","sourceRoot":"","sources":["../../src/object/object-path.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAKL,QAAQ,EACT,MAAM,wCAAwC,CAAA;AAM/C,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,sBAAsB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AAEpH,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,sBAAsB,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAE5F,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAYnF,CAAA;AAED,eAAO,MAAM,MAAM,mJAMjB,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAEtG,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,cAAc,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAEzH,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,UAAU,EAAE,QAAQ,OAAO,EAAE,cAAc,OAAO,KAAG,OAkBxF,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,YAAY,SAAS,YAAY,EACvD,YAAY,UAAU,EACtB,cAAc,QAAQ,CAAC,YAAY,CAAC,KACnC,UAAU,IAAI,UAAU,CAAC,YAAY,CAEvC,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,YAAY,EAAE,gBAAgB,SAAS,YAAY,EAC9F,YAAY,UAAU,CAAC,UAAU,CAAC,EAClC,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,KAC3C,UAEF,CAAA"}
@@ -19,8 +19,6 @@ var fromString = (path) => {
19
19
  assert(it !== "*", () => "ObjectPaths do not allow for wildcard selectors");
20
20
  if (Array.isArray(it)) {
21
21
  assert(it.length === 1, () => "ObjectPaths do not allow for multiple index selectors or array slices");
22
- const value = only(it);
23
- assert(value !== "*", () => "ObjectPaths do not allow for wildcard selectors");
24
22
  }
25
23
  });
26
24
  return typePath;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/object/object-path.ts"],"sourcesContent":["import Zod from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport {\n InferObjectPath,\n ObjectPathConcreteType,\n ObjectPathType,\n ParseObjectPath,\n TypePathGet,\n TypePathType,\n} from '@bessemer/cornerstone/object/type-path-type'\nimport {\n fromString as typePathFromString,\n getValue as typePathGetValue,\n intersect as typePathIntersect,\n matches as typePathMatches,\n TypePath,\n} from '@bessemer/cornerstone/object/type-path'\nimport { isEmpty, only } from '@bessemer/cornerstone/array'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { produce } from 'immer'\nimport { isObject } from '@bessemer/cornerstone/object'\n\nexport type ObjectPath<T extends TypePathType = TypePathType> = NominalType<ObjectPathConcreteType, ['TypePath', T]>\n\nexport const of = <T extends ObjectPathConcreteType>(value: T): ObjectPath<InferObjectPath<T>> => {\n return value as ObjectPath<InferObjectPath<T>>\n}\n\nexport const fromString = <T extends string>(path: T): ObjectPath<ParseObjectPath<T>> => {\n const typePath = typePathFromString(path)\n\n typePath.forEach((it) => {\n assert(it !== '*', () => 'ObjectPaths do not allow for wildcard selectors')\n if (Array.isArray(it)) {\n assert(it.length === 1, () => 'ObjectPaths do not allow for multiple index selectors or array slices')\n const value = only<string | number>(it)\n assert(value !== '*', () => 'ObjectPaths do not allow for wildcard selectors')\n }\n })\n\n return typePath as ObjectPath<ParseObjectPath<T>>\n}\n\nexport const Schema = Zod.union([Zod.array(Zod.string()), Zod.string()]).transform((it) => {\n if (Array.isArray(it)) {\n return of(it)\n } else {\n return fromString(it)\n }\n})\n\nexport const getValue = <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N): TypePathGet<T, N> => {\n return typePathGetValue(path, object)\n}\n\nexport const applyValue = <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N, valueToApply: TypePathGet<T, N>): N => {\n return applyAnyValue(path, object, valueToApply) as N\n}\n\nexport const applyAnyValue = (path: ObjectPath, object: unknown, valueToApply: unknown): unknown => {\n if (isEmpty(path)) {\n return valueToApply\n }\n\n return produce(object, (draft) => {\n const rest = path.slice(0, -1)\n const last = path[path.length - 1]!\n const parent = getValue(of(rest), draft) as any\n\n assert(isObject(parent) || Array.isArray(parent), () => `Unable to apply value: ${valueToApply} at ObjectPath: ${path} against object: ${object}`)\n if (Array.isArray(last)) {\n const index = only(last)\n parent[index] = valueToApply\n } else {\n parent[last] = valueToApply\n }\n })\n}\n\nexport const matches = <IntersectingPath extends TypePathType>(\n targetPath: ObjectPath,\n matchingPath: TypePath<IntersectingPath>\n): targetPath is ObjectPath<IntersectingPath> => {\n return typePathMatches(targetPath, matchingPath)\n}\n\nexport const intersect = <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(\n targetPath: ObjectPath<TargetPath>,\n intersectingPath: TypePath<IntersectingPath>\n): ObjectPath => {\n return typePathIntersect(targetPath, intersectingPath) as ObjectPath\n}\n"],"mappings":";AAAA,OAAO,SAAS;AAUhB;AAAA,EACE,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAAW;AAAA,OAEN;AACP,SAAS,SAAS,YAAY;AAC9B,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAIlB,IAAM,KAAK,CAAmC,UAA6C;AAChG,SAAO;AACT;AAEO,IAAM,aAAa,CAAmB,SAA4C;AACvF,QAAM,WAAW,mBAAmB,IAAI;AAExC,WAAS,QAAQ,CAAC,OAAO;AACvB,WAAO,OAAO,KAAK,MAAM,iDAAiD;AAC1E,QAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,aAAO,GAAG,WAAW,GAAG,MAAM,uEAAuE;AACrG,YAAM,QAAQ,KAAsB,EAAE;AACtC,aAAO,UAAU,KAAK,MAAM,iDAAiD;AAAA,IAC/E;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,IAAM,SAAS,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO;AACzF,MAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,WAAO,GAAG,EAAE;AAAA,EACd,OAAO;AACL,WAAO,WAAW,EAAE;AAAA,EACtB;AACF,CAAC;AAEM,IAAM,WAAW,CAA8B,MAAqB,WAAiC;AAC1G,SAAO,iBAAiB,MAAM,MAAM;AACtC;AAEO,IAAM,aAAa,CAA8B,MAAqB,QAAW,iBAAuC;AAC7H,SAAO,cAAc,MAAM,QAAQ,YAAY;AACjD;AAEO,IAAM,gBAAgB,CAAC,MAAkB,QAAiB,iBAAmC;AAClG,MAAI,QAAQ,IAAI,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,CAAC,UAAU;AAChC,UAAM,OAAO,KAAK,MAAM,GAAG,EAAE;AAC7B,UAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,UAAM,SAAS,SAAS,GAAG,IAAI,GAAG,KAAK;AAEvC,WAAO,SAAS,MAAM,KAAK,MAAM,QAAQ,MAAM,GAAG,MAAM,0BAA0B,YAAY,mBAAmB,IAAI,oBAAoB,MAAM,EAAE;AACjJ,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,YAAM,QAAQ,KAAK,IAAI;AACvB,aAAO,KAAK,IAAI;AAAA,IAClB,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEO,IAAM,UAAU,CACrB,YACA,iBAC+C;AAC/C,SAAO,gBAAgB,YAAY,YAAY;AACjD;AAEO,IAAM,YAAY,CACvB,YACA,qBACe;AACf,SAAO,kBAAkB,YAAY,gBAAgB;AACvD;","names":[]}
1
+ {"version":3,"sources":["../../src/object/object-path.ts"],"sourcesContent":["import Zod from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport {\n InferObjectPath,\n ObjectPathConcreteType,\n ObjectPathType,\n ParseObjectPath,\n TypePathGet,\n TypePathType,\n} from '@bessemer/cornerstone/object/type-path-type'\nimport {\n fromString as typePathFromString,\n getValue as typePathGetValue,\n intersect as typePathIntersect,\n matches as typePathMatches,\n TypePath,\n} from '@bessemer/cornerstone/object/type-path'\nimport { isEmpty, only } from '@bessemer/cornerstone/array'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { produce } from 'immer'\nimport { isObject } from '@bessemer/cornerstone/object'\n\nexport type ObjectPath<T extends TypePathType = TypePathType> = NominalType<ObjectPathConcreteType, ['TypePath', T]>\n\nexport const of = <T extends ObjectPathConcreteType>(value: T): ObjectPath<InferObjectPath<T>> => {\n return value as ObjectPath<InferObjectPath<T>>\n}\n\nexport const fromString = <T extends string>(path: T): ObjectPath<ParseObjectPath<T>> => {\n const typePath = typePathFromString(path)\n\n typePath.forEach((it) => {\n assert(it !== '*', () => 'ObjectPaths do not allow for wildcard selectors')\n\n if (Array.isArray(it)) {\n assert(it.length === 1, () => 'ObjectPaths do not allow for multiple index selectors or array slices')\n }\n })\n\n return typePath as ObjectPath<ParseObjectPath<T>>\n}\n\nexport const Schema = Zod.union([Zod.array(Zod.string()), Zod.string()]).transform((it) => {\n if (Array.isArray(it)) {\n return of(it)\n } else {\n return fromString(it)\n }\n})\n\nexport const getValue = <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N): TypePathGet<T, N> => {\n return typePathGetValue(path, object)\n}\n\nexport const applyValue = <T extends ObjectPathType, N>(path: ObjectPath<T>, object: N, valueToApply: TypePathGet<T, N>): N => {\n return applyAnyValue(path, object, valueToApply) as N\n}\n\nexport const applyAnyValue = (path: ObjectPath, object: unknown, valueToApply: unknown): unknown => {\n if (isEmpty(path)) {\n return valueToApply\n }\n\n return produce(object, (draft) => {\n const rest = path.slice(0, -1)\n const last = path[path.length - 1]!\n const parent = getValue(of(rest), draft) as any\n\n assert(isObject(parent) || Array.isArray(parent), () => `Unable to apply value: ${valueToApply} at ObjectPath: ${path} against object: ${object}`)\n if (Array.isArray(last)) {\n const index = only(last)\n parent[index] = valueToApply\n } else {\n parent[last] = valueToApply\n }\n })\n}\n\nexport const matches = <MatchingPath extends TypePathType>(\n targetPath: ObjectPath,\n matchingPath: TypePath<MatchingPath>\n): targetPath is ObjectPath<MatchingPath> => {\n return typePathMatches(targetPath, matchingPath)\n}\n\nexport const intersect = <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(\n targetPath: ObjectPath<TargetPath>,\n intersectingPath: TypePath<IntersectingPath>\n): ObjectPath => {\n return typePathIntersect(targetPath, intersectingPath) as ObjectPath\n}\n"],"mappings":";AAAA,OAAO,SAAS;AAUhB;AAAA,EACE,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAAW;AAAA,OAEN;AACP,SAAS,SAAS,YAAY;AAC9B,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAIlB,IAAM,KAAK,CAAmC,UAA6C;AAChG,SAAO;AACT;AAEO,IAAM,aAAa,CAAmB,SAA4C;AACvF,QAAM,WAAW,mBAAmB,IAAI;AAExC,WAAS,QAAQ,CAAC,OAAO;AACvB,WAAO,OAAO,KAAK,MAAM,iDAAiD;AAE1E,QAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,aAAO,GAAG,WAAW,GAAG,MAAM,uEAAuE;AAAA,IACvG;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,IAAM,SAAS,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO;AACzF,MAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,WAAO,GAAG,EAAE;AAAA,EACd,OAAO;AACL,WAAO,WAAW,EAAE;AAAA,EACtB;AACF,CAAC;AAEM,IAAM,WAAW,CAA8B,MAAqB,WAAiC;AAC1G,SAAO,iBAAiB,MAAM,MAAM;AACtC;AAEO,IAAM,aAAa,CAA8B,MAAqB,QAAW,iBAAuC;AAC7H,SAAO,cAAc,MAAM,QAAQ,YAAY;AACjD;AAEO,IAAM,gBAAgB,CAAC,MAAkB,QAAiB,iBAAmC;AAClG,MAAI,QAAQ,IAAI,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,CAAC,UAAU;AAChC,UAAM,OAAO,KAAK,MAAM,GAAG,EAAE;AAC7B,UAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,UAAM,SAAS,SAAS,GAAG,IAAI,GAAG,KAAK;AAEvC,WAAO,SAAS,MAAM,KAAK,MAAM,QAAQ,MAAM,GAAG,MAAM,0BAA0B,YAAY,mBAAmB,IAAI,oBAAoB,MAAM,EAAE;AACjJ,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,YAAM,QAAQ,KAAK,IAAI;AACvB,aAAO,KAAK,IAAI;AAAA,IAClB,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEO,IAAM,UAAU,CACrB,YACA,iBAC2C;AAC3C,SAAO,gBAAgB,YAAY,YAAY;AACjD;AAEO,IAAM,YAAY,CACvB,YACA,qBACe;AACf,SAAO,kBAAkB,YAAY,gBAAgB;AACvD;","names":[]}
@@ -5,9 +5,8 @@ export type TypePathGet<TSelectors extends TypePathType, TValue> = TSelectors['l
5
5
  export type NameSelector = string;
6
6
  export type IndexSelector = Array<number>;
7
7
  export type WildcardSelector = '*';
8
- export type WildcardIndexSelector = ['*'];
9
8
  export type ObjectPathSelector = NameSelector | IndexSelector;
10
- export type TypePathSelector = ObjectPathSelector | WildcardSelector | WildcardIndexSelector;
9
+ export type TypePathSelector = ObjectPathSelector | WildcardSelector;
11
10
  export type ObjectPathConcreteType = Array<ObjectPathSelector>;
12
11
  export type TypePathConcreteType = Array<TypePathSelector>;
13
12
  export interface NameSelectorType<TKey extends string> {
@@ -25,8 +24,6 @@ export interface AnyIndexSelectorType extends IndexSelectorType<number> {
25
24
  export interface WildcardSelectorType {
26
25
  type: 'WildcardSelector';
27
26
  }
28
- export interface AnyWildcardSelectorType extends WildcardSelectorType {
29
- }
30
27
  export interface ArraySliceSelectorType<TStart extends number | never = never, TEnd extends number | never = never, TStep extends number | never = never> {
31
28
  type: 'ArraySliceSelector';
32
29
  start: TStart;
@@ -36,21 +33,28 @@ export interface ArraySliceSelectorType<TStart extends number | never = never, T
36
33
  export interface AnySliceSelectorType extends ArraySliceSelectorType<any, any, any> {
37
34
  }
38
35
  type AnyObjectPathSelectorType = AnyIndexSelectorType | AnyNameSelectorType;
39
- type AnyTypePathSelectorType = AnyObjectPathSelectorType | AnySliceSelectorType | AnyWildcardSelectorType;
40
- type ParseBracketSelector<TInner extends string> = TInner extends `${infer TStart extends number}:${infer TEnd extends number}:${infer TStep extends number}` ? ArraySliceSelectorType<TStart, TEnd, TStep> : TInner extends `:${infer TEnd extends number}:${infer TStep extends number}` ? ArraySliceSelectorType<never, TEnd, TStep> : TInner extends `::${infer TStep extends number}` ? ArraySliceSelectorType<never, never, TStep> : TInner extends `${infer TStart extends number}:${infer TEnd extends number}` ? ArraySliceSelectorType<TStart, TEnd, never> : TInner extends `:${infer TEnd extends number}` ? ArraySliceSelectorType<never, TEnd, never> : TInner extends `${string}"${infer TKey}"${string}` ? NameSelectorType<FormatString<TKey>> : TInner extends `${string}'${infer TKey}'${string}` ? NameSelectorType<FormatString<TKey>> : TInner extends `${string}*${string}` ? WildcardSelectorType : TInner extends `${infer TStart extends number}` ? IndexSelectorType<TStart> : never;
36
+ type AnyTypePathSelectorType = AnyObjectPathSelectorType | WildcardSelectorType | AnySliceSelectorType;
37
+ type ParseBracketSelector<TInner extends string> = TInner extends `${infer TStart extends number}:${infer TEnd extends number}:${infer TStep extends number}` ? ArraySliceSelectorType<TStart, TEnd, TStep> : TInner extends `:${infer TEnd extends number}:${infer TStep extends number}` ? ArraySliceSelectorType<never, TEnd, TStep> : TInner extends `::${infer TStep extends number}` ? ArraySliceSelectorType<never, never, TStep> : TInner extends `${infer TStart extends number}:${infer TEnd extends number}` ? ArraySliceSelectorType<TStart, TEnd, never> : TInner extends `:${infer TEnd extends number}` ? ArraySliceSelectorType<never, TEnd, never> : TInner extends `${string}"${infer TKey}"${string}` ? NameSelectorType<FormatString<TKey>> : TInner extends `${string}'${infer TKey}'${string}` ? NameSelectorType<FormatString<TKey>> : TInner extends `${infer TStart extends number}` ? IndexSelectorType<TStart> : never;
41
38
  type ParseBracketIndexInner<T> = T extends `${infer TFirst},${infer TRest}` ? [ParseBracketSelector<TFirst>, ...ParseBracketIndexInner<TRest>] : T extends `${infer TIndex}` ? [ParseBracketSelector<TIndex>] : [];
42
- type ParsePathInner<TPathInner extends string> = TPathInner extends `*` ? [WildcardSelectorType] : TPathInner extends `[${infer TInner}]${infer TRest}` ? [ParseBracketIndexInner<TInner>, ...ParsePathInner<TRest>] : TPathInner extends `.${infer TKey}[${infer TRest}` ? [...ParsePathInner<TKey>, ...ParsePathInner<`[${TRest}`>] : TPathInner extends `.${infer TKey}` ? ParsePathInner<TKey> : TPathInner extends `${infer TKey}.${infer TRest}` ? [...ParsePathInner<TKey>, ...ParsePathInner<`.${TRest}`>] : TPathInner extends `${infer TKey}[${infer TInner}]${infer TRest}` ? [NameSelectorType<TKey>, ParseBracketIndexInner<TInner>, ...ParsePathInner<TRest>] : TPathInner extends '' ? [] : [NameSelectorType<TPathInner>];
39
+ type ParsePathInner<TPathInner extends string> = TPathInner extends `*` ? [WildcardSelectorType] : TPathInner extends `[*]${infer TRest}` ? [WildcardSelectorType, ...ParsePathInner<TRest>] : TPathInner extends `${infer TRest}[*]` ? [...ParsePathInner<TRest>, WildcardSelectorType] : TPathInner extends `[${infer TInner}]${infer TRest}` ? [ParseBracketIndexInner<TInner>, ...ParsePathInner<TRest>] : TPathInner extends `.${infer TKey}[${infer TRest}` ? [...ParsePathInner<TKey>, ...ParsePathInner<`[${TRest}`>] : TPathInner extends `.${infer TKey}` ? ParsePathInner<TKey> : TPathInner extends `${infer TKey}.${infer TRest}` ? [...ParsePathInner<TKey>, ...ParsePathInner<`.${TRest}`>] : TPathInner extends `${infer TKey}[${infer TInner}]${infer TRest}` ? [NameSelectorType<TKey>, ParseBracketIndexInner<TInner>, ...ParsePathInner<TRest>] : TPathInner extends '' ? [] : [NameSelectorType<TPathInner>];
43
40
  export type ParseTypePath<TPath extends string> = ParsePathInner<TPath>;
44
- type FilterObjectPathSelectors<T> = T extends readonly any[] ? {
45
- [K in keyof T]: T[K] extends AnyObjectPathSelectorType ? T[K] : T[K] extends readonly any[] ? T[K] extends readonly AnyObjectPathSelectorType[] ? T[K]['length'] extends 1 ? T[K] : never : never : never;
41
+ type FilterObjectPathSelectors<T extends TypePathType> = T extends any[] ? {
42
+ [K in keyof T]: T[K] extends AnyObjectPathSelectorType ? T[K] : T[K] extends AnyObjectPathSelectorType[] ? T[K]['length'] extends 1 ? T[K] : never : never;
46
43
  } : never;
44
+ export type ObjectPathInferMatchesInternal<TargetPath extends ObjectPathType, MatchingPath extends TypePathType> = {
45
+ [K in keyof TargetPath]: K extends keyof MatchingPath ? MatchingPath[K] extends AnyNameSelectorType ? MatchingPath[K] : MatchingPath[K] extends AnyIndexSelectorType ? MatchingPath[K] : MatchingPath[K] extends WildcardSelectorType ? TargetPath[K] : MatchingPath[K] extends Array<any> ? MatchingPath[K]['length'] extends 1 ? MatchingPath[K] : IndexSelectorType<number> : never : never;
46
+ };
47
+ export type ObjectPathInferMatches<TargetPath extends ObjectPathType, MatchingPath extends TypePathType> = NeverIfContainsNever<ObjectPathInferMatchesInternal<TargetPath, MatchingPath>>;
48
+ export type ObjectPathInferIntersect<TargetPath extends ObjectPathType, MatchingPath extends TypePathType> = {
49
+ [K in keyof TargetPath]: K extends keyof MatchingPath ? MatchingPath[K] extends AnyNameSelectorType ? MatchingPath[K] : MatchingPath[K] extends AnyIndexSelectorType ? MatchingPath[K] : MatchingPath[K] extends WildcardSelectorType ? TargetPath[K] : MatchingPath[K] extends Array<any> ? MatchingPath[K]['length'] extends 1 ? MatchingPath[K] : IndexSelectorType<number> : never : never;
50
+ };
47
51
  export type ParseObjectPath<TPath extends string> = FilterObjectPathSelectors<ParsePathInner<TPath>>;
48
52
  export type ObjectPathType = Array<Arrayable<AnyObjectPathSelectorType>>;
49
53
  export type TypePathType = Array<Arrayable<AnyTypePathSelectorType>>;
50
54
  export type InferObjectPath<TPath extends TypePathConcreteType> = ObjectPathType;
51
55
  export type InferTypePath<TPath extends TypePathConcreteType> = TypePathType;
52
- type ExtractRecordSelection<TSelector extends AnyTypePathSelectorType, TValue extends AnyRecord> = TSelector extends AnyWildcardSelectorType ? Array<TValue[keyof TValue]> : TSelector extends NameSelectorType<infer TKey> ? TKey extends keyof TValue ? TValue[TKey] : never : never;
53
- type ExtractArraySelection<TSelector extends AnyTypePathSelectorType, TValue extends AnyArray> = TSelector extends AnyWildcardSelectorType ? TValue : TSelector extends IndexSelectorType<infer TIndex> ? PickArray<TIndex, TValue> : TSelector extends ArraySliceSelectorType<infer TStart, infer TEnd> ? Slice<TValue, OrDefault<TStart, 0>, OrDefault<TEnd, TValue['length']>> : TSelector extends NameSelectorType<infer TKey> ? PickArrayField<TValue, TKey> : TSelector extends WildcardSelectorType ? TValue : [];
56
+ type ExtractRecordSelection<TSelector extends AnyTypePathSelectorType, TValue extends AnyRecord> = TSelector extends WildcardSelectorType ? Array<TValue[keyof TValue]> : TSelector extends NameSelectorType<infer TKey> ? TKey extends keyof TValue ? TValue[TKey] : never : never;
57
+ type ExtractArraySelection<TSelector extends AnyTypePathSelectorType, TValue extends AnyArray> = TSelector extends WildcardSelectorType ? TValue : TSelector extends IndexSelectorType<infer TIndex> ? PickArray<TIndex, TValue> : TSelector extends ArraySliceSelectorType<infer TStart, infer TEnd> ? Slice<TValue, OrDefault<TStart, 0>, OrDefault<TEnd, TValue['length']>> : TSelector extends NameSelectorType<infer TKey> ? PickArrayField<TValue, TKey> : TSelector extends WildcardSelectorType ? TValue : [];
54
58
  type ExtractMultipleArraySelections<TSelectors extends AnyTypePathSelectorType[], TValue extends AnyArray> = TSelectors['length'] extends 0 ? [] : TSelectors extends [infer TFirst, ...infer TRest] ? TFirst extends AnyTypePathSelectorType ? TRest extends AnyTypePathSelectorType[] ? [ExtractArraySelection<TFirst, TValue>, ...ExtractMultipleArraySelections<TRest, TValue>] : ExtractArraySelection<TFirst, TValue> : [] : [];
55
59
  type ExtractSelection<TSelector extends AnyTypePathSelectorType | AnyTypePathSelectorType[], TValue> = TValue extends any ? TValue extends undefined ? undefined : TValue extends null ? undefined : TValue extends AnyArray ? TSelector extends AnyTypePathSelectorType[] ? TSelector['length'] extends 1 ? ExtractArraySelection<TSelector[0], Extract<TValue, AnyArray>> : ExtractMultipleArraySelections<TSelector, Extract<TValue, AnyArray>> : TSelector extends AnyTypePathSelectorType ? ExtractArraySelection<TSelector, Extract<TValue, AnyArray>> : never : TValue extends AnyRecord ? TSelector extends AnyTypePathSelectorType ? ExtractRecordSelection<TSelector, Extract<TValue, AnyRecord>> : never : never : never;
56
60
  type AnyRecord = Record<PropertyKey, any>;
@@ -67,5 +71,7 @@ type Slice<Arr extends unknown[], Start extends number = 0, End extends number =
67
71
  ] ? Rest : [];
68
72
  type PickArrayField<TArr extends any[], TKey extends string> = TArr extends [infer TFirst, ...infer TRest] ? [TFirst[TKey & keyof TFirst], ...PickArrayField<TRest, TKey>] : TArr extends [] ? [] : TArr extends Array<infer T> ? Array<T extends any ? (TKey extends keyof T ? T[TKey] : undefined) : never> : [];
69
73
  type OrDefault<T, D> = [T] extends [never] ? D : T;
74
+ type HasNever<T extends Array<any>> = T extends readonly [infer Head, ...infer Tail] ? Head extends never ? true : Tail extends Array<any> ? HasNever<Tail> : false : false;
75
+ export type NeverIfContainsNever<T> = T extends never ? [] : T extends Array<any> ? (HasNever<T> extends true ? [] : T) : T;
70
76
  export {};
71
77
  //# sourceMappingURL=type-path-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-path-type.d.ts","sourceRoot":"","sources":["../../src/object/type-path-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-path-type.d.ts","sourceRoot":"","sources":["../../src/object/type-path-type.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { NominalType } from '@bessemer/cornerstone/types';
2
2
  import Zod from 'zod';
3
- import { InferTypePath, ParseTypePath, TypePathConcreteType, TypePathGet, TypePathSelector, TypePathType, WildcardIndexSelector, WildcardSelector } from '@bessemer/cornerstone/object/type-path-type';
3
+ import { InferTypePath, ParseTypePath, TypePathConcreteType, TypePathGet, TypePathSelector, TypePathType, WildcardSelector } from '@bessemer/cornerstone/object/type-path-type';
4
+ import { Result } from '@bessemer/cornerstone/result';
4
5
  export type TypePath<T extends TypePathType = TypePathType> = NominalType<TypePathConcreteType, ['TypePath', T]>;
5
6
  export declare const of: <T extends TypePathConcreteType>(value: T) => TypePath<InferTypePath<T>>;
6
7
  export declare const fromString: <T extends string>(path: T) => TypePath<ParseTypePath<T>>;
7
8
  export declare const Schema: Zod.ZodPipe<Zod.ZodUnion<readonly [Zod.ZodArray<Zod.ZodString>, Zod.ZodString]>, Zod.ZodTransform<TypePath<TypePathType>, string | string[]>>;
8
9
  export declare const getValue: <T extends TypePathType, N>(path: TypePath<T>, object: N) => TypePathGet<T, N>;
9
- export declare const isWildcardSelector: (selector: TypePathSelector) => selector is WildcardSelector | WildcardIndexSelector;
10
- export declare const matches: <IntersectingPath extends TypePathType>(targetPath: TypePath, matchingPath: TypePath<IntersectingPath>) => targetPath is TypePath<IntersectingPath>;
10
+ export declare const isWildcardSelector: (selector: TypePathSelector) => selector is WildcardSelector;
11
+ export declare const matches: <MatchingPath extends TypePathType>(targetPath: TypePath, matchingPath: TypePath<MatchingPath>) => targetPath is TypePath<MatchingPath>;
12
+ export declare const intersectAny: (targetPath: TypePath, intersectingPath: TypePath) => Result<TypePath>;
11
13
  export declare const intersect: <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(targetPath: TypePath<TargetPath>, intersectingPath: TypePath<IntersectingPath>) => TypePath;
12
14
  //# sourceMappingURL=type-path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-path.d.ts","sourceRoot":"","sources":["../../src/object/type-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAEL,aAAa,EAEb,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,6CAA6C,CAAA;AAKpD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AAEhH,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,oBAAoB,EAAE,OAAO,CAAC,KAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAEtF,CAAA;AAKD,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAmE/E,CAAA;AAED,eAAO,MAAM,MAAM,+IAMjB,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAgClG,CAAA;AAsDD,eAAO,MAAM,kBAAkB,GAAI,UAAU,gBAAgB,KAAG,QAAQ,IAAI,gBAAgB,GAAG,qBAM9F,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,gBAAgB,SAAS,YAAY,EAC3D,YAAY,QAAQ,EACpB,cAAc,QAAQ,CAAC,gBAAgB,CAAC,KACvC,UAAU,IAAI,QAAQ,CAAC,gBAAgB,CA4CzC,CAAA;AAGD,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,YAAY,EAAE,gBAAgB,SAAS,YAAY,EAC9F,YAAY,QAAQ,CAAC,UAAU,CAAC,EAChC,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,KAC3C,QAgEF,CAAA"}
1
+ {"version":3,"file":"type-path.d.ts","sourceRoot":"","sources":["../../src/object/type-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAEL,aAAa,EAEb,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EACjB,MAAM,6CAA6C,CAAA;AAIpD,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAEvE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AAEhH,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,oBAAoB,EAAE,OAAO,CAAC,KAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAEtF,CAAA;AAKD,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAmE/E,CAAA;AAED,eAAO,MAAM,MAAM,+IAMjB,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAgClG,CAAA;AAsDD,eAAO,MAAM,kBAAkB,GAAI,UAAU,gBAAgB,KAAG,QAAQ,IAAI,gBAE3E,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,YAAY,SAAS,YAAY,EACvD,YAAY,QAAQ,EACpB,cAAc,QAAQ,CAAC,YAAY,CAAC,KACnC,UAAU,IAAI,QAAQ,CAAC,YAAY,CA8CrC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,YAAY,QAAQ,EAAE,kBAAkB,QAAQ,KAAG,MAAM,CAAC,QAAQ,CA0D9F,CAAA;AAGD,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,YAAY,EAAE,gBAAgB,SAAS,YAAY,EAC9F,YAAY,QAAQ,CAAC,UAAU,CAAC,EAChC,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,KAC3C,QAOF,CAAA"}
@@ -4,6 +4,7 @@ import Zod from "zod";
4
4
  import { isNil, isObject } from "@bessemer/cornerstone/object";
5
5
  import { isNumber } from "@bessemer/cornerstone/math";
6
6
  import { contains, containsAll, isEmpty, only } from "@bessemer/cornerstone/array";
7
+ import { failure, success } from "@bessemer/cornerstone/result";
7
8
  var of = (value) => {
8
9
  return value;
9
10
  };
@@ -45,7 +46,7 @@ var fromString = (path) => {
45
46
  i++;
46
47
  }
47
48
  if (bracketContent === "*") {
48
- segments.push(["*"]);
49
+ segments.push("*");
49
50
  } else {
50
51
  const indices = bracketContent.split(",").map((s) => s.trim()).map((s) => parseInt(s, 10));
51
52
  segments.push(indices);
@@ -136,14 +137,12 @@ var evaluateIndexSelector = (selector, current) => {
136
137
  return [result, true];
137
138
  };
138
139
  var isWildcardSelector = (selector) => {
139
- if (Array.isArray(selector) && selector.length === 1) {
140
- return only(selector) === "*";
141
- } else {
142
- return selector === "*";
143
- }
140
+ return selector === "*";
144
141
  };
145
142
  var matches = (targetPath, matchingPath) => {
146
- assert(targetPath.length >= matchingPath.length, () => `TypePath: ${matchingPath} can't match target TypePath: ${targetPath}`);
143
+ if (targetPath.length < matchingPath.length) {
144
+ return false;
145
+ }
147
146
  let index = 0;
148
147
  for (const targetPathSelector of targetPath) {
149
148
  const matchingPathSelector = matchingPath[index];
@@ -181,67 +180,68 @@ var matches = (targetPath, matchingPath) => {
181
180
  }
182
181
  return true;
183
182
  };
184
- var intersect = (targetPath, intersectingPath) => {
185
- assert(targetPath.length >= intersectingPath.length, () => `TypePath: ${intersectingPath} can't intersect target TypePath: ${targetPath}`);
183
+ var intersectAny = (targetPath, intersectingPath) => {
184
+ if (targetPath.length < intersectingPath.length) {
185
+ return failure(new Error(`TypePath: ${intersectingPath} can't intersect target TypePath: ${targetPath}`));
186
+ }
186
187
  let index = 0;
187
188
  let result = [];
188
189
  for (const targetPathSelector of targetPath) {
189
190
  const intersectingPathSelector = intersectingPath[index];
191
+ const makeError = () => new Error(`Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`);
190
192
  if (isNil(intersectingPathSelector)) {
191
- return of(result);
193
+ return success(of(result));
192
194
  } else if (isWildcardSelector(intersectingPathSelector)) {
193
195
  result.push(targetPathSelector);
194
196
  } else if (isWildcardSelector(targetPathSelector)) {
195
- result.push(intersectingPathSelector);
197
+ return failure(makeError());
196
198
  } else if (Array.isArray(intersectingPathSelector)) {
197
199
  if (Array.isArray(targetPathSelector)) {
198
200
  const filteredTargetPaths = targetPathSelector.filter((it) => contains(intersectingPathSelector, it));
199
201
  if (isEmpty(filteredTargetPaths)) {
200
- throw new Error(
201
- `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`
202
- );
202
+ return failure(makeError());
203
203
  }
204
204
  result.push(filteredTargetPaths);
205
205
  } else {
206
206
  if (!contains(intersectingPathSelector, Number(targetPathSelector))) {
207
- throw new Error(
208
- `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`
209
- );
207
+ return failure(makeError());
210
208
  }
211
209
  result.push(targetPathSelector);
212
210
  }
213
211
  } else {
214
212
  if (Array.isArray(targetPathSelector)) {
215
213
  if (targetPathSelector.length !== 1) {
216
- throw new Error(
217
- `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`
218
- );
214
+ return failure(makeError());
219
215
  }
220
216
  const targetPathSelectorIndex = only(targetPathSelector);
221
217
  if (targetPathSelectorIndex !== Number(intersectingPathSelector)) {
222
- throw new Error(
223
- `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`
224
- );
218
+ return failure(makeError());
225
219
  }
226
220
  result.push(targetPathSelector);
227
221
  } else {
228
222
  if (targetPathSelector !== intersectingPathSelector) {
229
- throw new Error(
230
- `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`
231
- );
223
+ return failure(makeError());
232
224
  }
233
225
  result.push(targetPathSelector);
234
226
  }
235
227
  }
236
228
  index++;
237
229
  }
238
- return of(result);
230
+ return success(of(result));
231
+ };
232
+ var intersect = (targetPath, intersectingPath) => {
233
+ const result = intersectAny(targetPath, intersectingPath);
234
+ if (!result.isSuccess) {
235
+ throw result.value;
236
+ }
237
+ return result.value;
239
238
  };
240
239
  export {
241
240
  Schema,
242
241
  fromString,
243
242
  getValue,
244
243
  intersect,
244
+ intersectAny,
245
245
  isWildcardSelector,
246
246
  matches,
247
247
  of
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/object/type-path.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport Zod from 'zod'\nimport {\n IndexSelector,\n InferTypePath,\n NameSelector,\n ParseTypePath,\n TypePathConcreteType,\n TypePathGet,\n TypePathSelector,\n TypePathType,\n WildcardIndexSelector,\n WildcardSelector,\n} from '@bessemer/cornerstone/object/type-path-type'\nimport { isNil, isObject } from '@bessemer/cornerstone/object'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { contains, containsAll, isEmpty, only } from '@bessemer/cornerstone/array'\n\nexport type TypePath<T extends TypePathType = TypePathType> = NominalType<TypePathConcreteType, ['TypePath', T]>\n\nexport const of = <T extends TypePathConcreteType>(value: T): TypePath<InferTypePath<T>> => {\n return value as TypePath<InferTypePath<T>>\n}\n\nconst TypePathRegex =\n /^(?:[a-zA-Z_$][a-zA-Z0-9_$]*|\\*|\\d+|\\[\\s*(?:\\*|\\d+(?:\\s*,\\s*\\d+)*)\\s*])(?:\\.(?:[a-zA-Z_$][a-zA-Z0-9_$]*|\\*|\\d+)|\\[\\s*(?:\\*|\\d+(?:\\s*,\\s*\\d+)*)\\s*])*$|^$/\n\nexport const fromString = <T extends string>(path: T): TypePath<ParseTypePath<T>> => {\n assert(TypePathRegex.test(path), () => `Unable to parse TypePath from string: ${path}`)\n\n if (path === '') {\n return [] as TypePath<ParseTypePath<T>>\n }\n\n const segments: Array<string | Array<string | number>> = []\n let current = ''\n let i = 0\n\n while (i < path.length) {\n const char = path[i]\n\n if (char === '.') {\n if (current) {\n segments.push(current)\n current = ''\n }\n i++\n } else if (char === '[') {\n if (current) {\n segments.push(current)\n current = ''\n }\n\n // Find the matching closing bracket\n let bracketContent = ''\n i++ // Skip opening bracket\n let depth = 1\n\n while (i < path.length && depth > 0) {\n const bracketChar = path[i]\n if (bracketChar === '[') {\n depth++\n } else if (bracketChar === ']') {\n depth--\n }\n\n if (depth > 0) {\n bracketContent += bracketChar\n }\n i++\n }\n\n if (bracketContent === '*') {\n segments.push(['*'])\n } else {\n const indices = bracketContent\n .split(',')\n .map((s) => s.trim())\n .map((s) => parseInt(s, 10))\n\n segments.push(indices)\n }\n } else {\n current += char\n i++\n }\n }\n\n // Add any remaining current segment\n if (current) {\n segments.push(current)\n }\n\n return segments as TypePath<ParseTypePath<T>>\n}\n\nexport const Schema = Zod.union([Zod.array(Zod.string()), Zod.string()]).transform((it) => {\n if (Array.isArray(it)) {\n return of(it)\n } else {\n return fromString(it)\n }\n})\n\nexport const getValue = <T extends TypePathType, N>(path: TypePath<T>, object: N): TypePathGet<T, N> => {\n let current: unknown = object\n let collectorMode = false\n\n for (const selector of path) {\n if (isNil(current)) {\n return undefined as TypePathGet<T, N>\n }\n\n if (collectorMode) {\n if (!Array.isArray(current)) {\n throw new Error('Illegal State - in collectorMode but current value is not an Array')\n }\n\n const result = current.flatMap((it) => {\n const [value, isCollecting] = evaluateSelector(selector, it)\n if (isCollecting) {\n return value\n } else {\n return [value]\n }\n })\n\n current = result\n } else {\n const [result, isCollecting] = evaluateSelector(selector, current)\n current = result\n collectorMode = isCollecting\n }\n }\n\n return current as TypePathGet<T, N>\n}\n\nconst evaluateSelector = (selector: TypePathSelector, current: unknown): [unknown, boolean] => {\n if (isWildcardSelector(selector)) {\n return evaluateWildcardSelector(current)\n }\n\n if (Array.isArray(selector)) {\n return evaluateIndexSelector(selector as IndexSelector, current)\n }\n\n return evaluateNameSelector(selector, current)\n}\n\nconst evaluateNameSelector = (selector: NameSelector, current: unknown): [unknown, boolean] => {\n if (Array.isArray(current)) {\n const numberSelector = Number(selector)\n assert(isNumber(numberSelector), () => `Can't apply non-numeric selector: ${selector} to array: ${current}`)\n return evaluateIndexSelector([numberSelector], current)\n }\n\n if (!isObject(current)) {\n return [undefined, false]\n }\n\n return [current[selector], false]\n}\n\nconst evaluateWildcardSelector = (current: unknown): [unknown, boolean] => {\n if (Array.isArray(current)) {\n return [current, true]\n }\n\n if (isObject(current)) {\n throw new Error('Wildcard operations on Objects is not yet supported')\n }\n\n throw new Error(`Unable to apply wildcard operator to value: ${current}`)\n}\n\nconst evaluateIndexSelector = (selector: IndexSelector, current: unknown): [unknown, boolean] => {\n if (!Array.isArray(current)) {\n throw new Error(`Unable to apply index operator to value: ${current}`)\n }\n\n if (selector.length === 1) {\n return [current[only(selector)], false]\n }\n\n const indexSelector = selector as IndexSelector\n const result = indexSelector.map((it) => current[it])\n return [result, true]\n}\n\nexport const isWildcardSelector = (selector: TypePathSelector): selector is WildcardSelector | WildcardIndexSelector => {\n if (Array.isArray(selector) && selector.length === 1) {\n return only<string | number>(selector) === '*'\n } else {\n return selector === '*'\n }\n}\n\nexport const matches = <IntersectingPath extends TypePathType>(\n targetPath: TypePath,\n matchingPath: TypePath<IntersectingPath>\n): targetPath is TypePath<IntersectingPath> => {\n assert(targetPath.length >= matchingPath.length, () => `TypePath: ${matchingPath} can't match target TypePath: ${targetPath}`)\n\n let index = 0\n for (const targetPathSelector of targetPath) {\n const matchingPathSelector = matchingPath[index]\n\n if (isNil(matchingPathSelector)) {\n return true\n } else if (isWildcardSelector(matchingPathSelector)) {\n // Matching path wildcards always match - they're wild\n } else if (isWildcardSelector(targetPathSelector)) {\n return false\n } else if (Array.isArray(matchingPathSelector)) {\n if (Array.isArray(targetPathSelector)) {\n if (!containsAll(matchingPathSelector, targetPathSelector)) {\n return false\n }\n } else {\n if (!contains(matchingPathSelector, Number(targetPathSelector))) {\n return false\n }\n }\n } else {\n if (Array.isArray(targetPathSelector)) {\n if (targetPathSelector.length !== 1) {\n return false\n }\n\n const targetPathSelectorIndex = only(targetPathSelector)\n if (targetPathSelectorIndex !== Number(matchingPathSelector)) {\n return false\n }\n } else {\n if (targetPathSelector !== matchingPathSelector) {\n return false\n }\n }\n }\n\n index++\n }\n\n return true\n}\n\n// JOHN this needs to do a type resolution step...\nexport const intersect = <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(\n targetPath: TypePath<TargetPath>,\n intersectingPath: TypePath<IntersectingPath>\n): TypePath => {\n assert(targetPath.length >= intersectingPath.length, () => `TypePath: ${intersectingPath} can't intersect target TypePath: ${targetPath}`)\n\n let index = 0\n let result: TypePathConcreteType = []\n for (const targetPathSelector of targetPath) {\n const intersectingPathSelector = intersectingPath[index]\n\n if (isNil(intersectingPathSelector)) {\n return of(result)\n } else if (isWildcardSelector(intersectingPathSelector)) {\n result.push(targetPathSelector)\n } else if (isWildcardSelector(targetPathSelector)) {\n result.push(intersectingPathSelector)\n } else if (Array.isArray(intersectingPathSelector)) {\n if (Array.isArray(targetPathSelector)) {\n const filteredTargetPaths = targetPathSelector.filter((it) => contains(intersectingPathSelector, it))\n if (isEmpty(filteredTargetPaths)) {\n throw new Error(\n `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`\n )\n }\n\n result.push(filteredTargetPaths)\n } else {\n if (!contains(intersectingPathSelector, Number(targetPathSelector))) {\n throw new Error(\n `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`\n )\n }\n\n result.push(targetPathSelector)\n }\n } else {\n if (Array.isArray(targetPathSelector)) {\n if (targetPathSelector.length !== 1) {\n throw new Error(\n `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`\n )\n }\n\n const targetPathSelectorIndex = only(targetPathSelector)\n if (targetPathSelectorIndex !== Number(intersectingPathSelector)) {\n throw new Error(\n `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`\n )\n }\n\n result.push(targetPathSelector)\n } else {\n if (targetPathSelector !== intersectingPathSelector) {\n throw new Error(\n `Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`\n )\n }\n\n result.push(targetPathSelector)\n }\n }\n\n index++\n }\n\n return of(result)\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/object/type-path.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport Zod from 'zod'\nimport {\n IndexSelector,\n InferTypePath,\n NameSelector,\n ParseTypePath,\n TypePathConcreteType,\n TypePathGet,\n TypePathSelector,\n TypePathType,\n WildcardSelector,\n} from '@bessemer/cornerstone/object/type-path-type'\nimport { isNil, isObject } from '@bessemer/cornerstone/object'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { contains, containsAll, isEmpty, only } from '@bessemer/cornerstone/array'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\n\nexport type TypePath<T extends TypePathType = TypePathType> = NominalType<TypePathConcreteType, ['TypePath', T]>\n\nexport const of = <T extends TypePathConcreteType>(value: T): TypePath<InferTypePath<T>> => {\n return value as TypePath<InferTypePath<T>>\n}\n\nconst TypePathRegex =\n /^(?:[a-zA-Z_$][a-zA-Z0-9_$]*|\\*|\\d+|\\[\\s*(?:\\*|\\d+(?:\\s*,\\s*\\d+)*)\\s*])(?:\\.(?:[a-zA-Z_$][a-zA-Z0-9_$]*|\\*|\\d+)|\\[\\s*(?:\\*|\\d+(?:\\s*,\\s*\\d+)*)\\s*])*$|^$/\n\nexport const fromString = <T extends string>(path: T): TypePath<ParseTypePath<T>> => {\n assert(TypePathRegex.test(path), () => `Unable to parse TypePath from string: ${path}`)\n\n if (path === '') {\n return [] as TypePath<ParseTypePath<T>>\n }\n\n const segments: Array<string | Array<string | number>> = []\n let current = ''\n let i = 0\n\n while (i < path.length) {\n const char = path[i]\n\n if (char === '.') {\n if (current) {\n segments.push(current)\n current = ''\n }\n i++\n } else if (char === '[') {\n if (current) {\n segments.push(current)\n current = ''\n }\n\n // Find the matching closing bracket\n let bracketContent = ''\n i++ // Skip opening bracket\n let depth = 1\n\n while (i < path.length && depth > 0) {\n const bracketChar = path[i]\n if (bracketChar === '[') {\n depth++\n } else if (bracketChar === ']') {\n depth--\n }\n\n if (depth > 0) {\n bracketContent += bracketChar\n }\n i++\n }\n\n if (bracketContent === '*') {\n segments.push('*')\n } else {\n const indices = bracketContent\n .split(',')\n .map((s) => s.trim())\n .map((s) => parseInt(s, 10))\n\n segments.push(indices)\n }\n } else {\n current += char\n i++\n }\n }\n\n // Add any remaining current segment\n if (current) {\n segments.push(current)\n }\n\n return segments as TypePath<ParseTypePath<T>>\n}\n\nexport const Schema = Zod.union([Zod.array(Zod.string()), Zod.string()]).transform((it) => {\n if (Array.isArray(it)) {\n return of(it)\n } else {\n return fromString(it)\n }\n})\n\nexport const getValue = <T extends TypePathType, N>(path: TypePath<T>, object: N): TypePathGet<T, N> => {\n let current: unknown = object\n let collectorMode = false\n\n for (const selector of path) {\n if (isNil(current)) {\n return undefined as TypePathGet<T, N>\n }\n\n if (collectorMode) {\n if (!Array.isArray(current)) {\n throw new Error('Illegal State - in collectorMode but current value is not an Array')\n }\n\n const result = current.flatMap((it) => {\n const [value, isCollecting] = evaluateSelector(selector, it)\n if (isCollecting) {\n return value\n } else {\n return [value]\n }\n })\n\n current = result\n } else {\n const [result, isCollecting] = evaluateSelector(selector, current)\n current = result\n collectorMode = isCollecting\n }\n }\n\n return current as TypePathGet<T, N>\n}\n\nconst evaluateSelector = (selector: TypePathSelector, current: unknown): [unknown, boolean] => {\n if (isWildcardSelector(selector)) {\n return evaluateWildcardSelector(current)\n }\n\n if (Array.isArray(selector)) {\n return evaluateIndexSelector(selector as IndexSelector, current)\n }\n\n return evaluateNameSelector(selector, current)\n}\n\nconst evaluateNameSelector = (selector: NameSelector, current: unknown): [unknown, boolean] => {\n if (Array.isArray(current)) {\n const numberSelector = Number(selector)\n assert(isNumber(numberSelector), () => `Can't apply non-numeric selector: ${selector} to array: ${current}`)\n return evaluateIndexSelector([numberSelector], current)\n }\n\n if (!isObject(current)) {\n return [undefined, false]\n }\n\n return [current[selector], false]\n}\n\nconst evaluateWildcardSelector = (current: unknown): [unknown, boolean] => {\n if (Array.isArray(current)) {\n return [current, true]\n }\n\n if (isObject(current)) {\n throw new Error('Wildcard operations on Objects is not yet supported')\n }\n\n throw new Error(`Unable to apply wildcard operator to value: ${current}`)\n}\n\nconst evaluateIndexSelector = (selector: IndexSelector, current: unknown): [unknown, boolean] => {\n if (!Array.isArray(current)) {\n throw new Error(`Unable to apply index operator to value: ${current}`)\n }\n\n if (selector.length === 1) {\n return [current[only(selector)], false]\n }\n\n const indexSelector = selector as IndexSelector\n const result = indexSelector.map((it) => current[it])\n return [result, true]\n}\n\nexport const isWildcardSelector = (selector: TypePathSelector): selector is WildcardSelector => {\n return selector === '*'\n}\n\nexport const matches = <MatchingPath extends TypePathType>(\n targetPath: TypePath,\n matchingPath: TypePath<MatchingPath>\n): targetPath is TypePath<MatchingPath> => {\n if (targetPath.length < matchingPath.length) {\n return false\n }\n\n let index = 0\n for (const targetPathSelector of targetPath) {\n const matchingPathSelector = matchingPath[index]\n\n if (isNil(matchingPathSelector)) {\n return true\n } else if (isWildcardSelector(matchingPathSelector)) {\n // Matching path wildcards always match - they're wild\n } else if (isWildcardSelector(targetPathSelector)) {\n return false\n } else if (Array.isArray(matchingPathSelector)) {\n if (Array.isArray(targetPathSelector)) {\n if (!containsAll(matchingPathSelector, targetPathSelector)) {\n return false\n }\n } else {\n if (!contains(matchingPathSelector, Number(targetPathSelector))) {\n return false\n }\n }\n } else {\n if (Array.isArray(targetPathSelector)) {\n if (targetPathSelector.length !== 1) {\n return false\n }\n\n const targetPathSelectorIndex = only(targetPathSelector)\n if (targetPathSelectorIndex !== Number(matchingPathSelector)) {\n return false\n }\n } else {\n if (targetPathSelector !== matchingPathSelector) {\n return false\n }\n }\n }\n\n index++\n }\n\n return true\n}\n\nexport const intersectAny = (targetPath: TypePath, intersectingPath: TypePath): Result<TypePath> => {\n if (targetPath.length < intersectingPath.length) {\n return failure(new Error(`TypePath: ${intersectingPath} can't intersect target TypePath: ${targetPath}`))\n }\n\n let index = 0\n let result: TypePathConcreteType = []\n for (const targetPathSelector of targetPath) {\n const intersectingPathSelector = intersectingPath[index]\n const makeError = () =>\n new Error(`Path mismatch when intersecting. targetPath: ${targetPathSelector} does not match intersectingPath: ${intersectingPathSelector}`)\n\n if (isNil(intersectingPathSelector)) {\n return success(of(result))\n } else if (isWildcardSelector(intersectingPathSelector)) {\n result.push(targetPathSelector)\n } else if (isWildcardSelector(targetPathSelector)) {\n return failure(makeError())\n } else if (Array.isArray(intersectingPathSelector)) {\n if (Array.isArray(targetPathSelector)) {\n const filteredTargetPaths = targetPathSelector.filter((it) => contains(intersectingPathSelector, it))\n if (isEmpty(filteredTargetPaths)) {\n return failure(makeError())\n }\n\n result.push(filteredTargetPaths)\n } else {\n if (!contains(intersectingPathSelector, Number(targetPathSelector))) {\n return failure(makeError())\n }\n\n result.push(targetPathSelector)\n }\n } else {\n if (Array.isArray(targetPathSelector)) {\n if (targetPathSelector.length !== 1) {\n return failure(makeError())\n }\n\n const targetPathSelectorIndex = only(targetPathSelector)\n if (targetPathSelectorIndex !== Number(intersectingPathSelector)) {\n return failure(makeError())\n }\n\n result.push(targetPathSelector)\n } else {\n if (targetPathSelector !== intersectingPathSelector) {\n return failure(makeError())\n }\n\n result.push(targetPathSelector)\n }\n }\n\n index++\n }\n\n return success(of(result))\n}\n\n// JOHN this needs to do a type resolution step...\nexport const intersect = <TargetPath extends TypePathType, IntersectingPath extends TypePathType>(\n targetPath: TypePath<TargetPath>,\n intersectingPath: TypePath<IntersectingPath>\n): TypePath => {\n const result = intersectAny(targetPath, intersectingPath)\n if (!result.isSuccess) {\n throw result.value\n }\n\n return result.value\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bessemer/cornerstone",
3
3
  "type": "module",
4
- "version": "0.5.82",
4
+ "version": "0.5.84",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "sideEffects": false,