@nicolastoulemont/std 0.6.0 → 0.7.1

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 (198) hide show
  1. package/README.md +232 -33
  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/context/index.d.mts +2 -0
  11. package/dist/context/index.mjs +1 -0
  12. package/dist/context-CCHj1nab.mjs +2 -0
  13. package/dist/context-CCHj1nab.mjs.map +1 -0
  14. package/dist/context-r8ESJiFn.d.mts +176 -0
  15. package/dist/context-r8ESJiFn.d.mts.map +1 -0
  16. package/dist/data/index.d.mts +2 -2
  17. package/dist/data/index.mjs +1 -1
  18. package/dist/data-BLXO4XwS.mjs +2 -0
  19. package/dist/data-BLXO4XwS.mjs.map +1 -0
  20. package/dist/data.tagged-error.types-CGiKD-ES.d.mts +29 -0
  21. package/dist/data.tagged-error.types-CGiKD-ES.d.mts.map +1 -0
  22. package/dist/{discriminator.types-9PxvrZki.d.mts → discriminator.types-CTURejXz.d.mts} +1 -1
  23. package/dist/discriminator.types-CTURejXz.d.mts.map +1 -0
  24. package/dist/dual-CZhzZslG.mjs +2 -0
  25. package/dist/dual-CZhzZslG.mjs.map +1 -0
  26. package/dist/either/index.d.mts +2 -2
  27. package/dist/either/index.mjs +1 -1
  28. package/dist/either-BMLPfvMl.mjs +2 -0
  29. package/dist/either-BMLPfvMl.mjs.map +1 -0
  30. package/dist/{equality-CD4_A1Op.mjs → equality-CoyUHWh9.mjs} +1 -1
  31. package/dist/{equality-CD4_A1Op.mjs.map → equality-CoyUHWh9.mjs.map} +1 -1
  32. package/dist/{flow-CYjiodlC.mjs → flow-D8_tllWl.mjs} +1 -1
  33. package/dist/flow-D8_tllWl.mjs.map +1 -0
  34. package/dist/functions/index.d.mts +2 -0
  35. package/dist/functions/index.mjs +1 -0
  36. package/dist/functions-BkevX2Dw.mjs +2 -0
  37. package/dist/functions-BkevX2Dw.mjs.map +1 -0
  38. package/dist/fx/index.d.mts +2 -3
  39. package/dist/fx/index.mjs +1 -1
  40. package/dist/fx-K-a9Smhn.mjs +2 -0
  41. package/dist/fx-K-a9Smhn.mjs.map +1 -0
  42. package/dist/fx.runtime-DclEDyjY.mjs +2 -0
  43. package/dist/fx.runtime-DclEDyjY.mjs.map +1 -0
  44. package/dist/{fx.types-CDVjDn_3.mjs → fx.types-Bg-Mmdm5.mjs} +1 -1
  45. package/dist/fx.types-Bg-Mmdm5.mjs.map +1 -0
  46. package/dist/{fx.types-B34asVRX.d.mts → fx.types-DeEWEltG.d.mts} +2 -2
  47. package/dist/{fx.types-B34asVRX.d.mts.map → fx.types-DeEWEltG.d.mts.map} +1 -1
  48. package/dist/index-7Lv982Om.d.mts +217 -0
  49. package/dist/index-7Lv982Om.d.mts.map +1 -0
  50. package/dist/{index-CklRfom5.d.mts → index-B1-tBzc0.d.mts} +263 -368
  51. package/dist/index-B1-tBzc0.d.mts.map +1 -0
  52. package/dist/index-BNQ9xSAz.d.mts +464 -0
  53. package/dist/index-BNQ9xSAz.d.mts.map +1 -0
  54. package/dist/index-B_iY5tq0.d.mts +241 -0
  55. package/dist/index-B_iY5tq0.d.mts.map +1 -0
  56. package/dist/index-B_wWGszy.d.mts +129 -0
  57. package/dist/index-B_wWGszy.d.mts.map +1 -0
  58. package/dist/index-BiiE8NS7.d.mts +108 -0
  59. package/dist/index-BiiE8NS7.d.mts.map +1 -0
  60. package/dist/index-By6dNRc4.d.mts +277 -0
  61. package/dist/index-By6dNRc4.d.mts.map +1 -0
  62. package/dist/{index-BzYtgdX0.d.mts → index-CGiLfREk.d.mts} +123 -16
  63. package/dist/index-CGiLfREk.d.mts.map +1 -0
  64. package/dist/index-CUZn-ohG.d.mts +490 -0
  65. package/dist/index-CUZn-ohG.d.mts.map +1 -0
  66. package/dist/index-Cq2IFito.d.mts +121 -0
  67. package/dist/index-Cq2IFito.d.mts.map +1 -0
  68. package/dist/{index-B2l8_CiD.d.mts → index-DEAWPlcI.d.mts} +155 -216
  69. package/dist/index-DEAWPlcI.d.mts.map +1 -0
  70. package/dist/{index-C4v_3f3-.d.mts → index-DKS1g1oC.d.mts} +95 -42
  71. package/dist/index-DKS1g1oC.d.mts.map +1 -0
  72. package/dist/{index-jeC5jyRh.d.mts → index-DXbYlSnB.d.mts} +64 -101
  73. package/dist/index-DXbYlSnB.d.mts.map +1 -0
  74. package/dist/{index-CjZ95Dsv.d.mts → index-UzMbg1dh.d.mts} +188 -202
  75. package/dist/index-UzMbg1dh.d.mts.map +1 -0
  76. package/dist/index.d.mts +23 -16
  77. package/dist/index.mjs +1 -1
  78. package/dist/layer/index.d.mts +2 -0
  79. package/dist/layer/index.mjs +1 -0
  80. package/dist/layer-BttmtDrs.mjs +2 -0
  81. package/dist/layer-BttmtDrs.mjs.map +1 -0
  82. package/dist/layer.types-DgpCIsk_.d.mts +100 -0
  83. package/dist/layer.types-DgpCIsk_.d.mts.map +1 -0
  84. package/dist/multithread/index.d.mts +2 -0
  85. package/dist/multithread/index.mjs +1 -0
  86. package/dist/multithread-xUUh4eLn.mjs +19 -0
  87. package/dist/multithread-xUUh4eLn.mjs.map +1 -0
  88. package/dist/option/index.d.mts +2 -3
  89. package/dist/option/index.mjs +1 -1
  90. package/dist/option-Tfbo4wty.mjs +2 -0
  91. package/dist/option-Tfbo4wty.mjs.map +1 -0
  92. package/dist/option.types-D1mm0zUb.mjs +2 -0
  93. package/dist/option.types-D1mm0zUb.mjs.map +1 -0
  94. package/dist/{option.types-ClJiBTdg.d.mts → option.types-qPevEZQd.d.mts} +7 -12
  95. package/dist/option.types-qPevEZQd.d.mts.map +1 -0
  96. package/dist/order/index.d.mts +2 -0
  97. package/dist/order/index.mjs +1 -0
  98. package/dist/order-D5c4QChk.mjs +2 -0
  99. package/dist/order-D5c4QChk.mjs.map +1 -0
  100. package/dist/pipeable-COGyGMUV.mjs +2 -0
  101. package/dist/pipeable-COGyGMUV.mjs.map +1 -0
  102. package/dist/{pipeable-B4YJA56p.d.mts → pipeable-rfqacPxZ.d.mts} +2 -9
  103. package/dist/{pipeable-B4YJA56p.d.mts.map → pipeable-rfqacPxZ.d.mts.map} +1 -1
  104. package/dist/predicate/index.d.mts +2 -2
  105. package/dist/predicate/index.mjs +1 -1
  106. package/dist/predicate-DUhhQqWY.mjs +2 -0
  107. package/dist/predicate-DUhhQqWY.mjs.map +1 -0
  108. package/dist/provide/index.d.mts +2 -0
  109. package/dist/provide/index.mjs +1 -0
  110. package/dist/provide-C2cWOx2B.mjs +2 -0
  111. package/dist/provide-C2cWOx2B.mjs.map +1 -0
  112. package/dist/queue/index.d.mts +2 -0
  113. package/dist/queue/index.mjs +1 -0
  114. package/dist/queue-Sg6KJerl.mjs +2 -0
  115. package/dist/queue-Sg6KJerl.mjs.map +1 -0
  116. package/dist/queue.types-CD2LOu37.d.mts +36 -0
  117. package/dist/queue.types-CD2LOu37.d.mts.map +1 -0
  118. package/dist/result/index.d.mts +2 -3
  119. package/dist/result/index.mjs +1 -1
  120. package/dist/result-BEzV0DYC.mjs +2 -0
  121. package/dist/result-BEzV0DYC.mjs.map +1 -0
  122. package/dist/{result.types-HHDzgSTV.d.mts → result.types-_xDAei3-.d.mts} +5 -97
  123. package/dist/result.types-_xDAei3-.d.mts.map +1 -0
  124. package/dist/schedule/index.d.mts +2 -0
  125. package/dist/schedule/index.mjs +1 -0
  126. package/dist/schedule-C6tjcJ1O.mjs +2 -0
  127. package/dist/schedule-C6tjcJ1O.mjs.map +1 -0
  128. package/dist/schedule-DlX2Dg69.d.mts +144 -0
  129. package/dist/schedule-DlX2Dg69.d.mts.map +1 -0
  130. package/dist/scope/index.d.mts +2 -0
  131. package/dist/scope/index.mjs +1 -0
  132. package/dist/scope-CZdp4wKX.d.mts +79 -0
  133. package/dist/scope-CZdp4wKX.d.mts.map +1 -0
  134. package/dist/scope-D_kzd1nT.mjs +2 -0
  135. package/dist/scope-D_kzd1nT.mjs.map +1 -0
  136. package/dist/service/index.d.mts +2 -0
  137. package/dist/service/index.mjs +1 -0
  138. package/dist/service-3PYQTUdH.mjs +2 -0
  139. package/dist/service-3PYQTUdH.mjs.map +1 -0
  140. package/dist/service-DrXU7KJG.d.mts +69 -0
  141. package/dist/service-DrXU7KJG.d.mts.map +1 -0
  142. package/dist/service-resolution-C19smeaO.mjs +2 -0
  143. package/dist/service-resolution-C19smeaO.mjs.map +1 -0
  144. package/package.json +50 -12
  145. package/dist/adt-CkRcY_GA.mjs +0 -2
  146. package/dist/adt-CkRcY_GA.mjs.map +0 -1
  147. package/dist/apply-fn.types-0g_9eXRy.d.mts +0 -8
  148. package/dist/apply-fn.types-0g_9eXRy.d.mts.map +0 -1
  149. package/dist/brand-Gy0kW6-n.mjs +0 -2
  150. package/dist/brand-Gy0kW6-n.mjs.map +0 -1
  151. package/dist/data-C0_3MGwm.mjs +0 -2
  152. package/dist/data-C0_3MGwm.mjs.map +0 -1
  153. package/dist/discriminator.types-9PxvrZki.d.mts.map +0 -1
  154. package/dist/either-CPzK-s8W.mjs +0 -2
  155. package/dist/either-CPzK-s8W.mjs.map +0 -1
  156. package/dist/err/index.d.mts +0 -2
  157. package/dist/err/index.mjs +0 -1
  158. package/dist/err-3KpQ4pj9.mjs +0 -2
  159. package/dist/err-3KpQ4pj9.mjs.map +0 -1
  160. package/dist/flow/index.d.mts +0 -2
  161. package/dist/flow/index.mjs +0 -1
  162. package/dist/flow-CYjiodlC.mjs.map +0 -1
  163. package/dist/fx-vqywVJhV.mjs +0 -2
  164. package/dist/fx-vqywVJhV.mjs.map +0 -1
  165. package/dist/fx.types-CDVjDn_3.mjs.map +0 -1
  166. package/dist/index-8Ne4GdOG.d.mts +0 -288
  167. package/dist/index-8Ne4GdOG.d.mts.map +0 -1
  168. package/dist/index-B2l8_CiD.d.mts.map +0 -1
  169. package/dist/index-BOrJQBPO.d.mts +0 -80
  170. package/dist/index-BOrJQBPO.d.mts.map +0 -1
  171. package/dist/index-BsXtpnw-.d.mts +0 -225
  172. package/dist/index-BsXtpnw-.d.mts.map +0 -1
  173. package/dist/index-BzYtgdX0.d.mts.map +0 -1
  174. package/dist/index-C4v_3f3-.d.mts.map +0 -1
  175. package/dist/index-CjZ95Dsv.d.mts.map +0 -1
  176. package/dist/index-CklRfom5.d.mts.map +0 -1
  177. package/dist/index-DZdmFtjA.d.mts +0 -79
  178. package/dist/index-DZdmFtjA.d.mts.map +0 -1
  179. package/dist/index-a4MEBZZ1.d.mts +0 -850
  180. package/dist/index-a4MEBZZ1.d.mts.map +0 -1
  181. package/dist/index-jeC5jyRh.d.mts.map +0 -1
  182. package/dist/option-DawZC1cE.mjs +0 -2
  183. package/dist/option-DawZC1cE.mjs.map +0 -1
  184. package/dist/option.types-ClJiBTdg.d.mts.map +0 -1
  185. package/dist/pipe/index.d.mts +0 -2
  186. package/dist/pipe/index.mjs +0 -1
  187. package/dist/pipe-BPpJyZf7.mjs +0 -2
  188. package/dist/pipe-BPpJyZf7.mjs.map +0 -1
  189. package/dist/pipeable-BA0mXhs4.mjs +0 -2
  190. package/dist/pipeable-BA0mXhs4.mjs.map +0 -1
  191. package/dist/predicate-Cy_oHA1Q.mjs +0 -2
  192. package/dist/predicate-Cy_oHA1Q.mjs.map +0 -1
  193. package/dist/result-CgGYLp0L.mjs +0 -2
  194. package/dist/result-CgGYLp0L.mjs.map +0 -1
  195. package/dist/result.types-HHDzgSTV.d.mts.map +0 -1
  196. /package/dist/{chunk-DAexk1S7.mjs → chunk-C934ptG5.mjs} +0 -0
  197. /package/dist/{option-Bb-taghv.mjs → option-CBCwzF0L.mjs} +0 -0
  198. /package/dist/{result-fiJhwVGz.mjs → result-B5WbPg8C.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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"}
@@ -0,0 +1,121 @@
1
+ import { t as TaggedErrorFactory } from "./data.tagged-error.types-CGiKD-ES.mjs";
2
+ import { i as QueueOptions, n as Queue, r as QueueBoundedOptions } from "./queue.types-CD2LOu37.mjs";
3
+
4
+ //#region src/queue/queue.d.ts
5
+ declare namespace queue_d_exports {
6
+ export { QueueAbortedError, QueueClosedError, QueueTaskAbortedError, bounded, is, make, unbounded };
7
+ }
8
+ declare const QueueClosedError_base: TaggedErrorFactory<"QueueClosedError">;
9
+ /**
10
+ * Error raised when enqueueing into a non-open queue.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { Queue } from "@nicolastoulemont/std"
15
+ *
16
+ * const error = new Queue.QueueClosedError({ state: "draining" })
17
+ * // => { _tag: "QueueClosedError", state: "draining" }
18
+ * ```
19
+ *
20
+ * @category Models
21
+ */
22
+ declare class QueueClosedError extends QueueClosedError_base<{
23
+ state: "draining" | "aborted";
24
+ }> {}
25
+ declare const QueueAbortedError_base: TaggedErrorFactory<"QueueAbortedError">;
26
+ /**
27
+ * Error raised when queue processing is aborted.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { Queue } from "@nicolastoulemont/std"
32
+ *
33
+ * const error = new Queue.QueueAbortedError({ reason: "manual" })
34
+ * // => { _tag: "QueueAbortedError", reason: "manual" }
35
+ * ```
36
+ *
37
+ * @category Models
38
+ */
39
+ declare class QueueAbortedError extends QueueAbortedError_base<{
40
+ reason?: unknown;
41
+ }> {}
42
+ declare const QueueTaskAbortedError_base: TaggedErrorFactory<"QueueTaskAbortedError">;
43
+ /**
44
+ * Error raised when a specific task is aborted.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * import { Queue } from "@nicolastoulemont/std"
49
+ *
50
+ * const error = new Queue.QueueTaskAbortedError({ reason: "signal" })
51
+ * // => { _tag: "QueueTaskAbortedError", reason: "signal" }
52
+ * ```
53
+ *
54
+ * @category Models
55
+ */
56
+ declare class QueueTaskAbortedError extends QueueTaskAbortedError_base<{
57
+ reason?: unknown;
58
+ }> {}
59
+ /**
60
+ * Check if a value is a `Queue`.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import { Queue } from "@nicolastoulemont/std"
65
+ *
66
+ * const queue = Queue.make()
67
+ * const isQueue = Queue.is(queue)
68
+ * // => true
69
+ * ```
70
+ *
71
+ * @category Guards
72
+ */
73
+ declare const is: (value: unknown) => value is Queue;
74
+ /**
75
+ * Create a queue with default unbounded capacity.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * import { Queue } from "@nicolastoulemont/std"
80
+ *
81
+ * const queue = Queue.make()
82
+ * const pending = queue.pending
83
+ * // => 0
84
+ * ```
85
+ *
86
+ * @category Constructors
87
+ */
88
+ declare const make: (options?: QueueOptions) => Queue;
89
+ /**
90
+ * Create a queue with bounded capacity.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * import { Queue } from "@nicolastoulemont/std"
95
+ *
96
+ * const queue = Queue.bounded(2)
97
+ * const size = queue.size
98
+ * // => 0
99
+ * ```
100
+ *
101
+ * @category Constructors
102
+ */
103
+ declare const bounded: (maxSize: number, options?: QueueBoundedOptions) => Queue;
104
+ /**
105
+ * Create a queue with explicit unbounded capacity.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * import { Queue } from "@nicolastoulemont/std"
110
+ *
111
+ * const queue = Queue.unbounded()
112
+ * const paused = queue.isPaused
113
+ * // => false
114
+ * ```
115
+ *
116
+ * @category Constructors
117
+ */
118
+ declare const unbounded: (options?: QueueOptions) => Queue;
119
+ //#endregion
120
+ export { queue_d_exports as t };
121
+ //# sourceMappingURL=index-Cq2IFito.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Cq2IFito.d.mts","names":[],"sources":["../src/queue/queue.ts"],"sourcesContent":[],"mappings":";;;;;;;cAsCsB,uBAAA;;;;;;;;;;;;;AAAA;AAgBT,cAAA,gBAAA,SAAyB,qBAAA,CAAA;EAA0E,KAAA,EAAA,UAAA,GAAA,SAAA;AAchH,CAAA,CAAA,CAAA;AAcA,cA5BgH,sBA4B7E,EA5B6E,kBA4BrE,CAAA,mBAAA,CAAA;AAsG3C;AAsWA;AAgBA;AAgBA;;;;;;;;;;cA1fa,iBAAA,SAA0B;;;cAA8D,4BAAA;;;;;;;;;;;;;;cAcxF,qBAAA,SAA8B;;;;;;;;;;;;;;;;;cAsG9B,iCAAgC;;;;;;;;;;;;;;;cAsWhC,iBAAkB,iBAAe;;;;;;;;;;;;;;;cAgBjC,qCAAsC,wBAAsB;;;;;;;;;;;;;;;cAgB5D,sBAAuB,iBAAe"}