@owlmeans/payment 0.1.18-rc.8 → 0.1.18

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 (364) hide show
  1. package/README.md +95 -57
  2. package/agent-meta/manifest.json +10 -3
  3. package/agent-meta/skills/entitlements/SKILL.md +159 -0
  4. package/agent-meta/skills/payment/SKILL.md +491 -28
  5. package/build/advertise.d.ts +2 -0
  6. package/build/advertise.d.ts.map +1 -0
  7. package/build/advertise.js +10 -0
  8. package/build/advertise.js.map +1 -0
  9. package/build/checkout/consts.d.ts +2 -0
  10. package/build/checkout/consts.d.ts.map +1 -0
  11. package/build/checkout/consts.js +2 -0
  12. package/build/checkout/consts.js.map +1 -0
  13. package/build/checkout/index.d.ts +6 -0
  14. package/build/checkout/index.d.ts.map +1 -0
  15. package/build/checkout/index.js +4 -0
  16. package/build/checkout/index.js.map +1 -0
  17. package/build/checkout/narrow/types.d.ts +25 -0
  18. package/build/checkout/narrow/types.d.ts.map +1 -0
  19. package/build/checkout/narrow/types.js +2 -0
  20. package/build/checkout/narrow/types.js.map +1 -0
  21. package/build/checkout/narrow.d.ts +8 -0
  22. package/build/checkout/narrow.d.ts.map +1 -0
  23. package/build/checkout/narrow.js +47 -0
  24. package/build/checkout/narrow.js.map +1 -0
  25. package/build/checkout/protocols.d.ts +8 -0
  26. package/build/checkout/protocols.d.ts.map +1 -0
  27. package/build/checkout/protocols.js +28 -0
  28. package/build/checkout/protocols.js.map +1 -0
  29. package/build/checkout/types.d.ts +29 -0
  30. package/build/checkout/types.d.ts.map +1 -0
  31. package/build/checkout/types.js +2 -0
  32. package/build/checkout/types.js.map +1 -0
  33. package/build/consts.d.ts +242 -25
  34. package/build/consts.d.ts.map +1 -1
  35. package/build/consts.js +377 -24
  36. package/build/consts.js.map +1 -1
  37. package/build/consts.local.d.ts +20 -0
  38. package/build/consts.local.d.ts.map +1 -0
  39. package/build/consts.local.js +23 -0
  40. package/build/consts.local.js.map +1 -0
  41. package/build/consumer/cancel.d.ts +11 -0
  42. package/build/consumer/cancel.d.ts.map +1 -0
  43. package/build/consumer/cancel.js +33 -0
  44. package/build/consumer/cancel.js.map +1 -0
  45. package/build/consumer/consts.d.ts +20 -0
  46. package/build/consumer/consts.d.ts.map +1 -0
  47. package/build/consumer/consts.js +39 -0
  48. package/build/consumer/consts.js.map +1 -0
  49. package/build/consumer/consts.local.d.ts +7 -0
  50. package/build/consumer/consts.local.d.ts.map +1 -0
  51. package/build/consumer/consts.local.js +13 -0
  52. package/build/consumer/consts.local.js.map +1 -0
  53. package/build/consumer/copy/types.d.ts +56 -0
  54. package/build/consumer/copy/types.d.ts.map +1 -0
  55. package/build/consumer/copy/types.js +2 -0
  56. package/build/consumer/copy/types.js.map +1 -0
  57. package/build/consumer/copy.d.ts +22 -0
  58. package/build/consumer/copy.d.ts.map +1 -0
  59. package/build/consumer/copy.js +87 -0
  60. package/build/consumer/copy.js.map +1 -0
  61. package/build/consumer/deadline/types.d.ts +30 -0
  62. package/build/consumer/deadline/types.d.ts.map +1 -0
  63. package/build/consumer/deadline/types.js +2 -0
  64. package/build/consumer/deadline/types.js.map +1 -0
  65. package/build/consumer/deadline.d.ts +12 -0
  66. package/build/consumer/deadline.d.ts.map +1 -0
  67. package/build/consumer/deadline.js +44 -0
  68. package/build/consumer/deadline.js.map +1 -0
  69. package/build/consumer/fifo/types.d.ts +17 -0
  70. package/build/consumer/fifo/types.d.ts.map +1 -0
  71. package/build/consumer/fifo/types.js +2 -0
  72. package/build/consumer/fifo/types.js.map +1 -0
  73. package/build/consumer/fifo.d.ts +4 -0
  74. package/build/consumer/fifo.d.ts.map +1 -0
  75. package/build/consumer/fifo.js +34 -0
  76. package/build/consumer/fifo.js.map +1 -0
  77. package/build/consumer/index.d.ts +18 -0
  78. package/build/consumer/index.d.ts.map +1 -0
  79. package/build/consumer/index.js +11 -0
  80. package/build/consumer/index.js.map +1 -0
  81. package/build/consumer/policy/types.d.ts +20 -0
  82. package/build/consumer/policy/types.d.ts.map +1 -0
  83. package/build/consumer/policy/types.js +2 -0
  84. package/build/consumer/policy/types.js.map +1 -0
  85. package/build/consumer/policy.d.ts +17 -0
  86. package/build/consumer/policy.d.ts.map +1 -0
  87. package/build/consumer/policy.js +91 -0
  88. package/build/consumer/policy.js.map +1 -0
  89. package/build/consumer/protocols.d.ts +20 -0
  90. package/build/consumer/protocols.d.ts.map +1 -0
  91. package/build/consumer/protocols.js +70 -0
  92. package/build/consumer/protocols.js.map +1 -0
  93. package/build/consumer/refund/types.d.ts +27 -0
  94. package/build/consumer/refund/types.d.ts.map +1 -0
  95. package/build/consumer/refund/types.js +2 -0
  96. package/build/consumer/refund/types.js.map +1 -0
  97. package/build/consumer/refund.d.ts +9 -0
  98. package/build/consumer/refund.d.ts.map +1 -0
  99. package/build/consumer/refund.js +112 -0
  100. package/build/consumer/refund.js.map +1 -0
  101. package/build/consumer/refusal.d.ts +10 -0
  102. package/build/consumer/refusal.d.ts.map +1 -0
  103. package/build/consumer/refusal.js +35 -0
  104. package/build/consumer/refusal.js.map +1 -0
  105. package/build/consumer/revive/types.d.ts +19 -0
  106. package/build/consumer/revive/types.d.ts.map +1 -0
  107. package/build/consumer/revive/types.js +2 -0
  108. package/build/consumer/revive/types.js.map +1 -0
  109. package/build/consumer/revive.d.ts +13 -0
  110. package/build/consumer/revive.d.ts.map +1 -0
  111. package/build/consumer/revive.js +43 -0
  112. package/build/consumer/revive.js.map +1 -0
  113. package/build/consumer/types.d.ts +196 -0
  114. package/build/consumer/types.d.ts.map +1 -0
  115. package/build/consumer/types.js +2 -0
  116. package/build/consumer/types.js.map +1 -0
  117. package/build/consumer/types.local.d.ts +11 -0
  118. package/build/consumer/types.local.d.ts.map +1 -0
  119. package/build/consumer/types.local.js +2 -0
  120. package/build/consumer/types.local.js.map +1 -0
  121. package/build/countries.d.ts +3 -0
  122. package/build/countries.d.ts.map +1 -0
  123. package/build/countries.js +4 -0
  124. package/build/countries.js.map +1 -0
  125. package/build/entitled.d.ts +14 -0
  126. package/build/entitled.d.ts.map +1 -0
  127. package/build/entitled.js +17 -0
  128. package/build/entitled.js.map +1 -0
  129. package/build/entitlement/types.d.ts +29 -0
  130. package/build/entitlement/types.d.ts.map +1 -0
  131. package/build/entitlement/types.js +2 -0
  132. package/build/entitlement/types.js.map +1 -0
  133. package/build/entitlement.d.ts +12 -0
  134. package/build/entitlement.d.ts.map +1 -0
  135. package/build/entitlement.js +64 -0
  136. package/build/entitlement.js.map +1 -0
  137. package/build/errors.d.ts +189 -0
  138. package/build/errors.d.ts.map +1 -1
  139. package/build/errors.js +361 -0
  140. package/build/errors.js.map +1 -1
  141. package/build/estimate/types.d.ts +34 -0
  142. package/build/estimate/types.d.ts.map +1 -0
  143. package/build/estimate/types.js +2 -0
  144. package/build/estimate/types.js.map +1 -0
  145. package/build/estimate.d.ts +11 -0
  146. package/build/estimate.d.ts.map +1 -0
  147. package/build/estimate.js +76 -0
  148. package/build/estimate.js.map +1 -0
  149. package/build/i18n/consumer-rights/be.json +131 -0
  150. package/build/i18n/consumer-rights/de.json +131 -0
  151. package/build/i18n/consumer-rights/en.json +131 -0
  152. package/build/i18n/consumer-rights/es.json +131 -0
  153. package/build/i18n/consumer-rights/fr.json +131 -0
  154. package/build/i18n/consumer-rights/pl.json +131 -0
  155. package/build/i18n/consumer-rights/ru.json +131 -0
  156. package/build/i18n/consumer-rights/uk.json +131 -0
  157. package/build/i18n/errors/be.json +30 -0
  158. package/build/i18n/errors/de.json +30 -0
  159. package/build/i18n/errors/en.json +30 -0
  160. package/build/i18n/errors/es.json +30 -0
  161. package/build/i18n/errors/fr.json +30 -0
  162. package/build/i18n/errors/pl.json +30 -0
  163. package/build/i18n/errors/ru.json +30 -0
  164. package/build/i18n/errors/uk.json +30 -0
  165. package/build/i18n/fr.json +39 -0
  166. package/build/i18n.js +53 -8
  167. package/build/i18n.js.map +1 -1
  168. package/build/index.d.ts +19 -1
  169. package/build/index.d.ts.map +1 -1
  170. package/build/index.js +12 -1
  171. package/build/index.js.map +1 -1
  172. package/build/limit/types.d.ts +44 -0
  173. package/build/limit/types.d.ts.map +1 -0
  174. package/build/limit/types.js +2 -0
  175. package/build/limit/types.js.map +1 -0
  176. package/build/limit.d.ts +23 -0
  177. package/build/limit.d.ts.map +1 -0
  178. package/build/limit.js +97 -0
  179. package/build/limit.js.map +1 -0
  180. package/build/model/checkout.d.ts +2 -3
  181. package/build/model/checkout.d.ts.map +1 -1
  182. package/build/model/checkout.js +12 -7
  183. package/build/model/checkout.js.map +1 -1
  184. package/build/model/consts.d.ts +15 -0
  185. package/build/model/consts.d.ts.map +1 -0
  186. package/build/model/consts.js +193 -0
  187. package/build/model/consts.js.map +1 -0
  188. package/build/model/consts.local.d.ts +35 -0
  189. package/build/model/consts.local.d.ts.map +1 -0
  190. package/build/model/consts.local.js +65 -0
  191. package/build/model/consts.local.js.map +1 -0
  192. package/build/model/consumer.d.ts +23 -0
  193. package/build/model/consumer.d.ts.map +1 -0
  194. package/build/model/consumer.js +272 -0
  195. package/build/model/consumer.js.map +1 -0
  196. package/build/model/estimate.d.ts +5 -0
  197. package/build/model/estimate.d.ts.map +1 -0
  198. package/build/model/estimate.js +69 -0
  199. package/build/model/estimate.js.map +1 -0
  200. package/build/model/index.d.ts +7 -2
  201. package/build/model/index.d.ts.map +1 -1
  202. package/build/model/index.js +7 -2
  203. package/build/model/index.js.map +1 -1
  204. package/build/model/limit.d.ts +7 -0
  205. package/build/model/limit.d.ts.map +1 -0
  206. package/build/model/limit.js +32 -0
  207. package/build/model/limit.js.map +1 -0
  208. package/build/model/plan.d.ts.map +1 -1
  209. package/build/model/plan.js +24 -11
  210. package/build/model/plan.js.map +1 -1
  211. package/build/model/portal.d.ts +4 -0
  212. package/build/model/portal.d.ts.map +1 -0
  213. package/build/model/portal.js +22 -0
  214. package/build/model/portal.js.map +1 -0
  215. package/build/model/pricing.d.ts +4 -0
  216. package/build/model/pricing.d.ts.map +1 -0
  217. package/build/model/pricing.js +31 -0
  218. package/build/model/pricing.js.map +1 -0
  219. package/build/model/view.d.ts +3 -0
  220. package/build/model/view.d.ts.map +1 -0
  221. package/build/model/view.js +15 -0
  222. package/build/model/view.js.map +1 -0
  223. package/build/pricing/types.d.ts +13 -0
  224. package/build/pricing/types.d.ts.map +1 -0
  225. package/build/pricing/types.js +2 -0
  226. package/build/pricing/types.js.map +1 -0
  227. package/build/pricing.d.ts +13 -0
  228. package/build/pricing.d.ts.map +1 -0
  229. package/build/pricing.js +74 -0
  230. package/build/pricing.js.map +1 -0
  231. package/build/promo/types.d.ts +14 -0
  232. package/build/promo/types.d.ts.map +1 -0
  233. package/build/promo/types.js +2 -0
  234. package/build/promo/types.js.map +1 -0
  235. package/build/promo.d.ts +7 -0
  236. package/build/promo.d.ts.map +1 -0
  237. package/build/promo.js +25 -0
  238. package/build/promo.js.map +1 -0
  239. package/build/regions/types.d.ts +32 -0
  240. package/build/regions/types.d.ts.map +1 -0
  241. package/build/regions/types.js +2 -0
  242. package/build/regions/types.js.map +1 -0
  243. package/build/regions.d.ts +15 -0
  244. package/build/regions.d.ts.map +1 -0
  245. package/build/regions.js +43 -0
  246. package/build/regions.js.map +1 -0
  247. package/build/service.d.ts.map +1 -1
  248. package/build/service.js +24 -9
  249. package/build/service.js.map +1 -1
  250. package/build/types.d.ts +619 -52
  251. package/build/types.d.ts.map +1 -1
  252. package/build/types.local.d.ts +4 -0
  253. package/build/types.local.d.ts.map +1 -0
  254. package/build/types.local.js +2 -0
  255. package/build/types.local.js.map +1 -0
  256. package/build/view/types.d.ts +33 -0
  257. package/build/view/types.d.ts.map +1 -0
  258. package/build/view/types.js +2 -0
  259. package/build/view/types.js.map +1 -0
  260. package/build/view.d.ts +13 -0
  261. package/build/view.d.ts.map +1 -0
  262. package/build/view.js +78 -0
  263. package/build/view.js.map +1 -0
  264. package/package.json +14 -12
  265. package/src/advertise.ts +13 -0
  266. package/src/checkout/consts.ts +1 -0
  267. package/src/checkout/index.ts +5 -0
  268. package/src/checkout/narrow/types.ts +27 -0
  269. package/src/checkout/narrow.ts +63 -0
  270. package/src/checkout/protocols.ts +39 -0
  271. package/src/checkout/types.ts +27 -0
  272. package/src/consts.local.ts +34 -0
  273. package/src/consts.ts +417 -24
  274. package/src/consumer/cancel.ts +40 -0
  275. package/src/consumer/consts.local.ts +16 -0
  276. package/src/consumer/consts.ts +46 -0
  277. package/src/consumer/copy/types.ts +54 -0
  278. package/src/consumer/copy.ts +121 -0
  279. package/src/consumer/deadline/types.ts +30 -0
  280. package/src/consumer/deadline.ts +61 -0
  281. package/src/consumer/fifo/types.ts +17 -0
  282. package/src/consumer/fifo.ts +42 -0
  283. package/src/consumer/index.ts +17 -0
  284. package/src/consumer/policy/types.ts +20 -0
  285. package/src/consumer/policy.ts +101 -0
  286. package/src/consumer/protocols.ts +116 -0
  287. package/src/consumer/refund/types.ts +27 -0
  288. package/src/consumer/refund.ts +136 -0
  289. package/src/consumer/refusal.ts +35 -0
  290. package/src/consumer/revive/types.ts +23 -0
  291. package/src/consumer/revive.ts +82 -0
  292. package/src/consumer/types.local.ts +10 -0
  293. package/src/consumer/types.ts +189 -0
  294. package/src/countries.ts +5 -0
  295. package/src/entitled.ts +20 -0
  296. package/src/entitlement/types.ts +29 -0
  297. package/src/entitlement.ts +86 -0
  298. package/src/errors.ts +445 -0
  299. package/src/estimate/types.ts +34 -0
  300. package/src/estimate.ts +90 -0
  301. package/src/i18n/consumer-rights/be.json +131 -0
  302. package/src/i18n/consumer-rights/de.json +131 -0
  303. package/src/i18n/consumer-rights/en.json +131 -0
  304. package/src/i18n/consumer-rights/es.json +131 -0
  305. package/src/i18n/consumer-rights/fr.json +131 -0
  306. package/src/i18n/consumer-rights/pl.json +131 -0
  307. package/src/i18n/consumer-rights/ru.json +131 -0
  308. package/src/i18n/consumer-rights/uk.json +131 -0
  309. package/src/i18n/errors/be.json +30 -0
  310. package/src/i18n/errors/de.json +30 -0
  311. package/src/i18n/errors/en.json +30 -0
  312. package/src/i18n/errors/es.json +30 -0
  313. package/src/i18n/errors/fr.json +30 -0
  314. package/src/i18n/errors/pl.json +30 -0
  315. package/src/i18n/errors/ru.json +30 -0
  316. package/src/i18n/errors/uk.json +30 -0
  317. package/src/i18n/fr.json +39 -0
  318. package/src/i18n.ts +58 -8
  319. package/src/index.ts +19 -2
  320. package/src/limit/types.ts +41 -0
  321. package/src/limit.ts +132 -0
  322. package/src/model/checkout.ts +12 -7
  323. package/src/model/consts.local.ts +83 -0
  324. package/src/model/consts.ts +206 -0
  325. package/src/model/consumer.ts +294 -0
  326. package/src/model/estimate.ts +73 -0
  327. package/src/model/index.ts +7 -2
  328. package/src/model/limit.ts +36 -0
  329. package/src/model/plan.ts +25 -12
  330. package/src/model/portal.ts +25 -0
  331. package/src/model/pricing.ts +34 -0
  332. package/src/model/view.ts +17 -0
  333. package/src/pricing/types.ts +13 -0
  334. package/src/pricing.ts +110 -0
  335. package/src/promo/types.ts +18 -0
  336. package/src/promo.ts +46 -0
  337. package/src/regions/types.ts +42 -0
  338. package/src/regions.ts +85 -0
  339. package/src/service.ts +32 -15
  340. package/src/types.local.ts +5 -0
  341. package/src/types.ts +669 -49
  342. package/src/view/types.ts +39 -0
  343. package/src/view.ts +119 -0
  344. package/tests/checkout-narrow.spec.ts +75 -0
  345. package/tests/consumer-copy.spec.ts +378 -0
  346. package/tests/consumer-deadline.spec.ts +85 -0
  347. package/tests/consumer-fifo.spec.ts +61 -0
  348. package/tests/consumer-protocols.spec.ts +103 -0
  349. package/tests/consumer-refund.spec.ts +134 -0
  350. package/tests/consumer-regions.spec.ts +140 -0
  351. package/tests/consumer-wire.spec.ts +170 -0
  352. package/tests/contract.spec.ts +183 -0
  353. package/tests/entitlement.spec.ts +103 -0
  354. package/tests/errors.spec.ts +168 -0
  355. package/tests/estimate.spec.ts +139 -0
  356. package/tests/limit.spec.ts +117 -0
  357. package/tests/pricing.spec.ts +30 -0
  358. package/tests/tsconfig.json +11 -0
  359. package/tests/view.spec.ts +130 -0
  360. package/tsconfig.json +6 -1
  361. package/build/.gitkeep +0 -0
  362. package/src/model/subscription.ts +0 -63
  363. package/src/model/utils.ts +0 -32
  364. package/src/modules.ts +0 -43
@@ -0,0 +1,91 @@
1
+ import { ConsumerRightsError } from '../errors.js';
2
+ import { CONSENT_CONTEXT, COUNTRY, CURRENCY } from './consts.local.js';
3
+ import { DEFAULT_CONSUMER_RIGHTS } from './consts.js';
4
+ /**
5
+ * A declaration filled with `DEFAULT_CONSUMER_RIGHTS` and asserted. Only the policy's own fields are
6
+ * copied — anything else on `def` (a server's mail options) never reaches the advertised record.
7
+ */
8
+ export const makeConsumerRightsPolicy = (def) => {
9
+ const defaults = DEFAULT_CONSUMER_RIGHTS;
10
+ const present = (key, value) => (value == null ? {} : { [key]: value });
11
+ return consumerRightsPolicyHelper.assertConsumerRightsPolicy({
12
+ textVersion: def.textVersion,
13
+ countries: [...(def.countries ?? defaults.countries)].map(country => country.toUpperCase()),
14
+ unknownCountry: def.unknownCountry ?? defaults.unknownCountry,
15
+ withdrawalDays: def.withdrawalDays ?? defaults.withdrawalDays,
16
+ deadline: { ...defaults.deadline, ...def.deadline },
17
+ mechanisms: { ...defaults.mechanisms, ...def.mechanisms },
18
+ ...present('currencies', def.currencies),
19
+ ...present('languages', def.languages),
20
+ defaultLanguage: def.defaultLanguage ?? defaults.defaultLanguage,
21
+ links: def.links,
22
+ ...present('renewalOpensWindow', def.renewalOpensWindow ?? defaults.renewalOpensWindow),
23
+ ...present('startRequestTtlSeconds', def.startRequestTtlSeconds ?? defaults.startRequestTtlSeconds),
24
+ ...present('exemptBusinesses', def.exemptBusinesses ?? defaults.exemptBusinesses),
25
+ ...present('consentContext', def.consentContext),
26
+ });
27
+ };
28
+ export const createConsumerRightsPolicyHelper = () => {
29
+ const isHttpsUrl = (value) => {
30
+ if (typeof value !== 'string') {
31
+ return false;
32
+ }
33
+ try {
34
+ return new URL(value).protocol === 'https:';
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ };
40
+ const fail = (field) => {
41
+ throw new ConsumerRightsError(`policy:${field}`);
42
+ };
43
+ const assertConsumerRightsPolicy = (policy) => {
44
+ if (typeof policy.textVersion !== 'string' || policy.textVersion.trim() === '')
45
+ fail('text-version');
46
+ if (policy.mechanisms == null || typeof policy.mechanisms !== 'object')
47
+ fail('mechanisms');
48
+ if (!Array.isArray(policy.countries) || policy.countries.some(country => !COUNTRY.test(country)))
49
+ fail('countries');
50
+ if (policy.unknownCountry !== 'protect' && policy.unknownCountry !== 'ignore')
51
+ fail('unknown-country');
52
+ if (!Number.isSafeInteger(policy.withdrawalDays) || policy.withdrawalDays < 14)
53
+ fail('withdrawal-days');
54
+ const margin = policy.deadline?.marginDays ?? -1;
55
+ if (!Number.isSafeInteger(margin) || margin < 0 || margin > 7)
56
+ fail('margin-days');
57
+ if (Object.values(policy.currencies ?? {}).some(currency => !CURRENCY.test(currency ?? '')))
58
+ fail('currencies');
59
+ if (policy.startRequestTtlSeconds != null
60
+ && (!Number.isSafeInteger(policy.startRequestTtlSeconds) || policy.startRequestTtlSeconds < 1))
61
+ fail('start-request-ttl');
62
+ if (policy.consentContext != null && !CONSENT_CONTEXT.test(policy.consentContext))
63
+ fail('consent-context');
64
+ const defaults = policy.links?.[policy.defaultLanguage];
65
+ if (defaults == null || !isHttpsUrl(defaults.billingTerms))
66
+ fail('links');
67
+ for (const [lng, links] of Object.entries(policy.links)) {
68
+ if (Object.values(links).some(url => url != null && !isHttpsUrl(url)))
69
+ fail(`links:${lng}`);
70
+ }
71
+ if ((policy.mechanisms.withdrawal || policy.mechanisms.performanceConsent) && defaults.withdrawalInformation == null) {
72
+ fail('links:withdrawal-information');
73
+ }
74
+ return policy;
75
+ };
76
+ const baseLanguageOf = (lng) => (lng ?? '').trim().split(/[-_]/)[0].toLowerCase();
77
+ const linksOf = (policy, lng) => {
78
+ const fallback = policy.links[policy.defaultLanguage];
79
+ const own = lng != null ? policy.links[lng] ?? policy.links[baseLanguageOf(lng)] : undefined;
80
+ return { ...fallback, ...Object.fromEntries(Object.entries(own ?? {}).filter(([, url]) => url != null)) };
81
+ };
82
+ return { assertConsumerRightsPolicy, baseLanguageOf, linksOf };
83
+ };
84
+ export const consumerRightsPolicyHelper = createConsumerRightsPolicyHelper();
85
+ /** @deprecated compat:factory-refactor — use `consumerRightsPolicyHelper.assertConsumerRightsPolicy(…)` */
86
+ export const assertConsumerRightsPolicy = (policy) => consumerRightsPolicyHelper.assertConsumerRightsPolicy(policy);
87
+ /** @deprecated compat:factory-refactor — use `consumerRightsPolicyHelper.baseLanguageOf(…)` */
88
+ export const baseLanguageOf = (lng) => consumerRightsPolicyHelper.baseLanguageOf(lng);
89
+ /** @deprecated compat:factory-refactor — use `consumerRightsPolicyHelper.linksOf(…)` */
90
+ export const linksOf = (policy, lng) => consumerRightsPolicyHelper.linksOf(policy, lng);
91
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/consumer/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ConsumerRightsProtocolOptions, ConsumerRightsProtocols } from './types.js';
2
+ /**
3
+ * The standard consumer-rights protocol tree, the way `makeMarketingConsentProtocols` builds
4
+ * its own:
5
+ *
6
+ * - `base` under the application's guarded `parent` (its account base, whose guards and gate
7
+ * every route inherits) with `profile` GET `/profile`, `purchases` GET `/purchases`, `consent`
8
+ * GET / `giveConsent` POST `/consent`, `start` GET `/start?planSku` / `requestStart` POST
9
+ * `/start`, `withdrawals` GET / `withdraw` POST `/withdrawal`, `cancel` POST `/cancellation`;
10
+ * - with `public`, an UNGUARDED `public` subtree — `policy` GET `/policy`, `withdraw` POST
11
+ * `/withdrawal`, `cancel` POST `/cancellation` — like `paymentGate.webhook`, plus optional
12
+ * sticky frontend `screens`.
13
+ *
14
+ * Aliases are `<prefix>:<name>` (`<prefix>:public:<name>` below `public`). A tree with neither a
15
+ * parent nor guards is a declaration error: the account routes act on the caller's own records.
16
+ * Absent parts are left out of the tree rather than set to `undefined`, so `protocols(tree)` and
17
+ * `mapProtocols(tree, …)` walk it as is.
18
+ */
19
+ export declare const makeConsumerRightsProtocols: <O extends ConsumerRightsProtocolOptions>(opts: O) => ConsumerRightsProtocols<O>;
20
+ //# sourceMappingURL=protocols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../../src/consumer/protocols.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAkC,6BAA6B,EAAE,uBAAuB,EAAwD,MAAM,YAAY,CAAA;AAS9K;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,6BAA6B,QAAQ,CAAC,KAAG,uBAAuB,CAAC,CAAC,CA8EvH,CAAA"}
@@ -0,0 +1,70 @@
1
+ import { contract, openProtocol, protocol, typed } from '@owlmeans/entrypoint';
2
+ import { backend, frontend, route, RouteMethod } from '@owlmeans/route';
3
+ import { BillingProfileViewSchema, CancellationBodySchema, CancellationReceiptSchema, ConsumerRightsPublicViewSchema, DeclarationReceiptSchema, PerformanceConsentBodySchema, PerformanceConsentResponseSchema, PerformanceConsentViewSchema, PurchaseListSchema, SubscriptionStartBodySchema, SubscriptionStartQuerySchema, SubscriptionStartResponseSchema, SubscriptionStartViewSchema, WithdrawalBodySchema, WithdrawalCandidateListSchema, WithdrawalReceiptSchema, } from '../model/consumer.js';
4
+ import { CONSUMER_RIGHTS_API_PATH, CONSUMER_RIGHTS_CANCELLATION_SCREEN_PATH, CONSUMER_RIGHTS_PUBLIC_PATH, CONSUMER_RIGHTS_WITHDRAWAL_SCREEN_PATH } from './consts.js';
5
+ const get = (alias, path, parent) => route(alias, path, backend({ parent, method: RouteMethod.GET }));
6
+ const post = (alias, path, parent) => route(alias, path, backend({ parent, method: RouteMethod.POST }));
7
+ /**
8
+ * The standard consumer-rights protocol tree, the way `makeMarketingConsentProtocols` builds
9
+ * its own:
10
+ *
11
+ * - `base` under the application's guarded `parent` (its account base, whose guards and gate
12
+ * every route inherits) with `profile` GET `/profile`, `purchases` GET `/purchases`, `consent`
13
+ * GET / `giveConsent` POST `/consent`, `start` GET `/start?planSku` / `requestStart` POST
14
+ * `/start`, `withdrawals` GET / `withdraw` POST `/withdrawal`, `cancel` POST `/cancellation`;
15
+ * - with `public`, an UNGUARDED `public` subtree — `policy` GET `/policy`, `withdraw` POST
16
+ * `/withdrawal`, `cancel` POST `/cancellation` — like `paymentGate.webhook`, plus optional
17
+ * sticky frontend `screens`.
18
+ *
19
+ * Aliases are `<prefix>:<name>` (`<prefix>:public:<name>` below `public`). A tree with neither a
20
+ * parent nor guards is a declaration error: the account routes act on the caller's own records.
21
+ * Absent parts are left out of the tree rather than set to `undefined`, so `protocols(tree)` and
22
+ * `mapProtocols(tree, …)` walk it as is.
23
+ */
24
+ export const makeConsumerRightsProtocols = (opts) => {
25
+ if (opts.parent == null && opts.guards == null) {
26
+ throw new SyntaxError('consumer-rights: the account routes need either a parent or explicit guards');
27
+ }
28
+ const alias = (name) => `${opts.prefix}:${name}`;
29
+ const path = opts.path ?? CONSUMER_RIGHTS_API_PATH;
30
+ const base = opts.parent != null
31
+ ? openProtocol(route(alias('base'), path, backend({ parent: opts.parent })))
32
+ : openProtocol(route(alias('base'), path, backend()), {
33
+ guards: opts.guards,
34
+ ...(opts.gate != null ? { gate: opts.gate } : {}),
35
+ });
36
+ const account = {
37
+ base,
38
+ profile: protocol(get(alias('profile'), '/profile', base), contract(BillingProfileViewSchema)),
39
+ purchases: protocol(get(alias('purchases'), '/purchases', base), contract(PurchaseListSchema)),
40
+ consent: protocol(get(alias('consent'), '/consent', base), contract(PerformanceConsentViewSchema)),
41
+ giveConsent: protocol(post(alias('consent:give'), '/consent', base), contract(PerformanceConsentBodySchema, PerformanceConsentResponseSchema)),
42
+ start: protocol(get(alias('start'), '/start', base), contract.request({ query: typed(SubscriptionStartQuerySchema) }, SubscriptionStartViewSchema)),
43
+ requestStart: protocol(post(alias('start:request'), '/start', base), contract(SubscriptionStartBodySchema, SubscriptionStartResponseSchema)),
44
+ withdrawals: protocol(get(alias('withdrawals'), '/withdrawal', base), contract(WithdrawalCandidateListSchema)),
45
+ withdraw: protocol(post(alias('withdraw'), '/withdrawal', base), contract(WithdrawalBodySchema, WithdrawalReceiptSchema)),
46
+ cancel: protocol(post(alias('cancel'), '/cancellation', base), contract(CancellationBodySchema, CancellationReceiptSchema)),
47
+ };
48
+ if (opts.public == null || opts.public === false) {
49
+ return account;
50
+ }
51
+ const pub = opts.public;
52
+ const publicAlias = (name) => alias(`public:${name}`);
53
+ const publicBase = openProtocol(route(publicAlias('base'), pub.path ?? CONSUMER_RIGHTS_PUBLIC_PATH, backend(pub.parent != null ? { parent: pub.parent } : null)));
54
+ const publicTree = {
55
+ base: publicBase,
56
+ policy: protocol(get(publicAlias('policy'), '/policy', publicBase), contract(ConsumerRightsPublicViewSchema)),
57
+ withdraw: protocol(post(publicAlias('withdraw'), '/withdrawal', publicBase), contract(WithdrawalBodySchema, DeclarationReceiptSchema)),
58
+ cancel: protocol(post(publicAlias('cancel'), '/cancellation', publicBase), contract(CancellationBodySchema, DeclarationReceiptSchema)),
59
+ };
60
+ const screens = pub.screens == null ? {} : {
61
+ screens: {
62
+ // Top-level frontend screens, `sticky` so the router keeps them regardless of `cfg.service`
63
+ // filtering — the same shape as every other legal page.
64
+ withdrawal: openProtocol(route(publicAlias('screen:withdrawal'), pub.screens.withdrawal ?? CONSUMER_RIGHTS_WITHDRAWAL_SCREEN_PATH, frontend({ parent: pub.screens.parent })), { sticky: true }),
65
+ cancellation: openProtocol(route(publicAlias('screen:cancellation'), pub.screens.cancellation ?? CONSUMER_RIGHTS_CANCELLATION_SCREEN_PATH, frontend({ parent: pub.screens.parent })), { sticky: true }),
66
+ },
67
+ };
68
+ return { ...account, public: { ...publicTree, ...screens } };
69
+ };
70
+ //# sourceMappingURL=protocols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../src/consumer/protocols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { OneTimeRefund, OneTimeRefundInput, SubscriptionRefund, SubscriptionRefundInput } from '../types.js';
2
+ /** The refund a withdrawal owes, computed in BigInt and rounded in the consumer's favour. */
3
+ export interface WithdrawalRefundHelper {
4
+ /**
5
+ * Split `totalMinor` in proportion to `shares` by the largest remainder: every part is the floor
6
+ * of its exact share, and the units left over go one each to the largest fractional parts (the
7
+ * earlier part on a tie). The parts always sum to the total. All-zero shares split evenly.
8
+ */
9
+ splitByShares: (totalMinor: number, shares: number[]) => number[];
10
+ /**
11
+ * The refund of a one-time purchase (prepaid credits):
12
+ * `min(paid − refunded, ceil(paid × (granted − used) / granted))`. Nothing granted means nothing
13
+ * performed — the whole unrefunded amount. 1256 paid, 125 000 of 500 000 used → 942.
14
+ */
15
+ oneTimeWithdrawalRefund: (input: OneTimeRefundInput) => OneTimeRefund;
16
+ /**
17
+ * The refund of a subscription's first invoice (CJEU C-641/19 PE Digital). The net price splits
18
+ * into its components by `shareMinor` (largest remainder). A `time` component loses
19
+ * `floor(c × elapsedDays / periodDays)`, the days counted from `max(periodStart,
20
+ * servicesRequestedAt)` and floored — and nothing without a start request. A `units` component
21
+ * loses `floor(c × used / granted)`. The gross refund is `ceil(paid × refundNet / net)`, capped at
22
+ * what is still unrefunded. Net 2000 / paid 2460, services 1000 at 3 of 30 days (−100), credits
23
+ * 1000 with 100 000 of 500 000 used (−200) → net 1700, gross 2091.
24
+ */
25
+ subscriptionWithdrawalRefund: (input: SubscriptionRefundInput) => SubscriptionRefund;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/consumer/refund/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAEjH,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACjE;;;;OAIG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,aAAa,CAAA;IACrE;;;;;;;;OAQG;IACH,4BAA4B,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,kBAAkB,CAAA;CACrF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/consumer/refund/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { OneTimeRefund, OneTimeRefundInput, SubscriptionRefund, SubscriptionRefundInput } from './types.js';
2
+ import type { WithdrawalRefundHelper } from './refund/types.js';
3
+ export declare const createWithdrawalRefundHelper: () => WithdrawalRefundHelper;
4
+ export declare const withdrawalRefundHelper: WithdrawalRefundHelper;
5
+ /** @deprecated compat:factory-refactor — use `withdrawalRefundHelper.oneTimeWithdrawalRefund(…)` */
6
+ export declare const oneTimeWithdrawalRefund: (input: OneTimeRefundInput) => OneTimeRefund;
7
+ /** @deprecated compat:factory-refactor — use `withdrawalRefundHelper.subscriptionWithdrawalRefund(…)` */
8
+ export declare const subscriptionWithdrawalRefund: (input: SubscriptionRefundInput) => SubscriptionRefund;
9
+ //# sourceMappingURL=refund.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/consumer/refund.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAA+B,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAC7I,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AA0B/D,eAAO,MAAM,4BAA4B,QAAO,sBA+F/C,CAAA;AAED,eAAO,MAAM,sBAAsB,wBAAiC,CAAA;AAEpE,oGAAoG;AACpG,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,KAAG,aACb,CAAA;AAEvD,yGAAyG;AACzG,eAAO,MAAM,4BAA4B,UAAW,uBAAuB,KAAG,kBAClB,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { ConsumerRightsError } from '../errors.js';
2
+ import { DAY_MS } from './consts.js';
3
+ // Every amount is computed in BigInt and rounded in the consumer's favour: a deduction rounds
4
+ // down, a refund rounds up, and a refund never exceeds what is still unrefunded.
5
+ const big = (value, field) => {
6
+ if (!Number.isSafeInteger(value) || value < 0) {
7
+ throw new ConsumerRightsError(`refund:${field}`);
8
+ }
9
+ return BigInt(value);
10
+ };
11
+ /** A usage figure: fractions round DOWN (fewer units used, more reimbursed). */
12
+ const units = (value, field) => {
13
+ if (!Number.isFinite(value)) {
14
+ throw new ConsumerRightsError(`refund:${field}`);
15
+ }
16
+ return BigInt(Math.max(0, Math.floor(value)));
17
+ };
18
+ const ceilDiv = (a, b) => (a + b - 1n) / b;
19
+ const min = (a, b) => a < b ? a : b;
20
+ const clamp = (value, low, high) => value < low ? low : value > high ? high : value;
21
+ export const createWithdrawalRefundHelper = () => {
22
+ const splitByShares = (totalMinor, shares) => {
23
+ if (shares.length === 0) {
24
+ return [];
25
+ }
26
+ const total = big(totalMinor, 'total');
27
+ const weights = shares.map((share, index) => big(share, `share:${index}`));
28
+ const even = weights.every(weight => weight === 0n);
29
+ const effective = even ? weights.map(() => 1n) : weights;
30
+ const sum = effective.reduce((acc, weight) => acc + weight, 0n);
31
+ const parts = effective.map(weight => (total * weight) / sum);
32
+ const remainders = effective.map((weight, index) => ({ index, rest: (total * weight) % sum }));
33
+ let left = total - parts.reduce((acc, part) => acc + part, 0n);
34
+ remainders.sort((a, b) => a.rest === b.rest ? a.index - b.index : a.rest > b.rest ? -1 : 1);
35
+ for (const { index } of remainders) {
36
+ if (left === 0n) {
37
+ break;
38
+ }
39
+ parts[index] += 1n;
40
+ left -= 1n;
41
+ }
42
+ return parts.map(Number);
43
+ };
44
+ const oneTimeWithdrawalRefund = (input) => {
45
+ const paid = big(input.paidMinor, 'paid');
46
+ const open = paid - min(paid, big(input.refundedMinor ?? 0, 'refunded'));
47
+ const granted = units(input.unitsGranted, 'granted');
48
+ if (granted === 0n) {
49
+ return { refundMinor: Number(open), netRatio: 1, unitsReturned: 0 };
50
+ }
51
+ const unused = granted - clamp(units(input.unitsUsed, 'used'), 0n, granted);
52
+ return {
53
+ refundMinor: Number(min(open, ceilDiv(paid * unused, granted))),
54
+ netRatio: Number(unused) / Number(granted),
55
+ unitsReturned: Number(unused),
56
+ };
57
+ };
58
+ const subscriptionWithdrawalRefund = (input) => {
59
+ const paid = big(input.paidMinor, 'paid');
60
+ const open = paid - min(paid, big(input.refundedMinor ?? 0, 'refunded'));
61
+ const net = big(input.netMinor, 'net');
62
+ const declared = input.components != null && input.components.length > 0
63
+ ? input.components
64
+ : [{ key: 'price', basis: 'time', shareMinor: input.netMinor }];
65
+ const amounts = splitByShares(input.netMinor, declared.map(component => component.shareMinor));
66
+ const span = input.periodEnd.getTime() - input.periodStart.getTime();
67
+ if (Number.isNaN(span) || Number.isNaN(input.withdrawnAt.getTime())) {
68
+ throw new ConsumerRightsError('refund:period');
69
+ }
70
+ const periodDays = Math.max(1, Math.round(span / DAY_MS));
71
+ const requestedAt = input.servicesRequestedAt;
72
+ const from = requestedAt == null ? null : Math.max(input.periodStart.getTime(), requestedAt.getTime());
73
+ const elapsedDays = from == null ? 0
74
+ : Math.min(periodDays, Math.max(0, Math.floor((input.withdrawnAt.getTime() - from) / DAY_MS)));
75
+ const granted = input.units != null ? units(input.units.granted, 'granted') : 0n;
76
+ const used = input.units != null ? clamp(units(input.units.used, 'used'), 0n, granted) : 0n;
77
+ let timeDeduction = 0n;
78
+ let unitsDeduction = 0n;
79
+ const components = declared.map((component, index) => {
80
+ const amount = BigInt(amounts[index]);
81
+ let deduction = 0n;
82
+ if (component.basis === 'time') {
83
+ deduction = (amount * BigInt(elapsedDays)) / BigInt(periodDays);
84
+ timeDeduction += deduction;
85
+ }
86
+ else if (granted > 0n) {
87
+ deduction = (amount * used) / granted;
88
+ unitsDeduction += deduction;
89
+ }
90
+ return { ...component, amountMinor: amounts[index], deductionMinor: Number(deduction) };
91
+ });
92
+ const refundNet = net - min(net, timeDeduction + unitsDeduction);
93
+ const refund = net === 0n ? open : min(open, ceilDiv(paid * refundNet, net));
94
+ return {
95
+ refundMinor: Number(refund),
96
+ refundNetMinor: Number(refundNet),
97
+ timeDeductionMinor: Number(timeDeduction),
98
+ unitsDeductionMinor: Number(unitsDeduction),
99
+ elapsedDays,
100
+ periodDays,
101
+ ...(input.units != null ? { unitsUsed: Number(used), unitsGranted: Number(granted) } : {}),
102
+ components,
103
+ };
104
+ };
105
+ return { splitByShares, oneTimeWithdrawalRefund, subscriptionWithdrawalRefund };
106
+ };
107
+ export const withdrawalRefundHelper = createWithdrawalRefundHelper();
108
+ /** @deprecated compat:factory-refactor — use `withdrawalRefundHelper.oneTimeWithdrawalRefund(…)` */
109
+ export const oneTimeWithdrawalRefund = (input) => withdrawalRefundHelper.oneTimeWithdrawalRefund(input);
110
+ /** @deprecated compat:factory-refactor — use `withdrawalRefundHelper.subscriptionWithdrawalRefund(…)` */
111
+ export const subscriptionWithdrawalRefund = (input) => withdrawalRefundHelper.subscriptionWithdrawalRefund(input);
112
+ //# sourceMappingURL=refund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/consumer/refund.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ConsentKind } from '../consts.js';
2
+ /**
3
+ * Which express request a refusal asks for: `performance` (spend consent), `subscription-start`,
4
+ * or `null` for anything else. Recognises the class after `ResilientError.ensure` — a marshaled
5
+ * error that crossed a hop is rebuilt first — and otherwise the marker or type name in the
6
+ * `message` or `type`, so an error wrapped by another layer still answers. A bare HTTP 428 with
7
+ * no marker (a production incident body) is the caller's to check (`@owlmeans/api/status`).
8
+ */
9
+ export declare const consentRefusalOf: (error: unknown) => ConsentKind | null;
10
+ //# sourceMappingURL=refusal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../../src/consumer/refusal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAI1C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,WAAW,GAAG,IAsB/D,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { isResilientError, ResilientError } from '@owlmeans/error';
2
+ import { ConsentKind } from '../consts.js';
3
+ import { PerformanceConsentRequired, SubscriptionStartRequired } from '../errors.js';
4
+ import { CONSENT_REFUSAL_MARKERS } from './consts.local.js';
5
+ /**
6
+ * Which express request a refusal asks for: `performance` (spend consent), `subscription-start`,
7
+ * or `null` for anything else. Recognises the class after `ResilientError.ensure` — a marshaled
8
+ * error that crossed a hop is rebuilt first — and otherwise the marker or type name in the
9
+ * `message` or `type`, so an error wrapped by another layer still answers. A bare HTTP 428 with
10
+ * no marker (a production incident body) is the caller's to check (`@owlmeans/api/status`).
11
+ */
12
+ export const consentRefusalOf = (error) => {
13
+ if (error == null || typeof error !== 'object') {
14
+ return null;
15
+ }
16
+ let candidate = error;
17
+ if (!isResilientError(error) && error instanceof Error) {
18
+ try {
19
+ candidate = ResilientError.ensure(error);
20
+ }
21
+ catch {
22
+ candidate = error;
23
+ }
24
+ }
25
+ if (candidate instanceof PerformanceConsentRequired) {
26
+ return ConsentKind.Performance;
27
+ }
28
+ if (candidate instanceof SubscriptionStartRequired) {
29
+ return ConsentKind.SubscriptionStart;
30
+ }
31
+ const { message, type } = error;
32
+ const texts = [message, type].filter((text) => typeof text === 'string');
33
+ return CONSENT_REFUSAL_MARKERS.find(([marker]) => texts.some(text => text.includes(marker)))?.[1] ?? null;
34
+ };
35
+ //# sourceMappingURL=refusal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusal.js","sourceRoot":"","sources":["../../src/consumer/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAsB,EAAE;IACrE,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,SAAS,GAAY,KAAK,CAAA;IAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,YAAY,0BAA0B,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC,WAAW,CAAA;IAChC,CAAC;IACD,IAAI,SAAS,YAAY,yBAAyB,EAAE,CAAC;QACnD,OAAO,WAAW,CAAC,iBAAiB,CAAA;IACtC,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAA8C,CAAA;IACxE,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAA;IAExF,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAC3G,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { AmountPolicyView, BillingProfileView, CancellationReceipt, CheckoutLimitView, DeclarationReceipt, PerformanceConsentResponse, PerformanceConsentView, PurchaseList, PurchaseView, SubscriptionStartResponse, WithdrawalCandidateList, WithdrawalReceipt } from '../../types.js';
2
+ /**
3
+ * The consumer-rights wire values with their dates turned back into `Date`s. Each reviver copies
4
+ * the value; a value that already holds dates is copied as is, so reviving twice is harmless.
5
+ */
6
+ export interface ConsumerReviveHelper {
7
+ revivePurchase: (purchase: PurchaseView) => PurchaseView;
8
+ revivePurchaseList: (list: PurchaseList) => PurchaseList;
9
+ reviveBillingProfile: (profile: BillingProfileView) => BillingProfileView;
10
+ reviveConsentView: (view: PerformanceConsentView) => PerformanceConsentView;
11
+ reviveConsentResponse: (response: PerformanceConsentResponse) => PerformanceConsentResponse;
12
+ reviveStartResponse: (response: SubscriptionStartResponse) => SubscriptionStartResponse;
13
+ reviveWithdrawalList: (list: WithdrawalCandidateList) => WithdrawalCandidateList;
14
+ /** Any declaration receipt — withdrawal or cancellation. */
15
+ reviveReceipt: <T extends DeclarationReceipt | WithdrawalReceipt | CancellationReceipt>(receipt: T) => T;
16
+ reviveCheckoutLimit: (limit: CheckoutLimitView) => CheckoutLimitView;
17
+ reviveAmountPolicyView: (view: AmountPolicyView) => AmountPolicyView;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/consumer/revive/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAChG,0BAA0B,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,yBAAyB,EACzG,uBAAuB,EAAE,iBAAiB,EAC3C,MAAM,gBAAgB,CAAA;AAEvB;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,YAAY,CAAA;IACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,YAAY,CAAA;IACxD,oBAAoB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,kBAAkB,CAAA;IACzE,iBAAiB,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,sBAAsB,CAAA;IAC3E,qBAAqB,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,0BAA0B,CAAA;IAC3F,mBAAmB,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,yBAAyB,CAAA;IACvF,oBAAoB,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,uBAAuB,CAAA;IAChF,4DAA4D;IAC5D,aAAa,EAAE,CAAC,CAAC,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,mBAAmB,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;IACxG,mBAAmB,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,iBAAiB,CAAA;IACpE,sBAAsB,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;CACrE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/consumer/revive/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { AmountPolicyView, BillingProfileView, PerformanceConsentView, PurchaseList } from '../types.js';
2
+ import type { ConsumerReviveHelper } from './revive/types.js';
3
+ export declare const createConsumerReviveHelper: () => ConsumerReviveHelper;
4
+ export declare const consumerReviveHelper: ConsumerReviveHelper;
5
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.revivePurchaseList(…)` */
6
+ export declare const revivePurchaseList: (list: PurchaseList) => PurchaseList;
7
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveBillingProfile(…)` */
8
+ export declare const reviveBillingProfile: (profile: BillingProfileView) => BillingProfileView;
9
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveConsentView(…)` */
10
+ export declare const reviveConsentView: (view: PerformanceConsentView) => PerformanceConsentView;
11
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveAmountPolicyView(…)` */
12
+ export declare const reviveAmountPolicyView: (view: AmountPolicyView) => AmountPolicyView;
13
+ //# sourceMappingURL=revive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revive.d.ts","sourceRoot":"","sources":["../../src/consumer/revive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,kBAAkB,EACR,sBAAsB,EAAE,YAAY,EAEjE,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAM7D,eAAO,MAAM,0BAA0B,QAAO,oBAoD7C,CAAA;AAED,eAAO,MAAM,oBAAoB,sBAA+B,CAAA;AAEhE,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,SAAU,YAAY,KAAG,YAA6D,CAAA;AAErH,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,YAAa,kBAAkB,KAAG,kBACf,CAAA;AAEpD,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,SAAU,sBAAsB,KAAG,sBACnB,CAAA;AAE9C,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,SAAU,gBAAgB,KAAG,gBACb,CAAA"}
@@ -0,0 +1,43 @@
1
+ // The wire carries every date as an ISO string (see `model/consumer.ts`). Each reviver copies the
2
+ // value and turns the named fields back into `Date`s; a value that already holds dates is copied
3
+ // as is, so reviving twice is harmless.
4
+ export const createConsumerReviveHelper = () => {
5
+ const revive = (value, fields) => {
6
+ const copy = { ...value };
7
+ for (const field of fields) {
8
+ const raw = copy[field];
9
+ if (raw != null && !(raw instanceof Date)) {
10
+ copy[field] = new Date(raw);
11
+ }
12
+ }
13
+ return copy;
14
+ };
15
+ const revivePurchase = (purchase) => revive(purchase, ['purchasedAt', 'deadline', 'consentedAt', 'withdrawnAt']);
16
+ const revivePurchaseList = (list) => ({ ...list, purchases: list.purchases.map(revivePurchase) });
17
+ const reviveBillingProfile = (profile) => revive(profile, ['lockedAt']);
18
+ const reviveConsentView = (view) => ({
19
+ ...revive(view, ['deadline', 'at']),
20
+ purchases: view.purchases.map(revivePurchase),
21
+ });
22
+ const reviveConsentResponse = (response) => revive(response, ['consentedAt']);
23
+ const reviveStartResponse = (response) => revive(response, ['requestedAt', 'expiresAt']);
24
+ const reviveCandidate = (candidate) => revive(candidate, ['purchasedAt', 'deadline']);
25
+ const reviveWithdrawalList = (list) => ({ ...list, candidates: list.candidates.map(reviveCandidate) });
26
+ const reviveReceipt = (receipt) => revive(receipt, ['receivedAt', 'effectiveAt']);
27
+ const reviveCheckoutLimit = (limit) => revive(limit, ['resetsAt']);
28
+ const reviveAmountPolicyView = (view) => ({ ...view, limit: view.limit == null ? null : reviveCheckoutLimit(view.limit) });
29
+ return {
30
+ revivePurchase, revivePurchaseList, reviveBillingProfile, reviveConsentView, reviveConsentResponse,
31
+ reviveStartResponse, reviveWithdrawalList, reviveReceipt, reviveCheckoutLimit, reviveAmountPolicyView,
32
+ };
33
+ };
34
+ export const consumerReviveHelper = createConsumerReviveHelper();
35
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.revivePurchaseList(…)` */
36
+ export const revivePurchaseList = (list) => consumerReviveHelper.revivePurchaseList(list);
37
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveBillingProfile(…)` */
38
+ export const reviveBillingProfile = (profile) => consumerReviveHelper.reviveBillingProfile(profile);
39
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveConsentView(…)` */
40
+ export const reviveConsentView = (view) => consumerReviveHelper.reviveConsentView(view);
41
+ /** @deprecated compat:factory-refactor — use `consumerReviveHelper.reviveAmountPolicyView(…)` */
42
+ export const reviveAmountPolicyView = (view) => consumerReviveHelper.reviveAmountPolicyView(view);
43
+ //# sourceMappingURL=revive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revive.js","sourceRoot":"","sources":["../../src/consumer/revive.ts"],"names":[],"mappings":"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"}