@bessemer/cornerstone 0.5.57 → 0.5.59
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/async-value.d.ts +88 -0
- package/dist/async-value.d.ts.map +1 -0
- package/dist/async-value.js +54 -0
- package/dist/async-value.js.map +1 -0
- package/dist/async.d.ts +0 -55
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +1 -39
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +2 -1
- package/dist/cache.js.map +1 -1
- package/dist/content.d.ts +7 -7
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +3 -2
- package/dist/content.js.map +1 -1
- package/dist/data-size.d.ts +1 -1
- package/dist/data-size.d.ts.map +1 -1
- package/dist/data-size.js +2 -2
- package/dist/data-size.js.map +1 -1
- package/dist/date.d.ts +1 -1
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +11 -20
- package/dist/date.js.map +1 -1
- package/dist/duration.d.ts +1 -1
- package/dist/duration.d.ts.map +1 -1
- package/dist/duration.js +2 -2
- package/dist/duration.js.map +1 -1
- package/dist/entry.d.ts +2 -0
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +5 -0
- package/dist/entry.js.map +1 -1
- package/dist/error-event.d.ts +1 -1
- package/dist/error-event.js +2 -2
- package/dist/error-event.js.map +1 -1
- package/dist/glob.d.ts +2 -2
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +29 -7
- package/dist/glob.js.map +1 -1
- package/dist/hex-code.d.ts +6 -3
- package/dist/hex-code.d.ts.map +1 -1
- package/dist/hex-code.js +11 -3
- package/dist/hex-code.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +1 -1
- package/dist/math.js.map +1 -1
- package/dist/mime-type.d.ts +3 -3
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +6 -6
- package/dist/mime-type.js.map +1 -1
- package/dist/range.d.ts +6 -3
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +12 -9
- package/dist/range.js.map +1 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +2 -1
- package/dist/resource.js.map +1 -1
- package/dist/sql/sql-expression-parser.js +2 -3
- package/dist/sql/sql-expression-parser.js.map +1 -1
- package/dist/sql/sql.d.ts +1 -1
- package/dist/sql/sql.d.ts.map +1 -1
- package/dist/sql/sql.js +1 -1
- package/dist/sql/sql.js.map +1 -1
- package/dist/ulid.d.ts +4 -4
- package/dist/ulid.d.ts.map +1 -1
- package/dist/ulid.js +9 -17
- package/dist/ulid.js.map +1 -1
- package/dist/uuid.d.ts +4 -4
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +11 -18
- package/dist/uuid.js.map +1 -1
- package/dist/zod-util.d.ts +10 -0
- package/dist/zod-util.d.ts.map +1 -0
- package/dist/{zod.js → zod-util.js} +9 -39
- package/dist/zod-util.js.map +1 -0
- package/package.json +1 -1
- package/dist/zod.d.ts +0 -36
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js.map +0 -1
package/dist/date.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/date.ts"],"sourcesContent":["import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from 'date-fns'\nimport { isDate as _isDate } from 'lodash-es'\nimport { Duration } from '@bessemer/cornerstone/duration'\nimport { Durations } from '@bessemer/cornerstone'\nimport Zod from 'zod'\n\nexport const
|
1
|
+
{"version":3,"sources":["../src/date.ts"],"sourcesContent":["import { addHours as _addHours, addMilliseconds as _addMilliseconds, isAfter as _isAfter, isBefore as _isBefore, parseISO } from 'date-fns'\nimport { isDate as _isDate } from 'lodash-es'\nimport { Duration } from '@bessemer/cornerstone/duration'\nimport { Durations } from '@bessemer/cornerstone'\nimport Zod from 'zod'\n\nexport const Schema = Zod.union([\n Zod.string()\n .trim()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/, `Invalid Date. Use YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.sssZ`),\n Zod.date(),\n]).transform((isoString) => {\n const date = new Date(isoString)\n // Additional check to ensure the parsed date is valid\n if (isNaN(date.getTime())) {\n throw new Error('Invalid date')\n }\n return date\n})\n\nexport const isDate = _isDate\n\nexport const now = (): Date => {\n return new Date()\n}\n\nexport const of = (dateString: string): Date => {\n return parseISO(dateString)\n}\n\nexport const addMilliseconds = _addMilliseconds\nexport const addHours = _addHours\nexport const isBefore = _isBefore\nexport const isAfter = _isAfter\n\nexport const addDuration = (date: Date, duration: Duration): Date => addMilliseconds(date, Durations.toMilliseconds(duration))\n"],"mappings":";AAAA,SAAS,YAAY,WAAW,mBAAmB,kBAAkB,WAAW,UAAU,YAAY,WAAW,gBAAgB;AACjI,SAAS,UAAU,eAAe;AAElC,SAAS,iBAAiB;AAC1B,OAAO,SAAS;AAET,IAAM,SAAS,IAAI,MAAM;AAAA,EAC9B,IAAI,OAAO,EACR,KAAK,EACL,MAAM,wEAAwE,0DAA0D;AAAA,EAC3I,IAAI,KAAK;AACX,CAAC,EAAE,UAAU,CAAC,cAAc;AAC1B,QAAM,OAAO,IAAI,KAAK,SAAS;AAE/B,MAAI,MAAM,KAAK,QAAQ,CAAC,GAAG;AACzB,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AACA,SAAO;AACT,CAAC;AAEM,IAAM,SAAS;AAEf,IAAM,MAAM,MAAY;AAC7B,SAAO,oBAAI,KAAK;AAClB;AAEO,IAAM,KAAK,CAAC,eAA6B;AAC9C,SAAO,SAAS,UAAU;AAC5B;AAEO,IAAM,kBAAkB;AACxB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,UAAU;AAEhB,IAAM,cAAc,CAAC,MAAY,aAA6B,gBAAgB,MAAM,UAAU,eAAe,QAAQ,CAAC;","names":[]}
|
package/dist/duration.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { TaggedType } from '@bessemer/cornerstone/types';
|
2
2
|
import { ZodType } from 'zod';
|
3
3
|
export type Duration = TaggedType<number, 'Duration'>;
|
4
|
-
export declare const
|
4
|
+
export declare const Schema: ZodType<Duration>;
|
5
5
|
export declare const fromMilliseconds: (value: number) => Duration;
|
6
6
|
export declare const toMilliseconds: (duration: Duration) => number;
|
7
7
|
export declare const fromSeconds: (value: number) => Duration;
|
package/dist/duration.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACrD,eAAO,MAAM,
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACrD,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAuB,CAAA;AAE5D,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,QAEhD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,KAAG,MAEnD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,QAE3C,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,QAAQ,KAAG,MAE9C,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,QAE3C,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,QAAQ,KAAG,MAE9C,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,QAEzC,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,UAAU,QAAQ,KAAG,MAE5C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,QAExC,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,UAAU,QAAQ,KAAG,MAE3C,CAAA;AAED,eAAO,MAAM,IAAI,UAAsB,CAAA;AACvC,eAAO,MAAM,MAAM,UAAc,CAAA;AACjC,eAAO,MAAM,OAAO,UAAe,CAAA"}
|
package/dist/duration.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// src/duration.ts
|
2
2
|
import Zod from "zod";
|
3
|
-
var
|
3
|
+
var Schema = Zod.number();
|
4
4
|
var fromMilliseconds = (value) => {
|
5
5
|
return value;
|
6
6
|
};
|
@@ -35,9 +35,9 @@ var Zero = fromMilliseconds(0);
|
|
35
35
|
var OneDay = fromDays(1);
|
36
36
|
var OneHour = fromHours(1);
|
37
37
|
export {
|
38
|
-
DurationSchema,
|
39
38
|
OneDay,
|
40
39
|
OneHour,
|
40
|
+
Schema,
|
41
41
|
Zero,
|
42
42
|
fromDays,
|
43
43
|
fromHours,
|
package/dist/duration.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/duration.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type Duration = TaggedType<number, 'Duration'>\nexport const
|
1
|
+
{"version":3,"sources":["../src/duration.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type Duration = TaggedType<number, 'Duration'>\nexport const Schema: ZodType<Duration> = Zod.number() as any\n\nexport const fromMilliseconds = (value: number): Duration => {\n return value as Duration\n}\n\nexport const toMilliseconds = (duration: Duration): number => {\n return duration\n}\n\nexport const fromSeconds = (value: number): Duration => {\n return fromMilliseconds(value * 1000)\n}\n\nexport const toSeconds = (duration: Duration): number => {\n return toMilliseconds(duration) / 1000\n}\n\nexport const fromMinutes = (value: number): Duration => {\n return fromSeconds(value * 60)\n}\n\nexport const toMinutes = (duration: Duration): number => {\n return toSeconds(duration) / 60\n}\n\nexport const fromHours = (value: number): Duration => {\n return fromMinutes(value * 60)\n}\n\nexport const toHours = (duration: Duration): number => {\n return toMinutes(duration) / 60\n}\n\nexport const fromDays = (value: number): Duration => {\n return fromHours(value * 24)\n}\n\nexport const toDays = (duration: Duration): number => {\n return toHours(duration) / 24\n}\n\nexport const Zero = fromMilliseconds(0)\nexport const OneDay = fromDays(1)\nexport const OneHour = fromHours(1)\n"],"mappings":";AACA,OAAO,SAAsB;AAGtB,IAAM,SAA4B,IAAI,OAAO;AAE7C,IAAM,mBAAmB,CAAC,UAA4B;AAC3D,SAAO;AACT;AAEO,IAAM,iBAAiB,CAAC,aAA+B;AAC5D,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,iBAAiB,QAAQ,GAAI;AACtC;AAEO,IAAM,YAAY,CAAC,aAA+B;AACvD,SAAO,eAAe,QAAQ,IAAI;AACpC;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,YAAY,QAAQ,EAAE;AAC/B;AAEO,IAAM,YAAY,CAAC,aAA+B;AACvD,SAAO,UAAU,QAAQ,IAAI;AAC/B;AAEO,IAAM,YAAY,CAAC,UAA4B;AACpD,SAAO,YAAY,QAAQ,EAAE;AAC/B;AAEO,IAAM,UAAU,CAAC,aAA+B;AACrD,SAAO,UAAU,QAAQ,IAAI;AAC/B;AAEO,IAAM,WAAW,CAAC,UAA4B;AACnD,SAAO,UAAU,QAAQ,EAAE;AAC7B;AAEO,IAAM,SAAS,CAAC,aAA+B;AACpD,SAAO,QAAQ,QAAQ,IAAI;AAC7B;AAEO,IAAM,OAAO,iBAAiB,CAAC;AAC/B,IAAM,SAAS,SAAS,CAAC;AACzB,IAAM,UAAU,UAAU,CAAC;","names":[]}
|
package/dist/entry.d.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
import { ZodType } from 'zod';
|
1
2
|
export type Entry<Value, Key = string> = [Key, Value];
|
3
|
+
export declare const schema: <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>) => ZodType<Entry<Value, Key>>;
|
2
4
|
export declare const of: <Value, Key = string>(key: Key, value: Value) => Entry<Value, Key>;
|
3
5
|
export declare const keys: <Key>(entries: Array<Entry<unknown, Key>>) => Array<Key>;
|
4
6
|
export declare const values: <T>(entries: Array<Entry<T>>) => Array<T>;
|
package/dist/entry.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAErD,eAAO,MAAM,EAAE,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAEhF,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAG,KAAK,CAAC,GAAG,CAExE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAE3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAEvI,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,KAAK,QAAQ,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAE/I,CAAA"}
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAErD,eAAO,MAAM,MAAM,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAEhH,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAEhF,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAG,KAAK,CAAC,GAAG,CAExE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAE3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAEvI,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,KAAK,QAAQ,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAE/I,CAAA"}
|
package/dist/entry.js
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
// src/entry.ts
|
2
|
+
import Zod from "zod";
|
3
|
+
var schema = (value, key) => {
|
4
|
+
return Zod.tuple([key ?? Zod.string(), value]);
|
5
|
+
};
|
2
6
|
var of = (key, value) => {
|
3
7
|
return [key, value];
|
4
8
|
};
|
@@ -19,6 +23,7 @@ export {
|
|
19
23
|
mapKeys,
|
20
24
|
mapValues,
|
21
25
|
of,
|
26
|
+
schema,
|
22
27
|
values
|
23
28
|
};
|
24
29
|
//# sourceMappingURL=entry.js.map
|
package/dist/entry.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/entry.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"sources":["../src/entry.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\n\nexport type Entry<Value, Key = string> = [Key, Value]\n\nexport const schema = <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>): ZodType<Entry<Value, Key>> => {\n return Zod.tuple([key ?? Zod.string(), value]) as ZodType<Entry<Value, Key>>\n}\n\nexport const of = <Value, Key = string>(key: Key, value: Value): Entry<Value, Key> => {\n return [key, value]\n}\n\nexport const keys = <Key>(entries: Array<Entry<unknown, Key>>): Array<Key> => {\n return entries.map((it) => it[0])\n}\n\nexport const values = <T>(entries: Array<Entry<T>>): Array<T> => {\n return entries.map((it) => it[1])\n}\n\nexport const mapKeys = <Value, Key, NewKey>(entries: Array<Entry<Value, Key>>, mapper: (key: Key) => NewKey): Array<Entry<Value, NewKey>> => {\n return entries.map(([key, value]) => of(mapper(key), value))\n}\n\nexport const mapValues = <Value, Key, NewValue>(entries: Array<Entry<Value, Key>>, mapper: (key: Value) => NewValue): Array<Entry<NewValue, Key>> => {\n return entries.map(([key, value]) => of(key, mapper(value)))\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAItB,IAAM,SAAS,CAAsB,OAAuB,QAAmD;AACpH,SAAO,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,KAAK,CAAC;AAC/C;AAEO,IAAM,KAAK,CAAsB,KAAU,UAAoC;AACpF,SAAO,CAAC,KAAK,KAAK;AACpB;AAEO,IAAM,OAAO,CAAM,YAAoD;AAC5E,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,SAAS,CAAI,YAAuC;AAC/D,SAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC;AAEO,IAAM,UAAU,CAAqB,SAAmC,WAA8D;AAC3I,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,CAAC;AAC7D;AAEO,IAAM,YAAY,CAAuB,SAAmC,WAAkE;AACnJ,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO,KAAK,CAAC,CAAC;AAC7D;","names":[]}
|
package/dist/error-event.d.ts
CHANGED
@@ -38,7 +38,7 @@ export declare const isErrorEventException: (throwable: Throwable) => throwable
|
|
38
38
|
export declare const of: (builder: ErrorEventBuilder) => ErrorEvent;
|
39
39
|
export declare const from: (throwable: Throwable) => ErrorEvent;
|
40
40
|
export declare function withPropagation<ReturnType>(runnable: () => ReturnType, attributes: LazyValue<Dictionary<unknown>>): ReturnType;
|
41
|
-
export declare function withPropagation<ReturnType>(
|
41
|
+
export declare function withPropagation<ReturnType>(runnable: () => Promise<ReturnType>, attributes: LazyValue<Dictionary<unknown>>): Promise<ReturnType>;
|
42
42
|
export declare const propagate: (throwable: Throwable, attributes: Dictionary<unknown>) => never;
|
43
43
|
export declare const findByCodeInCausalChain: (error: ErrorEvent, code: string) => ErrorEvent | undefined;
|
44
44
|
export declare const findInCausalChain: (error: ErrorEvent, predicate: (error: ErrorEvent) => boolean) => ErrorEvent | undefined;
|
package/dist/error-event.js
CHANGED
@@ -51,9 +51,9 @@ var from = (throwable) => {
|
|
51
51
|
}
|
52
52
|
return errorEventException.errorEvent;
|
53
53
|
};
|
54
|
-
function withPropagation(
|
54
|
+
function withPropagation(runnable, attributes) {
|
55
55
|
try {
|
56
|
-
let result =
|
56
|
+
let result = runnable();
|
57
57
|
if (Promises.isPromise(result)) {
|
58
58
|
return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)));
|
59
59
|
} else {
|
package/dist/error-event.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/error-event.ts"],"sourcesContent":["import { Arrays, Errors, Objects, Promises } from '@bessemer/cornerstone'\nimport { Dictionary, NominalType, Throwable } from '@bessemer/cornerstone/types'\nimport { RecordAttribute } from '@bessemer/cornerstone/object'\nimport Zod, { ZodType } from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\n\n/*\n Represents a structured error event. The code can be mapped to a unique type of error while the\n message and attributes can provide contextual information about the error. Finally,\n an ErrorEvent could have multiple causes which get aggregated into a single parent error.\n */\nexport type ErrorCode = NominalType<string, 'ErrorCode'>\nexport const ErrorCodeSchema: ZodType<ErrorCode> = Zod.string()\n\nexport type ErrorAttribute<Type = unknown> = RecordAttribute<Type, 'ErrorAttribute'>\nexport const ErrorAttributeSchema: ZodType<ErrorAttribute> = Zod.string()\n\nconst baseErrorEventSchema = Zod.object({\n code: ErrorCodeSchema,\n message: Zod.string(),\n attributes: Zod.record(ErrorAttributeSchema, Zod.unknown()),\n})\n\nexport type ErrorEvent = Zod.infer<typeof baseErrorEventSchema> & {\n causes: Array<ErrorEvent>\n}\n\nconst ErrorEventSchema: ZodType<ErrorEvent> = baseErrorEventSchema.extend({\n causes: Zod.lazy(() => Zod.array(ErrorEventSchema)),\n})\n\n// Builder object that allows for 'partial' representation of ErrorEvents\nexport type ErrorEventBuilder = {\n code: ErrorCode\n message?: string | null\n attributes?: Record<ErrorAttribute, unknown>\n causes?: Array<ErrorEvent>\n}\n\nexport type ErrorEventAugment = Partial<ErrorEventBuilder>\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const isErrorEvent = (throwable: Throwable): throwable is ErrorEvent => {\n if (!Objects.isObject(throwable)) {\n return false\n }\n\n return 'code' in throwable && 'message' in throwable && 'attributes' in throwable && 'causes' in throwable\n}\n\nexport const isErrorEventException = (throwable: Throwable): throwable is ErrorEventException => {\n return throwable instanceof ErrorEventException\n}\n\nexport const of = (builder: ErrorEventBuilder): ErrorEvent => {\n const code = builder.code\n\n return {\n code,\n message: builder.message ?? code,\n attributes: builder.attributes ?? {},\n causes: builder.causes ?? [],\n }\n}\n\nexport const from = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!Errors.isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = Errors.findInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (Objects.isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport function withPropagation<ReturnType>(runnable: () => ReturnType, attributes: LazyValue<Dictionary<unknown>>): ReturnType\nexport function withPropagation<ReturnType>(resolver: () => Promise<ReturnType>, attributes: LazyValue<Dictionary<unknown>>): Promise<ReturnType>\nexport function withPropagation<ReturnType>(\n resolver: () => ReturnType | Promise<ReturnType>,\n attributes: LazyValue<Dictionary<unknown>>\n): ReturnType | Promise<ReturnType> {\n try {\n let result = resolver()\n if (Promises.isPromise(result)) {\n return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)))\n } else {\n return result\n }\n } catch (throwable: Throwable) {\n throw propagate(throwable, evaluate(attributes))\n }\n}\n\nexport const propagate = (throwable: Throwable, attributes: Dictionary<unknown>): never => {\n if (isErrorEventException(throwable)) {\n // We just mutate the existing error event to avoid nested exceptions\n const errorEvent = throwable.errorEvent\n errorEvent.attributes = { ...errorEvent.attributes, ...attributes }\n throw throwable\n } else {\n const errorEvent = from(throwable)\n const contextualizedEvent = of({ ...errorEvent, attributes: { ...errorEvent.attributes, ...attributes } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport const findByCodeInCausalChain = (error: ErrorEvent, code: string): ErrorEvent | undefined => {\n return findInCausalChain(error, (it) => it.code === code)\n}\n\n/*\n Traverses the causal chain of the ErrorEvent, searching for a predicate that matches (including matching on the parent error event)\n This is useful if you want to find whether or not a given error was caused by a specific failure. The search executes depth-first and\n will return te first matching instance that satisfies the predicate, or undefined otherwise\n */\nexport const findInCausalChain = (error: ErrorEvent, predicate: (error: ErrorEvent) => boolean): ErrorEvent | undefined => {\n if (predicate(error)) {\n return error\n }\n\n return Arrays.first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(Objects.isPresent))\n}\n\nexport const aggregate = (builder: ErrorEventBuilder, causes: Array<ErrorEvent>): ErrorEvent | undefined => {\n if (causes.length === 0) {\n return undefined\n }\n\n return of({ ...builder, causes })\n}\n\nexport const UnhandledErrorCode: ErrorCode = 'error-event.unhandled'\nexport const NotFoundErrorCode: ErrorCode = 'error-event.not-found'\nexport const ForbiddenErrorCode: ErrorCode = 'error-event.forbidden'\nexport const UnauthorizedErrorCode: ErrorCode = 'error-event.unauthorized'\nexport const BadRequestErrorCode: ErrorCode = 'error-event.bad-request'\n\nexport const RequestCorrelationIdAttribute: ErrorAttribute<string> = 'requestCorrelationId'\nexport const HttpStatusCodeAttribute: ErrorAttribute<number> = 'httpStatusCode'\n\nexport const unhandled = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: UnhandledErrorCode,\n message: 'An Unhandled Error has occurred.',\n attributes: { [HttpStatusCodeAttribute]: 500 },\n },\n builder\n )\n )\n\nexport const notFound = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: NotFoundErrorCode,\n message: 'The requested Resource could not be found.',\n attributes: { [HttpStatusCodeAttribute]: 404 },\n },\n builder\n )\n )\n\nexport const unauthorized = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: UnauthorizedErrorCode,\n message: 'The requested Resource requires authentication.',\n attributes: { [HttpStatusCodeAttribute]: 401 },\n },\n builder\n )\n )\n\nexport const forbidden = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: ForbiddenErrorCode,\n message: 'The requested Resource requires additional permissions to access.',\n attributes: { [HttpStatusCodeAttribute]: 403 },\n },\n builder\n )\n )\n\nexport const badRequest = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: BadRequestErrorCode,\n message: 'The request is invalid and cannot be processed.',\n attributes: { [HttpStatusCodeAttribute]: 400 },\n },\n builder\n )\n )\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../src/error-event.ts"],"sourcesContent":["import { Arrays, Errors, Objects, Promises } from '@bessemer/cornerstone'\nimport { Dictionary, NominalType, Throwable } from '@bessemer/cornerstone/types'\nimport { RecordAttribute } from '@bessemer/cornerstone/object'\nimport Zod, { ZodType } from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\n\n/*\n Represents a structured error event. The code can be mapped to a unique type of error while the\n message and attributes can provide contextual information about the error. Finally,\n an ErrorEvent could have multiple causes which get aggregated into a single parent error.\n */\nexport type ErrorCode = NominalType<string, 'ErrorCode'>\nexport const ErrorCodeSchema: ZodType<ErrorCode> = Zod.string()\n\nexport type ErrorAttribute<Type = unknown> = RecordAttribute<Type, 'ErrorAttribute'>\nexport const ErrorAttributeSchema: ZodType<ErrorAttribute> = Zod.string()\n\nconst baseErrorEventSchema = Zod.object({\n code: ErrorCodeSchema,\n message: Zod.string(),\n attributes: Zod.record(ErrorAttributeSchema, Zod.unknown()),\n})\n\nexport type ErrorEvent = Zod.infer<typeof baseErrorEventSchema> & {\n causes: Array<ErrorEvent>\n}\n\nconst ErrorEventSchema: ZodType<ErrorEvent> = baseErrorEventSchema.extend({\n causes: Zod.lazy(() => Zod.array(ErrorEventSchema)),\n})\n\n// Builder object that allows for 'partial' representation of ErrorEvents\nexport type ErrorEventBuilder = {\n code: ErrorCode\n message?: string | null\n attributes?: Record<ErrorAttribute, unknown>\n causes?: Array<ErrorEvent>\n}\n\nexport type ErrorEventAugment = Partial<ErrorEventBuilder>\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const isErrorEvent = (throwable: Throwable): throwable is ErrorEvent => {\n if (!Objects.isObject(throwable)) {\n return false\n }\n\n return 'code' in throwable && 'message' in throwable && 'attributes' in throwable && 'causes' in throwable\n}\n\nexport const isErrorEventException = (throwable: Throwable): throwable is ErrorEventException => {\n return throwable instanceof ErrorEventException\n}\n\nexport const of = (builder: ErrorEventBuilder): ErrorEvent => {\n const code = builder.code\n\n return {\n code,\n message: builder.message ?? code,\n attributes: builder.attributes ?? {},\n causes: builder.causes ?? [],\n }\n}\n\nexport const from = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!Errors.isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = Errors.findInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (Objects.isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport function withPropagation<ReturnType>(runnable: () => ReturnType, attributes: LazyValue<Dictionary<unknown>>): ReturnType\nexport function withPropagation<ReturnType>(runnable: () => Promise<ReturnType>, attributes: LazyValue<Dictionary<unknown>>): Promise<ReturnType>\nexport function withPropagation<ReturnType>(\n runnable: () => ReturnType | Promise<ReturnType>,\n attributes: LazyValue<Dictionary<unknown>>\n): ReturnType | Promise<ReturnType> {\n try {\n let result = runnable()\n if (Promises.isPromise(result)) {\n return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)))\n } else {\n return result\n }\n } catch (throwable: Throwable) {\n throw propagate(throwable, evaluate(attributes))\n }\n}\n\nexport const propagate = (throwable: Throwable, attributes: Dictionary<unknown>): never => {\n if (isErrorEventException(throwable)) {\n // We just mutate the existing error event to avoid nested exceptions\n const errorEvent = throwable.errorEvent\n errorEvent.attributes = { ...errorEvent.attributes, ...attributes }\n throw throwable\n } else {\n const errorEvent = from(throwable)\n const contextualizedEvent = of({ ...errorEvent, attributes: { ...errorEvent.attributes, ...attributes } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport const findByCodeInCausalChain = (error: ErrorEvent, code: string): ErrorEvent | undefined => {\n return findInCausalChain(error, (it) => it.code === code)\n}\n\n/*\n Traverses the causal chain of the ErrorEvent, searching for a predicate that matches (including matching on the parent error event)\n This is useful if you want to find whether or not a given error was caused by a specific failure. The search executes depth-first and\n will return te first matching instance that satisfies the predicate, or undefined otherwise\n */\nexport const findInCausalChain = (error: ErrorEvent, predicate: (error: ErrorEvent) => boolean): ErrorEvent | undefined => {\n if (predicate(error)) {\n return error\n }\n\n return Arrays.first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(Objects.isPresent))\n}\n\nexport const aggregate = (builder: ErrorEventBuilder, causes: Array<ErrorEvent>): ErrorEvent | undefined => {\n if (causes.length === 0) {\n return undefined\n }\n\n return of({ ...builder, causes })\n}\n\nexport const UnhandledErrorCode: ErrorCode = 'error-event.unhandled'\nexport const NotFoundErrorCode: ErrorCode = 'error-event.not-found'\nexport const ForbiddenErrorCode: ErrorCode = 'error-event.forbidden'\nexport const UnauthorizedErrorCode: ErrorCode = 'error-event.unauthorized'\nexport const BadRequestErrorCode: ErrorCode = 'error-event.bad-request'\n\nexport const RequestCorrelationIdAttribute: ErrorAttribute<string> = 'requestCorrelationId'\nexport const HttpStatusCodeAttribute: ErrorAttribute<number> = 'httpStatusCode'\n\nexport const unhandled = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: UnhandledErrorCode,\n message: 'An Unhandled Error has occurred.',\n attributes: { [HttpStatusCodeAttribute]: 500 },\n },\n builder\n )\n )\n\nexport const notFound = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: NotFoundErrorCode,\n message: 'The requested Resource could not be found.',\n attributes: { [HttpStatusCodeAttribute]: 404 },\n },\n builder\n )\n )\n\nexport const unauthorized = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: UnauthorizedErrorCode,\n message: 'The requested Resource requires authentication.',\n attributes: { [HttpStatusCodeAttribute]: 401 },\n },\n builder\n )\n )\n\nexport const forbidden = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: ForbiddenErrorCode,\n message: 'The requested Resource requires additional permissions to access.',\n attributes: { [HttpStatusCodeAttribute]: 403 },\n },\n builder\n )\n )\n\nexport const badRequest = (builder?: ErrorEventAugment) =>\n of(\n Objects.deepMerge(\n {\n code: BadRequestErrorCode,\n message: 'The request is invalid and cannot be processed.',\n attributes: { [HttpStatusCodeAttribute]: 400 },\n },\n builder\n )\n )\n"],"mappings":"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","names":[]}
|
package/dist/glob.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { NominalType } from '@bessemer/cornerstone/types';
|
2
2
|
import { ZodType } from 'zod';
|
3
3
|
export type GlobPattern = NominalType<string, 'GlobPattern'>;
|
4
|
-
export declare const
|
5
|
-
export declare const
|
4
|
+
export declare const Schema: ZodType<GlobPattern>;
|
5
|
+
export declare const fromString: (value: string) => GlobPattern;
|
6
6
|
export declare const match: (str: string, pattern: GlobPattern) => boolean;
|
7
7
|
export declare const anyMatch: (str: string, patterns: Array<GlobPattern>) => boolean;
|
8
8
|
//# sourceMappingURL=glob.d.ts.map
|
package/dist/glob.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../src/glob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../src/glob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAE5D,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,WAAW,CA8Bd,CAAA;AAE1B,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,WAE1C,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,EAAE,SAAS,WAAW,KAAG,OAEzD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,UAAU,KAAK,CAAC,WAAW,CAAC,KAAG,OAEpE,CAAA"}
|
package/dist/glob.js
CHANGED
@@ -1,9 +1,31 @@
|
|
1
1
|
// src/glob.ts
|
2
2
|
import { minimatch } from "minimatch";
|
3
|
-
import
|
4
|
-
var
|
5
|
-
|
6
|
-
|
3
|
+
import Zod from "zod";
|
4
|
+
var Schema = Zod.string().refine((val) => {
|
5
|
+
const validGlobPattern = /^[a-zA-Z0-9\-_.\/\\*?\[\]{}!,|]+$/;
|
6
|
+
if (!validGlobPattern.test(val)) {
|
7
|
+
return false;
|
8
|
+
}
|
9
|
+
const brackets = val.match(/[\[\]]/g);
|
10
|
+
if (brackets) {
|
11
|
+
const openBrackets = (val.match(/\[/g) || []).length;
|
12
|
+
const closeBrackets = (val.match(/]/g) || []).length;
|
13
|
+
if (openBrackets !== closeBrackets) {
|
14
|
+
return false;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
const braces = val.match(/[{}]/g);
|
18
|
+
if (braces) {
|
19
|
+
const openBraces = (val.match(/\{/g) || []).length;
|
20
|
+
const closeBraces = (val.match(/}/g) || []).length;
|
21
|
+
if (openBraces !== closeBraces) {
|
22
|
+
return false;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
return true;
|
26
|
+
}, "Invalid glob pattern");
|
27
|
+
var fromString = (value) => {
|
28
|
+
return Schema.parse(value);
|
7
29
|
};
|
8
30
|
var match = (str, pattern) => {
|
9
31
|
return minimatch(str, pattern);
|
@@ -12,9 +34,9 @@ var anyMatch = (str, patterns) => {
|
|
12
34
|
return patterns.some((it) => match(str, it));
|
13
35
|
};
|
14
36
|
export {
|
15
|
-
|
37
|
+
Schema,
|
16
38
|
anyMatch,
|
17
|
-
|
18
|
-
|
39
|
+
fromString,
|
40
|
+
match
|
19
41
|
};
|
20
42
|
//# sourceMappingURL=glob.js.map
|
package/dist/glob.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/glob.ts"],"sourcesContent":["import { minimatch } from 'minimatch'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { ZodType } from 'zod'\
|
1
|
+
{"version":3,"sources":["../src/glob.ts"],"sourcesContent":["import { minimatch } from 'minimatch'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type GlobPattern = NominalType<string, 'GlobPattern'>\n\nexport const Schema: ZodType<GlobPattern> = Zod.string().refine((val) => {\n // Check for valid glob characters and patterns\n const validGlobPattern = /^[a-zA-Z0-9\\-_.\\/\\\\*?\\[\\]{}!,|]+$/\n\n // Basic validation - contains valid characters\n if (!validGlobPattern.test(val)) {\n return false\n }\n\n // Check for balanced brackets\n const brackets = val.match(/[\\[\\]]/g)\n if (brackets) {\n const openBrackets = (val.match(/\\[/g) || []).length\n const closeBrackets = (val.match(/]/g) || []).length\n if (openBrackets !== closeBrackets) {\n return false\n }\n }\n\n // Check for balanced braces\n const braces = val.match(/[{}]/g)\n if (braces) {\n const openBraces = (val.match(/\\{/g) || []).length\n const closeBraces = (val.match(/}/g) || []).length\n if (openBraces !== closeBraces) {\n return false\n }\n }\n\n return true\n}, 'Invalid glob pattern')\n\nexport const fromString = (value: string): GlobPattern => {\n return Schema.parse(value)\n}\n\nexport const match = (str: string, pattern: GlobPattern): boolean => {\n return minimatch(str, pattern)\n}\n\nexport const anyMatch = (str: string, patterns: Array<GlobPattern>): boolean => {\n return patterns.some((it) => match(str, it))\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,OAAO,SAAsB;AAItB,IAAM,SAA+B,IAAI,OAAO,EAAE,OAAO,CAAC,QAAQ;AAEvE,QAAM,mBAAmB;AAGzB,MAAI,CAAC,iBAAiB,KAAK,GAAG,GAAG;AAC/B,WAAO;AAAA,EACT;AAGA,QAAM,WAAW,IAAI,MAAM,SAAS;AACpC,MAAI,UAAU;AACZ,UAAM,gBAAgB,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG;AAC9C,UAAM,iBAAiB,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG;AAC9C,QAAI,iBAAiB,eAAe;AAClC,aAAO;AAAA,IACT;AAAA,EACF;AAGA,QAAM,SAAS,IAAI,MAAM,OAAO;AAChC,MAAI,QAAQ;AACV,UAAM,cAAc,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG;AAC5C,UAAM,eAAe,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG;AAC5C,QAAI,eAAe,aAAa;AAC9B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT,GAAG,sBAAsB;AAElB,IAAM,aAAa,CAAC,UAA+B;AACxD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,QAAQ,CAAC,KAAa,YAAkC;AACnE,SAAO,UAAU,KAAK,OAAO;AAC/B;AAEO,IAAM,WAAW,CAAC,KAAa,aAA0C;AAC9E,SAAO,SAAS,KAAK,CAAC,OAAO,MAAM,KAAK,EAAE,CAAC;AAC7C;","names":[]}
|
package/dist/hex-code.d.ts
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
export type HexCode =
|
1
|
+
import { ZodType } from 'zod';
|
2
|
+
import { TaggedType } from '@bessemer/cornerstone/types';
|
3
|
+
export type HexCode = TaggedType<string, 'HexCode'>;
|
4
|
+
export declare const Schema: ZodType<HexCode>;
|
5
|
+
export declare const of: (value: string) => HexCode;
|
6
|
+
export declare const fromString: (value: string) => HexCode;
|
4
7
|
//# sourceMappingURL=hex-code.d.ts.map
|
package/dist/hex-code.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hex-code.d.ts","sourceRoot":"","sources":["../src/hex-code.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"hex-code.d.ts","sourceRoot":"","sources":["../src/hex-code.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AACnD,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,OAAO,CAAkG,CAAA;AAEtI,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,OAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAE1C,CAAA"}
|
package/dist/hex-code.js
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
// src/hex-code.ts
|
2
|
-
import
|
3
|
-
var
|
2
|
+
import Zod from "zod";
|
3
|
+
var Schema = Zod.string().length(7).startsWith("#").describe("A 6-digit hex code starting a # sign");
|
4
|
+
var of = (value) => {
|
5
|
+
return value;
|
6
|
+
};
|
7
|
+
var fromString = (value) => {
|
8
|
+
return Schema.parse(value);
|
9
|
+
};
|
4
10
|
export {
|
5
|
-
|
11
|
+
Schema,
|
12
|
+
fromString,
|
13
|
+
of
|
6
14
|
};
|
7
15
|
//# sourceMappingURL=hex-code.js.map
|
package/dist/hex-code.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/hex-code.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/hex-code.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport type HexCode = TaggedType<string, 'HexCode'>\nexport const Schema: ZodType<HexCode> = Zod.string().length(7).startsWith('#').describe('A 6-digit hex code starting a # sign') as any\n\nexport const of = (value: string): HexCode => {\n return value as HexCode\n}\n\nexport const fromString = (value: string): HexCode => {\n return Schema.parse(value)\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAItB,IAAM,SAA2B,IAAI,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,EAAE,SAAS,sCAAsC;AAEvH,IAAM,KAAK,CAAC,UAA2B;AAC5C,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAA2B;AACpD,SAAO,OAAO,MAAM,KAAK;AAC3B;","names":[]}
|
package/dist/index.d.ts
CHANGED
@@ -3,6 +3,7 @@ import * as Functions from '@bessemer/cornerstone/function';
|
|
3
3
|
import * as Arrays from '@bessemer/cornerstone/array';
|
4
4
|
import * as Strings from '@bessemer/cornerstone/string';
|
5
5
|
import * as Async from '@bessemer/cornerstone/async';
|
6
|
+
import * as AsyncValues from '@bessemer/cornerstone/async-value';
|
6
7
|
import * as Maths from '@bessemer/cornerstone/math';
|
7
8
|
import * as Sets from '@bessemer/cornerstone/set';
|
8
9
|
import * as Dates from '@bessemer/cornerstone/date';
|
@@ -22,7 +23,7 @@ import * as Hashes from '@bessemer/cornerstone/hash';
|
|
22
23
|
import * as Crypto from '@bessemer/cornerstone/crypto';
|
23
24
|
import * as Globs from '@bessemer/cornerstone/glob';
|
24
25
|
import * as Ranges from '@bessemer/cornerstone/range';
|
25
|
-
import * as
|
26
|
+
import * as ZodUtil from '@bessemer/cornerstone/zod-util';
|
26
27
|
import * as Tags from '@bessemer/cornerstone/tag';
|
27
28
|
import * as Promises from '@bessemer/cornerstone/promise';
|
28
29
|
import * as References from '@bessemer/cornerstone/reference';
|
@@ -42,5 +43,5 @@ import * as Json from '@bessemer/cornerstone/json';
|
|
42
43
|
import * as AspectRatios from '@bessemer/cornerstone/aspect-ratio';
|
43
44
|
import * as DataSizes from '@bessemer/cornerstone/data-size';
|
44
45
|
import * as MimeTypes from '@bessemer/cornerstone/mime-type';
|
45
|
-
export { Objects, Functions, Arrays, Strings, Async, Maths, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges,
|
46
|
+
export { Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, };
|
46
47
|
//# 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,KAAK,MAAM,4BAA4B,CAAA;AACnD,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;AAErD,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -4,6 +4,7 @@ import * as Functions from "@bessemer/cornerstone/function";
|
|
4
4
|
import * as Arrays from "@bessemer/cornerstone/array";
|
5
5
|
import * as Strings from "@bessemer/cornerstone/string";
|
6
6
|
import * as Async from "@bessemer/cornerstone/async";
|
7
|
+
import * as AsyncValues from "@bessemer/cornerstone/async-value";
|
7
8
|
import * as Maths from "@bessemer/cornerstone/math";
|
8
9
|
import * as Sets from "@bessemer/cornerstone/set";
|
9
10
|
import * as Dates from "@bessemer/cornerstone/date";
|
@@ -23,7 +24,7 @@ import * as Hashes from "@bessemer/cornerstone/hash";
|
|
23
24
|
import * as Crypto from "@bessemer/cornerstone/crypto";
|
24
25
|
import * as Globs from "@bessemer/cornerstone/glob";
|
25
26
|
import * as Ranges from "@bessemer/cornerstone/range";
|
26
|
-
import * as
|
27
|
+
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
27
28
|
import * as Tags from "@bessemer/cornerstone/tag";
|
28
29
|
import * as Promises from "@bessemer/cornerstone/promise";
|
29
30
|
import * as References from "@bessemer/cornerstone/reference";
|
@@ -48,6 +49,7 @@ export {
|
|
48
49
|
AspectRatios,
|
49
50
|
Assertions,
|
50
51
|
Async,
|
52
|
+
AsyncValues,
|
51
53
|
Combinables,
|
52
54
|
Comparators,
|
53
55
|
Content,
|
@@ -87,6 +89,6 @@ export {
|
|
87
89
|
Uris,
|
88
90
|
Urls,
|
89
91
|
Uuids,
|
90
|
-
|
92
|
+
ZodUtil
|
91
93
|
};
|
92
94
|
//# sourceMappingURL=index.js.map
|
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 Maths from '@bessemer/cornerstone/math'\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'\n\nimport * as
|
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 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'\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'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n AsyncValues,\n Maths,\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 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}\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,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;AAExB,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;","names":[]}
|
package/dist/math.d.ts
CHANGED
@@ -7,7 +7,7 @@ export declare enum RoundingMode {
|
|
7
7
|
Up = "Up",
|
8
8
|
HalfEven = "HalfEven"
|
9
9
|
}
|
10
|
-
export declare const round: (value: number, scale: number, roundingMode
|
10
|
+
export declare const round: (value: number, scale: number, roundingMode?: RoundingMode) => number;
|
11
11
|
export declare const roundNearest: (value: number, scale: number) => number;
|
12
12
|
export declare const roundDown: (value: number, scale: number) => number;
|
13
13
|
export declare const roundUp: (value: number, scale: number) => number;
|
package/dist/math.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAKnD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAErD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,YAAgB,CAAA;AAEhD,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAKnD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAErD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,YAAgB,CAAA;AAEhD,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,eAAc,YAAmC,KAAG,MAWvG,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAG3D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGrD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGnD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MA0E5D,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAEjD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAEpE,CAAA"}
|
package/dist/math.js
CHANGED
@@ -17,7 +17,7 @@ var RoundingMode = /* @__PURE__ */ ((RoundingMode2) => {
|
|
17
17
|
RoundingMode2["HalfEven"] = "HalfEven";
|
18
18
|
return RoundingMode2;
|
19
19
|
})(RoundingMode || {});
|
20
|
-
var round = (value, scale, roundingMode) => {
|
20
|
+
var round = (value, scale, roundingMode = "Nearest" /* Nearest */) => {
|
21
21
|
switch (roundingMode) {
|
22
22
|
case "Nearest" /* Nearest */:
|
23
23
|
return roundNearest(value, scale);
|
package/dist/math.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/math.ts"],"sourcesContent":["import { isNumber as _isNumber } from 'lodash-es'\n\nexport const isNumber = (value?: unknown): value is number => {\n if (isNaN(value as any)) {\n return false\n }\n return _isNumber(value)\n}\n\nexport const isPositive = (value?: unknown): value is number => {\n return isNumber(value) && value > 0\n}\n\nexport const isEven = (d: number) => d % 2 === 0\n\nexport enum RoundingMode {\n Nearest = 'Nearest',\n Down = 'Down',\n Up = 'Up',\n HalfEven = 'HalfEven',\n}\n\nexport const round = (value: number, scale: number, roundingMode: RoundingMode): number => {\n switch (roundingMode) {\n case RoundingMode.Nearest:\n return roundNearest(value, scale)\n case RoundingMode.Down:\n return roundDown(value, scale)\n case RoundingMode.Up:\n return roundUp(value, scale)\n case RoundingMode.HalfEven:\n return roundHalfEven(value, scale)\n }\n}\n\nexport const roundNearest = (value: number, scale: number): number => {\n const factor = Math.pow(10, scale)\n return Math.round((value + Number.EPSILON) * factor) / factor\n}\n\nexport const roundDown = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.floor((value + +Number.EPSILON) * factor) / factor\n}\n\nexport const roundUp = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.ceil((value + +Number.EPSILON) * factor) / factor\n}\n\n/**\n * Round Half-Even (Banker's Rounding) Utility\n * https://en.wikipedia.org/wiki/Rounding#Round_half_to_even\n *\n * Mostly copied from this Github: https://github.com/schowdhuri/round-half-even\n */\nexport const roundHalfEven = (value: number, scale: number): number => {\n if (value < 0) {\n return -roundHalfEven(-value, scale)\n }\n if (scale === 0) {\n return roundHalfEven(value / 10, 1) * 10\n }\n\n const MAX_DECIMALS_ALLOWED = 20\n if (scale > MAX_DECIMALS_ALLOWED) {\n throw new Error(`Cannot handle more than ${MAX_DECIMALS_ALLOWED} decimals`)\n }\n\n // convert to string; remove trailing 0s\n const isExponentialForm = value.toString().includes('e') || value.toString().includes('E')\n const strNum = (isExponentialForm ? value.toFixed(MAX_DECIMALS_ALLOWED).toString() : value.toString()).replace(/0+$/, '')\n const decimalIndex = strNum.indexOf('.')\n if (decimalIndex < 0) {\n // no fractional part\n return value\n }\n let intPart: string = strNum.slice(0, decimalIndex)\n if (intPart.length == 0) {\n intPart = '0'\n }\n let fractPart = strNum.slice(decimalIndex + 1) // extract fractional part\n if (fractPart.length < scale) {\n return value\n }\n const followingDig = parseInt(fractPart[scale]!, 10)\n if (followingDig < 5) {\n // rounding not required\n const newFractPart = fractPart.slice(0, scale)\n return parseFloat(`${intPart}.${newFractPart}`)\n }\n if (followingDig === 5) {\n const newFractPart = fractPart.slice(0, scale + 1)\n if (parseInt(fractPart.slice(scale + 1), 10) > 0) {\n fractPart = `${newFractPart}9`\n } else {\n fractPart = newFractPart\n }\n }\n\n let nextDig = parseInt(fractPart[fractPart.length - 1]!, 10)\n let carriedOver = 0\n for (let ptr = fractPart.length - 1; ptr >= scale; ptr--) {\n let dig = parseInt(fractPart[ptr - 1]!, 10) + carriedOver\n if (nextDig > 5 || (nextDig == 5 && !isEven(dig))) {\n ++dig\n }\n if (dig > 9) {\n dig -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n nextDig = dig\n }\n\n let newFractPart = ''\n for (let ptr = scale - 2; ptr >= 0; ptr--) {\n let d = parseInt(fractPart[ptr]!, 10) + carriedOver\n if (d > 9) {\n d -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n newFractPart = `${d}${newFractPart}`\n }\n\n const resolvedIntPart = parseInt(intPart, 10) + carriedOver\n return parseFloat(`${resolvedIntPart}.${newFractPart}${nextDig}`)\n}\n\nexport const random = (min: number, max: number): number => {\n return Math.random() * (max - min) + min\n}\n\nexport const greatestCommonFactor = (first: number, second: number): number => {\n return second === 0 ? first : greatestCommonFactor(second, first % second)\n}\n"],"mappings":";AAAA,SAAS,YAAY,iBAAiB;AAE/B,IAAM,WAAW,CAAC,UAAqC;AAC5D,MAAI,MAAM,KAAY,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,UAAU,KAAK;AACxB;AAEO,IAAM,aAAa,CAAC,UAAqC;AAC9D,SAAO,SAAS,KAAK,KAAK,QAAQ;AACpC;AAEO,IAAM,SAAS,CAAC,MAAc,IAAI,MAAM;AAExC,IAAK,eAAL,kBAAKA,kBAAL;AACL,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,QAAK;AACL,EAAAA,cAAA,cAAW;AAJD,SAAAA;AAAA,GAAA;AAOL,IAAM,QAAQ,CAAC,OAAe,OAAe,
|
1
|
+
{"version":3,"sources":["../src/math.ts"],"sourcesContent":["import { isNumber as _isNumber } from 'lodash-es'\n\nexport const isNumber = (value?: unknown): value is number => {\n if (isNaN(value as any)) {\n return false\n }\n return _isNumber(value)\n}\n\nexport const isPositive = (value?: unknown): value is number => {\n return isNumber(value) && value > 0\n}\n\nexport const isEven = (d: number) => d % 2 === 0\n\nexport enum RoundingMode {\n Nearest = 'Nearest',\n Down = 'Down',\n Up = 'Up',\n HalfEven = 'HalfEven',\n}\n\nexport const round = (value: number, scale: number, roundingMode: RoundingMode = RoundingMode.Nearest): number => {\n switch (roundingMode) {\n case RoundingMode.Nearest:\n return roundNearest(value, scale)\n case RoundingMode.Down:\n return roundDown(value, scale)\n case RoundingMode.Up:\n return roundUp(value, scale)\n case RoundingMode.HalfEven:\n return roundHalfEven(value, scale)\n }\n}\n\nexport const roundNearest = (value: number, scale: number): number => {\n const factor = Math.pow(10, scale)\n return Math.round((value + Number.EPSILON) * factor) / factor\n}\n\nexport const roundDown = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.floor((value + +Number.EPSILON) * factor) / factor\n}\n\nexport const roundUp = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.ceil((value + +Number.EPSILON) * factor) / factor\n}\n\n/**\n * Round Half-Even (Banker's Rounding) Utility\n * https://en.wikipedia.org/wiki/Rounding#Round_half_to_even\n *\n * Mostly copied from this Github: https://github.com/schowdhuri/round-half-even\n */\nexport const roundHalfEven = (value: number, scale: number): number => {\n if (value < 0) {\n return -roundHalfEven(-value, scale)\n }\n if (scale === 0) {\n return roundHalfEven(value / 10, 1) * 10\n }\n\n const MAX_DECIMALS_ALLOWED = 20\n if (scale > MAX_DECIMALS_ALLOWED) {\n throw new Error(`Cannot handle more than ${MAX_DECIMALS_ALLOWED} decimals`)\n }\n\n // convert to string; remove trailing 0s\n const isExponentialForm = value.toString().includes('e') || value.toString().includes('E')\n const strNum = (isExponentialForm ? value.toFixed(MAX_DECIMALS_ALLOWED).toString() : value.toString()).replace(/0+$/, '')\n const decimalIndex = strNum.indexOf('.')\n if (decimalIndex < 0) {\n // no fractional part\n return value\n }\n let intPart: string = strNum.slice(0, decimalIndex)\n if (intPart.length == 0) {\n intPart = '0'\n }\n let fractPart = strNum.slice(decimalIndex + 1) // extract fractional part\n if (fractPart.length < scale) {\n return value\n }\n const followingDig = parseInt(fractPart[scale]!, 10)\n if (followingDig < 5) {\n // rounding not required\n const newFractPart = fractPart.slice(0, scale)\n return parseFloat(`${intPart}.${newFractPart}`)\n }\n if (followingDig === 5) {\n const newFractPart = fractPart.slice(0, scale + 1)\n if (parseInt(fractPart.slice(scale + 1), 10) > 0) {\n fractPart = `${newFractPart}9`\n } else {\n fractPart = newFractPart\n }\n }\n\n let nextDig = parseInt(fractPart[fractPart.length - 1]!, 10)\n let carriedOver = 0\n for (let ptr = fractPart.length - 1; ptr >= scale; ptr--) {\n let dig = parseInt(fractPart[ptr - 1]!, 10) + carriedOver\n if (nextDig > 5 || (nextDig == 5 && !isEven(dig))) {\n ++dig\n }\n if (dig > 9) {\n dig -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n nextDig = dig\n }\n\n let newFractPart = ''\n for (let ptr = scale - 2; ptr >= 0; ptr--) {\n let d = parseInt(fractPart[ptr]!, 10) + carriedOver\n if (d > 9) {\n d -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n newFractPart = `${d}${newFractPart}`\n }\n\n const resolvedIntPart = parseInt(intPart, 10) + carriedOver\n return parseFloat(`${resolvedIntPart}.${newFractPart}${nextDig}`)\n}\n\nexport const random = (min: number, max: number): number => {\n return Math.random() * (max - min) + min\n}\n\nexport const greatestCommonFactor = (first: number, second: number): number => {\n return second === 0 ? first : greatestCommonFactor(second, first % second)\n}\n"],"mappings":"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","names":["RoundingMode","newFractPart"]}
|
package/dist/mime-type.d.ts
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import { TaggedType } from '@bessemer/cornerstone/types';
|
2
2
|
import { ZodType } from 'zod';
|
3
3
|
export type MimeLiteral = TaggedType<string, 'MimeType'>;
|
4
|
-
export declare const
|
5
|
-
export declare const of: (
|
6
|
-
export declare const fromString: (
|
4
|
+
export declare const Schema: ZodType<MimeLiteral>;
|
5
|
+
export declare const of: (value: string) => MimeLiteral;
|
6
|
+
export declare const fromString: (value: string) => MimeLiteral;
|
7
7
|
export declare const Jpeg: MimeLiteral;
|
8
8
|
export declare const Png: MimeLiteral;
|
9
9
|
export declare const Gif: MimeLiteral;
|
package/dist/mime-type.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACxD,eAAO,MAAM,
|
1
|
+
{"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACxD,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,WAAW,CAA+E,CAAA;AAEvH,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,WAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,WAE1C,CAAA;AAGD,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,GAAG,aAAsB,CAAA;AACtC,eAAO,MAAM,GAAG,aAAqB,CAAA;AACrC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,UAAU,eAAyC,CAAA;AAGhE,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,IAAI,aAAmB,CAAA;AACpC,eAAO,MAAM,QAAQ,aAAkB,CAAA;AACvC,eAAO,MAAM,UAAU,eAAwB,CAAA;AAG/C,eAAO,MAAM,GAAG,aAAmB,CAAA;AACnC,eAAO,MAAM,QAAQ,aAAkB,CAAA;AACvC,eAAO,MAAM,GAAG,aAAkB,CAAA;AAClC,eAAO,MAAM,UAAU,eAAuB,CAAA;AAG9C,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,aAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,SAAS,aAAmB,CAAA;AACzC,eAAO,MAAM,IAAI,aAAkB,CAAA;AACnC,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,aAAa,eAAyC,CAAA;AAGnE,eAAO,MAAM,IAAI,aAAkB,CAAA;AACnC,eAAO,MAAM,KAAK,aAAmB,CAAA;AACrC,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,GAAG,aAAiB,CAAA;AACjC,eAAO,MAAM,SAAS,eAA0B,CAAA;AAGhD,eAAO,MAAM,GAAG,aAAwB,CAAA;AACxC,eAAO,MAAM,IAAI,aAAyB,CAAA;AAC1C,eAAO,MAAM,GAAG,aAA0B,CAAA;AAC1C,eAAO,MAAM,MAAM,aAA6B,CAAA;AAChD,eAAO,MAAM,gBAAgB,eAA2B,CAAA;AAGxD,eAAO,MAAM,QAAQ,aAA4B,CAAA;AACjD,eAAO,MAAM,UAAU,aAA+B,CAAA;AACtD,eAAO,MAAM,WAAW,aAAiC,CAAA"}
|
package/dist/mime-type.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
// src/mime-type.ts
|
2
2
|
import Zod from "zod";
|
3
|
-
var
|
4
|
-
var of = (
|
5
|
-
return
|
3
|
+
var Schema = Zod.string().regex(/^[\w-]+\/[\w.+-]+$/, "Invalid MIME type format");
|
4
|
+
var of = (value) => {
|
5
|
+
return value;
|
6
6
|
};
|
7
|
-
var fromString = (
|
8
|
-
return
|
7
|
+
var fromString = (value) => {
|
8
|
+
return Schema.parse(value);
|
9
9
|
};
|
10
10
|
var Jpeg = of("image/jpeg");
|
11
11
|
var Png = of("image/png");
|
@@ -60,7 +60,6 @@ export {
|
|
60
60
|
Javascript,
|
61
61
|
Jpeg,
|
62
62
|
Json,
|
63
|
-
MimeTypeSchema,
|
64
63
|
Mp3,
|
65
64
|
Mp4,
|
66
65
|
OctetStream,
|
@@ -70,6 +69,7 @@ export {
|
|
70
69
|
Pdf,
|
71
70
|
PlainText,
|
72
71
|
Png,
|
72
|
+
Schema,
|
73
73
|
Svg,
|
74
74
|
Tar,
|
75
75
|
Ttf,
|
package/dist/mime-type.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type MimeLiteral = TaggedType<string, 'MimeType'>\nexport const
|
1
|
+
{"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type MimeLiteral = TaggedType<string, 'MimeType'>\nexport const Schema: ZodType<MimeLiteral> = Zod.string().regex(/^[\\w-]+\\/[\\w.+-]+$/, 'Invalid MIME type format') as any\n\nexport const of = (value: string): MimeLiteral => {\n return value as MimeLiteral\n}\n\nexport const fromString = (value: string): MimeLiteral => {\n return Schema.parse(value)\n}\n\n// Images\nexport const Jpeg = of('image/jpeg')\nexport const Png = of('image/png')\nexport const Gif = of('image/gif')\nexport const Webp = of('image/webp')\nexport const Svg = of('image/svg+xml')\nexport const Ico = of('image/x-icon')\nexport const Avif = of('image/avif')\nexport const ImageTypes = [Jpeg, Png, Gif, Webp, Svg, Ico, Avif]\n\n// Video\nexport const Mp4 = of('video/mp4')\nexport const Webm = of('video/webm')\nexport const OggVideo = of('video/ogg')\nexport const VideoTypes = [Mp4, Webm, OggVideo]\n\n// Audio\nexport const Mp3 = of('audio/mpeg')\nexport const OggAudio = of('audio/ogg')\nexport const Wav = of('audio/wav')\nexport const AudioTypes = [Mp3, OggAudio, Wav]\n\n// Documents\nexport const Pdf = of('application/pdf')\nexport const Json = of('application/json')\nexport const Csv = of('text/csv')\nexport const PlainText = of('text/plain')\nexport const Html = of('text/html')\nexport const Xml = of('application/xml')\nexport const DocumentTypes = [Pdf, Json, Csv, PlainText, Html, Xml]\n\n// Fonts\nexport const Woff = of('font/woff')\nexport const Woff2 = of('font/woff2')\nexport const Ttf = of('font/ttf')\nexport const Otf = of('font/otf')\nexport const FontTypes = [Woff, Woff2, Ttf, Otf]\n\n// Compression\nexport const Zip = of('application/zip')\nexport const Gzip = of('application/gzip')\nexport const Tar = of('application/x-tar')\nexport const Brotli = of('application/x-brotli')\nexport const CompressionTypes = [Zip, Gzip, Tar, Brotli]\n\n// Misc\nexport const FormData = of('multipart/form-data')\nexport const Javascript = of('application/javascript')\nexport const OctetStream = of('application/octet-stream')\n"],"mappings":";AACA,OAAO,SAAsB;AAGtB,IAAM,SAA+B,IAAI,OAAO,EAAE,MAAM,sBAAsB,0BAA0B;AAExG,IAAM,KAAK,CAAC,UAA+B;AAChD,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAA+B;AACxD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAGO,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,MAAM,GAAG,eAAe;AAC9B,IAAM,MAAM,GAAG,cAAc;AAC7B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,aAAa,CAAC,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI;AAGxD,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,OAAO,GAAG,YAAY;AAC5B,IAAM,WAAW,GAAG,WAAW;AAC/B,IAAM,aAAa,CAAC,KAAK,MAAM,QAAQ;AAGvC,IAAM,MAAM,GAAG,YAAY;AAC3B,IAAM,WAAW,GAAG,WAAW;AAC/B,IAAM,MAAM,GAAG,WAAW;AAC1B,IAAM,aAAa,CAAC,KAAK,UAAU,GAAG;AAGtC,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,YAAY,GAAG,YAAY;AACjC,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,gBAAgB,CAAC,KAAK,MAAM,KAAK,WAAW,MAAM,GAAG;AAG3D,IAAM,OAAO,GAAG,WAAW;AAC3B,IAAM,QAAQ,GAAG,YAAY;AAC7B,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,MAAM,GAAG,UAAU;AACzB,IAAM,YAAY,CAAC,MAAM,OAAO,KAAK,GAAG;AAGxC,IAAM,MAAM,GAAG,iBAAiB;AAChC,IAAM,OAAO,GAAG,kBAAkB;AAClC,IAAM,MAAM,GAAG,mBAAmB;AAClC,IAAM,SAAS,GAAG,sBAAsB;AACxC,IAAM,mBAAmB,CAAC,KAAK,MAAM,KAAK,MAAM;AAGhD,IAAM,WAAW,GAAG,qBAAqB;AACzC,IAAM,aAAa,GAAG,wBAAwB;AAC9C,IAAM,cAAc,GAAG,0BAA0B;","names":[]}
|
package/dist/range.d.ts
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
import { ZodType } from 'zod';
|
1
|
+
import Zod, { ZodType } from 'zod';
|
2
2
|
import { TaggedType } from '@bessemer/cornerstone/types';
|
3
|
-
export declare const boundsSchema: <T extends ZodType>(type: T) => import("zod").ZodBranded<import("zod").ZodTuple<[import("zod").ZodNullable<T>, import("zod").ZodNullable<T>], null>, "Bounds">;
|
4
3
|
export type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>;
|
5
|
-
export
|
4
|
+
export type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>;
|
5
|
+
export declare const schema: <T extends ZodType>(type: T) => Zod.ZodTuple<[Zod.ZodNullable<T>, Zod.ZodNullable<T>], null>;
|
6
|
+
export type NumericBounds<T> = Bounds<number>;
|
7
|
+
export declare const NumericSchema: Zod.ZodTuple<[Zod.ZodNullable<Zod.ZodNumber>, Zod.ZodNullable<Zod.ZodNumber>], null>;
|
8
|
+
export declare const of: <T>(bounds: BoundsInput<T>) => Bounds<T>;
|
6
9
|
//# 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":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;
|
1
|
+
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AAClE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,iEAEhD,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;AAC7C,eAAO,MAAM,aAAa,sFAAuB,CAAA;AAEjD,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,QAAQ,WAAW,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAMtD,CAAA"}
|