@bessemer/cornerstone 0.5.72 → 0.5.73
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/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/object/object-diff.d.ts +42 -0
- package/dist/object/object-diff.d.ts.map +1 -0
- package/dist/object/object-diff.js +24 -0
- package/dist/object/object-diff.js.map +1 -0
- package/dist/object/object-path.d.ts +13 -0
- package/dist/object/object-path.d.ts.map +1 -0
- package/dist/{object-path.js → object/object-path.js} +18 -27
- package/dist/object/object-path.js.map +1 -0
- package/dist/object/type-path.d.ts +9 -0
- package/dist/object/type-path.d.ts.map +1 -0
- package/dist/object/type-path.js +44 -0
- package/dist/object/type-path.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/object-path.d.ts +0 -11
- package/dist/object-path.d.ts.map +0 -1
- package/dist/object-path.js.map +0 -1
package/dist/index.d.ts
CHANGED
@@ -24,7 +24,8 @@ import * as Hashes from '@bessemer/cornerstone/hash';
|
|
24
24
|
import * as Crypto from '@bessemer/cornerstone/crypto';
|
25
25
|
import * as Globs from '@bessemer/cornerstone/glob';
|
26
26
|
import * as Ranges from '@bessemer/cornerstone/range';
|
27
|
-
import * as ObjectPaths from '@bessemer/cornerstone/object-path';
|
27
|
+
import * as ObjectPaths from '@bessemer/cornerstone/object/object-path';
|
28
|
+
import * as ObjectDiffs from '@bessemer/cornerstone/object/object-diff';
|
28
29
|
import * as ZodUtil from '@bessemer/cornerstone/zod-util';
|
29
30
|
import * as Tags from '@bessemer/cornerstone/tag';
|
30
31
|
import * as Promises from '@bessemer/cornerstone/promise';
|
@@ -51,5 +52,5 @@ import * as CountryCodes from '@bessemer/cornerstone/intl/country-code';
|
|
51
52
|
import * as CountrySubdivisionCodes from '@bessemer/cornerstone/intl/country-subdivision-code';
|
52
53
|
import * as LanguageCodes from '@bessemer/cornerstone/intl/language-code';
|
53
54
|
import * as Locales from '@bessemer/cornerstone/intl/locale';
|
54
|
-
export { Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Maps, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ObjectPaths, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, CurrencyCodes, MonetaryAmounts, CountryCodes, CountrySubdivisionCodes, LanguageCodes, Locales, };
|
55
|
+
export { Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Maps, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ObjectPaths, ObjectDiffs, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, CurrencyCodes, MonetaryAmounts, CountryCodes, CountrySubdivisionCodes, LanguageCodes, Locales, };
|
55
56
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,8BAA8B,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,WAAW,MAAM,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -25,7 +25,8 @@ import * as Hashes from "@bessemer/cornerstone/hash";
|
|
25
25
|
import * as Crypto from "@bessemer/cornerstone/crypto";
|
26
26
|
import * as Globs from "@bessemer/cornerstone/glob";
|
27
27
|
import * as Ranges from "@bessemer/cornerstone/range";
|
28
|
-
import * as ObjectPaths from "@bessemer/cornerstone/object-path";
|
28
|
+
import * as ObjectPaths from "@bessemer/cornerstone/object/object-path";
|
29
|
+
import * as ObjectDiffs from "@bessemer/cornerstone/object/object-diff";
|
29
30
|
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
30
31
|
import * as Tags from "@bessemer/cornerstone/tag";
|
31
32
|
import * as Promises from "@bessemer/cornerstone/promise";
|
@@ -86,6 +87,7 @@ export {
|
|
86
87
|
MimeTypes,
|
87
88
|
Misc,
|
88
89
|
MonetaryAmounts,
|
90
|
+
ObjectDiffs,
|
89
91
|
ObjectPaths,
|
90
92
|
Objects,
|
91
93
|
Patches,
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as AsyncValues from '@bessemer/cornerstone/async-value'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Maps from '@bessemer/cornerstone/map'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/duration'\nimport * as Uris from '@bessemer/cornerstone/uri'\nimport * as Urls from '@bessemer/cornerstone/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error'\nimport * as ErrorEvents from '@bessemer/cornerstone/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuids from '@bessemer/cornerstone/uuid'\nimport * as Ulids from '@bessemer/cornerstone/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\nimport * as ObjectPaths from '@bessemer/cornerstone/object-path'\n\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\nimport * as CurrencyCodes from '@bessemer/cornerstone/intl/currency-code'\nimport * as CountryCodes from '@bessemer/cornerstone/intl/country-code'\nimport * as CountrySubdivisionCodes from '@bessemer/cornerstone/intl/country-subdivision-code'\nimport * as LanguageCodes from '@bessemer/cornerstone/intl/language-code'\nimport * as Locales from '@bessemer/cornerstone/intl/locale'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n AsyncValues,\n Maths,\n Maps,\n Sets,\n Dates,\n Comparators,\n Equalitors,\n Durations,\n Uris,\n Urls,\n Loggers,\n Errors,\n ErrorEvents,\n Assertions,\n Uuids,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n ObjectPaths,\n ZodUtil,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n CurrencyCodes,\n MonetaryAmounts,\n CountryCodes,\n CountrySubdivisionCodes,\n LanguageCodes,\n Locales,\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,qBAAqB;AACjC,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,YAAY,6BAA6B;AACzC,YAAY,mBAAmB;AAC/B,YAAY,aAAa;","names":[]}
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as AsyncValues from '@bessemer/cornerstone/async-value'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Maps from '@bessemer/cornerstone/map'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/duration'\nimport * as Uris from '@bessemer/cornerstone/uri'\nimport * as Urls from '@bessemer/cornerstone/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error'\nimport * as ErrorEvents from '@bessemer/cornerstone/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuids from '@bessemer/cornerstone/uuid'\nimport * as Ulids from '@bessemer/cornerstone/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\nimport * as ObjectPaths from '@bessemer/cornerstone/object/object-path'\nimport * as ObjectDiffs from '@bessemer/cornerstone/object/object-diff'\n\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\nimport * as CurrencyCodes from '@bessemer/cornerstone/intl/currency-code'\nimport * as CountryCodes from '@bessemer/cornerstone/intl/country-code'\nimport * as CountrySubdivisionCodes from '@bessemer/cornerstone/intl/country-subdivision-code'\nimport * as LanguageCodes from '@bessemer/cornerstone/intl/language-code'\nimport * as Locales from '@bessemer/cornerstone/intl/locale'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n AsyncValues,\n Maths,\n Maps,\n Sets,\n Dates,\n Comparators,\n Equalitors,\n Durations,\n Uris,\n Urls,\n Loggers,\n Errors,\n ErrorEvents,\n Assertions,\n Uuids,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n ObjectPaths,\n ObjectDiffs,\n ZodUtil,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n CurrencyCodes,\n MonetaryAmounts,\n CountryCodes,\n CountrySubdivisionCodes,\n LanguageCodes,\n Locales,\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,qBAAqB;AACjC,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,YAAY,6BAA6B;AACzC,YAAY,mBAAmB;AAC/B,YAAY,aAAa;","names":[]}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { Get } from 'type-fest';
|
2
|
+
import { ConstrainObjectPaths } from '@bessemer/cornerstone/object/object-path';
|
3
|
+
export declare enum ObjectDiffType {
|
4
|
+
Add = "Add",
|
5
|
+
Remove = "Remove",
|
6
|
+
Update = "Update",
|
7
|
+
Move = "Move"
|
8
|
+
}
|
9
|
+
export type AddObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {
|
10
|
+
type: ObjectDiffType.Add;
|
11
|
+
path: T;
|
12
|
+
value: Get<N, T>;
|
13
|
+
};
|
14
|
+
export type RemoveObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {
|
15
|
+
type: ObjectDiffType.Remove;
|
16
|
+
path: T;
|
17
|
+
originalValue: Get<N, T>;
|
18
|
+
};
|
19
|
+
export type UpdateObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {
|
20
|
+
type: ObjectDiffType.Update;
|
21
|
+
path: T;
|
22
|
+
value: Get<N, T>;
|
23
|
+
originalValue: Get<N, T>;
|
24
|
+
};
|
25
|
+
export type MoveObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {
|
26
|
+
type: ObjectDiffType.Move;
|
27
|
+
path: T;
|
28
|
+
value: Get<N, T>;
|
29
|
+
position: number;
|
30
|
+
originalPosition: number;
|
31
|
+
};
|
32
|
+
export type ObjectDiffEntry<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = AddObjectDiff<N, T> | RemoveObjectDiff<N, T> | UpdateObjectDiff<N, T> | MoveObjectDiff<N, T>;
|
33
|
+
export type ConstrainObjectDiffEntries<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = Extract<ObjectDiffEntry<N, T>, {
|
34
|
+
type: T;
|
35
|
+
}>;
|
36
|
+
export type ObjectDiff<N> = {
|
37
|
+
entries: Array<ObjectDiffEntry<N>>;
|
38
|
+
};
|
39
|
+
export declare const add: <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(path: T, value: Get<N, T>) => AddObjectDiff<N, T>;
|
40
|
+
export declare const remove: <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(path: T, originalValue: Get<N, T>) => RemoveObjectDiff<N, T>;
|
41
|
+
export declare const update: <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(path: T, value: Get<N, T>, originalValue: Get<N, T>) => UpdateObjectDiff<N, T>;
|
42
|
+
//# sourceMappingURL=object-diff.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"object-diff.d.ts","sourceRoot":"","sources":["../../src/object/object-diff.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
// src/object/object-diff.ts
|
2
|
+
var ObjectDiffType = /* @__PURE__ */ ((ObjectDiffType2) => {
|
3
|
+
ObjectDiffType2["Add"] = "Add";
|
4
|
+
ObjectDiffType2["Remove"] = "Remove";
|
5
|
+
ObjectDiffType2["Update"] = "Update";
|
6
|
+
ObjectDiffType2["Move"] = "Move";
|
7
|
+
return ObjectDiffType2;
|
8
|
+
})(ObjectDiffType || {});
|
9
|
+
var add = (path, value) => {
|
10
|
+
return { type: "Add" /* Add */, path, value };
|
11
|
+
};
|
12
|
+
var remove = (path, originalValue) => {
|
13
|
+
return { type: "Remove" /* Remove */, path, originalValue };
|
14
|
+
};
|
15
|
+
var update = (path, value, originalValue) => {
|
16
|
+
return { type: "Update" /* Update */, path, value, originalValue };
|
17
|
+
};
|
18
|
+
export {
|
19
|
+
ObjectDiffType,
|
20
|
+
add,
|
21
|
+
remove,
|
22
|
+
update
|
23
|
+
};
|
24
|
+
//# sourceMappingURL=object-diff.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/object/object-diff.ts"],"sourcesContent":["import { Get } from 'type-fest'\nimport { ConstrainObjectPaths } from '@bessemer/cornerstone/object/object-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 ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {\n type: ObjectDiffType.Add\n path: T\n value: Get<N, T>\n}\n\nexport type RemoveObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {\n type: ObjectDiffType.Remove\n path: T\n originalValue: Get<N, T>\n}\n\nexport type UpdateObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {\n type: ObjectDiffType.Update\n path: T\n value: Get<N, T>\n originalValue: Get<N, T>\n}\n\nexport type MoveObjectDiff<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = {\n type: ObjectDiffType.Move\n path: T\n value: Get<N, T>\n position: number\n originalPosition: number\n}\n\nexport type ObjectDiffEntry<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> =\n | AddObjectDiff<N, T>\n | RemoveObjectDiff<N, T>\n | UpdateObjectDiff<N, T>\n | MoveObjectDiff<N, T>\n\nexport type ConstrainObjectDiffEntries<N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>> = Extract<ObjectDiffEntry<N, T>, { type: T }>\n\nexport type ObjectDiff<N> = { entries: Array<ObjectDiffEntry<N>> }\n\nexport const add = <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(path: T, value: Get<N, T>): AddObjectDiff<N, T> => {\n return { type: ObjectDiffType.Add, path, value }\n}\n\nexport const remove = <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(path: T, originalValue: Get<N, T>): RemoveObjectDiff<N, T> => {\n return { type: ObjectDiffType.Remove, path, originalValue }\n}\n\nexport const update = <N, T extends ConstrainObjectPaths<N> = ConstrainObjectPaths<N>>(\n path: T,\n value: Get<N, T>,\n originalValue: Get<N, T>\n): UpdateObjectDiff<N, T> => {\n return { type: ObjectDiffType.Update, path, value, originalValue }\n}\n"],"mappings":";AAGO,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,UAAO;AAJG,SAAAA;AAAA,GAAA;AA4CL,IAAM,MAAM,CAAiE,MAAS,UAA0C;AACrI,SAAO,EAAE,MAAM,iBAAoB,MAAM,MAAM;AACjD;AAEO,IAAM,SAAS,CAAiE,MAAS,kBAAqD;AACnJ,SAAO,EAAE,MAAM,uBAAuB,MAAM,cAAc;AAC5D;AAEO,IAAM,SAAS,CACpB,MACA,OACA,kBAC2B;AAC3B,SAAO,EAAE,MAAM,uBAAuB,MAAM,OAAO,cAAc;AACnE;","names":["ObjectDiffType"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import Zod from 'zod';
|
2
|
+
import { Get, Paths, UnknownRecord } from 'type-fest';
|
3
|
+
import { JoinPath, NominalType, ToString, ToStringArray } from '@bessemer/cornerstone/types';
|
4
|
+
export type ObjectPathType = string;
|
5
|
+
export type ObjectPath<T extends ObjectPathType = ObjectPathType> = NominalType<Array<string>, ['ObjectPath', T]>;
|
6
|
+
export type ConstrainObjectPaths<N> = ObjectPath<ToString<Paths<N>>>;
|
7
|
+
export declare const of: <T extends Array<string | number>>(value: T) => ObjectPath<JoinPath<ToStringArray<T>>>;
|
8
|
+
export declare const fromString: <T extends ObjectPathType>(path: T) => ObjectPath<T>;
|
9
|
+
export declare const Schema: Zod.ZodPipe<Zod.ZodUnion<readonly [Zod.ZodArray<Zod.ZodUnion<readonly [Zod.ZodString, Zod.ZodNumber]>>, Zod.ZodString]>, Zod.ZodTransform<ObjectPath<string>, string | (string | number)[]>>;
|
10
|
+
export declare const getValue: <N extends UnknownRecord, T extends ObjectPathType>(object: N, path: ObjectPath<T>) => Get<N, T>;
|
11
|
+
export declare const findValue: <N extends UnknownRecord, T extends ObjectPathType>(object: N, path: ObjectPath<T>) => Get<N, T> | undefined;
|
12
|
+
export declare const applyValue: (object: UnknownRecord, path: ObjectPath, valueToApply: unknown) => unknown;
|
13
|
+
//# sourceMappingURL=object-path.d.ts.map
|
@@ -0,0 +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,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAMrD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE5F,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AACnC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;AACjH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpE,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAEpG,CAAA;AAID,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,cAAc,EAAE,MAAM,CAAC,KAAG,UAAU,CAAC,CAAC,CAG1E,CAAA;AAED,eAAO,MAAM,MAAM,8LAMjB,CAAA;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,KAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAQpH,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,KAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAQzH,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,EAAE,cAAc,OAAO,KAAG,OAc3F,CAAA"}
|
@@ -1,33 +1,25 @@
|
|
1
|
-
// src/object-path.ts
|
1
|
+
// src/object/object-path.ts
|
2
2
|
import Zod from "zod";
|
3
3
|
import { isObject } from "@bessemer/cornerstone/object";
|
4
4
|
import { produce } from "immer";
|
5
|
-
import { isNumber } from "@bessemer/cornerstone/math";
|
6
|
-
import { isString } from "@bessemer/cornerstone/string";
|
7
5
|
import { assert } from "@bessemer/cornerstone/assertion";
|
8
6
|
import { isEmpty } from "@bessemer/cornerstone/array";
|
9
7
|
import { failure, success } from "@bessemer/cornerstone/result";
|
10
8
|
var of = (value) => {
|
11
|
-
return value;
|
9
|
+
return value.map((it) => `${it}`);
|
12
10
|
};
|
13
|
-
var
|
14
|
-
var ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\.\d+|\[\d+])*$/;
|
15
|
-
var ObjectPathPartRegex = /([a-zA-Z_$][a-zA-Z0-9_$]*)|\[(\d+)]|\.(\d+)/g;
|
11
|
+
var ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\.\d+)*$/;
|
16
12
|
var fromString = (path) => {
|
17
13
|
assert(ObjectPathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`);
|
18
|
-
|
19
|
-
let match;
|
20
|
-
while ((match = ObjectPathPartRegex.exec(path)) !== null) {
|
21
|
-
if (match[1] !== void 0) {
|
22
|
-
result.push(match[1]);
|
23
|
-
} else if (match[2] !== void 0) {
|
24
|
-
result.push(Number(match[2]));
|
25
|
-
} else if (match[3] !== void 0) {
|
26
|
-
result.push(Number(match[3]));
|
27
|
-
}
|
28
|
-
}
|
29
|
-
return of(result);
|
14
|
+
return of(path.split("."));
|
30
15
|
};
|
16
|
+
var Schema = Zod.union([Zod.array(Zod.union([Zod.string(), Zod.number()])), Zod.string()]).transform((it) => {
|
17
|
+
if (Array.isArray(it)) {
|
18
|
+
return of(it);
|
19
|
+
} else {
|
20
|
+
return fromString(it);
|
21
|
+
}
|
22
|
+
});
|
31
23
|
var getValue = (object, path) => {
|
32
24
|
const result = getValueResult(object, path);
|
33
25
|
if (result.isSuccess) {
|
@@ -59,12 +51,13 @@ var applyValue = (object, path, valueToApply) => {
|
|
59
51
|
var getValueResult = (object, path) => {
|
60
52
|
let value = object;
|
61
53
|
for (const key of path) {
|
62
|
-
if (
|
63
|
-
|
54
|
+
if (Array.isArray(value)) {
|
55
|
+
const numberKey = Number(key);
|
56
|
+
if (numberKey < 0 || numberKey >= value.length) {
|
64
57
|
return failure();
|
65
58
|
}
|
66
|
-
value = value[
|
67
|
-
} else if (
|
59
|
+
value = value[numberKey];
|
60
|
+
} else if (isObject(value)) {
|
68
61
|
if (!(key in value)) {
|
69
62
|
return failure();
|
70
63
|
}
|
@@ -75,10 +68,8 @@ var getValueResult = (object, path) => {
|
|
75
68
|
}
|
76
69
|
return success(value);
|
77
70
|
};
|
78
|
-
var assertLegalIndex = (value,
|
79
|
-
if (
|
80
|
-
return;
|
81
|
-
} else if (isString(key) && isObject(value)) {
|
71
|
+
var assertLegalIndex = (value, _key, object, path) => {
|
72
|
+
if (Array.isArray(value) || isObject(value)) {
|
82
73
|
return;
|
83
74
|
} else {
|
84
75
|
throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`);
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/object/object-path.ts"],"sourcesContent":["import Zod from 'zod'\nimport { Get, Paths, UnknownRecord } from 'type-fest'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { produce } from 'immer'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { isEmpty } from '@bessemer/cornerstone/array'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { JoinPath, NominalType, ToString, ToStringArray } from '@bessemer/cornerstone/types'\n\nexport type ObjectPathType = string\nexport type ObjectPath<T extends ObjectPathType = ObjectPathType> = NominalType<Array<string>, ['ObjectPath', T]>\nexport type ConstrainObjectPaths<N> = ObjectPath<ToString<Paths<N>>>\n\nexport const of = <T extends Array<string | number>>(value: T): ObjectPath<JoinPath<ToStringArray<T>>> => {\n return value.map((it) => `${it}`) as ObjectPath<JoinPath<ToStringArray<T>>>\n}\n\nconst ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]*|\\.\\d+)*$/\n\nexport const fromString = <T extends ObjectPathType>(path: T): ObjectPath<T> => {\n assert(ObjectPathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`)\n return of(path.split('.')) as ObjectPath<T>\n}\n\nexport const Schema = Zod.union([Zod.array(Zod.union([Zod.string(), Zod.number()])), 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 = <N extends UnknownRecord, T extends ObjectPathType>(object: N, path: ObjectPath<T>): Get<N, T> => {\n const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n\nexport const findValue = <N extends UnknownRecord, T extends ObjectPathType>(object: N, path: ObjectPath<T>): Get<N, T> | undefined => {\n const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n return undefined\n }\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 getValueResult = (object: UnknownRecord, path: ObjectPath): Result<any> => {\n let value: any = object\n\n for (const key of path) {\n if (Array.isArray(value)) {\n const numberKey = Number(key)\n if (numberKey < 0 || numberKey >= value.length) {\n return failure()\n }\n\n value = value[numberKey]\n } else if (isObject(value)) {\n if (!(key in value)) {\n return failure()\n }\n\n value = value[key]\n } else {\n return failure()\n }\n }\n\n return success(value)\n}\n\nconst assertLegalIndex = (value: any, _key: string, object: UnknownRecord, path: ObjectPath): void => {\n if (Array.isArray(value) || isObject(value)) {\n return\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n"],"mappings":";AAAA,OAAO,SAAS;AAEhB,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,SAAiB,eAAe;AAOlC,IAAM,KAAK,CAAmC,UAAqD;AACxG,SAAO,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE;AAClC;AAEA,IAAM,kBAAkB;AAEjB,IAAM,aAAa,CAA2B,SAA2B;AAC9E,SAAO,gBAAgB,KAAK,IAAI,GAAG,MAAM,2CAA2C,IAAI,EAAE;AAC1F,SAAO,GAAG,KAAK,MAAM,GAAG,CAAC;AAC3B;AAEO,IAAM,SAAS,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO;AACpH,MAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,WAAO,GAAG,EAAE;AAAA,EACd,OAAO;AACL,WAAO,WAAW,EAAE;AAAA,EACtB;AACF,CAAC;AAEM,IAAM,WAAW,CAAoD,QAAW,SAAmC;AACxH,QAAM,SAAS,eAAe,QAAQ,IAAI;AAE1C,MAAI,OAAO,WAAW;AACpB,WAAO,OAAO;AAAA,EAChB,OAAO;AACL,UAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,EACnG;AACF;AAEO,IAAM,YAAY,CAAoD,QAAW,SAA+C;AACrI,QAAM,SAAS,eAAe,QAAQ,IAAI;AAE1C,MAAI,OAAO,WAAW;AACpB,WAAO,OAAO;AAAA,EAChB,OAAO;AACL,WAAO;AAAA,EACT;AACF;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,iBAAiB,CAAC,QAAuB,SAAkC;AAC/E,MAAI,QAAa;AAEjB,aAAW,OAAO,MAAM;AACtB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,YAAM,YAAY,OAAO,GAAG;AAC5B,UAAI,YAAY,KAAK,aAAa,MAAM,QAAQ;AAC9C,eAAO,QAAQ;AAAA,MACjB;AAEA,cAAQ,MAAM,SAAS;AAAA,IACzB,WAAW,SAAS,KAAK,GAAG;AAC1B,UAAI,EAAE,OAAO,QAAQ;AACnB,eAAO,QAAQ;AAAA,MACjB;AAEA,cAAQ,MAAM,GAAG;AAAA,IACnB,OAAO;AACL,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,QAAQ,KAAK;AACtB;AAEA,IAAM,mBAAmB,CAAC,OAAY,MAAc,QAAuB,SAA2B;AACpG,MAAI,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,GAAG;AAC3C;AAAA,EACF,OAAO;AACL,UAAM,IAAI,MAAM,iCAAiC,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,EACnG;AACF;","names":[]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { JoinPath, NominalType, ToStringArray } from '@bessemer/cornerstone/types';
|
2
|
+
import Zod from 'zod';
|
3
|
+
export type TypePathType = string;
|
4
|
+
export type TypePath<T extends TypePathType = TypePathType> = NominalType<Array<string>, ['TypePath', T]>;
|
5
|
+
export declare const of: <T extends Array<string | number>>(value: T) => TypePath<JoinPath<ToStringArray<T>>>;
|
6
|
+
export declare const fromString: <T extends TypePathType>(path: T) => TypePath<T>;
|
7
|
+
export declare const Schema: Zod.ZodPipe<Zod.ZodUnion<readonly [Zod.ZodArray<Zod.ZodString>, Zod.ZodString]>, Zod.ZodTransform<TypePath<string>, string | string[]>>;
|
8
|
+
export declare const matches: (evaluatingPath: TypePath, targetPath: TypePath) => boolean;
|
9
|
+
//# sourceMappingURL=type-path.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"type-path.d.ts","sourceRoot":"","sources":["../../src/object/type-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAElF,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AACjC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AAEzG,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,KAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAElG,CAAA;AAID,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,YAAY,EAAE,MAAM,CAAC,KAAG,QAAQ,CAAC,CAAC,CAGtE,CAAA;AAED,eAAO,MAAM,MAAM,yIAMjB,CAAA;AAEF,eAAO,MAAM,OAAO,GAAI,gBAAgB,QAAQ,EAAE,YAAY,QAAQ,KAAG,OAuBxE,CAAA"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// src/object/type-path.ts
|
2
|
+
import { assert } from "@bessemer/cornerstone/assertion";
|
3
|
+
import Zod from "zod";
|
4
|
+
var of = (value) => {
|
5
|
+
return value.map((it) => `${it}`);
|
6
|
+
};
|
7
|
+
var TypePathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+]|\[\*])*$/;
|
8
|
+
var fromString = (path) => {
|
9
|
+
assert(TypePathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`);
|
10
|
+
return of(path.split("."));
|
11
|
+
};
|
12
|
+
var Schema = Zod.union([Zod.array(Zod.string()), Zod.string()]).transform((it) => {
|
13
|
+
if (Array.isArray(it)) {
|
14
|
+
return of(it);
|
15
|
+
} else {
|
16
|
+
return fromString(it);
|
17
|
+
}
|
18
|
+
});
|
19
|
+
var matches = (evaluatingPath, targetPath) => {
|
20
|
+
if (targetPath.length !== evaluatingPath.length) {
|
21
|
+
return false;
|
22
|
+
}
|
23
|
+
for (let i = 0; i < targetPath.length; i++) {
|
24
|
+
const evaluatingSegment = evaluatingPath[i];
|
25
|
+
const targetSegment = targetPath[i];
|
26
|
+
if (evaluatingSegment === "*") {
|
27
|
+
continue;
|
28
|
+
}
|
29
|
+
if (targetSegment === "*") {
|
30
|
+
return false;
|
31
|
+
}
|
32
|
+
if (targetSegment !== evaluatingSegment) {
|
33
|
+
return false;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
return true;
|
37
|
+
};
|
38
|
+
export {
|
39
|
+
Schema,
|
40
|
+
fromString,
|
41
|
+
matches,
|
42
|
+
of
|
43
|
+
};
|
44
|
+
//# sourceMappingURL=type-path.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/object/type-path.ts"],"sourcesContent":["import { JoinPath, NominalType, ToStringArray } from '@bessemer/cornerstone/types'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport Zod from 'zod'\n\n// see https://github.com/sinclairnick/jsonpath-ts for type inference examples!\n\nexport type TypePathType = string\nexport type TypePath<T extends TypePathType = TypePathType> = NominalType<Array<string>, ['TypePath', T]>\n\nexport const of = <T extends Array<string | number>>(value: T): TypePath<JoinPath<ToStringArray<T>>> => {\n return value.map((it) => `${it}`) as TypePath<JoinPath<ToStringArray<T>>>\n}\n\nconst TypePathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]*|\\[\\d+]|\\[\\*])*$/\n\nexport const fromString = <T extends TypePathType>(path: T): TypePath<T> => {\n assert(TypePathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`)\n return of(path.split('.')) as TypePath<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 matches = (evaluatingPath: TypePath, targetPath: TypePath): boolean => {\n if (targetPath.length !== evaluatingPath.length) {\n return false\n }\n\n for (let i = 0; i < targetPath.length; i++) {\n const evaluatingSegment = evaluatingPath[i]\n const targetSegment = targetPath[i]\n\n if (evaluatingSegment === '*') {\n continue\n }\n\n if (targetSegment === '*') {\n return false\n }\n\n if (targetSegment !== evaluatingSegment) {\n return false\n }\n }\n\n return true\n}\n"],"mappings":";AACA,SAAS,cAAc;AACvB,OAAO,SAAS;AAOT,IAAM,KAAK,CAAmC,UAAmD;AACtG,SAAO,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE;AAClC;AAEA,IAAM,gBAAgB;AAEf,IAAM,aAAa,CAAyB,SAAyB;AAC1E,SAAO,cAAc,KAAK,IAAI,GAAG,MAAM,2CAA2C,IAAI,EAAE;AACxF,SAAO,GAAG,KAAK,MAAM,GAAG,CAAC;AAC3B;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,UAAU,CAAC,gBAA0B,eAAkC;AAClF,MAAI,WAAW,WAAW,eAAe,QAAQ;AAC/C,WAAO;AAAA,EACT;AAEA,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,oBAAoB,eAAe,CAAC;AAC1C,UAAM,gBAAgB,WAAW,CAAC;AAElC,QAAI,sBAAsB,KAAK;AAC7B;AAAA,IACF;AAEA,QAAI,kBAAkB,KAAK;AACzB,aAAO;AAAA,IACT;AAEA,QAAI,kBAAkB,mBAAmB;AACvC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
|
package/dist/types.d.ts
CHANGED
@@ -17,4 +17,9 @@ export type DeepPartial<T> = {
|
|
17
17
|
[P in keyof T]?: T[P] extends Array<infer U> ? DeepPartial<U>[] : T[P] extends object | undefined ? DeepPartial<T[P]> : T[P];
|
18
18
|
};
|
19
19
|
export type BasicType = string | number | boolean | Date;
|
20
|
+
export type ToString<T> = T extends string | number ? `${T}` : never;
|
21
|
+
export type ToStringArray<T extends Array<string | number>> = {
|
22
|
+
[K in keyof T]: T[K] extends string | number ? `${T[K]}` : never;
|
23
|
+
};
|
24
|
+
export type JoinPath<T extends readonly string[]> = T extends readonly [infer First, ...infer Rest] ? First extends string ? Rest extends readonly string[] ? Rest['length'] extends 0 ? First : `${First}.${JoinPath<Rest>}` : never : never : '';
|
20
25
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAE5B,MAAM,WAAW,aAAa,CAAC,cAAc;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAA;AAE9E,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE1C,MAAM,MAAM,YAAY,CAAC,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IACzE,CAAC,MAAM,CAAC,EAAE;SACP,CAAC,IAAI,aAAa,GAAG,IAAI;KAC3B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3G,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7H,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA"}
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAE5B,MAAM,WAAW,aAAa,CAAC,cAAc;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAA;AAE9E,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE1C,MAAM,MAAM,YAAY,CAAC,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;IACzE,CAAC,MAAM,CAAC,EAAE;SACP,CAAC,IAAI,aAAa,GAAG,IAAI;KAC3B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3G,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7H,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAExD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK,CAAA;AAEpE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK;CACjE,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC/F,KAAK,SAAS,MAAM,GAClB,IAAI,SAAS,SAAS,MAAM,EAAE,GAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtB,KAAK,GACL,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,GAC9B,KAAK,GACP,KAAK,GACP,EAAE,CAAA"}
|
package/package.json
CHANGED
package/dist/object-path.d.ts
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
import { TaggedType } from '@bessemer/cornerstone/types';
|
2
|
-
import Zod from 'zod';
|
3
|
-
import { UnknownRecord } from 'type-fest';
|
4
|
-
export type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>;
|
5
|
-
export declare const of: (value: Array<string | number>) => ObjectPath;
|
6
|
-
export declare const Schema: Zod.ZodPipe<Zod.ZodArray<Zod.ZodUnion<readonly [Zod.ZodString, Zod.ZodNumber]>>, Zod.ZodTransform<ObjectPath, (string | number)[]>>;
|
7
|
-
export declare const fromString: (path: string) => ObjectPath;
|
8
|
-
export declare const getValue: (object: UnknownRecord, path: ObjectPath) => unknown;
|
9
|
-
export declare const findValue: (object: UnknownRecord, path: ObjectPath) => unknown | undefined;
|
10
|
-
export declare const applyValue: (object: UnknownRecord, path: ObjectPath, valueToApply: unknown) => unknown;
|
11
|
-
//# sourceMappingURL=object-path.d.ts.map
|
@@ -1 +0,0 @@
|
|
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,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AASzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;AAEzE,eAAO,MAAM,EAAE,GAAI,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,UAElD,CAAA;AAED,eAAO,MAAM,MAAM,qIAAmE,CAAA;AAKtF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,UAoBzC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,KAAG,OAQlE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,KAAG,OAAO,GAAG,SAQ7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,EAAE,cAAc,OAAO,KAAG,OAc3F,CAAA"}
|
package/dist/object-path.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/object-path.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod 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'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\n\nexport type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>\n\nexport const of = (value: Array<string | number>): ObjectPath => {\n return value as ObjectPath\n}\n\nexport const Schema = Zod.array(Zod.union([Zod.string(), Zod.number()])).transform(of)\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 const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n\nexport const findValue = (object: UnknownRecord, path: ObjectPath): unknown | undefined => {\n const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n return undefined\n }\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 getValueResult = (object: UnknownRecord, path: ObjectPath): Result<any> => {\n let value: any = object\n\n for (const key of path) {\n if (isNumber(key) && Array.isArray(value)) {\n if (key < 0 || key >= value.length) {\n return failure()\n }\n\n value = value[key]\n } else if (isString(key) && isObject(value)) {\n if (!(key in value)) {\n return failure()\n }\n\n value = value[key]\n } else {\n return failure()\n }\n }\n\n return success(value)\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":"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","names":[]}
|