@ducatjs/money 0.1.0 → 0.2.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 (201) hide show
  1. package/README.md +479 -62
  2. package/data/cash-rounding.json +123 -2
  3. package/data/cldr-cash.json +101 -0
  4. package/data/historic.json +78 -0
  5. package/data/iso4217-list-three.xml +1185 -0
  6. package/dist/adyen-fx.d.ts.map +1 -1
  7. package/dist/adyen-fx.js +22 -4
  8. package/dist/adyen-fx.js.map +1 -1
  9. package/dist/boc.d.ts +31 -0
  10. package/dist/boc.d.ts.map +1 -0
  11. package/dist/boc.js +114 -0
  12. package/dist/boc.js.map +1 -0
  13. package/dist/boe.d.ts +33 -0
  14. package/dist/boe.d.ts.map +1 -0
  15. package/dist/boe.js +114 -0
  16. package/dist/boe.js.map +1 -0
  17. package/dist/cash.d.ts +30 -1
  18. package/dist/cash.d.ts.map +1 -1
  19. package/dist/cash.js +50 -2
  20. package/dist/cash.js.map +1 -1
  21. package/dist/convert.d.ts +10 -9
  22. package/dist/convert.d.ts.map +1 -1
  23. package/dist/convert.js +13 -3
  24. package/dist/convert.js.map +1 -1
  25. package/dist/drizzle/mysql.d.ts +105 -0
  26. package/dist/drizzle/mysql.d.ts.map +1 -0
  27. package/dist/drizzle/mysql.js +60 -0
  28. package/dist/drizzle/mysql.js.map +1 -0
  29. package/dist/drizzle/pg.d.ts +103 -0
  30. package/dist/drizzle/pg.d.ts.map +1 -0
  31. package/dist/drizzle/pg.js +60 -0
  32. package/dist/drizzle/pg.js.map +1 -0
  33. package/dist/drizzle/sqlite.d.ts +102 -0
  34. package/dist/drizzle/sqlite.d.ts.map +1 -0
  35. package/dist/drizzle/sqlite.js +59 -0
  36. package/dist/drizzle/sqlite.js.map +1 -0
  37. package/dist/ecb.d.ts +37 -2
  38. package/dist/ecb.d.ts.map +1 -1
  39. package/dist/ecb.js +148 -10
  40. package/dist/ecb.js.map +1 -1
  41. package/dist/fed.d.ts +35 -0
  42. package/dist/fed.d.ts.map +1 -0
  43. package/dist/fed.js +134 -0
  44. package/dist/fed.js.map +1 -0
  45. package/dist/fetch.d.ts +45 -0
  46. package/dist/fetch.d.ts.map +1 -1
  47. package/dist/fetch.js +167 -24
  48. package/dist/fetch.js.map +1 -1
  49. package/dist/fn.d.ts +8 -1
  50. package/dist/fn.d.ts.map +1 -1
  51. package/dist/fn.js +8 -1
  52. package/dist/fn.js.map +1 -1
  53. package/dist/generated/cash.d.ts +2 -0
  54. package/dist/generated/cash.d.ts.map +1 -1
  55. package/dist/generated/cash.js +101 -0
  56. package/dist/generated/cash.js.map +1 -1
  57. package/dist/generated/historic.d.ts +337 -0
  58. package/dist/generated/historic.d.ts.map +1 -0
  59. package/dist/generated/historic.js +66 -0
  60. package/dist/generated/historic.js.map +1 -0
  61. package/dist/historic.d.ts +40 -0
  62. package/dist/historic.d.ts.map +1 -0
  63. package/dist/historic.js +43 -0
  64. package/dist/historic.js.map +1 -0
  65. package/dist/history.d.ts +96 -0
  66. package/dist/history.d.ts.map +1 -0
  67. package/dist/history.js +213 -0
  68. package/dist/history.js.map +1 -0
  69. package/dist/hmrc.d.ts +28 -0
  70. package/dist/hmrc.d.ts.map +1 -0
  71. package/dist/hmrc.js +108 -0
  72. package/dist/hmrc.js.map +1 -0
  73. package/dist/index.d.ts +1 -1
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/kysely.d.ts +120 -0
  78. package/dist/kysely.d.ts.map +1 -0
  79. package/dist/kysely.js +309 -0
  80. package/dist/kysely.js.map +1 -0
  81. package/dist/money.d.ts +93 -9
  82. package/dist/money.d.ts.map +1 -1
  83. package/dist/money.js +135 -9
  84. package/dist/money.js.map +1 -1
  85. package/dist/parse.d.ts +45 -1
  86. package/dist/parse.d.ts.map +1 -1
  87. package/dist/parse.js +290 -3
  88. package/dist/parse.js.map +1 -1
  89. package/dist/pg.d.ts +100 -0
  90. package/dist/pg.d.ts.map +1 -0
  91. package/dist/pg.js +343 -0
  92. package/dist/pg.js.map +1 -0
  93. package/dist/plugins/all.d.ts +8 -1
  94. package/dist/plugins/all.d.ts.map +1 -1
  95. package/dist/plugins/all.js +8 -1
  96. package/dist/plugins/all.js.map +1 -1
  97. package/dist/plugins/convert.d.ts +3 -4
  98. package/dist/plugins/convert.d.ts.map +1 -1
  99. package/dist/plugins/convert.js.map +1 -1
  100. package/dist/plugins/tax.d.ts +4 -5
  101. package/dist/plugins/tax.d.ts.map +1 -1
  102. package/dist/plugins/tax.js.map +1 -1
  103. package/dist/policy.d.ts +34 -0
  104. package/dist/policy.d.ts.map +1 -0
  105. package/dist/policy.js +90 -0
  106. package/dist/policy.js.map +1 -0
  107. package/dist/prisma.d.ts +25 -14
  108. package/dist/prisma.d.ts.map +1 -1
  109. package/dist/prisma.js +29 -19
  110. package/dist/prisma.js.map +1 -1
  111. package/dist/provider.d.ts +21 -7
  112. package/dist/provider.d.ts.map +1 -1
  113. package/dist/provider.js +51 -11
  114. package/dist/provider.js.map +1 -1
  115. package/dist/rate-text.d.ts +38 -0
  116. package/dist/rate-text.d.ts.map +1 -0
  117. package/dist/rate-text.js +143 -0
  118. package/dist/rate-text.js.map +1 -0
  119. package/dist/rate.d.ts +61 -5
  120. package/dist/rate.d.ts.map +1 -1
  121. package/dist/rate.js +133 -33
  122. package/dist/rate.js.map +1 -1
  123. package/dist/rounding.js +1 -1
  124. package/dist/rounding.js.map +1 -1
  125. package/dist/schema.d.ts +43 -0
  126. package/dist/schema.d.ts.map +1 -0
  127. package/dist/schema.js +77 -0
  128. package/dist/schema.js.map +1 -0
  129. package/dist/sql.d.ts +54 -0
  130. package/dist/sql.d.ts.map +1 -0
  131. package/dist/sql.js +131 -0
  132. package/dist/sql.js.map +1 -0
  133. package/dist/tax.d.ts +13 -9
  134. package/dist/tax.d.ts.map +1 -1
  135. package/dist/tax.js +20 -4
  136. package/dist/tax.js.map +1 -1
  137. package/dist/testing/arbitraries.d.ts +43 -0
  138. package/dist/testing/arbitraries.d.ts.map +1 -0
  139. package/dist/testing/arbitraries.js +98 -0
  140. package/dist/testing/arbitraries.js.map +1 -0
  141. package/dist/testing/index.d.ts +67 -0
  142. package/dist/testing/index.d.ts.map +1 -0
  143. package/dist/testing/index.js +159 -0
  144. package/dist/testing/index.js.map +1 -0
  145. package/dist/testing/jest.d.ts +2 -0
  146. package/dist/testing/jest.d.ts.map +1 -0
  147. package/dist/testing/jest.js +15 -0
  148. package/dist/testing/jest.js.map +1 -0
  149. package/dist/testing/vitest.d.ts +7 -0
  150. package/dist/testing/vitest.d.ts.map +1 -0
  151. package/dist/testing/vitest.js +12 -0
  152. package/dist/testing/vitest.js.map +1 -0
  153. package/dist/valibot.d.ts +33 -0
  154. package/dist/valibot.d.ts.map +1 -0
  155. package/dist/valibot.js +61 -0
  156. package/dist/valibot.js.map +1 -0
  157. package/dist/zod.d.ts +36 -0
  158. package/dist/zod.d.ts.map +1 -0
  159. package/dist/zod.js +58 -0
  160. package/dist/zod.js.map +1 -0
  161. package/package.json +116 -5
  162. package/src/adyen-fx.ts +25 -4
  163. package/src/boc.ts +136 -0
  164. package/src/boe.ts +131 -0
  165. package/src/cash.ts +70 -2
  166. package/src/convert.ts +33 -15
  167. package/src/drizzle/mysql.ts +78 -0
  168. package/src/drizzle/pg.ts +78 -0
  169. package/src/drizzle/sqlite.ts +70 -0
  170. package/src/ecb.ts +179 -13
  171. package/src/fed.ts +146 -0
  172. package/src/fetch.ts +207 -28
  173. package/src/fn.ts +14 -0
  174. package/src/generated/cash.ts +103 -0
  175. package/src/generated/historic.ts +67 -0
  176. package/src/historic.ts +77 -0
  177. package/src/history.ts +333 -0
  178. package/src/hmrc.ts +125 -0
  179. package/src/index.ts +4 -0
  180. package/src/kysely.ts +588 -0
  181. package/src/money.ts +210 -12
  182. package/src/parse.ts +371 -4
  183. package/src/pg.ts +410 -0
  184. package/src/plugins/all.ts +10 -0
  185. package/src/plugins/convert.ts +4 -5
  186. package/src/plugins/tax.ts +9 -10
  187. package/src/policy.ts +124 -0
  188. package/src/prisma.ts +91 -10
  189. package/src/provider.ts +81 -16
  190. package/src/rate-text.ts +151 -0
  191. package/src/rate.ts +205 -36
  192. package/src/rounding.ts +1 -1
  193. package/src/schema.ts +119 -0
  194. package/src/sql.ts +178 -0
  195. package/src/tax.ts +40 -9
  196. package/src/testing/arbitraries.ts +134 -0
  197. package/src/testing/index.ts +247 -0
  198. package/src/testing/jest.ts +18 -0
  199. package/src/testing/vitest.ts +18 -0
  200. package/src/valibot.ts +87 -0
  201. package/src/zod.ts +78 -0
package/dist/fetch.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // Network fetchers for published reference rates, using the platform fetch. Opt-in: nothing else in
2
2
  // the library imports this module, so core and @ducatjs/money/convert never touch the
3
3
  // network. You decide when to call it and how to cache.
4
- import { parseEcbXml } from './ecb.js';
4
+ import { parseBankOfCanadaJson } from './boc.js';
5
+ import { parseEcbSdmxCsv, parseEcbSdmxDecimals, parseEcbXml } from './ecb.js';
5
6
  const DEFAULT_TIMEOUT_MS = 30_000;
6
7
  /** The ECB's eurofxref files: the latest day, the last 90 days, and the full history since 1999. */
7
8
  export const ECB_URLS = {
@@ -30,50 +31,192 @@ export class FetchRatesError extends Error {
30
31
  */
31
32
  export async function fetchEcb(options) {
32
33
  const url = ECB_URLS[options?.history ?? 'daily'];
34
+ const body = await getText(url, 'application/xml', options);
35
+ return parsedFrom(url, () => parseEcbXml(body));
36
+ }
37
+ /** The caller's signal, a timeout signal, or both combined. */
38
+ function requestSignal(signal, timeout) {
39
+ if (!Number.isFinite(timeout) || timeout < 0) {
40
+ throw new RangeError(`timeout must be a non-negative number of milliseconds, got ${timeout}`);
41
+ }
42
+ const statics = globalThis.AbortSignal;
43
+ if (timeout === 0 || statics?.timeout === undefined) {
44
+ return signal;
45
+ }
46
+ const timeoutSignal = statics.timeout(timeout);
47
+ if (signal === undefined) {
48
+ return timeoutSignal;
49
+ }
50
+ if (statics.any === undefined) {
51
+ // Without AbortSignal.any the caller's signal wins: it is the one they can control.
52
+ return signal;
53
+ }
54
+ return statics.any([signal, timeoutSignal]);
55
+ }
56
+ /** The ECB Data Portal's SDMX REST API (no key, and CORS-enabled, so it works in browsers). */
57
+ export const ECB_DATA_API = 'https://data-api.ecb.europa.eu/service/data/EXR';
58
+ /**
59
+ * A request's UTC day: a 'YYYY-MM-DD' string that is a real calendar day, or a Date (any
60
+ * offset) as its UTC day. Anything else is a RangeError, before any request is made.
61
+ */
62
+ function requestDay(time, name) {
63
+ let day;
64
+ if (typeof time === 'string') {
65
+ day = time;
66
+ }
67
+ else {
68
+ day = Number.isNaN(time.getTime()) ? '' : time.toISOString().slice(0, 10);
69
+ }
70
+ const match = /^(\d{4})-(\d\d)-(\d\d)$/.exec(day);
71
+ const date = match === null ? undefined : new Date(Date.UTC(+match[1], +match[2] - 1, +match[3]));
72
+ // Date.UTC rolls 30 February over into March, so a real day must come back unchanged.
73
+ if (date === undefined || date.toISOString().slice(0, 10) !== day) {
74
+ throw new RangeError(`${name} must be a date, got ${String(time)}`);
75
+ }
76
+ return day;
77
+ }
78
+ /** Wraps a parser's SyntaxError with the URL the bad file came from (an error page, usually). */
79
+ function parsedFrom(url, parse) {
80
+ try {
81
+ return parse();
82
+ }
83
+ catch (error) {
84
+ if (error instanceof SyntaxError) {
85
+ throw new SyntaxError(`${error.message} (from ${url})`, { cause: error });
86
+ }
87
+ throw error;
88
+ }
89
+ }
90
+ /** GETs `url` as text, with the timeout and signal handling every fetcher here shares. */
91
+ async function getText(url, accept, options) {
92
+ return (await getTextOrNotFound(url, accept, options, false));
93
+ }
94
+ /** getText, or undefined for HTTP 404 when `notFoundIsEmpty` (an API's "no results"). */
95
+ async function getTextOrNotFound(url, accept, options, notFoundIsEmpty) {
33
96
  const fetchFunction = options?.fetch ?? globalThis.fetch;
34
97
  if (fetchFunction === undefined) {
35
98
  throw new TypeError('No fetch available: pass options.fetch');
36
99
  }
37
100
  const init = {
38
- headers: { accept: 'application/xml' },
101
+ headers: { accept },
39
102
  };
40
103
  const signal = requestSignal(options?.signal, options?.timeout ?? DEFAULT_TIMEOUT_MS);
41
104
  if (signal !== undefined) {
42
105
  init.signal = signal;
43
106
  }
44
107
  const response = await fetchFunction(url, init);
108
+ if (notFoundIsEmpty && response.status === 404) {
109
+ return undefined;
110
+ }
45
111
  if (!response.ok) {
46
112
  throw new FetchRatesError(url, response.status);
47
113
  }
48
- const body = await response.text();
114
+ return response.text();
115
+ }
116
+ /**
117
+ * Fetches a date range of ECB euro reference rates from the ECB Data Portal and parses them with
118
+ * parseEcbSdmxCsv: EUR-based tables, one per TARGET working day, newest first, with the published
119
+ * digits. It makes two requests: the series' DECIMALS (small) and the observations without
120
+ * attributes, which keeps the full history since 1999 to about 15 MB. Give a few days before the
121
+ * first day you need, so that a lookback from it has a table to fall back on. A range with no
122
+ * rates (a weekend, or after the latest day) gives []. Both requests share one timeout and are
123
+ * cancelled together: if one fails, the other is aborted. The ECB states that its rates are for
124
+ * information purposes only.
125
+ *
126
+ * const tables = await fetchEcbRange({ start: '2026-01-01', currencies: ['USD', 'JPY'] });
127
+ * const history = rateHistory(tables); // from @ducatjs/money/convert/history
128
+ */
129
+ export async function fetchEcbRange(options) {
130
+ const currencies = options.currencies ?? [];
131
+ for (const currency of currencies) {
132
+ if (!/^[A-Z]{3}$/.test(currency)) {
133
+ throw new RangeError(`Not an ISO currency code: ${currency}`);
134
+ }
135
+ }
136
+ const start = requestDay(options.start, 'start');
137
+ if (start < '1999-01-04') {
138
+ throw new RangeError(`The ECB's rates start on 1999-01-04, not ${start}`);
139
+ }
140
+ let query = `?format=csvdata&startPeriod=${start}`;
141
+ if (options.end !== undefined) {
142
+ const end = requestDay(options.end, 'end');
143
+ if (end < start) {
144
+ throw new RangeError(`end ${end} is before start ${start}`);
145
+ }
146
+ query += `&endPeriod=${end}`;
147
+ }
148
+ const url = `${ECB_DATA_API}/D.${currencies.join('+')}.EUR.SP00.A`;
149
+ const seriesUrl = `${url}?format=csvdata&detail=nodata`;
150
+ const dataUrl = `${url}${query}&detail=dataonly`;
151
+ // One controller for both requests, tied to the caller's signal and the timeout, so that a
152
+ // failure of either cancels the other (the data can be ~15 MB) instead of letting it run on.
153
+ let shared = options;
154
+ let controller;
155
+ const Controller = globalThis
156
+ .AbortController;
157
+ if (Controller !== undefined) {
158
+ const own = new Controller();
159
+ controller = own;
160
+ const outer = requestSignal(options.signal, options.timeout ?? DEFAULT_TIMEOUT_MS);
161
+ if (outer?.aborted === true) {
162
+ own.abort(outer.reason);
163
+ }
164
+ else {
165
+ outer?.addEventListener('abort', () => own.abort(outer.reason), { once: true });
166
+ }
167
+ shared = { ...options, signal: own.signal, timeout: 0 };
168
+ }
169
+ let series;
170
+ let data;
49
171
  try {
50
- return parseEcbXml(body);
172
+ [series, data] = await Promise.all([
173
+ getText(seriesUrl, 'text/csv', shared),
174
+ getTextOrNotFound(dataUrl, 'text/csv', shared, true),
175
+ ]);
51
176
  }
52
177
  catch (error) {
53
- // An error page or a captive portal is the usual cause, so say where the bad file came from.
54
- if (error instanceof SyntaxError) {
55
- throw new SyntaxError(`${error.message} (from ${url})`, { cause: error });
56
- }
178
+ controller?.abort(error);
57
179
  throw error;
58
180
  }
59
- }
60
- /** The caller's signal, a timeout signal, or both combined. */
61
- function requestSignal(signal, timeout) {
62
- if (!Number.isFinite(timeout) || timeout < 0) {
63
- throw new RangeError(`timeout must be a non-negative number of milliseconds, got ${timeout}`);
64
- }
65
- const statics = globalThis.AbortSignal;
66
- if (timeout === 0 || statics?.timeout === undefined) {
67
- return signal;
181
+ if (data === undefined) {
182
+ return [];
68
183
  }
69
- const timeoutSignal = statics.timeout(timeout);
70
- if (signal === undefined) {
71
- return timeoutSignal;
184
+ const decimals = parsedFrom(seriesUrl, () => parseEcbSdmxDecimals(series));
185
+ return parsedFrom(dataUrl, () => parseEcbSdmxCsv(data, { decimals }));
186
+ }
187
+ /** The Bank of Canada's Valet API for its daily exchange rates (no key; CORS-enabled). */
188
+ export const BANK_OF_CANADA_URL = 'https://www.bankofcanada.ca/valet/observations/group/FX_RATES_DAILY/json';
189
+ /**
190
+ * Fetches the Bank of Canada's daily exchange rates from its Valet API and parses them with
191
+ * parseBankOfCanadaJson: CAD-based tables, newest first. Without `start`, only the latest day;
192
+ * without `end`, up to the latest. A range with no business days in it gives [].
193
+ * The Bank asks users to keep within its request limits, which it doesn't publish, and its rates
194
+ * are "released for statistical and analytical purposes only", not for transactions.
195
+ *
196
+ * const [latest] = await fetchBankOfCanada();
197
+ * const year = await fetchBankOfCanada({ start: '2026-01-01' });
198
+ */
199
+ export async function fetchBankOfCanada(options) {
200
+ let query = '?recent=1';
201
+ if (options?.start !== undefined) {
202
+ const start = requestDay(options.start, 'start');
203
+ if (start < '2017-01-03') {
204
+ throw new RangeError(`Valet's daily rates start on 2017-01-03, not ${start}`);
205
+ }
206
+ query = `?start_date=${start}`;
207
+ if (options.end !== undefined) {
208
+ const end = requestDay(options.end, 'end');
209
+ if (end < start) {
210
+ throw new RangeError(`end ${end} is before start ${start}`);
211
+ }
212
+ query += `&end_date=${end}`;
213
+ }
72
214
  }
73
- if (statics.any === undefined) {
74
- // Without AbortSignal.any the caller's signal wins: it is the one they can control.
75
- return signal;
215
+ else if (options?.end !== undefined) {
216
+ throw new RangeError('end needs a start');
76
217
  }
77
- return statics.any([signal, timeoutSignal]);
218
+ const url = `${BANK_OF_CANADA_URL}${query}`;
219
+ const body = await getText(url, 'application/json', options);
220
+ return parsedFrom(url, () => parseBankOfCanadaJson(body));
78
221
  }
79
222
  //# sourceMappingURL=fetch.js.map
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
package/dist/fn.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * (`add(price, fee)`, `allocate(total, [1, 1])`), for code that prefers that style or must not
4
4
  * install methods on Money (importing it changes no prototype).
5
5
  */
6
- export { money, fromMinor, zero, fromJSON, isMoney, extendMoney, type ExtendMoneyOptions, sum, ratio, add, subtract, negate, abs, multiply, divide, round, toScale, compare, equals, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, isZero, isPositive, isNegative, sign, min, max, clamp, toDecimal, toMinor, toMinorNumber, CurrencyMismatchError, type Money, type MoneyJSON, type MoneyOptions, type CurrencyInput, type Factor, type Ratio, } from './money.js';
6
+ export { money, fromMinor, zero, fromJSON, isMoney, isMoneyIn, assertCurrency, extendMoney, type ExtendMoneyOptions, sum, ratio, add, subtract, negate, abs, multiply, divide, round, toScale, compare, equals, identical, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, isZero, isPositive, isNegative, sign, min, max, clamp, majorPart, minorPart, toDecimal, toMinor, toMinorNumber, CurrencyMismatchError, type RoundingPolicy, type RoundingInput, type Money, type MoneyJSON, type MoneyOptions, type CurrencyInput, type Factor, type Ratio, } from './money.js';
7
7
  export { DEFAULT_ROUNDING, Rounding, RoundingError, type RoundingMode } from './rounding.js';
8
8
  export { currencyExponent, defineCurrency, isCurrency, ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, type CurrencyCode, type IsoCurrencyCode, type CustomCurrencies, } from './currency.js';
9
9
  export * from './allocate.js';
@@ -11,9 +11,16 @@ export * from './tax.js';
11
11
  export * from './convert.js';
12
12
  export * from './exact.js';
13
13
  export * from './ecb.js';
14
+ export * from './boc.js';
15
+ export * from './boe.js';
16
+ export * from './hmrc.js';
17
+ export * from './fed.js';
18
+ export * from './history.js';
14
19
  export * from './stripe-fx.js';
15
20
  export * from './adyen-fx.js';
16
21
  export * from './cash.js';
22
+ export * from './historic.js';
23
+ export { roundingPolicy, isoPolicy, assertScale, type RoundingPolicyOptions } from './policy.js';
17
24
  export * from './format.js';
18
25
  export * from './parse.js';
19
26
  export * from './stripe.js';
package/dist/fn.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,KAAK,kBAAkB,EACvB,GAAG,EACH,KAAK,EACL,GAAG,EACH,QAAQ,EACR,MAAM,EACN,GAAG,EACH,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,UAAU,EACV,IAAI,EACJ,GAAG,EACH,GAAG,EACH,KAAK,EACL,SAAS,EACT,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,KAAK,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,WAAW,EACX,KAAK,kBAAkB,EACvB,GAAG,EACH,KAAK,EACL,GAAG,EACH,QAAQ,EACR,MAAM,EACN,GAAG,EACH,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,UAAU,EACV,IAAI,EACJ,GAAG,EACH,GAAG,EACH,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,KAAK,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACjG,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
package/dist/fn.js CHANGED
@@ -6,7 +6,7 @@
6
6
  // Everything the root entry exports, plus the core Money methods as plain functions. Each is
7
7
  // re-exported straight from its own module, so every name is one re-export away from its definition
8
8
  // (under vitest each hop is a getter call, which shows in the CodSpeed benchmarks).
9
- export { money, fromMinor, zero, fromJSON, isMoney, extendMoney, sum, ratio, add, subtract, negate, abs, multiply, divide, round, toScale, compare, equals, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, isZero, isPositive, isNegative, sign, min, max, clamp, toDecimal, toMinor, toMinorNumber, CurrencyMismatchError, } from './money.js';
9
+ export { money, fromMinor, zero, fromJSON, isMoney, isMoneyIn, assertCurrency, extendMoney, sum, ratio, add, subtract, negate, abs, multiply, divide, round, toScale, compare, equals, identical, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, isZero, isPositive, isNegative, sign, min, max, clamp, majorPart, minorPart, toDecimal, toMinor, toMinorNumber, CurrencyMismatchError, } from './money.js';
10
10
  export { DEFAULT_ROUNDING, Rounding, RoundingError } from './rounding.js';
11
11
  export { currencyExponent, defineCurrency, isCurrency, ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, } from './currency.js';
12
12
  export * from './allocate.js';
@@ -14,9 +14,16 @@ export * from './tax.js';
14
14
  export * from './convert.js';
15
15
  export * from './exact.js';
16
16
  export * from './ecb.js';
17
+ export * from './boc.js';
18
+ export * from './boe.js';
19
+ export * from './hmrc.js';
20
+ export * from './fed.js';
21
+ export * from './history.js';
17
22
  export * from './stripe-fx.js';
18
23
  export * from './adyen-fx.js';
19
24
  export * from './cash.js';
25
+ export * from './historic.js';
26
+ export { roundingPolicy, isoPolicy, assertScale } from './policy.js';
20
27
  export * from './format.js';
21
28
  export * from './parse.js';
22
29
  export * from './stripe.js';
package/dist/fn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,6FAA6F;AAC7F,oGAAoG;AACpG,oFAAoF;AACpF,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EAEX,GAAG,EACH,KAAK,EACL,GAAG,EACH,QAAQ,EACR,MAAM,EACN,GAAG,EACH,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,UAAU,EACV,IAAI,EACJ,GAAG,EACH,GAAG,EACH,KAAK,EACL,SAAS,EACT,OAAO,EACP,aAAa,EACb,qBAAqB,GAOtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,eAAe,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,6FAA6F;AAC7F,oGAAoG;AACpG,oFAAoF;AACpF,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,WAAW,EAEX,GAAG,EACH,KAAK,EACL,GAAG,EACH,QAAQ,EACR,MAAM,EACN,GAAG,EACH,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,UAAU,EACV,IAAI,EACJ,GAAG,EACH,GAAG,EACH,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,aAAa,EACb,qBAAqB,GAStB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,eAAe,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAA8B,MAAM,aAAa,CAAC;AACjG,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -7,6 +7,8 @@ export interface CashRule {
7
7
  /** false: only secondary sources were found. */
8
8
  readonly verified: boolean;
9
9
  readonly source: string;
10
+ /** The tie rule the source prescribes, where it isn't halfExpand. */
11
+ readonly rounding?: import('../rounding.js').RoundingMode;
10
12
  }
11
13
  export declare const CASH_RULES: readonly CashRule[];
12
14
  //# sourceMappingURL=cash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cash.d.ts","sourceRoot":"","sources":["../../src/generated/cash.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAwWzC,CAAC"}
1
+ {"version":3,"file":"cash.d.ts","sourceRoot":"","sources":["../../src/generated/cash.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,gBAAgB,EAAE,YAAY,CAAC;CAC3D;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EA6czC,CAAC"}
@@ -359,6 +359,107 @@ export const CASH_RULES = [
359
359
  "scope": "cash (permitted, not required; varies by state)",
360
360
  "verified": false,
361
361
  "source": "https://en.wikipedia.org/wiki/Cash_rounding"
362
+ },
363
+ {
364
+ "currency": "AMD",
365
+ "increment": 1000,
366
+ "countries": [
367
+ "AM"
368
+ ],
369
+ "scope": "cash (practice)",
370
+ "verified": true,
371
+ "source": "https://old.cba.am/en/SitePages/nccracoinscirculated.aspx"
372
+ },
373
+ {
374
+ "currency": "CRC",
375
+ "increment": 1000,
376
+ "countries": [
377
+ "CR"
378
+ ],
379
+ "scope": "cash (practice)",
380
+ "verified": true,
381
+ "source": "https://www.bccr.fi.cr/cr/es/noticias/listado-de-noticias/2026/monedas-de-5-10-y-25-del-diseno-anterior-dejaran-de-funcionar-como-medio-de-pago-el-1-de-julio-del-2.html"
382
+ },
383
+ {
384
+ "currency": "GYD",
385
+ "increment": 100,
386
+ "countries": [
387
+ "GY"
388
+ ],
389
+ "scope": "cash",
390
+ "verified": false,
391
+ "source": "https://bankofguyana.org.gy/bog/images/communications/press_release/Notice%20to%20stop%20minting%20one%20dollar%20coin.pdf"
392
+ },
393
+ {
394
+ "currency": "MNT",
395
+ "increment": 100,
396
+ "countries": [
397
+ "MN"
398
+ ],
399
+ "scope": "cash",
400
+ "verified": true,
401
+ "source": "https://www.mongolbank.mn/en/p/1416"
402
+ },
403
+ {
404
+ "currency": "MRU",
405
+ "increment": 20,
406
+ "countries": [
407
+ "MR"
408
+ ],
409
+ "scope": "cash",
410
+ "verified": false,
411
+ "source": "https://cridem.org/media/documents/bcm-presentation-gr-2017.pdf"
412
+ },
413
+ {
414
+ "currency": "PKR",
415
+ "increment": 100,
416
+ "countries": [
417
+ "PK"
418
+ ],
419
+ "scope": "cash",
420
+ "verified": true,
421
+ "source": "https://www.sbp.org.pk/press/2014/Coins-15-Sep-2014.pdf"
422
+ },
423
+ {
424
+ "currency": "RSD",
425
+ "increment": 100,
426
+ "countries": [
427
+ "RS"
428
+ ],
429
+ "scope": "cash (statutory)",
430
+ "verified": true,
431
+ "source": "https://www.nbs.rs/export/sites/NBS_site/documents/propisi/propisi-trz/opticaj_povlacenje_50_para.pdf",
432
+ "rounding": "halfTrunc"
433
+ },
434
+ {
435
+ "currency": "TZS",
436
+ "increment": 5000,
437
+ "countries": [
438
+ "TZ"
439
+ ],
440
+ "scope": "cash (practice)",
441
+ "verified": false,
442
+ "source": "https://www.bot.go.tz/Publications/Regular/Quarterly%20statistical%20Bulletin/en/2025090409030924.pdf"
443
+ },
444
+ {
445
+ "currency": "TWD",
446
+ "increment": 100,
447
+ "countries": [
448
+ "TW"
449
+ ],
450
+ "scope": "cash (practice)",
451
+ "verified": true,
452
+ "source": "https://www.cbc.gov.tw/tw/cp-769-26060-37841-1.html"
453
+ },
454
+ {
455
+ "currency": "UZS",
456
+ "increment": 5000,
457
+ "countries": [
458
+ "UZ"
459
+ ],
460
+ "scope": "cash (practice)",
461
+ "verified": true,
462
+ "source": "https://cbu.uz/en/banknotes-coins/coins/"
362
463
  }
363
464
  ];
364
465
  //# sourceMappingURL=cash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cash.js","sourceRoot":"","sources":["../../src/generated/cash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cash.js","sourceRoot":"","sources":["../../src/generated/cash.ts"],"names":[],"mappings":"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"}