@bessemer/cornerstone 0.5.109 → 0.5.113

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.
Files changed (123) hide show
  1. package/dist/array.d.ts +4 -3
  2. package/dist/array.d.ts.map +1 -1
  3. package/dist/array.js +18 -5
  4. package/dist/array.js.map +1 -1
  5. package/dist/either.d.ts +23 -40
  6. package/dist/either.d.ts.map +1 -1
  7. package/dist/either.js +50 -88
  8. package/dist/either.js.map +1 -1
  9. package/dist/error/error-event.d.ts.map +1 -1
  10. package/dist/error/error-event.js +3 -2
  11. package/dist/error/error-event.js.map +1 -1
  12. package/dist/error/error.d.ts +10 -0
  13. package/dist/error/error.d.ts.map +1 -1
  14. package/dist/error/error.js +21 -2
  15. package/dist/error/error.js.map +1 -1
  16. package/dist/generators.d.ts +4 -0
  17. package/dist/generators.d.ts.map +1 -0
  18. package/dist/generators.js +24 -0
  19. package/dist/generators.js.map +1 -0
  20. package/dist/index.d.ts +6 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +10 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/json.d.ts +2 -1
  25. package/dist/json.d.ts.map +1 -1
  26. package/dist/json.js.map +1 -1
  27. package/dist/math.d.ts +3 -0
  28. package/dist/math.d.ts.map +1 -1
  29. package/dist/math.js +11 -1
  30. package/dist/math.js.map +1 -1
  31. package/dist/mime-type.d.ts +4 -3
  32. package/dist/mime-type.d.ts.map +1 -1
  33. package/dist/mime-type.js +9 -6
  34. package/dist/mime-type.js.map +1 -1
  35. package/dist/net/content-type.d.ts +21 -0
  36. package/dist/net/content-type.d.ts.map +1 -0
  37. package/dist/net/content-type.js +120 -0
  38. package/dist/net/content-type.js.map +1 -0
  39. package/dist/net/fetch.d.ts +18 -0
  40. package/dist/net/fetch.d.ts.map +1 -0
  41. package/dist/net/fetch.js +65 -0
  42. package/dist/net/fetch.js.map +1 -0
  43. package/dist/net/http-method.d.ts +18 -0
  44. package/dist/net/http-method.d.ts.map +1 -0
  45. package/dist/net/http-method.js +37 -0
  46. package/dist/net/http-method.js.map +1 -0
  47. package/dist/net/http-request.d.ts +12 -0
  48. package/dist/net/http-request.d.ts.map +1 -0
  49. package/dist/net/http-request.js +1 -0
  50. package/dist/net/http-request.js.map +1 -0
  51. package/dist/net/uri-host-name.d.ts +1 -1
  52. package/dist/net/uri-host-name.d.ts.map +1 -1
  53. package/dist/net/uri-host-name.js +6 -6
  54. package/dist/net/uri-host-name.js.map +1 -1
  55. package/dist/net/uri.d.ts +12 -4
  56. package/dist/net/uri.d.ts.map +1 -1
  57. package/dist/net/uri.js +87 -36
  58. package/dist/net/uri.js.map +1 -1
  59. package/dist/net/url.d.ts +9 -6
  60. package/dist/net/url.d.ts.map +1 -1
  61. package/dist/net/url.js +58 -21
  62. package/dist/net/url.js.map +1 -1
  63. package/dist/object/object-diff.d.ts.map +1 -1
  64. package/dist/object/object-diff.js.map +1 -1
  65. package/dist/object/type-path.d.ts.map +1 -1
  66. package/dist/object/type-path.js +12 -14
  67. package/dist/object/type-path.js.map +1 -1
  68. package/dist/object.d.ts +2 -0
  69. package/dist/object.d.ts.map +1 -1
  70. package/dist/object.js +17 -1
  71. package/dist/object.js.map +1 -1
  72. package/dist/promise.d.ts +3 -1
  73. package/dist/promise.d.ts.map +1 -1
  74. package/dist/promise.js +9 -0
  75. package/dist/promise.js.map +1 -1
  76. package/dist/proxy.d.ts +2 -0
  77. package/dist/proxy.d.ts.map +1 -0
  78. package/dist/proxy.js +20 -0
  79. package/dist/proxy.js.map +1 -0
  80. package/dist/range.d.ts +0 -1
  81. package/dist/range.d.ts.map +1 -1
  82. package/dist/range.js.map +1 -1
  83. package/dist/result.d.ts +18 -20
  84. package/dist/result.d.ts.map +1 -1
  85. package/dist/result.js +41 -61
  86. package/dist/result.js.map +1 -1
  87. package/dist/retry.d.ts.map +1 -1
  88. package/dist/retry.js +3 -3
  89. package/dist/retry.js.map +1 -1
  90. package/dist/sql/sql-expression-parser.d.ts.map +1 -1
  91. package/dist/sql/sql-expression-parser.js +5 -5
  92. package/dist/sql/sql-expression-parser.js.map +1 -1
  93. package/dist/string.d.ts +1 -0
  94. package/dist/string.d.ts.map +1 -1
  95. package/dist/string.js +4 -0
  96. package/dist/string.js.map +1 -1
  97. package/dist/temporal/duration.d.ts.map +1 -1
  98. package/dist/temporal/duration.js +2 -1
  99. package/dist/temporal/duration.js.map +1 -1
  100. package/dist/temporal/instant.d.ts.map +1 -1
  101. package/dist/temporal/instant.js +2 -1
  102. package/dist/temporal/instant.js.map +1 -1
  103. package/dist/temporal/plain-date-time.d.ts.map +1 -1
  104. package/dist/temporal/plain-date-time.js +2 -1
  105. package/dist/temporal/plain-date-time.js.map +1 -1
  106. package/dist/temporal/plain-date.d.ts.map +1 -1
  107. package/dist/temporal/plain-date.js +2 -1
  108. package/dist/temporal/plain-date.js.map +1 -1
  109. package/dist/temporal/plain-time.d.ts.map +1 -1
  110. package/dist/temporal/plain-time.js +2 -1
  111. package/dist/temporal/plain-time.js.map +1 -1
  112. package/dist/temporal/zoned-date-time.d.ts.map +1 -1
  113. package/dist/temporal/zoned-date-time.js +2 -1
  114. package/dist/temporal/zoned-date-time.js.map +1 -1
  115. package/dist/types.d.ts +23 -0
  116. package/dist/types.d.ts.map +1 -1
  117. package/dist/types.js +6 -0
  118. package/dist/types.js.map +1 -1
  119. package/dist/zod-util.d.ts +55 -6
  120. package/dist/zod-util.d.ts.map +1 -1
  121. package/dist/zod-util.js +99 -11
  122. package/dist/zod-util.js.map +1 -1
  123. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/error/error-event.ts"],"sourcesContent":["import { Dictionary, Throwable } from '@bessemer/cornerstone/types'\nimport { deepMerge, isNil, isObject, isPresent } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { findInCausalChain as errorsFindInCausalChain, isError } from '@bessemer/cornerstone/error/error'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport { ErrorCause, ErrorCauseAugment, ErrorCauseBuilder } from '@bessemer/cornerstone/error/error-cause'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport { MergeExclusive } from 'type-fest'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport const Namespace = createNamespace('error-event')\n\nexport const Schema = Zod.object({\n _type: Namespace,\n message: Zod.string(),\n causes: Zod.array(ErrorCauses.Schema),\n context: Zod.record(Zod.string(), Zod.unknown()),\n})\n\nexport type ErrorEvent = {\n _type: typeof Namespace\n message: string\n causes: Array<ErrorCause>\n context: Dictionary<unknown>\n}\n\ntype ErrorEventCommonBuilder = {\n message: string\n context?: Dictionary<unknown>\n}\n\ntype ErrorEventFullBuilder = ErrorEventCommonBuilder & {\n causes: Array<ErrorCauseBuilder>\n}\ntype ErrorEventSingletonBuilder = ErrorEventCommonBuilder & ErrorCauseBuilder\nexport type ErrorEventBuilder = MergeExclusive<ErrorEventFullBuilder, ErrorEventSingletonBuilder>\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 from = (builder: ErrorEventBuilder): ErrorEvent => {\n if (isPresent(builder.code)) {\n const code = builder.code\n return {\n _type: Namespace,\n causes: [ErrorCauses.from({ code, ...builder })],\n message: builder.message,\n context: builder.context ?? {},\n }\n } else {\n Assertions.assertPresent(builder.causes)\n Assertions.assert(!isEmpty(builder.causes), () => 'ErrorEvent - Unable to construct ErrorEvent with empty causes array.')\n\n return {\n _type: Namespace,\n causes: builder.causes.map(ErrorCauses.from),\n message: builder.message,\n context: builder.context ?? {},\n }\n }\n}\n\nexport const fromThrowable = (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 const isErrorEvent = (value: unknown): value is ErrorEvent => {\n if (!isObject(value)) {\n return false\n }\n\n const errorEvent = value as ErrorEvent\n return errorEvent._type === Namespace\n}\n\nexport const isErrorEventException = (value: unknown): value is ErrorEventException => {\n return value instanceof ErrorEventException\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, context: 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.context = { ...errorEvent.context, ...context }\n throw throwable\n } else {\n const errorEvent = fromThrowable(throwable)\n const contextualizedEvent = from({ ...errorEvent, context: { ...errorEvent.context, ...context } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport type ErrorEventAugment = ErrorCauseAugment & {\n context?: Dictionary<unknown>\n}\n\nexport const unhandled = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unhandled(builder), builder))\n\nexport const required = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.required(builder), builder))\n\nexport const unauthorized = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unauthorized(builder), builder))\n\nexport const forbidden = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.forbidden(builder), builder))\n\nexport const badRequest = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.badRequest(builder), builder))\n\nexport const invalidValue = (value: unknown, builder?: ErrorEventAugment): ErrorEvent =>\n from(deepMerge(ErrorCauses.invalidValue(value, builder), builder))\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(required(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(from(evaluate(builder)))\n }\n}\n\nexport const unpackResult = <T>(result: Result<T, ErrorEvent>): T => {\n if (!result.isSuccess) {\n throw new ErrorEventException(result.value)\n }\n\n return result.value\n}\n"],"mappings":"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","names":["Schema","from","unhandled","required","unauthorized","forbidden","badRequest","invalidValue","assertPresent","assert"]}
1
+ {"version":3,"sources":["../../src/error/error-event.ts"],"sourcesContent":["import { Dictionary, Throwable } from '@bessemer/cornerstone/types'\nimport { deepMerge, isNil, isObject, isPresent } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { findInCausalChain as errorsFindInCausalChain, isError } from '@bessemer/cornerstone/error/error'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport { ErrorCause, ErrorCauseAugment, ErrorCauseBuilder } from '@bessemer/cornerstone/error/error-cause'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport { MergeExclusive } from 'type-fest'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport const Namespace = createNamespace('error-event')\n\nexport const Schema = Zod.object({\n _type: Namespace,\n message: Zod.string(),\n causes: Zod.array(ErrorCauses.Schema),\n context: Zod.record(Zod.string(), Zod.unknown()),\n})\n\nexport type ErrorEvent = {\n _type: typeof Namespace\n message: string\n causes: Array<ErrorCause>\n context: Dictionary<unknown>\n}\n\ntype ErrorEventCommonBuilder = {\n message: string\n context?: Dictionary<unknown>\n}\n\ntype ErrorEventFullBuilder = ErrorEventCommonBuilder & {\n causes: Array<ErrorCauseBuilder>\n}\ntype ErrorEventSingletonBuilder = ErrorEventCommonBuilder & ErrorCauseBuilder\nexport type ErrorEventBuilder = MergeExclusive<ErrorEventFullBuilder, ErrorEventSingletonBuilder>\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 from = (builder: ErrorEventBuilder): ErrorEvent => {\n if (isPresent(builder.code)) {\n const code = builder.code\n return {\n _type: Namespace,\n causes: [ErrorCauses.from({ code, ...builder })],\n message: builder.message,\n context: builder.context ?? {},\n }\n } else {\n Assertions.assertPresent(builder.causes)\n Assertions.assert(!isEmpty(builder.causes), () => 'ErrorEvent - Unable to construct ErrorEvent with empty causes array.')\n\n return {\n _type: Namespace,\n causes: builder.causes.map(ErrorCauses.from),\n message: builder.message,\n context: builder.context ?? {},\n }\n }\n}\n\nexport const fromThrowable = (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 const isErrorEvent = (value: unknown): value is ErrorEvent => {\n if (!isObject(value)) {\n return false\n }\n\n const errorEvent = value as ErrorEvent\n return errorEvent._type === Namespace\n}\n\nexport const isErrorEventException = (value: unknown): value is ErrorEventException => {\n return value instanceof ErrorEventException\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, context: 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.context = { ...errorEvent.context, ...context }\n throw throwable\n } else {\n const errorEvent = fromThrowable(throwable)\n const contextualizedEvent = from({ ...errorEvent, context: { ...errorEvent.context, ...context } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport type ErrorEventAugment = ErrorCauseAugment & {\n context?: Dictionary<unknown>\n}\n\nexport const unhandled = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unhandled(builder), builder))\n\nexport const required = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.required(builder), builder))\n\nexport const unauthorized = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unauthorized(builder), builder))\n\nexport const forbidden = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.forbidden(builder), builder))\n\nexport const badRequest = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.badRequest(builder), builder))\n\nexport const invalidValue = (value: unknown, builder?: ErrorEventAugment): ErrorEvent =>\n from(deepMerge(ErrorCauses.invalidValue(value, builder), builder))\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(required(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(from(evaluate(builder)))\n }\n}\n\nexport const unpackResult = <T>(result: Result<T, ErrorEvent>): T => {\n if (Results.isFailure(result)) {\n throw new ErrorEventException(result.value)\n }\n\n return result\n}\n"],"mappings":";AACA,SAAS,WAAW,OAAO,UAAU,iBAAiB;AACtD,OAAO,SAAS;AAChB,SAAS,gBAA2B;AACpC,SAAS,qBAAqB,yBAAyB,eAAe;AACtE,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAChC,YAAY,aAAa;AAEzB,YAAY,iBAAiB;AAE7B,YAAY,gBAAgB;AAE5B,SAAS,eAAe;AAEjB,IAAM,YAAY,gBAAgB,aAAa;AAE/C,IAAMA,UAAS,IAAI,OAAO;AAAA,EAC/B,OAAO;AAAA,EACP,SAAS,IAAI,OAAO;AAAA,EACpB,QAAQ,IAAI,MAAkB,kBAAM;AAAA,EACpC,SAAS,IAAI,OAAO,IAAI,OAAO,GAAG,IAAI,QAAQ,CAAC;AACjD,CAAC;AAqBM,IAAM,sBAAN,cAAkC,MAAM;AAAA,EACpC;AAAA,EAET,YAAY,YAAwB,OAAiB;AACnD,UAAM,WAAW,WAAW,IAAI,EAAE,MAAM,CAAC;AACzC,SAAK,OAAO,KAAK,YAAY;AAC7B,SAAK,aAAa;AAAA,EACpB;AACF;AAEO,IAAMC,QAAO,CAAC,YAA2C;AAC9D,MAAI,UAAU,QAAQ,IAAI,GAAG;AAC3B,UAAM,OAAO,QAAQ;AACrB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,CAAa,iBAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;AAAA,MAC/C,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ,WAAW,CAAC;AAAA,IAC/B;AAAA,EACF,OAAO;AACL,IAAW,yBAAc,QAAQ,MAAM;AACvC,IAAW,kBAAO,CAAC,QAAQ,QAAQ,MAAM,GAAG,MAAM,sEAAsE;AAExH,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,OAAO,IAAgB,gBAAI;AAAA,MAC3C,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ,WAAW,CAAC;AAAA,IAC/B;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,CAAC,cAAqC;AACjE,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,WAAOC,WAAU;AAAA,EACnB;AAEA,QAAM,sBAAsB,wBAAwB,WAAW,qBAAqB;AACpF,MAAI,MAAM,mBAAmB,GAAG;AAC9B,WAAOA,WAAU;AAAA,EACnB;AAEA,SAAO,oBAAoB;AAC7B;AAEO,IAAM,eAAe,CAAC,UAAwC;AACnE,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa;AACnB,SAAO,WAAW,UAAU;AAC9B;AAEO,IAAM,wBAAwB,CAAC,UAAiD;AACrF,SAAO,iBAAiB;AAC1B;AAIO,SAAS,gBACd,UACA,YACkC;AAClC,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,UAAU,IAAI,SAAS,UAAU,CAAC,CAAC;AAAA,IAClF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,WAAsB;AAC7B,UAAM,UAAU,WAAW,SAAS,UAAU,CAAC;AAAA,EACjD;AACF;AAEO,IAAM,YAAY,CAAC,WAAsB,YAAwC;AACtF,MAAI,sBAAsB,SAAS,GAAG;AAEpC,UAAM,aAAa,UAAU;AAC7B,eAAW,UAAU,EAAE,GAAG,WAAW,SAAS,GAAG,QAAQ;AACzD,UAAM;AAAA,EACR,OAAO;AACL,UAAM,aAAa,cAAc,SAAS;AAC1C,UAAM,sBAAsBD,MAAK,EAAE,GAAG,YAAY,SAAS,EAAE,GAAG,WAAW,SAAS,GAAG,QAAQ,EAAE,CAAC;AAClG,UAAM,IAAI,oBAAoB,qBAAqB,SAAS;AAAA,EAC9D;AACF;AAMO,IAAMC,aAAY,CAAC,YAA4CD,MAAK,UAAsB,sBAAU,OAAO,GAAG,OAAO,CAAC;AAEtH,IAAME,YAAW,CAAC,YAA4CF,MAAK,UAAsB,qBAAS,OAAO,GAAG,OAAO,CAAC;AAEpH,IAAMG,gBAAe,CAAC,YAA4CH,MAAK,UAAsB,yBAAa,OAAO,GAAG,OAAO,CAAC;AAE5H,IAAMI,aAAY,CAAC,YAA4CJ,MAAK,UAAsB,sBAAU,OAAO,GAAG,OAAO,CAAC;AAEtH,IAAMK,cAAa,CAAC,YAA4CL,MAAK,UAAsB,uBAAW,OAAO,GAAG,OAAO,CAAC;AAExH,IAAMM,gBAAe,CAAC,OAAgB,YAC3CN,MAAK,UAAsB,yBAAa,OAAO,OAAO,GAAG,OAAO,CAAC;AAE5D,SAASO,eAAiB,OAAU,UAAoD,MAAM,QAA4C;AAC/I,MAAI,MAAM,KAAK,GAAG;AAChB,UAAM,IAAI,oBAAoBL,UAAS,SAAS,OAAO,CAAC,CAAC;AAAA,EAC3D;AACF;AAEO,SAAS,iBAAiB,OAAgB,UAAoD,MAAM,QAAkC;AAC3I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoBC,cAAa,SAAS,OAAO,CAAC,CAAC;AAAA,EAC/D;AACF;AAEO,SAAS,gBAAgB,OAAgB,UAAoD,MAAM,QAAkC;AAC1I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoBC,WAAU,SAAS,OAAO,CAAC,CAAC;AAAA,EAC5D;AACF;AAEO,SAAS,YAAY,OAAgB,UAAoD,MAAM,QAAkC;AACtI,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoBC,YAAW,SAAS,OAAO,CAAC,CAAC;AAAA,EAC7D;AACF;AAEO,SAASG,QAAO,OAAgB,SAA8D;AACnG,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,oBAAoBR,MAAK,SAAS,OAAO,CAAC,CAAC;AAAA,EACvD;AACF;AAEO,IAAM,eAAe,CAAI,WAAqC;AACnE,MAAY,kBAAU,MAAM,GAAG;AAC7B,UAAM,IAAI,oBAAoB,OAAO,KAAK;AAAA,EAC5C;AAEA,SAAO;AACT;","names":["Schema","from","unhandled","required","unauthorized","forbidden","badRequest","invalidValue","assertPresent","assert"]}
@@ -1,4 +1,14 @@
1
+ import { Throwable } from '@bessemer/cornerstone/types';
2
+ import { LazyValue } from '@bessemer/cornerstone/lazy';
1
3
  export declare const isError: (value: unknown) => value is Error;
4
+ export declare function assertError(value: unknown, message?: LazyValue<string>): asserts value is Error;
2
5
  export declare const getCausalChain: (error: Error) => Array<Error>;
3
6
  export declare const findInCausalChain: (error: Error, predicate: (error: Error) => boolean) => Error | undefined;
7
+ export type ErrorDto = {
8
+ name: string;
9
+ message: string;
10
+ stack: string | null;
11
+ cause: ErrorDto | null;
12
+ };
13
+ export declare const serialize: (error: Throwable) => ErrorDto;
4
14
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error/error.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAEjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,CAexD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAE9F,CAAA"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAGtD,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAUjD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAgD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAE7I;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,CAexD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAE9F,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,KAAG,QAgB5C,CAAA"}
@@ -1,8 +1,12 @@
1
1
  // src/error/error.ts
2
2
  import { isPresent } from "@bessemer/cornerstone/object";
3
+ import { assert } from "@bessemer/cornerstone/assertion";
3
4
  var isError = (value) => {
4
- return value instanceof Error;
5
+ return value instanceof Error || typeof value === "object" && value !== null && "name" in value && "message" in value && (typeof value.name === "string" || typeof value.name === "undefined") && typeof value.message === "string";
5
6
  };
7
+ function assertError(value, message = () => "Errors.assertError failed validation") {
8
+ return assert(isError(value), message);
9
+ }
6
10
  var getCausalChain = (error) => {
7
11
  const chain = [];
8
12
  let current = error;
@@ -18,9 +22,24 @@ var getCausalChain = (error) => {
18
22
  var findInCausalChain = (error, predicate) => {
19
23
  return getCausalChain(error).find(predicate);
20
24
  };
25
+ var serialize = (error) => {
26
+ if (!isError(error)) {
27
+ return { name: " Can't serialize error", message: "Error is not an instance of Error", stack: null, cause: null };
28
+ }
29
+ const cause = isPresent(error.cause) ? serialize(error.cause) : null;
30
+ const serialized = {
31
+ name: error.name,
32
+ message: error.message,
33
+ stack: error.stack ?? null,
34
+ cause
35
+ };
36
+ return serialized;
37
+ };
21
38
  export {
39
+ assertError,
22
40
  findInCausalChain,
23
41
  getCausalChain,
24
- isError
42
+ isError,
43
+ serialize
25
44
  };
26
45
  //# sourceMappingURL=error.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/error/error.ts"],"sourcesContent":["import { isPresent } from '@bessemer/cornerstone/object'\nimport { Throwable } from '@bessemer/cornerstone/types'\n\nexport const isError = (value: unknown): value is Error => {\n return value instanceof Error\n}\n\nexport const getCausalChain = (error: Error): Array<Error> => {\n const chain: Array<Error> = []\n let current: Error = error\n\n while (true) {\n chain.push(current)\n\n if (!isPresent(current.cause) || !isError(current.cause)) {\n break\n }\n\n current = current.cause\n }\n\n return chain\n}\n\nexport const findInCausalChain = (error: Error, predicate: (error: Error) => boolean): Error | undefined => {\n return getCausalChain(error).find(predicate)\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,iBAAiB;AAGnB,IAAM,UAAU,CAAC,UAAmC;AACzD,SAAO,iBAAiB;AAC1B;AAEO,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM,QAAsB,CAAC;AAC7B,MAAI,UAAiB;AAErB,SAAO,MAAM;AACX,UAAM,KAAK,OAAO;AAElB,QAAI,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC,QAAQ,QAAQ,KAAK,GAAG;AACxD;AAAA,IACF;AAEA,cAAU,QAAQ;AAAA,EACpB;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAC,OAAc,cAA4D;AAC1G,SAAO,eAAe,KAAK,EAAE,KAAK,SAAS;AAC7C;","names":[]}
1
+ {"version":3,"sources":["../../src/error/error.ts"],"sourcesContent":["import { isPresent } from '@bessemer/cornerstone/object'\nimport { Throwable } from '@bessemer/cornerstone/types'\nimport { LazyValue } from '@bessemer/cornerstone/lazy'\nimport { assert } from '@bessemer/cornerstone/assertion'\n\nexport const isError = (value: unknown): value is Error => {\n return (\n value instanceof Error ||\n (typeof value === 'object' &&\n value !== null &&\n 'name' in value &&\n 'message' in value &&\n (typeof (value as any).name === 'string' || typeof (value as any).name === 'undefined') &&\n typeof (value as any).message === 'string')\n )\n}\n\nexport function assertError(value: unknown, message: LazyValue<string> = () => 'Errors.assertError failed validation'): asserts value is Error {\n return assert(isError(value), message)\n}\n\nexport const getCausalChain = (error: Error): Array<Error> => {\n const chain: Array<Error> = []\n let current: Error = error\n\n while (true) {\n chain.push(current)\n\n if (!isPresent(current.cause) || !isError(current.cause)) {\n break\n }\n\n current = current.cause\n }\n\n return chain\n}\n\nexport const findInCausalChain = (error: Error, predicate: (error: Error) => boolean): Error | undefined => {\n return getCausalChain(error).find(predicate)\n}\n\nexport type ErrorDto = {\n name: string\n message: string\n stack: string | null\n cause: ErrorDto | null\n}\n\nexport const serialize = (error: Throwable): ErrorDto => {\n if (!isError(error)) {\n // JOHN\n return { name: \" Can't serialize error\", message: 'Error is not an instance of Error', stack: null, cause: null }\n }\n\n const cause = isPresent(error.cause) ? serialize(error.cause) : null\n\n const serialized: ErrorDto = {\n name: error.name,\n message: error.message,\n stack: error.stack ?? null,\n cause,\n }\n\n return serialized\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAG1B,SAAS,cAAc;AAEhB,IAAM,UAAU,CAAC,UAAmC;AACzD,SACE,iBAAiB,SAChB,OAAO,UAAU,YAChB,UAAU,QACV,UAAU,SACV,aAAa,UACZ,OAAQ,MAAc,SAAS,YAAY,OAAQ,MAAc,SAAS,gBAC3E,OAAQ,MAAc,YAAY;AAExC;AAEO,SAAS,YAAY,OAAgB,UAA6B,MAAM,wCAAgE;AAC7I,SAAO,OAAO,QAAQ,KAAK,GAAG,OAAO;AACvC;AAEO,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM,QAAsB,CAAC;AAC7B,MAAI,UAAiB;AAErB,SAAO,MAAM;AACX,UAAM,KAAK,OAAO;AAElB,QAAI,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC,QAAQ,QAAQ,KAAK,GAAG;AACxD;AAAA,IACF;AAEA,cAAU,QAAQ;AAAA,EACpB;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAC,OAAc,cAA4D;AAC1G,SAAO,eAAe,KAAK,EAAE,KAAK,SAAS;AAC7C;AASO,IAAM,YAAY,CAAC,UAA+B;AACvD,MAAI,CAAC,QAAQ,KAAK,GAAG;AAEnB,WAAO,EAAE,MAAM,0BAA0B,SAAS,qCAAqC,OAAO,MAAM,OAAO,KAAK;AAAA,EAClH;AAEA,QAAM,QAAQ,UAAU,MAAM,KAAK,IAAI,UAAU,MAAM,KAAK,IAAI;AAEhE,QAAM,aAAuB;AAAA,IAC3B,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,OAAO,MAAM,SAAS;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,4 @@
1
+ export declare const map: <T, U>(iterable: AsyncIterable<T>, mapper: (item: T) => U | Promise<U>) => AsyncIterable<U>;
2
+ export declare const take: <T>(iterable: AsyncIterable<T>, count: number) => AsyncIterable<T>;
3
+ export declare const takeWhile: <T>(iterable: AsyncIterable<T>, predicate: (item: T, index: number) => boolean | Promise<boolean>) => AsyncIterable<T>;
4
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,GAAoB,CAAC,EAAE,CAAC,EAAE,UAAU,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAI1H,CAAA;AAED,eAAO,MAAM,IAAI,GAAoB,CAAC,EAAE,UAAU,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAG,aAAa,CAAC,CAAC,CAElG,CAAA;AAED,eAAO,MAAM,SAAS,GAAoB,CAAC,EACzC,UAAU,aAAa,CAAC,CAAC,CAAC,EAC1B,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAChE,aAAa,CAAC,CAAC,CAUjB,CAAA"}
@@ -0,0 +1,24 @@
1
+ // src/generators.ts
2
+ var map = async function* (iterable, mapper) {
3
+ for await (const item of iterable) {
4
+ yield await mapper(item);
5
+ }
6
+ };
7
+ var take = async function* (iterable, count) {
8
+ yield* takeWhile(iterable, (_, index) => index < count);
9
+ };
10
+ var takeWhile = async function* (iterable, predicate) {
11
+ let i = 0;
12
+ for await (const item of iterable) {
13
+ if (!await predicate(item, i++)) {
14
+ break;
15
+ }
16
+ yield item;
17
+ }
18
+ };
19
+ export {
20
+ map,
21
+ take,
22
+ takeWhile
23
+ };
24
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generators.ts"],"sourcesContent":["export const map = async function* <T, U>(iterable: AsyncIterable<T>, mapper: (item: T) => U | Promise<U>): AsyncIterable<U> {\n for await (const item of iterable) {\n yield await mapper(item)\n }\n}\n\nexport const take = async function* <T>(iterable: AsyncIterable<T>, count: number): AsyncIterable<T> {\n yield* takeWhile(iterable, (_, index) => index < count)\n}\n\nexport const takeWhile = async function* <T>(\n iterable: AsyncIterable<T>,\n predicate: (item: T, index: number) => boolean | Promise<boolean>\n): AsyncIterable<T> {\n let i = 0\n\n for await (const item of iterable) {\n if (!(await predicate(item, i++))) {\n break\n }\n\n yield item\n }\n}\n"],"mappings":";AAAO,IAAM,MAAM,iBAAuB,UAA4B,QAAuD;AAC3H,mBAAiB,QAAQ,UAAU;AACjC,UAAM,MAAM,OAAO,IAAI;AAAA,EACzB;AACF;AAEO,IAAM,OAAO,iBAAoB,UAA4B,OAAiC;AACnG,SAAO,UAAU,UAAU,CAAC,GAAG,UAAU,QAAQ,KAAK;AACxD;AAEO,IAAM,YAAY,iBACvB,UACA,WACkB;AAClB,MAAI,IAAI;AAER,mBAAiB,QAAQ,UAAU;AACjC,QAAI,CAAE,MAAM,UAAU,MAAM,GAAG,GAAI;AACjC;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as Types from '@bessemer/cornerstone/types';
1
2
  import * as Objects from '@bessemer/cornerstone/object';
2
3
  import * as Functions from '@bessemer/cornerstone/function';
3
4
  import * as Arrays from '@bessemer/cornerstone/array';
@@ -68,5 +69,9 @@ import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
68
69
  import * as HexCodes from '@bessemer/cornerstone/hex-code';
69
70
  import * as IpV6Addresses from '@bessemer/cornerstone/net/ipv6-address';
70
71
  import * as IpV4Addresses from '@bessemer/cornerstone/net/ipv4-address';
71
- export { Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Maps, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorTypes, ErrorCodes, ErrorCauses, ErrorEvents, Assertions, Uuid4, Uuid7, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ObjectPaths, TypePaths, ObjectDiffs, Clocks, TimeZoneIds, TimeZoneOffsets, Instants, PlainDates, PlainTimes, PlainDateTimes, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, CurrencyCodes, MonetaryAmounts, CountryCodes, CountrySubdivisionCodes, LanguageCodes, Locales, ResourceKeys, HexCodes, IpV6Addresses, IpV4Addresses, };
72
+ import * as HttpMethods from '@bessemer/cornerstone/net/http-method';
73
+ import * as ContentTypes from '@bessemer/cornerstone/net/content-type';
74
+ import * as Proxies from '@bessemer/cornerstone/proxy';
75
+ import * as Generators from '@bessemer/cornerstone/generators';
76
+ export { Types, Objects, Functions, Arrays, Strings, Async, AsyncValues, Maths, Maps, Sets, Dates, Comparators, Equalitors, Durations, Uris, Urls, Loggers, Errors, ErrorTypes, ErrorCodes, ErrorCauses, ErrorEvents, Assertions, Uuid4, Uuid7, Ulids, Entries, Hashes, Crypto, Globs, Ranges, ObjectPaths, TypePaths, ObjectDiffs, Clocks, TimeZoneIds, TimeZoneOffsets, Instants, PlainDates, PlainTimes, PlainDateTimes, ZodUtil, Tags, Promises, References, Signatures, Eithers, Results, Lazy, Patches, Content, Combinables, Properties, RichTexts, Retry, Stores, Misc, Json, AspectRatios, DataSizes, MimeTypes, CurrencyCodes, MonetaryAmounts, CountryCodes, CountrySubdivisionCodes, LanguageCodes, Locales, ResourceKeys, HexCodes, IpV6Addresses, IpV4Addresses, HttpMethods, ContentTypes, Proxies, Generators, };
72
77
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // src/index.ts
2
+ import * as Types from "@bessemer/cornerstone/types";
2
3
  import * as Objects from "@bessemer/cornerstone/object";
3
4
  import * as Functions from "@bessemer/cornerstone/function";
4
5
  import * as Arrays from "@bessemer/cornerstone/array";
@@ -69,6 +70,10 @@ import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
69
70
  import * as HexCodes from "@bessemer/cornerstone/hex-code";
70
71
  import * as IpV6Addresses from "@bessemer/cornerstone/net/ipv6-address";
71
72
  import * as IpV4Addresses from "@bessemer/cornerstone/net/ipv4-address";
73
+ import * as HttpMethods from "@bessemer/cornerstone/net/http-method";
74
+ import * as ContentTypes from "@bessemer/cornerstone/net/content-type";
75
+ import * as Proxies from "@bessemer/cornerstone/proxy";
76
+ import * as Generators from "@bessemer/cornerstone/generators";
72
77
  export {
73
78
  Arrays,
74
79
  AspectRatios,
@@ -79,6 +84,7 @@ export {
79
84
  Combinables,
80
85
  Comparators,
81
86
  Content,
87
+ ContentTypes,
82
88
  CountryCodes,
83
89
  CountrySubdivisionCodes,
84
90
  Crypto,
@@ -95,9 +101,11 @@ export {
95
101
  ErrorTypes,
96
102
  Errors,
97
103
  Functions,
104
+ Generators,
98
105
  Globs,
99
106
  Hashes,
100
107
  HexCodes,
108
+ HttpMethods,
101
109
  Instants,
102
110
  IpV4Addresses,
103
111
  IpV6Addresses,
@@ -120,6 +128,7 @@ export {
120
128
  PlainTimes,
121
129
  Promises,
122
130
  Properties,
131
+ Proxies,
123
132
  Ranges,
124
133
  References,
125
134
  ResourceKeys,
@@ -134,6 +143,7 @@ export {
134
143
  TimeZoneIds,
135
144
  TimeZoneOffsets,
136
145
  TypePaths,
146
+ Types,
137
147
  Ulids,
138
148
  Uris,
139
149
  Urls,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Objects from '@bessemer/cornerstone/object'\nimport * as Functions from '@bessemer/cornerstone/function'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as AsyncValues from '@bessemer/cornerstone/async-value'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Maps from '@bessemer/cornerstone/map'\nimport * as Sets from '@bessemer/cornerstone/set'\nimport * as Dates from '@bessemer/cornerstone/temporal/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/temporal/duration'\nimport * as Uris from '@bessemer/cornerstone/net/uri'\nimport * as Urls from '@bessemer/cornerstone/net/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error/error'\nimport * as ErrorTypes from '@bessemer/cornerstone/error/error-type'\nimport * as ErrorCodes from '@bessemer/cornerstone/error/error-code'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuid4 from '@bessemer/cornerstone/uuid/uuid-v4'\nimport * as Uuid7 from '@bessemer/cornerstone/uuid/uuid-v7'\nimport * as Ulids from '@bessemer/cornerstone/uuid/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\nimport * as ObjectPaths from '@bessemer/cornerstone/object/object-path'\nimport * as TypePaths from '@bessemer/cornerstone/object/type-path'\nimport * as ObjectDiffs from '@bessemer/cornerstone/object/object-diff'\nimport * as TimeZoneIds from '@bessemer/cornerstone/temporal/time-zone-id'\nimport * as TimeZoneOffsets from '@bessemer/cornerstone/temporal/time-zone-offset'\nimport * as Instants from '@bessemer/cornerstone/temporal/instant'\nimport * as PlainDates from '@bessemer/cornerstone/temporal/plain-date'\nimport * as PlainTimes from '@bessemer/cornerstone/temporal/plain-time'\nimport * as PlainDateTimes from '@bessemer/cornerstone/temporal/plain-date-time'\nimport * as Clocks from '@bessemer/cornerstone/temporal/clock'\n\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\nimport * as CurrencyCodes from '@bessemer/cornerstone/intl/currency-code'\nimport * as CountryCodes from '@bessemer/cornerstone/intl/country-code'\nimport * as CountrySubdivisionCodes from '@bessemer/cornerstone/intl/country-subdivision-code'\nimport * as LanguageCodes from '@bessemer/cornerstone/intl/language-code'\nimport * as Locales from '@bessemer/cornerstone/intl/locale'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as HexCodes from '@bessemer/cornerstone/hex-code'\nimport * as IpV6Addresses from '@bessemer/cornerstone/net/ipv6-address'\nimport * as IpV4Addresses from '@bessemer/cornerstone/net/ipv4-address'\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 ErrorTypes,\n ErrorCodes,\n ErrorCauses,\n ErrorEvents,\n Assertions,\n Uuid4,\n Uuid7,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n ObjectPaths,\n TypePaths,\n ObjectDiffs,\n Clocks,\n TimeZoneIds,\n TimeZoneOffsets,\n Instants,\n PlainDates,\n PlainTimes,\n PlainDateTimes,\n ZodUtil,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n CurrencyCodes,\n MonetaryAmounts,\n CountryCodes,\n CountrySubdivisionCodes,\n LanguageCodes,\n Locales,\n ResourceKeys,\n HexCodes,\n IpV6Addresses,\n IpV4Addresses,\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,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,eAAe;AAC3B,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,YAAY,qBAAqB;AACjC,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,oBAAoB;AAChC,YAAY,YAAY;AAExB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,qBAAqB;AACjC,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,YAAY,6BAA6B;AACzC,YAAY,mBAAmB;AAC/B,YAAY,aAAa;AACzB,YAAY,kBAAkB;AAC9B,YAAY,cAAc;AAC1B,YAAY,mBAAmB;AAC/B,YAAY,mBAAmB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as Types from '@bessemer/cornerstone/types'\nimport * 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/temporal/date'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Durations from '@bessemer/cornerstone/temporal/duration'\nimport * as Uris from '@bessemer/cornerstone/net/uri'\nimport * as Urls from '@bessemer/cornerstone/net/url'\nimport * as Loggers from '@bessemer/cornerstone/logger'\nimport * as Errors from '@bessemer/cornerstone/error/error'\nimport * as ErrorTypes from '@bessemer/cornerstone/error/error-type'\nimport * as ErrorCodes from '@bessemer/cornerstone/error/error-code'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Uuid4 from '@bessemer/cornerstone/uuid/uuid-v4'\nimport * as Uuid7 from '@bessemer/cornerstone/uuid/uuid-v7'\nimport * as Ulids from '@bessemer/cornerstone/uuid/ulid'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport * as Hashes from '@bessemer/cornerstone/hash'\nimport * as Crypto from '@bessemer/cornerstone/crypto'\nimport * as Globs from '@bessemer/cornerstone/glob'\nimport * as Ranges from '@bessemer/cornerstone/range'\nimport * as ObjectPaths from '@bessemer/cornerstone/object/object-path'\nimport * as TypePaths from '@bessemer/cornerstone/object/type-path'\nimport * as ObjectDiffs from '@bessemer/cornerstone/object/object-diff'\nimport * as TimeZoneIds from '@bessemer/cornerstone/temporal/time-zone-id'\nimport * as TimeZoneOffsets from '@bessemer/cornerstone/temporal/time-zone-offset'\nimport * as Instants from '@bessemer/cornerstone/temporal/instant'\nimport * as PlainDates from '@bessemer/cornerstone/temporal/plain-date'\nimport * as PlainTimes from '@bessemer/cornerstone/temporal/plain-time'\nimport * as PlainDateTimes from '@bessemer/cornerstone/temporal/plain-date-time'\nimport * as Clocks from '@bessemer/cornerstone/temporal/clock'\n\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as Tags from '@bessemer/cornerstone/tag'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport * as References from '@bessemer/cornerstone/reference'\nimport * as Signatures from '@bessemer/cornerstone/signature'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport * as Results from '@bessemer/cornerstone/result'\nimport * as Lazy from '@bessemer/cornerstone/lazy'\nimport * as Patches from '@bessemer/cornerstone/patch'\nimport * as Content from '@bessemer/cornerstone/content'\nimport * as Combinables from '@bessemer/cornerstone/combinable'\nimport * as Properties from '@bessemer/cornerstone/property'\nimport * as RichTexts from '@bessemer/cornerstone/rich-text'\nimport * as Retry from '@bessemer/cornerstone/retry'\nimport * as Stores from '@bessemer/cornerstone/store'\nimport * as Misc from '@bessemer/cornerstone/misc'\nimport * as Json from '@bessemer/cornerstone/json'\nimport * as AspectRatios from '@bessemer/cornerstone/aspect-ratio'\nimport * as DataSizes from '@bessemer/cornerstone/data-size'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport * as MonetaryAmounts from '@bessemer/cornerstone/monetary-amount'\nimport * as CurrencyCodes from '@bessemer/cornerstone/intl/currency-code'\nimport * as CountryCodes from '@bessemer/cornerstone/intl/country-code'\nimport * as CountrySubdivisionCodes from '@bessemer/cornerstone/intl/country-subdivision-code'\nimport * as LanguageCodes from '@bessemer/cornerstone/intl/language-code'\nimport * as Locales from '@bessemer/cornerstone/intl/locale'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as HexCodes from '@bessemer/cornerstone/hex-code'\nimport * as IpV6Addresses from '@bessemer/cornerstone/net/ipv6-address'\nimport * as IpV4Addresses from '@bessemer/cornerstone/net/ipv4-address'\nimport * as HttpMethods from '@bessemer/cornerstone/net/http-method'\nimport * as ContentTypes from '@bessemer/cornerstone/net/content-type'\nimport * as Proxies from '@bessemer/cornerstone/proxy'\nimport * as Generators from '@bessemer/cornerstone/generators'\n\nexport {\n Types,\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 ErrorTypes,\n ErrorCodes,\n ErrorCauses,\n ErrorEvents,\n Assertions,\n Uuid4,\n Uuid7,\n Ulids,\n Entries,\n Hashes,\n Crypto,\n Globs,\n Ranges,\n ObjectPaths,\n TypePaths,\n ObjectDiffs,\n Clocks,\n TimeZoneIds,\n TimeZoneOffsets,\n Instants,\n PlainDates,\n PlainTimes,\n PlainDateTimes,\n ZodUtil,\n Tags,\n Promises,\n References,\n Signatures,\n Eithers,\n Results,\n Lazy,\n Patches,\n Content,\n Combinables,\n Properties,\n RichTexts,\n Retry,\n Stores,\n Misc,\n Json,\n AspectRatios,\n DataSizes,\n MimeTypes,\n CurrencyCodes,\n MonetaryAmounts,\n CountryCodes,\n CountrySubdivisionCodes,\n LanguageCodes,\n Locales,\n ResourceKeys,\n HexCodes,\n IpV6Addresses,\n IpV4Addresses,\n HttpMethods,\n ContentTypes,\n Proxies,\n Generators,\n}\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,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,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,iBAAiB;AAC7B,YAAY,eAAe;AAC3B,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,YAAY,qBAAqB;AACjC,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,oBAAoB;AAChC,YAAY,YAAY;AAExB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,gBAAgB;AAC5B,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,qBAAqB;AACjC,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,YAAY,6BAA6B;AACzC,YAAY,mBAAmB;AAC/B,YAAY,aAAa;AACzB,YAAY,kBAAkB;AAC9B,YAAY,cAAc;AAC1B,YAAY,mBAAmB;AAC/B,YAAY,mBAAmB;AAC/B,YAAY,iBAAiB;AAC7B,YAAY,kBAAkB;AAC9B,YAAY,aAAa;AACzB,YAAY,gBAAgB;","names":[]}
package/dist/json.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { JsonValue } from 'type-fest';
1
2
  import { Result } from '@bessemer/cornerstone/result';
2
- export declare const parse: (data: string) => Result<any>;
3
+ export declare const parse: (data: string) => Result<JsonValue, SyntaxError>;
3
4
  //# sourceMappingURL=json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAY,MAAM,8BAA8B,CAAA;AAE/D,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,GAAG,CAE9C,CAAA"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,MAAM,EAAY,MAAM,8BAA8B,CAAA;AAE/D,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAEjE,CAAA"}
package/dist/json.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/json.ts"],"sourcesContent":["import { JsonValue } from 'type-fest'\nimport { Result, tryValue } from '@bessemer/cornerstone/result'\n\nexport const parse = (data: string): Result<any> => {\n return tryValue(() => JSON.parse(data) as JsonValue)\n}\n"],"mappings":";AACA,SAAiB,gBAAgB;AAE1B,IAAM,QAAQ,CAAC,SAA8B;AAClD,SAAO,SAAS,MAAM,KAAK,MAAM,IAAI,CAAc;AACrD;","names":[]}
1
+ {"version":3,"sources":["../src/json.ts"],"sourcesContent":["import { JsonValue } from 'type-fest'\nimport { Result, tryValue } from '@bessemer/cornerstone/result'\n\nexport const parse = (data: string): Result<JsonValue, SyntaxError> => {\n return tryValue(() => JSON.parse(data) as JsonValue) as Result<JsonValue, SyntaxError>\n}\n"],"mappings":";AACA,SAAiB,gBAAgB;AAE1B,IAAM,QAAQ,CAAC,SAAiD;AACrE,SAAO,SAAS,MAAM,KAAK,MAAM,IAAI,CAAc;AACrD;","names":[]}
package/dist/math.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare const isNumber: (value?: unknown) => value is number;
2
2
  export declare const isEven: (d: number) => boolean;
3
3
  export declare const isOdd: (d: number) => boolean;
4
+ export declare const isWhole: (n: number) => boolean;
4
5
  export declare enum RoundingMode {
5
6
  Nearest = "Nearest",
6
7
  Down = "Down",
@@ -21,5 +22,7 @@ export declare const roundHalfEven: (value: number, scale: number) => number;
21
22
  export declare const random: (min: number, max: number) => number;
22
23
  export declare const greatestCommonFactor: (first: number, second: number) => number;
23
24
  export declare const sum: (...numbers: Array<number>) => number;
25
+ export declare const sumAll: (numbers: Array<number>) => number;
24
26
  export declare const subtract: (...numbers: Array<number>) => number;
27
+ export declare const subtractAll: (numbers: Array<number>) => number;
25
28
  //# sourceMappingURL=math.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAMnD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,YAAgB,CAAA;AAEhD,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,YAAgB,CAAA;AAE/C,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,eAAc,YAAmC,KAAG,MAWvG,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAG3D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGrD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGnD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MA0E5D,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAEjD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAEpE,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAMpD,CAAA"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,MAMnD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,YAAgB,CAAA;AAEhD,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,YAAgB,CAAA;AAE/C,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,YAAgB,CAAA;AAEjD,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,eAAc,YAAmC,KAAG,MAWvG,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAG3D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGrD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,WAGnD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MA0E5D,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAEjD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAEpE,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAEpD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,KAAK,CAAC,MAAM,CAAC,KAAG,MAMpD,CAAA"}
package/dist/math.js CHANGED
@@ -7,6 +7,7 @@ var isNumber = (value) => {
7
7
  };
8
8
  var isEven = (d) => d % 2 === 0;
9
9
  var isOdd = (d) => d % 2 !== 0;
10
+ var isWhole = (n) => n % 1 === 0;
10
11
  var RoundingMode = /* @__PURE__ */ ((RoundingMode2) => {
11
12
  RoundingMode2["Nearest"] = "Nearest";
12
13
  RoundingMode2["Down"] = "Down";
@@ -112,9 +113,15 @@ var greatestCommonFactor = (first, second) => {
112
113
  return second === 0 ? first : greatestCommonFactor(second, first % second);
113
114
  };
114
115
  var sum = (...numbers) => {
116
+ return sumAll(numbers);
117
+ };
118
+ var sumAll = (numbers) => {
115
119
  return numbers.reduce((first, second) => first + second, 0);
116
120
  };
117
121
  var subtract = (...numbers) => {
122
+ return subtractAll(numbers);
123
+ };
124
+ var subtractAll = (numbers) => {
118
125
  if (numbers.length === 0) {
119
126
  return 0;
120
127
  }
@@ -126,6 +133,7 @@ export {
126
133
  isEven,
127
134
  isNumber,
128
135
  isOdd,
136
+ isWhole,
129
137
  random,
130
138
  round,
131
139
  roundDown,
@@ -133,6 +141,8 @@ export {
133
141
  roundNearest,
134
142
  roundUp,
135
143
  subtract,
136
- sum
144
+ subtractAll,
145
+ sum,
146
+ sumAll
137
147
  };
138
148
  //# sourceMappingURL=math.js.map
package/dist/math.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/math.ts"],"sourcesContent":["export const isNumber = (value?: unknown): value is number => {\n if (value === null || value === undefined) {\n return false\n }\n\n return typeof value === 'number' && !isNaN(value)\n}\n\nexport const isEven = (d: number) => d % 2 === 0\n\nexport const isOdd = (d: number) => d % 2 !== 0\n\nexport enum RoundingMode {\n Nearest = 'Nearest',\n Down = 'Down',\n Up = 'Up',\n HalfEven = 'HalfEven',\n}\n\nexport const round = (value: number, scale: number, roundingMode: RoundingMode = RoundingMode.Nearest): number => {\n switch (roundingMode) {\n case RoundingMode.Nearest:\n return roundNearest(value, scale)\n case RoundingMode.Down:\n return roundDown(value, scale)\n case RoundingMode.Up:\n return roundUp(value, scale)\n case RoundingMode.HalfEven:\n return roundHalfEven(value, scale)\n }\n}\n\nexport const roundNearest = (value: number, scale: number): number => {\n const factor = Math.pow(10, scale)\n return Math.round((value + Number.EPSILON) * factor) / factor\n}\n\nexport const roundDown = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.floor((value + +Number.EPSILON) * factor) / factor\n}\n\nexport const roundUp = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.ceil((value + +Number.EPSILON) * factor) / factor\n}\n\n/**\n * Round Half-Even (Banker's Rounding) Utility\n * https://en.wikipedia.org/wiki/Rounding#Round_half_to_even\n *\n * Mostly copied from this Github: https://github.com/schowdhuri/round-half-even\n */\nexport const roundHalfEven = (value: number, scale: number): number => {\n if (value < 0) {\n return -roundHalfEven(-value, scale)\n }\n if (scale === 0) {\n return roundHalfEven(value / 10, 1) * 10\n }\n\n const MAX_DECIMALS_ALLOWED = 20\n if (scale > MAX_DECIMALS_ALLOWED) {\n throw new Error(`Cannot handle more than ${MAX_DECIMALS_ALLOWED} decimals`)\n }\n\n // convert to string; remove trailing 0s\n const isExponentialForm = value.toString().includes('e') || value.toString().includes('E')\n const strNum = (isExponentialForm ? value.toFixed(MAX_DECIMALS_ALLOWED).toString() : value.toString()).replace(/0+$/, '')\n const decimalIndex = strNum.indexOf('.')\n if (decimalIndex < 0) {\n // no fractional part\n return value\n }\n let intPart: string = strNum.slice(0, decimalIndex)\n if (intPart.length == 0) {\n intPart = '0'\n }\n let fractPart = strNum.slice(decimalIndex + 1) // extract fractional part\n if (fractPart.length < scale) {\n return value\n }\n const followingDig = parseInt(fractPart[scale]!, 10)\n if (followingDig < 5) {\n // rounding not required\n const newFractPart = fractPart.slice(0, scale)\n return parseFloat(`${intPart}.${newFractPart}`)\n }\n if (followingDig === 5) {\n const newFractPart = fractPart.slice(0, scale + 1)\n if (parseInt(fractPart.slice(scale + 1), 10) > 0) {\n fractPart = `${newFractPart}9`\n } else {\n fractPart = newFractPart\n }\n }\n\n let nextDig = parseInt(fractPart[fractPart.length - 1]!, 10)\n let carriedOver = 0\n for (let ptr = fractPart.length - 1; ptr >= scale; ptr--) {\n let dig = parseInt(fractPart[ptr - 1]!, 10) + carriedOver\n if (nextDig > 5 || (nextDig == 5 && !isEven(dig))) {\n ++dig\n }\n if (dig > 9) {\n dig -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n nextDig = dig\n }\n\n let newFractPart = ''\n for (let ptr = scale - 2; ptr >= 0; ptr--) {\n let d = parseInt(fractPart[ptr]!, 10) + carriedOver\n if (d > 9) {\n d -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n newFractPart = `${d}${newFractPart}`\n }\n\n const resolvedIntPart = parseInt(intPart, 10) + carriedOver\n return parseFloat(`${resolvedIntPart}.${newFractPart}${nextDig}`)\n}\n\nexport const random = (min: number, max: number): number => {\n return Math.random() * (max - min) + min\n}\n\nexport const greatestCommonFactor = (first: number, second: number): number => {\n return second === 0 ? first : greatestCommonFactor(second, first % second)\n}\n\nexport const sum = (...numbers: Array<number>): number => {\n return numbers.reduce((first, second) => first + second, 0)\n}\n\nexport const subtract = (...numbers: Array<number>): number => {\n if (numbers.length === 0) {\n return 0\n }\n\n return numbers.slice(1).reduce((result, current) => result - current, numbers[0]!)\n}\n"],"mappings":"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","names":["RoundingMode","newFractPart"]}
1
+ {"version":3,"sources":["../src/math.ts"],"sourcesContent":["export const isNumber = (value?: unknown): value is number => {\n if (value === null || value === undefined) {\n return false\n }\n\n return typeof value === 'number' && !isNaN(value)\n}\n\nexport const isEven = (d: number) => d % 2 === 0\n\nexport const isOdd = (d: number) => d % 2 !== 0\n\nexport const isWhole = (n: number) => n % 1 === 0\n\nexport enum RoundingMode {\n Nearest = 'Nearest',\n Down = 'Down',\n Up = 'Up',\n HalfEven = 'HalfEven',\n}\n\nexport const round = (value: number, scale: number, roundingMode: RoundingMode = RoundingMode.Nearest): number => {\n switch (roundingMode) {\n case RoundingMode.Nearest:\n return roundNearest(value, scale)\n case RoundingMode.Down:\n return roundDown(value, scale)\n case RoundingMode.Up:\n return roundUp(value, scale)\n case RoundingMode.HalfEven:\n return roundHalfEven(value, scale)\n }\n}\n\nexport const roundNearest = (value: number, scale: number): number => {\n const factor = Math.pow(10, scale)\n return Math.round((value + Number.EPSILON) * factor) / factor\n}\n\nexport const roundDown = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.floor((value + +Number.EPSILON) * factor) / factor\n}\n\nexport const roundUp = (value: number, scale: number) => {\n const factor = Math.pow(10, scale)\n return Math.ceil((value + +Number.EPSILON) * factor) / factor\n}\n\n/**\n * Round Half-Even (Banker's Rounding) Utility\n * https://en.wikipedia.org/wiki/Rounding#Round_half_to_even\n *\n * Mostly copied from this Github: https://github.com/schowdhuri/round-half-even\n */\nexport const roundHalfEven = (value: number, scale: number): number => {\n if (value < 0) {\n return -roundHalfEven(-value, scale)\n }\n if (scale === 0) {\n return roundHalfEven(value / 10, 1) * 10\n }\n\n const MAX_DECIMALS_ALLOWED = 20\n if (scale > MAX_DECIMALS_ALLOWED) {\n throw new Error(`Cannot handle more than ${MAX_DECIMALS_ALLOWED} decimals`)\n }\n\n // convert to string; remove trailing 0s\n const isExponentialForm = value.toString().includes('e') || value.toString().includes('E')\n const strNum = (isExponentialForm ? value.toFixed(MAX_DECIMALS_ALLOWED).toString() : value.toString()).replace(/0+$/, '')\n const decimalIndex = strNum.indexOf('.')\n if (decimalIndex < 0) {\n // no fractional part\n return value\n }\n let intPart: string = strNum.slice(0, decimalIndex)\n if (intPart.length == 0) {\n intPart = '0'\n }\n let fractPart = strNum.slice(decimalIndex + 1) // extract fractional part\n if (fractPart.length < scale) {\n return value\n }\n const followingDig = parseInt(fractPart[scale]!, 10)\n if (followingDig < 5) {\n // rounding not required\n const newFractPart = fractPart.slice(0, scale)\n return parseFloat(`${intPart}.${newFractPart}`)\n }\n if (followingDig === 5) {\n const newFractPart = fractPart.slice(0, scale + 1)\n if (parseInt(fractPart.slice(scale + 1), 10) > 0) {\n fractPart = `${newFractPart}9`\n } else {\n fractPart = newFractPart\n }\n }\n\n let nextDig = parseInt(fractPart[fractPart.length - 1]!, 10)\n let carriedOver = 0\n for (let ptr = fractPart.length - 1; ptr >= scale; ptr--) {\n let dig = parseInt(fractPart[ptr - 1]!, 10) + carriedOver\n if (nextDig > 5 || (nextDig == 5 && !isEven(dig))) {\n ++dig\n }\n if (dig > 9) {\n dig -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n nextDig = dig\n }\n\n let newFractPart = ''\n for (let ptr = scale - 2; ptr >= 0; ptr--) {\n let d = parseInt(fractPart[ptr]!, 10) + carriedOver\n if (d > 9) {\n d -= 10\n carriedOver = 1\n } else {\n carriedOver = 0\n }\n newFractPart = `${d}${newFractPart}`\n }\n\n const resolvedIntPart = parseInt(intPart, 10) + carriedOver\n return parseFloat(`${resolvedIntPart}.${newFractPart}${nextDig}`)\n}\n\nexport const random = (min: number, max: number): number => {\n return Math.random() * (max - min) + min\n}\n\nexport const greatestCommonFactor = (first: number, second: number): number => {\n return second === 0 ? first : greatestCommonFactor(second, first % second)\n}\n\nexport const sum = (...numbers: Array<number>): number => {\n return sumAll(numbers)\n}\n\nexport const sumAll = (numbers: Array<number>): number => {\n return numbers.reduce((first, second) => first + second, 0)\n}\n\nexport const subtract = (...numbers: Array<number>): number => {\n return subtractAll(numbers)\n}\n\nexport const subtractAll = (numbers: Array<number>): number => {\n if (numbers.length === 0) {\n return 0\n }\n\n return numbers.slice(1).reduce((result, current) => result - current, numbers[0]!)\n}\n"],"mappings":"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","names":["RoundingMode","newFractPart"]}
@@ -4,7 +4,7 @@ import { Result } from '@bessemer/cornerstone/result';
4
4
  import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
5
5
  export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"mime-type">;
6
6
  export type MimeLiteral = NominalType<string, typeof Namespace>;
7
- export declare const parseString: (value: string) => Result<MimeLiteral, ErrorEvent>;
7
+ export declare const parseString: (initialValue: string) => Result<MimeLiteral, ErrorEvent>;
8
8
  export declare const from: (value: string) => MimeLiteral;
9
9
  export declare const Schema: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<MimeLiteral, string>>;
10
10
  export declare const Jpeg: MimeLiteral;
@@ -26,7 +26,7 @@ export declare const AudioTypes: MimeLiteral[];
26
26
  export declare const Pdf: MimeLiteral;
27
27
  export declare const Json: MimeLiteral;
28
28
  export declare const Csv: MimeLiteral;
29
- export declare const PlainText: MimeLiteral;
29
+ export declare const Text: MimeLiteral;
30
30
  export declare const Html: MimeLiteral;
31
31
  export declare const Xml: MimeLiteral;
32
32
  export declare const DocumentTypes: MimeLiteral[];
@@ -41,6 +41,7 @@ export declare const Tar: MimeLiteral;
41
41
  export declare const Brotli: MimeLiteral;
42
42
  export declare const CompressionTypes: MimeLiteral[];
43
43
  export declare const FormData: MimeLiteral;
44
+ export declare const FormUrl: MimeLiteral;
44
45
  export declare const Javascript: MimeLiteral;
45
- export declare const OctetStream: MimeLiteral;
46
+ export declare const Binary: MimeLiteral;
46
47
  //# sourceMappingURL=mime-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAEvE,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,eAAO,MAAM,SAAS,6EAA+B,CAAA;AACrD,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAE/D,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAMzE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,WAEpC,CAAA;AAED,eAAO,MAAM,MAAM,mEAIjB,CAAA;AAGF,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,GAAG,EAAsB,WAAW,CAAA;AACjD,eAAO,MAAM,GAAG,EAAqB,WAAW,CAAA;AAChD,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,UAAU,eAAyC,CAAA;AAGhE,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,QAAQ,EAAkB,WAAW,CAAA;AAClD,eAAO,MAAM,UAAU,eAAwB,CAAA;AAG/C,eAAO,MAAM,GAAG,EAAmB,WAAW,CAAA;AAC9C,eAAO,MAAM,QAAQ,EAAkB,WAAW,CAAA;AAClD,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,UAAU,eAAuB,CAAA;AAG9C,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,IAAI,EAAyB,WAAW,CAAA;AACrD,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,SAAS,EAAmB,WAAW,CAAA;AACpD,eAAO,MAAM,IAAI,EAAkB,WAAW,CAAA;AAC9C,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,aAAa,eAAyC,CAAA;AAGnE,eAAO,MAAM,IAAI,EAAkB,WAAW,CAAA;AAC9C,eAAO,MAAM,KAAK,EAAmB,WAAW,CAAA;AAChD,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,SAAS,eAA0B,CAAA;AAGhD,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,IAAI,EAAyB,WAAW,CAAA;AACrD,eAAO,MAAM,GAAG,EAA0B,WAAW,CAAA;AACrD,eAAO,MAAM,MAAM,EAA6B,WAAW,CAAA;AAC3D,eAAO,MAAM,gBAAgB,eAA2B,CAAA;AAGxD,eAAO,MAAM,QAAQ,EAA4B,WAAW,CAAA;AAC5D,eAAO,MAAM,UAAU,EAA+B,WAAW,CAAA;AACjE,eAAO,MAAM,WAAW,EAAiC,WAAW,CAAA"}
1
+ {"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../src/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAEvE,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,eAAO,MAAM,SAAS,6EAA+B,CAAA;AACrD,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAE/D,eAAO,MAAM,WAAW,GAAI,cAAc,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAQhF,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,WAEpC,CAAA;AAED,eAAO,MAAM,MAAM,mEAIjB,CAAA;AAGF,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,GAAG,EAAsB,WAAW,CAAA;AACjD,eAAO,MAAM,GAAG,EAAqB,WAAW,CAAA;AAChD,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,UAAU,eAAyC,CAAA;AAGhE,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,QAAQ,EAAkB,WAAW,CAAA;AAClD,eAAO,MAAM,UAAU,eAAwB,CAAA;AAG/C,eAAO,MAAM,GAAG,EAAmB,WAAW,CAAA;AAC9C,eAAO,MAAM,QAAQ,EAAkB,WAAW,CAAA;AAClD,eAAO,MAAM,GAAG,EAAkB,WAAW,CAAA;AAC7C,eAAO,MAAM,UAAU,eAAuB,CAAA;AAG9C,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,IAAI,EAAyB,WAAW,CAAA;AACrD,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,IAAI,EAAmB,WAAW,CAAA;AAC/C,eAAO,MAAM,IAAI,EAAkB,WAAW,CAAA;AAC9C,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,aAAa,eAAoC,CAAA;AAG9D,eAAO,MAAM,IAAI,EAAkB,WAAW,CAAA;AAC9C,eAAO,MAAM,KAAK,EAAmB,WAAW,CAAA;AAChD,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,GAAG,EAAiB,WAAW,CAAA;AAC5C,eAAO,MAAM,SAAS,eAA0B,CAAA;AAGhD,eAAO,MAAM,GAAG,EAAwB,WAAW,CAAA;AACnD,eAAO,MAAM,IAAI,EAAyB,WAAW,CAAA;AACrD,eAAO,MAAM,GAAG,EAA0B,WAAW,CAAA;AACrD,eAAO,MAAM,MAAM,EAA6B,WAAW,CAAA;AAC3D,eAAO,MAAM,gBAAgB,eAA2B,CAAA;AAGxD,eAAO,MAAM,QAAQ,EAA4B,WAAW,CAAA;AAC5D,eAAO,MAAM,OAAO,EAA0C,WAAW,CAAA;AACzE,eAAO,MAAM,UAAU,EAA+B,WAAW,CAAA;AACjE,eAAO,MAAM,MAAM,EAAiC,WAAW,CAAA"}
package/dist/mime-type.js CHANGED
@@ -5,7 +5,8 @@ import { createNamespace } from "@bessemer/cornerstone/resource-key";
5
5
  import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
6
6
  import { structuredTransform } from "@bessemer/cornerstone/zod-util";
7
7
  var Namespace = createNamespace("mime-type");
8
- var parseString = (value) => {
8
+ var parseString = (initialValue) => {
9
+ const value = initialValue.trim().toLowerCase();
9
10
  if (!/^[\w-]+\/[\w.+-]+$/.test(value)) {
10
11
  return failure(invalidValue(value, { namespace: Namespace, message: `Invalid MIME type format.` }));
11
12
  }
@@ -38,10 +39,10 @@ var AudioTypes = [Mp3, OggAudio, Wav];
38
39
  var Pdf = "application/pdf";
39
40
  var Json = "application/json";
40
41
  var Csv = "text/csv";
41
- var PlainText = "text/plain";
42
+ var Text = "text/plain";
42
43
  var Html = "text/html";
43
44
  var Xml = "application/xml";
44
- var DocumentTypes = [Pdf, Json, Csv, PlainText, Html, Xml];
45
+ var DocumentTypes = [Pdf, Json, Csv, Text, Html, Xml];
45
46
  var Woff = "font/woff";
46
47
  var Woff2 = "font/woff2";
47
48
  var Ttf = "font/ttf";
@@ -53,17 +54,20 @@ var Tar = "application/x-tar";
53
54
  var Brotli = "application/x-brotli";
54
55
  var CompressionTypes = [Zip, Gzip, Tar, Brotli];
55
56
  var FormData = "multipart/form-data";
57
+ var FormUrl = "application/x-www-form-urlencoded";
56
58
  var Javascript = "application/javascript";
57
- var OctetStream = "application/octet-stream";
59
+ var Binary = "application/octet-stream";
58
60
  export {
59
61
  AudioTypes,
60
62
  Avif,
63
+ Binary,
61
64
  Brotli,
62
65
  CompressionTypes,
63
66
  Csv,
64
67
  DocumentTypes,
65
68
  FontTypes,
66
69
  FormData,
70
+ FormUrl,
67
71
  Gif,
68
72
  Gzip,
69
73
  Html,
@@ -75,16 +79,15 @@ export {
75
79
  Mp3,
76
80
  Mp4,
77
81
  Namespace,
78
- OctetStream,
79
82
  OggAudio,
80
83
  OggVideo,
81
84
  Otf,
82
85
  Pdf,
83
- PlainText,
84
86
  Png,
85
87
  Schema,
86
88
  Svg,
87
89
  Tar,
90
+ Text,
88
91
  Ttf,
89
92
  VideoTypes,
90
93
  Wav,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = createNamespace('mime-type')\nexport type MimeLiteral = NominalType<string, typeof Namespace>\n\nexport const parseString = (value: string): Result<MimeLiteral, ErrorEvent> => {\n if (!/^[\\w-]+\\/[\\w.+-]+$/.test(value)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `Invalid MIME type format.` }))\n }\n\n return success(value as MimeLiteral)\n}\n\nexport const from = (value: string): MimeLiteral => {\n return unpackResult(parseString(value))\n}\n\nexport const Schema = structuredTransform(Zod.string(), parseString).meta({\n type: 'string',\n format: Namespace,\n pattern: '^[\\\\w-]+\\\\/[\\\\w.+-]+$',\n})\n\n// Images\nexport const Jpeg = 'image/jpeg' as MimeLiteral\nexport const Png = 'image/png' as MimeLiteral\nexport const Gif = 'image/gif' as MimeLiteral\nexport const Webp = 'image/webp' as MimeLiteral\nexport const Svg = 'image/svg+xml' as MimeLiteral\nexport const Ico = 'image/x-icon' as MimeLiteral\nexport const Avif = 'image/avif' as MimeLiteral\nexport const ImageTypes = [Jpeg, Png, Gif, Webp, Svg, Ico, Avif]\n\n// Video\nexport const Mp4 = 'video/mp4' as MimeLiteral\nexport const Webm = 'video/webm' as MimeLiteral\nexport const OggVideo = 'video/ogg' as MimeLiteral\nexport const VideoTypes = [Mp4, Webm, OggVideo]\n\n// Audio\nexport const Mp3 = 'audio/mpeg' as MimeLiteral\nexport const OggAudio = 'audio/ogg' as MimeLiteral\nexport const Wav = 'audio/wav' as MimeLiteral\nexport const AudioTypes = [Mp3, OggAudio, Wav]\n\n// Documents\nexport const Pdf = 'application/pdf' as MimeLiteral\nexport const Json = 'application/json' as MimeLiteral\nexport const Csv = 'text/csv' as MimeLiteral\nexport const PlainText = 'text/plain' as MimeLiteral\nexport const Html = 'text/html' as MimeLiteral\nexport const Xml = 'application/xml' as MimeLiteral\nexport const DocumentTypes = [Pdf, Json, Csv, PlainText, Html, Xml]\n\n// Fonts\nexport const Woff = 'font/woff' as MimeLiteral\nexport const Woff2 = 'font/woff2' as MimeLiteral\nexport const Ttf = 'font/ttf' as MimeLiteral\nexport const Otf = 'font/otf' as MimeLiteral\nexport const FontTypes = [Woff, Woff2, Ttf, Otf]\n\n// Compression\nexport const Zip = 'application/zip' as MimeLiteral\nexport const Gzip = 'application/gzip' as MimeLiteral\nexport const Tar = 'application/x-tar' as MimeLiteral\nexport const Brotli = 'application/x-brotli' as MimeLiteral\nexport const CompressionTypes = [Zip, Gzip, Tar, Brotli]\n\n// Misc\nexport const FormData = 'multipart/form-data' as MimeLiteral\nexport const Javascript = 'application/javascript' as MimeLiteral\nexport const OctetStream = 'application/octet-stream' as MimeLiteral\n"],"mappings":";AACA,OAAO,SAAS;AAChB,SAAS,SAAiB,eAAe;AACzC,SAAS,uBAAuB;AAChC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,2BAA2B;AAE7B,IAAM,YAAY,gBAAgB,WAAW;AAG7C,IAAM,cAAc,CAAC,UAAmD;AAC7E,MAAI,CAAC,qBAAqB,KAAK,KAAK,GAAG;AACrC,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,4BAA4B,CAAC,CAAC;AAAA,EACpG;AAEA,SAAO,QAAQ,KAAoB;AACrC;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,WAAW,EAAE,KAAK;AAAA,EACxE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX,CAAC;AAGM,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,aAAa,CAAC,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI;AAGxD,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,WAAW;AACjB,IAAM,aAAa,CAAC,KAAK,MAAM,QAAQ;AAGvC,IAAM,MAAM;AACZ,IAAM,WAAW;AACjB,IAAM,MAAM;AACZ,IAAM,aAAa,CAAC,KAAK,UAAU,GAAG;AAGtC,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,YAAY;AAClB,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,gBAAgB,CAAC,KAAK,MAAM,KAAK,WAAW,MAAM,GAAG;AAG3D,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,YAAY,CAAC,MAAM,OAAO,KAAK,GAAG;AAGxC,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,SAAS;AACf,IAAM,mBAAmB,CAAC,KAAK,MAAM,KAAK,MAAM;AAGhD,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/mime-type.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = createNamespace('mime-type')\nexport type MimeLiteral = NominalType<string, typeof Namespace>\n\nexport const parseString = (initialValue: string): Result<MimeLiteral, ErrorEvent> => {\n const value = initialValue.trim().toLowerCase()\n\n if (!/^[\\w-]+\\/[\\w.+-]+$/.test(value)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `Invalid MIME type format.` }))\n }\n\n return success(value as MimeLiteral)\n}\n\nexport const from = (value: string): MimeLiteral => {\n return unpackResult(parseString(value))\n}\n\nexport const Schema = structuredTransform(Zod.string(), parseString).meta({\n type: 'string',\n format: Namespace,\n pattern: '^[\\\\w-]+\\\\/[\\\\w.+-]+$',\n})\n\n// Images\nexport const Jpeg = 'image/jpeg' as MimeLiteral\nexport const Png = 'image/png' as MimeLiteral\nexport const Gif = 'image/gif' as MimeLiteral\nexport const Webp = 'image/webp' as MimeLiteral\nexport const Svg = 'image/svg+xml' as MimeLiteral\nexport const Ico = 'image/x-icon' as MimeLiteral\nexport const Avif = 'image/avif' as MimeLiteral\nexport const ImageTypes = [Jpeg, Png, Gif, Webp, Svg, Ico, Avif]\n\n// Video\nexport const Mp4 = 'video/mp4' as MimeLiteral\nexport const Webm = 'video/webm' as MimeLiteral\nexport const OggVideo = 'video/ogg' as MimeLiteral\nexport const VideoTypes = [Mp4, Webm, OggVideo]\n\n// Audio\nexport const Mp3 = 'audio/mpeg' as MimeLiteral\nexport const OggAudio = 'audio/ogg' as MimeLiteral\nexport const Wav = 'audio/wav' as MimeLiteral\nexport const AudioTypes = [Mp3, OggAudio, Wav]\n\n// Documents\nexport const Pdf = 'application/pdf' as MimeLiteral\nexport const Json = 'application/json' as MimeLiteral\nexport const Csv = 'text/csv' as MimeLiteral\nexport const Text = 'text/plain' as MimeLiteral\nexport const Html = 'text/html' as MimeLiteral\nexport const Xml = 'application/xml' as MimeLiteral\nexport const DocumentTypes = [Pdf, Json, Csv, Text, Html, Xml]\n\n// Fonts\nexport const Woff = 'font/woff' as MimeLiteral\nexport const Woff2 = 'font/woff2' as MimeLiteral\nexport const Ttf = 'font/ttf' as MimeLiteral\nexport const Otf = 'font/otf' as MimeLiteral\nexport const FontTypes = [Woff, Woff2, Ttf, Otf]\n\n// Compression\nexport const Zip = 'application/zip' as MimeLiteral\nexport const Gzip = 'application/gzip' as MimeLiteral\nexport const Tar = 'application/x-tar' as MimeLiteral\nexport const Brotli = 'application/x-brotli' as MimeLiteral\nexport const CompressionTypes = [Zip, Gzip, Tar, Brotli]\n\n// Misc\nexport const FormData = 'multipart/form-data' as MimeLiteral\nexport const FormUrl = 'application/x-www-form-urlencoded' as MimeLiteral\nexport const Javascript = 'application/javascript' as MimeLiteral\nexport const Binary = 'application/octet-stream' as MimeLiteral\n"],"mappings":";AACA,OAAO,SAAS;AAChB,SAAS,SAAiB,eAAe;AACzC,SAAS,uBAAuB;AAChC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,2BAA2B;AAE7B,IAAM,YAAY,gBAAgB,WAAW;AAG7C,IAAM,cAAc,CAAC,iBAA0D;AACpF,QAAM,QAAQ,aAAa,KAAK,EAAE,YAAY;AAE9C,MAAI,CAAC,qBAAqB,KAAK,KAAK,GAAG;AACrC,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,4BAA4B,CAAC,CAAC;AAAA,EACpG;AAEA,SAAO,QAAQ,KAAoB;AACrC;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,WAAW,EAAE,KAAK;AAAA,EACxE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX,CAAC;AAGM,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,aAAa,CAAC,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI;AAGxD,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,WAAW;AACjB,IAAM,aAAa,CAAC,KAAK,MAAM,QAAQ;AAGvC,IAAM,MAAM;AACZ,IAAM,WAAW;AACjB,IAAM,MAAM;AACZ,IAAM,aAAa,CAAC,KAAK,UAAU,GAAG;AAGtC,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,gBAAgB,CAAC,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG;AAGtD,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,YAAY,CAAC,MAAM,OAAO,KAAK,GAAG;AAGxC,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,SAAS;AACf,IAAM,mBAAmB,CAAC,KAAK,MAAM,KAAK,MAAM;AAGhD,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,aAAa;AACnB,IAAM,SAAS;","names":[]}
@@ -0,0 +1,21 @@
1
+ import { Result } from '@bessemer/cornerstone/result';
2
+ import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
3
+ import { Dictionary, NominalType } from '@bessemer/cornerstone/types';
4
+ import { MimeLiteral } from '@bessemer/cornerstone/mime-type';
5
+ export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"content-type">;
6
+ export type ContentType = {
7
+ mimeType: MimeLiteral;
8
+ parameters: Dictionary<string>;
9
+ };
10
+ export type ContentTypeLiteral = NominalType<string, typeof Namespace>;
11
+ export type ContentTypeLike = ContentType | ContentTypeLiteral | MimeLiteral;
12
+ export declare function from(value: ContentTypeLike | string): ContentType;
13
+ export declare function from(value: ContentTypeLike | string | null): ContentType | null;
14
+ export declare function from(value: ContentTypeLike | string | undefined): ContentType | undefined;
15
+ export declare function from(value: ContentTypeLike | string | null | undefined): ContentType | null | undefined;
16
+ export declare function toLiteral(likeValue: ContentTypeLike): ContentTypeLiteral;
17
+ export declare function toLiteral(likeValue: ContentTypeLike | null): ContentTypeLiteral | null;
18
+ export declare function toLiteral(likeValue: ContentTypeLike | undefined): ContentTypeLiteral | undefined;
19
+ export declare function toLiteral(likeValue: ContentTypeLike | null | undefined): ContentTypeLiteral | null | undefined;
20
+ export declare const parseString: (value: string) => Result<ContentType, ErrorEvent>;
21
+ //# sourceMappingURL=content-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.d.ts","sourceRoot":"","sources":["../../src/net/content-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAEpE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAI7D,eAAO,MAAM,SAAS,gFAAkC,CAAA;AACxD,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AACnF,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAEtE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,kBAAkB,GAAG,WAAW,CAAA;AAE5E,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,CAAA;AAClE,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAA;AAChF,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAC1F,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;AAaxG,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,kBAAkB,CAAA;AACzE,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAA;AACvF,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAAA;AACjG,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAA;AA2B/G,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAgGzE,CAAA"}