@kreiseck/kasseneck-api 0.31.0 → 1.0.0-rc.2

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 (712) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.de.md +11 -7
  3. package/README.md +509 -126
  4. package/dist/cjs/client/api.d.ts +7 -6
  5. package/dist/cjs/client/api.js +2 -2
  6. package/dist/cjs/client/aufrufe.d.ts +29 -5
  7. package/dist/cjs/client/aufrufe.js +114 -2
  8. package/dist/cjs/client/auth.d.ts +2 -0
  9. package/dist/cjs/client/auth.js +17 -1
  10. package/dist/cjs/client/cashregisters.d.ts +1 -1
  11. package/dist/cjs/client/cashregisters.js +2 -2
  12. package/dist/cjs/client/errors.d.ts +94 -19
  13. package/dist/cjs/client/errors.js +132 -28
  14. package/dist/cjs/client/fehlercodes.d.ts +9 -0
  15. package/dist/cjs/client/fehlercodes.js +36 -0
  16. package/dist/cjs/client/index.d.ts +5 -5
  17. package/dist/cjs/client/index.js +11 -3
  18. package/dist/cjs/client/receipts.d.ts +131 -124
  19. package/dist/cjs/client/receipts.js +196 -137
  20. package/dist/cjs/client/reports.d.ts +26 -4
  21. package/dist/cjs/client/reports.js +37 -4
  22. package/dist/cjs/client/status.d.ts +3 -3
  23. package/dist/cjs/client/status.js +7 -7
  24. package/dist/cjs/client/transport.d.ts +56 -4
  25. package/dist/cjs/client/transport.js +234 -25
  26. package/dist/cjs/enums/vat-rate.d.ts +2 -2
  27. package/dist/cjs/enums/vat-rate.js +1 -1
  28. package/dist/cjs/index.d.ts +4 -3
  29. package/dist/cjs/index.js +42 -13
  30. package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
  31. package/dist/cjs/{rechnung → invoice}/api.js +6 -6
  32. package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
  33. package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
  34. package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
  35. package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
  36. package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
  37. package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
  38. package/dist/cjs/invoice/fehler.d.ts +31 -0
  39. package/dist/cjs/invoice/fehler.js +39 -0
  40. package/dist/cjs/invoice/index.d.ts +21 -0
  41. package/dist/cjs/invoice/index.js +86 -0
  42. package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
  43. package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
  44. package/dist/cjs/invoice/texte.d.ts +224 -0
  45. package/dist/cjs/invoice/texte.js +425 -0
  46. package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
  47. package/dist/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
  48. package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
  49. package/dist/cjs/models/cancellation.d.ts +43 -24
  50. package/dist/cjs/models/cancellation.js +94 -46
  51. package/dist/cjs/models/hobex-receipt.d.ts +3 -3
  52. package/dist/cjs/models/hobex-receipt.js +35 -35
  53. package/dist/cjs/models/index.d.ts +6 -5
  54. package/dist/cjs/models/index.js +22 -2
  55. package/dist/cjs/models/payment-errors.d.ts +32 -15
  56. package/dist/cjs/models/payment-errors.js +80 -32
  57. package/dist/cjs/models/receipt-company.d.ts +6 -5
  58. package/dist/cjs/models/receipt-company.js +4 -4
  59. package/dist/cjs/models/receipt-email.d.ts +32 -18
  60. package/dist/cjs/models/receipt-email.js +69 -24
  61. package/dist/cjs/models/receipt-errors.d.ts +39 -0
  62. package/dist/cjs/models/receipt-errors.js +94 -0
  63. package/dist/cjs/models/receipt-item.d.ts +9 -1
  64. package/dist/cjs/models/receipt-item.js +3 -0
  65. package/dist/cjs/models/receipt-summary.d.ts +10 -4
  66. package/dist/cjs/models/receipt-summary.js +10 -4
  67. package/dist/cjs/models/receipt.d.ts +31 -2
  68. package/dist/cjs/models/receipt.js +12 -1
  69. package/dist/cjs/models/voucher.d.ts +7 -6
  70. package/dist/cjs/models/voucher.js +2 -7
  71. package/dist/cjs/partner/ablauf.d.ts +10 -10
  72. package/dist/cjs/partner/ablauf.js +29 -29
  73. package/dist/cjs/partner/api.d.ts +26 -23
  74. package/dist/cjs/partner/api.js +11 -13
  75. package/dist/cjs/partner/auth.d.ts +1 -1
  76. package/dist/cjs/partner/auth.js +2 -2
  77. package/dist/cjs/partner/betrieb.d.ts +7 -7
  78. package/dist/cjs/partner/betrieb.js +10 -10
  79. package/dist/cjs/partner/endpunkte.d.ts +27 -14
  80. package/dist/cjs/partner/endpunkte.js +80 -39
  81. package/dist/cjs/partner/fehler.d.ts +60 -30
  82. package/dist/cjs/partner/fehler.js +99 -43
  83. package/dist/cjs/partner/index.d.ts +13 -12
  84. package/dist/cjs/partner/index.js +35 -22
  85. package/dist/cjs/partner/secret.d.ts +3 -3
  86. package/dist/cjs/partner/secret.js +6 -6
  87. package/dist/cjs/partner/typen.d.ts +129 -71
  88. package/dist/cjs/partner/typen.js +76 -3
  89. package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
  90. package/dist/cjs/partner/webhook-signatur.js +12 -12
  91. package/dist/cjs/partner/webhooks.d.ts +60 -32
  92. package/dist/cjs/partner/webhooks.js +40 -34
  93. package/dist/cjs/payments/hobex.d.ts +11 -3
  94. package/dist/cjs/payments/hobex.js +17 -5
  95. package/dist/cjs/payments/stripe.d.ts +5 -2
  96. package/dist/cjs/payments/stripe.js +10 -5
  97. package/dist/cjs/pos/artikel.d.ts +90 -0
  98. package/dist/cjs/pos/artikel.js +89 -0
  99. package/dist/cjs/pos/client.d.ts +27 -0
  100. package/dist/cjs/pos/client.js +144 -0
  101. package/dist/cjs/pos/drucker.d.ts +86 -0
  102. package/dist/cjs/pos/drucker.js +78 -0
  103. package/dist/cjs/pos/errors.d.ts +36 -0
  104. package/dist/cjs/pos/errors.js +95 -0
  105. package/dist/cjs/pos/index.d.ts +15 -0
  106. package/dist/cjs/pos/index.js +102 -0
  107. package/dist/cjs/pos/settings.d.ts +313 -0
  108. package/dist/cjs/pos/settings.js +376 -0
  109. package/dist/cjs/pos/texte.d.ts +883 -0
  110. package/dist/cjs/pos/texte.js +489 -0
  111. package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
  112. package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
  113. package/dist/cjs/printing/escpos.d.ts +29 -29
  114. package/dist/cjs/printing/escpos.js +61 -61
  115. package/dist/cjs/printing/index.d.ts +2 -2
  116. package/dist/cjs/printing/index.js +17 -17
  117. package/dist/cjs/printing/qr-groesse.d.ts +38 -38
  118. package/dist/cjs/printing/qr-groesse.js +47 -47
  119. package/dist/cjs/printing/webusb.d.ts +2 -2
  120. package/dist/cjs/printing/webusb.js +4 -4
  121. package/dist/cjs/react/index.d.ts +21 -21
  122. package/dist/cjs/react/index.js +40 -30
  123. package/dist/cjs/receipt/bild.d.ts +4 -4
  124. package/dist/cjs/receipt/bild.js +11 -11
  125. package/dist/cjs/receipt/blatt.d.ts +46 -46
  126. package/dist/cjs/receipt/blatt.js +59 -59
  127. package/dist/cjs/receipt/discount.d.ts +1 -1
  128. package/dist/cjs/receipt/discount.js +8 -8
  129. package/dist/cjs/receipt/due.d.ts +86 -0
  130. package/dist/cjs/receipt/due.js +261 -0
  131. package/dist/cjs/receipt/epos.d.ts +22 -22
  132. package/dist/cjs/receipt/epos.js +45 -45
  133. package/dist/cjs/receipt/grid.d.ts +10 -10
  134. package/dist/cjs/receipt/grid.js +20 -20
  135. package/dist/cjs/receipt/index.d.ts +9 -8
  136. package/dist/cjs/receipt/index.js +26 -23
  137. package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
  138. package/dist/cjs/receipt/layout-escpos.js +49 -49
  139. package/dist/cjs/receipt/layout.d.ts +28 -23
  140. package/dist/cjs/receipt/layout.js +45 -21
  141. package/dist/cjs/receipt/marke-daten.d.ts +8 -8
  142. package/dist/cjs/receipt/marke-daten.js +8 -8
  143. package/dist/cjs/receipt/marke.d.ts +7 -7
  144. package/dist/cjs/receipt/marke.js +10 -10
  145. package/dist/cjs/register/errors.d.ts +61 -0
  146. package/dist/cjs/register/errors.js +112 -0
  147. package/dist/cjs/register/index.d.ts +14 -1
  148. package/dist/cjs/register/index.js +20 -1
  149. package/dist/cjs/register/pairing.d.ts +55 -36
  150. package/dist/cjs/register/pairing.js +33 -29
  151. package/dist/cjs/register/session.d.ts +5 -5
  152. package/dist/cjs/register/session.js +7 -7
  153. package/dist/cjs/stored/draht.d.ts +45 -0
  154. package/dist/cjs/stored/draht.js +220 -0
  155. package/dist/cjs/stored/einstellungen.d.ts +23 -0
  156. package/dist/cjs/stored/einstellungen.js +200 -0
  157. package/dist/cjs/stored/index.d.ts +109 -0
  158. package/dist/cjs/stored/index.js +225 -0
  159. package/dist/cjs/stored/vokabular.d.ts +18 -0
  160. package/dist/cjs/stored/vokabular.js +389 -0
  161. package/dist/cjs/version.d.ts +7 -0
  162. package/dist/cjs/version.js +10 -0
  163. package/dist/cjs/vienna-time.d.ts +1 -1
  164. package/dist/cjs/vienna-time.js +2 -2
  165. package/dist/esm/client/api.d.ts +7 -6
  166. package/dist/esm/client/api.js +4 -4
  167. package/dist/esm/client/aufrufe.d.ts +29 -5
  168. package/dist/esm/client/aufrufe.js +111 -1
  169. package/dist/esm/client/auth.d.ts +2 -0
  170. package/dist/esm/client/auth.js +16 -1
  171. package/dist/esm/client/cashregisters.d.ts +1 -1
  172. package/dist/esm/client/cashregisters.js +2 -2
  173. package/dist/esm/client/errors.d.ts +94 -19
  174. package/dist/esm/client/errors.js +129 -27
  175. package/dist/esm/client/fehlercodes.d.ts +9 -0
  176. package/dist/esm/client/fehlercodes.js +32 -0
  177. package/dist/esm/client/index.d.ts +5 -5
  178. package/dist/esm/client/index.js +5 -5
  179. package/dist/esm/client/receipts.d.ts +131 -124
  180. package/dist/esm/client/receipts.js +195 -140
  181. package/dist/esm/client/reports.d.ts +26 -4
  182. package/dist/esm/client/reports.js +36 -4
  183. package/dist/esm/client/status.d.ts +3 -3
  184. package/dist/esm/client/status.js +7 -7
  185. package/dist/esm/client/transport.d.ts +56 -4
  186. package/dist/esm/client/transport.js +233 -24
  187. package/dist/esm/enums/vat-rate.d.ts +2 -2
  188. package/dist/esm/enums/vat-rate.js +1 -1
  189. package/dist/esm/index.d.ts +4 -3
  190. package/dist/esm/index.js +4 -3
  191. package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
  192. package/dist/esm/{rechnung → invoice}/api.js +6 -6
  193. package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
  194. package/dist/esm/{rechnung → invoice}/auth.js +4 -4
  195. package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
  196. package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
  197. package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
  198. package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
  199. package/dist/esm/invoice/fehler.d.ts +31 -0
  200. package/dist/esm/invoice/fehler.js +33 -0
  201. package/dist/esm/invoice/index.d.ts +21 -0
  202. package/dist/esm/invoice/index.js +20 -0
  203. package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
  204. package/dist/esm/{rechnung → invoice}/summen.js +12 -12
  205. package/dist/esm/invoice/texte.d.ts +224 -0
  206. package/dist/esm/invoice/texte.js +421 -0
  207. package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
  208. package/dist/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
  209. package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
  210. package/dist/esm/models/cancellation.d.ts +43 -24
  211. package/dist/esm/models/cancellation.js +90 -45
  212. package/dist/esm/models/hobex-receipt.d.ts +3 -3
  213. package/dist/esm/models/hobex-receipt.js +35 -35
  214. package/dist/esm/models/index.d.ts +6 -5
  215. package/dist/esm/models/index.js +6 -5
  216. package/dist/esm/models/payment-errors.d.ts +32 -15
  217. package/dist/esm/models/payment-errors.js +77 -32
  218. package/dist/esm/models/receipt-company.d.ts +6 -5
  219. package/dist/esm/models/receipt-company.js +4 -4
  220. package/dist/esm/models/receipt-email.d.ts +32 -18
  221. package/dist/esm/models/receipt-email.js +65 -23
  222. package/dist/esm/models/receipt-errors.d.ts +39 -0
  223. package/dist/esm/models/receipt-errors.js +87 -0
  224. package/dist/esm/models/receipt-item.d.ts +9 -1
  225. package/dist/esm/models/receipt-item.js +3 -0
  226. package/dist/esm/models/receipt-summary.d.ts +10 -4
  227. package/dist/esm/models/receipt-summary.js +9 -3
  228. package/dist/esm/models/receipt.d.ts +31 -2
  229. package/dist/esm/models/receipt.js +12 -2
  230. package/dist/esm/models/voucher.d.ts +7 -6
  231. package/dist/esm/models/voucher.js +2 -7
  232. package/dist/esm/partner/ablauf.d.ts +10 -10
  233. package/dist/esm/partner/ablauf.js +27 -27
  234. package/dist/esm/partner/api.d.ts +26 -23
  235. package/dist/esm/partner/api.js +13 -15
  236. package/dist/esm/partner/auth.d.ts +1 -1
  237. package/dist/esm/partner/auth.js +2 -2
  238. package/dist/esm/partner/betrieb.d.ts +7 -7
  239. package/dist/esm/partner/betrieb.js +8 -8
  240. package/dist/esm/partner/endpunkte.d.ts +27 -14
  241. package/dist/esm/partner/endpunkte.js +79 -39
  242. package/dist/esm/partner/fehler.d.ts +60 -30
  243. package/dist/esm/partner/fehler.js +91 -35
  244. package/dist/esm/partner/index.d.ts +13 -12
  245. package/dist/esm/partner/index.js +12 -11
  246. package/dist/esm/partner/secret.d.ts +3 -3
  247. package/dist/esm/partner/secret.js +5 -5
  248. package/dist/esm/partner/typen.d.ts +129 -71
  249. package/dist/esm/partner/typen.js +75 -2
  250. package/dist/esm/partner/webhook-signatur.d.ts +2 -2
  251. package/dist/esm/partner/webhook-signatur.js +12 -12
  252. package/dist/esm/partner/webhooks.d.ts +60 -32
  253. package/dist/esm/partner/webhooks.js +38 -32
  254. package/dist/esm/payments/hobex.d.ts +11 -3
  255. package/dist/esm/payments/hobex.js +18 -6
  256. package/dist/esm/payments/stripe.d.ts +5 -2
  257. package/dist/esm/payments/stripe.js +11 -6
  258. package/dist/esm/pos/artikel.d.ts +90 -0
  259. package/dist/esm/pos/artikel.js +79 -0
  260. package/dist/esm/pos/client.d.ts +27 -0
  261. package/dist/esm/pos/client.js +137 -0
  262. package/dist/esm/pos/drucker.d.ts +86 -0
  263. package/dist/esm/pos/drucker.js +71 -0
  264. package/dist/esm/pos/errors.d.ts +36 -0
  265. package/dist/esm/pos/errors.js +88 -0
  266. package/dist/esm/pos/index.d.ts +15 -0
  267. package/dist/esm/pos/index.js +20 -0
  268. package/dist/esm/pos/settings.d.ts +313 -0
  269. package/dist/esm/pos/settings.js +367 -0
  270. package/dist/esm/pos/texte.d.ts +883 -0
  271. package/dist/esm/pos/texte.js +481 -0
  272. package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
  273. package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
  274. package/dist/esm/printing/escpos.d.ts +29 -29
  275. package/dist/esm/printing/escpos.js +56 -56
  276. package/dist/esm/printing/index.d.ts +2 -2
  277. package/dist/esm/printing/index.js +2 -2
  278. package/dist/esm/printing/qr-groesse.d.ts +38 -38
  279. package/dist/esm/printing/qr-groesse.js +42 -42
  280. package/dist/esm/printing/webusb.d.ts +2 -2
  281. package/dist/esm/printing/webusb.js +4 -4
  282. package/dist/esm/react/index.d.ts +21 -21
  283. package/dist/esm/react/index.js +39 -29
  284. package/dist/esm/receipt/bild.d.ts +4 -4
  285. package/dist/esm/receipt/bild.js +11 -11
  286. package/dist/esm/receipt/blatt.d.ts +46 -46
  287. package/dist/esm/receipt/blatt.js +55 -55
  288. package/dist/esm/receipt/discount.d.ts +1 -1
  289. package/dist/esm/receipt/discount.js +7 -7
  290. package/dist/esm/receipt/due.d.ts +86 -0
  291. package/dist/esm/receipt/due.js +257 -0
  292. package/dist/esm/receipt/epos.d.ts +22 -22
  293. package/dist/esm/receipt/epos.js +47 -47
  294. package/dist/esm/receipt/grid.d.ts +10 -10
  295. package/dist/esm/receipt/grid.js +18 -18
  296. package/dist/esm/receipt/index.d.ts +9 -8
  297. package/dist/esm/receipt/index.js +9 -8
  298. package/dist/esm/receipt/layout-escpos.d.ts +24 -24
  299. package/dist/esm/receipt/layout-escpos.js +51 -51
  300. package/dist/esm/receipt/layout.d.ts +28 -23
  301. package/dist/esm/receipt/layout.js +44 -20
  302. package/dist/esm/receipt/marke-daten.d.ts +8 -8
  303. package/dist/esm/receipt/marke-daten.js +7 -7
  304. package/dist/esm/receipt/marke.d.ts +7 -7
  305. package/dist/esm/receipt/marke.js +10 -10
  306. package/dist/esm/register/errors.d.ts +61 -0
  307. package/dist/esm/register/errors.js +104 -0
  308. package/dist/esm/register/index.d.ts +14 -1
  309. package/dist/esm/register/index.js +13 -0
  310. package/dist/esm/register/pairing.d.ts +55 -36
  311. package/dist/esm/register/pairing.js +33 -29
  312. package/dist/esm/register/session.d.ts +5 -5
  313. package/dist/esm/register/session.js +7 -7
  314. package/dist/esm/stored/draht.d.ts +45 -0
  315. package/dist/esm/stored/draht.js +208 -0
  316. package/dist/esm/stored/einstellungen.d.ts +23 -0
  317. package/dist/esm/stored/einstellungen.js +196 -0
  318. package/dist/esm/stored/index.d.ts +109 -0
  319. package/dist/esm/stored/index.js +217 -0
  320. package/dist/esm/stored/vokabular.d.ts +18 -0
  321. package/dist/esm/stored/vokabular.js +386 -0
  322. package/dist/esm/version.d.ts +7 -0
  323. package/dist/esm/version.js +7 -0
  324. package/dist/esm/vienna-time.d.ts +1 -1
  325. package/dist/esm/vienna-time.js +2 -2
  326. package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
  327. package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
  328. package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
  329. package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
  330. package/fixtures/expected/cancellation-full.sheet32.json +218 -0
  331. package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
  332. package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
  333. package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
  334. package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
  335. package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
  336. package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
  337. package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
  338. package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
  339. package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
  340. package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
  341. package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
  342. package/fixtures/expected/card-custom.sheet32.json +158 -0
  343. package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
  344. package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
  345. package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
  346. package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
  347. package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
  348. package/fixtures/expected/card-gptom.sheet32.json +230 -0
  349. package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
  350. package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
  351. package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
  352. package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
  353. package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
  354. package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
  355. package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
  356. package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
  357. package/fixtures/expected/card-mypos.sheet32.json +254 -0
  358. package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
  359. package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
  360. package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
  361. package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
  362. package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
  363. package/fixtures/expected/card-stripe.sheet32.json +212 -0
  364. package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
  365. package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
  366. package/fixtures/expected/card-sumup.sheet32.json +218 -0
  367. package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
  368. package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
  369. package/fixtures/expected/discount-lines.sheet32.json +200 -0
  370. package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
  371. package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
  372. package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
  373. package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
  374. package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
  375. package/fixtures/expected/discount-simple.sheet32.json +182 -0
  376. package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
  377. package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
  378. package/fixtures/expected/discount-tip.sheet32.json +212 -0
  379. package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
  380. package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
  381. package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
  382. package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
  383. package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
  384. package/fixtures/expected/long-item-name.sheet32.json +176 -0
  385. package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
  386. package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
  387. package/fixtures/expected/sale-card.sheet32.json +176 -0
  388. package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
  389. package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
  390. package/fixtures/expected/sale-cash.sheet32.json +176 -0
  391. package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
  392. package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
  393. package/fixtures/expected/sale-small-business.sheet32.json +182 -0
  394. package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
  395. package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
  396. package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
  397. package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
  398. package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
  399. package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
  400. package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
  401. package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
  402. package/fixtures/expected/split-cash-change.sheet32.json +194 -0
  403. package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
  404. package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
  405. package/fixtures/expected/split-long-amount.sheet32.json +266 -0
  406. package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
  407. package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
  408. package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
  409. package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
  410. package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
  411. package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
  412. package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
  413. package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
  414. package/fixtures/expected/split-tip-card.sheet32.json +272 -0
  415. package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
  416. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
  417. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
  418. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
  419. package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
  420. package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
  421. package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
  422. package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
  423. package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
  424. package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
  425. package/fixtures/{erwartet → expected}/training.lines.json +2 -2
  426. package/fixtures/expected/training.sheet32.json +236 -0
  427. package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
  428. package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
  429. package/fixtures/expected/zero-annual.sheet32.json +212 -0
  430. package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
  431. package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
  432. package/fixtures/expected/zero-final.sheet32.json +206 -0
  433. package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
  434. package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
  435. package/fixtures/expected/zero-manual.sheet32.json +206 -0
  436. package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
  437. package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
  438. package/fixtures/expected/zero-monthly.sheet32.json +206 -0
  439. package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
  440. package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
  441. package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
  442. package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
  443. package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
  444. package/fixtures/expected/zero-start.sheet32.json +206 -0
  445. package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
  446. package/fixtures/hobex-hps-codes.json +12 -12
  447. package/fixtures/invoice-api-examples/brands-ok.json +8 -0
  448. package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
  449. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
  450. package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
  451. package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
  452. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
  453. package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
  454. package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
  455. package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
  456. package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
  457. package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
  458. package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
  459. package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
  460. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
  461. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
  462. package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
  463. package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
  464. package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
  465. package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
  466. package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
  467. package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
  468. package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
  469. package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
  470. package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
  471. package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
  472. package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
  473. package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
  474. package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
  475. package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
  476. package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
  477. package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
  478. package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
  479. package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
  480. package/fixtures/invoice-texts.json +464 -0
  481. package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
  482. package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
  483. package/fixtures/manifest.json +252 -252
  484. package/fixtures/pos-message-cases.json +32 -0
  485. package/fixtures/pos-settings-defaults.json +149 -0
  486. package/fixtures/{kasse-texte.json → pos-texts.json} +416 -416
  487. package/fixtures/receipt-due-generated.json +1218 -0
  488. package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
  489. package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
  490. package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
  491. package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
  492. package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
  493. package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
  494. package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
  495. package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
  496. package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
  497. package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
  498. package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
  499. package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
  500. package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
  501. package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
  502. package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
  503. package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
  504. package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
  505. package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
  506. package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
  507. package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
  508. package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
  509. package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
  510. package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
  511. package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
  512. package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
  513. package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
  514. package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
  515. package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
  516. package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
  517. package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
  518. package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
  519. package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
  520. package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
  521. package/fixtures/{belege → receipts}/training.json +2 -2
  522. package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
  523. package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
  524. package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
  525. package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
  526. package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
  527. package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
  528. package/fixtures/renames-1.0.json +1490 -0
  529. package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +7 -7
  530. package/fixtures/surface.json +877 -0
  531. package/fixtures/v3/README.md +125 -0
  532. package/fixtures/v3/antworten/belege.json +4738 -0
  533. package/fixtures/v3/antworten/belegmail.json +154 -0
  534. package/fixtures/v3/antworten/kasse-belege.json +4304 -0
  535. package/fixtures/v3/antworten/kasse.json +12716 -0
  536. package/fixtures/v3/antworten/rechnungen.json +1712 -0
  537. package/fixtures/v3/antworten/storno.json +737 -0
  538. package/fixtures/v3/stored/belege.json +502 -0
  539. package/fixtures/v3/stored/kasse.json +3461 -0
  540. package/fixtures/v3/stored/rechnungen.json +750 -0
  541. package/fixtures/v3/v3-vokabular.json +3375 -0
  542. package/fixtures/v3/zahlbetrag-faelle.json +794 -0
  543. package/package.json +32 -18
  544. package/dist/cjs/kasse/artikel.d.ts +0 -83
  545. package/dist/cjs/kasse/artikel.js +0 -79
  546. package/dist/cjs/kasse/client.d.ts +0 -10
  547. package/dist/cjs/kasse/client.js +0 -38
  548. package/dist/cjs/kasse/drucker.d.ts +0 -59
  549. package/dist/cjs/kasse/drucker.js +0 -50
  550. package/dist/cjs/kasse/index.d.ts +0 -13
  551. package/dist/cjs/kasse/index.js +0 -83
  552. package/dist/cjs/kasse/settings.d.ts +0 -229
  553. package/dist/cjs/kasse/settings.js +0 -172
  554. package/dist/cjs/kasse/texte.d.ts +0 -868
  555. package/dist/cjs/kasse/texte.js +0 -474
  556. package/dist/cjs/rechnung/fehler.d.ts +0 -21
  557. package/dist/cjs/rechnung/fehler.js +0 -44
  558. package/dist/cjs/rechnung/index.d.ts +0 -21
  559. package/dist/cjs/rechnung/index.js +0 -82
  560. package/dist/cjs/rechnung/texte.d.ts +0 -222
  561. package/dist/cjs/rechnung/texte.js +0 -425
  562. package/dist/esm/kasse/artikel.d.ts +0 -83
  563. package/dist/esm/kasse/artikel.js +0 -70
  564. package/dist/esm/kasse/client.d.ts +0 -10
  565. package/dist/esm/kasse/client.js +0 -33
  566. package/dist/esm/kasse/drucker.d.ts +0 -59
  567. package/dist/esm/kasse/drucker.js +0 -45
  568. package/dist/esm/kasse/index.d.ts +0 -13
  569. package/dist/esm/kasse/index.js +0 -18
  570. package/dist/esm/kasse/settings.d.ts +0 -229
  571. package/dist/esm/kasse/settings.js +0 -168
  572. package/dist/esm/kasse/texte.d.ts +0 -868
  573. package/dist/esm/kasse/texte.js +0 -466
  574. package/dist/esm/rechnung/fehler.d.ts +0 -21
  575. package/dist/esm/rechnung/fehler.js +0 -39
  576. package/dist/esm/rechnung/index.d.ts +0 -21
  577. package/dist/esm/rechnung/index.js +0 -20
  578. package/dist/esm/rechnung/texte.d.ts +0 -222
  579. package/dist/esm/rechnung/texte.js +0 -421
  580. package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
  581. package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
  582. package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
  583. package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
  584. package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
  585. package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
  586. package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
  587. package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
  588. package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
  589. package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
  590. package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
  591. package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
  592. package/fixtures/erwartet/null-monat.blatt32.json +0 -206
  593. package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
  594. package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
  595. package/fixtures/erwartet/null-start.blatt32.json +0 -206
  596. package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
  597. package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
  598. package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
  599. package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
  600. package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
  601. package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
  602. package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
  603. package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
  604. package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
  605. package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
  606. package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
  607. package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
  608. package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
  609. package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
  610. package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
  611. package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
  612. package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
  613. package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
  614. package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
  615. package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
  616. package/fixtures/erwartet/training.blatt32.json +0 -236
  617. package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
  618. package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
  619. package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
  620. package/fixtures/kasse-meldungen-faelle.json +0 -32
  621. package/fixtures/oberflaeche.json +0 -558
  622. package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
  623. package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
  624. package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
  625. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
  626. package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
  627. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
  628. package/fixtures/rechnung-texte.json +0 -464
  629. /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
  630. /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
  631. /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
  632. /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
  633. /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
  634. /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
  635. /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
  636. /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
  637. /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
  638. /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
  639. /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
  640. /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
  641. /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
  642. /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
  643. /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
  644. /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
  645. /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
  646. /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
  647. /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
  648. /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
  649. /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
  650. /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
  651. /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
  652. /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
  653. /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
  654. /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
  655. /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
  656. /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
  657. /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
  658. /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
  659. /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
  660. /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
  661. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
  662. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
  663. /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
  664. /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
  665. /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
  666. /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
  667. /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
  668. /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
  669. /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
  670. /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
  671. /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
  672. /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
  673. /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
  674. /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
  675. /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
  676. /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
  677. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
  678. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
  679. /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
  680. /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
  681. /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
  682. /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
  683. /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
  684. /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
  685. /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
  686. /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
  687. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
  688. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
  689. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
  690. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
  691. /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
  692. /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
  693. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
  694. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
  695. /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
  696. /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
  697. /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
  698. /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
  699. /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
  700. /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
  701. /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
  702. /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
  703. /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
  704. /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
  705. /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
  706. /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
  707. /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
  708. /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
  709. /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
  710. /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
  711. /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
  712. /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
@@ -1,19 +1,19 @@
1
1
  /** Groesste Modulgroesse in Druckpunkten, die der jeweilige Deckel zulaesst. */
2
- export const QR_MODUL_DECKEL = {
2
+ export const QR_MODULE_SIZE_CAP = {
3
3
  auto: 6,
4
- klein: 4,
5
- mittel: 6,
6
- gross: 8,
4
+ small: 4,
5
+ medium: 6,
6
+ large: 8,
7
7
  };
8
8
  // --------------------------------------------------------------- Konstanten
9
9
  /** Ruhezone je Seite, in Modulen (QR-Norm). */
10
- export const QR_RUHEZONE_MODULE = 4;
10
+ export const QR_QUIET_ZONE_MODULES = 4;
11
11
  /** Untergrenze: 4 Punkte sind bei 203 dpi rund 0,5 mm je Modul. */
12
- export const QR_MINDEST_PUNKTE = 4;
13
- /** Ausnahme, wenn `QR_MINDEST_PUNKTE` nicht passt — gemeldet, nicht still. */
14
- export const QR_AUSNAHME_PUNKTE = 3;
12
+ export const QR_MIN_MODULE_DOTS = 4;
13
+ /** Ausnahme, wenn `QR_MIN_MODULE_DOTS` nicht passt – gemeldet, nicht still. */
14
+ export const QR_EXCEPTION_MODULE_DOTS = 3;
15
15
  /** Obergrenze des Druckbefehls in diesem Stack (`GS ( k` Funktion 167: 1..8). */
16
- export const QR_HOECHST_PUNKTE = 8;
16
+ export const QR_MAX_MODULE_DOTS = 8;
17
17
  /**
18
18
  * Druckbreite des Kopfes in Punkten (203 dpi): 58 mm = 384, 80 mm = 576 —
19
19
  * Zwilling von `KeckPaperSize.druckPunkte`.
@@ -24,7 +24,7 @@ export const QR_HOECHST_PUNKTE = 8;
24
24
  * die echte Kopfbreite — ein QR, der auch nur einen Punkt zu breit ist, wird
25
25
  * von den meisten Geraeten gar nicht gedruckt.
26
26
  */
27
- export const QR_DRUCK_PUNKTE = { mm58: 384, mm80: 576 };
27
+ export const QR_PRINT_WIDTH_DOTS = { mm58: 384, mm80: 576 };
28
28
  /**
29
29
  * Nutzlast in Byte, die eine QR-Version 1..40 bei Fehlerkorrektur **M** im
30
30
  * Byte-Modus aufnimmt (ISO/IEC 18004, Tabelle 7).
@@ -41,7 +41,7 @@ const BYTE_KAPAZITAET_M = [
41
41
  ];
42
42
  // ------------------------------------------------------------- oeffentlich
43
43
  /**
44
- * Modulanzahl, die `nutzlast` bei Fehlerkorrektur **M** braucht.
44
+ * Modulanzahl, die `payload` bei Fehlerkorrektur **M** braucht.
45
45
  *
46
46
  * Alle Druckwege setzen den QR mit Fehlerkorrektur **M** (nativer
47
47
  * ESC/POS-Befehl, ePOS `level_m`; das Raster fuer den Bildweg rechnet der
@@ -56,8 +56,8 @@ const BYTE_KAPAZITAET_M = [
56
56
  * langem Inhalt. Ein still zurueckgegebenes "passt nicht" haette den
57
57
  * Datenfehler als Papierfehler getarnt.
58
58
  */
59
- export function qrModulAnzahl(nutzlast) {
60
- const laenge = new TextEncoder().encode(nutzlast).length;
59
+ export function qrModuleCount(payload) {
60
+ const laenge = new TextEncoder().encode(payload).length;
61
61
  for (let i = 0; i < BYTE_KAPAZITAET_M.length; i++) {
62
62
  if (laenge <= BYTE_KAPAZITAET_M[i])
63
63
  return 17 + 4 * (i + 1);
@@ -65,69 +65,69 @@ export function qrModulAnzahl(nutzlast) {
65
65
  throw new Error('QR-Inhalt ist zu lang');
66
66
  }
67
67
  /**
68
- * Ob `nutzlast` in irgendeine QR-Version 1..40 bei Fehlerkorrektur M passt --
69
- * dieselbe Tabelle wie `qrModulAnzahl`, aber ohne zu werfen.
68
+ * Ob `payload` in irgendeine QR-Version 1..40 bei Fehlerkorrektur M passt --
69
+ * dieselbe Tabelle wie `qrModuleCount`, aber ohne zu werfen.
70
70
  *
71
71
  * Fuer Aufrufer, denen ein zu langer Inhalt kein Programmierfehler ist,
72
72
  * sondern ein Datenfehler, den sie selbst behandeln (das Beleg-Blatt: ohne
73
73
  * QR weiterbauen statt den ganzen Zeichner mitzureissen).
74
74
  */
75
- export function qrPasstInVersion(nutzlast) {
76
- const laenge = new TextEncoder().encode(nutzlast).length;
75
+ export function qrFitsInVersion(payload) {
76
+ const laenge = new TextEncoder().encode(payload).length;
77
77
  return laenge <= BYTE_KAPAZITAET_M[BYTE_KAPAZITAET_M.length - 1];
78
78
  }
79
79
  /**
80
- * Groesste Modulgroesse, mit der `moduleAnzahl` Module **samt Ruhezone** in
81
- * `papierbreitePunkte` passen, gedeckelt durch `groesse`.
80
+ * Groesste Modulgroesse, mit der `moduleCount` Module **samt Ruhezone** in
81
+ * `paperWidthDots` passen, gedeckelt durch `moduleSize`.
82
82
  *
83
83
  * Wirft bei sinnlosen Eingaben: eine Papierbreite von 0 oder ein Symbol ohne
84
84
  * Module ist ein Programmierfehler, und ein still zurueckgegebenes "passt
85
85
  * nicht" haette ihn als Druckerproblem getarnt.
86
86
  */
87
- export function qrGroesseBerechnen(options) {
88
- const { papierbreitePunkte, moduleAnzahl } = options;
89
- const groesse = options.groesse ?? 'auto';
87
+ export function computeQrSizing(options) {
88
+ const { paperWidthDots: papierbreitePunkte, moduleCount: moduleAnzahl } = options;
89
+ const groesse = options.moduleSize ?? 'auto';
90
90
  if (!Number.isInteger(papierbreitePunkte) || papierbreitePunkte <= 0) {
91
91
  throw new Error('papierbreitePunkte muss eine Ganzzahl > 0 sein');
92
92
  }
93
93
  if (!Number.isInteger(moduleAnzahl) || moduleAnzahl <= 0) {
94
94
  throw new Error('moduleAnzahl muss eine Ganzzahl > 0 sein');
95
95
  }
96
- const roh = QR_MODUL_DECKEL[groesse];
96
+ const roh = QR_MODULE_SIZE_CAP[groesse];
97
97
  if (roh === undefined) {
98
98
  throw new Error(`Unbekannte QR-Modulgroesse: ${String(groesse)}`);
99
99
  }
100
- const gesamtModule = moduleAnzahl + QR_RUHEZONE_MODULE * 2;
100
+ const gesamtModule = moduleAnzahl + QR_QUIET_ZONE_MODULES * 2;
101
101
  const passend = Math.floor(papierbreitePunkte / gesamtModule);
102
- if (passend < QR_AUSNAHME_PUNKTE) {
103
- return { punkte: null, module: moduleAnzahl, breitePunkte: 0, unterMindestmass: false, passt: false };
102
+ if (passend < QR_EXCEPTION_MODULE_DOTS) {
103
+ return { moduleDots: null, modules: moduleAnzahl, widthDots: 0, belowMinimum: false, fits: false };
104
104
  }
105
- const deckel = Math.min(Math.max(roh, QR_AUSNAHME_PUNKTE), QR_HOECHST_PUNKTE);
106
- const punkte = passend < QR_MINDEST_PUNKTE ? QR_AUSNAHME_PUNKTE : Math.min(passend, deckel);
105
+ const deckel = Math.min(Math.max(roh, QR_EXCEPTION_MODULE_DOTS), QR_MAX_MODULE_DOTS);
106
+ const punkte = passend < QR_MIN_MODULE_DOTS ? QR_EXCEPTION_MODULE_DOTS : Math.min(passend, deckel);
107
107
  return {
108
- punkte: punkte,
109
- module: moduleAnzahl,
110
- breitePunkte: gesamtModule * punkte,
111
- unterMindestmass: punkte < QR_MINDEST_PUNKTE,
112
- passt: true,
108
+ moduleDots: punkte,
109
+ modules: moduleAnzahl,
110
+ widthDots: gesamtModule * punkte,
111
+ belowMinimum: punkte < QR_MIN_MODULE_DOTS,
112
+ fits: true,
113
113
  };
114
114
  }
115
115
  /**
116
- * Wie `qrGroesseBerechnen`, nur mit der Modulanzahl aus `nutzlast`.
116
+ * Wie `computeQrSizing`, nur mit der Modulanzahl aus `payload`.
117
117
  *
118
118
  * Eine leere Nutzlast ergibt kein Symbol — sie "passt nicht", statt zu
119
119
  * werfen: der Aufrufer behandelt den Fall ohnehin schon (leerer QR am Beleg
120
120
  * ist ein Datenfehler, kein Papierfehler).
121
121
  */
122
- export function qrGroesseFuer(options) {
123
- if (options.nutzlast === '') {
124
- return { punkte: null, module: 0, breitePunkte: 0, unterMindestmass: false, passt: false };
122
+ export function qrSizingFor(options) {
123
+ if (options.payload === '') {
124
+ return { moduleDots: null, modules: 0, widthDots: 0, belowMinimum: false, fits: false };
125
125
  }
126
126
  const weiter = {
127
- papierbreitePunkte: options.papierbreitePunkte,
128
- moduleAnzahl: qrModulAnzahl(options.nutzlast),
127
+ paperWidthDots: options.paperWidthDots,
128
+ moduleCount: qrModuleCount(options.payload),
129
129
  };
130
- if (options.groesse !== undefined)
131
- weiter.groesse = options.groesse;
132
- return qrGroesseBerechnen(weiter);
130
+ if (options.moduleSize !== undefined)
131
+ weiter.moduleSize = options.moduleSize;
132
+ return computeQrSizing(weiter);
133
133
  }
@@ -87,9 +87,9 @@ export declare function usbFindPrinterEndpoint(d: {
87
87
  */
88
88
  export declare class UsbTimeoutError extends Error {
89
89
  readonly name = "UsbTimeoutError";
90
- readonly schritt: string;
90
+ readonly step: string;
91
91
  readonly timeoutMs: number;
92
- constructor(schritt: string, timeoutMs: number);
92
+ constructor(step: string, timeoutMs: number);
93
93
  }
94
94
  /**
95
95
  * Bytes blockweise an den OUT-Endpunkt; liefert die geschriebene Gesamtzahl,
@@ -47,11 +47,11 @@ export function usbFindPrinterEndpoint(d) {
47
47
  */
48
48
  export class UsbTimeoutError extends Error {
49
49
  name = 'UsbTimeoutError';
50
- schritt;
50
+ step;
51
51
  timeoutMs;
52
- constructor(schritt, timeoutMs) {
53
- super(`USB-Drucker antwortet nicht (${schritt}, Zeitlimit ${timeoutMs} ms überschritten) — Kabel/Gerät prüfen.`);
54
- this.schritt = schritt;
52
+ constructor(step, timeoutMs) {
53
+ super(`USB-Drucker antwortet nicht (${step}, Zeitlimit ${timeoutMs} ms überschritten) — Kabel/Gerät prüfen.`);
54
+ this.step = step;
55
55
  this.timeoutMs = timeoutMs;
56
56
  }
57
57
  }
@@ -1,7 +1,7 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { ReceiptLayout } from '../receipt/layout.js';
3
- import { type BelegBlatt, type LogoStufe } from '../receipt/blatt.js';
4
- import type { QrModulGroesse } from '../printing/qr-groesse.js';
3
+ import { type ReceiptSheet, type SheetLogoSize } from '../receipt/blatt.js';
4
+ import type { QrModuleSize } from '../printing/qr-groesse.js';
5
5
  /**
6
6
  * React-Adapter: zeichnet ein Beleg-Layout (siehe ../receipt/layout.ts).
7
7
  *
@@ -31,69 +31,69 @@ export interface ReceiptLayoutViewProps {
31
31
  * Fuer Bildschirme, auf denen der Beleg nur zur Kontrolle steht -- der
32
32
  * Signatur-QR gehoert dem Kunden und wird erst auf Verlangen freigegeben.
33
33
  */
34
- qrVerdeckt?: boolean;
34
+ qrHidden?: boolean;
35
35
  /** Text auf dem verdeckten QR (Vorgabe „Antippen zum Anzeigen“). */
36
- qrVerdecktText?: string;
36
+ qrHiddenText?: string;
37
37
  }
38
38
  /**
39
- * @deprecated Seit 0.14.0: [BelegBlattView] setzt den Beleg zeichengleich zu
39
+ * @deprecated Seit 0.14.0: [ReceiptSheetView] setzt den Beleg zeichengleich zu
40
40
  * Bon und PDF (Raster, Logo, Marke). Diese Ansicht rechnet Spalten mit Flex
41
41
  * und bricht darum anders um als das Papier.
42
42
  */
43
- export declare function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt, qrVerdecktText }: ReceiptLayoutViewProps): ReactNode;
43
+ export declare function ReceiptLayoutView({ layout, className, renderQr, qrHidden: qrVerdeckt, qrHiddenText: qrVerdecktText }: ReceiptLayoutViewProps): ReactNode;
44
44
  /**
45
45
  * Verdeckter QR: weichgezeichnet und nicht scannbar, bis der Betrachter ihn
46
46
  * antippt. Die Nutzlast bleibt trotzdem als `data-qr` am Element -- fuer Tests
47
47
  * und Werkzeuge, nicht fuers Auge.
48
48
  */
49
- export declare function QrVerdeckt({ data, text, children }: {
49
+ export declare function HiddenQr({ data, text, children }: {
50
50
  data: string;
51
51
  text?: string;
52
52
  children: ReactNode;
53
53
  }): ReactNode;
54
- export interface BelegBlattZeilenProps {
55
- blatt: BelegBlatt;
54
+ export interface ReceiptSheetLinesProps {
55
+ sheet: ReceiptSheet;
56
56
  /** Adresse des Firmenlogos; ohne sie bleibt der Logo-Block leer (Platz bleibt). */
57
57
  logoUrl?: string;
58
58
  /**
59
- * Zeichnet den QR in seinen Kasten (`qrBlattAnteil`). Der Kasten schliesst
59
+ * Zeichnet den QR in seinen Kasten (`qrSheetWidthFraction`). Der Kasten schliesst
60
60
  * die Ruhezone von 4 Modulen je Seite ein und setzt Fehlerkorrektur M
61
61
  * voraus: das Symbol also mit Korrektur M und 4 Modulen Ruhezone zeichnen
62
62
  * und den Kasten ganz ausfuellen -- dann ist ein Modul so gross wie am Bon.
63
63
  */
64
64
  renderQr?: (data: string) => ReactNode;
65
- qrVerdeckt?: boolean;
66
- qrVerdecktText?: string;
65
+ qrHidden?: boolean;
66
+ qrHiddenText?: string;
67
67
  className?: string;
68
68
  }
69
69
  /**
70
70
  * Das Blatt am Bildschirm -- Zeile fuer Zeile dieselben Zeichen wie am Bon und
71
71
  * im PDF. Masse in `ch`: eine Zeichenbreite ist `1ch`, eine Zeile `2ch`, das
72
- * Blatt `zeichen`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
72
+ * Blatt `charsPerLine`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
73
73
  * Vorgabe ueber `--keck-blatt-schrift`) und Schriftgroesse; alles andere steht
74
74
  * im Blatt.
75
75
  */
76
- export declare function BelegBlattZeilen({ blatt, logoUrl, renderQr, qrVerdeckt, qrVerdecktText, className }: BelegBlattZeilenProps): ReactNode;
77
- export interface BelegBlattViewProps extends Omit<BelegBlattZeilenProps, 'blatt' | 'logoUrl'> {
76
+ export declare function ReceiptSheetLines({ sheet: blatt, logoUrl, renderQr, qrHidden: qrVerdeckt, qrHiddenText: qrVerdecktText, className }: ReceiptSheetLinesProps): ReactNode;
77
+ export interface ReceiptSheetViewProps extends Omit<ReceiptSheetLinesProps, 'sheet' | 'logoUrl'> {
78
78
  layout: ReceiptLayout;
79
- zeichen?: number;
79
+ charsPerLine?: number;
80
80
  /** Firmenlogo und Stufe (`logoSkala`); das Pixelmass liest die Ansicht selbst. */
81
81
  logo?: {
82
82
  url: string;
83
- stufe: LogoStufe;
83
+ size: SheetLogoSize;
84
84
  } | null;
85
- marke?: boolean;
85
+ brandMark?: boolean;
86
86
  /** Geraete-Einstellung fuer die QR-Modulgroesse; Vorgabe `auto` (hoechstens 6 Punkte je Modul) — wie die Druckwege. */
87
- qrGroesse?: QrModulGroesse;
87
+ qrModuleSize?: QrModuleSize;
88
88
  }
89
89
  /**
90
90
  * Laedt das Logo (fuer sein Pixelmass), baut das Blatt und zeichnet es. Bis
91
91
  * das Bild geladen ist, fehlt der Logo-Block -- die Kasse laedt das Logo ohnehin
92
92
  * vorab in den Browser-Cache.
93
93
  *
94
- * Ein Logo ueber [logoPixelZulaessig] (4096x4096px, dieselbe Grenze wie das
94
+ * Ein Logo ueber [isLogoPixelSizeAllowed] (4096x4096px, dieselbe Grenze wie das
95
95
  * Druck-Kit beim Rastern fuer den Bon) bleibt hier ebenso ohne Logo-Block --
96
96
  * sonst zeigte der Bildschirm ein Logo, das nie gedruckt wird: Bildschirm und
97
97
  * Bon zeigen dasselbe Logo.
98
98
  */
99
- export declare function BelegBlattView({ layout, zeichen, logo, marke, qrGroesse, ...rest }: BelegBlattViewProps): ReactNode;
99
+ export declare function ReceiptSheetView({ layout, charsPerLine: zeichen, logo, brandMark: marke, qrModuleSize: qrGroesse, ...rest }: ReceiptSheetViewProps): ReactNode;
@@ -1,18 +1,28 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
- import { belegBlatt, logoPixelZulaessig, PUNKTE_JE_ZEICHEN } from '../receipt/blatt.js';
4
- import { MARKE_PFADE } from '../receipt/marke-daten.js';
3
+ import { receiptSheet, isLogoPixelSizeAllowed, DOTS_PER_CHAR } from '../receipt/blatt.js';
4
+ import { BRAND_MARK_PATHS } from '../receipt/marke-daten.js';
5
+ /**
6
+ * CSS-Klasse je Ton. Die Klassennamen bleiben die von 0.x
7
+ * (`keck-receipt-banner--belegart`/`--warnung`): Stylesheets der Verbraucher
8
+ * haengen daran, und das HTML soll durch die englischen Werte kein Byte
9
+ * anders werden.
10
+ */
11
+ const BANNER_KLASSE = {
12
+ receipt_type: 'belegart',
13
+ warning: 'warnung',
14
+ };
5
15
  const AUSRICHTUNG = {
6
16
  left: 'left',
7
17
  center: 'center',
8
18
  right: 'right',
9
19
  };
10
20
  /**
11
- * @deprecated Seit 0.14.0: [BelegBlattView] setzt den Beleg zeichengleich zu
21
+ * @deprecated Seit 0.14.0: [ReceiptSheetView] setzt den Beleg zeichengleich zu
12
22
  * Bon und PDF (Raster, Logo, Marke). Diese Ansicht rechnet Spalten mit Flex
13
23
  * und bricht darum anders um als das Papier.
14
24
  */
15
- export function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt = false, qrVerdecktText }) {
25
+ export function ReceiptLayoutView({ layout, className, renderQr, qrHidden: qrVerdeckt = false, qrHiddenText: qrVerdecktText }) {
16
26
  const klasse = className === undefined ? 'keck-receipt' : `keck-receipt ${className}`;
17
27
  return (_jsx("div", { className: klasse, "data-paper-size": layout.paperSize, children: layout.lines.map((zeile, index) => (_jsx(Zeile, { zeile: zeile, renderQr: renderQr, qrVerdeckt: qrVerdeckt, qrVerdecktText: qrVerdecktText }, index))) }));
18
28
  }
@@ -21,7 +31,7 @@ export function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt = fa
21
31
  * antippt. Die Nutzlast bleibt trotzdem als `data-qr` am Element -- fuer Tests
22
32
  * und Werkzeuge, nicht fuers Auge.
23
33
  */
24
- export function QrVerdeckt({ data, text = 'Antippen zum Anzeigen', children }) {
34
+ export function HiddenQr({ data, text = 'Antippen zum Anzeigen', children }) {
25
35
  const [offen, setOffen] = useState(false);
26
36
  return (_jsxs("button", { type: "button", className: offen ? 'keck-receipt-qr-toggle keck-receipt-qr-toggle--offen' : 'keck-receipt-qr-toggle', "aria-pressed": offen, "aria-label": offen ? 'QR-Code verdecken' : text, "data-qr": data, onClick: () => setOffen((o) => !o), style: { position: 'relative', display: 'inline-block', border: 'none', background: 'transparent', padding: 0, cursor: 'pointer' }, children: [_jsx("span", { style: { display: 'inline-block', filter: offen ? undefined : 'blur(3px)', transition: 'filter .15s ease' }, children: children }), !offen && (
27
37
  // Tipp-Finger statt Textzeile: versteht jeder, verdeckt fast nichts.
@@ -54,47 +64,47 @@ function Zeile({ zeile, renderQr, qrVerdeckt, qrVerdecktText }) {
54
64
  case 'space':
55
65
  return _jsx("div", { className: "keck-receipt-space", style: { height: `${zeile.lines}em` } });
56
66
  case 'banner':
57
- return (_jsx("div", { className: `keck-receipt-banner keck-receipt-banner--${zeile.ton}`, role: zeile.ton === 'warnung' ? 'alert' : undefined, style: { textAlign: 'center', fontWeight: 'bold', letterSpacing: '0.06em', padding: '0.2em 0.4em', border: '2px solid currentColor', margin: '0.3em 0' }, children: zeile.text }));
67
+ return (_jsx("div", { className: `keck-receipt-banner keck-receipt-banner--${BANNER_KLASSE[zeile.tone] ?? String(zeile.tone)}`, role: zeile.tone === 'warning' ? 'alert' : undefined, style: { textAlign: 'center', fontWeight: 'bold', letterSpacing: '0.06em', padding: '0.2em 0.4em', border: '2px solid currentColor', margin: '0.3em 0' }, children: zeile.text }));
58
68
  case 'qr':
59
69
  {
60
70
  const bild = renderQr !== undefined ? renderQr(zeile.data) : _jsx("div", { "data-qr": zeile.data, "aria-label": "RKSV-QR-Code" });
61
- return (_jsx("div", { className: "keck-receipt-qr", style: { textAlign: 'center' }, children: qrVerdeckt ? _jsx(QrVerdeckt, { data: zeile.data, text: qrVerdecktText, children: bild }) : bild }));
71
+ return (_jsx("div", { className: "keck-receipt-qr", style: { textAlign: 'center' }, children: qrVerdeckt ? _jsx(HiddenQr, { data: zeile.data, text: qrVerdecktText, children: bild }) : bild }));
62
72
  }
63
73
  }
64
74
  }
65
75
  /**
66
76
  * Das Blatt am Bildschirm -- Zeile fuer Zeile dieselben Zeichen wie am Bon und
67
77
  * im PDF. Masse in `ch`: eine Zeichenbreite ist `1ch`, eine Zeile `2ch`, das
68
- * Blatt `zeichen`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
78
+ * Blatt `charsPerLine`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
69
79
  * Vorgabe ueber `--keck-blatt-schrift`) und Schriftgroesse; alles andere steht
70
80
  * im Blatt.
71
81
  */
72
- export function BelegBlattZeilen({ blatt, logoUrl, renderQr, qrVerdeckt = false, qrVerdecktText, className }) {
73
- const z = blatt.zeichen;
82
+ export function ReceiptSheetLines({ sheet: blatt, logoUrl, renderQr, qrHidden: qrVerdeckt = false, qrHiddenText: qrVerdecktText, className }) {
83
+ const z = blatt.charsPerLine;
74
84
  const klasse = className === undefined ? 'keck-blatt' : `keck-blatt ${className}`;
75
85
  const blattStil = {
76
86
  width: `${z}ch`,
77
87
  fontFamily: 'var(--keck-blatt-schrift, "DM Mono", ui-monospace, Menlo, Consolas, monospace)',
78
88
  fontVariantLigatures: 'none',
79
89
  };
80
- return (_jsx("div", { className: klasse, "data-zeichen": z, style: blattStil, children: blatt.bloecke.map((b, i) => {
81
- switch (b.art) {
82
- case 'zeile':
83
- return (_jsx("div", { className: "keck-blatt-zeile", style: { whiteSpace: 'pre', height: '2ch', lineHeight: '2ch', overflow: 'hidden', fontWeight: b.fett ? 'bold' : 'normal' }, children: b.text }, i));
90
+ return (_jsx("div", { className: klasse, "data-zeichen": z, style: blattStil, children: blatt.blocks.map((b, i) => {
91
+ switch (b.kind) {
92
+ case 'line':
93
+ return (_jsx("div", { className: "keck-blatt-zeile", style: { whiteSpace: 'pre', height: '2ch', lineHeight: '2ch', overflow: 'hidden', fontWeight: b.bold ? 'bold' : 'normal' }, children: b.text }, i));
84
94
  case 'logo':
85
- return (_jsx("div", { className: "keck-blatt-logo", style: { height: `${b.hoeheZeilen * 2}ch`, display: 'flex', justifyContent: 'center' }, children: logoUrl === undefined ? null : (_jsx("img", { src: logoUrl, alt: "", "aria-hidden": "true", style: { width: `${b.breiteAnteil * z}ch`, height: `${b.hoeheZeilen * 2}ch`, objectFit: 'contain' } })) }, i));
86
- case 'marke':
95
+ return (_jsx("div", { className: "keck-blatt-logo", style: { height: `${b.heightLines * 2}ch`, display: 'flex', justifyContent: 'center' }, children: logoUrl === undefined ? null : (_jsx("img", { src: logoUrl, alt: "", "aria-hidden": "true", style: { width: `${b.widthFraction * z}ch`, height: `${b.heightLines * 2}ch`, objectFit: 'contain' } })) }, i));
96
+ case 'brandMark':
87
97
  // Kein Rasterbild wie am Bon: Dieses Paket hat bewusst keine
88
98
  // Abhaengigkeiten, und die Pfade liegen ohnehin schon vor (PDF
89
99
  // zeichnet dieselben). Ein SVG bleibt in jeder Aufloesung scharf.
90
- return (_jsx("div", { className: "keck-blatt-marke", style: { height: `${b.hoehe / PUNKTE_JE_ZEICHEN}ch`, display: 'flex', justifyContent: 'center' }, children: _jsx("svg", { viewBox: `0 0 ${MARKE_PFADE.breite} ${MARKE_PFADE.hoehe}`, width: `${b.breite / PUNKTE_JE_ZEICHEN}ch`, height: `${b.hoehe / PUNKTE_JE_ZEICHEN}ch`, role: "img", "aria-label": "Kasseneck", fill: "currentColor", children: MARKE_PFADE.pfade.map((d, j) => _jsx("path", { d: d }, j)) }) }, i));
100
+ return (_jsx("div", { className: "keck-blatt-marke", style: { height: `${b.height / DOTS_PER_CHAR}ch`, display: 'flex', justifyContent: 'center' }, children: _jsx("svg", { viewBox: `0 0 ${BRAND_MARK_PATHS.width} ${BRAND_MARK_PATHS.height}`, width: `${b.width / DOTS_PER_CHAR}ch`, height: `${b.height / DOTS_PER_CHAR}ch`, role: "img", "aria-label": "Kasseneck", fill: "currentColor", children: BRAND_MARK_PATHS.paths.map((d, j) => _jsx("path", { d: d }, j)) }) }, i));
91
101
  case 'qr': {
92
102
  // Auch beim Anteil 0 (leer oder in keine Version passend) bekommt
93
103
  // `renderQr` die Nutzlast: die Oberflaeche muss sagen koennen, dass
94
104
  // der QR fehlt und ein Papierbeleg noetig ist. Bon und PDF lassen
95
- // den QR dann weg und melden es ueber `qrFehler`.
96
- const bild = renderQr !== undefined ? renderQr(b.nutzlast) : _jsx("div", { "data-qr": b.nutzlast, "aria-label": "RKSV-QR-Code" });
97
- return (_jsx("div", { className: "keck-blatt-qr", style: { display: 'flex', justifyContent: 'center' }, children: _jsx("div", { style: { width: `${b.breiteAnteil * z}ch`, aspectRatio: '1 / 1' }, children: qrVerdeckt ? _jsx(QrVerdeckt, { data: b.nutzlast, text: qrVerdecktText, children: bild }) : bild }) }, i));
105
+ // den QR dann weg und melden es ueber `qrError`.
106
+ const bild = renderQr !== undefined ? renderQr(b.payload) : _jsx("div", { "data-qr": b.payload, "aria-label": "RKSV-QR-Code" });
107
+ return (_jsx("div", { className: "keck-blatt-qr", style: { display: 'flex', justifyContent: 'center' }, children: _jsx("div", { style: { width: `${b.widthFraction * z}ch`, aspectRatio: '1 / 1' }, children: qrVerdeckt ? _jsx(HiddenQr, { data: b.payload, text: qrVerdecktText, children: bild }) : bild }) }, i));
98
108
  }
99
109
  }
100
110
  }) }));
@@ -104,12 +114,12 @@ export function BelegBlattZeilen({ blatt, logoUrl, renderQr, qrVerdeckt = false,
104
114
  * das Bild geladen ist, fehlt der Logo-Block -- die Kasse laedt das Logo ohnehin
105
115
  * vorab in den Browser-Cache.
106
116
  *
107
- * Ein Logo ueber [logoPixelZulaessig] (4096x4096px, dieselbe Grenze wie das
117
+ * Ein Logo ueber [isLogoPixelSizeAllowed] (4096x4096px, dieselbe Grenze wie das
108
118
  * Druck-Kit beim Rastern fuer den Bon) bleibt hier ebenso ohne Logo-Block --
109
119
  * sonst zeigte der Bildschirm ein Logo, das nie gedruckt wird: Bildschirm und
110
120
  * Bon zeigen dasselbe Logo.
111
121
  */
112
- export function BelegBlattView({ layout, zeichen, logo, marke = false, qrGroesse, ...rest }) {
122
+ export function ReceiptSheetView({ layout, charsPerLine: zeichen, logo, brandMark: marke = false, qrModuleSize: qrGroesse, ...rest }) {
113
123
  const [mass, setMass] = useState(null);
114
124
  const url = logo?.url;
115
125
  useEffect(() => {
@@ -121,7 +131,7 @@ export function BelegBlattView({ layout, zeichen, logo, marke = false, qrGroesse
121
131
  return undefined;
122
132
  const bild = new Bild();
123
133
  bild.onload = () => {
124
- if (aktiv && logoPixelZulaessig(bild.naturalWidth, bild.naturalHeight))
134
+ if (aktiv && isLogoPixelSizeAllowed(bild.naturalWidth, bild.naturalHeight))
125
135
  setMass({ url, breite: bild.naturalWidth, hoehe: bild.naturalHeight });
126
136
  };
127
137
  bild.src = url;
@@ -129,14 +139,14 @@ export function BelegBlattView({ layout, zeichen, logo, marke = false, qrGroesse
129
139
  aktiv = false;
130
140
  };
131
141
  }, [url]);
132
- const optionen = { marke };
142
+ const optionen = { brandMark: marke };
133
143
  if (zeichen !== undefined)
134
- optionen.zeichen = zeichen;
144
+ optionen.charsPerLine = zeichen;
135
145
  if (qrGroesse !== undefined)
136
- optionen.qrGroesse = qrGroesse;
146
+ optionen.qrModuleSize = qrGroesse;
137
147
  const geladen = logo != null && mass !== null && mass.url === logo.url;
138
148
  if (geladen)
139
- optionen.logo = { stufe: logo.stufe, pxBreite: mass.breite, pxHoehe: mass.hoehe };
140
- const blatt = belegBlatt(layout, optionen);
141
- return geladen ? _jsx(BelegBlattZeilen, { blatt: blatt, logoUrl: logo.url, ...rest }) : _jsx(BelegBlattZeilen, { blatt: blatt, ...rest });
149
+ optionen.logo = { size: logo.size, pixelWidth: mass.breite, pixelHeight: mass.hoehe };
150
+ const blatt = receiptSheet(layout, optionen);
151
+ return geladen ? _jsx(ReceiptSheetLines, { sheet: blatt, logoUrl: logo.url, ...rest }) : _jsx(ReceiptSheetLines, { sheet: blatt, ...rest });
142
152
  }
@@ -1,14 +1,14 @@
1
- import type { RasterBild } from '../printing/escpos.js';
2
- import { type LogoMass } from './blatt.js';
1
+ import type { RasterImage } from '../printing/escpos.js';
2
+ import { type LogoDimensions } from './blatt.js';
3
3
  /**
4
4
  * RGBA-Pixel (wie `ImageData.data` im Browser oder ein dekodiertes PNG in
5
5
  * Node/Dart) -> einfarbiges Rasterbild in genau der Groesse, die das Blatt
6
6
  * dem Logo gibt.
7
7
  *
8
8
  * Die Rechnung ist Vertrag und hat einen Dart-Zwilling (Golden
9
- * `erwartet/logo-probe.raster32.txt`): Flaechenmittel je Druckpunkt,
9
+ * `expected/logo-sample.raster32.txt`): Flaechenmittel je Druckpunkt,
10
10
  * Durchsichtiges auf Papierweiss, Helligkeit nach BT.601, Floyd-Steinberg mit
11
11
  * Schwelle 128. Die Reihenfolge der Rechenschritte nicht aendern -- beide
12
12
  * Sprachen rechnen mit IEEE-Doubles und kommen nur so auf dieselben Punkte.
13
13
  */
14
- export declare function logoRaster(rgba: ArrayLike<number>, pxBreite: number, pxHoehe: number, mass: LogoMass, zeichen: number): RasterBild;
14
+ export declare function rasterizeLogo(rgba: ArrayLike<number>, pxWidth: number, pxHeight: number, dimensions: LogoDimensions, chars: number): RasterImage;
@@ -1,34 +1,34 @@
1
- import { logoRasterMass } from './blatt.js';
1
+ import { logoRasterSize } from './blatt.js';
2
2
  /**
3
3
  * RGBA-Pixel (wie `ImageData.data` im Browser oder ein dekodiertes PNG in
4
4
  * Node/Dart) -> einfarbiges Rasterbild in genau der Groesse, die das Blatt
5
5
  * dem Logo gibt.
6
6
  *
7
7
  * Die Rechnung ist Vertrag und hat einen Dart-Zwilling (Golden
8
- * `erwartet/logo-probe.raster32.txt`): Flaechenmittel je Druckpunkt,
8
+ * `expected/logo-sample.raster32.txt`): Flaechenmittel je Druckpunkt,
9
9
  * Durchsichtiges auf Papierweiss, Helligkeit nach BT.601, Floyd-Steinberg mit
10
10
  * Schwelle 128. Die Reihenfolge der Rechenschritte nicht aendern -- beide
11
11
  * Sprachen rechnen mit IEEE-Doubles und kommen nur so auf dieselben Punkte.
12
12
  */
13
- export function logoRaster(rgba, pxBreite, pxHoehe, mass, zeichen) {
14
- if (!Number.isInteger(pxBreite) || !Number.isInteger(pxHoehe) || pxBreite < 1 || pxHoehe < 1 || rgba.length !== pxBreite * pxHoehe * 4) {
13
+ export function rasterizeLogo(rgba, pxWidth, pxHeight, dimensions, chars) {
14
+ if (!Number.isInteger(pxWidth) || !Number.isInteger(pxHeight) || pxWidth < 1 || pxHeight < 1 || rgba.length !== pxWidth * pxHeight * 4) {
15
15
  throw new Error('RGBA-Laenge passt nicht zum Pixelmass');
16
16
  }
17
- const { breite, hoehe } = logoRasterMass(mass, zeichen);
17
+ const { width: breite, height: hoehe } = logoRasterSize(dimensions, chars);
18
18
  const grau = new Float64Array(breite * hoehe);
19
- const sx = pxBreite / breite;
20
- const sy = pxHoehe / hoehe;
19
+ const sx = pxWidth / breite;
20
+ const sy = pxHeight / hoehe;
21
21
  for (let y = 0; y < hoehe; y++) {
22
22
  const y0 = Math.floor(y * sy);
23
- const y1 = Math.min(pxHoehe, Math.max(y0 + 1, Math.floor((y + 1) * sy)));
23
+ const y1 = Math.min(pxHeight, Math.max(y0 + 1, Math.floor((y + 1) * sy)));
24
24
  for (let x = 0; x < breite; x++) {
25
25
  const x0 = Math.floor(x * sx);
26
- const x1 = Math.min(pxBreite, Math.max(x0 + 1, Math.floor((x + 1) * sx)));
26
+ const x1 = Math.min(pxWidth, Math.max(x0 + 1, Math.floor((x + 1) * sx)));
27
27
  let summe = 0;
28
28
  let anzahl = 0;
29
29
  for (let py = y0; py < y1; py++) {
30
30
  for (let px = x0; px < x1; px++) {
31
- const i = (py * pxBreite + px) * 4;
31
+ const i = (py * pxWidth + px) * 4;
32
32
  const deckung = rgba[i + 3] / 255;
33
33
  const hell = 0.299 * rgba[i] + 0.587 * rgba[i + 1] + 0.114 * rgba[i + 2];
34
34
  summe += hell * deckung + 255 * (1 - deckung);
@@ -58,5 +58,5 @@ export function logoRaster(rgba, pxBreite, pxHoehe, mass, zeichen) {
58
58
  }
59
59
  }
60
60
  }
61
- return { breite, hoehe, punkte };
61
+ return { width: breite, height: hoehe, dots: punkte };
62
62
  }