@bessemer/cornerstone 0.5.63 → 0.5.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.d.ts +23 -30
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +108 -58
- package/dist/array.js.map +1 -1
- package/dist/assertion.d.ts +1 -9
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +8 -53
- package/dist/assertion.js.map +1 -1
- package/dist/async-value.js +2 -2
- package/dist/async-value.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +2 -2
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts +5 -5
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +21 -17
- package/dist/cache.js.map +1 -1
- package/dist/combinable.d.ts.map +1 -1
- package/dist/combinable.js +5 -4
- package/dist/combinable.js.map +1 -1
- package/dist/comparator.d.ts.map +1 -1
- package/dist/comparator.js +9 -8
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +4 -14
- package/dist/content.d.ts.map +1 -1
- package/dist/date.d.ts +2 -2
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +5 -4
- package/dist/date.js.map +1 -1
- package/dist/either.d.ts +0 -1
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +2 -3
- package/dist/either.js.map +1 -1
- package/dist/entry.d.ts +9 -7
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +5 -1
- package/dist/entry.js.map +1 -1
- package/dist/equalitor.d.ts +2 -1
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +6 -2
- package/dist/equalitor.js.map +1 -1
- package/dist/error-event.d.ts +9 -12
- package/dist/error-event.d.ts.map +1 -1
- package/dist/error-event.js +45 -12
- package/dist/error-event.js.map +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/expression/array-expression.js +1 -1
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -9
- package/dist/logger.js.map +1 -1
- package/dist/map.d.ts +17 -0
- package/dist/map.d.ts.map +1 -0
- package/dist/map.js +117 -0
- package/dist/map.js.map +1 -0
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +4 -7
- package/dist/math.js.map +1 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +4 -3
- package/dist/misc.js.map +1 -1
- package/dist/monetary-amount.d.ts +8 -2
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +25 -8
- package/dist/monetary-amount.js.map +1 -1
- package/dist/object-path.d.ts +10 -0
- package/dist/object-path.d.ts.map +1 -0
- package/dist/object-path.js +78 -0
- package/dist/object-path.js.map +1 -0
- package/dist/object.d.ts +5 -24
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +64 -96
- package/dist/object.js.map +1 -1
- package/dist/patch.d.ts.map +1 -1
- package/dist/patch.js +5 -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 +4 -2
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +2 -2
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +1 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +13 -10
- package/dist/reference.js.map +1 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +2 -2
- package/dist/resource.js.map +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +6 -5
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +14 -9
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.js +2 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts +3 -2
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +6 -4
- package/dist/signature.js.map +1 -1
- package/dist/store.d.ts +13 -13
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +9 -7
- package/dist/store.js.map +1 -1
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +3 -4
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +12 -12
- package/dist/tag.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/uri.d.ts.map +1 -1
- package/dist/uri.js +52 -50
- package/dist/uri.js.map +1 -1
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js.map +1 -1
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +4 -3
- package/dist/uuid.js.map +1 -1
- package/dist/zod-util.d.ts +1 -1
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +4 -1
- package/dist/zod-util.js.map +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../src/error-event.ts"],"names":[],"mappings":"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"}
|
package/dist/error-event.js
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
// src/error-event.ts
|
2
|
-
import {
|
2
|
+
import { deepMerge, isNil, isObject, isPresent } from "@bessemer/cornerstone/object";
|
3
3
|
import Zod from "zod";
|
4
4
|
import { evaluate } from "@bessemer/cornerstone/lazy";
|
5
|
+
import { findInCausalChain as errorsFindInCausalChain, isError } from "@bessemer/cornerstone/error";
|
6
|
+
import { isPromise } from "@bessemer/cornerstone/promise";
|
7
|
+
import { first } from "@bessemer/cornerstone/array";
|
5
8
|
var ErrorCodeSchema = Zod.string();
|
6
9
|
var ErrorAttributeSchema = Zod.string();
|
7
10
|
var baseErrorEventSchema = Zod.object({
|
@@ -21,7 +24,7 @@ var ErrorEventException = class extends Error {
|
|
21
24
|
}
|
22
25
|
};
|
23
26
|
var isErrorEvent = (throwable) => {
|
24
|
-
if (!
|
27
|
+
if (!isObject(throwable)) {
|
25
28
|
return false;
|
26
29
|
}
|
27
30
|
return "code" in throwable && "message" in throwable && "attributes" in throwable && "causes" in throwable;
|
@@ -42,11 +45,11 @@ var from = (throwable) => {
|
|
42
45
|
if (isErrorEvent(throwable)) {
|
43
46
|
return throwable;
|
44
47
|
}
|
45
|
-
if (!
|
48
|
+
if (!isError(throwable)) {
|
46
49
|
return unhandled();
|
47
50
|
}
|
48
|
-
const errorEventException =
|
49
|
-
if (
|
51
|
+
const errorEventException = errorsFindInCausalChain(throwable, isErrorEventException);
|
52
|
+
if (isNil(errorEventException)) {
|
50
53
|
return unhandled();
|
51
54
|
}
|
52
55
|
return errorEventException.errorEvent;
|
@@ -54,7 +57,7 @@ var from = (throwable) => {
|
|
54
57
|
function withPropagation(runnable, attributes) {
|
55
58
|
try {
|
56
59
|
let result = runnable();
|
57
|
-
if (
|
60
|
+
if (isPromise(result)) {
|
58
61
|
return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)));
|
59
62
|
} else {
|
60
63
|
return result;
|
@@ -81,7 +84,7 @@ var findInCausalChain = (error, predicate) => {
|
|
81
84
|
if (predicate(error)) {
|
82
85
|
return error;
|
83
86
|
}
|
84
|
-
return
|
87
|
+
return first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(isPresent));
|
85
88
|
};
|
86
89
|
var aggregate = (builder, causes) => {
|
87
90
|
if (causes.length === 0) {
|
@@ -97,7 +100,7 @@ var BadRequestErrorCode = "error-event.bad-request";
|
|
97
100
|
var RequestCorrelationIdAttribute = "requestCorrelationId";
|
98
101
|
var HttpStatusCodeAttribute = "httpStatusCode";
|
99
102
|
var unhandled = (builder) => of(
|
100
|
-
|
103
|
+
deepMerge(
|
101
104
|
{
|
102
105
|
code: UnhandledErrorCode,
|
103
106
|
message: "An Unhandled Error has occurred.",
|
@@ -107,7 +110,7 @@ var unhandled = (builder) => of(
|
|
107
110
|
)
|
108
111
|
);
|
109
112
|
var notFound = (builder) => of(
|
110
|
-
|
113
|
+
deepMerge(
|
111
114
|
{
|
112
115
|
code: NotFoundErrorCode,
|
113
116
|
message: "The requested Resource could not be found.",
|
@@ -117,7 +120,7 @@ var notFound = (builder) => of(
|
|
117
120
|
)
|
118
121
|
);
|
119
122
|
var unauthorized = (builder) => of(
|
120
|
-
|
123
|
+
deepMerge(
|
121
124
|
{
|
122
125
|
code: UnauthorizedErrorCode,
|
123
126
|
message: "The requested Resource requires authentication.",
|
@@ -127,7 +130,7 @@ var unauthorized = (builder) => of(
|
|
127
130
|
)
|
128
131
|
);
|
129
132
|
var forbidden = (builder) => of(
|
130
|
-
|
133
|
+
deepMerge(
|
131
134
|
{
|
132
135
|
code: ForbiddenErrorCode,
|
133
136
|
message: "The requested Resource requires additional permissions to access.",
|
@@ -137,7 +140,7 @@ var forbidden = (builder) => of(
|
|
137
140
|
)
|
138
141
|
);
|
139
142
|
var badRequest = (builder) => of(
|
140
|
-
|
143
|
+
deepMerge(
|
141
144
|
{
|
142
145
|
code: BadRequestErrorCode,
|
143
146
|
message: "The request is invalid and cannot be processed.",
|
@@ -146,6 +149,31 @@ var badRequest = (builder) => of(
|
|
146
149
|
builder
|
147
150
|
)
|
148
151
|
);
|
152
|
+
function assertPresent(value, builder = () => void 0) {
|
153
|
+
if (isNil(value)) {
|
154
|
+
throw new ErrorEventException(notFound(evaluate(builder)));
|
155
|
+
}
|
156
|
+
}
|
157
|
+
function assertAuthorized(value, builder = () => void 0) {
|
158
|
+
if (!value) {
|
159
|
+
throw new ErrorEventException(unauthorized(evaluate(builder)));
|
160
|
+
}
|
161
|
+
}
|
162
|
+
function assertPermitted(value, builder = () => void 0) {
|
163
|
+
if (!value) {
|
164
|
+
throw new ErrorEventException(forbidden(evaluate(builder)));
|
165
|
+
}
|
166
|
+
}
|
167
|
+
function assertValid(value, builder = () => void 0) {
|
168
|
+
if (!value) {
|
169
|
+
throw new ErrorEventException(badRequest(evaluate(builder)));
|
170
|
+
}
|
171
|
+
}
|
172
|
+
function assert(value, builder) {
|
173
|
+
if (!value) {
|
174
|
+
throw new ErrorEventException(of(evaluate(builder)));
|
175
|
+
}
|
176
|
+
}
|
149
177
|
export {
|
150
178
|
BadRequestErrorCode,
|
151
179
|
ErrorAttributeSchema,
|
@@ -158,6 +186,11 @@ export {
|
|
158
186
|
UnauthorizedErrorCode,
|
159
187
|
UnhandledErrorCode,
|
160
188
|
aggregate,
|
189
|
+
assert,
|
190
|
+
assertAuthorized,
|
191
|
+
assertPermitted,
|
192
|
+
assertPresent,
|
193
|
+
assertValid,
|
161
194
|
badRequest,
|
162
195
|
findByCodeInCausalChain,
|
163
196
|
findInCausalChain,
|
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>(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":[]}
|
1
|
+
{"version":3,"sources":["../src/error-event.ts"],"sourcesContent":["import { Dictionary, NominalType, Throwable } from '@bessemer/cornerstone/types'\nimport { deepMerge, isNil, isObject, isPresent, RecordAttribute } from '@bessemer/cornerstone/object'\nimport Zod, { ZodType } from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { findInCausalChain as errorsFindInCausalChain, isError } from '@bessemer/cornerstone/error'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { first } from '@bessemer/cornerstone/array'\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, string> = 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 (!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 (!isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = errorsFindInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (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 (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 first(error.causes.map((it) => findInCausalChain(it, predicate)).filter(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 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 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 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 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 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\nexport function assertPresent<T>(value: T, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is NonNullable<T> {\n if (isNil(value)) {\n throw new ErrorEventException(notFound(evaluate(builder)))\n }\n}\n\nexport function assertAuthorized(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(evaluate(builder)))\n }\n}\n\nexport function assertPermitted(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(forbidden(evaluate(builder)))\n }\n}\n\nexport function assertValid(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(badRequest(evaluate(builder)))\n }\n}\n\nexport function assert(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true {\n if (!value) {\n throw new ErrorEventException(of(evaluate(builder)))\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/error.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,gCAAW,CAAA;AAE/B,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAU9F,CAAA"}
|
package/dist/error.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
// src/error.ts
|
2
|
-
import { Objects } from "@bessemer/cornerstone";
|
3
2
|
import { isError as _isError } from "lodash-es";
|
3
|
+
import { isPresent } from "@bessemer/cornerstone/object";
|
4
4
|
var isError = _isError;
|
5
5
|
var findInCausalChain = (error, predicate) => {
|
6
6
|
if (predicate(error)) {
|
7
7
|
return error;
|
8
8
|
}
|
9
|
-
if (
|
9
|
+
if (isPresent(error.cause) && error.cause instanceof Error) {
|
10
10
|
return findInCausalChain(error.cause, predicate);
|
11
11
|
}
|
12
12
|
return void 0;
|
package/dist/error.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/error.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/error.ts"],"sourcesContent":["import { isError as _isError } from 'lodash-es'\nimport { isPresent } from '@bessemer/cornerstone/object'\nimport { Throwable } from '@bessemer/cornerstone/types'\n\nexport const isError = _isError\n\nexport const findInCausalChain = (error: Error, predicate: (error: Error) => boolean): Error | undefined => {\n if (predicate(error)) {\n return error\n }\n\n if (isPresent(error.cause) && error.cause instanceof Error) {\n return findInCausalChain(error.cause, predicate)\n }\n\n return undefined\n}\n\nconst serializeError = (error: Throwable): any => {\n if (!isPresent(error)) {\n return undefined\n }\n\n if (!isError(error)) {\n return error\n }\n\n const cause = isPresent(error.cause) ? serializeError(error.cause) : undefined\n\n const serialized = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n cause,\n }\n\n return serialized\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,iBAAiB;AAGnB,IAAM,UAAU;AAEhB,IAAM,oBAAoB,CAAC,OAAc,cAA4D;AAC1G,MAAI,UAAU,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM,KAAK,KAAK,MAAM,iBAAiB,OAAO;AAC1D,WAAO,kBAAkB,MAAM,OAAO,SAAS;AAAA,EACjD;AAEA,SAAO;AACT;","names":[]}
|
@@ -8,7 +8,7 @@ var ConcatenateExpression = defineExpression({
|
|
8
8
|
},
|
9
9
|
resolver: ({ operands }, evaluate) => {
|
10
10
|
const values = evaluate(operands).map((it) => evaluate(it));
|
11
|
-
return Arrays.concatenate(values[0], ...Arrays.rest(values));
|
11
|
+
return Arrays.concatenate(values[0] ?? [], ...Arrays.rest(values));
|
12
12
|
}
|
13
13
|
});
|
14
14
|
var concatenate = ConcatenateExpression.builder;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/expression/array-expression.ts"],"sourcesContent":["import { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { Arrays } from '@bessemer/cornerstone'\n\nexport const ConcatenateExpression = defineExpression({\n expressionKey: 'Array.Concatenate',\n builder: (operands: Array<Expression<Array<Expression<unknown>>>>) => {\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = evaluate(operands).map((it) => evaluate(it))\n return Arrays.concatenate(values[0], ...Arrays.rest(values))\n },\n})\n\nexport const concatenate = ConcatenateExpression.builder\n\nexport const FirstExpression = defineExpression({\n expressionKey: 'Array.First',\n builder: (operands: Array<Expression<Array<Expression<unknown>>>>) => {\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = evaluate(operands).map((it) => evaluate(it))\n return Arrays.first(values)\n },\n})\n\nexport const first = FirstExpression.builder\n"],"mappings":";AAAA,SAAS,wBAAwB;AAEjC,SAAS,cAAc;AAEhB,IAAM,wBAAwB,iBAAiB;AAAA,EACpD,eAAe;AAAA,EACf,SAAS,CAAC,aAA4D;AACpE,WAAO,EAAE,SAAS;AAAA,EACpB;AAAA,EACA,UAAU,CAAC,EAAE,SAAS,GAAG,aAAa;AACpC,UAAM,SAAS,SAAS,QAAQ,EAAE,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC;AAC1D,WAAO,OAAO,YAAY,OAAO,CAAC,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA,
|
1
|
+
{"version":3,"sources":["../../src/expression/array-expression.ts"],"sourcesContent":["import { defineExpression } from '@bessemer/cornerstone/expression/internal'\nimport { Expression } from '@bessemer/cornerstone/expression'\nimport { Arrays } from '@bessemer/cornerstone'\n\nexport const ConcatenateExpression = defineExpression({\n expressionKey: 'Array.Concatenate',\n builder: (operands: Array<Expression<Array<Expression<unknown>>>>) => {\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = evaluate(operands).map((it) => evaluate(it))\n return Arrays.concatenate(values[0] ?? [], ...Arrays.rest(values))\n },\n})\n\nexport const concatenate = ConcatenateExpression.builder\n\nexport const FirstExpression = defineExpression({\n expressionKey: 'Array.First',\n builder: (operands: Array<Expression<Array<Expression<unknown>>>>) => {\n return { operands }\n },\n resolver: ({ operands }, evaluate) => {\n const values = evaluate(operands).map((it) => evaluate(it))\n return Arrays.first(values)\n },\n})\n\nexport const first = FirstExpression.builder\n"],"mappings":";AAAA,SAAS,wBAAwB;AAEjC,SAAS,cAAc;AAEhB,IAAM,wBAAwB,iBAAiB;AAAA,EACpD,eAAe;AAAA,EACf,SAAS,CAAC,aAA4D;AACpE,WAAO,EAAE,SAAS;AAAA,EACpB;AAAA,EACA,UAAU,CAAC,EAAE,SAAS,GAAG,aAAa;AACpC,UAAM,SAAS,SAAS,QAAQ,EAAE,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC;AAC1D,WAAO,OAAO,YAAY,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA,EACnE;AACF,CAAC;AAEM,IAAM,cAAc,sBAAsB;AAE1C,IAAM,kBAAkB,iBAAiB;AAAA,EAC9C,eAAe;AAAA,EACf,SAAS,CAAC,aAA4D;AACpE,WAAO,EAAE,SAAS;AAAA,EACpB;AAAA,EACA,UAAU,CAAC,EAAE,SAAS,GAAG,aAAa;AACpC,UAAM,SAAS,SAAS,QAAQ,EAAE,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC;AAC1D,WAAO,OAAO,MAAM,MAAM;AAAA,EAC5B;AACF,CAAC;AAEM,IAAM,QAAQ,gBAAgB;","names":[]}
|
package/dist/index.d.ts
CHANGED
@@ -5,6 +5,7 @@ import * as Strings from '@bessemer/cornerstone/string';
|
|
5
5
|
import * as Async from '@bessemer/cornerstone/async';
|
6
6
|
import * as AsyncValues from '@bessemer/cornerstone/async-value';
|
7
7
|
import * as Maths from '@bessemer/cornerstone/math';
|
8
|
+
import * as Maps from '@bessemer/cornerstone/map';
|
8
9
|
import * as Sets from '@bessemer/cornerstone/set';
|
9
10
|
import * as Dates from '@bessemer/cornerstone/date';
|
10
11
|
import * as Comparators from '@bessemer/cornerstone/comparator';
|
@@ -23,6 +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';
|
27
|
+
import * as ObjectPaths from '@bessemer/cornerstone/object-path';
|
26
28
|
import * as ZodUtil from '@bessemer/cornerstone/zod-util';
|
27
29
|
import * as Tags from '@bessemer/cornerstone/tag';
|
28
30
|
import * as Promises from '@bessemer/cornerstone/promise';
|
@@ -45,5 +47,5 @@ import * as DataSizes from '@bessemer/cornerstone/data-size';
|
|
45
47
|
import * as MimeTypes from '@bessemer/cornerstone/mime-type';
|
46
48
|
import * as Currencies from '@bessemer/cornerstone/currency';
|
47
49
|
import * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount';
|
48
|
-
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, Currencies, MonetaryAmounts, };
|
50
|
+
export { Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Maps, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorEvents, Assertions, Uuids, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ObjectPaths, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, Currencies, MonetaryAmounts, };
|
49
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,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;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -6,6 +6,7 @@ import * as Strings from "@bessemer/cornerstone/string";
|
|
6
6
|
import * as Async from "@bessemer/cornerstone/async";
|
7
7
|
import * as AsyncValues from "@bessemer/cornerstone/async-value";
|
8
8
|
import * as Maths from "@bessemer/cornerstone/math";
|
9
|
+
import * as Maps from "@bessemer/cornerstone/map";
|
9
10
|
import * as Sets from "@bessemer/cornerstone/set";
|
10
11
|
import * as Dates from "@bessemer/cornerstone/date";
|
11
12
|
import * as Comparators from "@bessemer/cornerstone/comparator";
|
@@ -24,6 +25,7 @@ import * as Hashes from "@bessemer/cornerstone/hash";
|
|
24
25
|
import * as Crypto from "@bessemer/cornerstone/crypto";
|
25
26
|
import * as Globs from "@bessemer/cornerstone/glob";
|
26
27
|
import * as Ranges from "@bessemer/cornerstone/range";
|
28
|
+
import * as ObjectPaths from "@bessemer/cornerstone/object-path";
|
27
29
|
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
28
30
|
import * as Tags from "@bessemer/cornerstone/tag";
|
29
31
|
import * as Promises from "@bessemer/cornerstone/promise";
|
@@ -71,10 +73,12 @@ export {
|
|
71
73
|
Json,
|
72
74
|
Lazy,
|
73
75
|
Loggers,
|
76
|
+
Maps,
|
74
77
|
Maths,
|
75
78
|
MimeTypes,
|
76
79
|
Misc,
|
77
80
|
MonetaryAmounts,
|
81
|
+
ObjectPaths,
|
78
82
|
Objects,
|
79
83
|
Patches,
|
80
84
|
Promises,
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as AsyncValues from '@bessemer/cornerstone/async-value'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as 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'\nimport * as Currencies from '@bessemer/cornerstone/currency'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\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 Currencies,\n MonetaryAmounts,\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;
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as AsyncValues from '@bessemer/cornerstone/async-value'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Maps from '@bessemer/cornerstone/map'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/duration'\nimport * as Uris from '@bessemer/cornerstone/uri'\nimport * as Urls from '@bessemer/cornerstone/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error'\nimport * as ErrorEvents from '@bessemer/cornerstone/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuids from '@bessemer/cornerstone/uuid'\nimport * as Ulids from '@bessemer/cornerstone/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\nimport * as ObjectPaths from '@bessemer/cornerstone/object-path'\n\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport * as Currencies from '@bessemer/cornerstone/currency'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\n\nexport {\n Objects,\n Functions,\n Arrays,\n Strings,\n Async,\n AsyncValues,\n Maths,\n Maps,\n Sets,\n Dates,\n Comparators,\n Equalitors,\n Durations,\n Uris,\n Urls,\n Loggers,\n Errors,\n ErrorEvents,\n Assertions,\n Uuids,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n ObjectPaths,\n ZodUtil,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n Currencies,\n MonetaryAmounts,\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,gBAAgB;AAC5B,YAAY,qBAAqB;","names":[]}
|
package/dist/json.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,MAAM,EAAY,MAAM,8BAA8B,CAAA;AAEhF,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,GAAG,CAE9C,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,GAAG,CAErD,CAAA"}
|
package/dist/json.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
// src/json.ts
|
2
|
-
import {
|
2
|
+
import { getValueOrThrow, tryValue } from "@bessemer/cornerstone/result";
|
3
3
|
var parse = (data) => {
|
4
|
-
return
|
4
|
+
return tryValue(() => JSON.parse(data));
|
5
5
|
};
|
6
6
|
var parseOrThrow = (data) => {
|
7
|
-
return
|
7
|
+
return getValueOrThrow(parse(data));
|
8
8
|
};
|
9
9
|
export {
|
10
10
|
parse,
|
package/dist/json.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/json.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/json.ts"],"sourcesContent":["import { JsonValue } from 'type-fest'\nimport { getValueOrThrow, Result, tryValue } from '@bessemer/cornerstone/result'\n\nexport const parse = (data: string): Result<any> => {\n return tryValue(() => JSON.parse(data) as JsonValue)\n}\n\nexport const parseOrThrow = (data: string): Result<any> => {\n return getValueOrThrow(parse(data))\n}\n"],"mappings":";AACA,SAAS,iBAAyB,gBAAgB;AAE3C,IAAM,QAAQ,CAAC,SAA8B;AAClD,SAAO,SAAS,MAAM,KAAK,MAAM,IAAI,CAAc;AACrD;AAEO,IAAM,eAAe,CAAC,SAA8B;AACzD,SAAO,gBAAgB,MAAM,IAAI,CAAC;AACpC;","names":[]}
|
package/dist/logger.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAY,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;AAE7B,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;AAE9C,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,CAAA;AAC9D,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;AAE7E,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C,KAAK,EAAE,WAAW,CAIjB;IAED,KAAK,EAAE,WAAW,CAIjB;IAED,IAAI,EAAE,WAAW,CAIhB;IAED,IAAI,EAAE,WAAW,CAIhB;IAED,KAAK,EAAE,WAAW,CAIjB;IAED,KAAK,EAAE,WAAW,CAIjB;CACF;AA+ED,eAAO,MAAM,UAAU,GAAI,iBAAiB,aAAa,KAAG,IAG3D,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,QAAQ,MAAM,KAAG,MAEtC,CAAA;AAED,eAAO,MAAM,KAAK,aAAgB,CAAA;AAClC,eAAO,MAAM,KAAK,aAAgB,CAAA;AAClC,eAAO,MAAM,IAAI,aAAe,CAAA;AAChC,eAAO,MAAM,IAAI,aAAe,CAAA;AAChC,eAAO,MAAM,KAAK,aAAgB,CAAA;AAClC,eAAO,MAAM,KAAK,aAAgB,CAAA"}
|
package/dist/logger.js
CHANGED
@@ -1,39 +1,40 @@
|
|
1
1
|
// src/logger.ts
|
2
2
|
import pino from "pino";
|
3
|
-
import { Lazy, Objects } from "@bessemer/cornerstone";
|
4
3
|
import { createGlobalVariable } from "@bessemer/cornerstone/global-variable";
|
4
|
+
import { evaluate } from "@bessemer/cornerstone/lazy";
|
5
|
+
import { deepMerge, isNil } from "@bessemer/cornerstone/object";
|
5
6
|
var Logger = class {
|
6
7
|
constructor(logger) {
|
7
8
|
this.logger = logger;
|
8
9
|
}
|
9
10
|
trace = (message, options) => {
|
10
11
|
if (this.logger.isLevelEnabled?.("trace") ?? true) {
|
11
|
-
this.logger.trace({ err: options?.error, context: options?.context },
|
12
|
+
this.logger.trace({ err: options?.error, context: options?.context }, evaluate(message));
|
12
13
|
}
|
13
14
|
};
|
14
15
|
debug = (message, options) => {
|
15
16
|
if (this.logger.isLevelEnabled?.("debug") ?? true) {
|
16
|
-
this.logger.debug({ err: options?.error, context: options?.context },
|
17
|
+
this.logger.debug({ err: options?.error, context: options?.context }, evaluate(message));
|
17
18
|
}
|
18
19
|
};
|
19
20
|
info = (message, options) => {
|
20
21
|
if (this.logger.isLevelEnabled?.("info") ?? true) {
|
21
|
-
this.logger.info({ err: options?.error, context: options?.context },
|
22
|
+
this.logger.info({ err: options?.error, context: options?.context }, evaluate(message));
|
22
23
|
}
|
23
24
|
};
|
24
25
|
warn = (message, options) => {
|
25
26
|
if (this.logger.isLevelEnabled?.("warn") ?? true) {
|
26
|
-
this.logger.warn({ err: options?.error, context: options?.context },
|
27
|
+
this.logger.warn({ err: options?.error, context: options?.context }, evaluate(message));
|
27
28
|
}
|
28
29
|
};
|
29
30
|
error = (message, options) => {
|
30
31
|
if (this.logger.isLevelEnabled?.("error") ?? true) {
|
31
|
-
this.logger.error({ err: options?.error, context: options?.context },
|
32
|
+
this.logger.error({ err: options?.error, context: options?.context }, evaluate(message));
|
32
33
|
}
|
33
34
|
};
|
34
35
|
fatal = (message, options) => {
|
35
36
|
if (this.logger.isLevelEnabled?.("fatal") ?? true) {
|
36
|
-
this.logger.fatal({ err: options?.error, context: options?.context },
|
37
|
+
this.logger.fatal({ err: options?.error, context: options?.context }, evaluate(message));
|
37
38
|
}
|
38
39
|
};
|
39
40
|
};
|
@@ -45,7 +46,7 @@ var applyDefaultOptions = (options) => {
|
|
45
46
|
// JOHN need to find a better way to include
|
46
47
|
// ...getPrettyTransport(),
|
47
48
|
};
|
48
|
-
return
|
49
|
+
return deepMerge(defaultOptions, options);
|
49
50
|
};
|
50
51
|
var createProxyHandler = (getLogger) => {
|
51
52
|
let cachedLogger = null;
|
@@ -55,7 +56,7 @@ var createProxyHandler = (getLogger) => {
|
|
55
56
|
cachedLogger = null;
|
56
57
|
cachedVersion = GlobalLoggerState.getValue().version;
|
57
58
|
}
|
58
|
-
if (
|
59
|
+
if (isNil(cachedLogger)) {
|
59
60
|
cachedLogger = getLogger();
|
60
61
|
}
|
61
62
|
return cachedLogger;
|
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":";AAAA,OAAO,UAAU;AACjB,SAAS,4BAA4B;AACrC,SAAS,gBAA2B;AAEpC,SAAS,WAAW,aAAa;AAS1B,IAAM,SAAN,MAAa;AAAA,EAClB,YAA6B,QAAoB;AAApB;AAAA,EAAqB;AAAA,EAElD,QAAqB,CAAC,SAA4B,YAA+B;AAC/E,QAAI,KAAK,OAAO,iBAAiB,OAAO,KAAK,MAAM;AACjD,WAAK,OAAO,MAAM,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,QAAqB,CAAC,SAA4B,YAA+B;AAC/E,QAAI,KAAK,OAAO,iBAAiB,OAAO,KAAK,MAAM;AACjD,WAAK,OAAO,MAAM,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,OAAoB,CAAC,SAA4B,YAA+B;AAC9E,QAAI,KAAK,OAAO,iBAAiB,MAAM,KAAK,MAAM;AAChD,WAAK,OAAO,KAAK,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACxF;AAAA,EACF;AAAA,EAEA,OAAoB,CAAC,SAA4B,YAA+B;AAC9E,QAAI,KAAK,OAAO,iBAAiB,MAAM,KAAK,MAAM;AAChD,WAAK,OAAO,KAAK,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACxF;AAAA,EACF;AAAA,EAEA,QAAqB,CAAC,SAA4B,YAA+B;AAC/E,QAAI,KAAK,OAAO,iBAAiB,OAAO,KAAK,MAAM;AACjD,WAAK,OAAO,MAAM,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,QAAqB,CAAC,SAA4B,YAA+B;AAC/E,QAAI,KAAK,OAAO,iBAAiB,OAAO,KAAK,MAAM;AACjD,WAAK,OAAO,MAAM,EAAE,KAAK,SAAS,OAAO,SAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,IACzF;AAAA,EACF;AACF;AAmBA,IAAM,sBAAsB,CAAC,YAA2C;AACtE,QAAM,iBAAgC;AAAA,IACpC,SAAS;AAAA,MACP,UAAU;AAAA,IACZ;AAAA;AAAA;AAAA,EAGF;AAEA,SAAO,UAAU,gBAAgB,OAAO;AAC1C;AAEA,IAAM,qBAAqB,CAAC,cAA0D;AACpF,MAAI,eAAkC;AACtC,MAAI,gBAAgB,kBAAkB,SAAS,EAAE;AAEjD,QAAM,oBAAoB,MAAM;AAC9B,QAAI,kBAAkB,kBAAkB,SAAS,EAAE,SAAS;AAC1D,qBAAe;AACf,sBAAgB,kBAAkB,SAAS,EAAE;AAAA,IAC/C;AAEA,QAAI,MAAM,YAAY,GAAG;AACvB,qBAAe,UAAU;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,IAAI,GAAQ,MAAmB;AAC7B,UAAI,SAAS,SAAS;AACpB,eAAO,CAAC,aAA2B;AACjC,iBAAO,IAAI;AAAA,YACT,CAAC;AAAA,YACD,mBAAmB,MAAM,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAEA,aAAQ,kBAAkB,EAAU,IAAI;AAAA,IAC1C;AAAA,EACF;AACF;AAEA,IAAM,oBAAoB,qBAGvB,qBAAqB,OAAO;AAAA,EAC7B,SAAS;AAAA,EACT,QAAQ,KAAK,oBAAoB,EAAE,OAAO,OAAO,CAAC,CAAC;AACrD,EAAE;AAEF,IAAM,cAA0B,IAAI;AAAA,EAClC,CAAC;AAAA,EACD,mBAAmB,MAAM,kBAAkB,SAAS,EAAE,MAAM;AAC9D;AAEA,IAAM,UAAkB,IAAI,OAAO,WAAW;AAEvC,IAAM,aAAa,CAAC,mBAAyC;AAClE,QAAM,UAAU,oBAAoB,cAAc;AAClD,oBAAkB,SAAS,EAAE,SAAS,kBAAkB,SAAS,EAAE,UAAU,GAAG,QAAQ,KAAK,OAAO,EAAE,CAAC;AACzG;AAEO,IAAM,QAAQ,CAAC,WAA2B;AAC/C,SAAO,IAAI,OAAO,YAAY,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD;AAEO,IAAM,QAAQ,QAAQ;AACtB,IAAM,QAAQ,QAAQ;AACtB,IAAM,OAAO,QAAQ;AACrB,IAAM,OAAO,QAAQ;AACrB,IAAM,QAAQ,QAAQ;AACtB,IAAM,QAAQ,QAAQ;","names":[]}
|
package/dist/map.d.ts
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
import { Entry } from '@bessemer/cornerstone/entry';
|
2
|
+
export declare const groupBy: <CollectionType, KeyType>(iterable: Iterable<CollectionType>, mapper: (it: CollectionType) => KeyType) => Map<KeyType, Array<CollectionType>>;
|
3
|
+
export declare const fuse: <KeyType, FuseType, ValueType>(target: Map<KeyType, FuseType>, valuesMap: Map<FuseType, ValueType>) => Map<KeyType, ValueType>;
|
4
|
+
export declare const mapKeys: <KeyType, ValueType, NewKeyType>(target: Map<KeyType, ValueType>, mapper: (key: KeyType) => NewKeyType) => Map<NewKeyType, ValueType>;
|
5
|
+
export declare const mapValues: <KeyType, ValueType, NewValueType>(target: Map<KeyType, ValueType>, mapper: (value: ValueType) => NewValueType) => Map<KeyType, NewValueType>;
|
6
|
+
export declare const map: <KeyType, ValueType, NewKeyType, NewValueType>(target: Map<KeyType, ValueType>, mapper: (entry: Entry<KeyType, ValueType>) => Entry<NewKeyType, NewValueType>) => Map<NewKeyType, NewValueType>;
|
7
|
+
export declare const collectKeys: <CollectionType, KeyType>(iterable: Iterable<CollectionType>, mapper: (it: CollectionType) => KeyType) => Map<KeyType, CollectionType>;
|
8
|
+
export declare const collectValues: <CollectionType, ValueType>(iterable: Iterable<CollectionType>, mapper: (it: CollectionType) => ValueType) => Map<CollectionType, ValueType>;
|
9
|
+
export declare function collect<CollectionType, KeyType, ValueType>(iterable: Iterable<CollectionType>, mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>): Map<KeyType, ValueType>;
|
10
|
+
export declare function collect<CollectionType, KeyType, ValueType>(iterable: Iterable<CollectionType>, mapEntry: (it: CollectionType) => Entry<KeyType, ValueType>, reducer: (key: KeyType, first: ValueType, second: ValueType) => ValueType): Map<KeyType, ValueType>;
|
11
|
+
export declare const append: <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>) => Map<KeyType, ValueType>;
|
12
|
+
export declare const appendInto: <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Entry<KeyType, ValueType>>) => void;
|
13
|
+
export declare const concatenate: <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>) => Map<KeyType, ValueType>;
|
14
|
+
export declare const concatenateInto: <KeyType, ValueType>(map: Map<KeyType, ValueType>, ...values: Array<Map<KeyType, ValueType>>) => void;
|
15
|
+
export declare const filter: <KeyType, ValueType>(map: Map<KeyType, ValueType>, predicate: (entry: Entry<KeyType, ValueType>) => boolean) => Map<KeyType, ValueType>;
|
16
|
+
export declare const filterFrom: <KeyType, ValueType>(map: Map<KeyType, ValueType>, predicate: (entry: Entry<KeyType, ValueType>) => boolean) => void;
|
17
|
+
//# sourceMappingURL=map.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"}
|