@bessemer/cornerstone 0.5.66 → 0.5.68
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/object-path.d.ts.map +1 -1
- package/dist/object-path.js +4 -2
- package/dist/object-path.js.map +1 -1
- package/dist/range.d.ts +1 -1
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"object-path.d.ts","sourceRoot":"","sources":["../src/object-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAQzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;AACzE,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,UAAU,CAA6D,CAAA;AAEpG,eAAO,MAAM,EAAE,GAAI,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,UAElD,CAAA;AAKD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,
|
1
|
+
{"version":3,"file":"object-path.d.ts","sourceRoot":"","sources":["../src/object-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAQzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;AACzE,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,UAAU,CAA6D,CAAA;AAEpG,eAAO,MAAM,EAAE,GAAI,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,UAElD,CAAA;AAKD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,UAoBzC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,KAAG,OAOlE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,EAAE,cAAc,OAAO,KAAG,OAc3F,CAAA"}
|
package/dist/object-path.js
CHANGED
@@ -10,8 +10,8 @@ var Schema = Zod.array(Zod.union([Zod.string(), Zod.number()]));
|
|
10
10
|
var of = (value) => {
|
11
11
|
return value;
|
12
12
|
};
|
13
|
-
var ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]
|
14
|
-
var ObjectPathPartRegex = /([
|
13
|
+
var ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\.\d+|\[\d+])*$/;
|
14
|
+
var ObjectPathPartRegex = /([a-zA-Z_$][a-zA-Z0-9_$]*)|\[(\d+)]|\.(\d+)/g;
|
15
15
|
var fromString = (path) => {
|
16
16
|
assert(ObjectPathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`);
|
17
17
|
const result = [];
|
@@ -21,6 +21,8 @@ var fromString = (path) => {
|
|
21
21
|
result.push(match[1]);
|
22
22
|
} else if (match[2] !== void 0) {
|
23
23
|
result.push(Number(match[2]));
|
24
|
+
} else if (match[3] !== void 0) {
|
25
|
+
result.push(Number(match[3]));
|
24
26
|
}
|
25
27
|
}
|
26
28
|
return of(result);
|
package/dist/object-path.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/object-path.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\nimport { UnknownRecord } from 'type-fest'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { produce } from 'immer'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>\nexport const Schema: ZodType<ObjectPath> = Zod.array(Zod.union([Zod.string(), Zod.number()])) as any\n\nexport const of = (value: Array<string | number>): ObjectPath => {\n return value as ObjectPath\n}\n\nconst ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]
|
1
|
+
{"version":3,"sources":["../src/object-path.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\nimport { UnknownRecord } from 'type-fest'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { produce } from 'immer'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>\nexport const Schema: ZodType<ObjectPath> = Zod.array(Zod.union([Zod.string(), Zod.number()])) as any\n\nexport const of = (value: Array<string | number>): ObjectPath => {\n return value as ObjectPath\n}\n\nconst ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]*|\\.\\d+|\\[\\d+])*$/\nconst ObjectPathPartRegex = /([a-zA-Z_$][a-zA-Z0-9_$]*)|\\[(\\d+)]|\\.(\\d+)/g\n\nexport const fromString = (path: string): ObjectPath => {\n assert(ObjectPathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`)\n\n const result: Array<string | number> = []\n\n let match: RegExpExecArray | null\n while ((match = ObjectPathPartRegex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n // Property name (e.g., 'users', 'profile')\n result.push(match[1])\n } else if (match[2] !== undefined) {\n // Bracket notation array index (e.g., [0])\n result.push(Number(match[2]))\n } else if (match[3] !== undefined) {\n // Dot notation array index (e.g., .0)\n result.push(Number(match[3]))\n }\n }\n\n return of(result)\n}\n\nexport const getValue = (object: UnknownRecord, path: ObjectPath): unknown => {\n let value: any = object\n for (const key of path) {\n value = getIndexValueOrThrow(value, key, object, path)\n }\n\n return value\n}\n\nexport const applyValue = (object: UnknownRecord, path: ObjectPath, 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: any = isEmpty(rest) ? draft : getValue(draft, of(rest))\n\n // Check to make sure the last index is ok\n assertLegalIndex(parent, last, object, path)\n parent[last] = valueToApply\n })\n}\n\nconst getIndexValueOrThrow = (value: any, key: string | number, object: UnknownRecord, path: ObjectPath): any => {\n if (isNumber(key) && Array.isArray(value)) {\n if (key < 0 || key >= value.length) {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n\n return value[key]\n } else if (isString(key) && isObject(value)) {\n if (!(key in value)) {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n\n return value[key]\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n\nconst assertLegalIndex = (value: any, key: string | number, object: UnknownRecord, path: ObjectPath): void => {\n if (isNumber(key) && Array.isArray(value)) {\n return\n } else if (isString(key) && isObject(value)) {\n return\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n"],"mappings":";AACA,OAAO,SAAsB;AAE7B,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,eAAe;AAGjB,IAAM,SAA8B,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;AAErF,IAAM,KAAK,CAAC,UAA8C;AAC/D,SAAO;AACT;AAEA,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAErB,IAAM,aAAa,CAAC,SAA6B;AACtD,SAAO,gBAAgB,KAAK,IAAI,GAAG,MAAM,2CAA2C,IAAI,EAAE;AAE1F,QAAM,SAAiC,CAAC;AAExC,MAAI;AACJ,UAAQ,QAAQ,oBAAoB,KAAK,IAAI,OAAO,MAAM;AACxD,QAAI,MAAM,CAAC,MAAM,QAAW;AAE1B,aAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IACtB,WAAW,MAAM,CAAC,MAAM,QAAW;AAEjC,aAAO,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,IAC9B,WAAW,MAAM,CAAC,MAAM,QAAW;AAEjC,aAAO,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,GAAG,MAAM;AAClB;AAEO,IAAM,WAAW,CAAC,QAAuB,SAA8B;AAC5E,MAAI,QAAa;AACjB,aAAW,OAAO,MAAM;AACtB,YAAQ,qBAAqB,OAAO,KAAK,QAAQ,IAAI;AAAA,EACvD;AAEA,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,QAAuB,MAAkB,iBAAmC;AACrG,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,SAAc,QAAQ,IAAI,IAAI,QAAQ,SAAS,OAAO,GAAG,IAAI,CAAC;AAGpE,qBAAiB,QAAQ,MAAM,QAAQ,IAAI;AAC3C,WAAO,IAAI,IAAI;AAAA,EACjB,CAAC;AACH;AAEA,IAAM,uBAAuB,CAAC,OAAY,KAAsB,QAAuB,SAA0B;AAC/G,MAAI,SAAS,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG;AACzC,QAAI,MAAM,KAAK,OAAO,MAAM,QAAQ;AAClC,YAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,IACnG;AAEA,WAAO,MAAM,GAAG;AAAA,EAClB,WAAW,SAAS,GAAG,KAAK,SAAS,KAAK,GAAG;AAC3C,QAAI,EAAE,OAAO,QAAQ;AACnB,YAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,IACnG;AAEA,WAAO,MAAM,GAAG;AAAA,EAClB,OAAO;AACL,UAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,EACnG;AACF;AAEA,IAAM,mBAAmB,CAAC,OAAY,KAAsB,QAAuB,SAA2B;AAC5G,MAAI,SAAS,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG;AACzC;AAAA,EACF,WAAW,SAAS,GAAG,KAAK,SAAS,KAAK,GAAG;AAC3C;AAAA,EACF,OAAO;AACL,UAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,EACnG;AACF;","names":[]}
|
package/dist/range.d.ts
CHANGED
@@ -2,7 +2,7 @@ import Zod, { ZodType } from 'zod';
|
|
2
2
|
import { TaggedType } from '@bessemer/cornerstone/types';
|
3
3
|
export type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>;
|
4
4
|
export type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>;
|
5
|
-
export declare const schema: <T>(type:
|
5
|
+
export declare const schema: <T extends ZodType>(type: T) => ZodType<Bounds<Zod.infer<T>>>;
|
6
6
|
export type NumericBounds = Bounds<number>;
|
7
7
|
export declare const NumericSchema: Zod.ZodType<Bounds<number>, unknown, Zod.core.$ZodTypeInternals<Bounds<number>, unknown>>;
|
8
8
|
export type FiniteBounds<T> = [T, T];
|
package/dist/range.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAIxD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AAClE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,eAAO,MAAM,MAAM,GAAI,CAAC,
|
1
|
+
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAIxD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AAClE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAE/E,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1C,eAAO,MAAM,aAAa,2FAAuB,CAAA;AAEjD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACpC,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AAEtD,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,QAAQ,WAAW,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAMtD,CAAA"}
|
package/dist/range.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/range.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { isUndefined } from '@bessemer/cornerstone/object'\n\n// JOHN bounds are still a mess! what about finite bounds ???\nexport type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>\nexport type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>\n\nexport const schema = <T>(type:
|
1
|
+
{"version":3,"sources":["../src/range.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { isUndefined } from '@bessemer/cornerstone/object'\n\n// JOHN bounds are still a mess! what about finite bounds ???\nexport type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>\nexport type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>\n\nexport const schema = <T extends ZodType>(type: T): ZodType<Bounds<Zod.infer<T>>> => {\n return Zod.tuple([type.nullable(), type.nullable()]) as any\n}\n\nexport type NumericBounds = Bounds<number>\nexport const NumericSchema = schema(Zod.number())\n\nexport type FiniteBounds<T> = [T, T]\nexport type FiniteNumericBounds = FiniteBounds<number>\n\nexport const of = <T>(bounds: BoundsInput<T>): Bounds<T> => {\n if (isUndefined(bounds[1])) {\n return [bounds[0], null] as Bounds<T>\n }\n\n return bounds as Bounds<T>\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAE7B,SAAS,mBAAmB;AAMrB,IAAM,SAAS,CAAoB,SAA2C;AACnF,SAAO,IAAI,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC;AACrD;AAGO,IAAM,gBAAgB,OAAO,IAAI,OAAO,CAAC;AAKzC,IAAM,KAAK,CAAI,WAAsC;AAC1D,MAAI,YAAY,OAAO,CAAC,CAAC,GAAG;AAC1B,WAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;","names":[]}
|