@muhammedaksam/sipay-node 1.0.5 → 1.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 (86) hide show
  1. package/dist/esm/index.js +16 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/resources/branded-solution.js +0 -7
  4. package/dist/esm/resources/branded-solution.js.map +1 -1
  5. package/dist/esm/resources/cards.js +74 -0
  6. package/dist/esm/resources/cards.js.map +1 -0
  7. package/dist/esm/resources/cashout.js +17 -0
  8. package/dist/esm/resources/cashout.js.map +1 -0
  9. package/dist/esm/resources/marketplace.js +58 -0
  10. package/dist/esm/resources/marketplace.js.map +1 -0
  11. package/dist/esm/resources/payment-completion.js +41 -0
  12. package/dist/esm/resources/payment-completion.js.map +1 -0
  13. package/dist/esm/resources/payments.js +34 -1
  14. package/dist/esm/resources/payments.js.map +1 -1
  15. package/dist/esm/resources/recurring.js +4 -12
  16. package/dist/esm/resources/recurring.js.map +1 -1
  17. package/dist/esm/resources/sub-merchant.js +84 -0
  18. package/dist/esm/resources/sub-merchant.js.map +1 -0
  19. package/dist/esm/types/index.js +2 -1
  20. package/dist/esm/types/index.js.map +1 -1
  21. package/dist/esm/types/status-codes.js +292 -0
  22. package/dist/esm/types/status-codes.js.map +1 -0
  23. package/dist/esm/utils/http-client.js +14 -3
  24. package/dist/esm/utils/http-client.js.map +1 -1
  25. package/dist/esm/utils/index.js +158 -15
  26. package/dist/esm/utils/index.js.map +1 -1
  27. package/dist/esm/utils/status-code-helpers.js +158 -0
  28. package/dist/esm/utils/status-code-helpers.js.map +1 -0
  29. package/dist/index.d.ts +16 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +22 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/resources/branded-solution.d.ts +1 -5
  34. package/dist/resources/branded-solution.d.ts.map +1 -1
  35. package/dist/resources/branded-solution.js +0 -7
  36. package/dist/resources/branded-solution.js.map +1 -1
  37. package/dist/resources/cards.d.ts +76 -0
  38. package/dist/resources/cards.d.ts.map +1 -0
  39. package/dist/resources/cards.js +78 -0
  40. package/dist/resources/cards.js.map +1 -0
  41. package/dist/resources/cashout.d.ts +28 -0
  42. package/dist/resources/cashout.d.ts.map +1 -0
  43. package/dist/resources/cashout.js +21 -0
  44. package/dist/resources/cashout.js.map +1 -0
  45. package/dist/resources/commissions.d.ts +2 -2
  46. package/dist/resources/commissions.d.ts.map +1 -1
  47. package/dist/resources/marketplace.d.ts +87 -0
  48. package/dist/resources/marketplace.d.ts.map +1 -0
  49. package/dist/resources/marketplace.js +62 -0
  50. package/dist/resources/marketplace.js.map +1 -0
  51. package/dist/resources/payment-completion.d.ts +21 -0
  52. package/dist/resources/payment-completion.d.ts.map +1 -0
  53. package/dist/resources/payment-completion.js +78 -0
  54. package/dist/resources/payment-completion.js.map +1 -0
  55. package/dist/resources/payments.d.ts +21 -7
  56. package/dist/resources/payments.d.ts.map +1 -1
  57. package/dist/resources/payments.js +34 -1
  58. package/dist/resources/payments.js.map +1 -1
  59. package/dist/resources/recurring.d.ts +0 -9
  60. package/dist/resources/recurring.d.ts.map +1 -1
  61. package/dist/resources/recurring.js +4 -12
  62. package/dist/resources/recurring.js.map +1 -1
  63. package/dist/resources/sub-merchant.d.ts +136 -0
  64. package/dist/resources/sub-merchant.d.ts.map +1 -0
  65. package/dist/resources/sub-merchant.js +88 -0
  66. package/dist/resources/sub-merchant.js.map +1 -0
  67. package/dist/types/index.d.ts +373 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/index.js +16 -0
  70. package/dist/types/index.js.map +1 -1
  71. package/dist/types/status-codes.d.ts +125 -0
  72. package/dist/types/status-codes.d.ts.map +1 -0
  73. package/dist/types/status-codes.js +300 -0
  74. package/dist/types/status-codes.js.map +1 -0
  75. package/dist/utils/http-client.d.ts.map +1 -1
  76. package/dist/utils/http-client.js +14 -3
  77. package/dist/utils/http-client.js.map +1 -1
  78. package/dist/utils/index.d.ts +50 -5
  79. package/dist/utils/index.d.ts.map +1 -1
  80. package/dist/utils/index.js +170 -16
  81. package/dist/utils/index.js.map +1 -1
  82. package/dist/utils/status-code-helpers.d.ts +42 -0
  83. package/dist/utils/status-code-helpers.d.ts.map +1 -0
  84. package/dist/utils/status-code-helpers.js +164 -0
  85. package/dist/utils/status-code-helpers.js.map +1 -0
  86. package/package.json +11 -9
package/dist/esm/index.js CHANGED
@@ -3,6 +3,11 @@ import { Payments } from './resources/payments';
3
3
  import { Recurring } from './resources/recurring';
4
4
  import { BrandedSolution } from './resources/branded-solution';
5
5
  import { Commissions } from './resources/commissions';
6
+ import { Cards } from './resources/cards';
7
+ import { PaymentCompletion } from './resources/payment-completion';
8
+ import { Marketplace } from './resources/marketplace';
9
+ import { Cashout } from './resources/cashout';
10
+ import { SubMerchant } from './resources/sub-merchant';
6
11
  export class Sipay {
7
12
  constructor(config) {
8
13
  this.client = new SipayHttpClient(config);
@@ -11,6 +16,11 @@ export class Sipay {
11
16
  this.recurring = new Recurring(this.client);
12
17
  this.brandedSolution = new BrandedSolution(this.client);
13
18
  this.commissions = new Commissions(this.client);
19
+ this.cards = new Cards(this.client);
20
+ this.paymentCompletion = new PaymentCompletion(this.client);
21
+ this.marketplace = new Marketplace(this.client);
22
+ this.cashout = new Cashout(this.client);
23
+ this.subMerchant = new SubMerchant(this.client);
14
24
  }
15
25
  /**
16
26
  * Manually authenticate with Sipay API
@@ -42,4 +52,10 @@ export { Payments } from './resources/payments';
42
52
  export { Recurring } from './resources/recurring';
43
53
  export { BrandedSolution } from './resources/branded-solution';
44
54
  export { Commissions } from './resources/commissions';
55
+ export { Cards } from './resources/cards';
56
+ export { PaymentCompletion } from './resources/payment-completion';
57
+ export { Marketplace } from './resources/marketplace';
58
+ export { Cashout } from './resources/cashout';
59
+ export { SubMerchant } from './resources/sub-merchant';
60
+ export * from './utils';
45
61
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,OAAO,KAAK;IAQhB,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1C,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,iBAAiB;AACjB,eAAe,KAAK,CAAC;AAErB,gBAAgB;AAChB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,KAAK;IAahB,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1C,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,iBAAiB;AACjB,eAAe,KAAK,CAAC;AAErB,gBAAgB;AAChB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,cAAc,SAAS,CAAC"}
@@ -7,12 +7,5 @@ export class BrandedSolution extends SipayResource {
7
7
  const data = this.addMerchantKey(linkData);
8
8
  return this.post('/purchase/link', data, options);
9
9
  }
10
- /**
11
- * Check the status of a branded payment
12
- */
13
- async checkStatus(statusData, options) {
14
- const data = this.addMerchantKey(statusData);
15
- return this.post('/purchase/status', data, options);
16
- }
17
10
  }
18
11
  //# sourceMappingURL=branded-solution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"branded-solution.js","sourceRoot":"","sources":["../../../src/resources/branded-solution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAQvC,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAsD,EACtD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAAsD,EACtD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"branded-solution.js","sourceRoot":"","sources":["../../../src/resources/branded-solution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAsD,EACtD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CAIF"}
@@ -0,0 +1,74 @@
1
+ import { SipayResource } from './base';
2
+ import { generateHashKey, generatePaymentHashKey } from '../utils';
3
+ export class Cards extends SipayResource {
4
+ /**
5
+ * Save a credit card for future use
6
+ */
7
+ async saveCard(cardData, options) {
8
+ const data = this.addMerchantKey(cardData);
9
+ // Generate hash key for save card
10
+ // Hash format: merchant_key|customer_number|card_holder_name|card_number|expiry_month|expiry_year
11
+ const hashParts = [
12
+ data.merchant_key,
13
+ data.customer_number,
14
+ data.cc_holder_name,
15
+ data.cc_no,
16
+ data.expiry_month,
17
+ data.expiry_year,
18
+ ];
19
+ data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
20
+ return this.post('/api/saveCard', data, options);
21
+ }
22
+ /**
23
+ * Get saved card tokens for a customer
24
+ */
25
+ async getCardTokens(customerData, options) {
26
+ const data = this.addMerchantKey(customerData);
27
+ return this.get('/api/getCardTokens', data, options);
28
+ }
29
+ /**
30
+ * Edit a saved card
31
+ */
32
+ async editCard(cardData, options) {
33
+ const data = this.addMerchantKey(cardData);
34
+ // Generate hash key for edit card
35
+ // Hash format: merchant_key|customer_number|card_token
36
+ const hashParts = [data.merchant_key, data.customer_number, data.card_token];
37
+ data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
38
+ return this.post('/api/editCard', data, options);
39
+ }
40
+ /**
41
+ * Delete a saved card
42
+ */
43
+ async deleteCard(cardData, options) {
44
+ const data = this.addMerchantKey(cardData);
45
+ // Generate hash key for delete card
46
+ // Hash format: merchant_key|customer_number|card_token
47
+ const hashParts = [data.merchant_key, data.customer_number, data.card_token];
48
+ data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
49
+ return this.post('/api/deleteCard', data, options);
50
+ }
51
+ /**
52
+ * Pay using a saved card token (3D Secure)
53
+ */
54
+ async payByCardToken(paymentData, options) {
55
+ const data = this.addMerchantKey(paymentData);
56
+ // Generate hash key for card token payment
57
+ // Hash format: total|installments_number|currency_code|merchant_key|invoice_id
58
+ const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
59
+ data.hash_key = hashKey;
60
+ return this.post('/api/payByCardToken', data, options);
61
+ }
62
+ /**
63
+ * Pay using a saved card token (Non-Secure/2D)
64
+ */
65
+ async payByCardTokenNonSecure(paymentData, options) {
66
+ const data = this.addMerchantKey(paymentData);
67
+ // Generate hash key for non-secure card token payment
68
+ // Hash format: total|installments_number|currency_code|merchant_key|invoice_id
69
+ const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
70
+ data.hash_key = hashKey;
71
+ return this.post('/api/payByCardTokenNonSecure', data, options);
72
+ }
73
+ }
74
+ //# sourceMappingURL=cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../../../src/resources/cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { SipayResource } from './base';
2
+ export class Cashout extends SipayResource {
3
+ /**
4
+ * Initiate a cashout to bank account
5
+ * Note: This endpoint requires Bearer token authentication and uses a different request structure
6
+ * Hash generation format is not documented in the API spec - requires investigation
7
+ */
8
+ async toBank(cashoutData, options) {
9
+ const data = this.addMerchantKey(cashoutData);
10
+ // TODO: Implement hash generation for cashout endpoint
11
+ // The API spec shows hash_key is required but doesn't provide hash generation examples
12
+ // Hash format needs to be determined - possibly based on merchant_key + invoice_id + amount
13
+ data.hash_key = 'TODO_IMPLEMENT_CASHOUT_HASH_GENERATION';
14
+ return this.post('/api/cashout/tobank', data, options);
15
+ }
16
+ }
17
+ //# sourceMappingURL=cashout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashout.js","sourceRoot":"","sources":["../../../src/resources/cashout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAqBvC,MAAM,OAAO,OAAQ,SAAQ,aAAa;IACxC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,WAAoE,EACpE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAyB,CAAC;QAEtE,uDAAuD;QACvD,uFAAuF;QACvF,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,GAAG,wCAAwC,CAAC;QAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,58 @@
1
+ import { SipayResource } from './base';
2
+ import { generatePaymentHashKey } from '../utils';
3
+ export class Marketplace extends SipayResource {
4
+ /**
5
+ * Make a marketplace payment (non-secure/2D)
6
+ */
7
+ async pay2D(paymentData, options) {
8
+ const data = this.addMerchantKey(paymentData);
9
+ // Generate hash key for marketplace payment
10
+ // Hash format: total|installments_number|currency_code|merchant_key|invoice_id
11
+ const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
12
+ data.hash_key = hashKey;
13
+ return this.post('/api/marketplace/sale/pay/smart/non-secure', data, options);
14
+ }
15
+ /**
16
+ * Make a marketplace payment with 3D Secure
17
+ */
18
+ async pay3D(paymentData, options) {
19
+ const data = this.addMerchantKey(paymentData);
20
+ return this.post('/api/marketplace/sale/pay/smart/secure', data, options);
21
+ }
22
+ /**
23
+ * Refund a marketplace payment
24
+ */
25
+ async refund(refundData, options) {
26
+ const data = this.addMerchantKey(refundData);
27
+ return this.post('/ccpayment/api/marketplace/sale/refund', data, options);
28
+ }
29
+ /**
30
+ * Check status of a marketplace payment
31
+ */
32
+ async checkStatus(statusData, options) {
33
+ const data = this.addMerchantKey(statusData);
34
+ return this.post('/ccpayment/api/marketplace/sale/check/status', data, options);
35
+ }
36
+ /**
37
+ * Get settlements information
38
+ */
39
+ async getSettlements(settlementsData, options) {
40
+ const data = this.addMerchantKey(settlementsData);
41
+ return this.post('/ccpayment/api/settlements', data, options);
42
+ }
43
+ /**
44
+ * Approve a marketplace transaction
45
+ */
46
+ async approveTransaction(approveData, options) {
47
+ const data = this.addMerchantKey(approveData);
48
+ return this.post('/ccpayment/api/marketplace/sale/transaction/approve', data, options);
49
+ }
50
+ /**
51
+ * Process payout to sub merchants
52
+ */
53
+ async payout(payoutData, options) {
54
+ const data = this.addMerchantKey(payoutData);
55
+ return this.post('/ccpayment/api/marketplace/sub-merchant/payout', data, options);
56
+ }
57
+ }
58
+ //# sourceMappingURL=marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/resources/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAWvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AA8DlD,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,WAAsE,EACtE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAA2B,CAAC;QAExE,4CAA4C;QAC5C,+EAA+E;QAC/E,MAAM,OAAO,GAAG,sBAAsB,CACpC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,mBAAmB,IAAI,CAAC,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAChC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,WAAyD,EACzD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,eAAyD,EACzD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAA4D,EAC5D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,qDAAqD,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ import { SipayResource } from './base';
2
+ import * as crypto from 'crypto';
3
+ const { createHash, createCipheriv } = crypto;
4
+ export class PaymentCompletion extends SipayResource {
5
+ /**
6
+ * Complete or cancel a 3D payment transaction
7
+ * This is used for merchant 3D model where payment completion is done by merchant
8
+ */
9
+ async completePayment(completionData, options) {
10
+ const data = this.addMerchantKey(completionData);
11
+ // Generate hash key using the payment completion format
12
+ // Hash format: merchant_key|invoice_id|order_id|status
13
+ const hashKey = this.generatePaymentCompletionHashKey(this.client['config'].merchantKey, data.invoice_id, data.order_id, data.status, this.client['config'].appSecret);
14
+ data.hash_key = hashKey;
15
+ return this.post('/payment/complete', data, options);
16
+ }
17
+ /**
18
+ * Generate hash key for payment completion (using official method)
19
+ */
20
+ generatePaymentCompletionHashKey(merchantKey, invoiceId, orderId, status, appSecret) {
21
+ try {
22
+ const data = merchantKey + '|' + invoiceId + '|' + orderId + '|' + status;
23
+ const iv = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 16);
24
+ const password = createHash('sha1').update(appSecret).digest('hex');
25
+ const salt = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 4);
26
+ const saltWithPassword = createHash('sha256')
27
+ .update(password + salt)
28
+ .digest('hex')
29
+ .slice(0, 32);
30
+ const cipher = createCipheriv('aes-256-cbc', saltWithPassword, iv);
31
+ let encrypted = cipher.update(data, 'binary', 'base64');
32
+ encrypted += cipher.final('base64');
33
+ const msgBundle = iv + ':' + salt + ':' + encrypted;
34
+ return msgBundle.replace(/\//g, '__');
35
+ }
36
+ catch (error) {
37
+ throw new Error(`Payment completion hash key generation failed: ${error}`);
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=payment-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-completion.js","sourceRoot":"","sources":["../../../src/resources/payment-completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AAU9C,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,cAAyE,EACzE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAA2B,CAAC;QAE3E,wDAAwD;QACxD,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,gCAAgC,CACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EACjC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAChC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,gCAAgC,CACtC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,MAAc,EACd,SAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;YAE1E,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAExF,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC;iBAC1C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACvB,MAAM,CAAC,KAAK,CAAC;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhB,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAEnE,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxD,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEpC,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF"}
@@ -1,10 +1,14 @@
1
1
  import { SipayResource } from './base';
2
+ import { generatePaymentHashKey, generateStatusHashKey, generateConfirmPaymentHashKey, } from '../utils';
2
3
  export class Payments extends SipayResource {
3
4
  /**
4
- * Process a 2D payment (direct payment without 3D Secure)
5
+ * Make a 2D payment (without 3D Secure authentication)
5
6
  */
6
7
  async pay2D(paymentData, options) {
7
8
  const data = this.addMerchantKey(paymentData);
9
+ // Generate hash key for payment verification
10
+ const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, this.client['config'].merchantKey, data.invoice_id, this.client['config'].appSecret);
11
+ data.hash_key = hashKey;
8
12
  return this.post('/api/paySmart2D', data, options);
9
13
  }
10
14
  /**
@@ -30,8 +34,22 @@ export class Payments extends SipayResource {
30
34
  */
31
35
  async checkStatus(statusData, options) {
32
36
  const data = this.addMerchantKey(statusData);
37
+ // Generate hash key for status check
38
+ const hashKey = generateStatusHashKey(data.invoice_id, this.client['config'].merchantKey, this.client['config'].appSecret);
39
+ data.hash_key = hashKey;
33
40
  return this.post('/api/checkstatus', data, options);
34
41
  }
42
+ /**
43
+ * Confirm a pre-authorization payment
44
+ */
45
+ async confirmPayment(confirmData, options) {
46
+ const data = this.addMerchantKey(confirmData);
47
+ // Generate hash key for payment confirmation
48
+ // Hash format: merchant_key|invoice_id|status
49
+ const hashKey = generateConfirmPaymentHashKey(data.merchant_key, data.invoice_id, data.status, this.client['config'].appSecret);
50
+ data.hash_key = hashKey;
51
+ return this.post('/api/confirmPayment', data, options);
52
+ }
35
53
  /**
36
54
  * Refund a payment
37
55
  */
@@ -39,6 +57,21 @@ export class Payments extends SipayResource {
39
57
  const data = this.addMerchantKey(refundData);
40
58
  return this.post('/api/refund', data, options);
41
59
  }
60
+ /**
61
+ * Get merchant active installments
62
+ * Note: This endpoint uses Bearer token authentication
63
+ */
64
+ async getInstallments(options) {
65
+ // This endpoint doesn't require request body, only headers with Bearer token
66
+ return this.post('/api/installments', {}, options);
67
+ }
68
+ /**
69
+ * Get authentication token
70
+ * Used for Bearer token authentication in certain endpoints
71
+ */
72
+ async getToken(tokenData, options) {
73
+ return this.post('/api/token', tokenData, options);
74
+ }
42
75
  /**
43
76
  * Legacy 2D payment method (maintains compatibility)
44
77
  */
@@ -1 +1 @@
1
- {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/resources/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAYvC,MAAM,OAAO,QAAS,SAAQ,aAAa;IACzC;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,WAAmD,EACnD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CACT,WAAmD,EACnD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,OAA4C,EAC5C,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;YAC/B,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAAoD,EACpD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA+C,EAC/C,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,WAAmD,EACnD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/resources/payments.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,8 @@
1
1
  import { SipayResource } from './base';
2
+ // Note: Recurring payment functionality is handled through the regular payment endpoints
3
+ // by including recurring parameters (recurring_payment_number, recurring_payment_cycle,
4
+ // recurring_payment_interval, recurring_web_hook_key) in the payment request.
5
+ // See the Payment2DRequest and Payment3DRequest interfaces for these parameters.
2
6
  export class Recurring extends SipayResource {
3
- /**
4
- * Query recurring payment information
5
- */
6
- async query(queryData, options) {
7
- return this.post('/api/QueryRecurring', queryData, options);
8
- }
9
- /**
10
- * Process a recurring payment plan
11
- */
12
- async processPlan(planData, options) {
13
- return this.post('/api/recurring/plan/process', planData, options);
14
- }
15
7
  }
16
8
  //# sourceMappingURL=recurring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recurring.js","sourceRoot":"","sources":["../../../src/resources/recurring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAQvC,MAAM,OAAO,SAAU,SAAQ,aAAa;IAC1C;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,SAAgC,EAChC,OAAwB;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAqC,EACrC,OAAwB;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;CACF"}
1
+ {"version":3,"file":"recurring.js","sourceRoot":"","sources":["../../../src/resources/recurring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,yFAAyF;AACzF,wFAAwF;AACxF,8EAA8E;AAC9E,iFAAiF;AAEjF,MAAM,OAAO,SAAU,SAAQ,aAAa;CAK3C"}
@@ -0,0 +1,84 @@
1
+ import { SipayResource } from './base';
2
+ import { generateHashKey } from '../utils';
3
+ export class SubMerchant extends SipayResource {
4
+ /**
5
+ * Add a new standard sub merchant
6
+ */
7
+ async add(subMerchantData, options) {
8
+ const data = this.addMerchantKey(subMerchantData);
9
+ return this.post('/api/sub-merchant/add', data, options);
10
+ }
11
+ /**
12
+ * Edit a standard sub merchant
13
+ */
14
+ async edit(editData, options) {
15
+ const data = this.addMerchantKey(editData);
16
+ return this.post('/api/sub-merchant/edit', data, options);
17
+ }
18
+ /**
19
+ * Delete a standard sub merchant
20
+ */
21
+ async delete(deleteData, options) {
22
+ const data = this.addMerchantKey(deleteData);
23
+ return this.post('/api/sub-merchant/delete', data, options);
24
+ }
25
+ /**
26
+ * List all standard sub merchants
27
+ */
28
+ async list(listData, options) {
29
+ const data = this.addMerchantKey(listData || {});
30
+ return this.post('/api/sub-merchant/list', data, options);
31
+ }
32
+ /**
33
+ * Add a new sub merchant PF (Physical Person)
34
+ */
35
+ async addPF(subMerchantData, options) {
36
+ const data = this.addMerchantKey(subMerchantData);
37
+ return this.post('/api/addSubMerchantPF', data, options);
38
+ }
39
+ /**
40
+ * Delete a sub merchant PF
41
+ */
42
+ async deletePF(deleteData, options) {
43
+ const data = this.addMerchantKey(deleteData);
44
+ return this.post('/api/deleteSubMerchantPF', data, options);
45
+ }
46
+ /**
47
+ * View details of a sub merchant PF
48
+ */
49
+ async viewPF(viewData, options) {
50
+ const data = this.addMerchantKey(viewData);
51
+ return this.post('/api/subMerchantPF/view', data, options);
52
+ }
53
+ /**
54
+ * List all sub merchants PF
55
+ */
56
+ async listPF(listData, options) {
57
+ const data = this.addMerchantKey(listData || {});
58
+ return this.post('/api/listSubMerchantPF', data, options);
59
+ }
60
+ /**
61
+ * Make payout to sub merchants
62
+ * Hash format: sub_merchant_id|currency_code|amount for each payout item
63
+ */
64
+ async payout(payoutData, options) {
65
+ const data = this.addMerchantKey(payoutData);
66
+ // Generate hash key for payout
67
+ // According to the spec: $data = $submerchant.'|'.$currency_code.'|'.$amount;
68
+ // We need to generate hash for the first payout item (or combined if multiple)
69
+ if (data.payout_data && data.payout_data.length > 0) {
70
+ const firstPayout = data.payout_data[0];
71
+ const hashParts = [
72
+ firstPayout.sub_merchant_id,
73
+ firstPayout.currency_code,
74
+ firstPayout.amount,
75
+ ];
76
+ data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
77
+ }
78
+ else {
79
+ throw new Error('Payout data is required');
80
+ }
81
+ return this.post('/ccpayment/api/marketplace/sub-merchant/payout', data, options);
82
+ }
83
+ }
84
+ //# sourceMappingURL=sub-merchant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub-merchant.js","sourceRoot":"","sources":["../../../src/resources/sub-merchant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAcvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAyG3C,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,eAA4D,EAC5D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,QAAsD,EACtD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,QAAuD,EACvD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,eAA8D,EAC9D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,UAA4D,EAC5D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,QAAwD,EACxD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,QAAyD,EACzD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,UAA4D,EAC5D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAkB,CAAC;QAE9D,+BAA+B;QAC/B,8EAA8E;QAC9E,+EAA+E;QAC/E,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG;gBAChB,WAAW,CAAC,eAAe;gBAC3B,WAAW,CAAC,aAAa;gBACzB,WAAW,CAAC,MAAM;aACnB,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;CACF"}
@@ -1,2 +1,3 @@
1
- export {};
1
+ // Export status codes
2
+ export * from './status-codes';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AA+iBA,sBAAsB;AACtB,cAAc,gBAAgB,CAAC"}