@bessemer/cornerstone 0.5.52 → 0.5.53
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.map +1 -1
- package/dist/array.js +16 -13
- package/dist/array.js.map +1 -1
- package/dist/assertion.d.ts +4 -4
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +14 -13
- package/dist/assertion.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +4 -3
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +22 -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 +8 -5
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +9 -9
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +18 -13
- package/dist/content.js.map +1 -1
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +2 -2
- 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/error-event.d.ts +10 -6
- package/dist/error-event.d.ts.map +1 -1
- package/dist/error-event.js +34 -12
- package/dist/error-event.js.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/expression/array-expression.js +3 -3
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/expression/core-expression.d.ts +6 -6
- package/dist/expression/core-expression.d.ts.map +1 -1
- package/dist/expression/core-expression.js +9 -6
- package/dist/expression/core-expression.js.map +1 -1
- package/dist/expression/expression-evaluator.js +3 -3
- package/dist/expression/expression-evaluator.js.map +1 -1
- package/dist/expression/expression-mapper.js +3 -3
- package/dist/expression/expression-mapper.js.map +1 -1
- package/dist/expression/expression.d.ts +5 -6
- package/dist/expression/expression.d.ts.map +1 -1
- package/dist/expression/expression.js +2 -2
- package/dist/expression/expression.js.map +1 -1
- package/dist/expression/internal.d.ts.map +1 -1
- package/dist/expression/internal.js +3 -3
- package/dist/expression/internal.js.map +1 -1
- package/dist/expression/numeric-expression.d.ts +5 -5
- package/dist/expression/numeric-expression.d.ts.map +1 -1
- package/dist/expression/numeric-expression.js +11 -10
- package/dist/expression/numeric-expression.js.map +1 -1
- package/dist/hex-code.d.ts +2 -2
- package/dist/hex-code.d.ts.map +1 -1
- package/dist/hex-code.js +1 -1
- package/dist/hex-code.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/misc.d.ts.map +1 -1
- package/dist/misc.js +4 -3
- package/dist/misc.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.map +1 -1
- package/dist/range.js +4 -3
- 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 +3 -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.map +1 -1
- package/dist/signature.js +6 -4
- package/dist/signature.js.map +1 -1
- package/dist/sql/sql-expression-parser.d.ts.map +1 -1
- package/dist/sql/sql-expression-parser.js +18 -14
- package/dist/sql/sql-expression-parser.js.map +1 -1
- 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 +2 -2
- 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/ulid.d.ts.map +1 -1
- package/dist/ulid.js +4 -3
- package/dist/ulid.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 +1 -2
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js +28 -19
- package/dist/url.js.map +1 -1
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +7 -5
- package/dist/uuid.js.map +1 -1
- package/package.json +1 -1
package/dist/logger.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/logger.ts"],"sourcesContent":["import pino from 'pino'\nimport {
|
1
|
+
{"version":3,"sources":["../src/logger.ts"],"sourcesContent":["import pino from 'pino'\nimport { createGlobalVariable } from '@bessemer/cornerstone/global-variable'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { UnknownRecord } from 'type-fest'\nimport { deepMerge, isNil } from '@bessemer/cornerstone/object'\n\ntype PinoLogger = pino.Logger\ntype PinoBindings = pino.Bindings\nexport type LoggerOptions = pino.LoggerOptions\n\ntype LogOptions = { error?: unknown; context?: UnknownRecord }\ntype LogFunction = (message: LazyValue<string>, options?: LogOptions) => void\n\nexport class Logger {\n constructor(private readonly logger: PinoLogger) {}\n\n trace: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('trace') ?? true) {\n this.logger.trace({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n\n debug: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('debug') ?? true) {\n this.logger.debug({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n\n info: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('info') ?? true) {\n this.logger.info({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n\n warn: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('warn') ?? true) {\n this.logger.warn({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n\n error: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('error') ?? true) {\n this.logger.error({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n\n fatal: LogFunction = (message: LazyValue<string>, options?: LogOptions): void => {\n if (this.logger.isLevelEnabled?.('fatal') ?? true) {\n this.logger.fatal({ err: options?.error, context: options?.context }, evaluate(message))\n }\n }\n}\n\nconst getPrettyTransport = (): LoggerOptions => {\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n return {}\n }\n\n return {\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: true,\n ignore: 'pid,hostname,module',\n messageFormat: '{if module}{module} - {end}{msg}',\n },\n },\n }\n}\n\nconst applyDefaultOptions = (options?: LoggerOptions): LoggerOptions => {\n const defaultOptions: LoggerOptions = {\n browser: {\n asObject: true,\n },\n // JOHN need to find a better way to include\n // ...getPrettyTransport(),\n }\n\n return deepMerge(defaultOptions, options)\n}\n\nconst createProxyHandler = (getLogger: () => PinoLogger): ProxyHandler<PinoLogger> => {\n let cachedLogger: PinoLogger | null = null\n let cachedVersion = GlobalLoggerState.getValue().version\n\n const getOrCreateLogger = () => {\n if (cachedVersion !== GlobalLoggerState.getValue().version) {\n cachedLogger = null\n cachedVersion = GlobalLoggerState.getValue().version\n }\n\n if (isNil(cachedLogger)) {\n cachedLogger = getLogger()\n }\n\n return cachedLogger\n }\n\n return {\n get(_: any, prop: string): any {\n if (prop === 'child') {\n return (bindings: PinoBindings) => {\n return new Proxy(\n {} as PinoLogger,\n createProxyHandler(() => getOrCreateLogger().child(bindings))\n )\n }\n }\n\n return (getOrCreateLogger() as any)[prop]\n },\n }\n}\n\nconst GlobalLoggerState = createGlobalVariable<{\n version: number\n logger: pino.Logger\n}>('GlobalLoggerState', () => ({\n version: 0,\n logger: pino(applyDefaultOptions({ level: 'info' })),\n}))\n\nconst LoggerProxy: PinoLogger = new Proxy(\n {} as PinoLogger,\n createProxyHandler(() => GlobalLoggerState.getValue().logger)\n)\n\nconst Primary: Logger = new Logger(LoggerProxy)\n\nexport const initialize = (initialOptions?: LoggerOptions): void => {\n const options = applyDefaultOptions(initialOptions)\n GlobalLoggerState.setValue({ version: GlobalLoggerState.getValue().version + 1, logger: pino(options) })\n}\n\nexport const child = (module: string): Logger => {\n return new Logger(LoggerProxy.child({ module }))\n}\n\nexport const trace = Primary.trace\nexport const debug = Primary.debug\nexport const info = Primary.info\nexport const warn = Primary.warn\nexport const error = Primary.error\nexport const fatal = Primary.fatal\n"],"mappings":"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","names":[]}
|
package/dist/misc.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAI3D,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC,KAAG,CAkBhG,CAAA"}
|
package/dist/misc.js
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
// src/misc.ts
|
2
|
-
import {
|
2
|
+
import { assertTrue } from "@bessemer/cornerstone/assertion";
|
3
|
+
import { isPresent } from "@bessemer/cornerstone/object";
|
3
4
|
var doUntilConsistent = (supplier, equals) => {
|
4
5
|
let done = false;
|
5
6
|
let previousValue = null;
|
6
7
|
let attempts = 0;
|
7
8
|
do {
|
8
|
-
|
9
|
+
assertTrue(attempts < 10);
|
9
10
|
const currentValue = supplier(previousValue);
|
10
|
-
if (
|
11
|
+
if (isPresent(previousValue) && equals(previousValue, currentValue)) {
|
11
12
|
done = true;
|
12
13
|
}
|
13
14
|
previousValue = currentValue;
|
package/dist/misc.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/misc.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/misc.ts"],"sourcesContent":["import { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { assertTrue } from '@bessemer/cornerstone/assertion'\nimport { isPresent } from '@bessemer/cornerstone/object'\n\nexport const doUntilConsistent = <T>(supplier: (previous: T | null) => T, equals: Equalitor<T>): T => {\n let done = false\n let previousValue: T | null = null\n let attempts = 0\n do {\n assertTrue(attempts < 10)\n\n const currentValue = supplier(previousValue)\n\n if (isPresent(previousValue) && equals(previousValue, currentValue)) {\n done = true\n }\n\n previousValue = currentValue\n attempts++\n } while (!done)\n\n return previousValue\n}\n"],"mappings":";AACA,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,IAAM,oBAAoB,CAAI,UAAqC,WAA4B;AACpG,MAAI,OAAO;AACX,MAAI,gBAA0B;AAC9B,MAAI,WAAW;AACf,KAAG;AACD,eAAW,WAAW,EAAE;AAExB,UAAM,eAAe,SAAS,aAAa;AAE3C,QAAI,UAAU,aAAa,KAAK,OAAO,eAAe,YAAY,GAAG;AACnE,aAAO;AAAA,IACT;AAEA,oBAAgB;AAChB;AAAA,EACF,SAAS,CAAC;AAEV,SAAO;AACT;","names":[]}
|
package/dist/patch.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../src/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,UAAU,EAGV,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;
|
1
|
+
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../src/patch.ts"],"names":[],"mappings":"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"}
|
package/dist/patch.js
CHANGED
@@ -4,7 +4,8 @@ import {
|
|
4
4
|
Expressions,
|
5
5
|
NumericExpressions
|
6
6
|
} from "@bessemer/cornerstone/expression";
|
7
|
-
import {
|
7
|
+
import { assertUnreachable } from "@bessemer/cornerstone/assertion";
|
8
|
+
import { deepMergeWith, isNil, isObject } from "@bessemer/cornerstone/object";
|
8
9
|
var PatchType = /* @__PURE__ */ ((PatchType2) => {
|
9
10
|
PatchType2["Set"] = "Set";
|
10
11
|
PatchType2["Apply"] = "Apply";
|
@@ -53,7 +54,7 @@ var resolveWithDetails = (value, patches, evaluate) => {
|
|
53
54
|
currentValue = applyPatch(currentValue, patch2.patch, evaluate);
|
54
55
|
break;
|
55
56
|
default:
|
56
|
-
|
57
|
+
assertUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`);
|
57
58
|
}
|
58
59
|
return { value: currentValue, patch: patch2 };
|
59
60
|
});
|
@@ -63,11 +64,11 @@ var resolve = (value, patches, evaluate) => {
|
|
63
64
|
return resolveWithDetails(value, patches, evaluate).value;
|
64
65
|
};
|
65
66
|
var applyPatch = (value, patch2, evaluate) => {
|
66
|
-
return
|
67
|
-
if (
|
67
|
+
return deepMergeWith(value, patch2, (value2, patch3) => {
|
68
|
+
if (isNil(patch3)) {
|
68
69
|
return value2;
|
69
70
|
}
|
70
|
-
if (!
|
71
|
+
if (!isObject(patch3) || !("_PatchType" in patch3)) {
|
71
72
|
return void 0;
|
72
73
|
}
|
73
74
|
return evaluate(resolve(value2, [patch3], evaluate));
|
package/dist/patch.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/patch.ts"],"sourcesContent":["import {\n ArrayExpressions,\n EvaluateExpression,\n Expression,\n Expressions,\n NumericExpressions,\n ReducingExpression,\n} from '@bessemer/cornerstone/expression'\nimport {
|
1
|
+
{"version":3,"sources":["../src/patch.ts"],"sourcesContent":["import {\n ArrayExpressions,\n EvaluateExpression,\n Expression,\n Expressions,\n NumericExpressions,\n ReducingExpression,\n} from '@bessemer/cornerstone/expression'\nimport { UnknownRecord } from 'type-fest'\nimport { assertUnreachable } from '@bessemer/cornerstone/assertion'\nimport { deepMergeWith, isNil, isObject } from '@bessemer/cornerstone/object'\n\nexport enum PatchType {\n Set = 'Set',\n Apply = 'Apply',\n Patch = 'Patch',\n}\n\nexport type SetPatch<T> = {\n _PatchType: PatchType.Set\n value: Expression<T>\n}\n\nexport type ApplyPatch<T> = {\n _PatchType: PatchType.Apply\n value: Expression<T>\n reducer: ReducingExpression<T, T>\n}\n\nexport type PatchPatch<T> = {\n _PatchType: PatchType.Patch\n patch: Patchable<T>\n}\n\nexport type Patch<T> = SetPatch<T> | ApplyPatch<T> | PatchPatch<T>\n\nexport type PatchValue<T> = {\n value: T\n patch: Patch<T>\n}\n\nexport type Patchable<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Patch<U[]> | Patchable<U[]>\n : T[P] extends object | undefined\n ? Patch<T[P]> | Patchable<T[P]>\n : Patch<T[P]> | T[P]\n}\n\nexport const set = <T>(value: Expression<T>): Patch<T> => {\n return {\n _PatchType: PatchType.Set,\n value: value as any,\n }\n}\n\nexport const apply = <T>(value: Expression<T>, reducer: ReducingExpression<T, T>): Patch<T> => {\n return {\n _PatchType: PatchType.Apply,\n value,\n reducer,\n }\n}\n\nexport const patch = <T extends UnknownRecord, N extends Patchable<T> = Patchable<T>>(patch: N): Patch<T> => {\n return {\n _PatchType: PatchType.Patch,\n patch,\n }\n}\n\nexport const sum = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.SumExpression))\n}\n\nexport const multiply = (value: Expression<number>): Patch<number> => {\n return apply(value, Expressions.reference(NumericExpressions.MultiplyExpression))\n}\n\nexport const concatenate = <T extends Array<Expression<unknown>>>(value: Expression<T>): Patch<T> => {\n return apply(value, Expressions.reference(ArrayExpressions.ConcatenateExpression)) as Patch<T>\n}\n\nexport type ResolvePatchesResult<T> = {\n value: T\n patchValues: Array<PatchValue<T>>\n}\n\nexport const resolveWithDetails = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): ResolvePatchesResult<T> => {\n let currentValue: T = value\n\n const patchValues = patches.map((patch) => {\n switch (patch._PatchType) {\n case PatchType.Set:\n currentValue = evaluate(patch.value)\n break\n case PatchType.Apply:\n currentValue = evaluate(Expressions.dereference(patch.reducer, [currentValue, patch.value]))\n break\n case PatchType.Patch:\n currentValue = applyPatch(currentValue, patch.patch, evaluate)\n break\n default:\n assertUnreachable(() => `Unrecognized PatchType for value: ${JSON.stringify(it)}`)\n }\n\n return { value: currentValue, patch }\n })\n\n return { value: currentValue, patchValues }\n}\n\nexport const resolve = <T>(value: T, patches: Array<Patch<T>>, evaluate: EvaluateExpression): T => {\n return resolveWithDetails(value, patches, evaluate).value\n}\n\nconst applyPatch = <T>(value: T, patch: Patchable<T>, evaluate: EvaluateExpression): T => {\n return deepMergeWith(value, patch, (value, patch) => {\n if (isNil(patch)) {\n return value\n }\n\n if (!isObject(patch) || !('_PatchType' in patch)) {\n return undefined\n }\n\n return evaluate(resolve(value, [patch as Patch<T>], evaluate))\n })\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,yBAAyB;AAClC,SAAS,eAAe,OAAO,gBAAgB;AAExC,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AAqCL,IAAM,MAAM,CAAI,UAAmC;AACxD,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAI,OAAsB,YAAgD;AAC7F,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAiEC,WAAuB;AAC3G,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAAA;AAAA,EACF;AACF;AAEO,IAAM,MAAM,CAAC,UAA6C;AAC/D,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,aAAa,CAAC;AAC7E;AAEO,IAAM,WAAW,CAAC,UAA6C;AACpE,SAAO,MAAM,OAAO,YAAY,UAAU,mBAAmB,kBAAkB,CAAC;AAClF;AAEO,IAAM,cAAc,CAAuC,UAAmC;AACnG,SAAO,MAAM,OAAO,YAAY,UAAU,iBAAiB,qBAAqB,CAAC;AACnF;AAOO,IAAM,qBAAqB,CAAI,OAAU,SAA0B,aAA0D;AAClI,MAAI,eAAkB;AAEtB,QAAM,cAAc,QAAQ,IAAI,CAACA,WAAU;AACzC,YAAQA,OAAM,YAAY;AAAA,MACxB,KAAK;AACH,uBAAe,SAASA,OAAM,KAAK;AACnC;AAAA,MACF,KAAK;AACH,uBAAe,SAAS,YAAY,YAAYA,OAAM,SAAS,CAAC,cAAcA,OAAM,KAAK,CAAC,CAAC;AAC3F;AAAA,MACF,KAAK;AACH,uBAAe,WAAW,cAAcA,OAAM,OAAO,QAAQ;AAC7D;AAAA,MACF;AACE,0BAAkB,MAAM,qCAAqC,KAAK,UAAU,EAAE,CAAC,EAAE;AAAA,IACrF;AAEA,WAAO,EAAE,OAAO,cAAc,OAAAA,OAAM;AAAA,EACtC,CAAC;AAED,SAAO,EAAE,OAAO,cAAc,YAAY;AAC5C;AAEO,IAAM,UAAU,CAAI,OAAU,SAA0B,aAAoC;AACjG,SAAO,mBAAmB,OAAO,SAAS,QAAQ,EAAE;AACtD;AAEA,IAAM,aAAa,CAAI,OAAUA,QAAqB,aAAoC;AACxF,SAAO,cAAc,OAAOA,QAAO,CAACC,QAAOD,WAAU;AACnD,QAAI,MAAMA,MAAK,GAAG;AAChB,aAAOC;AAAA,IACT;AAEA,QAAI,CAAC,SAASD,MAAK,KAAK,EAAE,gBAAgBA,SAAQ;AAChD,aAAO;AAAA,IACT;AAEA,WAAO,SAAS,QAAQC,QAAO,CAACD,MAAiB,GAAG,QAAQ,CAAC;AAAA,EAC/D,CAAC;AACH;","names":["PatchType","patch","value"]}
|
package/dist/property.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../src/property.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../src/property.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,cAAc,EAAiB,GAAG,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAGzD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI;IACpD,MAAM,EAAE,CAAC,CAAA;IACT,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7D,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,aAAa,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAG,cAAc,CAAC,CAAC,CAWvH,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,aAAa,EAAE,YAAY,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,KAAG,CAGlG,CAAA"}
|
package/dist/property.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
// src/property.ts
|
2
|
-
import {
|
2
|
+
import { resolve as resolveTag, serializeTags } from "@bessemer/cornerstone/tag";
|
3
|
+
import { deepMergeAll } from "@bessemer/cornerstone/object";
|
3
4
|
var properties = (values, overrides) => {
|
4
5
|
const propertyOverrideEntries = (overrides ?? []).map((override) => {
|
5
|
-
return [
|
6
|
+
return [serializeTags(override.tags), override];
|
6
7
|
});
|
7
8
|
const propertyOverrides = Object.fromEntries(propertyOverrideEntries);
|
8
9
|
return {
|
@@ -11,8 +12,8 @@ var properties = (values, overrides) => {
|
|
11
12
|
};
|
12
13
|
};
|
13
14
|
var resolve = (properties2, tags) => {
|
14
|
-
const overrides =
|
15
|
-
return
|
15
|
+
const overrides = resolveTag(Object.values(properties2.overrides), tags);
|
16
|
+
return deepMergeAll([properties2.values, ...overrides.reverse()]);
|
16
17
|
};
|
17
18
|
export {
|
18
19
|
properties,
|
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.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,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAIxD,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,mIAEtD,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElE,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAG,MAAM,CAAC,CAAC,CAM/E,CAAA"}
|
package/dist/range.js
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
// src/range.ts
|
2
|
-
import {
|
2
|
+
import { isUndefined } from "@bessemer/cornerstone/object";
|
3
|
+
import { tuple } from "@bessemer/cornerstone/zod";
|
3
4
|
var boundsSchema = (type) => {
|
4
|
-
return
|
5
|
+
return tuple([type.nullable(), type.nullable()]).brand("Bounds");
|
5
6
|
};
|
6
7
|
var bounds = (bounds2) => {
|
7
|
-
if (
|
8
|
+
if (isUndefined(bounds2[1])) {
|
8
9
|
return [bounds2[0], null];
|
9
10
|
}
|
10
11
|
return bounds2;
|
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 { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { isUndefined } from '@bessemer/cornerstone/object'\nimport { tuple } from '@bessemer/cornerstone/zod'\n\nexport const boundsSchema = <T extends ZodType>(type: T) => {\n return tuple([type.nullable(), type.nullable()]).brand('Bounds')\n}\n\nexport type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>\n\nexport const bounds = <T>(bounds: [lower: T | null, upper?: T | null]): 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":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,aAAa;AAEf,IAAM,eAAe,CAAoB,SAAY;AAC1D,SAAO,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,MAAM,QAAQ;AACjE;AAIO,IAAM,SAAS,CAAIA,YAA2D;AACnF,MAAI,YAAYA,QAAO,CAAC,CAAC,GAAG;AAC1B,WAAO,CAACA,QAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAOA;AACT;","names":["bounds"]}
|
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,5 +1,6 @@
|
|
1
1
|
// src/resource.ts
|
2
|
-
import
|
2
|
+
import Zod from "zod";
|
3
|
+
import { removeStart } from "@bessemer/cornerstone/string";
|
3
4
|
var ResourceNamespaceSchema = Zod.string();
|
4
5
|
var ResourceKey;
|
5
6
|
((ResourceKey2) => {
|
@@ -11,7 +12,7 @@ var ResourceKey;
|
|
11
12
|
return keys.map((it) => ResourceKey2.namespace(namespace2, it));
|
12
13
|
};
|
13
14
|
ResourceKey2.stripNamespace = (namespace2, key) => {
|
14
|
-
return
|
15
|
+
return removeStart(key, `${namespace2}${ResourceNamespaceSeparator}`);
|
15
16
|
};
|
16
17
|
ResourceKey2.stripNamespaceAll = (namespace2, keys) => {
|
17
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 { assertTrue } from "@bessemer/cornerstone/assertion";
|
5
|
+
import { deepMerge, isUndefined } from "@bessemer/cornerstone/object";
|
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 { assertTrue } from '@bessemer/cornerstone/assertion'\nimport { deepMerge, isUndefined } from '@bessemer/cornerstone/object'\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,kBAAkB;AAC3B,SAAS,WAAW,mBAAmB;AACvC,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.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;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAEpF,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,MAAM,GAAG,MAqB/C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAEtE,CAAA"}
|
package/dist/signature.js
CHANGED
@@ -1,14 +1,16 @@
|
|
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
|
-
if (
|
5
|
-
if (
|
6
|
+
if (isObject(value)) {
|
7
|
+
if (isReferencable(value)) {
|
6
8
|
return value.reference.id;
|
7
9
|
} else {
|
8
10
|
return value.id;
|
9
11
|
}
|
10
12
|
}
|
11
|
-
if (
|
13
|
+
if (isDate(value)) {
|
12
14
|
return value.getTime();
|
13
15
|
}
|
14
16
|
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 | { id: string } | { reference: Reference<string> }\n\nexport const sign = (value: Signable): string | number => {\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<string | number> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,SAAS,sBAAiC;AAE1C,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAOhB,IAAM,OAAO,CAAC,UAAqC;AACxD,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,WAAoD;AAC1E,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sql-expression-parser.d.ts","sourceRoot":"","sources":["../../src/sql/sql-expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;
|
1
|
+
{"version":3,"file":"sql-expression-parser.d.ts","sourceRoot":"","sources":["../../src/sql/sql-expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;AACrF,OAAO,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAenE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAOxE,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AACD,qBAAa,mBAAoB,SAAQ,gBAAgB,CAAC,WAAW,EAAE,0BAA0B,CAAC;CAAG;AAErG,eAAO,MAAM,0BAA0B,qBAA4B,CAAA"}
|