@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
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Sipay API Status Codes
3
+ * Based on official API documentation
4
+ */
5
+ // Server HTTP Status Codes
6
+ export var SipayHttpStatusCode;
7
+ (function (SipayHttpStatusCode) {
8
+ SipayHttpStatusCode[SipayHttpStatusCode["OK"] = 200] = "OK";
9
+ SipayHttpStatusCode[SipayHttpStatusCode["CREATED"] = 201] = "CREATED";
10
+ SipayHttpStatusCode[SipayHttpStatusCode["ACCEPTED"] = 202] = "ACCEPTED";
11
+ SipayHttpStatusCode[SipayHttpStatusCode["BAD_REQUEST"] = 400] = "BAD_REQUEST";
12
+ SipayHttpStatusCode[SipayHttpStatusCode["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
13
+ SipayHttpStatusCode[SipayHttpStatusCode["FORBIDDEN"] = 403] = "FORBIDDEN";
14
+ SipayHttpStatusCode[SipayHttpStatusCode["NOT_FOUND"] = 404] = "NOT_FOUND";
15
+ SipayHttpStatusCode[SipayHttpStatusCode["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
16
+ SipayHttpStatusCode[SipayHttpStatusCode["CONFLICT"] = 409] = "CONFLICT";
17
+ SipayHttpStatusCode[SipayHttpStatusCode["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
18
+ SipayHttpStatusCode[SipayHttpStatusCode["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
19
+ SipayHttpStatusCode[SipayHttpStatusCode["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
20
+ SipayHttpStatusCode[SipayHttpStatusCode["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
21
+ SipayHttpStatusCode[SipayHttpStatusCode["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
22
+ })(SipayHttpStatusCode || (SipayHttpStatusCode = {}));
23
+ // Application Status Codes
24
+ export var SipayStatusCode;
25
+ (function (SipayStatusCode) {
26
+ // Validation and Basic Errors
27
+ SipayStatusCode[SipayStatusCode["BASIC_VALIDATION"] = 1] = "BASIC_VALIDATION";
28
+ SipayStatusCode[SipayStatusCode["INVOICE_ID_ALREADY_PROCESSED"] = 3] = "INVOICE_ID_ALREADY_PROCESSED";
29
+ SipayStatusCode[SipayStatusCode["ITEMS_VALIDATION_ERROR"] = 12] = "ITEMS_VALIDATION_ERROR";
30
+ SipayStatusCode[SipayStatusCode["PRICE_TOTAL_MISMATCH"] = 13] = "PRICE_TOTAL_MISMATCH";
31
+ SipayStatusCode[SipayStatusCode["MERCHANT_NOT_FOUND"] = 14] = "MERCHANT_NOT_FOUND";
32
+ // Authentication and Authorization
33
+ SipayStatusCode[SipayStatusCode["INVALID_CREDENTIALS"] = 30] = "INVALID_CREDENTIALS";
34
+ SipayStatusCode[SipayStatusCode["TRANSACTION_NOT_FOUND"] = 31] = "TRANSACTION_NOT_FOUND";
35
+ SipayStatusCode[SipayStatusCode["INVALID_INVOICE_ID"] = 32] = "INVALID_INVOICE_ID";
36
+ SipayStatusCode[SipayStatusCode["QUANTITY_MUST_BE_INTEGER"] = 33] = "QUANTITY_MUST_BE_INTEGER";
37
+ SipayStatusCode[SipayStatusCode["PAYMENT_INTEGRATION_NOT_ALLOWED"] = 34] = "PAYMENT_INTEGRATION_NOT_ALLOWED";
38
+ SipayStatusCode[SipayStatusCode["CREDIT_CARD_PAYMENT_NOT_DEFINED"] = 35] = "CREDIT_CARD_PAYMENT_NOT_DEFINED";
39
+ // POS and Commission Errors
40
+ SipayStatusCode[SipayStatusCode["POS_NOT_FOUND"] = 36] = "POS_NOT_FOUND";
41
+ SipayStatusCode[SipayStatusCode["MERCHANT_POS_COMMISSION_NOT_SET"] = 37] = "MERCHANT_POS_COMMISSION_NOT_SET";
42
+ SipayStatusCode[SipayStatusCode["MERCHANT_COMMISSION_NOT_DETERMINED"] = 38] = "MERCHANT_COMMISSION_NOT_DETERMINED";
43
+ SipayStatusCode[SipayStatusCode["COMMISSION_NOT_FOUND"] = 39] = "COMMISSION_NOT_FOUND";
44
+ SipayStatusCode[SipayStatusCode["INSTALLMENT_NOT_FOUND"] = 40] = "INSTALLMENT_NOT_FOUND";
45
+ // Payment Errors
46
+ SipayStatusCode[SipayStatusCode["ORDER_FAILED"] = 41] = "ORDER_FAILED";
47
+ SipayStatusCode[SipayStatusCode["PAYMENT_FAILED"] = 41] = "PAYMENT_FAILED";
48
+ SipayStatusCode[SipayStatusCode["PRODUCT_PRICE_LESS_THAN_COMMISSION"] = 42] = "PRODUCT_PRICE_LESS_THAN_COMMISSION";
49
+ SipayStatusCode[SipayStatusCode["PAYMENT_TERM_NOT_SET"] = 43] = "PAYMENT_TERM_NOT_SET";
50
+ SipayStatusCode[SipayStatusCode["CREDIT_CARD_BLOCKED"] = 44] = "CREDIT_CARD_BLOCKED";
51
+ SipayStatusCode[SipayStatusCode["MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED"] = 44] = "MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED";
52
+ SipayStatusCode[SipayStatusCode["MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED"] = 45] = "MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED";
53
+ SipayStatusCode[SipayStatusCode["MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED"] = 46] = "MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED";
54
+ SipayStatusCode[SipayStatusCode["MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED"] = 47] = "MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED";
55
+ SipayStatusCode[SipayStatusCode["MINIMUM_TRANSACTION_LIMIT_VIOLATED"] = 48] = "MINIMUM_TRANSACTION_LIMIT_VIOLATED";
56
+ SipayStatusCode[SipayStatusCode["REFUND_FAILED"] = 49] = "REFUND_FAILED";
57
+ SipayStatusCode[SipayStatusCode["MAXIMUM_TRANSACTION_LIMIT_VIOLATED"] = 49] = "MAXIMUM_TRANSACTION_LIMIT_VIOLATED";
58
+ // Recurring Payment Errors
59
+ SipayStatusCode[SipayStatusCode["RECURRING_PAYMENT_VALIDATION_ERROR"] = 55] = "RECURRING_PAYMENT_VALIDATION_ERROR";
60
+ SipayStatusCode[SipayStatusCode["INVALID_SALE_WEBHOOK_KEY"] = 56] = "INVALID_SALE_WEBHOOK_KEY";
61
+ // Card and Merchant Restrictions
62
+ SipayStatusCode[SipayStatusCode["MERCHANT_CARD_TRANSACTION_NOT_ALLOWED"] = 60] = "MERCHANT_CARD_TRANSACTION_NOT_ALLOWED";
63
+ // Hash Key Errors
64
+ SipayStatusCode[SipayStatusCode["HASH_KEY_VALIDATION_ERROR"] = 68] = "HASH_KEY_VALIDATION_ERROR";
65
+ SipayStatusCode[SipayStatusCode["ORDER_NOT_YET_PROCESSED"] = 69] = "ORDER_NOT_YET_PROCESSED";
66
+ SipayStatusCode[SipayStatusCode["CARD_PROGRAM_MISMATCH"] = 70] = "CARD_PROGRAM_MISMATCH";
67
+ // Recurring Plan Errors
68
+ SipayStatusCode[SipayStatusCode["RECURRING_PLAN_UPDATE_FAILED"] = 71] = "RECURRING_PLAN_UPDATE_FAILED";
69
+ SipayStatusCode[SipayStatusCode["FAILED_TO_DELETE"] = 72] = "FAILED_TO_DELETE";
70
+ SipayStatusCode[SipayStatusCode["FAILED_TO_ADD_DUPLICATE_PLAN_CARD"] = 73] = "FAILED_TO_ADD_DUPLICATE_PLAN_CARD";
71
+ // Foreign Card Errors
72
+ SipayStatusCode[SipayStatusCode["FOREIGN_CARDS_NOT_ALLOWED"] = 76] = "FOREIGN_CARDS_NOT_ALLOWED";
73
+ SipayStatusCode[SipayStatusCode["NO_FOREIGN_CARD_COMMISSION"] = 77] = "NO_FOREIGN_CARD_COMMISSION";
74
+ // Token Payment Errors
75
+ SipayStatusCode[SipayStatusCode["MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT"] = 79] = "MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT";
76
+ SipayStatusCode[SipayStatusCode["SUB_MERCHANT_NOT_FOUND"] = 80] = "SUB_MERCHANT_NOT_FOUND";
77
+ SipayStatusCode[SipayStatusCode["CURRENCY_CONVERSION_FAILED"] = 81] = "CURRENCY_CONVERSION_FAILED";
78
+ // Card Token Errors
79
+ SipayStatusCode[SipayStatusCode["INVALID_CHARACTER"] = 85] = "INVALID_CHARACTER";
80
+ SipayStatusCode[SipayStatusCode["CARD_TOKEN_SAVE_FAILED"] = 86] = "CARD_TOKEN_SAVE_FAILED";
81
+ SipayStatusCode[SipayStatusCode["INVALID_TOKEN_OR_CLIENT_NUMBER"] = 87] = "INVALID_TOKEN_OR_CLIENT_NUMBER";
82
+ SipayStatusCode[SipayStatusCode["FAILED_TO_DELETE_CARD_TOKEN"] = 88] = "FAILED_TO_DELETE_CARD_TOKEN";
83
+ SipayStatusCode[SipayStatusCode["FAILED_TO_UPDATE_CARD_TOKEN"] = 89] = "FAILED_TO_UPDATE_CARD_TOKEN";
84
+ // Hash Key Specific Errors
85
+ SipayStatusCode[SipayStatusCode["INVALID_HASH_KEY"] = 90] = "INVALID_HASH_KEY";
86
+ SipayStatusCode[SipayStatusCode["HASH_KEY_MERCHANT_KEY_MISMATCH"] = 91] = "HASH_KEY_MERCHANT_KEY_MISMATCH";
87
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CUSTOMER_NUMBER_MISMATCH"] = 92] = "HASH_KEY_CUSTOMER_NUMBER_MISMATCH";
88
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_HOLDER_NAME_MISMATCH"] = 93] = "HASH_KEY_CARD_HOLDER_NAME_MISMATCH";
89
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_NUMBER_MISMATCH"] = 94] = "HASH_KEY_CARD_NUMBER_MISMATCH";
90
+ SipayStatusCode[SipayStatusCode["HASH_KEY_EXPIRY_MONTH_MISMATCH"] = 95] = "HASH_KEY_EXPIRY_MONTH_MISMATCH";
91
+ SipayStatusCode[SipayStatusCode["HASH_KEY_EXPIRY_YEAR_MISMATCH"] = 96] = "HASH_KEY_EXPIRY_YEAR_MISMATCH";
92
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_TOKEN_MISMATCH"] = 97] = "HASH_KEY_CARD_TOKEN_MISMATCH";
93
+ // General Status Codes
94
+ SipayStatusCode[SipayStatusCode["UNKNOWN_ERROR"] = 99] = "UNKNOWN_ERROR";
95
+ SipayStatusCode[SipayStatusCode["SUCCESSFUL"] = 100] = "SUCCESSFUL";
96
+ SipayStatusCode[SipayStatusCode["REFUND_REQUEST_CREATED"] = 101] = "REFUND_REQUEST_CREATED";
97
+ SipayStatusCode[SipayStatusCode["POS_NOT_DEFINED"] = 102] = "POS_NOT_DEFINED";
98
+ SipayStatusCode[SipayStatusCode["PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED"] = 103] = "PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED";
99
+ SipayStatusCode[SipayStatusCode["RETURN_TRANSACTION_ID_MUST_BE_UNIQUE"] = 104] = "RETURN_TRANSACTION_ID_MUST_BE_UNIQUE";
100
+ SipayStatusCode[SipayStatusCode["TRANSACTION_NOT_APPROVED"] = 105] = "TRANSACTION_NOT_APPROVED";
101
+ SipayStatusCode[SipayStatusCode["INVALID_MERCHANT_TYPE"] = 106] = "INVALID_MERCHANT_TYPE";
102
+ SipayStatusCode[SipayStatusCode["FAILED_TO_VERIFY_API_OPT"] = 107] = "FAILED_TO_VERIFY_API_OPT";
103
+ SipayStatusCode[SipayStatusCode["INVALID_CARD_NUMBER"] = 108] = "INVALID_CARD_NUMBER";
104
+ SipayStatusCode[SipayStatusCode["FILE_PROCESSING_ERROR"] = 109] = "FILE_PROCESSING_ERROR";
105
+ SipayStatusCode[SipayStatusCode["PARTIAL_RETURNS_NOT_ALLOWED"] = 110] = "PARTIAL_RETURNS_NOT_ALLOWED";
106
+ SipayStatusCode[SipayStatusCode["PARTIALLY_SUCCESSFUL"] = 112] = "PARTIALLY_SUCCESSFUL";
107
+ SipayStatusCode[SipayStatusCode["INVOICE_ID_ALREADY_PROCESSED_ALT"] = 117] = "INVOICE_ID_ALREADY_PROCESSED_ALT";
108
+ SipayStatusCode[SipayStatusCode["CANCELLATION_URL_SHOULD_NOT_BE_BLANK"] = 404] = "CANCELLATION_URL_SHOULD_NOT_BE_BLANK";
109
+ })(SipayStatusCode || (SipayStatusCode = {}));
110
+ // Status Code Descriptions
111
+ export const SipayStatusDescriptions = {
112
+ [SipayStatusCode.BASIC_VALIDATION]: 'Basic validation',
113
+ [SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED]: 'Invoice ID already processed. Order with this invoice ID process continues, Please wait or create order with new invoice id',
114
+ [SipayStatusCode.ITEMS_VALIDATION_ERROR]: 'Items must be an array, Invalid Currency code, Invalid item format',
115
+ [SipayStatusCode.PRICE_TOTAL_MISMATCH]: 'The sum of your product price does not equal the total of the invoice',
116
+ [SipayStatusCode.MERCHANT_NOT_FOUND]: 'Merchant not found!',
117
+ [SipayStatusCode.INVALID_CREDENTIALS]: 'Invalid Credentials',
118
+ [SipayStatusCode.TRANSACTION_NOT_FOUND]: 'Transaction not found',
119
+ [SipayStatusCode.INVALID_INVOICE_ID]: 'Invalid invoice ID, order not completed',
120
+ [SipayStatusCode.QUANTITY_MUST_BE_INTEGER]: 'Quantity must be integer',
121
+ [SipayStatusCode.PAYMENT_INTEGRATION_NOT_ALLOWED]: 'Payment integration method not allowed. Please contact support.',
122
+ [SipayStatusCode.CREDIT_CARD_PAYMENT_NOT_DEFINED]: 'Credit Card Payment Option not defined',
123
+ [SipayStatusCode.POS_NOT_FOUND]: 'Pos not found',
124
+ [SipayStatusCode.MERCHANT_POS_COMMISSION_NOT_SET]: 'Merchant Pos Commission has not been set. Please contact the service provider.',
125
+ [SipayStatusCode.MERCHANT_COMMISSION_NOT_DETERMINED]: 'Merchant Commission has not been determined for this currency and payment method. Please try another payment method',
126
+ [SipayStatusCode.COMMISSION_NOT_FOUND]: 'Commission not found',
127
+ [SipayStatusCode.INSTALLMENT_NOT_FOUND]: 'Installment not found',
128
+ [SipayStatusCode.ORDER_FAILED]: 'Order failed / Payment failed',
129
+ [SipayStatusCode.PRODUCT_PRICE_LESS_THAN_COMMISSION]: 'Product price less than commission, Product price less than cost',
130
+ [SipayStatusCode.PAYMENT_TERM_NOT_SET]: 'Payment term not set',
131
+ [SipayStatusCode.CREDIT_CARD_BLOCKED]: 'This credit card has been blocked. Merchant daily transaction limit exceeded',
132
+ [SipayStatusCode.MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED]: 'Merchant daily transaction amount limit exceeded',
133
+ [SipayStatusCode.MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED]: 'Merchant monthly transaction number limit exceeded',
134
+ [SipayStatusCode.MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED]: 'Merchant monthly transaction amount limit exceeded',
135
+ [SipayStatusCode.MINIMUM_TRANSACTION_LIMIT_VIOLATED]: 'Minimum transaction limit per transaction violated',
136
+ [SipayStatusCode.REFUND_FAILED]: 'Refund Failed. The total refund amount must not exceed the net amount. No Sales Transaction Found. Insufficient Balance. Non-refundable transaction status. Please wait at least 30 seconds for another refund. Maximum transaction limit per transaction violated',
137
+ [SipayStatusCode.RECURRING_PAYMENT_VALIDATION_ERROR]: 'There can be no installment sales in recurring payment. Duplicate number cannot be empty. The duplicate number must be an integer. Duplicate number must be greater than 1. The duplicate number must not be greater than 121. The iterative loop cannot be empty. The repeating loop unit is not valid.Must be "D", "M" or "Y". Duplicate range cannot be empty. The repeating range must be an integer. The repeating range must be greater than 0. The repeating range should not be greater than 99. Invalid duplicate webhook key! Please check the key name in Sipay. Duplicate webhook key cannot be empty. Please assign your webhook key to Sipay',
138
+ [SipayStatusCode.INVALID_SALE_WEBHOOK_KEY]: 'Invalid sale webhook key! Please check the key name in Sipay',
139
+ [SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED]: 'The merchant is not allowed to make transactions using this card.',
140
+ [SipayStatusCode.HASH_KEY_VALIDATION_ERROR]: 'Total amount mismatch with hash key. Currency mismatch with hash key. Hash key and merchant key mismatch. Installment number mismatch with hash key. Hash key and pos ID mismatch. Invoice ID mismatch with hash key',
141
+ [SipayStatusCode.ORDER_NOT_YET_PROCESSED]: 'Order not yet processed',
142
+ [SipayStatusCode.CARD_PROGRAM_MISMATCH]: 'Card program mismatch',
143
+ [SipayStatusCode.RECURRING_PLAN_UPDATE_FAILED]: 'Recurring plan update failed, Invalid Response or Unknown Error',
144
+ [SipayStatusCode.FAILED_TO_DELETE]: 'Failed to delete, Failed to process old payment',
145
+ [SipayStatusCode.FAILED_TO_ADD_DUPLICATE_PLAN_CARD]: 'Failed to add duplicate plan card, Invalid Response or Unknown Error',
146
+ [SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED]: 'Foreign Cards Are Not Allowed For This Merchant.',
147
+ [SipayStatusCode.NO_FOREIGN_CARD_COMMISSION]: 'No Foreign Card Commission has been determined for this Merchant.',
148
+ [SipayStatusCode.MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT]: 'The merchant is not allowed to pay with card tokens.',
149
+ [SipayStatusCode.SUB_MERCHANT_NOT_FOUND]: 'Sub-merchant not found',
150
+ [SipayStatusCode.CURRENCY_CONVERSION_FAILED]: 'Currency conversion from API failed',
151
+ [SipayStatusCode.INVALID_CHARACTER]: 'Invalid character',
152
+ [SipayStatusCode.CARD_TOKEN_SAVE_FAILED]: 'Card token save failed',
153
+ [SipayStatusCode.INVALID_TOKEN_OR_CLIENT_NUMBER]: 'Invalid token or client number',
154
+ [SipayStatusCode.FAILED_TO_DELETE_CARD_TOKEN]: 'Failed to delete card token',
155
+ [SipayStatusCode.FAILED_TO_UPDATE_CARD_TOKEN]: 'Failed to update card token',
156
+ [SipayStatusCode.INVALID_HASH_KEY]: 'Invalid Hash key',
157
+ [SipayStatusCode.HASH_KEY_MERCHANT_KEY_MISMATCH]: 'Hash key that does not match the Merchant key',
158
+ [SipayStatusCode.HASH_KEY_CUSTOMER_NUMBER_MISMATCH]: 'Hash key that does not match the customer number',
159
+ [SipayStatusCode.HASH_KEY_CARD_HOLDER_NAME_MISMATCH]: "Hash key that does not match the Card Holder's Name",
160
+ [SipayStatusCode.HASH_KEY_CARD_NUMBER_MISMATCH]: 'Hash key that does not match the Card Number',
161
+ [SipayStatusCode.HASH_KEY_EXPIRY_MONTH_MISMATCH]: 'Hash key that does not match expiration month',
162
+ [SipayStatusCode.HASH_KEY_EXPIRY_YEAR_MISMATCH]: 'Hash key that does not match expiry year',
163
+ [SipayStatusCode.HASH_KEY_CARD_TOKEN_MISMATCH]: 'Hash key that does not match the card token',
164
+ [SipayStatusCode.UNKNOWN_ERROR]: 'Unknown Error',
165
+ [SipayStatusCode.SUCCESSFUL]: 'Successful',
166
+ [SipayStatusCode.REFUND_REQUEST_CREATED]: 'Your refund request has been successfully created. Our team will complete the return process',
167
+ [SipayStatusCode.POS_NOT_DEFINED]: 'Pos not defined, no Pos found for this installment',
168
+ [SipayStatusCode.PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED]: 'Payby token commission rate not established',
169
+ [SipayStatusCode.RETURN_TRANSACTION_ID_MUST_BE_UNIQUE]: 'Return transaction ID must be unique',
170
+ [SipayStatusCode.TRANSACTION_NOT_APPROVED]: 'The transaction has not been approved',
171
+ [SipayStatusCode.INVALID_MERCHANT_TYPE]: 'Invalid merchant type',
172
+ [SipayStatusCode.FAILED_TO_VERIFY_API_OPT]: 'Failed to verify submitted API opt',
173
+ [SipayStatusCode.INVALID_CARD_NUMBER]: 'Invalid card number',
174
+ [SipayStatusCode.FILE_PROCESSING_ERROR]: 'File processing error',
175
+ [SipayStatusCode.PARTIAL_RETURNS_NOT_ALLOWED]: 'Partial returns are not allowed for this transaction.',
176
+ [SipayStatusCode.PARTIALLY_SUCCESSFUL]: 'Partially successful',
177
+ [SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT]: 'The invoice id already processed',
178
+ [SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK]: 'Cancellation URL should not be blank',
179
+ };
180
+ // Status Code Categories
181
+ export var SipayStatusCategory;
182
+ (function (SipayStatusCategory) {
183
+ SipayStatusCategory["SUCCESS"] = "success";
184
+ SipayStatusCategory["VALIDATION_ERROR"] = "validation_error";
185
+ SipayStatusCategory["AUTHENTICATION_ERROR"] = "authentication_error";
186
+ SipayStatusCategory["PAYMENT_ERROR"] = "payment_error";
187
+ SipayStatusCategory["MERCHANT_ERROR"] = "merchant_error";
188
+ SipayStatusCategory["CARD_ERROR"] = "card_error";
189
+ SipayStatusCategory["HASH_ERROR"] = "hash_error";
190
+ SipayStatusCategory["RECURRING_ERROR"] = "recurring_error";
191
+ SipayStatusCategory["SYSTEM_ERROR"] = "system_error";
192
+ })(SipayStatusCategory || (SipayStatusCategory = {}));
193
+ /**
194
+ * Categorize status codes for better error handling
195
+ */
196
+ export function getStatusCategory(statusCode) {
197
+ switch (statusCode) {
198
+ case SipayStatusCode.SUCCESSFUL:
199
+ case SipayStatusCode.REFUND_REQUEST_CREATED:
200
+ case SipayStatusCode.PARTIALLY_SUCCESSFUL:
201
+ return SipayStatusCategory.SUCCESS;
202
+ case SipayStatusCode.BASIC_VALIDATION:
203
+ case SipayStatusCode.ITEMS_VALIDATION_ERROR:
204
+ case SipayStatusCode.PRICE_TOTAL_MISMATCH:
205
+ case SipayStatusCode.QUANTITY_MUST_BE_INTEGER:
206
+ case SipayStatusCode.INVALID_INVOICE_ID:
207
+ case SipayStatusCode.INVALID_CHARACTER:
208
+ case SipayStatusCode.INVALID_CARD_NUMBER:
209
+ case SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK:
210
+ return SipayStatusCategory.VALIDATION_ERROR;
211
+ case SipayStatusCode.INVALID_CREDENTIALS:
212
+ case SipayStatusCode.PAYMENT_INTEGRATION_NOT_ALLOWED:
213
+ case SipayStatusCode.MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT:
214
+ case SipayStatusCode.INVALID_TOKEN_OR_CLIENT_NUMBER:
215
+ return SipayStatusCategory.AUTHENTICATION_ERROR;
216
+ case SipayStatusCode.ORDER_FAILED:
217
+ case SipayStatusCode.PAYMENT_FAILED:
218
+ case SipayStatusCode.PAYMENT_TERM_NOT_SET:
219
+ case SipayStatusCode.REFUND_FAILED:
220
+ case SipayStatusCode.TRANSACTION_NOT_FOUND:
221
+ case SipayStatusCode.ORDER_NOT_YET_PROCESSED:
222
+ case SipayStatusCode.TRANSACTION_NOT_APPROVED:
223
+ return SipayStatusCategory.PAYMENT_ERROR;
224
+ case SipayStatusCode.MERCHANT_NOT_FOUND:
225
+ case SipayStatusCode.MERCHANT_POS_COMMISSION_NOT_SET:
226
+ case SipayStatusCode.MERCHANT_COMMISSION_NOT_DETERMINED:
227
+ case SipayStatusCode.MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED:
228
+ case SipayStatusCode.MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED:
229
+ case SipayStatusCode.MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED:
230
+ case SipayStatusCode.MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED:
231
+ case SipayStatusCode.MINIMUM_TRANSACTION_LIMIT_VIOLATED:
232
+ case SipayStatusCode.SUB_MERCHANT_NOT_FOUND:
233
+ case SipayStatusCode.INVALID_MERCHANT_TYPE:
234
+ return SipayStatusCategory.MERCHANT_ERROR;
235
+ case SipayStatusCode.CREDIT_CARD_BLOCKED:
236
+ case SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED:
237
+ case SipayStatusCode.CARD_PROGRAM_MISMATCH:
238
+ case SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED:
239
+ case SipayStatusCode.NO_FOREIGN_CARD_COMMISSION:
240
+ case SipayStatusCode.CARD_TOKEN_SAVE_FAILED:
241
+ case SipayStatusCode.FAILED_TO_DELETE_CARD_TOKEN:
242
+ case SipayStatusCode.FAILED_TO_UPDATE_CARD_TOKEN:
243
+ return SipayStatusCategory.CARD_ERROR;
244
+ case SipayStatusCode.HASH_KEY_VALIDATION_ERROR:
245
+ case SipayStatusCode.INVALID_HASH_KEY:
246
+ case SipayStatusCode.HASH_KEY_MERCHANT_KEY_MISMATCH:
247
+ case SipayStatusCode.HASH_KEY_CUSTOMER_NUMBER_MISMATCH:
248
+ case SipayStatusCode.HASH_KEY_CARD_HOLDER_NAME_MISMATCH:
249
+ case SipayStatusCode.HASH_KEY_CARD_NUMBER_MISMATCH:
250
+ case SipayStatusCode.HASH_KEY_EXPIRY_MONTH_MISMATCH:
251
+ case SipayStatusCode.HASH_KEY_EXPIRY_YEAR_MISMATCH:
252
+ case SipayStatusCode.HASH_KEY_CARD_TOKEN_MISMATCH:
253
+ return SipayStatusCategory.HASH_ERROR;
254
+ case SipayStatusCode.RECURRING_PAYMENT_VALIDATION_ERROR:
255
+ case SipayStatusCode.RECURRING_PLAN_UPDATE_FAILED:
256
+ case SipayStatusCode.FAILED_TO_ADD_DUPLICATE_PLAN_CARD:
257
+ return SipayStatusCategory.RECURRING_ERROR;
258
+ default:
259
+ return SipayStatusCategory.SYSTEM_ERROR;
260
+ }
261
+ }
262
+ /**
263
+ * Check if a status code indicates success
264
+ */
265
+ export function isSuccessStatus(statusCode) {
266
+ return getStatusCategory(statusCode) === SipayStatusCategory.SUCCESS;
267
+ }
268
+ /**
269
+ * Check if a status code indicates an error
270
+ */
271
+ export function isErrorStatus(statusCode) {
272
+ return !isSuccessStatus(statusCode);
273
+ }
274
+ /**
275
+ * Get human-readable description for a status code
276
+ */
277
+ export function getStatusDescription(statusCode) {
278
+ return SipayStatusDescriptions[statusCode] || 'Unknown status code';
279
+ }
280
+ /**
281
+ * Check if status code is retryable (temporary errors)
282
+ */
283
+ export function isRetryableStatus(statusCode) {
284
+ const retryableStatusCodes = [
285
+ SipayStatusCode.ORDER_NOT_YET_PROCESSED,
286
+ SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED,
287
+ SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT,
288
+ SipayStatusCode.MAXIMUM_TRANSACTION_LIMIT_VIOLATED,
289
+ ];
290
+ return retryableStatusCodes.includes(statusCode);
291
+ }
292
+ //# sourceMappingURL=status-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-codes.js","sourceRoot":"","sources":["../../../src/types/status-codes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import axios from 'axios';
2
+ import { getStatusCategory, getStatusDescription, isRetryableStatus, } from '../types';
2
3
  export class SipayHttpClient {
3
4
  constructor(config) {
4
5
  this.config = {
@@ -96,10 +97,20 @@ export class SipayHttpClient {
96
97
  sipayError.type = 'SipayError';
97
98
  if (error.response?.data) {
98
99
  const errorData = error.response.data;
100
+ const statusCode = errorData.status_code;
99
101
  sipayError.message =
100
- errorData.status_description || errorData.message || 'Unknown Sipay error';
101
- sipayError.status_code = errorData.status_code;
102
- sipayError.status_description = errorData.status_description;
102
+ errorData.status_description ||
103
+ errorData.message ||
104
+ getStatusDescription(statusCode) ||
105
+ 'Unknown Sipay error';
106
+ sipayError.status_code = statusCode;
107
+ sipayError.status_description =
108
+ errorData.status_description || getStatusDescription(statusCode);
109
+ // Add status code metadata
110
+ if (statusCode) {
111
+ sipayError.category = getStatusCategory(statusCode);
112
+ sipayError.isRetryable = isRetryableStatus(statusCode);
113
+ }
103
114
  }
104
115
  else if (error.request) {
105
116
  sipayError.message = 'Network error: No response received from Sipay';
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,21 @@
1
1
  import * as crypto from 'crypto';
2
+ const { createHash, createCipheriv, createDecipheriv } = crypto;
2
3
  /**
3
4
  * Utility functions for Sipay SDK
4
5
  */
5
- /**
6
- * Generate hash key for payment requests
7
- * Based on Sipay documentation requirements
8
- */
9
- export function generateHashKey(merchantKey, invoiceId, amount, secretKey) {
10
- const hashString = `${merchantKey}${invoiceId}${amount}${secretKey}`;
11
- return crypto.createHash('sha256').update(hashString).digest('hex');
12
- }
13
6
  /**
14
7
  * Validate credit card number using Luhn algorithm
15
8
  */
16
- export function validateCreditCard(cardNumber) {
17
- const num = cardNumber.replace(/\D/g, '');
18
- // Check if empty or less than 13 digits
19
- if (num.length < 13 || num.length > 19) {
9
+ export function luhnCheck(cardNumber) {
10
+ const digits = cardNumber.replace(/\D/g, '').split('').map(Number);
11
+ // Check minimum length
12
+ if (digits.length < 13 || digits.length > 19) {
20
13
  return false;
21
14
  }
22
15
  let sum = 0;
23
16
  let isEven = false;
24
- for (let i = num.length - 1; i >= 0; i--) {
25
- let digit = parseInt(num.charAt(i), 10);
17
+ for (let i = digits.length - 1; i >= 0; i--) {
18
+ let digit = digits[i];
26
19
  if (isEven) {
27
20
  digit *= 2;
28
21
  if (digit > 9) {
@@ -35,11 +28,100 @@ export function validateCreditCard(cardNumber) {
35
28
  return sum % 10 === 0;
36
29
  }
37
30
  /**
38
- * Format currency amount for Sipay API
31
+ * Validate credit card number (alias for luhnCheck)
32
+ */
33
+ export function validateCreditCard(cardNumber) {
34
+ return luhnCheck(cardNumber);
35
+ }
36
+ /**
37
+ * Mask credit card number for display
38
+ */
39
+ export function maskCardNumber(cardNumber) {
40
+ const cleaned = cardNumber.replace(/\D/g, '');
41
+ if (cleaned.length < 8)
42
+ return cleaned;
43
+ const first4 = cleaned.slice(0, 4);
44
+ const last4 = cleaned.slice(-4);
45
+ const middle = '*'.repeat(cleaned.length - 8);
46
+ return `${first4}${middle}${last4}`;
47
+ }
48
+ /**
49
+ * Format amount for Sipay API - amounts should be sent as numbers, not cents
39
50
  */
40
51
  export function formatAmount(amount) {
52
+ // Amount should be formatted as a float with proper decimal places
53
+ // For amounts like 100.00, it should be "100.00", not "1.00"
54
+ return amount.toFixed(2);
55
+ }
56
+ /**
57
+ * Format amount specifically for hash key generation
58
+ * This should match PHP's number_format($amount, 2, ".", "") exactly
59
+ * PHP always formats with 2 decimal places: 10.00, 125.50, etc.
60
+ */
61
+ export function formatAmountForHash(amount) {
62
+ // Match PHP number_format($amount, 2, ".", "") - always 2 decimal places
41
63
  return amount.toFixed(2);
42
64
  }
65
+ /**
66
+ * Generate hash key for payment requests
67
+ * Order matches PHP SDK CreateNonSecurePaymentRequest::generateHashKeyParts():
68
+ * 1. total, 2. installments_number, 3. currency_code, 4. merchant_key, 5. invoice_id
69
+ */
70
+ export function generatePaymentHashKey(total, installment, currencyCode, merchantKey, invoiceId, apiSecret) {
71
+ const parts = [
72
+ formatAmountForHash(total),
73
+ installment.toString(),
74
+ currencyCode,
75
+ merchantKey,
76
+ invoiceId,
77
+ ];
78
+ return generateHashKey(parts, apiSecret);
79
+ }
80
+ /**
81
+ * Generate hash key for status check requests
82
+ * Order matches PHP SDK CheckTransactionStatusRequest::generateHashKeyParts():
83
+ * 1. invoice_id, 2. merchant_key
84
+ */
85
+ export function generateStatusHashKey(invoiceId, merchantKey, apiSecret) {
86
+ const parts = [invoiceId, merchantKey];
87
+ return generateHashKey(parts, apiSecret);
88
+ }
89
+ /**
90
+ * Generate hash key for payment confirmation requests
91
+ * Order matches PHP SDK: merchant_key|invoice_id|status
92
+ */
93
+ export function generateConfirmPaymentHashKey(merchantKey, invoiceId, status, apiSecret) {
94
+ const parts = [merchantKey, invoiceId, status.toString()];
95
+ return generateHashKey(parts, apiSecret);
96
+ }
97
+ /**
98
+ * Generate hash key for payment requests
99
+ * Exact 1:1 Node.js implementation of PHP's generateHashKey function
100
+ * Matches: $total . '|' . $installment . '|' . $currency_code . '|' . $merchant_key . '|' . $invoice_id
101
+ * with openssl_encrypt('aes-256-cbc') encryption
102
+ */
103
+ export function generateHashKey(parts, appSecret) {
104
+ const data = parts.join('|');
105
+ // Generate IV using SHA1 hash of random value
106
+ const iv = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 16);
107
+ // Generate password using SHA1 hash of app secret
108
+ const password = createHash('sha1').update(appSecret).digest('hex');
109
+ // Generate salt using SHA1 hash of random value
110
+ const salt = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 4);
111
+ // Create encryption key using SHA256 hash of password and salt
112
+ const saltWithPassword = createHash('sha256')
113
+ .update(password + salt)
114
+ .digest('hex')
115
+ .slice(0, 32);
116
+ // Encrypt data using AES-256-CBC
117
+ const cipher = createCipheriv('aes-256-cbc', saltWithPassword, iv);
118
+ let encrypted = cipher.update(data, 'binary', 'base64');
119
+ encrypted += cipher.final('base64');
120
+ // Bundle components and replace forward slashes with double underscores
121
+ let msgEncryptedBundle = `${iv}:${salt}:${encrypted}`;
122
+ msgEncryptedBundle = msgEncryptedBundle.replace(/\//g, '__');
123
+ return msgEncryptedBundle;
124
+ }
43
125
  /**
44
126
  * Generate a unique invoice ID
45
127
  */
@@ -133,4 +215,65 @@ export function parseSipayError(error) {
133
215
  message: error.message || 'Network error',
134
216
  };
135
217
  }
218
+ /**
219
+ * Validate hash key using server-side validation logic
220
+ * This matches exactly what the PHP SDK does for server-side validation
221
+ * Expected decrypted format: status|total|invoiceId|orderId|currencyCode
222
+ */
223
+ export function validateHashKey(hashKey, secretKey) {
224
+ let status = '';
225
+ let currencyCode = '';
226
+ let total = 0;
227
+ let invoiceId = '';
228
+ let orderId = 0;
229
+ if (!hashKey) {
230
+ return [status, total, invoiceId, orderId, currencyCode];
231
+ }
232
+ try {
233
+ // Replace underscores with forward slashes (PHP compatibility)
234
+ const normalizedHashKey = hashKey.replace(/_/g, '/');
235
+ const password = createHash('sha1').update(secretKey).digest('hex');
236
+ const components = normalizedHashKey.split(':');
237
+ if (components.length > 2) {
238
+ const iv = components[0] || '';
239
+ const saltHex = components[1] || '';
240
+ const encryptedMsg = components[2] || '';
241
+ // Generate salt exactly like PHP: hash('sha256', $password . $salt)
242
+ const saltWithPassword = createHash('sha256')
243
+ .update(password + saltHex)
244
+ .digest('hex');
245
+ // Create decipher with proper parameters
246
+ // PHP's openssl_decrypt expects:
247
+ // - IV as raw ASCII bytes (16-char hex string treated as ASCII)
248
+ // - Key as binary from hex string (32 bytes for AES-256)
249
+ const decipher = createDecipheriv('aes-256-cbc', Buffer.from(saltWithPassword, 'hex').slice(0, 32), // 32-byte key from hex
250
+ Buffer.from(iv, 'ascii') // IV: 16-char hex string as ASCII bytes
251
+ );
252
+ let decrypted = decipher.update(encryptedMsg, 'base64', 'utf8');
253
+ decrypted += decipher.final('utf8');
254
+ if (decrypted.includes('|')) {
255
+ const array = decrypted.split('|');
256
+ status = array[0] || '0';
257
+ total = parseFloat(array[1] || '0');
258
+ invoiceId = array[2] || '0';
259
+ orderId = parseInt(array[3] || '0');
260
+ currencyCode = array[4] || '';
261
+ }
262
+ }
263
+ }
264
+ catch {
265
+ // Silently handle decryption errors
266
+ }
267
+ return [status, total, invoiceId, orderId, currencyCode];
268
+ }
269
+ /**
270
+ * Generate hash key in server validation format
271
+ * Server expects: status|total|invoiceId|orderId|currencyCode
272
+ */
273
+ export function generateServerFormatHashKey(status, total, invoiceId, orderId, currencyCode, appSecret) {
274
+ const parts = [status, formatAmountForHash(total), invoiceId, orderId.toString(), currencyCode];
275
+ return generateHashKey(parts, appSecret);
276
+ }
277
+ // Export status code helpers
278
+ export * from './status-code-helpers';
136
279
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}