@nicolastoulemont/std 0.5.1 → 0.7.0

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 (207) hide show
  1. package/README.md +546 -0
  2. package/dist/adt/index.d.mts +2 -2
  3. package/dist/adt/index.mjs +1 -1
  4. package/dist/adt-DajUZvJe.mjs +2 -0
  5. package/dist/adt-DajUZvJe.mjs.map +1 -0
  6. package/dist/brand/index.d.mts +2 -2
  7. package/dist/brand/index.mjs +1 -1
  8. package/dist/brand-Bia3Vj6l.mjs +2 -0
  9. package/dist/brand-Bia3Vj6l.mjs.map +1 -0
  10. package/dist/chunk-C934ptG5.mjs +1 -0
  11. package/dist/context/index.d.mts +2 -0
  12. package/dist/context/index.mjs +1 -0
  13. package/dist/context-CCHj1nab.mjs +2 -0
  14. package/dist/context-CCHj1nab.mjs.map +1 -0
  15. package/dist/context-r8ESJiFn.d.mts +176 -0
  16. package/dist/context-r8ESJiFn.d.mts.map +1 -0
  17. package/dist/data/index.d.mts +2 -2
  18. package/dist/data/index.mjs +1 -1
  19. package/dist/data-CJxw6al9.mjs +2 -0
  20. package/dist/data-CJxw6al9.mjs.map +1 -0
  21. package/dist/data.tagged-error.types-CLlJJ3n5.d.mts +50 -0
  22. package/dist/data.tagged-error.types-CLlJJ3n5.d.mts.map +1 -0
  23. package/dist/{discriminator.types-DkThfvNE.d.mts → discriminator.types-CTURejXz.d.mts} +1 -1
  24. package/dist/discriminator.types-CTURejXz.d.mts.map +1 -0
  25. package/dist/dual-CZhzZslG.mjs +2 -0
  26. package/dist/dual-CZhzZslG.mjs.map +1 -0
  27. package/dist/either/index.d.mts +2 -2
  28. package/dist/either/index.mjs +1 -1
  29. package/dist/either-6BwadiFj.mjs +2 -0
  30. package/dist/either-6BwadiFj.mjs.map +1 -0
  31. package/dist/equality-CoyUHWh9.mjs +2 -0
  32. package/dist/equality-CoyUHWh9.mjs.map +1 -0
  33. package/dist/flow-D8_tllWl.mjs +2 -0
  34. package/dist/flow-D8_tllWl.mjs.map +1 -0
  35. package/dist/functions/index.d.mts +2 -0
  36. package/dist/functions/index.mjs +1 -0
  37. package/dist/functions-BkevX2Dw.mjs +2 -0
  38. package/dist/functions-BkevX2Dw.mjs.map +1 -0
  39. package/dist/fx/index.d.mts +2 -3
  40. package/dist/fx/index.mjs +1 -1
  41. package/dist/fx-BzxLbf1Q.mjs +2 -0
  42. package/dist/fx-BzxLbf1Q.mjs.map +1 -0
  43. package/dist/fx.runtime-BcC6yMSy.mjs +2 -0
  44. package/dist/fx.runtime-BcC6yMSy.mjs.map +1 -0
  45. package/dist/{fx.types-CXTwEa1G.mjs → fx.types-Bg-Mmdm5.mjs} +1 -1
  46. package/dist/fx.types-Bg-Mmdm5.mjs.map +1 -0
  47. package/dist/{fx.types-DO-8yG4c.d.mts → fx.types-DeEWEltG.d.mts} +3 -8
  48. package/dist/{fx.types-DO-8yG4c.d.mts.map → fx.types-DeEWEltG.d.mts.map} +1 -1
  49. package/dist/index-7Lv982Om.d.mts +217 -0
  50. package/dist/index-7Lv982Om.d.mts.map +1 -0
  51. package/dist/index-B_iY5tq0.d.mts +241 -0
  52. package/dist/index-B_iY5tq0.d.mts.map +1 -0
  53. package/dist/index-B_wWGszy.d.mts +129 -0
  54. package/dist/index-B_wWGszy.d.mts.map +1 -0
  55. package/dist/index-BiiE8NS7.d.mts +108 -0
  56. package/dist/index-BiiE8NS7.d.mts.map +1 -0
  57. package/dist/index-By6dNRc4.d.mts +277 -0
  58. package/dist/index-By6dNRc4.d.mts.map +1 -0
  59. package/dist/index-CCo85AdC.d.mts +121 -0
  60. package/dist/index-CCo85AdC.d.mts.map +1 -0
  61. package/dist/index-CUZn-ohG.d.mts +490 -0
  62. package/dist/index-CUZn-ohG.d.mts.map +1 -0
  63. package/dist/index-CugDqdx6.d.mts +464 -0
  64. package/dist/index-CugDqdx6.d.mts.map +1 -0
  65. package/dist/index-DEAWPlcI.d.mts +405 -0
  66. package/dist/index-DEAWPlcI.d.mts.map +1 -0
  67. package/dist/index-DKS1g1oC.d.mts +449 -0
  68. package/dist/index-DKS1g1oC.d.mts.map +1 -0
  69. package/dist/index-DSsDFLGw.d.mts +777 -0
  70. package/dist/index-DSsDFLGw.d.mts.map +1 -0
  71. package/dist/{index-DjjJIDaA.d.mts → index-DXbYlSnB.d.mts} +66 -103
  72. package/dist/index-DXbYlSnB.d.mts.map +1 -0
  73. package/dist/{index-DtAPrec7.d.mts → index-DaTvFhZ8.d.mts} +167 -52
  74. package/dist/index-DaTvFhZ8.d.mts.map +1 -0
  75. package/dist/index-Dm2dFysv.d.mts +415 -0
  76. package/dist/index-Dm2dFysv.d.mts.map +1 -0
  77. package/dist/index.d.mts +23 -16
  78. package/dist/index.mjs +1 -1
  79. package/dist/layer/index.d.mts +2 -0
  80. package/dist/layer/index.mjs +1 -0
  81. package/dist/layer-BttmtDrs.mjs +2 -0
  82. package/dist/layer-BttmtDrs.mjs.map +1 -0
  83. package/dist/layer.types-DgpCIsk_.d.mts +100 -0
  84. package/dist/layer.types-DgpCIsk_.d.mts.map +1 -0
  85. package/dist/multithread/index.d.mts +2 -0
  86. package/dist/multithread/index.mjs +1 -0
  87. package/dist/multithread-xUUh4eLn.mjs +19 -0
  88. package/dist/multithread-xUUh4eLn.mjs.map +1 -0
  89. package/dist/option/index.d.mts +2 -3
  90. package/dist/option/index.mjs +1 -1
  91. package/dist/option-Qt1H-u7c.mjs +2 -0
  92. package/dist/option-Qt1H-u7c.mjs.map +1 -0
  93. package/dist/option.types-DRUm2QiI.mjs +2 -0
  94. package/dist/option.types-DRUm2QiI.mjs.map +1 -0
  95. package/dist/{option.types-Cluybn30.d.mts → option.types-DlAb6Sr0.d.mts} +6 -11
  96. package/dist/option.types-DlAb6Sr0.d.mts.map +1 -0
  97. package/dist/order/index.d.mts +2 -0
  98. package/dist/order/index.mjs +1 -0
  99. package/dist/order-D5c4QChk.mjs +2 -0
  100. package/dist/order-D5c4QChk.mjs.map +1 -0
  101. package/dist/pipeable-COGyGMUV.mjs +2 -0
  102. package/dist/pipeable-COGyGMUV.mjs.map +1 -0
  103. package/dist/{pipeable-KHu4D8ol.d.mts → pipeable-rfqacPxZ.d.mts} +2 -9
  104. package/dist/{pipeable-KHu4D8ol.d.mts.map → pipeable-rfqacPxZ.d.mts.map} +1 -1
  105. package/dist/predicate/index.d.mts +2 -2
  106. package/dist/predicate/index.mjs +1 -1
  107. package/dist/predicate-DUhhQqWY.mjs +2 -0
  108. package/dist/predicate-DUhhQqWY.mjs.map +1 -0
  109. package/dist/provide/index.d.mts +2 -0
  110. package/dist/provide/index.mjs +1 -0
  111. package/dist/provide-B_SqJpCd.mjs +2 -0
  112. package/dist/provide-B_SqJpCd.mjs.map +1 -0
  113. package/dist/queue/index.d.mts +2 -0
  114. package/dist/queue/index.mjs +1 -0
  115. package/dist/queue-CG5izEBS.mjs +2 -0
  116. package/dist/queue-CG5izEBS.mjs.map +1 -0
  117. package/dist/queue.types-CD2LOu37.d.mts +36 -0
  118. package/dist/queue.types-CD2LOu37.d.mts.map +1 -0
  119. package/dist/result/index.d.mts +2 -3
  120. package/dist/result/index.mjs +1 -1
  121. package/dist/result-B5WbPg8C.mjs +1 -0
  122. package/dist/result-BEzV0DYC.mjs +2 -0
  123. package/dist/result-BEzV0DYC.mjs.map +1 -0
  124. package/dist/{result.types-fIbuBwVQ.d.mts → result.types-_xDAei3-.d.mts} +31 -109
  125. package/dist/result.types-_xDAei3-.d.mts.map +1 -0
  126. package/dist/schedule/index.d.mts +2 -0
  127. package/dist/schedule/index.mjs +1 -0
  128. package/dist/schedule-C6tjcJ1O.mjs +2 -0
  129. package/dist/schedule-C6tjcJ1O.mjs.map +1 -0
  130. package/dist/schedule-DlX2Dg69.d.mts +144 -0
  131. package/dist/schedule-DlX2Dg69.d.mts.map +1 -0
  132. package/dist/scope/index.d.mts +2 -0
  133. package/dist/scope/index.mjs +1 -0
  134. package/dist/scope-CZdp4wKX.d.mts +79 -0
  135. package/dist/scope-CZdp4wKX.d.mts.map +1 -0
  136. package/dist/scope-qwL1VUh2.mjs +2 -0
  137. package/dist/scope-qwL1VUh2.mjs.map +1 -0
  138. package/dist/service/index.d.mts +2 -0
  139. package/dist/service/index.mjs +1 -0
  140. package/dist/service-3PYQTUdH.mjs +2 -0
  141. package/dist/service-3PYQTUdH.mjs.map +1 -0
  142. package/dist/service-DrXU7KJG.d.mts +69 -0
  143. package/dist/service-DrXU7KJG.d.mts.map +1 -0
  144. package/dist/service-resolution-C19smeaO.mjs +2 -0
  145. package/dist/service-resolution-C19smeaO.mjs.map +1 -0
  146. package/package.json +52 -13
  147. package/dist/adt-DZmVJG4P.mjs +0 -2
  148. package/dist/adt-DZmVJG4P.mjs.map +0 -1
  149. package/dist/apply-fn.types-CMgY6WQe.d.mts +0 -8
  150. package/dist/apply-fn.types-CMgY6WQe.d.mts.map +0 -1
  151. package/dist/brand-BUqMmkzC.mjs +0 -2
  152. package/dist/brand-BUqMmkzC.mjs.map +0 -1
  153. package/dist/data-DzqKBCQg.mjs +0 -2
  154. package/dist/data-DzqKBCQg.mjs.map +0 -1
  155. package/dist/discriminator.types-DkThfvNE.d.mts.map +0 -1
  156. package/dist/either-BDY9T5oz.mjs +0 -2
  157. package/dist/either-BDY9T5oz.mjs.map +0 -1
  158. package/dist/equality-D2EJvZm4.mjs +0 -2
  159. package/dist/equality-D2EJvZm4.mjs.map +0 -1
  160. package/dist/err/index.d.mts +0 -2
  161. package/dist/err/index.mjs +0 -1
  162. package/dist/err-CYs4b1RV.mjs +0 -2
  163. package/dist/err-CYs4b1RV.mjs.map +0 -1
  164. package/dist/flow/index.d.mts +0 -2
  165. package/dist/flow/index.mjs +0 -1
  166. package/dist/flow-CxKQ5yac.mjs +0 -2
  167. package/dist/flow-CxKQ5yac.mjs.map +0 -1
  168. package/dist/fx-C4UuWCqP.mjs +0 -2
  169. package/dist/fx-C4UuWCqP.mjs.map +0 -1
  170. package/dist/fx.types-CXTwEa1G.mjs.map +0 -1
  171. package/dist/index-78LWwTds.d.mts +0 -288
  172. package/dist/index-78LWwTds.d.mts.map +0 -1
  173. package/dist/index-BQ5wVDSP.d.mts +0 -441
  174. package/dist/index-BQ5wVDSP.d.mts.map +0 -1
  175. package/dist/index-BahMvQpA.d.mts +0 -80
  176. package/dist/index-BahMvQpA.d.mts.map +0 -1
  177. package/dist/index-Bs5TTFlK.d.mts +0 -882
  178. package/dist/index-Bs5TTFlK.d.mts.map +0 -1
  179. package/dist/index-BuLJRX1e.d.mts +0 -476
  180. package/dist/index-BuLJRX1e.d.mts.map +0 -1
  181. package/dist/index-CDio8mJY.d.mts +0 -225
  182. package/dist/index-CDio8mJY.d.mts.map +0 -1
  183. package/dist/index-DLlx9jiG.d.mts +0 -389
  184. package/dist/index-DLlx9jiG.d.mts.map +0 -1
  185. package/dist/index-DjjJIDaA.d.mts.map +0 -1
  186. package/dist/index-DtAPrec7.d.mts.map +0 -1
  187. package/dist/index-IdejL485.d.mts +0 -79
  188. package/dist/index-IdejL485.d.mts.map +0 -1
  189. package/dist/index-UYodvXes.d.mts +0 -846
  190. package/dist/index-UYodvXes.d.mts.map +0 -1
  191. package/dist/option-Qiv7Ls7L.mjs +0 -2
  192. package/dist/option-Qiv7Ls7L.mjs.map +0 -1
  193. package/dist/option.types-By5UOfC2.mjs +0 -2
  194. package/dist/option.types-By5UOfC2.mjs.map +0 -1
  195. package/dist/option.types-Cluybn30.d.mts.map +0 -1
  196. package/dist/pipe/index.d.mts +0 -2
  197. package/dist/pipe/index.mjs +0 -1
  198. package/dist/pipe-BROILDeC.mjs +0 -2
  199. package/dist/pipe-BROILDeC.mjs.map +0 -1
  200. package/dist/pipeable-rQvolRqh.mjs +0 -2
  201. package/dist/pipeable-rQvolRqh.mjs.map +0 -1
  202. package/dist/predicate-DvXnfmeJ.mjs +0 -2
  203. package/dist/predicate-DvXnfmeJ.mjs.map +0 -1
  204. package/dist/result-B68pxC7l.mjs +0 -2
  205. package/dist/result-B68pxC7l.mjs.map +0 -1
  206. package/dist/result.types-fIbuBwVQ.d.mts.map +0 -1
  207. /package/dist/{result-uRORQlAQ.mjs → option-CBCwzF0L.mjs} +0 -0
@@ -0,0 +1,490 @@
1
+ //#region src/order/order.types.d.ts
2
+ /**
3
+ * Ordering result of comparing two values.
4
+ *
5
+ * - `-1`: first value is less than second
6
+ * - `0`: values are equal
7
+ * - `1`: first value is greater than second
8
+ */
9
+ type Ordering$1 = -1 | 0 | 1;
10
+ /**
11
+ * Total ordering function for values of type `A`.
12
+ *
13
+ * An order must be consistent and return one of `-1 | 0 | 1`.
14
+ */
15
+ type Order$1<in A> = (self: A, that: A) => Ordering$1;
16
+ /**
17
+ * Inclusive bounds used by `clamp` and `between`.
18
+ */
19
+ type OrderBounds<A> = {
20
+ readonly minimum: A;
21
+ readonly maximum: A;
22
+ };
23
+ declare namespace order_d_exports {
24
+ export { Order, Ordering, alwaysEqual, array, between, bigint, boolean, by, clamp, date, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, make, max, merge, min, number, reverse, sort, sortBy, sortWith, string, struct, tuple };
25
+ }
26
+ /**
27
+ * Re-exported `Order` type.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import type { Order } from "@nicolastoulemont/std"
32
+ *
33
+ * type Example = Order.Order<unknown>
34
+ * ```
35
+ *
36
+ * @category Re-exports
37
+ */
38
+ type Order<A> = Order$1<A>;
39
+ /**
40
+ * Re-exported `Ordering` type.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * import type { Order } from "@nicolastoulemont/std"
45
+ *
46
+ * type Example = Order.Ordering
47
+ * ```
48
+ *
49
+ * @category Re-exports
50
+ */
51
+ type Ordering = Ordering$1;
52
+ /**
53
+ * Create an `Order` from a comparison function.
54
+ *
55
+ * The created order short-circuits identical references (`===`) to `0`.
56
+ *
57
+ * @param compare - Comparison function returning `-1 | 0 | 1`
58
+ * @returns An order function
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * import { Order } from "@nicolastoulemont/std"
63
+ *
64
+ * const byLength = Order.make<string>((self, that) =>
65
+ * self.length < that.length ? -1 : self.length > that.length ? 1 : 0,
66
+ * )
67
+ * const result = byLength("a", "bbb")
68
+ * // => -1
69
+ * ```
70
+ *
71
+ * @category Constructors
72
+ */
73
+ declare function make<A>(compare: (self: A, that: A) => Ordering): Order$1<A>;
74
+ /**
75
+ * `Order` instance for strings (lexicographic, case-sensitive).
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * import { Order } from "@nicolastoulemont/std"
80
+ *
81
+ * const result = Order.string("a", "b")
82
+ * // => -1
83
+ * ```
84
+ *
85
+ * @category Instances
86
+ */
87
+ declare const string: Order$1<string>;
88
+ /**
89
+ * `Order` instance for numbers.
90
+ *
91
+ * - `NaN` equals `NaN`
92
+ * - `NaN` is less than any non-`NaN`
93
+ * - `0` equals `-0`
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * import { Order } from "@nicolastoulemont/std"
98
+ *
99
+ * const result = Order.number(1, 2)
100
+ * // => -1
101
+ * ```
102
+ *
103
+ * @category Instances
104
+ */
105
+ declare const number: Order$1<number>;
106
+ /**
107
+ * `Order` instance for booleans where `false < true`.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * import { Order } from "@nicolastoulemont/std"
112
+ *
113
+ * const result = Order.boolean(false, true)
114
+ * // => -1
115
+ * ```
116
+ *
117
+ * @category Instances
118
+ */
119
+ declare const boolean: Order$1<boolean>;
120
+ /**
121
+ * `Order` instance for bigints.
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * import { Order } from "@nicolastoulemont/std"
126
+ *
127
+ * const result = Order.bigint(1n, 2n)
128
+ * // => -1
129
+ * ```
130
+ *
131
+ * @category Instances
132
+ */
133
+ declare const bigint: Order$1<bigint>;
134
+ /**
135
+ * `Order` instance for dates based on `getTime()`.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * import { Order } from "@nicolastoulemont/std"
140
+ *
141
+ * const result = Order.date(new Date("2024-01-01"), new Date("2024-01-02"))
142
+ * // => -1
143
+ * ```
144
+ *
145
+ * @category Instances
146
+ */
147
+ declare const date: Order$1<Date>;
148
+ /**
149
+ * Create an order that treats all values as equal.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * import { Order } from "@nicolastoulemont/std"
154
+ *
155
+ * const compare = Order.alwaysEqual<number>()
156
+ * const result = compare(1, 2)
157
+ * // => 0
158
+ * ```
159
+ *
160
+ * @category Constructors
161
+ */
162
+ declare function alwaysEqual<A>(): Order$1<A>;
163
+ /**
164
+ * Reverse an existing order.
165
+ *
166
+ * @example
167
+ * ```ts
168
+ * import { Order } from "@nicolastoulemont/std"
169
+ *
170
+ * const desc = Order.reverse(Order.number)
171
+ * const result = desc(1, 2)
172
+ * // => 1
173
+ * ```
174
+ *
175
+ * @category Combinators
176
+ */
177
+ declare function reverse<A>(order: Order$1<A>): Order$1<A>;
178
+ /**
179
+ * Map inputs before comparison.
180
+ *
181
+ * Supports data-first and data-last styles:
182
+ * - `by(order, project)`
183
+ * - `pipe(order, by(project))`
184
+ *
185
+ * @example
186
+ * ```ts
187
+ * import { Order } from "@nicolastoulemont/std"
188
+ *
189
+ * type User = { age: number }
190
+ * const dataFirst = Order.by(Order.number, (user: User) => user.age)
191
+ * const compareFirst = dataFirst({ age: 1 }, { age: 2 })
192
+ * // => -1
193
+ *
194
+ * const dataLast = Order.by((user: User) => user.age)(Order.number)
195
+ * const compareLast = dataLast({ age: 1 }, { age: 2 })
196
+ * // => -1
197
+ * ```
198
+ *
199
+ * @category Combinators
200
+ */
201
+ declare const by: {
202
+ <B, A>(project: (value: B) => A): (order: Order$1<A>) => Order$1<B>;
203
+ <A, B>(order: Order$1<A>, project: (value: B) => A): Order$1<B>;
204
+ };
205
+ /**
206
+ * Merge orders lexicographically.
207
+ *
208
+ * Supports three forms:
209
+ * - `merge(self, that)`
210
+ * - `merge(that)(self)`
211
+ * - `merge([order1, order2, ...])`
212
+ *
213
+ * @example
214
+ * ```ts
215
+ * import { Order } from "@nicolastoulemont/std"
216
+ *
217
+ * type User = { first: string; last: string }
218
+ * const byLast = Order.by(Order.string, (user: User) => user.last)
219
+ * const byFirst = Order.by(Order.string, (user: User) => user.first)
220
+ * const compare = Order.merge([byLast, byFirst])({ first: "Ada", last: "Lovelace" }, { first: "Alan", last: "Turing" })
221
+ * // => -1
222
+ * ```
223
+ *
224
+ * @category Combining
225
+ */
226
+ declare const merge: {
227
+ <A>(that: Order$1<A>): (self: Order$1<A>) => Order$1<A>;
228
+ <A>(self: Order$1<A>, that: Order$1<A>): Order$1<A>;
229
+ <A>(orders: Iterable<Order$1<A>>): Order$1<A>;
230
+ };
231
+ /**
232
+ * Create an order for tuples, compared left-to-right.
233
+ */
234
+ type TupleOrders<Elements extends ReadonlyArray<unknown>> = { readonly [K in keyof Elements]: Order$1<Elements[K]> };
235
+ /**
236
+ * tuple utility.
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * import { Order } from "@nicolastoulemont/std"
241
+ *
242
+ * const compare = Order.tuple([Order.string, Order.number] as const)(["a", 1], ["a", 2])
243
+ * // => -1
244
+ * ```
245
+ *
246
+ * @category Constructors
247
+ */
248
+ declare function tuple<const Elements extends ReadonlyArray<unknown>>(orders: TupleOrders<Elements>): Order$1<Elements>;
249
+ /**
250
+ * Create an order for arrays.
251
+ *
252
+ * Arrays are compared element-by-element, then by length when all compared
253
+ * elements are equal.
254
+ *
255
+ * @example
256
+ * ```ts
257
+ * import { Order } from "@nicolastoulemont/std"
258
+ *
259
+ * const compare = Order.array(Order.number)([1, 2], [1, 3])
260
+ * // => -1
261
+ * ```
262
+ *
263
+ * @category Constructors
264
+ */
265
+ declare function array<A>(order: Order$1<A>): Order$1<readonly A[]>;
266
+ /**
267
+ * Create an order for objects by key order in `fields`.
268
+ *
269
+ * @example
270
+ * ```ts
271
+ * import { Order } from "@nicolastoulemont/std"
272
+ *
273
+ * const compare = Order.struct<{ id: number; name: string }>({
274
+ * id: Order.number,
275
+ * name: Order.string,
276
+ * })({ id: 1, name: "a" }, { id: 1, name: "b" })
277
+ * // => -1
278
+ * ```
279
+ *
280
+ * @category Constructors
281
+ */
282
+ declare function struct<const R extends Record<string, unknown>>(fields: { readonly [K in keyof R]: Order$1<R[K]> }): Order$1<R>;
283
+ /**
284
+ * Test strict less-than using an order.
285
+ *
286
+ * @example
287
+ * ```ts
288
+ * import { Order } from "@nicolastoulemont/std"
289
+ *
290
+ * const result = Order.lessThan(Order.number)(1, 2)
291
+ * // => true
292
+ * ```
293
+ *
294
+ * @category Predicates
295
+ */
296
+ declare const lessThan: <A>(order: Order$1<A>) => {
297
+ (that: A): (self: A) => boolean;
298
+ (self: A, that: A): boolean;
299
+ };
300
+ /**
301
+ * Test less-than-or-equal using an order.
302
+ *
303
+ * @example
304
+ * ```ts
305
+ * import { Order } from "@nicolastoulemont/std"
306
+ *
307
+ * const result = Order.lessThanOrEqual(Order.number)(2, 2)
308
+ * // => true
309
+ * ```
310
+ *
311
+ * @category Predicates
312
+ */
313
+ declare const lessThanOrEqual: <A>(order: Order$1<A>) => {
314
+ (that: A): (self: A) => boolean;
315
+ (self: A, that: A): boolean;
316
+ };
317
+ /**
318
+ * Test strict greater-than using an order.
319
+ *
320
+ * @example
321
+ * ```ts
322
+ * import { Order } from "@nicolastoulemont/std"
323
+ *
324
+ * const result = Order.greaterThan(Order.number)(3, 2)
325
+ * // => true
326
+ * ```
327
+ *
328
+ * @category Predicates
329
+ */
330
+ declare const greaterThan: <A>(order: Order$1<A>) => {
331
+ (that: A): (self: A) => boolean;
332
+ (self: A, that: A): boolean;
333
+ };
334
+ /**
335
+ * Test greater-than-or-equal using an order.
336
+ *
337
+ * @example
338
+ * ```ts
339
+ * import { Order } from "@nicolastoulemont/std"
340
+ *
341
+ * const result = Order.greaterThanOrEqual(Order.number)(2, 2)
342
+ * // => true
343
+ * ```
344
+ *
345
+ * @category Predicates
346
+ */
347
+ declare const greaterThanOrEqual: <A>(order: Order$1<A>) => {
348
+ (that: A): (self: A) => boolean;
349
+ (self: A, that: A): boolean;
350
+ };
351
+ /**
352
+ * Get the minimum of two values.
353
+ *
354
+ * If equal, returns the first argument.
355
+ *
356
+ * @example
357
+ * ```ts
358
+ * import { Order } from "@nicolastoulemont/std"
359
+ *
360
+ * const value = Order.min(Order.number)(3, 5)
361
+ * // => 3
362
+ * ```
363
+ *
364
+ * @category Combinators
365
+ */
366
+ declare const min: <A>(order: Order$1<A>) => {
367
+ (that: A): (self: A) => A;
368
+ (self: A, that: A): A;
369
+ };
370
+ /**
371
+ * Get the maximum of two values.
372
+ *
373
+ * If equal, returns the first argument.
374
+ *
375
+ * @example
376
+ * ```ts
377
+ * import { Order } from "@nicolastoulemont/std"
378
+ *
379
+ * const value = Order.max(Order.number)(3, 5)
380
+ * // => 5
381
+ * ```
382
+ *
383
+ * @category Combinators
384
+ */
385
+ declare const max: <A>(order: Order$1<A>) => {
386
+ (that: A): (self: A) => A;
387
+ (self: A, that: A): A;
388
+ };
389
+ /**
390
+ * Clamp a value to inclusive bounds.
391
+ *
392
+ * @example
393
+ * ```ts
394
+ * import { Order } from "@nicolastoulemont/std"
395
+ *
396
+ * const value = Order.clamp(Order.number)(7, { minimum: 0, maximum: 5 })
397
+ * // => 5
398
+ * ```
399
+ *
400
+ * @category Combinators
401
+ */
402
+ declare const clamp: <A>(order: Order$1<A>) => {
403
+ (bounds: OrderBounds<A>): (self: A) => A;
404
+ (self: A, bounds: OrderBounds<A>): A;
405
+ };
406
+ /**
407
+ * Check whether a value is within inclusive bounds.
408
+ *
409
+ * @example
410
+ * ```ts
411
+ * import { Order } from "@nicolastoulemont/std"
412
+ *
413
+ * const isBetween = Order.between(Order.number)(3, { minimum: 0, maximum: 5 })
414
+ * // => true
415
+ * ```
416
+ *
417
+ * @category Predicates
418
+ */
419
+ declare const between: <A>(order: Order$1<A>) => {
420
+ (bounds: OrderBounds<A>): (self: A) => boolean;
421
+ (self: A, bounds: OrderBounds<A>): boolean;
422
+ };
423
+ /**
424
+ * Sort an iterable by an order, returning a new array.
425
+ *
426
+ * Supports data-first and data-last styles.
427
+ *
428
+ * @example
429
+ * ```ts
430
+ * import { Order } from "@nicolastoulemont/std"
431
+ *
432
+ * const values = [3, 1, 2]
433
+ * const dataFirst = Order.sort(values, Order.number)
434
+ * // => [1, 2, 3]
435
+ *
436
+ * const dataLast = Order.sort(Order.number)(values)
437
+ * // => [1, 2, 3]
438
+ * ```
439
+ *
440
+ * @category Utilities
441
+ */
442
+ declare const sort: {
443
+ <B>(order: Order$1<B>): <A extends B>(input: Iterable<A>) => A[];
444
+ <A extends B, B>(input: Iterable<A>, order: Order$1<B>): A[];
445
+ };
446
+ /**
447
+ * Sort an iterable by a projected value.
448
+ *
449
+ * Supports data-first and data-last styles.
450
+ *
451
+ * @example
452
+ * ```ts
453
+ * import { Order } from "@nicolastoulemont/std"
454
+ *
455
+ * const users = [{ age: 2 }, { age: 1 }]
456
+ * const dataFirst = Order.sortWith(users, (user) => user.age, Order.number)
457
+ * // => [{ age: 1 }, { age: 2 }]
458
+ *
459
+ * const dataLast = Order.sortWith((user: { age: number }) => user.age, Order.number)(users)
460
+ * // => [{ age: 1 }, { age: 2 }]
461
+ * ```
462
+ *
463
+ * @category Utilities
464
+ */
465
+ declare const sortWith: {
466
+ <A, B>(project: (value: A) => B, order: Order$1<B>): (input: Iterable<A>) => A[];
467
+ <A, B>(input: Iterable<A>, project: (value: A) => B, order: Order$1<B>): A[];
468
+ };
469
+ /**
470
+ * Sort an iterable by multiple orders, in sequence.
471
+ *
472
+ * - first order has highest priority
473
+ * - ties are broken by subsequent orders
474
+ * - no orders returns a shallow copy preserving iteration order
475
+ *
476
+ * @example
477
+ * ```ts
478
+ * import { Order } from "@nicolastoulemont/std"
479
+ *
480
+ * const users = [{ age: 2, name: "b" }, { age: 1, name: "a" }]
481
+ * const sorted = Order.sortBy(Order.by(Order.number, (user: { age: number; name: string }) => user.age))(users)
482
+ * // => [{ age: 1, name: "a" }, { age: 2, name: "b" }]
483
+ * ```
484
+ *
485
+ * @category Utilities
486
+ */
487
+ declare const sortBy: <A>(...orders: readonly Order$1<A>[]) => (input: Iterable<A>) => A[];
488
+ //#endregion
489
+ export { order_d_exports as t };
490
+ //# sourceMappingURL=index-CUZn-ohG.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CUZn-ohG.d.mts","names":[],"sources":["../src/order/order.types.ts","../src/order/order.ts"],"sourcesContent":[],"mappings":"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"}