@bayarkit/testing 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +27 -2
  2. package/dist/cli/2c2p.d.ts +4 -0
  3. package/dist/cli/2c2p.d.ts.map +1 -0
  4. package/dist/cli/2c2p.js +7 -0
  5. package/dist/cli/2c2p.js.map +1 -0
  6. package/dist/cli/bayarcash.d.ts +4 -0
  7. package/dist/cli/bayarcash.d.ts.map +1 -0
  8. package/dist/cli/bayarcash.js +11 -0
  9. package/dist/cli/bayarcash.js.map +1 -0
  10. package/dist/cli/billplz.d.ts +4 -0
  11. package/dist/cli/billplz.d.ts.map +1 -0
  12. package/dist/cli/billplz.js +11 -0
  13. package/dist/cli/billplz.js.map +1 -0
  14. package/dist/cli/chip.d.ts +4 -0
  15. package/dist/cli/chip.d.ts.map +1 -0
  16. package/dist/cli/chip.js +7 -0
  17. package/dist/cli/chip.js.map +1 -0
  18. package/dist/cli/curlec.d.ts +4 -0
  19. package/dist/cli/curlec.d.ts.map +1 -0
  20. package/dist/cli/curlec.js +11 -0
  21. package/dist/cli/curlec.js.map +1 -0
  22. package/dist/cli/eghl.d.ts +4 -0
  23. package/dist/cli/eghl.d.ts.map +1 -0
  24. package/dist/cli/eghl.js +7 -0
  25. package/dist/cli/eghl.js.map +1 -0
  26. package/dist/cli/fiuu.d.ts +4 -0
  27. package/dist/cli/fiuu.d.ts.map +1 -0
  28. package/dist/cli/fiuu.js +17 -0
  29. package/dist/cli/fiuu.js.map +1 -0
  30. package/dist/cli/gkash.d.ts +4 -0
  31. package/dist/cli/gkash.d.ts.map +1 -0
  32. package/dist/cli/gkash.js +7 -0
  33. package/dist/cli/gkash.js.map +1 -0
  34. package/dist/cli/hitpay.d.ts +4 -0
  35. package/dist/cli/hitpay.d.ts.map +1 -0
  36. package/dist/cli/hitpay.js +7 -0
  37. package/dist/cli/hitpay.js.map +1 -0
  38. package/dist/cli/ipay88.d.ts +4 -0
  39. package/dist/cli/ipay88.d.ts.map +1 -0
  40. package/dist/cli/ipay88.js +7 -0
  41. package/dist/cli/ipay88.js.map +1 -0
  42. package/dist/cli/senangpay.d.ts +4 -0
  43. package/dist/cli/senangpay.d.ts.map +1 -0
  44. package/dist/cli/senangpay.js +17 -0
  45. package/dist/cli/senangpay.js.map +1 -0
  46. package/dist/cli/stripe.d.ts +4 -0
  47. package/dist/cli/stripe.d.ts.map +1 -0
  48. package/dist/cli/stripe.js +7 -0
  49. package/dist/cli/stripe.js.map +1 -0
  50. package/dist/cli/toyyibpay.d.ts +4 -0
  51. package/dist/cli/toyyibpay.d.ts.map +1 -0
  52. package/dist/cli/toyyibpay.js +7 -0
  53. package/dist/cli/toyyibpay.js.map +1 -0
  54. package/dist/cli/types.d.ts +7 -0
  55. package/dist/cli/types.d.ts.map +1 -0
  56. package/dist/cli/types.js +2 -0
  57. package/dist/cli/types.js.map +1 -0
  58. package/dist/cli/xendit.d.ts +4 -0
  59. package/dist/cli/xendit.d.ts.map +1 -0
  60. package/dist/cli/xendit.js +7 -0
  61. package/dist/cli/xendit.js.map +1 -0
  62. package/dist/cli.d.ts +3 -0
  63. package/dist/cli.d.ts.map +1 -0
  64. package/dist/cli.js +46 -0
  65. package/dist/cli.js.map +1 -0
  66. package/dist/conformance.d.ts +13 -0
  67. package/dist/conformance.d.ts.map +1 -0
  68. package/dist/conformance.js +166 -0
  69. package/dist/conformance.js.map +1 -0
  70. package/dist/control.d.ts +6 -0
  71. package/dist/control.d.ts.map +1 -0
  72. package/dist/control.js +46 -0
  73. package/dist/control.js.map +1 -0
  74. package/dist/fakes/2c2p.d.ts +21 -0
  75. package/dist/fakes/2c2p.d.ts.map +1 -0
  76. package/dist/fakes/2c2p.js +287 -0
  77. package/dist/fakes/2c2p.js.map +1 -0
  78. package/dist/fakes/bayarcash.d.ts +15 -0
  79. package/dist/fakes/bayarcash.d.ts.map +1 -0
  80. package/dist/fakes/bayarcash.js +133 -0
  81. package/dist/fakes/bayarcash.js.map +1 -0
  82. package/dist/fakes/billplz.d.ts +20 -0
  83. package/dist/fakes/billplz.d.ts.map +1 -0
  84. package/dist/fakes/billplz.js +233 -0
  85. package/dist/fakes/billplz.js.map +1 -0
  86. package/dist/fakes/chip.d.ts +18 -0
  87. package/dist/fakes/chip.d.ts.map +1 -0
  88. package/dist/fakes/chip.js +227 -0
  89. package/dist/fakes/chip.js.map +1 -0
  90. package/dist/fakes/curlec.d.ts +30 -0
  91. package/dist/fakes/curlec.d.ts.map +1 -0
  92. package/dist/fakes/curlec.js +396 -0
  93. package/dist/fakes/curlec.js.map +1 -0
  94. package/dist/fakes/eghl.d.ts +36 -0
  95. package/dist/fakes/eghl.d.ts.map +1 -0
  96. package/dist/fakes/eghl.js +267 -0
  97. package/dist/fakes/eghl.js.map +1 -0
  98. package/dist/fakes/fiuu.d.ts +27 -0
  99. package/dist/fakes/fiuu.d.ts.map +1 -0
  100. package/dist/fakes/fiuu.js +230 -0
  101. package/dist/fakes/fiuu.js.map +1 -0
  102. package/dist/fakes/gkash.d.ts +18 -0
  103. package/dist/fakes/gkash.d.ts.map +1 -0
  104. package/dist/fakes/gkash.js +193 -0
  105. package/dist/fakes/gkash.js.map +1 -0
  106. package/dist/fakes/hitpay.d.ts +36 -0
  107. package/dist/fakes/hitpay.d.ts.map +1 -0
  108. package/dist/fakes/hitpay.js +233 -0
  109. package/dist/fakes/hitpay.js.map +1 -0
  110. package/dist/fakes/ipay88.d.ts +16 -0
  111. package/dist/fakes/ipay88.d.ts.map +1 -0
  112. package/dist/fakes/ipay88.js +195 -0
  113. package/dist/fakes/ipay88.js.map +1 -0
  114. package/dist/fakes/senangpay.d.ts +51 -0
  115. package/dist/fakes/senangpay.d.ts.map +1 -0
  116. package/dist/fakes/senangpay.js +255 -0
  117. package/dist/fakes/senangpay.js.map +1 -0
  118. package/dist/fakes/stripe.d.ts +26 -0
  119. package/dist/fakes/stripe.d.ts.map +1 -0
  120. package/dist/fakes/stripe.js +243 -0
  121. package/dist/fakes/stripe.js.map +1 -0
  122. package/dist/fakes/toyyibpay.d.ts +14 -0
  123. package/dist/fakes/toyyibpay.d.ts.map +1 -0
  124. package/dist/fakes/toyyibpay.js +138 -0
  125. package/dist/fakes/toyyibpay.js.map +1 -0
  126. package/dist/fakes/types.d.ts +19 -0
  127. package/dist/fakes/types.d.ts.map +1 -0
  128. package/dist/fakes/types.js +3 -0
  129. package/dist/fakes/types.js.map +1 -0
  130. package/dist/fakes/xendit.d.ts +36 -0
  131. package/dist/fakes/xendit.d.ts.map +1 -0
  132. package/dist/fakes/xendit.js +300 -0
  133. package/dist/fakes/xendit.js.map +1 -0
  134. package/dist/index.d.ts +18 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +18 -0
  137. package/dist/index.js.map +1 -0
  138. package/package.json +64 -4
package/README.md CHANGED
@@ -1,3 +1,28 @@
1
- # Temporary Holding Version
1
+ # @bayarkit/testing
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Fake Malaysian payment gateways and the [bayarkit](https://github.com/sasateguh/bayarkit) conformance suite: test checkout and callbacks without real
4
+ money, in JavaScript or in any other language. [Bahasa Melayu](#bahasa-melayu)
5
+
6
+ ```bash
7
+ npm install --save-dev @bayarkit/testing
8
+ ```
9
+
10
+ Each fake answers like its gateway's API (in the shapes measured on the sandbox where one was measured) and signs
11
+ callbacks exactly as the gateway does: `startFakeToyyibPay`, `startFakeBayarcash`, `startFakeBillplz`, `startFakeChip`, `startFakeStripe`, `startFakeSenangPay`, `startFakeIPay88`, `startFakeFiuu`, `startFake2C2P`, `startFakeCurlec`, `startFakeHitPay`, `startFakeGkash`, `startFakeXendit`, `startFakeEghl`.
12
+ Every fake has `markPaid(id)`, `callbackFor(id)` (a correctly signed callback) and `tamper(callback)`.
13
+
14
+ - `gatewayConformance(name, setup)` — the suite every adapter must pass (vitest, optional peer).
15
+ - `npx bayarkit-fake <gateway>` — one fake as a server for PHP, Python or Go tests. It prints one JSON line
16
+ (`url`, `control`) and serves a control API: `POST /paid/<id>`, `GET /callback/<id>`,
17
+ `GET /callback/<id>/tampered`. vitest is not needed for this.
18
+
19
+ ## Bahasa Melayu
20
+
21
+ Gateway pembayaran Malaysia palsu dan set ujian keakuran [bayarkit](https://github.com/sasateguh/bayarkit): uji checkout dan callback tanpa wang
22
+ sebenar, dalam JavaScript atau bahasa lain. Setiap fake menjawab seperti API gatewaynya dan menandatangani callback
23
+ sama seperti gateway itu. `npx bayarkit-fake <gateway>` menjalankan satu fake sebagai pelayan dengan API kawalan
24
+ (`POST /paid/<id>`, `GET /callback/<id>`, `GET /callback/<id>/tampered`) untuk ujian PHP, Python atau Go.
25
+
26
+ Dokumentasi penuh: [README.ms.md](https://github.com/sasateguh/bayarkit/blob/main/README.ms.md).
27
+
28
+ MIT © Muhammad Aiman
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=2c2p.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2c2p.d.ts","sourceRoot":"","sources":["../../src/cli/2c2p.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFake2C2P } from '../fakes/2c2p.js';
2
+ const fake = {
3
+ defaults: { merchantId: 'JT07', secretKey: 'FAKE2C2PSECRETKEY' },
4
+ start: (o) => startFake2C2P({ merchantId: o.merchantId ?? '', secretKey: o.secretKey ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=2c2p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2c2p.js","sourceRoot":"","sources":["../../src/cli/2c2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE;IAChE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;CAC9F,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=bayarcash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bayarcash.d.ts","sourceRoot":"","sources":["../../src/cli/bayarcash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAQX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { startFakeBayarcash } from '../fakes/bayarcash.js';
2
+ const fake = {
3
+ defaults: { token: 'fake-token', secretKey: 'fake-secret', portalKey: 'fake-portal' },
4
+ start: (o) => startFakeBayarcash({
5
+ token: o.token ?? '',
6
+ secretKey: o.secretKey ?? '',
7
+ portalKey: o.portalKey ?? '',
8
+ }),
9
+ };
10
+ export default fake;
11
+ //# sourceMappingURL=bayarcash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bayarcash.js","sourceRoot":"","sources":["../../src/cli/bayarcash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE;IACrF,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,kBAAkB,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;KAC7B,CAAC;CACL,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=billplz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billplz.d.ts","sourceRoot":"","sources":["../../src/cli/billplz.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAQX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { startFakeBillplz } from '../fakes/billplz.js';
2
+ const fake = {
3
+ defaults: { secretKey: 'fake-secret', xSignatureKey: 'fake-x-signature', collectionId: 'fakecollection' },
4
+ start: (o) => startFakeBillplz({
5
+ secretKey: o.secretKey ?? '',
6
+ xSignatureKey: o.xSignatureKey ?? '',
7
+ collectionId: o.collectionId ?? '',
8
+ }),
9
+ };
10
+ export default fake;
11
+ //# sourceMappingURL=billplz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billplz.js","sourceRoot":"","sources":["../../src/cli/billplz.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGtD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE;IACzG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,gBAAgB,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;QACpC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;KACnC,CAAC;CACL,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=chip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../src/cli/chip.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeChip } from '../fakes/chip.js';
2
+ const fake = {
3
+ defaults: { secretKey: 'fake-secret', brandId: 'fake-brand' },
4
+ start: (o) => startFakeChip({ secretKey: o.secretKey ?? '', brandId: o.brandId ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.js","sourceRoot":"","sources":["../../src/cli/chip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE;IAC7D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;CACxF,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=curlec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curlec.d.ts","sourceRoot":"","sources":["../../src/cli/curlec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAQX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { startFakeCurlec } from '../fakes/curlec.js';
2
+ const fake = {
3
+ defaults: { keyId: 'rzp_test_fake', keySecret: 'fake-key-secret', webhookSecret: 'fake-webhook-secret' },
4
+ start: (o) => startFakeCurlec({
5
+ keyId: o.keyId ?? '',
6
+ keySecret: o.keySecret ?? '',
7
+ webhookSecret: o.webhookSecret ?? '',
8
+ }),
9
+ };
10
+ export default fake;
11
+ //# sourceMappingURL=curlec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curlec.js","sourceRoot":"","sources":["../../src/cli/curlec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE;IACxG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,eAAe,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;KACrC,CAAC;CACL,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=eghl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eghl.d.ts","sourceRoot":"","sources":["../../src/cli/eghl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeEghl } from '../fakes/eghl.js';
2
+ const fake = {
3
+ defaults: { serviceId: 'SIT', password: 'fake-password' },
4
+ start: (o) => startFakeEghl({ serviceId: o.serviceId ?? '', password: o.password ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=eghl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eghl.js","sourceRoot":"","sources":["../../src/cli/eghl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE;IACzD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;CAC1F,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=fiuu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiuu.d.ts","sourceRoot":"","sources":["../../src/cli/fiuu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAcX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,17 @@
1
+ import { startFakeFiuu } from '../fakes/fiuu.js';
2
+ const fake = {
3
+ defaults: {
4
+ merchantId: 'SB_fakemerchant',
5
+ verifyKey: 'fake-verify-key',
6
+ secretKey: 'fake-secret-key',
7
+ extendedVcode: 'false',
8
+ },
9
+ start: (o) => startFakeFiuu({
10
+ merchantId: o.merchantId ?? '',
11
+ verifyKey: o.verifyKey ?? '',
12
+ secretKey: o.secretKey ?? '',
13
+ extendedVcode: o.extendedVcode === 'true',
14
+ }),
15
+ };
16
+ export default fake;
17
+ //# sourceMappingURL=fiuu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiuu.js","sourceRoot":"","sources":["../../src/cli/fiuu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE;QACR,UAAU,EAAE,iBAAiB;QAC7B,SAAS,EAAE,iBAAiB;QAC5B,SAAS,EAAE,iBAAiB;QAC5B,aAAa,EAAE,OAAO;KACvB;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,aAAa,CAAC;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;QAC9B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,aAAa,EAAE,CAAC,CAAC,aAAa,KAAK,MAAM;KAC1C,CAAC;CACL,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=gkash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gkash.d.ts","sourceRoot":"","sources":["../../src/cli/gkash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeGkash } from '../fakes/gkash.js';
2
+ const fake = {
3
+ defaults: { cid: 'M161-U-999', signatureKey: 'fake-signature-key' },
4
+ start: (o) => startFakeGkash({ cid: o.cid ?? '', signatureKey: o.signatureKey ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=gkash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gkash.js","sourceRoot":"","sources":["../../src/cli/gkash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE;IACnE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;CACvF,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=hitpay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hitpay.d.ts","sourceRoot":"","sources":["../../src/cli/hitpay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAIX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeHitPay } from '../fakes/hitpay.js';
2
+ const fake = {
3
+ defaults: { apiKey: 'fake-api-key', apiSalt: 'fake-api-salt', webhookSalt: 'fake-webhook-salt' },
4
+ start: (o) => startFakeHitPay({ apiKey: o.apiKey ?? '', apiSalt: o.apiSalt ?? '', webhookSalt: o.webhookSalt ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=hitpay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hitpay.js","sourceRoot":"","sources":["../../src/cli/hitpay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAChG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;CAC1G,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=ipay88.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipay88.d.ts","sourceRoot":"","sources":["../../src/cli/ipay88.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeIPay88 } from '../fakes/ipay88.js';
2
+ const fake = {
3
+ defaults: { merchantCode: 'M00003', merchantKey: 'fake-merchant-key' },
4
+ start: (o) => startFakeIPay88({ merchantCode: o.merchantCode ?? '', merchantKey: o.merchantKey ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=ipay88.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipay88.js","sourceRoot":"","sources":["../../src/cli/ipay88.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;IACtE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;CACxG,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=senangpay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senangpay.d.ts","sourceRoot":"","sources":["../../src/cli/senangpay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAcX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,17 @@
1
+ import { startFakeSenangPay } from '../fakes/senangpay.js';
2
+ const fake = {
3
+ defaults: {
4
+ clientId: 'BRN-fake-0001',
5
+ secretKey: 'fake-secret',
6
+ apiKey: 'fake-api-key',
7
+ notificationPath: '/notifications/doku',
8
+ },
9
+ start: (o) => startFakeSenangPay({
10
+ clientId: o.clientId ?? '',
11
+ secretKey: o.secretKey ?? '',
12
+ apiKey: o.apiKey ?? '',
13
+ notificationPath: o.notificationPath ?? '',
14
+ }),
15
+ };
16
+ export default fake;
17
+ //# sourceMappingURL=senangpay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senangpay.js","sourceRoot":"","sources":["../../src/cli/senangpay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE;QACR,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,cAAc;QACtB,gBAAgB,EAAE,qBAAqB;KACxC;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,kBAAkB,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;QACtB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE;KAC3C,CAAC;CACL,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=stripe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/cli/stripe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeStripe } from '../fakes/stripe.js';
2
+ const fake = {
3
+ defaults: { secretKey: 'sk_test_fake', webhookSecret: 'whsec_fake' },
4
+ start: (o) => startFakeStripe({ secretKey: o.secretKey ?? '', webhookSecret: o.webhookSecret ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=stripe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/cli/stripe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE;IACpE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;CACtG,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=toyyibpay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toyyibpay.d.ts","sourceRoot":"","sources":["../../src/cli/toyyibpay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeToyyibPay } from '../fakes/toyyibpay.js';
2
+ const fake = {
3
+ defaults: { secretKey: 'fake-secret', categoryCode: 'fakecat' },
4
+ start: (o) => startFakeToyyibPay({ secretKey: o.secretKey ?? '', categoryCode: o.categoryCode ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=toyyibpay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toyyibpay.js","sourceRoot":"","sources":["../../src/cli/toyyibpay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1D,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE;IAC/D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;CACvG,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { FakeGateway } from '../fakes/types.js';
2
+ /** One `bayarkit-fake` gateway: test defaults, and how to start the fake. One file per gateway in this folder. */
3
+ export interface CliFake {
4
+ defaults: Record<string, string>;
5
+ start(options: Record<string, string>): Promise<FakeGateway>;
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,kHAAkH;AAClH,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CAC7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { CliFake } from './types.js';
2
+ declare const fake: CliFake;
3
+ export default fake;
4
+ //# sourceMappingURL=xendit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xendit.d.ts","sourceRoot":"","sources":["../../src/cli/xendit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,QAAA,MAAM,IAAI,EAAE,OAGX,CAAA;eAEc,IAAI"}
@@ -0,0 +1,7 @@
1
+ import { startFakeXendit } from '../fakes/xendit.js';
2
+ const fake = {
3
+ defaults: { secretKey: 'xnd_development_fake', callbackToken: 'fake-callback-token' },
4
+ start: (o) => startFakeXendit({ secretKey: o.secretKey ?? '', callbackToken: o.callbackToken ?? '' }),
5
+ };
6
+ export default fake;
7
+ //# sourceMappingURL=xendit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xendit.js","sourceRoot":"","sources":["../../src/cli/xendit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,MAAM,IAAI,GAAY;IACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE;IACrF,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;CACtG,CAAA;AAED,eAAe,IAAI,CAAA"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * bayarkit-fake — run one fake gateway as a standalone server, for tests in any language.
4
+ *
5
+ * npx bayarkit-fake <gateway> [--control-port N] [--<option> <value> ...]
6
+ *
7
+ * Prints ONE JSON line ({ gateway, url, control, options }) and serves until SIGINT/SIGTERM. Options are the fake's
8
+ * own (e.g. --secretKey, --webhookSecret); test defaults are used for the rest and echoed in `options`.
9
+ * Each gateway is one file in ./cli/ (loaded on demand), so adding a gateway never edits this file, and vitest is not
10
+ * needed (the package index, which pulls in the conformance suite, is not imported).
11
+ */
12
+ import { readdirSync } from 'node:fs';
13
+ import { startControlServer } from './control.js';
14
+ const dir = new URL('./cli/', import.meta.url);
15
+ const available = readdirSync(dir)
16
+ .filter((f) => f.endsWith('.js') && f !== 'types.js')
17
+ .map((f) => f.slice(0, -3))
18
+ .sort();
19
+ const [gateway, ...rest] = process.argv.slice(2);
20
+ // Only names that exist in ./cli/ are imported, so the argument can never reach another path.
21
+ if (!gateway || !available.includes(gateway)) {
22
+ console.error(`usage: bayarkit-fake <${available.join('|')}> [--control-port N] [--<option> <value> ...]`);
23
+ process.exit(64);
24
+ }
25
+ const entry = (await import(new URL(`${gateway}.js`, dir).href)).default;
26
+ const options = { ...entry.defaults };
27
+ let controlPort = 0;
28
+ for (let i = 0; i < rest.length; i += 2) {
29
+ const key = rest[i]?.replace(/^--/, '') ?? '';
30
+ const value = rest[i + 1] ?? '';
31
+ if (key === 'control-port')
32
+ controlPort = Number(value);
33
+ else
34
+ options[key] = value;
35
+ }
36
+ const fake = await entry.start(options);
37
+ const control = await startControlServer(gateway, fake, controlPort);
38
+ console.log(JSON.stringify({ gateway, url: fake.url, control: control.url, options }));
39
+ const stop = async () => {
40
+ await control.close();
41
+ await fake.close();
42
+ process.exit(0);
43
+ };
44
+ process.on('SIGINT', stop);
45
+ process.on('SIGTERM', stop);
46
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC;KAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;KACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,EAAE,CAAA;AAET,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAChD,8FAA8F;AAC9F,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;IAC1G,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAClB,CAAC;AACD,MAAM,KAAK,GAAI,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAA0B,CAAC,OAAO,CAAA;AAClG,MAAM,OAAO,GAA2B,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AAC7D,IAAI,WAAW,GAAG,CAAC,CAAA;AACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,GAAG,KAAK,cAAc;QAAE,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;QAClD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC3B,CAAC;AACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACvC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AACpE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AACtF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;IACrB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA;AACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC1B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The conformance suite. Every adapter runs it against its fake (always) and against the real sandbox (when keys are
3
+ * present, which is what turns `evidence.kind` into "measured"). Adding a gateway = an adapter + a fake that pass this.
4
+ */
5
+ import { type CreatePaymentInput, type Gateway } from '@bayarkit/core';
6
+ import type { FakeGateway } from './fakes/types.js';
7
+ export interface ConformanceSetup {
8
+ gateway: Gateway;
9
+ fake: FakeGateway;
10
+ }
11
+ export declare function sampleInput(overrides?: Partial<CreatePaymentInput>): CreatePaymentInput;
12
+ export declare function gatewayConformance(name: string, setup: () => Promise<ConformanceSetup>): void;
13
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,OAAO,EAEb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;CAClB;AAGD,wBAAgB,WAAW,CAAC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CAW3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CA4J7F"}