@bessemer/cornerstone 0.5.109 → 0.5.110

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 (120) hide show
  1. package/dist/array.d.ts +2 -1
  2. package/dist/array.d.ts.map +1 -1
  3. package/dist/array.js +11 -0
  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 +2 -0
  17. package/dist/generators.d.ts.map +1 -0
  18. package/dist/generators.js +14 -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 +2 -0
  28. package/dist/math.d.ts.map +1 -1
  29. package/dist/math.js +9 -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/result.d.ts +18 -20
  81. package/dist/result.d.ts.map +1 -1
  82. package/dist/result.js +41 -61
  83. package/dist/result.js.map +1 -1
  84. package/dist/retry.d.ts.map +1 -1
  85. package/dist/retry.js +3 -3
  86. package/dist/retry.js.map +1 -1
  87. package/dist/sql/sql-expression-parser.d.ts.map +1 -1
  88. package/dist/sql/sql-expression-parser.js +5 -5
  89. package/dist/sql/sql-expression-parser.js.map +1 -1
  90. package/dist/string.d.ts +1 -0
  91. package/dist/string.d.ts.map +1 -1
  92. package/dist/string.js +4 -0
  93. package/dist/string.js.map +1 -1
  94. package/dist/temporal/duration.d.ts.map +1 -1
  95. package/dist/temporal/duration.js +2 -1
  96. package/dist/temporal/duration.js.map +1 -1
  97. package/dist/temporal/instant.d.ts.map +1 -1
  98. package/dist/temporal/instant.js +2 -1
  99. package/dist/temporal/instant.js.map +1 -1
  100. package/dist/temporal/plain-date-time.d.ts.map +1 -1
  101. package/dist/temporal/plain-date-time.js +2 -1
  102. package/dist/temporal/plain-date-time.js.map +1 -1
  103. package/dist/temporal/plain-date.d.ts.map +1 -1
  104. package/dist/temporal/plain-date.js +2 -1
  105. package/dist/temporal/plain-date.js.map +1 -1
  106. package/dist/temporal/plain-time.d.ts.map +1 -1
  107. package/dist/temporal/plain-time.js +2 -1
  108. package/dist/temporal/plain-time.js.map +1 -1
  109. package/dist/temporal/zoned-date-time.d.ts.map +1 -1
  110. package/dist/temporal/zoned-date-time.js +2 -1
  111. package/dist/temporal/zoned-date-time.js.map +1 -1
  112. package/dist/types.d.ts +23 -0
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/types.js +6 -0
  115. package/dist/types.js.map +1 -1
  116. package/dist/zod-util.d.ts +55 -6
  117. package/dist/zod-util.d.ts.map +1 -1
  118. package/dist/zod-util.js +99 -11
  119. package/dist/zod-util.js.map +1 -1
  120. package/package.json +2 -2
@@ -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,2 @@
1
+ export declare const take: <T>(iterable: AsyncIterable<T>, count: number) => AsyncGenerator<Awaited<T>, void, unknown>;
2
+ //# 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,IAAI,GAAoB,CAAC,EAAE,UAAU,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,8CAShF,CAAA"}
@@ -0,0 +1,14 @@
1
+ // src/generators.ts
2
+ var take = async function* (iterable, count) {
3
+ let i = 0;
4
+ for await (const item of iterable) {
5
+ if (i++ >= count) {
6
+ break;
7
+ }
8
+ yield item;
9
+ }
10
+ };
11
+ export {
12
+ take
13
+ };
14
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generators.ts"],"sourcesContent":["export const take = async function* <T>(iterable: AsyncIterable<T>, count: number) {\n let i = 0\n\n for await (const item of iterable) {\n if (i++ >= count) {\n break\n }\n yield item\n }\n}\n"],"mappings":";AAAO,IAAM,OAAO,iBAAoB,UAA4B,OAAe;AACjF,MAAI,IAAI;AAER,mBAAiB,QAAQ,UAAU;AACjC,QAAI,OAAO,OAAO;AAChB;AAAA,IACF;AACA,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
@@ -21,5 +21,7 @@ export declare const roundHalfEven: (value: number, scale: number) => number;
21
21
  export declare const random: (min: number, max: number) => number;
22
22
  export declare const greatestCommonFactor: (first: number, second: number) => number;
23
23
  export declare const sum: (...numbers: Array<number>) => number;
24
+ export declare const sumAll: (numbers: Array<number>) => number;
24
25
  export declare const subtract: (...numbers: Array<number>) => number;
26
+ export declare const subtractAll: (numbers: Array<number>) => number;
25
27
  //# 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,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
@@ -112,9 +112,15 @@ var greatestCommonFactor = (first, second) => {
112
112
  return second === 0 ? first : greatestCommonFactor(second, first % second);
113
113
  };
114
114
  var sum = (...numbers) => {
115
+ return sumAll(numbers);
116
+ };
117
+ var sumAll = (numbers) => {
115
118
  return numbers.reduce((first, second) => first + second, 0);
116
119
  };
117
120
  var subtract = (...numbers) => {
121
+ return subtractAll(numbers);
122
+ };
123
+ var subtractAll = (numbers) => {
118
124
  if (numbers.length === 0) {
119
125
  return 0;
120
126
  }
@@ -133,6 +139,8 @@ export {
133
139
  roundNearest,
134
140
  roundUp,
135
141
  subtract,
136
- sum
142
+ subtractAll,
143
+ sum,
144
+ sumAll
137
145
  };
138
146
  //# 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 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"}
@@ -0,0 +1,120 @@
1
+ // src/net/content-type.ts
2
+ import * as Results from "@bessemer/cornerstone/result";
3
+ import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
4
+ import { createNamespace } from "@bessemer/cornerstone/resource-key";
5
+ import * as MimeTypes from "@bessemer/cornerstone/mime-type";
6
+ import * as Strings from "@bessemer/cornerstone/string";
7
+ import * as Objects from "@bessemer/cornerstone/object";
8
+ var Namespace = createNamespace("content-type");
9
+ function from(value) {
10
+ if (Objects.isNil(value)) {
11
+ return value;
12
+ }
13
+ if (Strings.isString(value)) {
14
+ return ErrorEvents.unpackResult(parseString2(value));
15
+ }
16
+ return value;
17
+ }
18
+ function toLiteral(likeValue) {
19
+ if (Objects.isNil(likeValue)) {
20
+ return likeValue;
21
+ }
22
+ const value = from(likeValue);
23
+ if (Objects.isEmpty(value.parameters)) {
24
+ return value.mimeType;
25
+ }
26
+ const params = Object.entries(value.parameters).map(([key, val]) => {
27
+ const needsQuoting = /[ ()<>@,;:\\/[\]?=]/.test(val) || Strings.isEmpty(val);
28
+ const quotedValue = needsQuoting ? `"${val}"` : val;
29
+ return `${key}=${quotedValue}`;
30
+ });
31
+ return `${value.mimeType};${params.join(";")}`;
32
+ }
33
+ var TokenKeyRegex = /^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/;
34
+ var parseString2 = (value) => {
35
+ const tokens = value.split(";");
36
+ const mimeTypeString = tokens[0];
37
+ const mimeType = MimeTypes.parseString(mimeTypeString);
38
+ if (Results.isFailure(mimeType)) {
39
+ return mimeType;
40
+ }
41
+ if (tokens.length === 1) {
42
+ return Results.success({ mimeType, parameters: {} });
43
+ }
44
+ const parameters = {};
45
+ for (const token of tokens.slice(1)) {
46
+ const keyPart = Strings.splitFirst(token, "=");
47
+ if (Objects.isNil(keyPart.selection)) {
48
+ return Results.failure(
49
+ ErrorEvents.invalidValue(value, {
50
+ namespace: Namespace,
51
+ message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`
52
+ })
53
+ );
54
+ }
55
+ const tokenKey = keyPart.selection.trim();
56
+ if (!TokenKeyRegex.test(tokenKey)) {
57
+ return Results.failure(
58
+ ErrorEvents.invalidValue(value, {
59
+ namespace: Namespace,
60
+ message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`
61
+ })
62
+ );
63
+ }
64
+ let tokenValue = keyPart.rest.trim();
65
+ if (Strings.isEmpty(tokenValue)) {
66
+ return Results.failure(
67
+ ErrorEvents.invalidValue(value, {
68
+ namespace: Namespace,
69
+ message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: value cant be blank.`
70
+ })
71
+ );
72
+ }
73
+ if (tokenValue.startsWith('"')) {
74
+ if (!tokenValue.endsWith('"')) {
75
+ return Results.failure(
76
+ ErrorEvents.invalidValue(value, {
77
+ namespace: Namespace,
78
+ message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: quoted value must end with a quote.`
79
+ })
80
+ );
81
+ }
82
+ const innerValue = tokenValue.slice(1, -1);
83
+ for (let i = 0; i < innerValue.length; i++) {
84
+ if (innerValue[i] === '"' && (i === 0 || innerValue[i - 1] !== "\\")) {
85
+ return Results.failure(
86
+ ErrorEvents.invalidValue(value, {
87
+ namespace: Namespace,
88
+ message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unescaped quote found inside quoted value.`
89
+ })
90
+ );
91
+ }
92
+ }
93
+ tokenValue = Strings.removeStart(Strings.removeEnd(tokenValue, '"'), '"').replaceAll('\\"', '"');
94
+ } else if (tokenValue.includes('"')) {
95
+ return Results.failure(
96
+ ErrorEvents.invalidValue(value, {
97
+ namespace: Namespace,
98
+ message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unquoted value cannot contain quotes.`
99
+ })
100
+ );
101
+ }
102
+ if (Objects.isPresent(parameters[tokenKey])) {
103
+ return Results.failure(
104
+ ErrorEvents.invalidValue(value, {
105
+ namespace: Namespace,
106
+ message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: duplicate parameter key found.`
107
+ })
108
+ );
109
+ }
110
+ parameters[tokenKey] = tokenValue;
111
+ }
112
+ return Results.success({ mimeType, parameters });
113
+ };
114
+ export {
115
+ Namespace,
116
+ from,
117
+ parseString2 as parseString,
118
+ toLiteral
119
+ };
120
+ //# sourceMappingURL=content-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/net/content-type.ts"],"sourcesContent":["import * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { Dictionary, NominalType } from '@bessemer/cornerstone/types'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport { MimeLiteral } from '@bessemer/cornerstone/mime-type'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport const Namespace = createNamespace('content-type')\nexport type ContentType = { mimeType: MimeLiteral; parameters: Dictionary<string> }\nexport type ContentTypeLiteral = NominalType<string, typeof Namespace>\n\nexport type ContentTypeLike = ContentType | ContentTypeLiteral | MimeLiteral\n\nexport function from(value: ContentTypeLike | string): ContentType\nexport function from(value: ContentTypeLike | string | null): ContentType | null\nexport function from(value: ContentTypeLike | string | undefined): ContentType | undefined\nexport function from(value: ContentTypeLike | string | null | undefined): ContentType | null | undefined\nexport function from(value: ContentTypeLike | string | null | undefined): ContentType | null | undefined {\n if (Objects.isNil(value)) {\n return value\n }\n\n if (Strings.isString(value)) {\n return ErrorEvents.unpackResult(parseString(value))\n }\n\n return value\n}\n\nexport function toLiteral(likeValue: ContentTypeLike): ContentTypeLiteral\nexport function toLiteral(likeValue: ContentTypeLike | null): ContentTypeLiteral | null\nexport function toLiteral(likeValue: ContentTypeLike | undefined): ContentTypeLiteral | undefined\nexport function toLiteral(likeValue: ContentTypeLike | null | undefined): ContentTypeLiteral | null | undefined\nexport function toLiteral(likeValue: ContentTypeLike | null | undefined): ContentTypeLiteral | null | undefined {\n if (Objects.isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n\n if (Objects.isEmpty(value.parameters)) {\n return value.mimeType as ContentTypeLiteral\n }\n\n const params = Object.entries(value.parameters).map(([key, val]) => {\n // Quote the value if it contains special characters or spaces\n const needsQuoting = /[ ()<>@,;:\\\\/[\\]?=]/.test(val) || Strings.isEmpty(val)\n const quotedValue = needsQuoting ? `\"${val}\"` : val\n return `${key}=${quotedValue}`\n })\n\n return `${value.mimeType};${params.join(';')}` as ContentTypeLiteral\n}\n\n// RFC 2045 token: 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>\n// tspecials: ()<>@,;:\\\"/[]?=\nconst TokenKeyRegex = /^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]+$/\n\n// JOHN some of the error messages here should be looked at\nexport const parseString = (value: string): Result<ContentType, ErrorEvent> => {\n const tokens = value.split(';')\n const mimeTypeString = tokens[0]!\n const mimeType = MimeTypes.parseString(mimeTypeString)\n\n if (Results.isFailure(mimeType)) {\n return mimeType\n }\n\n if (tokens.length === 1) {\n return Results.success({ mimeType, parameters: {} })\n }\n\n const parameters: Dictionary<string> = {}\n\n for (const token of tokens.slice(1)) {\n const keyPart = Strings.splitFirst(token, '=')\n\n if (Objects.isNil(keyPart.selection)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`,\n })\n )\n }\n\n const tokenKey = keyPart.selection.trim()\n if (!TokenKeyRegex.test(tokenKey)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`,\n })\n )\n }\n\n let tokenValue = keyPart.rest.trim()\n if (Strings.isEmpty(tokenValue)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: value cant be blank.`,\n })\n )\n }\n\n // Validate token value\n if (tokenValue.startsWith('\"')) {\n // Quoted value: must end with quote and have properly escaped internal quotes\n if (!tokenValue.endsWith('\"')) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: quoted value must end with a quote.`,\n })\n )\n }\n\n // Check for unescaped quotes inside\n const innerValue = tokenValue.slice(1, -1)\n for (let i = 0; i < innerValue.length; i++) {\n if (innerValue[i] === '\"' && (i === 0 || innerValue[i - 1] !== '\\\\')) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unescaped quote found inside quoted value.`,\n })\n )\n }\n }\n\n tokenValue = Strings.removeStart(Strings.removeEnd(tokenValue, '\"'), '\"').replaceAll('\\\\\"', '\"')\n } else if (tokenValue.includes('\"')) {\n // Unquoted value: cannot contain quotes at all\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unquoted value cannot contain quotes.`,\n })\n )\n }\n\n if (Objects.isPresent(parameters[tokenKey])) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: duplicate parameter key found.`,\n })\n )\n }\n\n parameters[tokenKey] = tokenValue\n }\n\n return Results.success({ mimeType, parameters })\n}\n"],"mappings":"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","names":["parseString"]}