@ducatjs/money 0.0.0-stage → 0.1.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 (285) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +51 -0
  3. package/README.md +617 -2
  4. package/assets/CREDITS.md +12 -0
  5. package/data/adyen-fx.json +19 -0
  6. package/data/adyen.json +171 -0
  7. package/data/braintree.json +223 -0
  8. package/data/cash-rounding.json +399 -0
  9. package/data/checkout.json +230 -0
  10. package/data/iso4217-list-one.xml +1956 -0
  11. package/data/klarna.json +95 -0
  12. package/data/paypal.json +65 -0
  13. package/data/stripe-fx.json +17 -0
  14. package/data/stripe.json +285 -0
  15. package/dist/adyen-fx.d.ts +25 -0
  16. package/dist/adyen-fx.d.ts.map +1 -0
  17. package/dist/adyen-fx.js +122 -0
  18. package/dist/adyen-fx.js.map +1 -0
  19. package/dist/adyen.d.ts +25 -0
  20. package/dist/adyen.d.ts.map +1 -0
  21. package/dist/adyen.js +34 -0
  22. package/dist/adyen.js.map +1 -0
  23. package/dist/allocate.d.ts +72 -0
  24. package/dist/allocate.d.ts.map +1 -0
  25. package/dist/allocate.js +314 -0
  26. package/dist/allocate.js.map +1 -0
  27. package/dist/bag.d.ts +58 -0
  28. package/dist/bag.d.ts.map +1 -0
  29. package/dist/bag.js +122 -0
  30. package/dist/bag.js.map +1 -0
  31. package/dist/braintree.d.ts +34 -0
  32. package/dist/braintree.d.ts.map +1 -0
  33. package/dist/braintree.js +45 -0
  34. package/dist/braintree.js.map +1 -0
  35. package/dist/cash.d.ts +35 -0
  36. package/dist/cash.d.ts.map +1 -0
  37. package/dist/cash.js +86 -0
  38. package/dist/cash.js.map +1 -0
  39. package/dist/checkout.d.ts +42 -0
  40. package/dist/checkout.d.ts.map +1 -0
  41. package/dist/checkout.js +52 -0
  42. package/dist/checkout.js.map +1 -0
  43. package/dist/convert.d.ts +51 -0
  44. package/dist/convert.d.ts.map +1 -0
  45. package/dist/convert.js +55 -0
  46. package/dist/convert.js.map +1 -0
  47. package/dist/currency.d.ts +22 -0
  48. package/dist/currency.d.ts.map +1 -0
  49. package/dist/currency.js +38 -0
  50. package/dist/currency.js.map +1 -0
  51. package/dist/decimal.d.ts +52 -0
  52. package/dist/decimal.d.ts.map +1 -0
  53. package/dist/decimal.js +251 -0
  54. package/dist/decimal.js.map +1 -0
  55. package/dist/ecb.d.ts +17 -0
  56. package/dist/ecb.d.ts.map +1 -0
  57. package/dist/ecb.js +147 -0
  58. package/dist/ecb.js.map +1 -0
  59. package/dist/exact.d.ts +62 -0
  60. package/dist/exact.d.ts.map +1 -0
  61. package/dist/exact.js +147 -0
  62. package/dist/exact.js.map +1 -0
  63. package/dist/fetch.d.ts +58 -0
  64. package/dist/fetch.d.ts.map +1 -0
  65. package/dist/fetch.js +79 -0
  66. package/dist/fetch.js.map +1 -0
  67. package/dist/fixed.d.ts +121 -0
  68. package/dist/fixed.d.ts.map +1 -0
  69. package/dist/fixed.js +420 -0
  70. package/dist/fixed.js.map +1 -0
  71. package/dist/fn.d.ts +27 -0
  72. package/dist/fn.d.ts.map +1 -0
  73. package/dist/fn.js +30 -0
  74. package/dist/fn.js.map +1 -0
  75. package/dist/format.d.ts +13 -0
  76. package/dist/format.d.ts.map +1 -0
  77. package/dist/format.js +90 -0
  78. package/dist/format.js.map +1 -0
  79. package/dist/generated/adyen.d.ts +3 -0
  80. package/dist/generated/adyen.d.ts.map +1 -0
  81. package/dist/generated/adyen.js +144 -0
  82. package/dist/generated/adyen.js.map +1 -0
  83. package/dist/generated/braintree.d.ts +3 -0
  84. package/dist/generated/braintree.d.ts.map +1 -0
  85. package/dist/generated/braintree.js +140 -0
  86. package/dist/generated/braintree.js.map +1 -0
  87. package/dist/generated/cash.d.ts +12 -0
  88. package/dist/generated/cash.d.ts.map +1 -0
  89. package/dist/generated/cash.js +364 -0
  90. package/dist/generated/cash.js.map +1 -0
  91. package/dist/generated/checkout.d.ts +3 -0
  92. package/dist/generated/checkout.d.ts.map +1 -0
  93. package/dist/generated/checkout.js +151 -0
  94. package/dist/generated/checkout.js.map +1 -0
  95. package/dist/generated/iso4217.d.ts +174 -0
  96. package/dist/generated/iso4217.d.ts.map +1 -0
  97. package/dist/generated/iso4217.js +175 -0
  98. package/dist/generated/iso4217.js.map +1 -0
  99. package/dist/generated/kernel.d.ts +17 -0
  100. package/dist/generated/kernel.d.ts.map +1 -0
  101. package/dist/generated/kernel.js +208 -0
  102. package/dist/generated/kernel.js.map +1 -0
  103. package/dist/generated/klarna.d.ts +3 -0
  104. package/dist/generated/klarna.d.ts.map +1 -0
  105. package/dist/generated/klarna.js +21 -0
  106. package/dist/generated/klarna.js.map +1 -0
  107. package/dist/generated/paypal.d.ts +3 -0
  108. package/dist/generated/paypal.d.ts.map +1 -0
  109. package/dist/generated/paypal.js +31 -0
  110. package/dist/generated/paypal.js.map +1 -0
  111. package/dist/generated/stripe.d.ts +8 -0
  112. package/dist/generated/stripe.d.ts.map +1 -0
  113. package/dist/generated/stripe.js +150 -0
  114. package/dist/generated/stripe.js.map +1 -0
  115. package/dist/index.d.ts +11 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +11 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/klarna.d.ts +31 -0
  120. package/dist/klarna.d.ts.map +1 -0
  121. package/dist/klarna.js +38 -0
  122. package/dist/klarna.js.map +1 -0
  123. package/dist/money.d.ts +218 -0
  124. package/dist/money.d.ts.map +1 -0
  125. package/dist/money.js +577 -0
  126. package/dist/money.js.map +1 -0
  127. package/dist/parse.d.ts +11 -0
  128. package/dist/parse.d.ts.map +1 -0
  129. package/dist/parse.js +132 -0
  130. package/dist/parse.js.map +1 -0
  131. package/dist/paypal.d.ts +41 -0
  132. package/dist/paypal.d.ts.map +1 -0
  133. package/dist/paypal.js +58 -0
  134. package/dist/paypal.js.map +1 -0
  135. package/dist/plugins/adyen.d.ts +15 -0
  136. package/dist/plugins/adyen.d.ts.map +1 -0
  137. package/dist/plugins/adyen.js +10 -0
  138. package/dist/plugins/adyen.js.map +1 -0
  139. package/dist/plugins/all.d.ts +22 -0
  140. package/dist/plugins/all.d.ts.map +1 -0
  141. package/dist/plugins/all.js +23 -0
  142. package/dist/plugins/all.js.map +1 -0
  143. package/dist/plugins/allocate.d.ts +20 -0
  144. package/dist/plugins/allocate.d.ts.map +1 -0
  145. package/dist/plugins/allocate.js +26 -0
  146. package/dist/plugins/allocate.js.map +1 -0
  147. package/dist/plugins/braintree.d.ts +12 -0
  148. package/dist/plugins/braintree.d.ts.map +1 -0
  149. package/dist/plugins/braintree.js +12 -0
  150. package/dist/plugins/braintree.js.map +1 -0
  151. package/dist/plugins/cash.d.ts +19 -0
  152. package/dist/plugins/cash.d.ts.map +1 -0
  153. package/dist/plugins/cash.js +16 -0
  154. package/dist/plugins/cash.js.map +1 -0
  155. package/dist/plugins/checkout.d.ts +21 -0
  156. package/dist/plugins/checkout.d.ts.map +1 -0
  157. package/dist/plugins/checkout.js +16 -0
  158. package/dist/plugins/checkout.js.map +1 -0
  159. package/dist/plugins/convert.d.ts +20 -0
  160. package/dist/plugins/convert.d.ts.map +1 -0
  161. package/dist/plugins/convert.js +13 -0
  162. package/dist/plugins/convert.js.map +1 -0
  163. package/dist/plugins/exact.d.ts +15 -0
  164. package/dist/plugins/exact.d.ts.map +1 -0
  165. package/dist/plugins/exact.js +13 -0
  166. package/dist/plugins/exact.js.map +1 -0
  167. package/dist/plugins/fixed.d.ts +17 -0
  168. package/dist/plugins/fixed.d.ts.map +1 -0
  169. package/dist/plugins/fixed.js +13 -0
  170. package/dist/plugins/fixed.js.map +1 -0
  171. package/dist/plugins/format.d.ts +9 -0
  172. package/dist/plugins/format.d.ts.map +1 -0
  173. package/dist/plugins/format.js +16 -0
  174. package/dist/plugins/format.js.map +1 -0
  175. package/dist/plugins/klarna.d.ts +10 -0
  176. package/dist/plugins/klarna.d.ts.map +1 -0
  177. package/dist/plugins/klarna.js +10 -0
  178. package/dist/plugins/klarna.js.map +1 -0
  179. package/dist/plugins/paypal.d.ts +14 -0
  180. package/dist/plugins/paypal.d.ts.map +1 -0
  181. package/dist/plugins/paypal.js +16 -0
  182. package/dist/plugins/paypal.js.map +1 -0
  183. package/dist/plugins/prisma.d.ts +8 -0
  184. package/dist/plugins/prisma.d.ts.map +1 -0
  185. package/dist/plugins/prisma.js +13 -0
  186. package/dist/plugins/prisma.js.map +1 -0
  187. package/dist/plugins/stripe.d.ts +14 -0
  188. package/dist/plugins/stripe.d.ts.map +1 -0
  189. package/dist/plugins/stripe.js +16 -0
  190. package/dist/plugins/stripe.js.map +1 -0
  191. package/dist/plugins/tax.d.ts +21 -0
  192. package/dist/plugins/tax.d.ts.map +1 -0
  193. package/dist/plugins/tax.js +18 -0
  194. package/dist/plugins/tax.js.map +1 -0
  195. package/dist/prisma.d.ts +66 -0
  196. package/dist/prisma.d.ts.map +1 -0
  197. package/dist/prisma.js +66 -0
  198. package/dist/prisma.js.map +1 -0
  199. package/dist/processor.d.ts +28 -0
  200. package/dist/processor.d.ts.map +1 -0
  201. package/dist/processor.js +118 -0
  202. package/dist/processor.js.map +1 -0
  203. package/dist/provider.d.ts +89 -0
  204. package/dist/provider.d.ts.map +1 -0
  205. package/dist/provider.js +240 -0
  206. package/dist/provider.js.map +1 -0
  207. package/dist/rate.d.ts +119 -0
  208. package/dist/rate.d.ts.map +1 -0
  209. package/dist/rate.js +271 -0
  210. package/dist/rate.js.map +1 -0
  211. package/dist/rounding-error.d.ts +9 -0
  212. package/dist/rounding-error.d.ts.map +1 -0
  213. package/dist/rounding-error.js +9 -0
  214. package/dist/rounding-error.js.map +1 -0
  215. package/dist/rounding.d.ts +50 -0
  216. package/dist/rounding.d.ts.map +1 -0
  217. package/dist/rounding.js +87 -0
  218. package/dist/rounding.js.map +1 -0
  219. package/dist/stripe-fx.d.ts +22 -0
  220. package/dist/stripe-fx.d.ts.map +1 -0
  221. package/dist/stripe-fx.js +30 -0
  222. package/dist/stripe-fx.js.map +1 -0
  223. package/dist/stripe.d.ts +36 -0
  224. package/dist/stripe.d.ts.map +1 -0
  225. package/dist/stripe.js +39 -0
  226. package/dist/stripe.js.map +1 -0
  227. package/dist/tax.d.ts +29 -0
  228. package/dist/tax.d.ts.map +1 -0
  229. package/dist/tax.js +39 -0
  230. package/dist/tax.js.map +1 -0
  231. package/package.json +171 -4
  232. package/src/adyen-fx.ts +154 -0
  233. package/src/adyen.ts +46 -0
  234. package/src/allocate.ts +393 -0
  235. package/src/bag.ts +170 -0
  236. package/src/braintree.ts +71 -0
  237. package/src/cash.ts +115 -0
  238. package/src/checkout.ts +77 -0
  239. package/src/convert.ts +159 -0
  240. package/src/currency.ts +61 -0
  241. package/src/decimal.ts +283 -0
  242. package/src/ecb.ts +162 -0
  243. package/src/exact.ts +182 -0
  244. package/src/fetch.ts +127 -0
  245. package/src/fixed.ts +558 -0
  246. package/src/fn.ts +80 -0
  247. package/src/format.ts +106 -0
  248. package/src/generated/adyen.ts +144 -0
  249. package/src/generated/braintree.ts +140 -0
  250. package/src/generated/cash.ts +375 -0
  251. package/src/generated/checkout.ts +151 -0
  252. package/src/generated/iso4217.ts +179 -0
  253. package/src/generated/kernel.ts +230 -0
  254. package/src/generated/klarna.ts +21 -0
  255. package/src/generated/paypal.ts +31 -0
  256. package/src/generated/stripe.ts +150 -0
  257. package/src/index.ts +37 -0
  258. package/src/klarna.ts +54 -0
  259. package/src/money.ts +781 -0
  260. package/src/parse.ts +144 -0
  261. package/src/paypal.ts +93 -0
  262. package/src/plugins/adyen.ts +25 -0
  263. package/src/plugins/all.ts +47 -0
  264. package/src/plugins/allocate.ts +53 -0
  265. package/src/plugins/braintree.ts +23 -0
  266. package/src/plugins/cash.ts +33 -0
  267. package/src/plugins/checkout.ts +32 -0
  268. package/src/plugins/convert.ts +50 -0
  269. package/src/plugins/exact.ts +23 -0
  270. package/src/plugins/fixed.ts +28 -0
  271. package/src/plugins/format.ts +28 -0
  272. package/src/plugins/klarna.ts +21 -0
  273. package/src/plugins/paypal.ts +29 -0
  274. package/src/plugins/prisma.ts +24 -0
  275. package/src/plugins/stripe.ts +29 -0
  276. package/src/plugins/tax.ts +41 -0
  277. package/src/prisma.ts +118 -0
  278. package/src/processor.ts +181 -0
  279. package/src/provider.ts +324 -0
  280. package/src/rate.ts +377 -0
  281. package/src/rounding-error.ts +8 -0
  282. package/src/rounding.ts +122 -0
  283. package/src/stripe-fx.ts +49 -0
  284. package/src/stripe.ts +69 -0
  285. package/src/tax.ts +71 -0
@@ -0,0 +1,208 @@
1
+ // lean-sources sha256:69cb179d69b98bf06518e6abae249369e163ca9ac7c318064680c59920517601 content sha256:dc3d761f86eb9b865b2cfa6a6dba6e6b3853afdab3ec5c8811415f9942c6231c
2
+ // GENERATED from proofs/Ducat/Rounding.lean by `pnpm gen:kernel`. Do not edit.
3
+ import { RoundingError } from '../rounding-error.js';
4
+ const ROUNDING_NECESSARY = 'Rounding necessary: the result is not exact; pass a rounding mode';
5
+ /**
6
+ * `dividend / divisor` rounded with `mode`; `divisor` must be positive.
7
+ *
8
+ * Each `case` is printed from the Lean kernel for that mode, which is proved correct in
9
+ * proofs/Ducat/Rounding.lean: `kernel_sound` (the result satisfies the specification `Rounds`),
10
+ * `rounds_unique` (only one value does) and `kernel_fails_iff` (it throws only for 'unnecessary' on an
11
+ * inexact division), hence `kernel_correct`. Unknown modes throw a RangeError.
12
+ */
13
+ export function divideAndRoundBigint(dividend, divisor, mode) {
14
+ const quotient = dividend / divisor;
15
+ const remainder = dividend - quotient * divisor;
16
+ return roundTruncatedQuotientBigint(dividend, divisor, quotient, remainder, mode);
17
+ }
18
+ /**
19
+ * Rounds the truncated `quotient` of `dividend / divisor` (with `remainder = dividend - quotient * divisor`)
20
+ * with `mode`; `divisor` must be positive.
21
+ *
22
+ * Each `case` is printed from the Lean kernel for that mode, which is proved correct in
23
+ * proofs/Ducat/Rounding.lean: `kernel_sound` (the result satisfies the specification `Rounds`),
24
+ * `rounds_unique` (only one value does) and `kernel_fails_iff` (it throws only for 'unnecessary' on an
25
+ * inexact division), hence `kernel_correct`. Unknown modes throw a RangeError.
26
+ */
27
+ function roundTruncatedQuotientBigint(dividend, divisor, quotient, remainder, mode) {
28
+ if (remainder === 0n) {
29
+ return quotient;
30
+ }
31
+ const twiceRemainder = remainder < 0n ? -2n * remainder : 2n * remainder;
32
+ switch (mode) {
33
+ // rounds to the nearest integer, ties away from zero
34
+ case 'halfExpand': {
35
+ if (divisor <= twiceRemainder) {
36
+ if (dividend < 0n) {
37
+ return quotient - 1n;
38
+ }
39
+ return quotient + 1n;
40
+ }
41
+ return quotient;
42
+ }
43
+ // rounds to the nearest integer, ties to the even neighbour
44
+ case 'halfEven': {
45
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && quotient % 2n !== 0n)) {
46
+ if (dividend < 0n) {
47
+ return quotient - 1n;
48
+ }
49
+ return quotient + 1n;
50
+ }
51
+ return quotient;
52
+ }
53
+ // rounds to the nearest integer, ties towards zero
54
+ case 'halfTrunc': {
55
+ if (divisor < twiceRemainder) {
56
+ if (dividend < 0n) {
57
+ return quotient - 1n;
58
+ }
59
+ return quotient + 1n;
60
+ }
61
+ return quotient;
62
+ }
63
+ // rounds to the nearest integer, ties towards +infinity
64
+ case 'halfCeil': {
65
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && !(dividend < 0n))) {
66
+ if (dividend < 0n) {
67
+ return quotient - 1n;
68
+ }
69
+ return quotient + 1n;
70
+ }
71
+ return quotient;
72
+ }
73
+ // rounds to the nearest integer, ties towards -infinity
74
+ case 'halfFloor': {
75
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && dividend < 0n)) {
76
+ if (dividend < 0n) {
77
+ return quotient - 1n;
78
+ }
79
+ return quotient + 1n;
80
+ }
81
+ return quotient;
82
+ }
83
+ // rounds towards zero
84
+ case 'trunc': {
85
+ return quotient;
86
+ }
87
+ // rounds away from zero
88
+ case 'expand': {
89
+ if (dividend < 0n) {
90
+ return quotient - 1n;
91
+ }
92
+ return quotient + 1n;
93
+ }
94
+ // rounds towards +infinity
95
+ case 'ceil': {
96
+ if (dividend < 0n) {
97
+ return quotient;
98
+ }
99
+ return quotient + 1n;
100
+ }
101
+ // rounds towards -infinity
102
+ case 'floor': {
103
+ if (!(dividend < 0n)) {
104
+ return quotient;
105
+ }
106
+ return quotient - 1n;
107
+ }
108
+ // rounds not at all: throws RoundingError unless the division is exact
109
+ case 'unnecessary': {
110
+ throw new RoundingError(ROUNDING_NECESSARY);
111
+ }
112
+ }
113
+ throw new RangeError(`Unknown rounding mode "${String(mode)}"`);
114
+ }
115
+ /**
116
+ * The same switch over `number`: rounds the truncated `quotient` of `dividend / divisor`, where
117
+ * `remainder = dividend - quotient * divisor` exactly and `divisor` is positive. Every input must be a safe
118
+ * integer. This copy is not proved; test/kernel.test.ts compares it with the `bigint` one.
119
+ */
120
+ export function roundTruncatedQuotient(dividend, divisor, quotient, remainder, mode) {
121
+ if (remainder === 0) {
122
+ return quotient;
123
+ }
124
+ const twiceRemainder = remainder < 0 ? -2 * remainder : 2 * remainder;
125
+ switch (mode) {
126
+ // rounds to the nearest integer, ties away from zero
127
+ case 'halfExpand': {
128
+ if (divisor <= twiceRemainder) {
129
+ if (dividend < 0) {
130
+ return quotient - 1;
131
+ }
132
+ return quotient + 1;
133
+ }
134
+ return quotient;
135
+ }
136
+ // rounds to the nearest integer, ties to the even neighbour
137
+ case 'halfEven': {
138
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && quotient % 2 !== 0)) {
139
+ if (dividend < 0) {
140
+ return quotient - 1;
141
+ }
142
+ return quotient + 1;
143
+ }
144
+ return quotient;
145
+ }
146
+ // rounds to the nearest integer, ties towards zero
147
+ case 'halfTrunc': {
148
+ if (divisor < twiceRemainder) {
149
+ if (dividend < 0) {
150
+ return quotient - 1;
151
+ }
152
+ return quotient + 1;
153
+ }
154
+ return quotient;
155
+ }
156
+ // rounds to the nearest integer, ties towards +infinity
157
+ case 'halfCeil': {
158
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && !(dividend < 0))) {
159
+ if (dividend < 0) {
160
+ return quotient - 1;
161
+ }
162
+ return quotient + 1;
163
+ }
164
+ return quotient;
165
+ }
166
+ // rounds to the nearest integer, ties towards -infinity
167
+ case 'halfFloor': {
168
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && dividend < 0)) {
169
+ if (dividend < 0) {
170
+ return quotient - 1;
171
+ }
172
+ return quotient + 1;
173
+ }
174
+ return quotient;
175
+ }
176
+ // rounds towards zero
177
+ case 'trunc': {
178
+ return quotient;
179
+ }
180
+ // rounds away from zero
181
+ case 'expand': {
182
+ if (dividend < 0) {
183
+ return quotient - 1;
184
+ }
185
+ return quotient + 1;
186
+ }
187
+ // rounds towards +infinity
188
+ case 'ceil': {
189
+ if (dividend < 0) {
190
+ return quotient;
191
+ }
192
+ return quotient + 1;
193
+ }
194
+ // rounds towards -infinity
195
+ case 'floor': {
196
+ if (!(dividend < 0)) {
197
+ return quotient;
198
+ }
199
+ return quotient - 1;
200
+ }
201
+ // rounds not at all: throws RoundingError unless the division is exact
202
+ case 'unnecessary': {
203
+ throw new RoundingError(ROUNDING_NECESSARY);
204
+ }
205
+ }
206
+ throw new RangeError(`Unknown rounding mode "${String(mode)}"`);
207
+ }
208
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/generated/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Klarna purchase currencies and their ISO 4217 exponents (amounts are integer minor units). */
2
+ export declare const KLARNA_EXPONENTS: Readonly<Record<string, number>>;
3
+ //# sourceMappingURL=klarna.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.d.ts","sourceRoot":"","sources":["../../src/generated/klarna.ts"],"names":[],"mappings":"AAGA,iGAAiG;AACjG,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB7D,CAAC"}
@@ -0,0 +1,21 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/klarna.json (https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/data-types/, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /** Klarna purchase currencies and their ISO 4217 exponents (amounts are integer minor units). */
4
+ export const KLARNA_EXPONENTS = {
5
+ AUD: 2,
6
+ CAD: 2,
7
+ CHF: 2,
8
+ CZK: 2,
9
+ DKK: 2,
10
+ EUR: 2,
11
+ GBP: 2,
12
+ HUF: 2,
13
+ MXN: 2,
14
+ NOK: 2,
15
+ NZD: 2,
16
+ PLN: 2,
17
+ RON: 2,
18
+ SEK: 2,
19
+ USD: 2,
20
+ };
21
+ //# sourceMappingURL=klarna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.js","sourceRoot":"","sources":["../../src/generated/klarna.ts"],"names":[],"mappings":"AAAA,qMAAqM;AACrM,oBAAoB;AAEpB,iGAAiG;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** PayPal decimals per currency (`value` is a decimal string). HUF, JPY and TWD take none. */
2
+ export declare const PAYPAL_EXPONENTS: Readonly<Record<string, number>>;
3
+ //# sourceMappingURL=paypal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.d.ts","sourceRoot":"","sources":["../../src/generated/paypal.ts"],"names":[],"mappings":"AAGA,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B7D,CAAC"}
@@ -0,0 +1,31 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/paypal.json (https://developer.paypal.com/api/rest/reference/currency-codes/, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /** PayPal decimals per currency (`value` is a decimal string). HUF, JPY and TWD take none. */
4
+ export const PAYPAL_EXPONENTS = {
5
+ AUD: 2,
6
+ BRL: 2,
7
+ CAD: 2,
8
+ CHF: 2,
9
+ CNY: 2,
10
+ CZK: 2,
11
+ DKK: 2,
12
+ EUR: 2,
13
+ GBP: 2,
14
+ HKD: 2,
15
+ HUF: 0,
16
+ ILS: 2,
17
+ JPY: 0,
18
+ MXN: 2,
19
+ MYR: 2,
20
+ NOK: 2,
21
+ NZD: 2,
22
+ PHP: 2,
23
+ PLN: 2,
24
+ RUB: 2,
25
+ SEK: 2,
26
+ SGD: 2,
27
+ THB: 2,
28
+ TWD: 0,
29
+ USD: 2,
30
+ };
31
+ //# sourceMappingURL=paypal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.js","sourceRoot":"","sources":["../../src/generated/paypal.ts"],"names":[],"mappings":"AAAA,8KAA8K;AAC9K,oBAAoB;AAEpB,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stripe presentment currencies: [API exponent, charge amount multiple, payout amount multiple].
3
+ * A multiple of 100 means "send a two-decimal value whose decimal part is always 00" (ISK, UGX)
4
+ * or, for payouts only, whole units (HUF, TWD). A multiple of 10 is the three-decimal rule
5
+ * (last digit must be 0).
6
+ */
7
+ export declare const STRIPE_RULES: Readonly<Record<string, readonly [exponent: number, chargeMultiple: number, payoutMultiple: number]>>;
8
+ //# sourceMappingURL=stripe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/generated/stripe.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CA4I9H,CAAC"}
@@ -0,0 +1,150 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/stripe.json (https://docs.stripe.com/currencies, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /**
4
+ * Stripe presentment currencies: [API exponent, charge amount multiple, payout amount multiple].
5
+ * A multiple of 100 means "send a two-decimal value whose decimal part is always 00" (ISK, UGX)
6
+ * or, for payouts only, whole units (HUF, TWD). A multiple of 10 is the three-decimal rule
7
+ * (last digit must be 0).
8
+ */
9
+ export const STRIPE_RULES = {
10
+ AED: [2, 1, 1],
11
+ AFN: [2, 1, 1],
12
+ ALL: [2, 1, 1],
13
+ AMD: [2, 1, 1],
14
+ ANG: [2, 1, 1],
15
+ AOA: [2, 1, 1],
16
+ ARS: [2, 1, 1],
17
+ AUD: [2, 1, 1],
18
+ AWG: [2, 1, 1],
19
+ AZN: [2, 1, 1],
20
+ BAM: [2, 1, 1],
21
+ BBD: [2, 1, 1],
22
+ BDT: [2, 1, 1],
23
+ BHD: [3, 10, 10],
24
+ BIF: [0, 1, 1],
25
+ BMD: [2, 1, 1],
26
+ BND: [2, 1, 1],
27
+ BOB: [2, 1, 1],
28
+ BRL: [2, 1, 1],
29
+ BSD: [2, 1, 1],
30
+ BWP: [2, 1, 1],
31
+ BYN: [2, 1, 1],
32
+ BZD: [2, 1, 1],
33
+ CAD: [2, 1, 1],
34
+ CDF: [2, 1, 1],
35
+ CHF: [2, 1, 1],
36
+ CLP: [0, 1, 1],
37
+ CNY: [2, 1, 1],
38
+ COP: [2, 1, 1],
39
+ CRC: [2, 1, 1],
40
+ CVE: [2, 1, 1],
41
+ CZK: [2, 1, 1],
42
+ DJF: [0, 1, 1],
43
+ DKK: [2, 1, 1],
44
+ DOP: [2, 1, 1],
45
+ DZD: [2, 1, 1],
46
+ EGP: [2, 1, 1],
47
+ ETB: [2, 1, 1],
48
+ EUR: [2, 1, 1],
49
+ FJD: [2, 1, 1],
50
+ FKP: [2, 1, 1],
51
+ GBP: [2, 1, 1],
52
+ GEL: [2, 1, 1],
53
+ GIP: [2, 1, 1],
54
+ GMD: [2, 1, 1],
55
+ GNF: [0, 1, 1],
56
+ GTQ: [2, 1, 1],
57
+ GYD: [2, 1, 1],
58
+ HKD: [2, 1, 1],
59
+ HNL: [2, 1, 1],
60
+ HTG: [2, 1, 1],
61
+ HUF: [2, 1, 100],
62
+ IDR: [2, 1, 1],
63
+ ILS: [2, 1, 1],
64
+ INR: [2, 1, 1],
65
+ ISK: [2, 100, 100],
66
+ JMD: [2, 1, 1],
67
+ JOD: [3, 10, 10],
68
+ JPY: [0, 1, 1],
69
+ KES: [2, 1, 1],
70
+ KGS: [2, 1, 1],
71
+ KHR: [2, 1, 1],
72
+ KMF: [0, 1, 1],
73
+ KRW: [0, 1, 1],
74
+ KWD: [3, 10, 10],
75
+ KYD: [2, 1, 1],
76
+ KZT: [2, 1, 1],
77
+ LAK: [2, 1, 1],
78
+ LBP: [2, 1, 1],
79
+ LKR: [2, 1, 1],
80
+ LRD: [2, 1, 1],
81
+ LSL: [2, 1, 1],
82
+ MAD: [2, 1, 1],
83
+ MDL: [2, 1, 1],
84
+ MGA: [0, 1, 1],
85
+ MKD: [2, 1, 1],
86
+ MMK: [2, 1, 1],
87
+ MNT: [2, 1, 1],
88
+ MOP: [2, 1, 1],
89
+ MUR: [2, 1, 1],
90
+ MVR: [2, 1, 1],
91
+ MWK: [2, 1, 1],
92
+ MXN: [2, 1, 1],
93
+ MYR: [2, 1, 1],
94
+ MZN: [2, 1, 1],
95
+ NAD: [2, 1, 1],
96
+ NGN: [2, 1, 1],
97
+ NIO: [2, 1, 1],
98
+ NOK: [2, 1, 1],
99
+ NPR: [2, 1, 1],
100
+ NZD: [2, 1, 1],
101
+ OMR: [3, 10, 10],
102
+ PAB: [2, 1, 1],
103
+ PEN: [2, 1, 1],
104
+ PGK: [2, 1, 1],
105
+ PHP: [2, 1, 1],
106
+ PKR: [2, 1, 1],
107
+ PLN: [2, 1, 1],
108
+ PYG: [0, 1, 1],
109
+ QAR: [2, 1, 1],
110
+ RON: [2, 1, 1],
111
+ RSD: [2, 1, 1],
112
+ RUB: [2, 1, 1],
113
+ RWF: [0, 1, 1],
114
+ SAR: [2, 1, 1],
115
+ SBD: [2, 1, 1],
116
+ SCR: [2, 1, 1],
117
+ SEK: [2, 1, 1],
118
+ SGD: [2, 1, 1],
119
+ SHP: [2, 1, 1],
120
+ SLE: [2, 1, 1],
121
+ SOS: [2, 1, 1],
122
+ SRD: [2, 1, 1],
123
+ STD: [2, 1, 1],
124
+ SZL: [2, 1, 1],
125
+ THB: [2, 1, 1],
126
+ TJS: [2, 1, 1],
127
+ TND: [3, 10, 10],
128
+ TOP: [2, 1, 1],
129
+ TRY: [2, 1, 1],
130
+ TTD: [2, 1, 1],
131
+ TWD: [2, 1, 100],
132
+ TZS: [2, 1, 1],
133
+ UAH: [2, 1, 1],
134
+ UGX: [2, 100, 100],
135
+ USD: [2, 1, 1],
136
+ UYU: [2, 1, 1],
137
+ UZS: [2, 1, 1],
138
+ VND: [0, 1, 1],
139
+ VUV: [0, 1, 1],
140
+ WST: [2, 1, 1],
141
+ XAF: [0, 1, 1],
142
+ XCD: [2, 1, 1],
143
+ XCG: [2, 1, 1],
144
+ XOF: [0, 1, 1],
145
+ XPF: [0, 1, 1],
146
+ YER: [2, 1, 1],
147
+ ZAR: [2, 1, 1],
148
+ ZMW: [2, 1, 1],
149
+ };
150
+ //# sourceMappingURL=stripe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/generated/stripe.ts"],"names":[],"mappings":"AAAA,iJAAiJ;AACjJ,oBAAoB;AAEpB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAA0G;IACjI,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,GAAG,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,GAAG,EAAC,GAAG,CAAC;IAChB,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,GAAG,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,GAAG,EAAC,GAAG,CAAC;IAChB,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;CACb,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@ducatjs/money`: the core. Money with construction, arithmetic, rounding, comparison and
3
+ * serialisation as methods (`price.add(fee).multiply('1.075')`), plus the ISO 4217 exponents.
4
+ * The same operations as plain functions (`add(price, fee)`) are in `@ducatjs/money/fn`. Allocation, tax, conversion, cash rounding,
5
+ * formatting, parsing and the processor and database views are opt-in modules
6
+ * (`@ducatjs/money/allocate`, `@ducatjs/money/tax`, ...; `@ducatjs/money/all` for everything).
7
+ */
8
+ export { money, fromMinor, zero, fromJSON, isMoney, extendMoney, type ExtendMoneyOptions, sum, ratio, CurrencyMismatchError, type Money, type MoneyJSON, type MoneyOptions, type CurrencyInput, type Factor, type Ratio, } from './money.js';
9
+ export { DEFAULT_ROUNDING, Rounding, RoundingError, type RoundingMode } from './rounding.js';
10
+ export { currencyExponent, defineCurrency, isCurrency, ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, type CurrencyCode, type IsoCurrencyCode, type CustomCurrencies, } from './currency.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,KAAK,kBAAkB,EACvB,GAAG,EACH,KAAK,EACL,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"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@ducatjs/money`: the core. Money with construction, arithmetic, rounding, comparison and
3
+ * serialisation as methods (`price.add(fee).multiply('1.075')`), plus the ISO 4217 exponents.
4
+ * The same operations as plain functions (`add(price, fee)`) are in `@ducatjs/money/fn`. Allocation, tax, conversion, cash rounding,
5
+ * formatting, parsing and the processor and database views are opt-in modules
6
+ * (`@ducatjs/money/allocate`, `@ducatjs/money/tax`, ...; `@ducatjs/money/all` for everything).
7
+ */
8
+ export { money, fromMinor, zero, fromJSON, isMoney, extendMoney, sum, ratio, CurrencyMismatchError, } from './money.js';
9
+ export { DEFAULT_ROUNDING, Rounding, RoundingError } from './rounding.js';
10
+ export { currencyExponent, defineCurrency, isCurrency, ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, } from './currency.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EAEX,GAAG,EACH,KAAK,EACL,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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Klarna's amount view (Klarna Payments and Order Management; https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/data-types/,
3
+ * encoded in data/klarna.json). Amounts (`order_amount`, `unit_price`, `total_amount`, ...) are
4
+ * integers "in minor units according to the ISO 4217 standard", in the one local currency of each
5
+ * purchase country: 25 EUR -> 2500, 1000 HUF -> 100000 (fillér; PayPal sends HUF without decimals).
6
+ */
7
+ import { KLARNA_EXPONENTS } from './generated/klarna.js';
8
+ import { type CurrencyInput, type Money } from './money.js';
9
+ import type { RoundingMode } from './rounding.js';
10
+ export { KLARNA_EXPONENTS };
11
+ /** The ISO 4217 exponent of a Klarna purchase currency; throws for any other currency. */
12
+ export declare function klarnaExponent(currency: string): number;
13
+ /** Whether the currency is one of Klarna's purchase currencies (case-insensitive). */
14
+ export declare function isKlarnaCurrency(currency: string): boolean;
15
+ /** Options for the Klarna amount: how to round when Klarna needs a coarser amount. */
16
+ export interface KlarnaAmountOptions {
17
+ /**
18
+ * How to round when the value has more decimals than the currency (default 'unnecessary': throw).
19
+ */
20
+ readonly rounding?: RoundingMode;
21
+ }
22
+ /**
23
+ * The integer to send in any Klarna amount field: toKlarna(money('25', 'EUR')) === 2500.
24
+ * A bare number, because Klarna gives the currency once per order (`purchase_currency`).
25
+ * Negative amounts pass through: discount order lines are negative ("Negative when type is
26
+ * discount"), though `order_amount` itself must be non-negative.
27
+ */
28
+ export declare function toKlarna(money: Money, options?: KlarnaAmountOptions): number;
29
+ /** Reads a Klarna amount field: fromKlarna(2500, 'EUR') is 25.00 EUR. */
30
+ export declare function fromKlarna<C extends CurrencyInput>(amount: number | bigint, currency: C): Money<Uppercase<C>>;
31
+ //# sourceMappingURL=klarna.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.d.ts","sourceRoot":"","sources":["../src/klarna.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAG5E;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,EAChD,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,QAAQ,EAAE,CAAC,GACV,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAGrB"}
package/dist/klarna.js ADDED
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Klarna's amount view (Klarna Payments and Order Management; https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/data-types/,
3
+ * encoded in data/klarna.json). Amounts (`order_amount`, `unit_price`, `total_amount`, ...) are
4
+ * integers "in minor units according to the ISO 4217 standard", in the one local currency of each
5
+ * purchase country: 25 EUR -> 2500, 1000 HUF -> 100000 (fillér; PayPal sends HUF without decimals).
6
+ */
7
+ import { KLARNA_EXPONENTS } from './generated/klarna.js';
8
+ import {} from './money.js';
9
+ import { fromProcessorAmount, toProcessorAmount } from './processor.js';
10
+ export { KLARNA_EXPONENTS };
11
+ /** The ISO 4217 exponent of a Klarna purchase currency; throws for any other currency. */
12
+ export function klarnaExponent(currency) {
13
+ const exponent = KLARNA_EXPONENTS[currency.toUpperCase()];
14
+ if (exponent === undefined) {
15
+ throw new RangeError(`${currency} is not a Klarna purchase currency`);
16
+ }
17
+ return exponent;
18
+ }
19
+ /** Whether the currency is one of Klarna's purchase currencies (case-insensitive). */
20
+ export function isKlarnaCurrency(currency) {
21
+ return KLARNA_EXPONENTS[currency.toUpperCase()] !== undefined;
22
+ }
23
+ /**
24
+ * The integer to send in any Klarna amount field: toKlarna(money('25', 'EUR')) === 2500.
25
+ * A bare number, because Klarna gives the currency once per order (`purchase_currency`).
26
+ * Negative amounts pass through: discount order lines are negative ("Negative when type is
27
+ * discount"), though `order_amount` itself must be non-negative.
28
+ */
29
+ export function toKlarna(money, options) {
30
+ const rounding = options?.rounding ?? 'unnecessary';
31
+ return toProcessorAmount('Klarna', money, klarnaExponent(money.currency), 1, rounding);
32
+ }
33
+ /** Reads a Klarna amount field: fromKlarna(2500, 'EUR') is 25.00 EUR. */
34
+ export function fromKlarna(amount, currency) {
35
+ const code = currency.toUpperCase();
36
+ return fromProcessorAmount('Klarna', amount, code, klarnaExponent(code));
37
+ }
38
+ //# sourceMappingURL=klarna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.js","sourceRoot":"","sources":["../src/klarna.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAkC,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,GAAG,QAAQ,oCAAoC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,SAAS,CAAC;AAChE,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,OAA6B;IAClE,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,aAAa,CAAC;IACpD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CACxB,MAAuB,EACvB,QAAW;IAEX,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAkB,CAAC;IACpD,OAAO,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC"}