@bessemer/cornerstone 0.5.63 → 0.5.64
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/array.d.ts +23 -30
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +108 -58
- package/dist/array.js.map +1 -1
- package/dist/assertion.d.ts +1 -7
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +9 -46
- package/dist/assertion.js.map +1 -1
- package/dist/async-value.js +2 -2
- package/dist/async-value.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +2 -2
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts +5 -5
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +21 -17
- package/dist/cache.js.map +1 -1
- package/dist/combinable.d.ts.map +1 -1
- package/dist/combinable.js +5 -4
- package/dist/combinable.js.map +1 -1
- package/dist/comparator.d.ts.map +1 -1
- package/dist/comparator.js +9 -8
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +2 -2
- package/dist/date.d.ts +1 -1
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +5 -4
- package/dist/date.js.map +1 -1
- package/dist/either.d.ts +0 -1
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +2 -3
- package/dist/either.js.map +1 -1
- package/dist/entry.d.ts +9 -7
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +5 -1
- package/dist/entry.js.map +1 -1
- package/dist/equalitor.d.ts +2 -1
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +6 -2
- package/dist/equalitor.js.map +1 -1
- package/dist/error-event.d.ts +5 -0
- package/dist/error-event.d.ts.map +1 -1
- package/dist/error-event.js +45 -12
- package/dist/error-event.js.map +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/expression/array-expression.js +1 -1
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -9
- package/dist/logger.js.map +1 -1
- package/dist/map.d.ts +18 -0
- package/dist/map.d.ts.map +1 -0
- package/dist/map.js +110 -0
- package/dist/map.js.map +1 -0
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +4 -7
- package/dist/math.js.map +1 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +4 -3
- package/dist/misc.js.map +1 -1
- package/dist/monetary-amount.d.ts +8 -2
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +23 -6
- package/dist/monetary-amount.js.map +1 -1
- package/dist/object.d.ts +5 -16
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +64 -19
- package/dist/object.js.map +1 -1
- package/dist/patch.d.ts.map +1 -1
- package/dist/patch.js +6 -5
- package/dist/patch.js.map +1 -1
- package/dist/property.d.ts.map +1 -1
- package/dist/property.js +5 -4
- package/dist/property.js.map +1 -1
- package/dist/range.d.ts +3 -1
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +2 -2
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +1 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +13 -10
- package/dist/reference.js.map +1 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +2 -2
- package/dist/resource.js.map +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +6 -5
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +14 -9
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.js +2 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts +3 -2
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +6 -4
- package/dist/signature.js.map +1 -1
- package/dist/store.d.ts +13 -13
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +9 -7
- package/dist/store.js.map +1 -1
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +3 -4
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +12 -12
- package/dist/tag.js.map +1 -1
- package/dist/uri.d.ts.map +1 -1
- package/dist/uri.js +52 -50
- package/dist/uri.js.map +1 -1
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js.map +1 -1
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +4 -3
- package/dist/uuid.js.map +1 -1
- package/package.json +1 -1
package/dist/property.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/property.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/property.ts"],"sourcesContent":["import { resolve as resolveTag, SerializedTags, serializeTags, Tag, TaggedValue } from '@bessemer/cornerstone/tag'\nimport { UnknownRecord } from 'type-fest'\nimport { DeepPartial } from '@bessemer/cornerstone/types'\nimport { deepMergeAll } from '@bessemer/cornerstone/object'\n\nexport type PropertyRecord<T extends UnknownRecord> = {\n values: T\n overrides: Record<SerializedTags, PropertyOverride<T>>\n}\n\nexport type PropertyOverride<T> = TaggedValue<DeepPartial<T>>\n\nexport const properties = <T extends UnknownRecord>(values: T, overrides?: Array<PropertyOverride<T>>): PropertyRecord<T> => {\n const propertyOverrideEntries = (overrides ?? []).map((override) => {\n return [serializeTags(override.tags), override]\n })\n\n const propertyOverrides: Record<SerializedTags, PropertyOverride<T>> = Object.fromEntries(propertyOverrideEntries)\n\n return {\n values,\n overrides: propertyOverrides,\n }\n}\n\nexport const resolve = <T extends UnknownRecord>(properties: PropertyRecord<T>, tags: Array<Tag>): T => {\n const overrides = resolveTag(Object.values(properties.overrides), tags)\n return deepMergeAll([properties.values, ...overrides.reverse()]) as T\n}\n"],"mappings":";AAAA,SAAS,WAAW,YAA4B,qBAAuC;AAGvF,SAAS,oBAAoB;AAStB,IAAM,aAAa,CAA0B,QAAW,cAA8D;AAC3H,QAAM,2BAA2B,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa;AAClE,WAAO,CAAC,cAAc,SAAS,IAAI,GAAG,QAAQ;AAAA,EAChD,CAAC;AAED,QAAM,oBAAiE,OAAO,YAAY,uBAAuB;AAEjH,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,EACb;AACF;AAEO,IAAM,UAAU,CAA0BA,aAA+B,SAAwB;AACtG,QAAM,YAAY,WAAW,OAAO,OAAOA,YAAW,SAAS,GAAG,IAAI;AACtE,SAAO,aAAa,CAACA,YAAW,QAAQ,GAAG,UAAU,QAAQ,CAAC,CAAC;AACjE;","names":["properties"]}
|
package/dist/range.d.ts
CHANGED
@@ -3,7 +3,9 @@ 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
5
|
export declare const schema: <T>(type: ZodType<T>) => ZodType<Bounds<T>>;
|
6
|
-
export type NumericBounds
|
6
|
+
export type NumericBounds = Bounds<number>;
|
7
7
|
export declare const NumericSchema: Zod.ZodType<Bounds<number>, Zod.ZodTypeDef, Bounds<number>>;
|
8
|
+
export type FiniteBounds<T> = [T, T];
|
9
|
+
export type FiniteNumericBounds = FiniteBounds<number>;
|
8
10
|
export declare const of: <T>(bounds: BoundsInput<T>) => Bounds<T>;
|
9
11
|
//# sourceMappingURL=range.d.ts.map
|
package/dist/range.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"
|
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,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAE7D,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1C,eAAO,MAAM,aAAa,6DAAuB,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
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
// src/range.ts
|
2
|
-
import { Objects } from "@bessemer/cornerstone";
|
3
2
|
import Zod from "zod";
|
3
|
+
import { isUndefined } from "@bessemer/cornerstone/object";
|
4
4
|
var schema = (type) => {
|
5
5
|
return Zod.tuple([type.nullable(), type.nullable()]);
|
6
6
|
};
|
7
7
|
var NumericSchema = schema(Zod.number());
|
8
8
|
var of = (bounds) => {
|
9
|
-
if (
|
9
|
+
if (isUndefined(bounds[1])) {
|
10
10
|
return [bounds[0], null];
|
11
11
|
}
|
12
12
|
return bounds;
|
package/dist/range.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/range.ts"],"sourcesContent":["import {
|
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: ZodType<T>): ZodType<Bounds<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,CAAI,SAAyC;AACjE,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":[]}
|
package/dist/reference.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import { Equalitors } from '@bessemer/cornerstone';
|
2
1
|
import { Comparator } from '@bessemer/cornerstone/comparator';
|
3
2
|
import { NominalType } from '@bessemer/cornerstone/types';
|
4
3
|
export type ReferenceId<T extends string> = NominalType<string, ['ReferenceId', T]>;
|
@@ -18,5 +17,5 @@ export declare const isReference: (element: unknown) => element is Reference<str
|
|
18
17
|
export declare const getReference: <T extends Reference<string>>(reference: ReferencableType<T>) => T;
|
19
18
|
export declare const equals: <T extends string>(first: Reference<T>, second: Reference<T>) => boolean;
|
20
19
|
export declare const comparator: <T extends string>() => Comparator<Reference<T>>;
|
21
|
-
export declare const equalitor: () =>
|
20
|
+
export declare const equalitor: () => import("@bessemer/cornerstone/equalitor").Equalitor<Reference<string>>;
|
22
21
|
//# sourceMappingURL=reference.d.ts.map
|
package/dist/reference.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAKzD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAEpE,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAA;CACb;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,KAAG,SAAS,CAAC,OAAO,IAAI,CAUnI,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAO1F,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,SAAS,CAAC,MAAM,CAOzE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,gBAAgB,CAAC,CAAC,CAAC,KAAG,CAO1F,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC,KAAG,OAEpF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,OAAK,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAEtE,CAAA;AAED,eAAO,MAAM,SAAS,8EAAqC,CAAA"}
|
package/dist/reference.js
CHANGED
@@ -1,32 +1,35 @@
|
|
1
1
|
// src/reference.ts
|
2
|
-
import {
|
2
|
+
import { compareBy, natural } from "@bessemer/cornerstone/comparator";
|
3
|
+
import { isString } from "@bessemer/cornerstone/string";
|
4
|
+
import { isObject, isPresent, isUndefined } from "@bessemer/cornerstone/object";
|
5
|
+
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
3
6
|
var reference = (reference2, type, note) => {
|
4
|
-
if (!
|
7
|
+
if (!isString(reference2)) {
|
5
8
|
return reference2;
|
6
9
|
}
|
7
10
|
return {
|
8
11
|
id: reference2,
|
9
12
|
type,
|
10
|
-
...
|
13
|
+
...isPresent(note) ? { note } : {}
|
11
14
|
};
|
12
15
|
};
|
13
16
|
var isReferencable = (element) => {
|
14
|
-
if (!
|
17
|
+
if (!isObject(element)) {
|
15
18
|
return false;
|
16
19
|
}
|
17
20
|
const referencable = element;
|
18
|
-
return !
|
21
|
+
return !isUndefined(referencable.reference);
|
19
22
|
};
|
20
23
|
var isReference = (element) => {
|
21
|
-
if (!
|
24
|
+
if (!isObject(element)) {
|
22
25
|
return false;
|
23
26
|
}
|
24
27
|
const referencable = element;
|
25
|
-
return !
|
28
|
+
return !isUndefined(referencable.id) && !isUndefined(referencable.type) && !isUndefined(referencable.note);
|
26
29
|
};
|
27
30
|
var getReference = (reference2) => {
|
28
31
|
const referencable = reference2;
|
29
|
-
if (
|
32
|
+
if (isPresent(referencable.reference)) {
|
30
33
|
return referencable.reference;
|
31
34
|
} else {
|
32
35
|
return reference2;
|
@@ -36,9 +39,9 @@ var equals = (first, second) => {
|
|
36
39
|
return first.id === second.id;
|
37
40
|
};
|
38
41
|
var comparator = () => {
|
39
|
-
return
|
42
|
+
return compareBy((it) => it.id, natural());
|
40
43
|
};
|
41
|
-
var equalitor = () =>
|
44
|
+
var equalitor = () => fromComparator(comparator());
|
42
45
|
export {
|
43
46
|
comparator,
|
44
47
|
equalitor,
|
package/dist/reference.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/reference.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/reference.ts"],"sourcesContent":["import { Comparator, compareBy, natural } from '@bessemer/cornerstone/comparator'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isObject, isPresent, isUndefined } from '@bessemer/cornerstone/object'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\n\nexport type ReferenceId<T extends string> = NominalType<string, ['ReferenceId', T]>\n\nexport type Reference<T extends string> = {\n id: ReferenceId<T>\n type: T\n note?: string\n}\n\nexport type ReferenceType<T extends Reference<string>> = T | T['id']\n\nexport interface Referencable<T extends Reference<string>> {\n reference: T\n}\n\nexport type ReferencableType<T extends Reference<string>> = T | Referencable<T>\n\nexport const reference = <T extends string>(reference: Reference<T> | ReferenceId<T>, type: T, note?: string): Reference<typeof type> => {\n if (!isString(reference)) {\n return reference\n }\n\n return {\n id: reference,\n type,\n ...(isPresent(note) ? { note: note } : {}),\n }\n}\n\nexport const isReferencable = (element: unknown): element is Referencable<Reference<string>> => {\n if (!isObject(element)) {\n return false\n }\n\n const referencable = element as unknown as Referencable<Reference<string>>\n return !isUndefined(referencable.reference)\n}\n\nexport const isReference = (element: unknown): element is Reference<string> => {\n if (!isObject(element)) {\n return false\n }\n\n const referencable = element as Reference<string>\n return !isUndefined(referencable.id) && !isUndefined(referencable.type) && !isUndefined(referencable.note)\n}\n\nexport const getReference = <T extends Reference<string>>(reference: ReferencableType<T>): T => {\n const referencable = reference as Referencable<T>\n if (isPresent(referencable.reference)) {\n return referencable.reference\n } else {\n return reference as T\n }\n}\n\nexport const equals = <T extends string>(first: Reference<T>, second: Reference<T>): boolean => {\n return first.id === second.id\n}\n\nexport const comparator = <T extends string>(): Comparator<Reference<T>> => {\n return compareBy((it) => it.id, natural())\n}\n\nexport const equalitor = () => fromComparator(comparator())\n"],"mappings":";AAAA,SAAqB,WAAW,eAAe;AAE/C,SAAS,gBAAgB;AACzB,SAAS,UAAU,WAAW,mBAAmB;AACjD,SAAS,sBAAsB;AAkBxB,IAAM,YAAY,CAAmBA,YAA0C,MAAS,SAA0C;AACvI,MAAI,CAAC,SAASA,UAAS,GAAG;AACxB,WAAOA;AAAA,EACT;AAEA,SAAO;AAAA,IACL,IAAIA;AAAA,IACJ;AAAA,IACA,GAAI,UAAU,IAAI,IAAI,EAAE,KAAW,IAAI,CAAC;AAAA,EAC1C;AACF;AAEO,IAAM,iBAAiB,CAAC,YAAiE;AAC9F,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAC,YAAY,aAAa,SAAS;AAC5C;AAEO,IAAM,cAAc,CAAC,YAAmD;AAC7E,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAC,YAAY,aAAa,EAAE,KAAK,CAAC,YAAY,aAAa,IAAI,KAAK,CAAC,YAAY,aAAa,IAAI;AAC3G;AAEO,IAAM,eAAe,CAA8BA,eAAsC;AAC9F,QAAM,eAAeA;AACrB,MAAI,UAAU,aAAa,SAAS,GAAG;AACrC,WAAO,aAAa;AAAA,EACtB,OAAO;AACL,WAAOA;AAAA,EACT;AACF;AAEO,IAAM,SAAS,CAAmB,OAAqB,WAAkC;AAC9F,SAAO,MAAM,OAAO,OAAO;AAC7B;AAEO,IAAM,aAAa,MAAkD;AAC1E,SAAO,UAAU,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC;AAC3C;AAEO,IAAM,YAAY,MAAM,eAAe,WAAW,CAAC;","names":["reference"]}
|
package/dist/resource.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAGlC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AACxE,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,iBAAiB,CAAgB,CAAA;AAE/E,yBAAiB,WAAW,CAAC;IAGpB,MAAM,SAAS,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE1E,CAAA;IAEM,MAAM,YAAY,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAEtG,CAAA;IAEM,MAAM,cAAc,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE/E,CAAA;IAEM,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAE3G,CAAA;IAEM,MAAM,eAAe,GAAI,GAAG,YAAY,KAAK,CAAC,iBAAiB,CAAC,KAAG,iBAEzE,CAAA;CACF"}
|
package/dist/resource.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// src/resource.ts
|
2
|
-
import { Strings } from "@bessemer/cornerstone";
|
3
2
|
import Zod from "zod";
|
3
|
+
import { removeStart } from "@bessemer/cornerstone/string";
|
4
4
|
var ResourceNamespaceSchema = Zod.string();
|
5
5
|
var ResourceKey;
|
6
6
|
((ResourceKey2) => {
|
@@ -12,7 +12,7 @@ var ResourceKey;
|
|
12
12
|
return keys.map((it) => ResourceKey2.namespace(namespace2, it));
|
13
13
|
};
|
14
14
|
ResourceKey2.stripNamespace = (namespace2, key) => {
|
15
|
-
return
|
15
|
+
return removeStart(key, `${namespace2}${ResourceNamespaceSeparator}`);
|
16
16
|
};
|
17
17
|
ResourceKey2.stripNamespaceAll = (namespace2, keys) => {
|
18
18
|
return keys.map((it) => ResourceKey2.stripNamespace(namespace2, it));
|
package/dist/resource.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/resource.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport {
|
1
|
+
{"version":3,"sources":["../src/resource.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\nimport { removeStart } from '@bessemer/cornerstone/string'\n\nexport type ResourceKey = string\n\nexport type ResourceNamespace = NominalType<string, 'ResourceNamespace'>\nexport const ResourceNamespaceSchema: ZodType<ResourceNamespace> = Zod.string()\n\nexport namespace ResourceKey {\n const ResourceNamespaceSeparator = '/'\n\n export const namespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return `${namespace}${ResourceNamespaceSeparator}${key}`\n }\n\n export const namespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.namespace(namespace, it))\n }\n\n export const stripNamespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return removeStart(key, `${namespace}${ResourceNamespaceSeparator}`)\n }\n\n export const stripNamespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.stripNamespace(namespace, it))\n }\n\n export const extendNamespace = (...namespaces: Array<ResourceNamespace>): ResourceNamespace => {\n return namespaces.join(ResourceNamespaceSeparator)\n }\n}\n"],"mappings":";AACA,OAAO,SAAsB;AAC7B,SAAS,mBAAmB;AAKrB,IAAM,0BAAsD,IAAI,OAAO;AAEvE,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACL,QAAM,6BAA6B;AAE5B,EAAMA,aAAA,YAAY,CAACC,YAA8B,QAAkC;AACxF,WAAO,GAAGA,UAAS,GAAG,0BAA0B,GAAG,GAAG;AAAA,EACxD;AAEO,EAAMD,aAAA,eAAe,CAACC,YAA8B,SAAiD;AAC1G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,UAAUC,YAAW,EAAE,CAAC;AAAA,EAC9D;AAEO,EAAMD,aAAA,iBAAiB,CAACC,YAA8B,QAAkC;AAC7F,WAAO,YAAY,KAAK,GAAGA,UAAS,GAAG,0BAA0B,EAAE;AAAA,EACrE;AAEO,EAAMD,aAAA,oBAAoB,CAACC,YAA8B,SAAiD;AAC/G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,eAAeC,YAAW,EAAE,CAAC;AAAA,EACnE;AAEO,EAAMD,aAAA,kBAAkB,IAAI,eAA4D;AAC7F,WAAO,WAAW,KAAK,0BAA0B;AAAA,EACnD;AAAA,GArBe;","names":["ResourceKey","namespace"]}
|
package/dist/result.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAS,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAGvD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG;IAClC,SAAS,EAAE,IAAI,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;IAC7C,SAAS,EAAE,KAAK,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;AAC5C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/C,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,CAAC,CAE9C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,UAAU,SAAS,KAAG,OAE7C,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAG,CAMtD,CAAA;AAED,wBAAgB,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACxG,wBAAgB,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAc1F,wBAAgB,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AACnG,wBAAgB,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AAc7G,wBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAC5C,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,GACnD,MAAM,CAAC,YAAY,CAAC,CAStB"}
|
package/dist/result.js
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
// src/result.ts
|
2
|
-
import {
|
2
|
+
import { left, right } from "@bessemer/cornerstone/either";
|
3
|
+
import { isPromise } from "@bessemer/cornerstone/promise";
|
3
4
|
var success = (value) => {
|
4
|
-
return { ...
|
5
|
+
return { ...right(value), isSuccess: true };
|
5
6
|
};
|
6
7
|
var failure = (failure2) => {
|
7
|
-
return { ...
|
8
|
+
return { ...left(failure2 ?? null), isSuccess: false };
|
8
9
|
};
|
9
10
|
var getValueOrThrow = (result) => {
|
10
11
|
if (result.isSuccess) {
|
@@ -16,7 +17,7 @@ var getValueOrThrow = (result) => {
|
|
16
17
|
function tryValue(resolver) {
|
17
18
|
try {
|
18
19
|
let result = resolver();
|
19
|
-
if (
|
20
|
+
if (isPromise(result)) {
|
20
21
|
return result.then((it) => success(it)).catch((it) => failure(it));
|
21
22
|
} else {
|
22
23
|
return success(result);
|
@@ -28,7 +29,7 @@ function tryValue(resolver) {
|
|
28
29
|
function tryResult(resolver) {
|
29
30
|
try {
|
30
31
|
let result = resolver();
|
31
|
-
if (
|
32
|
+
if (isPromise(result)) {
|
32
33
|
return result.catch((it) => failure(it));
|
33
34
|
} else {
|
34
35
|
return result;
|
package/dist/result.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { Left, Right } from '@bessemer/cornerstone/either'\nimport {
|
1
|
+
{"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { left, Left, right, Right } from '@bessemer/cornerstone/either'\nimport { Throwable } from '@bessemer/cornerstone/types'\nimport { isPromise } from '@bessemer/cornerstone/promise'\n\nexport type Success<T> = Right<T> & {\n isSuccess: true\n}\n\nexport type Failure = Left<Throwable | null> & {\n isSuccess: false\n}\n\nexport type Result<T> = Success<T> | Failure\nexport type AsyncResult<T> = Promise<Result<T>>\n\nexport const success = <T>(value: T): Success<T> => {\n return { ...right(value), isSuccess: true }\n}\n\nexport const failure = (failure?: Throwable): Failure => {\n return { ...left(failure ?? null), isSuccess: false }\n}\n\nexport const getValueOrThrow = <T>(result: Result<T>): T => {\n if (result.isSuccess) {\n return result.value\n } else {\n throw result.value\n }\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function map<SOURCE_VALUE, TARGET_VALUE>(\n result: Result<SOURCE_VALUE>,\n valueMapper: (element: SOURCE_VALUE) => TARGET_VALUE\n): Result<TARGET_VALUE> {\n if (result.isSuccess) {\n return {\n ...result,\n value: valueMapper(result.value),\n }\n } else {\n return result\n }\n}\n"],"mappings":";AAAA,SAAS,MAAY,aAAoB;AAEzC,SAAS,iBAAiB;AAanB,IAAM,UAAU,CAAI,UAAyB;AAClD,SAAO,EAAE,GAAG,MAAM,KAAK,GAAG,WAAW,KAAK;AAC5C;AAEO,IAAM,UAAU,CAACA,aAAiC;AACvD,SAAO,EAAE,GAAG,KAAKA,YAAW,IAAI,GAAG,WAAW,MAAM;AACtD;AAEO,IAAM,kBAAkB,CAAI,WAAyB;AAC1D,MAAI,OAAO,WAAW;AACpB,WAAO,OAAO;AAAA,EAChB,OAAO;AACL,UAAM,OAAO;AAAA,EACf;AACF;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAEO,SAAS,IACd,QACA,aACsB;AACtB,MAAI,OAAO,WAAW;AACpB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,YAAY,OAAO,KAAK;AAAA,IACjC;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;","names":["failure"]}
|
package/dist/retry.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0C,MAAM,gCAAgC,CAAA;AACjG,OAAO,EAAE,WAAW,EAAW,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,iBAAiB,YAAY,KAAG,UAQ1D,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAa7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,YAAY,KAAG,WAAW,CAAC,CAAC,CAiBpH,CAAA"}
|
package/dist/retry.js
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
// src/retry.ts
|
2
|
-
import {
|
2
|
+
import { fromMilliseconds, toMilliseconds, Zero } from "@bessemer/cornerstone/duration";
|
3
|
+
import { failure } from "@bessemer/cornerstone/result";
|
4
|
+
import { deepMerge, isUndefined } from "@bessemer/cornerstone/object";
|
5
|
+
import { assertTrue } from "@bessemer/cornerstone/assertion";
|
6
|
+
import { sleep } from "@bessemer/cornerstone/async";
|
7
|
+
import { random } from "@bessemer/cornerstone/math";
|
3
8
|
var None = {
|
4
9
|
attempts: 0,
|
5
|
-
delay:
|
10
|
+
delay: Zero
|
6
11
|
};
|
7
12
|
var DefaultRetryProps = {
|
8
13
|
attempts: 3,
|
9
|
-
delay:
|
14
|
+
delay: fromMilliseconds(500)
|
10
15
|
};
|
11
16
|
var initialize = (initialOptions) => {
|
12
|
-
const props =
|
13
|
-
|
17
|
+
const props = deepMerge(DefaultRetryProps, initialOptions);
|
18
|
+
assertTrue(props.attempts >= 0, () => "usingRetry attempts must be >= 0");
|
14
19
|
return {
|
15
20
|
attempt: 0,
|
16
21
|
props
|
@@ -20,9 +25,9 @@ var retry = async (state) => {
|
|
20
25
|
if (state.attempt >= state.props.attempts - 1) {
|
21
26
|
return void 0;
|
22
27
|
}
|
23
|
-
const delayMs =
|
28
|
+
const delayMs = toMilliseconds(state.props.delay);
|
24
29
|
const maxJitterMs = delayMs * 0.3;
|
25
|
-
await
|
30
|
+
await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)));
|
26
31
|
return {
|
27
32
|
props: state.props,
|
28
33
|
attempt: state.attempt + 1
|
@@ -30,7 +35,7 @@ var retry = async (state) => {
|
|
30
35
|
};
|
31
36
|
var usingRetry = async (runnable, initialOptions) => {
|
32
37
|
let retryState = initialize(initialOptions);
|
33
|
-
let previousResult =
|
38
|
+
let previousResult = failure();
|
34
39
|
do {
|
35
40
|
const result = await runnable();
|
36
41
|
previousResult = result;
|
@@ -38,7 +43,7 @@ var usingRetry = async (runnable, initialOptions) => {
|
|
38
43
|
return result;
|
39
44
|
}
|
40
45
|
retryState = await retry(retryState);
|
41
|
-
} while (!
|
46
|
+
} while (!isUndefined(retryState));
|
42
47
|
return previousResult;
|
43
48
|
};
|
44
49
|
export {
|
package/dist/retry.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration } from '@bessemer/cornerstone/duration'\nimport {
|
1
|
+
{"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration, fromMilliseconds, toMilliseconds, Zero } from '@bessemer/cornerstone/duration'\nimport { AsyncResult, failure, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\nimport { deepMerge, isUndefined } from '@bessemer/cornerstone/object'\nimport { assertTrue } from '@bessemer/cornerstone/assertion'\nimport { sleep } from '@bessemer/cornerstone/async'\nimport { random } from '@bessemer/cornerstone/math'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = deepMerge(DefaultRetryProps, initialOptions)\n assertTrue(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (result.isSuccess) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AAAA,SAAmB,kBAAkB,gBAAgB,YAAY;AACjE,SAAsB,eAAuB;AAE7C,SAAS,WAAW,mBAAmB;AACvC,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,cAAc;AAShB,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,iBAAiB,GAAG;AAC7B;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,UAAU,mBAAmB,cAAc;AACzD,aAAW,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAExE,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,MAAM,MAAM,KAAK;AAChD,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,iBAAiB,UAAU,OAAO,GAAG,WAAW,CAAC,CAAC;AAE9D,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAA4B,QAAQ;AAExC,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAI,OAAO,WAAW;AACpB,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,YAAY,UAAU;AAEhC,SAAO;AACT;","names":[]}
|
package/dist/rich-text.js
CHANGED
package/dist/rich-text.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/rich-text.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport {
|
1
|
+
{"version":3,"sources":["../src/rich-text.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\n\n// These are to match TipTap types, but without us having to depend on the TipTap library\nexport type RichTextJson = {\n type?: string\n attrs?: Record<string, any>\n content?: RichTextJson[]\n marks?: {\n type: string\n attrs?: Record<string, any>\n [key: string]: any\n }[]\n text?: string\n [key: string]: any\n}\n\nexport type RichTextString = NominalType<string, 'RichTextString'>\n\nexport type RichText = RichTextString | RichTextJson\n\nexport const isJson = (text: RichText): text is RichTextJson => {\n return isObject(text)\n}\n"],"mappings":";AACA,SAAS,gBAAgB;AAoBlB,IAAM,SAAS,CAAC,SAAyC;AAC9D,SAAO,SAAS,IAAI;AACtB;","names":[]}
|
package/dist/signature.d.ts
CHANGED
@@ -5,6 +5,7 @@ export type Signable = BasicType | null | {
|
|
5
5
|
} | {
|
6
6
|
reference: Reference<string>;
|
7
7
|
};
|
8
|
-
export
|
9
|
-
export declare const
|
8
|
+
export type Signature = string | number | null;
|
9
|
+
export declare const sign: (value: Signable) => Signature;
|
10
|
+
export declare const signAll: (values: Array<Signable>) => Array<Signature>;
|
10
11
|
//# sourceMappingURL=signature.d.ts.map
|
package/dist/signature.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAOvD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,SAyBtC,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,SAAS,CAEhE,CAAA"}
|
package/dist/signature.js
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
// src/signature.ts
|
2
|
-
import {
|
2
|
+
import { isReferencable } from "@bessemer/cornerstone/reference";
|
3
|
+
import { isObject } from "@bessemer/cornerstone/object";
|
4
|
+
import { isDate } from "@bessemer/cornerstone/date";
|
3
5
|
var sign = (value) => {
|
4
6
|
if (value === null) {
|
5
7
|
return null;
|
6
8
|
}
|
7
|
-
if (
|
8
|
-
if (
|
9
|
+
if (isObject(value)) {
|
10
|
+
if (isReferencable(value)) {
|
9
11
|
return value.reference.id;
|
10
12
|
} else {
|
11
13
|
return value.id;
|
12
14
|
}
|
13
15
|
}
|
14
|
-
if (
|
16
|
+
if (isDate(value)) {
|
15
17
|
return value.getTime();
|
16
18
|
}
|
17
19
|
if (value === true) {
|
package/dist/signature.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { isReferencable, Reference } from '@bessemer/cornerstone/reference'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { isDate } from '@bessemer/cornerstone/date'\n\n// JOHN it is probably worth revisiting this in the context of using this library code more frequently... in particular\n// all of these things have similar properties (\"primitives\", sortable, value equality, etc.) but this method of implementation\n// forces them all to be converted to strings or numbers first which is an expensive operation.\nexport type Signable = BasicType | null | { id: string } | { reference: Reference<string> }\nexport type Signature = string | number | null\n\nexport const sign = (value: Signable): Signature => {\n if (value === null) {\n return null\n }\n\n if (isObject(value)) {\n if (isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\n }\n\n if (isDate(value)) {\n return value.getTime()\n }\n\n if (value === true) {\n return 1\n }\n if (value === false) {\n return 0\n }\n\n return value\n}\n\nexport const signAll = (values: Array<Signable>): Array<Signature> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,SAAS,sBAAiC;AAE1C,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAQhB,IAAM,OAAO,CAAC,UAA+B;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,eAAe,KAAK,GAAG;AACzB,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,GAAG;AACjB,WAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAA8C;AACpE,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
|
package/dist/store.d.ts
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
import { ResourceKey } from '@bessemer/cornerstone/resource';
|
2
|
-
import {
|
2
|
+
import { RecordEntry } from '@bessemer/cornerstone/entry';
|
3
3
|
export interface LocalStore<T> {
|
4
4
|
setValue: (value: T | undefined) => void;
|
5
5
|
getValue: () => T | undefined;
|
6
6
|
}
|
7
7
|
export interface LocalKeyValueStore<T> {
|
8
|
-
setValues: (entries: Array<
|
8
|
+
setValues: (entries: Array<RecordEntry<T | undefined>>) => void;
|
9
9
|
setValue: (key: ResourceKey, value: T | undefined) => void;
|
10
|
-
getEntries: () => Array<
|
11
|
-
getValues: (keys: Array<ResourceKey>) => Array<
|
10
|
+
getEntries: () => Array<RecordEntry<T>>;
|
11
|
+
getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>;
|
12
12
|
getValue: (key: ResourceKey) => T | undefined;
|
13
13
|
}
|
14
14
|
export interface RemoteStore<T> {
|
@@ -16,25 +16,25 @@ export interface RemoteStore<T> {
|
|
16
16
|
fetchValue: () => Promise<T | undefined>;
|
17
17
|
}
|
18
18
|
export interface RemoteKeyValueStore<T> {
|
19
|
-
writeValues: (entries: Array<
|
19
|
+
writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>;
|
20
20
|
writeValue: (key: ResourceKey, value: T | undefined) => Promise<void>;
|
21
|
-
fetchValues: (keys: Array<ResourceKey>) => Promise<Array<
|
21
|
+
fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>;
|
22
22
|
fetchValue: (key: ResourceKey) => Promise<T | undefined>;
|
23
23
|
}
|
24
24
|
export declare abstract class AbstractRemoteKeyValueStore<T> implements RemoteKeyValueStore<T> {
|
25
|
-
abstract writeValues: (entries: Array<
|
25
|
+
abstract writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>;
|
26
26
|
writeValue: (key: ResourceKey, value: T | undefined) => Promise<void>;
|
27
|
-
abstract fetchValues: (keys: Array<ResourceKey>) => Promise<Array<
|
27
|
+
abstract fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>;
|
28
28
|
fetchValue: (key: ResourceKey) => Promise<T | undefined>;
|
29
29
|
}
|
30
30
|
export declare abstract class AbstractLocalKeyValueStore<T> extends AbstractRemoteKeyValueStore<T> implements LocalKeyValueStore<T> {
|
31
|
-
abstract setValues: (entries: Array<
|
31
|
+
abstract setValues: (entries: Array<RecordEntry<T | undefined>>) => void;
|
32
32
|
setValue: (key: ResourceKey, value: T | undefined) => void;
|
33
|
-
abstract getEntries: () => Array<
|
34
|
-
abstract getValues: (keys: Array<ResourceKey>) => Array<
|
33
|
+
abstract getEntries: () => Array<RecordEntry<T>>;
|
34
|
+
abstract getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>;
|
35
35
|
getValue: (key: ResourceKey) => T | undefined;
|
36
|
-
fetchValues: (keys: Array<ResourceKey>) => Promise<Array<
|
37
|
-
writeValues: (entries: Array<
|
36
|
+
fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>;
|
37
|
+
writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>;
|
38
38
|
}
|
39
39
|
export declare const fromMap: <T>() => LocalKeyValueStore<T>;
|
40
40
|
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
// src/store.ts
|
2
|
-
import {
|
2
|
+
import { of } from "@bessemer/cornerstone/entry";
|
3
|
+
import { first } from "@bessemer/cornerstone/array";
|
4
|
+
import { isNil, isPresent } from "@bessemer/cornerstone/object";
|
3
5
|
var AbstractRemoteKeyValueStore = class {
|
4
6
|
writeValue = async (key, value) => {
|
5
|
-
await this.writeValues([
|
7
|
+
await this.writeValues([of(key, value)]);
|
6
8
|
};
|
7
9
|
fetchValue = async (key) => {
|
8
|
-
return
|
10
|
+
return first(await this.fetchValues([key]))?.[1];
|
9
11
|
};
|
10
12
|
};
|
11
13
|
var AbstractLocalKeyValueStore = class extends AbstractRemoteKeyValueStore {
|
12
14
|
setValue = (key, value) => {
|
13
|
-
this.setValues([
|
15
|
+
this.setValues([of(key, value)]);
|
14
16
|
};
|
15
17
|
getValue = (key) => {
|
16
|
-
return
|
18
|
+
return first(this.getValues([key]))?.[1];
|
17
19
|
};
|
18
20
|
fetchValues = async (keys) => {
|
19
21
|
return this.getValues(keys);
|
@@ -30,7 +32,7 @@ var fromMap = () => {
|
|
30
32
|
};
|
31
33
|
setValues = (entries) => {
|
32
34
|
entries.forEach(([key, value]) => {
|
33
|
-
if (
|
35
|
+
if (isNil(value)) {
|
34
36
|
map.delete(key);
|
35
37
|
} else {
|
36
38
|
map.set(key, value);
|
@@ -38,7 +40,7 @@ var fromMap = () => {
|
|
38
40
|
});
|
39
41
|
};
|
40
42
|
getValues = (keys) => {
|
41
|
-
return keys.map((key) =>
|
43
|
+
return keys.map((key) => of(key, map.get(key))).filter((it) => isPresent(it[1]));
|
42
44
|
};
|
43
45
|
}();
|
44
46
|
};
|
package/dist/store.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { ResourceKey } from '@bessemer/cornerstone/resource'\nimport {
|
1
|
+
{"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { ResourceKey } from '@bessemer/cornerstone/resource'\nimport { of, RecordEntry } from '@bessemer/cornerstone/entry'\nimport { first } from '@bessemer/cornerstone/array'\nimport { isNil, isPresent } from '@bessemer/cornerstone/object'\n\nexport interface LocalStore<T> {\n setValue: (value: T | undefined) => void\n getValue: () => T | undefined\n}\n\nexport interface LocalKeyValueStore<T> {\n setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n setValue: (key: ResourceKey, value: T | undefined) => void\n\n getEntries: () => Array<RecordEntry<T>>\n getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n getValue: (key: ResourceKey) => T | undefined\n}\n\nexport interface RemoteStore<T> {\n writeValue: (value: T | undefined) => Promise<void>\n fetchValue: () => Promise<T | undefined>\n}\n\nexport interface RemoteKeyValueStore<T> {\n writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n writeValue: (key: ResourceKey, value: T | undefined) => Promise<void>\n\n fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n fetchValue: (key: ResourceKey) => Promise<T | undefined>\n}\n\nexport abstract class AbstractRemoteKeyValueStore<T> implements RemoteKeyValueStore<T> {\n abstract writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n\n writeValue = async (key: ResourceKey, value: T | undefined): Promise<void> => {\n await this.writeValues([of(key, value)])\n }\n\n abstract fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n\n fetchValue = async (key: ResourceKey): Promise<T | undefined> => {\n return first(await this.fetchValues([key]))?.[1]\n }\n}\n\nexport abstract class AbstractLocalKeyValueStore<T> extends AbstractRemoteKeyValueStore<T> implements LocalKeyValueStore<T> {\n abstract setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n\n setValue = (key: ResourceKey, value: T | undefined): void => {\n this.setValues([of(key, value)])\n }\n\n abstract getEntries: () => Array<RecordEntry<T>>\n abstract getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n\n getValue = (key: ResourceKey): T | undefined => {\n return first(this.getValues([key]))?.[1]\n }\n\n fetchValues = async (keys: Array<ResourceKey>): Promise<Array<RecordEntry<T>>> => {\n return this.getValues(keys)\n }\n\n writeValues = async (entries: Array<RecordEntry<T | undefined>>): Promise<void> => {\n this.setValues(entries)\n }\n}\n\nexport const fromMap = <T>(): LocalKeyValueStore<T> => {\n const map = new Map<string, T>()\n\n return new (class extends AbstractLocalKeyValueStore<T> {\n override getEntries = (): Array<RecordEntry<T>> => {\n return Array.from(map.entries())\n }\n\n override setValues = (entries: RecordEntry<T | undefined>[]): void => {\n entries.forEach(([key, value]) => {\n if (isNil(value)) {\n map.delete(key)\n } else {\n map.set(key, value)\n }\n })\n }\n\n override getValues = (keys: Array<ResourceKey>): Array<RecordEntry<T>> => {\n return keys.map((key) => of(key, map.get(key)!)).filter((it) => isPresent(it[1]))\n }\n })()\n}\n"],"mappings":";AACA,SAAS,UAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,OAAO,iBAAiB;AA6B1B,IAAe,8BAAf,MAAgF;AAAA,EAGrF,aAAa,OAAO,KAAkB,UAAwC;AAC5E,UAAM,KAAK,YAAY,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACzC;AAAA,EAIA,aAAa,OAAO,QAA6C;AAC/D,WAAO,MAAM,MAAM,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACjD;AACF;AAEO,IAAe,6BAAf,cAAqD,4BAAgE;AAAA,EAG1H,WAAW,CAAC,KAAkB,UAA+B;AAC3D,SAAK,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACjC;AAAA,EAKA,WAAW,CAAC,QAAoC;AAC9C,WAAO,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACzC;AAAA,EAEA,cAAc,OAAO,SAA6D;AAChF,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,cAAc,OAAO,YAA8D;AACjF,SAAK,UAAU,OAAO;AAAA,EACxB;AACF;AAEO,IAAM,UAAU,MAAgC;AACrD,QAAM,MAAM,oBAAI,IAAe;AAE/B,SAAO,IAAK,cAAc,2BAA8B;AAAA,IAC7C,aAAa,MAA6B;AACjD,aAAO,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,IACjC;AAAA,IAES,YAAY,CAAC,YAAgD;AACpE,cAAQ,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChC,YAAI,MAAM,KAAK,GAAG;AAChB,cAAI,OAAO,GAAG;AAAA,QAChB,OAAO;AACL,cAAI,IAAI,KAAK,KAAK;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAES,YAAY,CAAC,SAAoD;AACxE,aAAO,KAAK,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,GAAG,CAAE,CAAC,EAAE,OAAO,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC;AAAA,IAClF;AAAA,EACF,EAAG;AACL;","names":[]}
|
package/dist/string.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,eAAO,MAAM,QAAQ,GAAI,QAAQ,GAAG,KAAG,KAAK,IAAI,MAE/C,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;CAAW,CAAA;AAE/B,MAAM,MAAM,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3I,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAqBnE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAgClE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,iBAuB3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAEnE,CAAA;AAED,eAAO,MAAM,UAAU,kEAAc,CAAA;AACrC,eAAO,MAAM,QAAQ,kEAAY,CAAA;AAEjC,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM/D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM7D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,GAAG,IAAI,KAAG,OAG7C,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IA2B5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,EAAE,YAAY,aAAa,EAAE,uBAAuB,WAAW,MAAM,WAAuB,WAK7I,CAAA;AAED,eAAO,MAAM,QAAQ,8DAAY,CAAA;AACjC,eAAO,MAAM,MAAM,8DAAU,CAAA;AAE7B,eAAO,MAAM,QAAQ,sJAAY,CAAA;AAEjC,eAAO,MAAM,OAAO;;;CAAW,CAAA"}
|
package/dist/string.js
CHANGED
@@ -3,15 +3,14 @@ import {
|
|
3
3
|
endsWith as _endsWith,
|
4
4
|
includes as _includes,
|
5
5
|
isEmpty as _isEmpty,
|
6
|
-
isString as _isString,
|
7
6
|
padEnd as _padEnd,
|
8
7
|
padStart as _padStart,
|
9
8
|
replace as _replace,
|
10
9
|
startsWith as _startsWith
|
11
10
|
} from "lodash-es";
|
12
|
-
import {
|
11
|
+
import { rest } from "@bessemer/cornerstone/array";
|
13
12
|
var isString = (value) => {
|
14
|
-
return
|
13
|
+
return typeof value === "string";
|
15
14
|
};
|
16
15
|
var isEmpty = _isEmpty;
|
17
16
|
var splitFirst = (str, splitter) => {
|
@@ -20,7 +19,7 @@ var splitFirst = (str, splitter) => {
|
|
20
19
|
if (results.length === 1) {
|
21
20
|
return { selection: null, separator: null, rest: str };
|
22
21
|
}
|
23
|
-
return { selection: results[0], separator: splitter, rest:
|
22
|
+
return { selection: results[0], separator: splitter, rest: rest(results).join(splitter) };
|
24
23
|
} else {
|
25
24
|
const match = splitter.exec(str);
|
26
25
|
if (!match) {
|