@bessemer/cornerstone 0.5.114 → 0.5.116

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 (247) hide show
  1. package/dist/array.d.ts.map +1 -1
  2. package/dist/array.js +28 -28
  3. package/dist/array.js.map +1 -1
  4. package/dist/aspect-ratio.d.ts +3 -3
  5. package/dist/aspect-ratio.d.ts.map +1 -1
  6. package/dist/aspect-ratio.js +13 -12
  7. package/dist/aspect-ratio.js.map +1 -1
  8. package/dist/assertion.d.ts.map +1 -1
  9. package/dist/assertion.js +5 -5
  10. package/dist/assertion.js.map +1 -1
  11. package/dist/async-value.js +2 -2
  12. package/dist/async-value.js.map +1 -1
  13. package/dist/async.d.ts.map +1 -1
  14. package/dist/async.js +2 -2
  15. package/dist/async.js.map +1 -1
  16. package/dist/cache.d.ts.map +1 -1
  17. package/dist/cache.js +11 -12
  18. package/dist/cache.js.map +1 -1
  19. package/dist/combinable.js +5 -5
  20. package/dist/combinable.js.map +1 -1
  21. package/dist/comparator.js +8 -8
  22. package/dist/comparator.js.map +1 -1
  23. package/dist/data-size.d.ts +2 -1
  24. package/dist/data-size.d.ts.map +1 -1
  25. package/dist/data-size.js +3 -3
  26. package/dist/data-size.js.map +1 -1
  27. package/dist/either.js +5 -5
  28. package/dist/either.js.map +1 -1
  29. package/dist/equalitor.d.ts.map +1 -1
  30. package/dist/equalitor.js +2 -2
  31. package/dist/equalitor.js.map +1 -1
  32. package/dist/error/error-cause.d.ts.map +1 -1
  33. package/dist/error/error-cause.js +14 -14
  34. package/dist/error/error-cause.js.map +1 -1
  35. package/dist/error/error-code.js +2 -2
  36. package/dist/error/error-code.js.map +1 -1
  37. package/dist/error/error-event.d.ts +3 -2
  38. package/dist/error/error-event.d.ts.map +1 -1
  39. package/dist/error/error-event.js +28 -28
  40. package/dist/error/error-event.js.map +1 -1
  41. package/dist/error/error-type.d.ts +2 -1
  42. package/dist/error/error-type.d.ts.map +1 -1
  43. package/dist/error/error-type.js +2 -2
  44. package/dist/error/error-type.js.map +1 -1
  45. package/dist/error/error.js +5 -5
  46. package/dist/error/error.js.map +1 -1
  47. package/dist/expression/array-expression.js +3 -3
  48. package/dist/expression/array-expression.js.map +1 -1
  49. package/dist/expression/core-expression.d.ts.map +1 -1
  50. package/dist/expression/core-expression.js +19 -19
  51. package/dist/expression/core-expression.js.map +1 -1
  52. package/dist/expression/expression-evaluator.js +2 -2
  53. package/dist/expression/expression-evaluator.js.map +1 -1
  54. package/dist/expression/expression-mapper.js +4 -4
  55. package/dist/expression/expression-mapper.js.map +1 -1
  56. package/dist/expression/internal.js +3 -3
  57. package/dist/expression/internal.js.map +1 -1
  58. package/dist/expression/numeric-expression.js +13 -13
  59. package/dist/expression/numeric-expression.js.map +1 -1
  60. package/dist/expression/string-expression.js +4 -4
  61. package/dist/expression/string-expression.js.map +1 -1
  62. package/dist/glob.d.ts +3 -3
  63. package/dist/glob.d.ts.map +1 -1
  64. package/dist/glob.js +11 -12
  65. package/dist/glob.js.map +1 -1
  66. package/dist/global-variable.d.ts.map +1 -1
  67. package/dist/global-variable.js +5 -5
  68. package/dist/global-variable.js.map +1 -1
  69. package/dist/hex-code.d.ts +3 -3
  70. package/dist/hex-code.d.ts.map +1 -1
  71. package/dist/hex-code.js +11 -10
  72. package/dist/hex-code.js.map +1 -1
  73. package/dist/index.d.ts +10 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +4 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/intl/country-code.d.ts +3 -3
  78. package/dist/intl/country-code.d.ts.map +1 -1
  79. package/dist/intl/country-code.js +9 -10
  80. package/dist/intl/country-code.js.map +1 -1
  81. package/dist/intl/country-subdivision-code.d.ts +3 -3
  82. package/dist/intl/country-subdivision-code.d.ts.map +1 -1
  83. package/dist/intl/country-subdivision-code.js +13 -11
  84. package/dist/intl/country-subdivision-code.js.map +1 -1
  85. package/dist/intl/currency-code.d.ts +3 -3
  86. package/dist/intl/currency-code.d.ts.map +1 -1
  87. package/dist/intl/currency-code.js +9 -10
  88. package/dist/intl/currency-code.js.map +1 -1
  89. package/dist/intl/language-code.d.ts +3 -3
  90. package/dist/intl/language-code.d.ts.map +1 -1
  91. package/dist/intl/language-code.js +9 -10
  92. package/dist/intl/language-code.js.map +1 -1
  93. package/dist/intl/locale.d.ts +3 -3
  94. package/dist/intl/locale.d.ts.map +1 -1
  95. package/dist/intl/locale.js +18 -19
  96. package/dist/intl/locale.js.map +1 -1
  97. package/dist/json.d.ts.map +1 -1
  98. package/dist/json.js +2 -2
  99. package/dist/json.js.map +1 -1
  100. package/dist/logger.d.ts.map +1 -1
  101. package/dist/logger.js +12 -12
  102. package/dist/logger.js.map +1 -1
  103. package/dist/map.js +8 -8
  104. package/dist/map.js.map +1 -1
  105. package/dist/mime-type.d.ts +3 -3
  106. package/dist/mime-type.d.ts.map +1 -1
  107. package/dist/mime-type.js +9 -10
  108. package/dist/mime-type.js.map +1 -1
  109. package/dist/misc.js +4 -4
  110. package/dist/misc.js.map +1 -1
  111. package/dist/monetary-amount.d.ts +3 -2
  112. package/dist/monetary-amount.d.ts.map +1 -1
  113. package/dist/monetary-amount.js +16 -16
  114. package/dist/monetary-amount.js.map +1 -1
  115. package/dist/net/content-type.d.ts +2 -1
  116. package/dist/net/content-type.d.ts.map +1 -1
  117. package/dist/net/content-type.js +2 -2
  118. package/dist/net/content-type.js.map +1 -1
  119. package/dist/net/domain-name.d.ts +3 -3
  120. package/dist/net/domain-name.d.ts.map +1 -1
  121. package/dist/net/domain-name.js +10 -11
  122. package/dist/net/domain-name.js.map +1 -1
  123. package/dist/net/http-method.d.ts.map +1 -1
  124. package/dist/net/http-method.js +9 -9
  125. package/dist/net/http-method.js.map +1 -1
  126. package/dist/net/ipv4-address.d.ts +3 -3
  127. package/dist/net/ipv4-address.d.ts.map +1 -1
  128. package/dist/net/ipv4-address.js +10 -11
  129. package/dist/net/ipv4-address.js.map +1 -1
  130. package/dist/net/ipv6-address.d.ts +3 -3
  131. package/dist/net/ipv6-address.d.ts.map +1 -1
  132. package/dist/net/ipv6-address.js +10 -11
  133. package/dist/net/ipv6-address.js.map +1 -1
  134. package/dist/net/uri-host-name.d.ts +3 -3
  135. package/dist/net/uri-host-name.d.ts.map +1 -1
  136. package/dist/net/uri-host-name.js +15 -16
  137. package/dist/net/uri-host-name.js.map +1 -1
  138. package/dist/net/uri.d.ts +1 -2
  139. package/dist/net/uri.d.ts.map +1 -1
  140. package/dist/net/uri.js +5 -3
  141. package/dist/net/uri.js.map +1 -1
  142. package/dist/net/url.d.ts.map +1 -1
  143. package/dist/net/url.js +6 -7
  144. package/dist/net/url.js.map +1 -1
  145. package/dist/object/object-path.d.ts.map +1 -1
  146. package/dist/object/object-path.js +23 -28
  147. package/dist/object/object-path.js.map +1 -1
  148. package/dist/object/type-path.js +19 -19
  149. package/dist/object/type-path.js.map +1 -1
  150. package/dist/patch.js +4 -4
  151. package/dist/patch.js.map +1 -1
  152. package/dist/promise.js +2 -2
  153. package/dist/promise.js.map +1 -1
  154. package/dist/property.d.ts.map +1 -1
  155. package/dist/property.js +7 -7
  156. package/dist/property.js.map +1 -1
  157. package/dist/proxy.js +2 -2
  158. package/dist/proxy.js.map +1 -1
  159. package/dist/range.js +2 -2
  160. package/dist/range.js.map +1 -1
  161. package/dist/reference.d.ts +2 -1
  162. package/dist/reference.d.ts.map +1 -1
  163. package/dist/reference.js +13 -13
  164. package/dist/reference.js.map +1 -1
  165. package/dist/resource-key.js +2 -2
  166. package/dist/resource-key.js.map +1 -1
  167. package/dist/result.js +5 -5
  168. package/dist/result.js.map +1 -1
  169. package/dist/retry.d.ts.map +1 -1
  170. package/dist/retry.js +12 -12
  171. package/dist/retry.js.map +1 -1
  172. package/dist/rich-text.js +2 -2
  173. package/dist/rich-text.js.map +1 -1
  174. package/dist/signature.d.ts.map +1 -1
  175. package/dist/signature.js +9 -9
  176. package/dist/signature.js.map +1 -1
  177. package/dist/sql/sql-expression-parser.js +2 -2
  178. package/dist/sql/sql-expression-parser.js.map +1 -1
  179. package/dist/store.d.ts.map +1 -1
  180. package/dist/store.js +9 -9
  181. package/dist/store.js.map +1 -1
  182. package/dist/string.js +4 -4
  183. package/dist/string.js.map +1 -1
  184. package/dist/tag.d.ts.map +1 -1
  185. package/dist/tag.js +10 -10
  186. package/dist/tag.js.map +1 -1
  187. package/dist/temporal/clock.d.ts +13 -13
  188. package/dist/temporal/clock.d.ts.map +1 -1
  189. package/dist/temporal/clock.js +10 -10
  190. package/dist/temporal/clock.js.map +1 -1
  191. package/dist/temporal/duration.d.ts +15 -9
  192. package/dist/temporal/duration.d.ts.map +1 -1
  193. package/dist/temporal/duration.js +30 -31
  194. package/dist/temporal/duration.js.map +1 -1
  195. package/dist/temporal/instant.d.ts +18 -15
  196. package/dist/temporal/instant.d.ts.map +1 -1
  197. package/dist/temporal/instant.js +42 -43
  198. package/dist/temporal/instant.js.map +1 -1
  199. package/dist/temporal/plain-date-time.d.ts +16 -13
  200. package/dist/temporal/plain-date-time.d.ts.map +1 -1
  201. package/dist/temporal/plain-date-time.js +36 -38
  202. package/dist/temporal/plain-date-time.js.map +1 -1
  203. package/dist/temporal/plain-date.d.ts +16 -13
  204. package/dist/temporal/plain-date.d.ts.map +1 -1
  205. package/dist/temporal/plain-date.js +35 -37
  206. package/dist/temporal/plain-date.js.map +1 -1
  207. package/dist/temporal/plain-month-day.d.ts +37 -0
  208. package/dist/temporal/plain-month-day.d.ts.map +1 -0
  209. package/dist/temporal/plain-month-day.js +84 -0
  210. package/dist/temporal/plain-month-day.js.map +1 -0
  211. package/dist/temporal/plain-time.d.ts +19 -17
  212. package/dist/temporal/plain-time.d.ts.map +1 -1
  213. package/dist/temporal/plain-time.js +43 -42
  214. package/dist/temporal/plain-time.js.map +1 -1
  215. package/dist/temporal/plain-year-month.d.ts +57 -0
  216. package/dist/temporal/plain-year-month.d.ts.map +1 -0
  217. package/dist/temporal/plain-year-month.js +109 -0
  218. package/dist/temporal/plain-year-month.js.map +1 -0
  219. package/dist/temporal/time-zone-id.d.ts +5 -4
  220. package/dist/temporal/time-zone-id.d.ts.map +1 -1
  221. package/dist/temporal/time-zone-id.js +11 -11
  222. package/dist/temporal/time-zone-id.js.map +1 -1
  223. package/dist/temporal/time-zone-offset.d.ts +12 -11
  224. package/dist/temporal/time-zone-offset.d.ts.map +1 -1
  225. package/dist/temporal/time-zone-offset.js +42 -50
  226. package/dist/temporal/time-zone-offset.js.map +1 -1
  227. package/dist/temporal/zoned-date-time.d.ts +16 -13
  228. package/dist/temporal/zoned-date-time.d.ts.map +1 -1
  229. package/dist/temporal/zoned-date-time.js +35 -36
  230. package/dist/temporal/zoned-date-time.js.map +1 -1
  231. package/dist/uuid/ulid.d.ts +3 -3
  232. package/dist/uuid/ulid.d.ts.map +1 -1
  233. package/dist/uuid/ulid.js +9 -10
  234. package/dist/uuid/ulid.js.map +1 -1
  235. package/dist/uuid/uuid-v4.d.ts +3 -3
  236. package/dist/uuid/uuid-v4.d.ts.map +1 -1
  237. package/dist/uuid/uuid-v4.js +13 -14
  238. package/dist/uuid/uuid-v4.js.map +1 -1
  239. package/dist/uuid/uuid-v7.d.ts +1 -2
  240. package/dist/uuid/uuid-v7.d.ts.map +1 -1
  241. package/dist/uuid/uuid-v7.js +1 -2
  242. package/dist/uuid/uuid-v7.js.map +1 -1
  243. package/dist/zod-util.d.ts +4 -21
  244. package/dist/zod-util.d.ts.map +1 -1
  245. package/dist/zod-util.js +21 -11
  246. package/dist/zod-util.js.map +1 -1
  247. package/package.json +2 -2
@@ -1,5 +1,6 @@
1
1
  import { Comparator } from '@bessemer/cornerstone/comparator';
2
2
  import { TaggedType } from '@bessemer/cornerstone/types';
3
+ import * as Equalitors from '@bessemer/cornerstone/equalitor';
3
4
  export type ReferenceId<T extends string> = TaggedType<string, ['ReferenceId', T]>;
4
5
  export type Reference<T extends string> = {
5
6
  id: ReferenceId<T>;
@@ -17,5 +18,5 @@ export declare const isReference: (element: unknown) => element is Reference<str
17
18
  export declare const getReference: <T extends Reference<string>>(reference: ReferencableType<T>) => T;
18
19
  export declare const equals: <T extends string>(first: Reference<T>, second: Reference<T>) => boolean;
19
20
  export declare const comparator: <T extends string>() => Comparator<Reference<T>>;
20
- export declare const equalitor: () => import("@bessemer/cornerstone/equalitor").Equalitor<Reference<string>>;
21
+ export declare const equalitor: () => Equalitors.Equalitor<Reference<string>>;
21
22
  //# sourceMappingURL=reference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAMxD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;AAElF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAEpE,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAA;CACb;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,KAAG,SAAS,CAAC,OAAO,IAAI,CAUnI,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAO1F,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,SAAS,CAAC,MAAM,CAOzE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,gBAAgB,CAAC,CAAC,CAAC,KAAG,CAO1F,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC,KAAG,OAEpF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,OAAK,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAEtE,CAAA;AAED,eAAO,MAAM,SAAS,8EAAqC,CAAA"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAG7D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;AAElF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAEpE,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAA;CACb;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,KAAG,SAAS,CAAC,OAAO,IAAI,CAUnI,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAO1F,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,SAAS,CAAC,MAAM,CAOzE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,gBAAgB,CAAC,CAAC,CAAC,KAAG,CAO1F,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC,KAAG,OAEpF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,OAAK,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAEtE,CAAA;AAED,eAAO,MAAM,SAAS,+CAAgD,CAAA"}
package/dist/reference.js CHANGED
@@ -1,35 +1,35 @@
1
1
  // src/reference.ts
2
- import { compareBy, natural } from "@bessemer/cornerstone/comparator";
3
- import { isString } from "@bessemer/cornerstone/string";
4
- import { isObject, isPresent, isUndefined } from "@bessemer/cornerstone/object";
5
- import { fromComparator } from "@bessemer/cornerstone/equalitor";
2
+ import * as Comparators from "@bessemer/cornerstone/comparator";
3
+ import * as Strings from "@bessemer/cornerstone/string";
4
+ import * as Objects from "@bessemer/cornerstone/object";
5
+ import * as Equalitors from "@bessemer/cornerstone/equalitor";
6
6
  var reference = (reference2, type, note) => {
7
- if (!isString(reference2)) {
7
+ if (!Strings.isString(reference2)) {
8
8
  return reference2;
9
9
  }
10
10
  return {
11
11
  id: reference2,
12
12
  type,
13
- ...isPresent(note) ? { note } : {}
13
+ ...Objects.isPresent(note) ? { note } : {}
14
14
  };
15
15
  };
16
16
  var isReferencable = (element) => {
17
- if (!isObject(element)) {
17
+ if (!Objects.isObject(element)) {
18
18
  return false;
19
19
  }
20
20
  const referencable = element;
21
- return !isUndefined(referencable.reference);
21
+ return !Objects.isUndefined(referencable.reference);
22
22
  };
23
23
  var isReference = (element) => {
24
- if (!isObject(element)) {
24
+ if (!Objects.isObject(element)) {
25
25
  return false;
26
26
  }
27
27
  const referencable = element;
28
- return !isUndefined(referencable.id) && !isUndefined(referencable.type) && !isUndefined(referencable.note);
28
+ return !Objects.isUndefined(referencable.id) && !Objects.isUndefined(referencable.type) && !Objects.isUndefined(referencable.note);
29
29
  };
30
30
  var getReference = (reference2) => {
31
31
  const referencable = reference2;
32
- if (isPresent(referencable.reference)) {
32
+ if (Objects.isPresent(referencable.reference)) {
33
33
  return referencable.reference;
34
34
  } else {
35
35
  return reference2;
@@ -39,9 +39,9 @@ var equals = (first, second) => {
39
39
  return first.id === second.id;
40
40
  };
41
41
  var comparator = () => {
42
- return compareBy((it) => it.id, natural());
42
+ return Comparators.compareBy((it) => it.id, Comparators.natural());
43
43
  };
44
- var equalitor = () => fromComparator(comparator());
44
+ var equalitor = () => Equalitors.fromComparator(comparator());
45
45
  export {
46
46
  comparator,
47
47
  equalitor,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/reference.ts"],"sourcesContent":["import { Comparator, compareBy, natural } from '@bessemer/cornerstone/comparator'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isObject, isPresent, isUndefined } from '@bessemer/cornerstone/object'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\n\n// JOHN i, unfortunately, think the reference system is kinda dumb\nexport type ReferenceId<T extends string> = TaggedType<string, ['ReferenceId', T]>\n\nexport type Reference<T extends string> = {\n id: ReferenceId<T>\n type: T\n note?: string\n}\n\nexport type ReferenceType<T extends Reference<string>> = T | T['id']\n\nexport interface Referencable<T extends Reference<string>> {\n reference: T\n}\n\nexport type ReferencableType<T extends Reference<string>> = T | Referencable<T>\n\nexport const reference = <T extends string>(reference: Reference<T> | ReferenceId<T>, type: T, note?: string): Reference<typeof type> => {\n if (!isString(reference)) {\n return reference\n }\n\n return {\n id: reference,\n type,\n ...(isPresent(note) ? { note: note } : {}),\n }\n}\n\nexport const isReferencable = (element: unknown): element is Referencable<Reference<string>> => {\n if (!isObject(element)) {\n return false\n }\n\n const referencable = element as unknown as Referencable<Reference<string>>\n return !isUndefined(referencable.reference)\n}\n\nexport const isReference = (element: unknown): element is Reference<string> => {\n if (!isObject(element)) {\n return false\n }\n\n const referencable = element as Reference<string>\n return !isUndefined(referencable.id) && !isUndefined(referencable.type) && !isUndefined(referencable.note)\n}\n\nexport const getReference = <T extends Reference<string>>(reference: ReferencableType<T>): T => {\n const referencable = reference as Referencable<T>\n if (isPresent(referencable.reference)) {\n return referencable.reference\n } else {\n return reference as T\n }\n}\n\nexport const equals = <T extends string>(first: Reference<T>, second: Reference<T>): boolean => {\n return first.id === second.id\n}\n\nexport const comparator = <T extends string>(): Comparator<Reference<T>> => {\n return compareBy((it) => it.id, natural())\n}\n\nexport const equalitor = () => fromComparator(comparator())\n"],"mappings":";AAAA,SAAqB,WAAW,eAAe;AAE/C,SAAS,gBAAgB;AACzB,SAAS,UAAU,WAAW,mBAAmB;AACjD,SAAS,sBAAsB;AAmBxB,IAAM,YAAY,CAAmBA,YAA0C,MAAS,SAA0C;AACvI,MAAI,CAAC,SAASA,UAAS,GAAG;AACxB,WAAOA;AAAA,EACT;AAEA,SAAO;AAAA,IACL,IAAIA;AAAA,IACJ;AAAA,IACA,GAAI,UAAU,IAAI,IAAI,EAAE,KAAW,IAAI,CAAC;AAAA,EAC1C;AACF;AAEO,IAAM,iBAAiB,CAAC,YAAiE;AAC9F,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAC,YAAY,aAAa,SAAS;AAC5C;AAEO,IAAM,cAAc,CAAC,YAAmD;AAC7E,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAC,YAAY,aAAa,EAAE,KAAK,CAAC,YAAY,aAAa,IAAI,KAAK,CAAC,YAAY,aAAa,IAAI;AAC3G;AAEO,IAAM,eAAe,CAA8BA,eAAsC;AAC9F,QAAM,eAAeA;AACrB,MAAI,UAAU,aAAa,SAAS,GAAG;AACrC,WAAO,aAAa;AAAA,EACtB,OAAO;AACL,WAAOA;AAAA,EACT;AACF;AAEO,IAAM,SAAS,CAAmB,OAAqB,WAAkC;AAC9F,SAAO,MAAM,OAAO,OAAO;AAC7B;AAEO,IAAM,aAAa,MAAkD;AAC1E,SAAO,UAAU,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC;AAC3C;AAEO,IAAM,YAAY,MAAM,eAAe,WAAW,CAAC;","names":["reference"]}
1
+ {"version":3,"sources":["../src/reference.ts"],"sourcesContent":["import * as Comparators from '@bessemer/cornerstone/comparator'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Objects from '@bessemer/cornerstone/object'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\n\n// JOHN i, unfortunately, think the reference system is kinda dumb\nexport type ReferenceId<T extends string> = TaggedType<string, ['ReferenceId', T]>\n\nexport type Reference<T extends string> = {\n id: ReferenceId<T>\n type: T\n note?: string\n}\n\nexport type ReferenceType<T extends Reference<string>> = T | T['id']\n\nexport interface Referencable<T extends Reference<string>> {\n reference: T\n}\n\nexport type ReferencableType<T extends Reference<string>> = T | Referencable<T>\n\nexport const reference = <T extends string>(reference: Reference<T> | ReferenceId<T>, type: T, note?: string): Reference<typeof type> => {\n if (!Strings.isString(reference)) {\n return reference\n }\n\n return {\n id: reference,\n type,\n ...(Objects.isPresent(note) ? { note: note } : {}),\n }\n}\n\nexport const isReferencable = (element: unknown): element is Referencable<Reference<string>> => {\n if (!Objects.isObject(element)) {\n return false\n }\n\n const referencable = element as unknown as Referencable<Reference<string>>\n return !Objects.isUndefined(referencable.reference)\n}\n\nexport const isReference = (element: unknown): element is Reference<string> => {\n if (!Objects.isObject(element)) {\n return false\n }\n\n const referencable = element as Reference<string>\n return !Objects.isUndefined(referencable.id) && !Objects.isUndefined(referencable.type) && !Objects.isUndefined(referencable.note)\n}\n\nexport const getReference = <T extends Reference<string>>(reference: ReferencableType<T>): T => {\n const referencable = reference as Referencable<T>\n if (Objects.isPresent(referencable.reference)) {\n return referencable.reference\n } else {\n return reference as T\n }\n}\n\nexport const equals = <T extends string>(first: Reference<T>, second: Reference<T>): boolean => {\n return first.id === second.id\n}\n\nexport const comparator = <T extends string>(): Comparator<Reference<T>> => {\n return Comparators.compareBy((it) => it.id, Comparators.natural())\n}\n\nexport const equalitor = () => Equalitors.fromComparator(comparator())\n"],"mappings":";AAAA,YAAY,iBAAiB;AAG7B,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,gBAAgB;AAmBrB,IAAM,YAAY,CAAmBA,YAA0C,MAAS,SAA0C;AACvI,MAAI,CAAS,iBAASA,UAAS,GAAG;AAChC,WAAOA;AAAA,EACT;AAEA,SAAO;AAAA,IACL,IAAIA;AAAA,IACJ;AAAA,IACA,GAAY,kBAAU,IAAI,IAAI,EAAE,KAAW,IAAI,CAAC;AAAA,EAClD;AACF;AAEO,IAAM,iBAAiB,CAAC,YAAiE;AAC9F,MAAI,CAAS,iBAAS,OAAO,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAS,oBAAY,aAAa,SAAS;AACpD;AAEO,IAAM,cAAc,CAAC,YAAmD;AAC7E,MAAI,CAAS,iBAAS,OAAO,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,SAAO,CAAS,oBAAY,aAAa,EAAE,KAAK,CAAS,oBAAY,aAAa,IAAI,KAAK,CAAS,oBAAY,aAAa,IAAI;AACnI;AAEO,IAAM,eAAe,CAA8BA,eAAsC;AAC9F,QAAM,eAAeA;AACrB,MAAY,kBAAU,aAAa,SAAS,GAAG;AAC7C,WAAO,aAAa;AAAA,EACtB,OAAO;AACL,WAAOA;AAAA,EACT;AACF;AAEO,IAAM,SAAS,CAAmB,OAAqB,WAAkC;AAC9F,SAAO,MAAM,OAAO,OAAO;AAC7B;AAEO,IAAM,aAAa,MAAkD;AAC1E,SAAmB,sBAAU,CAAC,OAAO,GAAG,IAAgB,oBAAQ,CAAC;AACnE;AAEO,IAAM,YAAY,MAAiB,0BAAe,WAAW,CAAC;","names":["reference"]}
@@ -1,6 +1,6 @@
1
1
  // src/resource-key.ts
2
2
  import Zod from "zod";
3
- import { isPresent } from "@bessemer/cornerstone/object";
3
+ import * as Objects from "@bessemer/cornerstone/object";
4
4
  var ResourceNamespaceSeparator = "/";
5
5
  var emptyNamespace = () => {
6
6
  return void 0;
@@ -15,7 +15,7 @@ var createNamespace = (value) => {
15
15
  return value;
16
16
  };
17
17
  var createCompositeNamespace = (...names) => {
18
- return names.filter(isPresent).join(ResourceNamespaceSeparator);
18
+ return names.filter(Objects.isPresent).join(ResourceNamespaceSeparator);
19
19
  };
20
20
  var ResourceNamespaceSchema = Zod.string().optional().transform(createNamespace);
21
21
  var namespaceKey = (key, namespace) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/resource-key.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport { isPresent } from '@bessemer/cornerstone/object'\n\nexport type ResourceKey = string\nconst ResourceNamespaceSeparator = '/'\n\nexport type NamespaceKey = string | undefined\nexport type ResourceNamespace<NamespaceType extends NamespaceKey = NamespaceKey> = NominalType<NamespaceType, 'ResourceNamespace'> | undefined\n\nexport type NamespacedKey<KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey> = NominalType<\n string,\n ['NamespacedKey', KeyType, NamespaceType]\n>\n\nexport const emptyNamespace = (): ResourceNamespace<undefined> => {\n return undefined\n}\n\nexport const createNamespace = <T extends NamespaceKey>(value: T): ResourceNamespace<T> => {\n if (value === undefined) {\n return value as any as ResourceNamespace<T>\n }\n\n if (!/^[^\\s\\/][^\\s\\/]*(?:\\/[^\\s\\/][^\\s\\/]*)*$/.test(value)) {\n throw new Error(`Unsupported Namespace format: ${value}`)\n }\n\n return value as ResourceNamespace<T>\n}\n\nexport const createCompositeNamespace = (...names: Array<ResourceNamespace>): ResourceNamespace => {\n return names.filter(isPresent).join(ResourceNamespaceSeparator) as ResourceNamespace\n}\n\nexport const ResourceNamespaceSchema = Zod.string().optional().transform(createNamespace)\n\nexport const namespaceKey = <KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey>(\n key: KeyType,\n namespace: ResourceNamespace<NamespaceType>\n): NamespacedKey<KeyType, NamespaceType> => {\n if (namespace === undefined) {\n return encodeKey(key) as NamespacedKey<KeyType, NamespaceType>\n }\n\n return `${namespace}${ResourceNamespaceSeparator}${encodeKey(key)}` as NamespacedKey<KeyType, NamespaceType>\n}\n\nexport const namespaceKeys = <KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey>(\n keys: Array<KeyType>,\n namespace: ResourceNamespace<NamespaceType>\n): Array<NamespacedKey<KeyType, NamespaceType>> => {\n return keys.map((it) => namespaceKey(it, namespace))\n}\n\nexport const destructureKey = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n key: NamespacedKey<KeyType, NamespaceType>\n): [KeyType, ResourceNamespace<NamespaceType>] => {\n const lastIndex = key.lastIndexOf(ResourceNamespaceSeparator)\n\n if (lastIndex !== -1) {\n const namespacePart = key.substring(0, lastIndex)\n const keyPart = key.substring(lastIndex + 1)\n\n return [decodeKey(keyPart) as KeyType, namespacePart as ResourceNamespace<NamespaceType>]\n } else {\n const keyPart = key\n return [decodeKey(keyPart) as KeyType, undefined as ResourceNamespace<NamespaceType>]\n }\n}\n\nexport const getKey = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>\n): KeyType => {\n const [key, _] = destructureKey(namespacedKey)\n return key\n}\n\nexport const getNamespace = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>\n): ResourceNamespace<NamespaceType> => {\n const [_, namespace] = destructureKey(namespacedKey)\n return namespace\n}\n\nexport const extendNamespace = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>,\n additionalNamespace: ResourceNamespace\n): NamespacedKey<KeyType> => {\n const [type, namespace] = destructureKey(namespacedKey)\n const extendedNamespace = createCompositeNamespace(additionalNamespace, namespace)\n return namespaceKey(type, extendedNamespace)\n}\n\nexport const encodeKey = (key: ResourceKey): ResourceKey => {\n return key.replace(/%/g, '%25').replace(/\\//g, '%2F')\n}\n\nexport const decodeKey = (encodedKey: ResourceKey): ResourceKey => {\n return encodedKey.replace(/%2F/g, '/').replace(/%25/g, '%')\n}\n"],"mappings":";AACA,OAAO,SAAS;AAChB,SAAS,iBAAiB;AAG1B,IAAM,6BAA6B;AAU5B,IAAM,iBAAiB,MAAoC;AAChE,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAyB,UAAmC;AACzF,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,0CAA0C,KAAK,KAAK,GAAG;AAC1D,UAAM,IAAI,MAAM,iCAAiC,KAAK,EAAE;AAAA,EAC1D;AAEA,SAAO;AACT;AAEO,IAAM,2BAA2B,IAAI,UAAuD;AACjG,SAAO,MAAM,OAAO,SAAS,EAAE,KAAK,0BAA0B;AAChE;AAEO,IAAM,0BAA0B,IAAI,OAAO,EAAE,SAAS,EAAE,UAAU,eAAe;AAEjF,IAAM,eAAe,CAC1B,KACA,cAC0C;AAC1C,MAAI,cAAc,QAAW;AAC3B,WAAO,UAAU,GAAG;AAAA,EACtB;AAEA,SAAO,GAAG,SAAS,GAAG,0BAA0B,GAAG,UAAU,GAAG,CAAC;AACnE;AAEO,IAAM,gBAAgB,CAC3B,MACA,cACiD;AACjD,SAAO,KAAK,IAAI,CAAC,OAAO,aAAa,IAAI,SAAS,CAAC;AACrD;AAEO,IAAM,iBAAiB,CAC5B,QACgD;AAChD,QAAM,YAAY,IAAI,YAAY,0BAA0B;AAE5D,MAAI,cAAc,IAAI;AACpB,UAAM,gBAAgB,IAAI,UAAU,GAAG,SAAS;AAChD,UAAM,UAAU,IAAI,UAAU,YAAY,CAAC;AAE3C,WAAO,CAAC,UAAU,OAAO,GAAc,aAAiD;AAAA,EAC1F,OAAO;AACL,UAAM,UAAU;AAChB,WAAO,CAAC,UAAU,OAAO,GAAc,MAA6C;AAAA,EACtF;AACF;AAEO,IAAM,SAAS,CACpB,kBACY;AACZ,QAAM,CAAC,KAAK,CAAC,IAAI,eAAe,aAAa;AAC7C,SAAO;AACT;AAEO,IAAM,eAAe,CAC1B,kBACqC;AACrC,QAAM,CAAC,GAAG,SAAS,IAAI,eAAe,aAAa;AACnD,SAAO;AACT;AAEO,IAAM,kBAAkB,CAC7B,eACA,wBAC2B;AAC3B,QAAM,CAAC,MAAM,SAAS,IAAI,eAAe,aAAa;AACtD,QAAM,oBAAoB,yBAAyB,qBAAqB,SAAS;AACjF,SAAO,aAAa,MAAM,iBAAiB;AAC7C;AAEO,IAAM,YAAY,CAAC,QAAkC;AAC1D,SAAO,IAAI,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,KAAK;AACtD;AAEO,IAAM,YAAY,CAAC,eAAyC;AACjE,SAAO,WAAW,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../src/resource-key.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport type ResourceKey = string\nconst ResourceNamespaceSeparator = '/'\n\nexport type NamespaceKey = string | undefined\nexport type ResourceNamespace<NamespaceType extends NamespaceKey = NamespaceKey> = NominalType<NamespaceType, 'ResourceNamespace'> | undefined\n\nexport type NamespacedKey<KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey> = NominalType<\n string,\n ['NamespacedKey', KeyType, NamespaceType]\n>\n\nexport const emptyNamespace = (): ResourceNamespace<undefined> => {\n return undefined\n}\n\nexport const createNamespace = <T extends NamespaceKey>(value: T): ResourceNamespace<T> => {\n if (value === undefined) {\n return value as any as ResourceNamespace<T>\n }\n\n if (!/^[^\\s\\/][^\\s\\/]*(?:\\/[^\\s\\/][^\\s\\/]*)*$/.test(value)) {\n throw new Error(`Unsupported Namespace format: ${value}`)\n }\n\n return value as ResourceNamespace<T>\n}\n\nexport const createCompositeNamespace = (...names: Array<ResourceNamespace>): ResourceNamespace => {\n return names.filter(Objects.isPresent).join(ResourceNamespaceSeparator) as ResourceNamespace\n}\n\nexport const ResourceNamespaceSchema = Zod.string().optional().transform(createNamespace)\n\nexport const namespaceKey = <KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey>(\n key: KeyType,\n namespace: ResourceNamespace<NamespaceType>\n): NamespacedKey<KeyType, NamespaceType> => {\n if (namespace === undefined) {\n return encodeKey(key) as NamespacedKey<KeyType, NamespaceType>\n }\n\n return `${namespace}${ResourceNamespaceSeparator}${encodeKey(key)}` as NamespacedKey<KeyType, NamespaceType>\n}\n\nexport const namespaceKeys = <KeyType extends ResourceKey = ResourceKey, NamespaceType extends NamespaceKey = NamespaceKey>(\n keys: Array<KeyType>,\n namespace: ResourceNamespace<NamespaceType>\n): Array<NamespacedKey<KeyType, NamespaceType>> => {\n return keys.map((it) => namespaceKey(it, namespace))\n}\n\nexport const destructureKey = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n key: NamespacedKey<KeyType, NamespaceType>\n): [KeyType, ResourceNamespace<NamespaceType>] => {\n const lastIndex = key.lastIndexOf(ResourceNamespaceSeparator)\n\n if (lastIndex !== -1) {\n const namespacePart = key.substring(0, lastIndex)\n const keyPart = key.substring(lastIndex + 1)\n\n return [decodeKey(keyPart) as KeyType, namespacePart as ResourceNamespace<NamespaceType>]\n } else {\n const keyPart = key\n return [decodeKey(keyPart) as KeyType, undefined as ResourceNamespace<NamespaceType>]\n }\n}\n\nexport const getKey = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>\n): KeyType => {\n const [key, _] = destructureKey(namespacedKey)\n return key\n}\n\nexport const getNamespace = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>\n): ResourceNamespace<NamespaceType> => {\n const [_, namespace] = destructureKey(namespacedKey)\n return namespace\n}\n\nexport const extendNamespace = <KeyType extends ResourceKey, NamespaceType extends NamespaceKey>(\n namespacedKey: NamespacedKey<KeyType, NamespaceType>,\n additionalNamespace: ResourceNamespace\n): NamespacedKey<KeyType> => {\n const [type, namespace] = destructureKey(namespacedKey)\n const extendedNamespace = createCompositeNamespace(additionalNamespace, namespace)\n return namespaceKey(type, extendedNamespace)\n}\n\nexport const encodeKey = (key: ResourceKey): ResourceKey => {\n return key.replace(/%/g, '%25').replace(/\\//g, '%2F')\n}\n\nexport const decodeKey = (encodedKey: ResourceKey): ResourceKey => {\n return encodedKey.replace(/%2F/g, '/').replace(/%25/g, '%')\n}\n"],"mappings":";AACA,OAAO,SAAS;AAChB,YAAY,aAAa;AAGzB,IAAM,6BAA6B;AAU5B,IAAM,iBAAiB,MAAoC;AAChE,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAyB,UAAmC;AACzF,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,0CAA0C,KAAK,KAAK,GAAG;AAC1D,UAAM,IAAI,MAAM,iCAAiC,KAAK,EAAE;AAAA,EAC1D;AAEA,SAAO;AACT;AAEO,IAAM,2BAA2B,IAAI,UAAuD;AACjG,SAAO,MAAM,OAAe,iBAAS,EAAE,KAAK,0BAA0B;AACxE;AAEO,IAAM,0BAA0B,IAAI,OAAO,EAAE,SAAS,EAAE,UAAU,eAAe;AAEjF,IAAM,eAAe,CAC1B,KACA,cAC0C;AAC1C,MAAI,cAAc,QAAW;AAC3B,WAAO,UAAU,GAAG;AAAA,EACtB;AAEA,SAAO,GAAG,SAAS,GAAG,0BAA0B,GAAG,UAAU,GAAG,CAAC;AACnE;AAEO,IAAM,gBAAgB,CAC3B,MACA,cACiD;AACjD,SAAO,KAAK,IAAI,CAAC,OAAO,aAAa,IAAI,SAAS,CAAC;AACrD;AAEO,IAAM,iBAAiB,CAC5B,QACgD;AAChD,QAAM,YAAY,IAAI,YAAY,0BAA0B;AAE5D,MAAI,cAAc,IAAI;AACpB,UAAM,gBAAgB,IAAI,UAAU,GAAG,SAAS;AAChD,UAAM,UAAU,IAAI,UAAU,YAAY,CAAC;AAE3C,WAAO,CAAC,UAAU,OAAO,GAAc,aAAiD;AAAA,EAC1F,OAAO;AACL,UAAM,UAAU;AAChB,WAAO,CAAC,UAAU,OAAO,GAAc,MAA6C;AAAA,EACtF;AACF;AAEO,IAAM,SAAS,CACpB,kBACY;AACZ,QAAM,CAAC,KAAK,CAAC,IAAI,eAAe,aAAa;AAC7C,SAAO;AACT;AAEO,IAAM,eAAe,CAC1B,kBACqC;AACrC,QAAM,CAAC,GAAG,SAAS,IAAI,eAAe,aAAa;AACnD,SAAO;AACT;AAEO,IAAM,kBAAkB,CAC7B,eACA,wBAC2B;AAC3B,QAAM,CAAC,MAAM,SAAS,IAAI,eAAe,aAAa;AACtD,QAAM,oBAAoB,yBAAyB,qBAAqB,SAAS;AACjF,SAAO,aAAa,MAAM,iBAAiB;AAC7C;AAEO,IAAM,YAAY,CAAC,QAAkC;AAC1D,SAAO,IAAI,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,KAAK;AACtD;AAEO,IAAM,YAAY,CAAC,eAAyC;AACjE,SAAO,WAAW,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAC5D;","names":[]}
package/dist/result.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/result.ts
2
- import { isPromise } from "@bessemer/cornerstone/promise";
2
+ import * as Promises from "@bessemer/cornerstone/promise";
3
3
  import * as Eithers from "@bessemer/cornerstone/either";
4
- import { assert } from "@bessemer/cornerstone/assertion";
4
+ import * as Assertions from "@bessemer/cornerstone/assertion";
5
5
  var success = (value) => Eithers.left(value);
6
6
  function failure(failure2) {
7
7
  return Eithers.right(failure2);
@@ -18,7 +18,7 @@ function assertSuccess(value) {
18
18
  }
19
19
  }
20
20
  function assertFailure(value) {
21
- assert(isFailure(value));
21
+ Assertions.assert(isFailure(value));
22
22
  }
23
23
  function map2(value, mapper) {
24
24
  return Eithers.map(value, mapper);
@@ -38,7 +38,7 @@ var split2 = (array) => {
38
38
  function tryValue(resolver) {
39
39
  try {
40
40
  let result = resolver();
41
- if (isPromise(result)) {
41
+ if (Promises.isPromise(result)) {
42
42
  return result.then((it) => success(it)).catch((it) => failure(it));
43
43
  } else {
44
44
  return success(result);
@@ -50,7 +50,7 @@ function tryValue(resolver) {
50
50
  function tryResult(resolver) {
51
51
  try {
52
52
  let result = resolver();
53
- if (isPromise(result)) {
53
+ if (Promises.isPromise(result)) {
54
54
  return result.catch((it) => failure(it));
55
55
  } else {
56
56
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { isPromise } from '@bessemer/cornerstone/promise'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport { Left, Right } from '@bessemer/cornerstone/either'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { Promisable } from 'type-fest'\n\nexport type Success<SuccessType> = Left<SuccessType>\nexport type Failure<FailureType = unknown> = Right<FailureType>\nexport type Result<SuccessType, FailureType = unknown> = Success<SuccessType> | Failure<FailureType>\nexport type AsyncResult<SuccessType, FailureType = unknown> = Promise<Result<SuccessType, FailureType>>\n\nexport const success = <SuccessType>(value: SuccessType): Success<SuccessType> => Eithers.left(value)\n\nexport function failure(): Failure<never>\nexport function failure<N>(failure: N): Failure<N>\nexport function failure(failure?: unknown): Failure {\n return Eithers.right(failure)\n}\n\nexport const isSuccess = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Success<SuccessType> => {\n return Eithers.isLeft(value)\n}\nexport const isFailure = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Failure<FailureType> => {\n return Eithers.isRight(value)\n}\n\nexport function assertSuccess<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Success<SuccessType> {\n if (isFailure(value)) {\n throw value.value\n }\n}\nexport function assertFailure<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Failure<FailureType> {\n assert(isFailure(value))\n}\n\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<MappedType>\n): Promise<Result<MappedType, FailureType>>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Result<MappedType, FailureType>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Promisable<Result<MappedType, FailureType>> {\n return Eithers.map(value, mapper)\n}\n\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<MappedSuccessType, FailureType | MappedFailureType>>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Result<MappedSuccessType, FailureType | MappedFailureType>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<MappedSuccessType, FailureType | MappedFailureType>> {\n return Eithers.flatMap(value, mapper)\n}\n\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<MappedType>\n): Promise<Result<SuccessType, MappedType>>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Result<SuccessType, MappedType>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Promisable<Result<SuccessType, MappedType>> {\n return Eithers.mapRight(value, mapper)\n}\n\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<SuccessType | MappedSuccessType, MappedFailureType>>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Result<SuccessType | MappedSuccessType, MappedFailureType>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<SuccessType | MappedSuccessType, MappedFailureType>> {\n return Eithers.flatMapRight(value, mapper)\n}\n\nexport const split = <SuccessType, FailureType>(array: Array<Result<SuccessType, FailureType>>): [Array<SuccessType>, Array<FailureType>] => {\n return Eithers.split(array)\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\n// const generator = buildGenerator((it) => success(it) as Result<any, any>)\n//\n// export function gen<TGen extends () => Generator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never\n// export function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>\n// export function gen<TGen extends () => Generator<Result<any, any>> | AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R>\n// ? Result<R, L>\n// : TGen extends () => AsyncGenerator<Result<any, infer L>, infer R>\n// ? Promise<Result<R, L>>\n// : never {\n// return generator(generatorFn)\n// }\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,YAAY,aAAa;AAEzB,SAAS,cAAc;AAQhB,IAAM,UAAU,CAAc,UAAqD,aAAK,KAAK;AAI7F,SAAS,QAAQA,UAA4B;AAClD,SAAe,cAAMA,QAAO;AAC9B;AAEO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,eAAO,KAAK;AAC7B;AACO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,gBAAQ,KAAK;AAC9B;AAEO,SAAS,cAAwC,OAAgF;AACtI,MAAI,UAAU,KAAK,GAAG;AACpB,UAAM,MAAM;AAAA,EACd;AACF;AACO,SAAS,cAAwC,OAAgF;AACtI,SAAO,UAAU,KAAK,CAAC;AACzB;AAUO,SAASC,KACd,OACA,QAC6C;AAC7C,SAAe,YAAI,OAAO,MAAM;AAClC;AAUO,SAASC,SACd,OACA,QACwE;AACxE,SAAe,gBAAQ,OAAO,MAAM;AACtC;AAUO,SAAS,WACd,OACA,QAC6C;AAC7C,SAAe,iBAAS,OAAO,MAAM;AACvC;AAUO,SAAS,eACd,OACA,QACwE;AACxE,SAAe,qBAAa,OAAO,MAAM;AAC3C;AAEO,IAAMC,SAAQ,CAA2B,UAA6F;AAC3I,SAAe,cAAM,KAAK;AAC5B;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;","names":["failure","map","flatMap","split"]}
1
+ {"version":3,"sources":["../src/result.ts"],"sourcesContent":["import * as Promises from '@bessemer/cornerstone/promise'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport { Left, Right } from '@bessemer/cornerstone/either'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport { Promisable } from 'type-fest'\n\nexport type Success<SuccessType> = Left<SuccessType>\nexport type Failure<FailureType = unknown> = Right<FailureType>\nexport type Result<SuccessType, FailureType = unknown> = Success<SuccessType> | Failure<FailureType>\nexport type AsyncResult<SuccessType, FailureType = unknown> = Promise<Result<SuccessType, FailureType>>\n\nexport const success = <SuccessType>(value: SuccessType): Success<SuccessType> => Eithers.left(value)\n\nexport function failure(): Failure<never>\nexport function failure<N>(failure: N): Failure<N>\nexport function failure(failure?: unknown): Failure {\n return Eithers.right(failure)\n}\n\nexport const isSuccess = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Success<SuccessType> => {\n return Eithers.isLeft(value)\n}\nexport const isFailure = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Failure<FailureType> => {\n return Eithers.isRight(value)\n}\n\nexport function assertSuccess<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Success<SuccessType> {\n if (isFailure(value)) {\n throw value.value\n }\n}\nexport function assertFailure<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Failure<FailureType> {\n Assertions.assert(isFailure(value))\n}\n\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<MappedType>\n): Promise<Result<MappedType, FailureType>>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Result<MappedType, FailureType>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Promisable<Result<MappedType, FailureType>> {\n return Eithers.map(value, mapper)\n}\n\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<MappedSuccessType, FailureType | MappedFailureType>>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Result<MappedSuccessType, FailureType | MappedFailureType>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<MappedSuccessType, FailureType | MappedFailureType>> {\n return Eithers.flatMap(value, mapper)\n}\n\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<MappedType>\n): Promise<Result<SuccessType, MappedType>>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Result<SuccessType, MappedType>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Promisable<Result<SuccessType, MappedType>> {\n return Eithers.mapRight(value, mapper)\n}\n\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<SuccessType | MappedSuccessType, MappedFailureType>>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Result<SuccessType | MappedSuccessType, MappedFailureType>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<SuccessType | MappedSuccessType, MappedFailureType>> {\n return Eithers.flatMapRight(value, mapper)\n}\n\nexport const split = <SuccessType, FailureType>(array: Array<Result<SuccessType, FailureType>>): [Array<SuccessType>, Array<FailureType>] => {\n return Eithers.split(array)\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (Promises.isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (Promises.isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\n// const generator = buildGenerator((it) => success(it) as Result<any, any>)\n//\n// export function gen<TGen extends () => Generator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never\n// export function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>\n// export function gen<TGen extends () => Generator<Result<any, any>> | AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R>\n// ? Result<R, L>\n// : TGen extends () => AsyncGenerator<Result<any, infer L>, infer R>\n// ? Promise<Result<R, L>>\n// : never {\n// return generator(generatorFn)\n// }\n"],"mappings":";AAAA,YAAY,cAAc;AAC1B,YAAY,aAAa;AAEzB,YAAY,gBAAgB;AAQrB,IAAM,UAAU,CAAc,UAAqD,aAAK,KAAK;AAI7F,SAAS,QAAQA,UAA4B;AAClD,SAAe,cAAMA,QAAO;AAC9B;AAEO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,eAAO,KAAK;AAC7B;AACO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,gBAAQ,KAAK;AAC9B;AAEO,SAAS,cAAwC,OAAgF;AACtI,MAAI,UAAU,KAAK,GAAG;AACpB,UAAM,MAAM;AAAA,EACd;AACF;AACO,SAAS,cAAwC,OAAgF;AACtI,EAAW,kBAAO,UAAU,KAAK,CAAC;AACpC;AAUO,SAASC,KACd,OACA,QAC6C;AAC7C,SAAe,YAAI,OAAO,MAAM;AAClC;AAUO,SAASC,SACd,OACA,QACwE;AACxE,SAAe,gBAAQ,OAAO,MAAM;AACtC;AAUO,SAAS,WACd,OACA,QAC6C;AAC7C,SAAe,iBAAS,OAAO,MAAM;AACvC;AAUO,SAAS,eACd,OACA,QACwE;AACxE,SAAe,qBAAa,OAAO,MAAM;AAC3C;AAEO,IAAMC,SAAQ,CAA2B,UAA6F;AAC3I,SAAe,cAAM,KAAK;AAC5B;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAa,mBAAU,MAAM,GAAG;AAC9B,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAa,mBAAU,MAAM,GAAG;AAC9B,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;","names":["failure","map","flatMap","split"]}
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0C,MAAM,yCAAyC,CAAA;AAE1G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,iBAAiB,YAAY,KAAG,UAQ1D,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAa7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,YAAY,KAAG,WAAW,CAAC,CAAC,CAiBpH,CAAA"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,iBAAiB,YAAY,KAAG,UAQ1D,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAa7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,YAAY,KAAG,WAAW,CAAC,CAAC,CAiBpH,CAAA"}
package/dist/retry.js CHANGED
@@ -1,21 +1,21 @@
1
1
  // src/retry.ts
2
- import { fromMilliseconds, toMilliseconds, Zero } from "@bessemer/cornerstone/temporal/duration";
2
+ import * as Durations from "@bessemer/cornerstone/temporal/duration";
3
3
  import * as Results from "@bessemer/cornerstone/result";
4
- import { deepMerge, isUndefined } from "@bessemer/cornerstone/object";
5
- import { sleep } from "@bessemer/cornerstone/async";
6
- import { random } from "@bessemer/cornerstone/math";
7
- import { assert } from "@bessemer/cornerstone/assertion";
4
+ import * as Objects from "@bessemer/cornerstone/object";
5
+ import * as Async from "@bessemer/cornerstone/async";
6
+ import * as Maths from "@bessemer/cornerstone/math";
7
+ import * as Assertions from "@bessemer/cornerstone/assertion";
8
8
  var None = {
9
9
  attempts: 0,
10
- delay: Zero
10
+ delay: Durations.Zero
11
11
  };
12
12
  var DefaultRetryProps = {
13
13
  attempts: 3,
14
- delay: fromMilliseconds(500)
14
+ delay: Durations.fromMilliseconds(500)
15
15
  };
16
16
  var initialize = (initialOptions) => {
17
- const props = deepMerge(DefaultRetryProps, initialOptions);
18
- assert(props.attempts >= 0, () => "usingRetry attempts must be >= 0");
17
+ const props = Objects.deepMerge(DefaultRetryProps, initialOptions);
18
+ Assertions.assert(props.attempts >= 0, () => "usingRetry attempts must be >= 0");
19
19
  return {
20
20
  attempt: 0,
21
21
  props
@@ -25,9 +25,9 @@ var retry = async (state) => {
25
25
  if (state.attempt >= state.props.attempts - 1) {
26
26
  return void 0;
27
27
  }
28
- const delayMs = toMilliseconds(state.props.delay);
28
+ const delayMs = Durations.toMilliseconds(state.props.delay);
29
29
  const maxJitterMs = delayMs * 0.3;
30
- await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)));
30
+ await Async.sleep(Durations.fromMilliseconds(delayMs + Maths.random(0, maxJitterMs)));
31
31
  return {
32
32
  props: state.props,
33
33
  attempt: state.attempt + 1
@@ -43,7 +43,7 @@ var usingRetry = async (runnable, initialOptions) => {
43
43
  return result;
44
44
  }
45
45
  retryState = await retry(retryState);
46
- } while (!isUndefined(retryState));
46
+ } while (!Objects.isUndefined(retryState));
47
47
  return previousResult;
48
48
  };
49
49
  export {
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration, fromMilliseconds, toMilliseconds, Zero } from '@bessemer/cornerstone/temporal/duration'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { AsyncResult, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\nimport { deepMerge, isUndefined } from '@bessemer/cornerstone/object'\nimport { sleep } from '@bessemer/cornerstone/async'\nimport { random } from '@bessemer/cornerstone/math'\nimport { assert } from '@bessemer/cornerstone/assertion'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = deepMerge(DefaultRetryProps, initialOptions)\n assert(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = Results.failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (Results.isSuccess(result)) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AAAA,SAAmB,kBAAkB,gBAAgB,YAAY;AACjE,YAAY,aAAa;AAGzB,SAAS,WAAW,mBAAmB;AACvC,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,cAAc;AAShB,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,iBAAiB,GAAG;AAC7B;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,UAAU,mBAAmB,cAAc;AACzD,SAAO,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAEpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,MAAM,MAAM,KAAK;AAChD,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,iBAAiB,UAAU,OAAO,GAAG,WAAW,CAAC,CAAC;AAE9D,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAAoC,gBAAQ;AAEhD,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAY,kBAAU,MAAM,GAAG;AAC7B,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,YAAY,UAAU;AAEhC,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import * as Durations from '@bessemer/cornerstone/temporal/duration'\nimport { Duration } from '@bessemer/cornerstone/temporal/duration'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { AsyncResult, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\nimport * as Objects from '@bessemer/cornerstone/object'\nimport * as Async from '@bessemer/cornerstone/async'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Durations.Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: Durations.fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = Objects.deepMerge(DefaultRetryProps, initialOptions)\n Assertions.assert(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = Durations.toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await Async.sleep(Durations.fromMilliseconds(delayMs + Maths.random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = Results.failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (Results.isSuccess(result)) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!Objects.isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AAAA,YAAY,eAAe;AAE3B,YAAY,aAAa;AAGzB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,gBAAgB;AASrB,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAiB;AACnB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAiB,2BAAiB,GAAG;AACvC;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAgB,kBAAU,mBAAmB,cAAc;AACjE,EAAW,kBAAO,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAE/E,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAoB,yBAAe,MAAM,MAAM,KAAK;AAC1D,QAAM,cAAc,UAAU;AAC9B,QAAY,YAAgB,2BAAiB,UAAgB,aAAO,GAAG,WAAW,CAAC,CAAC;AAEpF,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAAoC,gBAAQ;AAEhD,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAY,kBAAU,MAAM,GAAG;AAC7B,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAS,oBAAY,UAAU;AAExC,SAAO;AACT;","names":[]}
package/dist/rich-text.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/rich-text.ts
2
- import { isObject } from "@bessemer/cornerstone/object";
2
+ import * as Objects from "@bessemer/cornerstone/object";
3
3
  var isJson = (text) => {
4
- return isObject(text);
4
+ return Objects.isObject(text);
5
5
  };
6
6
  export {
7
7
  isJson
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/rich-text.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\n\n// These are to match TipTap types, but without us having to depend on the TipTap library\nexport type RichTextJson = {\n type?: string\n attrs?: Record<string, any>\n content?: RichTextJson[]\n marks?: {\n type: string\n attrs?: Record<string, any>\n [key: string]: any\n }[]\n text?: string\n [key: string]: any\n}\n\nexport type RichTextString = TaggedType<string, 'RichTextString'>\n\nexport type RichText = RichTextString | RichTextJson\n\nexport const isJson = (text: RichText): text is RichTextJson => {\n return isObject(text)\n}\n"],"mappings":";AACA,SAAS,gBAAgB;AAoBlB,IAAM,SAAS,CAAC,SAAyC;AAC9D,SAAO,SAAS,IAAI;AACtB;","names":[]}
1
+ {"version":3,"sources":["../src/rich-text.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport * as Objects from '@bessemer/cornerstone/object'\n\n// These are to match TipTap types, but without us having to depend on the TipTap library\nexport type RichTextJson = {\n type?: string\n attrs?: Record<string, any>\n content?: RichTextJson[]\n marks?: {\n type: string\n attrs?: Record<string, any>\n [key: string]: any\n }[]\n text?: string\n [key: string]: any\n}\n\nexport type RichTextString = TaggedType<string, 'RichTextString'>\n\nexport type RichText = RichTextString | RichTextJson\n\nexport const isJson = (text: RichText): text is RichTextJson => {\n return Objects.isObject(text)\n}\n"],"mappings":";AACA,YAAY,aAAa;AAoBlB,IAAM,SAAS,CAAC,SAAyC;AAC9D,SAAe,iBAAS,IAAI;AAC9B;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AASvD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,SA6BtC,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,SAAS,CAEhE,CAAA"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AASvD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,eAAO,MAAM,IAAI,GAAI,OAAO,QAAQ,KAAG,SA6BtC,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,SAAS,CAEhE,CAAA"}
package/dist/signature.js CHANGED
@@ -1,24 +1,24 @@
1
1
  // src/signature.ts
2
- import { isReferencable } from "@bessemer/cornerstone/reference";
3
- import { isObject } from "@bessemer/cornerstone/object";
4
- import { isDate } from "@bessemer/cornerstone/temporal/date";
5
- import { _isInstant, instantToLiteral } from "@bessemer/cornerstone/temporal/chrono";
2
+ import * as References from "@bessemer/cornerstone/reference";
3
+ import * as Objects from "@bessemer/cornerstone/object";
4
+ import * as Dates from "@bessemer/cornerstone/temporal/date";
5
+ import * as Chrono from "@bessemer/cornerstone/temporal/chrono";
6
6
  var sign = (value) => {
7
7
  if (value === null) {
8
8
  return null;
9
9
  }
10
- if (isObject(value)) {
11
- if (isReferencable(value)) {
10
+ if (Objects.isObject(value)) {
11
+ if (References.isReferencable(value)) {
12
12
  return value.reference.id;
13
13
  } else {
14
14
  return value.id;
15
15
  }
16
16
  }
17
- if (isDate(value)) {
17
+ if (Dates.isDate(value)) {
18
18
  return value.getTime();
19
19
  }
20
- if (_isInstant(value)) {
21
- return instantToLiteral(value);
20
+ if (Chrono._isInstant(value)) {
21
+ return Chrono.instantToLiteral(value);
22
22
  }
23
23
  if (value === true) {
24
24
  return 1;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { isReferencable, Reference } from '@bessemer/cornerstone/reference'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { isDate } from '@bessemer/cornerstone/temporal/date'\nimport { _isInstant, instantToLiteral } from '@bessemer/cornerstone/temporal/chrono'\n\n// JOHN it is probably worth revisiting this in the context of using this library code more frequently... in particular\n// all of these things have similar properties (\"primitives\", sortable, value equality, etc.) but this method of implementation\n// forces them all to be converted to strings or numbers first which is an expensive operation.\n\nexport type Signable = BasicType | null | { id: string } | { reference: Reference<string> }\nexport type Signature = string | number | null\n\nexport const sign = (value: Signable): Signature => {\n if (value === null) {\n return null\n }\n\n if (isObject(value)) {\n if (isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\n }\n\n if (isDate(value)) {\n return value.getTime()\n }\n\n if (_isInstant(value)) {\n return instantToLiteral(value)\n }\n\n if (value === true) {\n return 1\n }\n if (value === false) {\n return 0\n }\n\n return value\n}\n\nexport const signAll = (values: Array<Signable>): Array<Signature> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,SAAS,sBAAiC;AAE1C,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,YAAY,wBAAwB;AAStC,IAAM,OAAO,CAAC,UAA+B;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,eAAe,KAAK,GAAG;AACzB,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,GAAG;AACjB,WAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,MAAI,WAAW,KAAK,GAAG;AACrB,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAA8C;AACpE,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
1
+ {"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import * as References from '@bessemer/cornerstone/reference'\nimport { Reference } from '@bessemer/cornerstone/reference'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport * as Objects from '@bessemer/cornerstone/object'\nimport * as Dates from '@bessemer/cornerstone/temporal/date'\nimport * as Chrono from '@bessemer/cornerstone/temporal/chrono'\n\n// JOHN it is probably worth revisiting this in the context of using this library code more frequently... in particular\n// all of these things have similar properties (\"primitives\", sortable, value equality, etc.) but this method of implementation\n// forces them all to be converted to strings or numbers first which is an expensive operation.\n\nexport type Signable = BasicType | null | { id: string } | { reference: Reference<string> }\nexport type Signature = string | number | null\n\nexport const sign = (value: Signable): Signature => {\n if (value === null) {\n return null\n }\n\n if (Objects.isObject(value)) {\n if (References.isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\n }\n\n if (Dates.isDate(value)) {\n return value.getTime()\n }\n\n if (Chrono._isInstant(value)) {\n return Chrono.instantToLiteral(value)\n }\n\n if (value === true) {\n return 1\n }\n if (value === false) {\n return 0\n }\n\n return value\n}\n\nexport const signAll = (values: Array<Signable>): Array<Signature> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,YAAY,gBAAgB;AAG5B,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,YAAY;AASjB,IAAM,OAAO,CAAC,UAA+B;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAY,iBAAS,KAAK,GAAG;AAC3B,QAAe,0BAAe,KAAK,GAAG;AACpC,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAU,aAAO,KAAK,GAAG;AACvB,WAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,MAAW,kBAAW,KAAK,GAAG;AAC5B,WAAc,wBAAiB,KAAK;AAAA,EACtC;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAA8C;AACpE,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
@@ -15,7 +15,7 @@ import {
15
15
  ValueExpression,
16
16
  VariableExpression
17
17
  } from "@bessemer/cornerstone/expression/core-expression";
18
- import { isType } from "@bessemer/cornerstone/expression/internal";
18
+ import * as ExpressionInternal from "@bessemer/cornerstone/expression/internal";
19
19
  var SqlExpressionParser = class extends ExpressionMapper {
20
20
  };
21
21
  var resolveContainsExpression = (expression, map, context, invert = false) => {
@@ -70,7 +70,7 @@ DefaultSqlExpressionParser.register(VariableExpression, (expression, _, context)
70
70
  return variableName ?? expression.name;
71
71
  });
72
72
  DefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {
73
- if (isType(expression.value, ContainsExpression)) {
73
+ if (ExpressionInternal.isType(expression.value, ContainsExpression)) {
74
74
  return resolveContainsExpression(expression.value, map, context, true);
75
75
  } else {
76
76
  return `(NOT ${map(expression.value)})`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Eithers, Entries, Objects, Results, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n getValue,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\nimport { Expression } from '@bessemer/cornerstone/expression'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nconst resolveContainsExpression = (\n // JOHN should be easier to define this type\n expression: ReturnType<typeof ContainsExpression.builder>,\n map: (expression: Expression<unknown>) => SqlFragment,\n context: SqlExpressionParserContext,\n invert = false\n) => {\n const collection = expression.collection\n\n const parsedValue = getValue(collection)\n if (Results.isFailure(parsedValue)) {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n const value = parsedValue as Array<BasicType | null>\n if (Arrays.isEmpty(value)) {\n return invert ? '(1 = 1)' : '(1 = 0)'\n }\n\n value.forEach((it) => {\n if (it !== null && !Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const [nonNullValues, nullValues] = Arrays.bisect(value, (it) => (it !== null ? Eithers.left(it) : Eithers.right(null)))\n const parameters = nonNullValues.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map((sql) => {\n const conditions = []\n\n if (!Arrays.isEmpty(parameters)) {\n conditions.push(\n `(${sql} ${invert ? 'NOT IN' : 'IN'} (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n }\n\n if (!Arrays.isEmpty(nullValues)) {\n conditions.push(`(${sql} ${invert ? 'IS NOT' : 'IS'} NULL)`)\n }\n\n return `(${conditions.join(' OR ')})`\n })\n .join(' AND ')\n\n return `(${containsExpression})`\n}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (value === null) {\n throw new Error(`SqlExpressionParser - Unable to resolve null ValueExpression as Sql`)\n }\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n return variableName ?? expression.name\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n return resolveContainsExpression(expression.value, map, context, true)\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest\n .map((it) => {\n const parsedValue = getValue(it)\n if (Results.isSuccess(parsedValue)) {\n if (parsedValue === null) {\n return `(${mappedFirst} IS NULL)`\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n })\n .join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, resolveContainsExpression)\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
1
+ {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Eithers, Entries, Objects, Results, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n getValue,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport * as ExpressionInternal from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\nimport { Expression } from '@bessemer/cornerstone/expression'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nconst resolveContainsExpression = (\n // JOHN should be easier to define this type\n expression: ReturnType<typeof ContainsExpression.builder>,\n map: (expression: Expression<unknown>) => SqlFragment,\n context: SqlExpressionParserContext,\n invert = false\n) => {\n const collection = expression.collection\n\n const parsedValue = getValue(collection)\n if (Results.isFailure(parsedValue)) {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n const value = parsedValue as Array<BasicType | null>\n if (Arrays.isEmpty(value)) {\n return invert ? '(1 = 1)' : '(1 = 0)'\n }\n\n value.forEach((it) => {\n if (it !== null && !Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const [nonNullValues, nullValues] = Arrays.bisect(value, (it) => (it !== null ? Eithers.left(it) : Eithers.right(null)))\n const parameters = nonNullValues.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map((sql) => {\n const conditions = []\n\n if (!Arrays.isEmpty(parameters)) {\n conditions.push(\n `(${sql} ${invert ? 'NOT IN' : 'IN'} (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n }\n\n if (!Arrays.isEmpty(nullValues)) {\n conditions.push(`(${sql} ${invert ? 'IS NOT' : 'IS'} NULL)`)\n }\n\n return `(${conditions.join(' OR ')})`\n })\n .join(' AND ')\n\n return `(${containsExpression})`\n}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (value === null) {\n throw new Error(`SqlExpressionParser - Unable to resolve null ValueExpression as Sql`)\n }\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n return variableName ?? expression.name\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (ExpressionInternal.isType(expression.value, ContainsExpression)) {\n return resolveContainsExpression(expression.value, map, context, true)\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest\n .map((it) => {\n const parsedValue = getValue(it)\n if (Results.isSuccess(parsedValue)) {\n if (parsedValue === null) {\n return `(${mappedFirst} IS NULL)`\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n })\n .join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, resolveContainsExpression)\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,21 +1,21 @@
1
1
  // src/store.ts
2
- import { of } from "@bessemer/cornerstone/entry";
3
- import { first } from "@bessemer/cornerstone/array";
4
- import { isNil, isPresent } from "@bessemer/cornerstone/object";
2
+ import * as Entries from "@bessemer/cornerstone/entry";
3
+ import * as Arrays from "@bessemer/cornerstone/array";
4
+ import * as Objects from "@bessemer/cornerstone/object";
5
5
  var AbstractRemoteKeyValueStore = class {
6
6
  writeValue = async (key, value) => {
7
- await this.writeValues([of(key, value)]);
7
+ await this.writeValues([Entries.of(key, value)]);
8
8
  };
9
9
  fetchValue = async (key) => {
10
- return first(await this.fetchValues([key]))?.[1];
10
+ return Arrays.first(await this.fetchValues([key]))?.[1];
11
11
  };
12
12
  };
13
13
  var AbstractLocalKeyValueStore = class extends AbstractRemoteKeyValueStore {
14
14
  setValue = (key, value) => {
15
- this.setValues([of(key, value)]);
15
+ this.setValues([Entries.of(key, value)]);
16
16
  };
17
17
  getValue = (key) => {
18
- return first(this.getValues([key]))?.[1];
18
+ return Arrays.first(this.getValues([key]))?.[1];
19
19
  };
20
20
  fetchValues = async (keys) => {
21
21
  return this.getValues(keys);
@@ -32,7 +32,7 @@ var fromMap = () => {
32
32
  };
33
33
  setValues = (entries) => {
34
34
  entries.forEach(([key, value]) => {
35
- if (isNil(value)) {
35
+ if (Objects.isNil(value)) {
36
36
  map.delete(key);
37
37
  } else {
38
38
  map.set(key, value);
@@ -40,7 +40,7 @@ var fromMap = () => {
40
40
  });
41
41
  };
42
42
  getValues = (keys) => {
43
- return keys.map((key) => of(key, map.get(key))).filter((it) => isPresent(it[1]));
43
+ return keys.map((key) => Entries.of(key, map.get(key))).filter((it) => Objects.isPresent(it[1]));
44
44
  };
45
45
  }();
46
46
  };
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { ResourceKey } from '@bessemer/cornerstone/resource-key'\nimport { of, RecordEntry } from '@bessemer/cornerstone/entry'\nimport { first } from '@bessemer/cornerstone/array'\nimport { isNil, isPresent } from '@bessemer/cornerstone/object'\n\nexport interface LocalStore<T> {\n setValue: (value: T | undefined) => void\n getValue: () => T | undefined\n}\n\nexport interface LocalKeyValueStore<T> {\n setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n setValue: (key: ResourceKey, value: T | undefined) => void\n\n getEntries: () => Array<RecordEntry<T>>\n getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n getValue: (key: ResourceKey) => T | undefined\n}\n\nexport interface RemoteStore<T> {\n writeValue: (value: T | undefined) => Promise<void>\n fetchValue: () => Promise<T | undefined>\n}\n\nexport interface RemoteKeyValueStore<T> {\n writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n writeValue: (key: ResourceKey, value: T | undefined) => Promise<void>\n\n fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n fetchValue: (key: ResourceKey) => Promise<T | undefined>\n}\n\nexport abstract class AbstractRemoteKeyValueStore<T> implements RemoteKeyValueStore<T> {\n abstract writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n\n writeValue = async (key: ResourceKey, value: T | undefined): Promise<void> => {\n await this.writeValues([of(key, value)])\n }\n\n abstract fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n\n fetchValue = async (key: ResourceKey): Promise<T | undefined> => {\n return first(await this.fetchValues([key]))?.[1]\n }\n}\n\nexport abstract class AbstractLocalKeyValueStore<T> extends AbstractRemoteKeyValueStore<T> implements LocalKeyValueStore<T> {\n abstract setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n\n setValue = (key: ResourceKey, value: T | undefined): void => {\n this.setValues([of(key, value)])\n }\n\n abstract getEntries: () => Array<RecordEntry<T>>\n abstract getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n\n getValue = (key: ResourceKey): T | undefined => {\n return first(this.getValues([key]))?.[1]\n }\n\n fetchValues = async (keys: Array<ResourceKey>): Promise<Array<RecordEntry<T>>> => {\n return this.getValues(keys)\n }\n\n writeValues = async (entries: Array<RecordEntry<T | undefined>>): Promise<void> => {\n this.setValues(entries)\n }\n}\n\nexport const fromMap = <T>(): LocalKeyValueStore<T> => {\n const map = new Map<string, T>()\n\n return new (class extends AbstractLocalKeyValueStore<T> {\n override getEntries = (): Array<RecordEntry<T>> => {\n return Array.from(map.entries())\n }\n\n override setValues = (entries: RecordEntry<T | undefined>[]): void => {\n entries.forEach(([key, value]) => {\n if (isNil(value)) {\n map.delete(key)\n } else {\n map.set(key, value)\n }\n })\n }\n\n override getValues = (keys: Array<ResourceKey>): Array<RecordEntry<T>> => {\n return keys.map((key) => of(key, map.get(key)!)).filter((it) => isPresent(it[1]))\n }\n })()\n}\n"],"mappings":";AACA,SAAS,UAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,OAAO,iBAAiB;AA6B1B,IAAe,8BAAf,MAAgF;AAAA,EAGrF,aAAa,OAAO,KAAkB,UAAwC;AAC5E,UAAM,KAAK,YAAY,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACzC;AAAA,EAIA,aAAa,OAAO,QAA6C;AAC/D,WAAO,MAAM,MAAM,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACjD;AACF;AAEO,IAAe,6BAAf,cAAqD,4BAAgE;AAAA,EAG1H,WAAW,CAAC,KAAkB,UAA+B;AAC3D,SAAK,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACjC;AAAA,EAKA,WAAW,CAAC,QAAoC;AAC9C,WAAO,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACzC;AAAA,EAEA,cAAc,OAAO,SAA6D;AAChF,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,cAAc,OAAO,YAA8D;AACjF,SAAK,UAAU,OAAO;AAAA,EACxB;AACF;AAEO,IAAM,UAAU,MAAgC;AACrD,QAAM,MAAM,oBAAI,IAAe;AAE/B,SAAO,IAAK,cAAc,2BAA8B;AAAA,IAC7C,aAAa,MAA6B;AACjD,aAAO,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,IACjC;AAAA,IAES,YAAY,CAAC,YAAgD;AACpE,cAAQ,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChC,YAAI,MAAM,KAAK,GAAG;AAChB,cAAI,OAAO,GAAG;AAAA,QAChB,OAAO;AACL,cAAI,IAAI,KAAK,KAAK;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAES,YAAY,CAAC,SAAoD;AACxE,aAAO,KAAK,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,GAAG,CAAE,CAAC,EAAE,OAAO,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC;AAAA,IAClF;AAAA,EACF,EAAG;AACL;","names":[]}
1
+ {"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { ResourceKey } from '@bessemer/cornerstone/resource-key'\nimport * as Entries from '@bessemer/cornerstone/entry'\nimport { RecordEntry } from '@bessemer/cornerstone/entry'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport interface LocalStore<T> {\n setValue: (value: T | undefined) => void\n getValue: () => T | undefined\n}\n\nexport interface LocalKeyValueStore<T> {\n setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n setValue: (key: ResourceKey, value: T | undefined) => void\n\n getEntries: () => Array<RecordEntry<T>>\n getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n getValue: (key: ResourceKey) => T | undefined\n}\n\nexport interface RemoteStore<T> {\n writeValue: (value: T | undefined) => Promise<void>\n fetchValue: () => Promise<T | undefined>\n}\n\nexport interface RemoteKeyValueStore<T> {\n writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n writeValue: (key: ResourceKey, value: T | undefined) => Promise<void>\n\n fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n fetchValue: (key: ResourceKey) => Promise<T | undefined>\n}\n\nexport abstract class AbstractRemoteKeyValueStore<T> implements RemoteKeyValueStore<T> {\n abstract writeValues: (entries: Array<RecordEntry<T | undefined>>) => Promise<void>\n\n writeValue = async (key: ResourceKey, value: T | undefined): Promise<void> => {\n await this.writeValues([Entries.of(key, value)])\n }\n\n abstract fetchValues: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>\n\n fetchValue = async (key: ResourceKey): Promise<T | undefined> => {\n return Arrays.first(await this.fetchValues([key]))?.[1]\n }\n}\n\nexport abstract class AbstractLocalKeyValueStore<T> extends AbstractRemoteKeyValueStore<T> implements LocalKeyValueStore<T> {\n abstract setValues: (entries: Array<RecordEntry<T | undefined>>) => void\n\n setValue = (key: ResourceKey, value: T | undefined): void => {\n this.setValues([Entries.of(key, value)])\n }\n\n abstract getEntries: () => Array<RecordEntry<T>>\n abstract getValues: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>\n\n getValue = (key: ResourceKey): T | undefined => {\n return Arrays.first(this.getValues([key]))?.[1]\n }\n\n fetchValues = async (keys: Array<ResourceKey>): Promise<Array<RecordEntry<T>>> => {\n return this.getValues(keys)\n }\n\n writeValues = async (entries: Array<RecordEntry<T | undefined>>): Promise<void> => {\n this.setValues(entries)\n }\n}\n\nexport const fromMap = <T>(): LocalKeyValueStore<T> => {\n const map = new Map<string, T>()\n\n return new (class extends AbstractLocalKeyValueStore<T> {\n override getEntries = (): Array<RecordEntry<T>> => {\n return Array.from(map.entries())\n }\n\n override setValues = (entries: RecordEntry<T | undefined>[]): void => {\n entries.forEach(([key, value]) => {\n if (Objects.isNil(value)) {\n map.delete(key)\n } else {\n map.set(key, value)\n }\n })\n }\n\n override getValues = (keys: Array<ResourceKey>): Array<RecordEntry<T>> => {\n return keys.map((key) => Entries.of(key, map.get(key)!)).filter((it) => Objects.isPresent(it[1]))\n }\n })()\n}\n"],"mappings":";AACA,YAAY,aAAa;AAEzB,YAAY,YAAY;AACxB,YAAY,aAAa;AA6BlB,IAAe,8BAAf,MAAgF;AAAA,EAGrF,aAAa,OAAO,KAAkB,UAAwC;AAC5E,UAAM,KAAK,YAAY,CAAS,WAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACjD;AAAA,EAIA,aAAa,OAAO,QAA6C;AAC/D,WAAc,aAAM,MAAM,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACxD;AACF;AAEO,IAAe,6BAAf,cAAqD,4BAAgE;AAAA,EAG1H,WAAW,CAAC,KAAkB,UAA+B;AAC3D,SAAK,UAAU,CAAS,WAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACzC;AAAA,EAKA,WAAW,CAAC,QAAoC;AAC9C,WAAc,aAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EAChD;AAAA,EAEA,cAAc,OAAO,SAA6D;AAChF,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,cAAc,OAAO,YAA8D;AACjF,SAAK,UAAU,OAAO;AAAA,EACxB;AACF;AAEO,IAAM,UAAU,MAAgC;AACrD,QAAM,MAAM,oBAAI,IAAe;AAE/B,SAAO,IAAK,cAAc,2BAA8B;AAAA,IAC7C,aAAa,MAA6B;AACjD,aAAO,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,IACjC;AAAA,IAES,YAAY,CAAC,YAAgD;AACpE,cAAQ,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChC,YAAY,cAAM,KAAK,GAAG;AACxB,cAAI,OAAO,GAAG;AAAA,QAChB,OAAO;AACL,cAAI,IAAI,KAAK,KAAK;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAES,YAAY,CAAC,SAAoD;AACxE,aAAO,KAAK,IAAI,CAAC,QAAgB,WAAG,KAAK,IAAI,IAAI,GAAG,CAAE,CAAC,EAAE,OAAO,CAAC,OAAe,kBAAU,GAAG,CAAC,CAAC,CAAC;AAAA,IAClG;AAAA,EACF,EAAG;AACL;","names":[]}
package/dist/string.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/string.ts
2
- import { rest } from "@bessemer/cornerstone/array";
3
- import { isNil } from "@bessemer/cornerstone/object";
2
+ import * as Arrays from "@bessemer/cornerstone/array";
3
+ import * as Objects from "@bessemer/cornerstone/object";
4
4
  import Zod from "zod";
5
5
  var isString = (value) => {
6
6
  return typeof value === "string";
@@ -9,7 +9,7 @@ var isEmpty = (value) => {
9
9
  return value.length === 0;
10
10
  };
11
11
  var isEmptyOrNil = (value) => {
12
- if (isNil(value)) {
12
+ if (Objects.isNil(value)) {
13
13
  return true;
14
14
  }
15
15
  return isEmpty(value);
@@ -30,7 +30,7 @@ var splitFirst = (str, splitter) => {
30
30
  if (results.length === 1) {
31
31
  return { selection: null, separator: null, rest: str };
32
32
  }
33
- return { selection: results[0], separator: splitter, rest: rest(results).join(splitter) };
33
+ return { selection: results[0], separator: splitter, rest: Arrays.rest(results).join(splitter) };
34
34
  } else {
35
35
  const match = splitter.exec(str);
36
36
  if (!match) {