kotanipay-sdk 1.0.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 (202) hide show
  1. package/README.md +329 -0
  2. package/dist/cjs/client/index.d.ts +2 -0
  3. package/dist/cjs/client/index.d.ts.map +1 -0
  4. package/dist/cjs/client/index.js +18 -0
  5. package/dist/cjs/client/index.js.map +1 -0
  6. package/dist/cjs/client/kotani-pay.client.d.ts +42 -0
  7. package/dist/cjs/client/kotani-pay.client.d.ts.map +1 -0
  8. package/dist/cjs/client/kotani-pay.client.js +61 -0
  9. package/dist/cjs/client/kotani-pay.client.js.map +1 -0
  10. package/dist/cjs/exceptions/index.d.ts +2 -0
  11. package/dist/cjs/exceptions/index.d.ts.map +1 -0
  12. package/dist/cjs/exceptions/index.js +18 -0
  13. package/dist/cjs/exceptions/index.js.map +1 -0
  14. package/dist/cjs/exceptions/kotani-pay.exception.d.ts +31 -0
  15. package/dist/cjs/exceptions/kotani-pay.exception.d.ts.map +1 -0
  16. package/dist/cjs/exceptions/kotani-pay.exception.js +49 -0
  17. package/dist/cjs/exceptions/kotani-pay.exception.js.map +1 -0
  18. package/dist/cjs/index.d.ts +6 -0
  19. package/dist/cjs/index.d.ts.map +1 -0
  20. package/dist/cjs/index.js +25 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/modules/auth/auth.service.d.ts +37 -0
  23. package/dist/cjs/modules/auth/auth.service.d.ts.map +1 -0
  24. package/dist/cjs/modules/auth/auth.service.js +74 -0
  25. package/dist/cjs/modules/auth/auth.service.js.map +1 -0
  26. package/dist/cjs/modules/auth/index.d.ts +2 -0
  27. package/dist/cjs/modules/auth/index.d.ts.map +1 -0
  28. package/dist/cjs/modules/auth/index.js +18 -0
  29. package/dist/cjs/modules/auth/index.js.map +1 -0
  30. package/dist/cjs/modules/index.d.ts +3 -0
  31. package/dist/cjs/modules/index.d.ts.map +1 -0
  32. package/dist/cjs/modules/index.js +19 -0
  33. package/dist/cjs/modules/index.js.map +1 -0
  34. package/dist/cjs/modules/integrator/index.d.ts +2 -0
  35. package/dist/cjs/modules/integrator/index.d.ts.map +1 -0
  36. package/dist/cjs/modules/integrator/index.js +18 -0
  37. package/dist/cjs/modules/integrator/index.js.map +1 -0
  38. package/dist/cjs/modules/integrator/integrator.service.d.ts +10 -0
  39. package/dist/cjs/modules/integrator/integrator.service.d.ts.map +1 -0
  40. package/dist/cjs/modules/integrator/integrator.service.js +33 -0
  41. package/dist/cjs/modules/integrator/integrator.service.js.map +1 -0
  42. package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts +25 -0
  43. package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts.map +1 -0
  44. package/dist/cjs/modules/mobile-money/mobile-money.service.js +70 -0
  45. package/dist/cjs/modules/mobile-money/mobile-money.service.js.map +1 -0
  46. package/dist/cjs/types/authentication.types.d.ts +38 -0
  47. package/dist/cjs/types/authentication.types.d.ts.map +1 -0
  48. package/dist/cjs/types/authentication.types.js +3 -0
  49. package/dist/cjs/types/authentication.types.js.map +1 -0
  50. package/dist/cjs/types/common.types.d.ts +23 -0
  51. package/dist/cjs/types/common.types.d.ts.map +1 -0
  52. package/dist/cjs/types/common.types.js +3 -0
  53. package/dist/cjs/types/common.types.js.map +1 -0
  54. package/dist/cjs/types/error.types.d.ts +12 -0
  55. package/dist/cjs/types/error.types.d.ts.map +1 -0
  56. package/dist/cjs/types/error.types.js +27 -0
  57. package/dist/cjs/types/error.types.js.map +1 -0
  58. package/dist/cjs/types/index.d.ts +6 -0
  59. package/dist/cjs/types/index.d.ts.map +1 -0
  60. package/dist/cjs/types/index.js +22 -0
  61. package/dist/cjs/types/index.js.map +1 -0
  62. package/dist/cjs/types/integrator.types.d.ts +25 -0
  63. package/dist/cjs/types/integrator.types.d.ts.map +1 -0
  64. package/dist/cjs/types/integrator.types.js +3 -0
  65. package/dist/cjs/types/integrator.types.js.map +1 -0
  66. package/dist/cjs/types/mobile-money.types.d.ts +26 -0
  67. package/dist/cjs/types/mobile-money.types.d.ts.map +1 -0
  68. package/dist/cjs/types/mobile-money.types.js +4 -0
  69. package/dist/cjs/types/mobile-money.types.js.map +1 -0
  70. package/dist/cjs/utils/http-client.util.d.ts +32 -0
  71. package/dist/cjs/utils/http-client.util.d.ts.map +1 -0
  72. package/dist/cjs/utils/http-client.util.js +117 -0
  73. package/dist/cjs/utils/http-client.util.js.map +1 -0
  74. package/dist/cjs/utils/index.d.ts +3 -0
  75. package/dist/cjs/utils/index.d.ts.map +1 -0
  76. package/dist/cjs/utils/index.js +19 -0
  77. package/dist/cjs/utils/index.js.map +1 -0
  78. package/dist/cjs/utils/validation.util.d.ts +7 -0
  79. package/dist/cjs/utils/validation.util.d.ts.map +1 -0
  80. package/dist/cjs/utils/validation.util.js +32 -0
  81. package/dist/cjs/utils/validation.util.js.map +1 -0
  82. package/dist/esm/client/index.d.ts +2 -0
  83. package/dist/esm/client/index.d.ts.map +1 -0
  84. package/dist/esm/client/index.js +2 -0
  85. package/dist/esm/client/index.js.map +1 -0
  86. package/dist/esm/client/kotani-pay.client.d.ts +42 -0
  87. package/dist/esm/client/kotani-pay.client.d.ts.map +1 -0
  88. package/dist/esm/client/kotani-pay.client.js +57 -0
  89. package/dist/esm/client/kotani-pay.client.js.map +1 -0
  90. package/dist/esm/exceptions/index.d.ts +2 -0
  91. package/dist/esm/exceptions/index.d.ts.map +1 -0
  92. package/dist/esm/exceptions/index.js +2 -0
  93. package/dist/esm/exceptions/index.js.map +1 -0
  94. package/dist/esm/exceptions/kotani-pay.exception.d.ts +31 -0
  95. package/dist/esm/exceptions/kotani-pay.exception.d.ts.map +1 -0
  96. package/dist/esm/exceptions/kotani-pay.exception.js +43 -0
  97. package/dist/esm/exceptions/kotani-pay.exception.js.map +1 -0
  98. package/dist/esm/index.d.ts +6 -0
  99. package/dist/esm/index.d.ts.map +1 -0
  100. package/dist/esm/index.js +6 -0
  101. package/dist/esm/index.js.map +1 -0
  102. package/dist/esm/modules/auth/auth.service.d.ts +37 -0
  103. package/dist/esm/modules/auth/auth.service.d.ts.map +1 -0
  104. package/dist/esm/modules/auth/auth.service.js +70 -0
  105. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  106. package/dist/esm/modules/auth/index.d.ts +2 -0
  107. package/dist/esm/modules/auth/index.d.ts.map +1 -0
  108. package/dist/esm/modules/auth/index.js +2 -0
  109. package/dist/esm/modules/auth/index.js.map +1 -0
  110. package/dist/esm/modules/index.d.ts +3 -0
  111. package/dist/esm/modules/index.d.ts.map +1 -0
  112. package/dist/esm/modules/index.js +3 -0
  113. package/dist/esm/modules/index.js.map +1 -0
  114. package/dist/esm/modules/integrator/index.d.ts +2 -0
  115. package/dist/esm/modules/integrator/index.d.ts.map +1 -0
  116. package/dist/esm/modules/integrator/index.js +2 -0
  117. package/dist/esm/modules/integrator/index.js.map +1 -0
  118. package/dist/esm/modules/integrator/integrator.service.d.ts +10 -0
  119. package/dist/esm/modules/integrator/integrator.service.d.ts.map +1 -0
  120. package/dist/esm/modules/integrator/integrator.service.js +29 -0
  121. package/dist/esm/modules/integrator/integrator.service.js.map +1 -0
  122. package/dist/esm/modules/mobile-money/mobile-money.service.d.ts +25 -0
  123. package/dist/esm/modules/mobile-money/mobile-money.service.d.ts.map +1 -0
  124. package/dist/esm/modules/mobile-money/mobile-money.service.js +66 -0
  125. package/dist/esm/modules/mobile-money/mobile-money.service.js.map +1 -0
  126. package/dist/esm/types/authentication.types.d.ts +38 -0
  127. package/dist/esm/types/authentication.types.d.ts.map +1 -0
  128. package/dist/esm/types/authentication.types.js +2 -0
  129. package/dist/esm/types/authentication.types.js.map +1 -0
  130. package/dist/esm/types/common.types.d.ts +23 -0
  131. package/dist/esm/types/common.types.d.ts.map +1 -0
  132. package/dist/esm/types/common.types.js +2 -0
  133. package/dist/esm/types/common.types.js.map +1 -0
  134. package/dist/esm/types/error.types.d.ts +12 -0
  135. package/dist/esm/types/error.types.d.ts.map +1 -0
  136. package/dist/esm/types/error.types.js +21 -0
  137. package/dist/esm/types/error.types.js.map +1 -0
  138. package/dist/esm/types/index.d.ts +6 -0
  139. package/dist/esm/types/index.d.ts.map +1 -0
  140. package/dist/esm/types/index.js +6 -0
  141. package/dist/esm/types/index.js.map +1 -0
  142. package/dist/esm/types/integrator.types.d.ts +25 -0
  143. package/dist/esm/types/integrator.types.d.ts.map +1 -0
  144. package/dist/esm/types/integrator.types.js +2 -0
  145. package/dist/esm/types/integrator.types.js.map +1 -0
  146. package/dist/esm/types/mobile-money.types.d.ts +26 -0
  147. package/dist/esm/types/mobile-money.types.d.ts.map +1 -0
  148. package/dist/esm/types/mobile-money.types.js +3 -0
  149. package/dist/esm/types/mobile-money.types.js.map +1 -0
  150. package/dist/esm/utils/http-client.util.d.ts +32 -0
  151. package/dist/esm/utils/http-client.util.d.ts.map +1 -0
  152. package/dist/esm/utils/http-client.util.js +110 -0
  153. package/dist/esm/utils/http-client.util.js.map +1 -0
  154. package/dist/esm/utils/index.d.ts +3 -0
  155. package/dist/esm/utils/index.d.ts.map +1 -0
  156. package/dist/esm/utils/index.js +3 -0
  157. package/dist/esm/utils/index.js.map +1 -0
  158. package/dist/esm/utils/validation.util.d.ts +7 -0
  159. package/dist/esm/utils/validation.util.d.ts.map +1 -0
  160. package/dist/esm/utils/validation.util.js +28 -0
  161. package/dist/esm/utils/validation.util.js.map +1 -0
  162. package/dist/types/client/index.d.ts +2 -0
  163. package/dist/types/client/index.d.ts.map +1 -0
  164. package/dist/types/client/kotani-pay.client.d.ts +42 -0
  165. package/dist/types/client/kotani-pay.client.d.ts.map +1 -0
  166. package/dist/types/exceptions/index.d.ts +2 -0
  167. package/dist/types/exceptions/index.d.ts.map +1 -0
  168. package/dist/types/exceptions/kotani-pay.exception.d.ts +31 -0
  169. package/dist/types/exceptions/kotani-pay.exception.d.ts.map +1 -0
  170. package/dist/types/index.d.ts +6 -0
  171. package/dist/types/index.d.ts.map +1 -0
  172. package/dist/types/modules/auth/auth.service.d.ts +37 -0
  173. package/dist/types/modules/auth/auth.service.d.ts.map +1 -0
  174. package/dist/types/modules/auth/index.d.ts +2 -0
  175. package/dist/types/modules/auth/index.d.ts.map +1 -0
  176. package/dist/types/modules/index.d.ts +3 -0
  177. package/dist/types/modules/index.d.ts.map +1 -0
  178. package/dist/types/modules/integrator/index.d.ts +2 -0
  179. package/dist/types/modules/integrator/index.d.ts.map +1 -0
  180. package/dist/types/modules/integrator/integrator.service.d.ts +10 -0
  181. package/dist/types/modules/integrator/integrator.service.d.ts.map +1 -0
  182. package/dist/types/modules/mobile-money/mobile-money.service.d.ts +25 -0
  183. package/dist/types/modules/mobile-money/mobile-money.service.d.ts.map +1 -0
  184. package/dist/types/types/authentication.types.d.ts +38 -0
  185. package/dist/types/types/authentication.types.d.ts.map +1 -0
  186. package/dist/types/types/common.types.d.ts +23 -0
  187. package/dist/types/types/common.types.d.ts.map +1 -0
  188. package/dist/types/types/error.types.d.ts +12 -0
  189. package/dist/types/types/error.types.d.ts.map +1 -0
  190. package/dist/types/types/index.d.ts +6 -0
  191. package/dist/types/types/index.d.ts.map +1 -0
  192. package/dist/types/types/integrator.types.d.ts +25 -0
  193. package/dist/types/types/integrator.types.d.ts.map +1 -0
  194. package/dist/types/types/mobile-money.types.d.ts +26 -0
  195. package/dist/types/types/mobile-money.types.d.ts.map +1 -0
  196. package/dist/types/utils/http-client.util.d.ts +32 -0
  197. package/dist/types/utils/http-client.util.d.ts.map +1 -0
  198. package/dist/types/utils/index.d.ts +3 -0
  199. package/dist/types/utils/index.d.ts.map +1 -0
  200. package/dist/types/utils/validation.util.d.ts +7 -0
  201. package/dist/types/utils/validation.util.d.ts.map +1 -0
  202. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.util.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.util.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAyD,MAAM,OAAO,CAAC;AAExH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,eAAe;IAyBnC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,KAAgB,GAAG,IAAI;IAKpE;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,OAAO,CAAC,iBAAiB;IAuBnB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IASlD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrE,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOrD,OAAO,CAAC,WAAW;CA+BpB"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HttpClientUtil = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const error_types_1 = require("../types/error.types");
9
+ class HttpClientUtil {
10
+ constructor(config) {
11
+ this.config = config;
12
+ const baseURL = config.baseUrl || (config.environment === 'production'
13
+ ? 'https://api.kotanipay.io'
14
+ : 'https://sandbox-api.kotanipay.io');
15
+ this.client = axios_1.default.create({
16
+ baseURL,
17
+ timeout: config.timeout || 30000,
18
+ headers: {
19
+ 'Content-Type': 'application/json',
20
+ 'Accept': 'application/json',
21
+ 'User-Agent': '@kotani-pay/sdk/1.0.0',
22
+ },
23
+ });
24
+ // Set initial auth token if provided (for API key usage)
25
+ if (config.apiKey) {
26
+ this.setAuthToken(config.apiKey, 'Bearer');
27
+ }
28
+ this.setupInterceptors();
29
+ }
30
+ /**
31
+ * Set authentication token (JWT or API Key)
32
+ */
33
+ setAuthToken(token, type = 'Bearer') {
34
+ this.authToken = token;
35
+ this.client.defaults.headers.common['Authorization'] = `${type} ${token}`;
36
+ }
37
+ /**
38
+ * Clear authentication token
39
+ */
40
+ clearAuthToken() {
41
+ this.authToken = undefined;
42
+ delete this.client.defaults.headers.common['Authorization'];
43
+ }
44
+ /**
45
+ * Get current auth token
46
+ */
47
+ getAuthToken() {
48
+ return this.authToken;
49
+ }
50
+ setupInterceptors() {
51
+ this.client.interceptors.request.use((config) => {
52
+ console.debug(`Making request: ${config.method?.toUpperCase()} ${config.url}`);
53
+ return config;
54
+ }, (error) => {
55
+ console.error('Request error:', error);
56
+ return Promise.reject(error);
57
+ });
58
+ this.client.interceptors.response.use((response) => {
59
+ console.debug(`Response: ${response.status} ${response.statusText}`);
60
+ return response;
61
+ }, (error) => {
62
+ return Promise.reject(this.handleError(error));
63
+ });
64
+ }
65
+ async request(config) {
66
+ try {
67
+ const response = await this.client.request(config);
68
+ return response.data;
69
+ }
70
+ catch (error) {
71
+ throw this.handleError(error);
72
+ }
73
+ }
74
+ async get(url, config) {
75
+ return this.request({ ...config, method: 'GET', url });
76
+ }
77
+ async post(url, data, config) {
78
+ return this.request({ ...config, method: 'POST', url, data });
79
+ }
80
+ async put(url, data, config) {
81
+ return this.request({ ...config, method: 'PUT', url, data });
82
+ }
83
+ async delete(url, config) {
84
+ return this.request({ ...config, method: 'DELETE', url });
85
+ }
86
+ getConfig() {
87
+ return {
88
+ environment: this.config.environment,
89
+ baseURL: this.client.defaults.baseURL || ''
90
+ };
91
+ }
92
+ handleError(error) {
93
+ console.error('HTTP Error:', error);
94
+ if (error.response) {
95
+ const { status, data } = error.response;
96
+ const message = data?.message || data?.error || error.message;
97
+ switch (status) {
98
+ case 400:
99
+ return new error_types_1.ValidationError(message);
100
+ case 401:
101
+ return new error_types_1.AuthenticationError(message);
102
+ case 403:
103
+ return new error_types_1.KotaniPayError(message, status, 'FORBIDDEN');
104
+ case 404:
105
+ return new error_types_1.KotaniPayError(message, status, 'NOT_FOUND');
106
+ default:
107
+ return new error_types_1.KotaniPayError(message, status, data?.code);
108
+ }
109
+ }
110
+ if (error.code === 'ECONNABORTED') {
111
+ return new error_types_1.KotaniPayError('Request timeout', 408, 'TIMEOUT');
112
+ }
113
+ return new error_types_1.KotaniPayError(error.message || 'An unexpected error occurred', 500, 'NETWORK_ERROR');
114
+ }
115
+ }
116
+ exports.HttpClientUtil = HttpClientUtil;
117
+ //# sourceMappingURL=http-client.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.util.js","sourceRoot":"","sources":["../../../src/utils/http-client.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './http-client.util';
2
+ export * from './validation.util';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http-client.util"), exports);
18
+ __exportStar(require("./validation.util"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC"}
@@ -0,0 +1,7 @@
1
+ export declare class ValidationUtil {
2
+ static validateEmail(email: string): void;
3
+ static validatePhone(phone: string): void;
4
+ static validateCountryCode(countryCode: string): void;
5
+ static validateRequiredFields<T>(obj: T, requiredFields: (keyof T)[]): void;
6
+ }
7
+ //# sourceMappingURL=validation.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.util.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOzC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOzC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOrD,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI;CAQ5E"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationUtil = void 0;
4
+ const error_types_1 = require("../types/error.types");
5
+ class ValidationUtil {
6
+ static validateEmail(email) {
7
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8
+ if (!emailRegex.test(email)) {
9
+ throw new error_types_1.ValidationError('Invalid email format');
10
+ }
11
+ }
12
+ static validatePhone(phone) {
13
+ const phoneRegex = /^\+?[\d\s\-\(\)]+$/;
14
+ if (!phoneRegex.test(phone)) {
15
+ throw new error_types_1.ValidationError('Invalid phone number format');
16
+ }
17
+ }
18
+ static validateCountryCode(countryCode) {
19
+ const countryCodeRegex = /^[A-Z]{2}$/i;
20
+ if (!countryCodeRegex.test(countryCode)) {
21
+ throw new error_types_1.ValidationError('Country code must be a 2-letter ISO code');
22
+ }
23
+ }
24
+ static validateRequiredFields(obj, requiredFields) {
25
+ const missingFields = requiredFields.filter(field => !obj[field]);
26
+ if (missingFields.length > 0) {
27
+ throw new error_types_1.ValidationError(`Missing required fields: ${missingFields.join(', ')}`);
28
+ }
29
+ }
30
+ }
31
+ exports.ValidationUtil = ValidationUtil;
32
+ //# sourceMappingURL=validation.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEvD,MAAa,cAAc;IACzB,MAAM,CAAC,aAAa,CAAC,KAAa;QAChC,MAAM,UAAU,GAAG,4BAA4B,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,6BAAe,CAAC,sBAAsB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAa;QAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,6BAAe,CAAC,6BAA6B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,WAAmB;QAC5C,MAAM,gBAAgB,GAAG,aAAa,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,6BAAe,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAI,GAAM,EAAE,cAA2B;QAClE,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,6BAAe,CACvB,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA9BD,wCA8BC"}
@@ -0,0 +1,2 @@
1
+ export * from './kotani-pay.client';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './kotani-pay.client';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { IntegratorService } from '../modules/integrator';
2
+ import { AuthService } from '../modules/auth';
3
+ import { MobileMoneyService } from '../modules/mobile-money/mobile-money.service';
4
+ import { KotaniPayConfig, AuthenticatedSession } from '../types';
5
+ export declare class KotaniPayClient {
6
+ private httpClient;
7
+ integrator: IntegratorService;
8
+ auth: AuthService;
9
+ mobileMoney: MobileMoneyService;
10
+ constructor(config: KotaniPayConfig);
11
+ /**
12
+ * Initialize client with session data after user login
13
+ */
14
+ initializeWithSession(sessionData: AuthenticatedSession): void;
15
+ /**
16
+ * Initialize client with API key (for authenticated operations)
17
+ */
18
+ initializeWithApiKey(apiKey: string): void;
19
+ healthCheck(): Promise<{
20
+ status: string;
21
+ timestamp: string;
22
+ }>;
23
+ getConfig(): {
24
+ environment: string;
25
+ baseURL: string;
26
+ };
27
+ getVersion(): string;
28
+ /**
29
+ * Check if client is authenticated
30
+ */
31
+ isAuthenticated(): boolean;
32
+ /**
33
+ * Get authentication status with detailed info
34
+ */
35
+ getAuthStatus(): {
36
+ isAuthenticated: boolean;
37
+ hasSession: boolean;
38
+ hasApiKey: boolean;
39
+ tokenInfo?: any;
40
+ };
41
+ }
42
+ //# sourceMappingURL=kotani-pay.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotani-pay.client.d.ts","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEjE,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;gBAE3B,MAAM,EAAE,eAAe;IAUnC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAI9D;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAKnE,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAIrD,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB;CAYF"}
@@ -0,0 +1,57 @@
1
+ import { HttpClientUtil } from '../utils/http-client.util';
2
+ import { IntegratorService } from '../modules/integrator';
3
+ import { AuthService } from '../modules/auth';
4
+ import { MobileMoneyService } from '../modules/mobile-money/mobile-money.service';
5
+ export class KotaniPayClient {
6
+ constructor(config) {
7
+ // Create HTTP client with config
8
+ this.httpClient = new HttpClientUtil(config);
9
+ // Initialize services
10
+ this.integrator = new IntegratorService(this.httpClient);
11
+ this.auth = new AuthService(this.httpClient);
12
+ this.mobileMoney = new MobileMoneyService(this.httpClient);
13
+ }
14
+ /**
15
+ * Initialize client with session data after user login
16
+ */
17
+ initializeWithSession(sessionData) {
18
+ this.auth.setSession(sessionData);
19
+ }
20
+ /**
21
+ * Initialize client with API key (for authenticated operations)
22
+ */
23
+ initializeWithApiKey(apiKey) {
24
+ this.httpClient.setAuthToken(apiKey, 'Bearer');
25
+ }
26
+ async healthCheck() {
27
+ const response = await this.httpClient.get('/health');
28
+ return response;
29
+ }
30
+ getConfig() {
31
+ return this.httpClient.getConfig();
32
+ }
33
+ getVersion() {
34
+ return '1.0.0';
35
+ }
36
+ /**
37
+ * Check if client is authenticated
38
+ */
39
+ isAuthenticated() {
40
+ return this.auth.isAuthenticated() || !!this.httpClient.getAuthToken();
41
+ }
42
+ /**
43
+ * Get authentication status with detailed info
44
+ */
45
+ getAuthStatus() {
46
+ const hasSession = !!this.auth.getSession();
47
+ const hasApiKey = !!this.httpClient.getAuthToken();
48
+ const tokenInfo = this.auth.getTokenInfo ? this.auth.getTokenInfo() : null;
49
+ return {
50
+ isAuthenticated: this.isAuthenticated(),
51
+ hasSession,
52
+ hasApiKey,
53
+ tokenInfo
54
+ };
55
+ }
56
+ }
57
+ //# sourceMappingURL=kotani-pay.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotani-pay.client.js","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAGlF,MAAM,OAAO,eAAe;IAM1B,YAAY,MAAuB;QACjC,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAE7C,sBAAsB;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,WAAiC;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwC,SAAS,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,aAAa;QAMX,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3E,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './kotani-pay.exception';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './kotani-pay.exception';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export declare enum HttpStatus {
2
+ OK = 200,
3
+ CREATED = 201,
4
+ BAD_REQUEST = 400,
5
+ UNAUTHORIZED = 401,
6
+ FORBIDDEN = 403,
7
+ NOT_FOUND = 404,
8
+ INTERNAL_SERVER_ERROR = 500
9
+ }
10
+ export declare class KotaniPayException extends Error {
11
+ readonly status: HttpStatus;
12
+ readonly errorCode?: string;
13
+ readonly details?: any;
14
+ readonly timestamp: string;
15
+ constructor(message: string, status?: HttpStatus, errorCode?: string, details?: any);
16
+ toJSON(): {
17
+ name: string;
18
+ message: string;
19
+ status: HttpStatus;
20
+ errorCode: string | undefined;
21
+ details: any;
22
+ timestamp: string;
23
+ };
24
+ }
25
+ export declare class ValidationException extends KotaniPayException {
26
+ constructor(message: string, details?: any);
27
+ }
28
+ export declare class AuthenticationException extends KotaniPayException {
29
+ constructor(message?: string);
30
+ }
31
+ //# sourceMappingURL=kotani-pay.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotani-pay.exception.d.ts","sourceRoot":"","sources":["../../../src/exceptions/kotani-pay.exception.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,EAAE,MAAM;IACR,OAAO,MAAM;IACb,WAAW,MAAM;IACjB,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,SAAS,MAAM;IACf,qBAAqB,MAAM;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,MAAM,EAAE,UAAU,CAAC;IACnC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,CAAC,EAAE,GAAG,CAAC;IAC9B,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAGhC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAA6C,EACrD,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG;IAUf,MAAM;;;;;;;;CAUP;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;gBAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,OAAO,GAAE,MAAgC;CAItD"}
@@ -0,0 +1,43 @@
1
+ export var HttpStatus;
2
+ (function (HttpStatus) {
3
+ HttpStatus[HttpStatus["OK"] = 200] = "OK";
4
+ HttpStatus[HttpStatus["CREATED"] = 201] = "CREATED";
5
+ HttpStatus[HttpStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
6
+ HttpStatus[HttpStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
7
+ HttpStatus[HttpStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
8
+ HttpStatus[HttpStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
9
+ HttpStatus[HttpStatus["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
10
+ })(HttpStatus || (HttpStatus = {}));
11
+ export class KotaniPayException extends Error {
12
+ constructor(message, status = HttpStatus.INTERNAL_SERVER_ERROR, errorCode, details) {
13
+ super(message);
14
+ this.name = 'KotaniPayException';
15
+ this.status = status;
16
+ this.errorCode = errorCode;
17
+ this.details = details;
18
+ this.timestamp = new Date().toISOString();
19
+ }
20
+ toJSON() {
21
+ return {
22
+ name: this.name,
23
+ message: this.message,
24
+ status: this.status,
25
+ errorCode: this.errorCode,
26
+ details: this.details,
27
+ timestamp: this.timestamp,
28
+ };
29
+ }
30
+ }
31
+ export class ValidationException extends KotaniPayException {
32
+ constructor(message, details) {
33
+ super(message, HttpStatus.BAD_REQUEST, 'VALIDATION_ERROR', details);
34
+ this.name = 'ValidationException';
35
+ }
36
+ }
37
+ export class AuthenticationException extends KotaniPayException {
38
+ constructor(message = 'Authentication failed') {
39
+ super(message, HttpStatus.UNAUTHORIZED, 'AUTHENTICATION_ERROR');
40
+ this.name = 'AuthenticationException';
41
+ }
42
+ }
43
+ //# sourceMappingURL=kotani-pay.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotani-pay.exception.js","sourceRoot":"","sources":["../../../src/exceptions/kotani-pay.exception.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,yCAAQ,CAAA;IACR,mDAAa,CAAA;IACb,2DAAiB,CAAA;IACjB,6DAAkB,CAAA;IAClB,uDAAe,CAAA;IACf,uDAAe,CAAA;IACf,+EAA2B,CAAA;AAC7B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAM3C,YACE,OAAe,EACf,SAAqB,UAAU,CAAC,qBAAqB,EACrD,SAAkB,EAClB,OAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IACzD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,YAAY,UAAkB,uBAAuB;QACnD,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { KotaniPayClient } from './client';
2
+ export * from './modules';
3
+ export * from './types';
4
+ export * from './utils';
5
+ export { KotaniPayClient as default } from './client';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { KotaniPayClient } from './client';
2
+ export * from './modules';
3
+ export * from './types';
4
+ export * from './utils';
5
+ export { KotaniPayClient as default } from './client';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { HttpClientUtil } from '../../utils/http-client.util';
2
+ import { LoginResponse, ApiKeyResponse, GenerateApiKeyRequest, AuthenticatedSession } from '../../types';
3
+ export declare class AuthService {
4
+ private httpClient;
5
+ private session?;
6
+ constructor(httpClient: HttpClientUtil);
7
+ /**
8
+ * Login with email - sends login link to email
9
+ */
10
+ login(email: string): Promise<LoginResponse>;
11
+ /**
12
+ * Set session data after user clicks login link
13
+ */
14
+ setSession(sessionData: AuthenticatedSession): void;
15
+ /**
16
+ * Generate API key using the JWT token from login
17
+ */
18
+ generateApiKey(request?: GenerateApiKeyRequest): Promise<ApiKeyResponse>;
19
+ /**
20
+ * Refresh the JWT token using refresh token
21
+ */
22
+ refreshToken(): Promise<AuthenticatedSession>;
23
+ /**
24
+ * Get current session data
25
+ */
26
+ getSession(): AuthenticatedSession | undefined;
27
+ getTokenInfo(): any;
28
+ /**
29
+ * Check if user is authenticated
30
+ */
31
+ isAuthenticated(): boolean;
32
+ /**
33
+ * Logout and clear session
34
+ */
35
+ logout(): void;
36
+ }
37
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,aAAa,EAEb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB,qBAAa,WAAW;IAGV,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,OAAO,CAAC,CAAuB;gBAEnB,UAAU,EAAE,cAAc;IAE9C;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAelD;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAMnD;;OAEG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAY9E;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAgBnD;;OAEG;IACH,UAAU,IAAI,oBAAoB,GAAG,SAAS;IAI7C,YAAY,IAAI,GAAG;IAIpB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,MAAM,IAAI,IAAI;CAIf"}
@@ -0,0 +1,70 @@
1
+ import { ValidationUtil } from '../../utils/validation.util';
2
+ export class AuthService {
3
+ constructor(httpClient) {
4
+ this.httpClient = httpClient;
5
+ }
6
+ /**
7
+ * Login with email - sends login link to email
8
+ */
9
+ async login(email) {
10
+ if (!email) {
11
+ throw new Error('Email is required');
12
+ }
13
+ ValidationUtil.validateEmail(email);
14
+ const response = await this.httpClient.post('/api/v3/auth/login', { email });
15
+ return response;
16
+ }
17
+ /**
18
+ * Set session data after user clicks login link
19
+ */
20
+ setSession(sessionData) {
21
+ this.session = sessionData;
22
+ // Update HTTP client to use the JWT token
23
+ this.httpClient.setAuthToken(sessionData.token);
24
+ }
25
+ /**
26
+ * Generate API key using the JWT token from login
27
+ */
28
+ async generateApiKey(request) {
29
+ if (!this.session) {
30
+ throw new Error('No active session. Please login first and set session data.');
31
+ }
32
+ const response = await this.httpClient.get('/api/v3/auth/api-key/secure');
33
+ return response;
34
+ }
35
+ /**
36
+ * Refresh the JWT token using refresh token
37
+ */
38
+ async refreshToken() {
39
+ if (!this.session?.refresh_token) {
40
+ throw new Error('No refresh token available. Please login again.');
41
+ }
42
+ const response = await this.httpClient.post('/api/v3/auth/refresh', { refresh_token: this.session.refresh_token });
43
+ this.session = response.data;
44
+ this.httpClient.setAuthToken(this.session.token);
45
+ return this.session;
46
+ }
47
+ /**
48
+ * Get current session data
49
+ */
50
+ getSession() {
51
+ return this.session;
52
+ }
53
+ getTokenInfo() {
54
+ return this.session?.token;
55
+ }
56
+ /**
57
+ * Check if user is authenticated
58
+ */
59
+ isAuthenticated() {
60
+ return !!this.session?.token;
61
+ }
62
+ /**
63
+ * Logout and clear session
64
+ */
65
+ logout() {
66
+ this.session = undefined;
67
+ this.httpClient.clearAuthToken();
68
+ }
69
+ }
70
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAS7D,MAAM,OAAO,WAAW;IAGtB,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAElD;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,EACpB,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,WAAiC;QAC1C,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;QAC3B,0CAA0C;QAC1C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAA+B;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,6BAA6B,CAC9B,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,sBAAsB,EACtB,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAC9C,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEA,YAAY;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './auth.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './auth.service';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './integrator';
2
+ export * from './auth';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './integrator';
2
+ export * from './auth';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './integrator.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/integrator/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './integrator.service';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/integrator/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}