pi-spi-sdk 0.1.2 → 0.2.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 (215) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +23 -1
  3. package/dist/chunk-7W56NW2S.mjs +2066 -0
  4. package/dist/generated-FM5EVVHH.mjs +84 -0
  5. package/dist/index.cjs +4754 -0
  6. package/dist/index.d.cts +4940 -0
  7. package/dist/index.d.ts +4937 -11
  8. package/dist/index.mjs +2359 -0
  9. package/dist/index.umd.js +2 -0
  10. package/dist/qrcode/index.cjs +757 -0
  11. package/dist/qrcode/index.d.cts +68 -0
  12. package/dist/qrcode/index.d.ts +68 -0
  13. package/dist/qrcode/index.mjs +712 -0
  14. package/package.json +25 -8
  15. package/dist/config.d.ts +0 -35
  16. package/dist/config.js +0 -4
  17. package/dist/error-handler.d.ts +0 -7
  18. package/dist/error-handler.js +0 -52
  19. package/dist/errors.d.ts +0 -25
  20. package/dist/errors.js +0 -40
  21. package/dist/examples.d.ts +0 -8
  22. package/dist/examples.js +0 -91
  23. package/dist/generated/core/ApiError.d.ts +0 -10
  24. package/dist/generated/core/ApiError.js +0 -11
  25. package/dist/generated/core/ApiRequestOptions.d.ts +0 -13
  26. package/dist/generated/core/ApiRequestOptions.js +0 -1
  27. package/dist/generated/core/ApiResult.d.ts +0 -7
  28. package/dist/generated/core/ApiResult.js +0 -1
  29. package/dist/generated/core/CancelablePromise.d.ts +0 -20
  30. package/dist/generated/core/CancelablePromise.js +0 -111
  31. package/dist/generated/core/OpenAPI.d.ts +0 -16
  32. package/dist/generated/core/OpenAPI.js +0 -11
  33. package/dist/generated/core/request.d.ts +0 -34
  34. package/dist/generated/core/request.js +0 -269
  35. package/dist/generated/index.d.ts +0 -78
  36. package/dist/generated/index.js +0 -43
  37. package/dist/generated/models/AliasCreationReponse.d.ts +0 -22
  38. package/dist/generated/models/AliasCreationReponse.js +0 -1
  39. package/dist/generated/models/AliasCreationRequest.d.ts +0 -11
  40. package/dist/generated/models/AliasCreationRequest.js +0 -1
  41. package/dist/generated/models/AliasReponseListe.d.ts +0 -26
  42. package/dist/generated/models/AliasReponseListe.js +0 -1
  43. package/dist/generated/models/AnnulationStatut.d.ts +0 -13
  44. package/dist/generated/models/AnnulationStatut.js +0 -18
  45. package/dist/generated/models/Champs.d.ts +0 -1
  46. package/dist/generated/models/Champs.js +0 -1
  47. package/dist/generated/models/CompteOperation.d.ts +0 -72
  48. package/dist/generated/models/CompteOperation.js +0 -24
  49. package/dist/generated/models/CompteOperationListe.d.ts +0 -18
  50. package/dist/generated/models/CompteOperationListe.js +0 -1
  51. package/dist/generated/models/CompteSolde.d.ts +0 -129
  52. package/dist/generated/models/CompteSolde.js +0 -71
  53. package/dist/generated/models/CompteTransfertIntraReponse.d.ts +0 -33
  54. package/dist/generated/models/CompteTransfertIntraReponse.js +0 -12
  55. package/dist/generated/models/CompteTransfertIntraRequest.d.ts +0 -9
  56. package/dist/generated/models/CompteTransfertIntraRequest.js +0 -1
  57. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +0 -14
  58. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +0 -19
  59. package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +0 -41
  60. package/dist/generated/models/DemandePaiementConfirmationReponse.js +0 -13
  61. package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +0 -3
  62. package/dist/generated/models/DemandePaiementConfirmationRequest.js +0 -1
  63. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +0 -9
  64. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +0 -1
  65. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +0 -9
  66. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +0 -1
  67. package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +0 -151
  68. package/dist/generated/models/DemandePaiementConsultationReponse.js +0 -27
  69. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +0 -3
  70. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +0 -1
  71. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
  72. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +0 -1
  73. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
  74. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +0 -1
  75. package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +0 -74
  76. package/dist/generated/models/DemandePaiementEnMasseRequest.js +0 -1
  77. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +0 -98
  78. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +0 -20
  79. package/dist/generated/models/DemandePaiementListe.d.ts +0 -26
  80. package/dist/generated/models/DemandePaiementListe.js +0 -1
  81. package/dist/generated/models/DemandePaiementListeItem.d.ts +0 -163
  82. package/dist/generated/models/DemandePaiementListeItem.js +0 -27
  83. package/dist/generated/models/DemandePaiementReponse.d.ts +0 -129
  84. package/dist/generated/models/DemandePaiementReponse.js +0 -1
  85. package/dist/generated/models/DemandePaiementReponseRequest.d.ts +0 -21
  86. package/dist/generated/models/DemandePaiementReponseRequest.js +0 -11
  87. package/dist/generated/models/DemandePaiementRequest.d.ts +0 -98
  88. package/dist/generated/models/DemandePaiementRequest.js +0 -7
  89. package/dist/generated/models/DemandePaiementRequestBase.d.ts +0 -42
  90. package/dist/generated/models/DemandePaiementRequestBase.js +0 -1
  91. package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +0 -12
  92. package/dist/generated/models/DemandePaiementRequestCategorie.js +0 -17
  93. package/dist/generated/models/DemandePaiementStatut.d.ts +0 -13
  94. package/dist/generated/models/DemandePaiementStatut.js +0 -18
  95. package/dist/generated/models/DemandePaiementStatutRaison.d.ts +0 -46
  96. package/dist/generated/models/DemandePaiementStatutRaison.js +0 -51
  97. package/dist/generated/models/ListeMeta.d.ts +0 -14
  98. package/dist/generated/models/ListeMeta.js +0 -1
  99. package/dist/generated/models/Paiement.d.ts +0 -156
  100. package/dist/generated/models/Paiement.js +0 -28
  101. package/dist/generated/models/PaiementAnnulationMotif.d.ts +0 -17
  102. package/dist/generated/models/PaiementAnnulationMotif.js +0 -22
  103. package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +0 -11
  104. package/dist/generated/models/PaiementAnnulationReponseRequest.js +0 -1
  105. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +0 -9
  106. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +0 -1
  107. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +0 -9
  108. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +0 -1
  109. package/dist/generated/models/PaiementAnnulationRequest.d.ts +0 -4
  110. package/dist/generated/models/PaiementAnnulationRequest.js +0 -1
  111. package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +0 -21
  112. package/dist/generated/models/PaiementAnnulationStatutRaison.js +0 -26
  113. package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +0 -3
  114. package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +0 -1
  115. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
  116. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +0 -1
  117. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
  118. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +0 -1
  119. package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +0 -97
  120. package/dist/generated/models/PaiementEnMasseReponseStatut.js +0 -20
  121. package/dist/generated/models/PaiementEnMasseRequest.d.ts +0 -54
  122. package/dist/generated/models/PaiementEnMasseRequest.js +0 -1
  123. package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +0 -31
  124. package/dist/generated/models/PaiementImmediatConfirmationReponse.js +0 -7
  125. package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +0 -3
  126. package/dist/generated/models/PaiementImmediatConfirmationRequest.js +0 -1
  127. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +0 -9
  128. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +0 -1
  129. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +0 -9
  130. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +0 -1
  131. package/dist/generated/models/PaiementImmediatReponse.d.ts +0 -98
  132. package/dist/generated/models/PaiementImmediatReponse.js +0 -7
  133. package/dist/generated/models/PaiementImmediatRequest.d.ts +0 -13
  134. package/dist/generated/models/PaiementImmediatRequest.js +0 -1
  135. package/dist/generated/models/PaiementListe.d.ts +0 -6
  136. package/dist/generated/models/PaiementListe.js +0 -1
  137. package/dist/generated/models/PaiementRequest.d.ts +0 -33
  138. package/dist/generated/models/PaiementRequest.js +0 -1
  139. package/dist/generated/models/PaiementStatut.d.ts +0 -13
  140. package/dist/generated/models/PaiementStatut.js +0 -18
  141. package/dist/generated/models/PaiementStatutRaison.d.ts +0 -56
  142. package/dist/generated/models/PaiementStatutRaison.js +0 -61
  143. package/dist/generated/models/Problem7807.d.ts +0 -31
  144. package/dist/generated/models/Problem7807.js +0 -1
  145. package/dist/generated/models/RefDocType.d.ts +0 -38
  146. package/dist/generated/models/RefDocType.js +0 -43
  147. package/dist/generated/models/RetourStatut.d.ts +0 -13
  148. package/dist/generated/models/RetourStatut.js +0 -18
  149. package/dist/generated/models/RetourStatutRaison.d.ts +0 -25
  150. package/dist/generated/models/RetourStatutRaison.js +0 -30
  151. package/dist/generated/models/WebhookCreationRequest.d.ts +0 -14
  152. package/dist/generated/models/WebhookCreationRequest.js +0 -1
  153. package/dist/generated/models/WebhookCreationResponse.d.ts +0 -12
  154. package/dist/generated/models/WebhookCreationResponse.js +0 -1
  155. package/dist/generated/models/WebhookData.d.ts +0 -8
  156. package/dist/generated/models/WebhookData.js +0 -1
  157. package/dist/generated/models/WebhookEvent.d.ts +0 -191
  158. package/dist/generated/models/WebhookEvent.js +0 -42
  159. package/dist/generated/models/WebhookEventsList.d.ts +0 -13
  160. package/dist/generated/models/WebhookEventsList.js +0 -1
  161. package/dist/generated/models/WebhookList.d.ts +0 -13
  162. package/dist/generated/models/WebhookList.js +0 -1
  163. package/dist/generated/models/WebhookModificationRequest.d.ts +0 -4
  164. package/dist/generated/models/WebhookModificationRequest.js +0 -1
  165. package/dist/generated/models/WebhooksEvents.d.ts +0 -12
  166. package/dist/generated/models/WebhooksEvents.js +0 -17
  167. package/dist/generated/services/AliasService.d.ts +0 -63
  168. package/dist/generated/services/AliasService.js +0 -84
  169. package/dist/generated/services/ComptesService.d.ts +0 -64
  170. package/dist/generated/services/ComptesService.js +0 -86
  171. package/dist/generated/services/DemandeAnnulationService.d.ts +0 -84
  172. package/dist/generated/services/DemandeAnnulationService.js +0 -99
  173. package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +0 -161
  174. package/dist/generated/services/DemandesDePaiementEnMasseService.js +0 -189
  175. package/dist/generated/services/DemandesDePaiementService.d.ts +0 -123
  176. package/dist/generated/services/DemandesDePaiementService.js +0 -161
  177. package/dist/generated/services/NotificationService.d.ts +0 -80
  178. package/dist/generated/services/NotificationService.js +0 -132
  179. package/dist/generated/services/PaiementEnMasseService.d.ts +0 -159
  180. package/dist/generated/services/PaiementEnMasseService.js +0 -187
  181. package/dist/generated/services/PaiementImmediatService.d.ts +0 -135
  182. package/dist/generated/services/PaiementImmediatService.js +0 -176
  183. package/dist/generated/services/RetoursdeFondsService.d.ts +0 -28
  184. package/dist/generated/services/RetoursdeFondsService.js +0 -37
  185. package/dist/index.js +0 -23
  186. package/dist/query-builder.d.ts +0 -91
  187. package/dist/query-builder.js +0 -187
  188. package/dist/sdk.d.ts +0 -88
  189. package/dist/sdk.js +0 -107
  190. package/dist/services/alias.d.ts +0 -72
  191. package/dist/services/alias.js +0 -82
  192. package/dist/services/base.d.ts +0 -9
  193. package/dist/services/base.js +0 -17
  194. package/dist/services/comptes.d.ts +0 -149
  195. package/dist/services/comptes.js +0 -158
  196. package/dist/services/demandes-annulation.d.ts +0 -97
  197. package/dist/services/demandes-annulation.js +0 -104
  198. package/dist/services/demandes-paiement-en-masse.d.ts +0 -139
  199. package/dist/services/demandes-paiement-en-masse.js +0 -139
  200. package/dist/services/demandes-paiement.d.ts +0 -144
  201. package/dist/services/demandes-paiement.js +0 -151
  202. package/dist/services/paiements-en-masse.d.ts +0 -152
  203. package/dist/services/paiements-en-masse.js +0 -153
  204. package/dist/services/paiements.d.ts +0 -135
  205. package/dist/services/paiements.js +0 -135
  206. package/dist/services/retours-fonds.d.ts +0 -94
  207. package/dist/services/retours-fonds.js +0 -100
  208. package/dist/services/webhooks.d.ts +0 -131
  209. package/dist/services/webhooks.js +0 -142
  210. package/dist/types/alias.d.ts +0 -64
  211. package/dist/types/alias.js +0 -73
  212. package/dist/utils/constants.d.ts +0 -93
  213. package/dist/utils/constants.js +0 -93
  214. package/dist/utils/index.d.ts +0 -60
  215. package/dist/utils/index.js +0 -115
package/package.json CHANGED
@@ -1,14 +1,27 @@
1
1
  {
2
2
  "name": "pi-spi-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript SDK for the π-SPI Business API. Built by lomi. for the West African fintech community",
5
5
  "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "browser": "./dist/index.umd.js",
8
10
  "exports": {
9
11
  ".": {
10
- "import": "./dist/index.js",
11
- "types": "./dist/index.d.ts"
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "require": "./dist/index.cjs",
15
+ "default": "./dist/index.mjs"
16
+ },
17
+ "./qrcode": {
18
+ "types": "./dist/qrcode/index.d.ts",
19
+ "import": "./dist/qrcode/index.mjs",
20
+ "require": "./dist/qrcode/index.cjs",
21
+ "default": "./dist/qrcode/index.mjs"
22
+ },
23
+ "./umd": {
24
+ "default": "./dist/index.umd.js"
12
25
  }
13
26
  },
14
27
  "files": [
@@ -19,10 +32,13 @@
19
32
  "CHANGELOG.md"
20
33
  ],
21
34
  "scripts": {
22
- "build": "tsc",
23
- "dev": "tsc --watch",
35
+ "build": "tsup --config tsup.config.ts",
36
+ "dev": "tsup --config tsup.config.ts --watch",
37
+ "typecheck": "tsc --noEmit",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest",
24
40
  "format": "prettier --write \"src/**/*.{ts,tsx,json,md}\" \"*.{json,md}\" \"scripts/**/*.{js,ts}\"",
25
- "prepublish": "pnpm run generate && pnpm run build",
41
+ "prepublishOnly": "pnpm run generate && pnpm run build && pnpm run typecheck && pnpm test",
26
42
  "generate": "node scripts/pre-generate.js && openapi --input ./openapi.json --output ./src/generated --client axios --useOptions && node scripts/post-generate.js"
27
43
  },
28
44
  "keywords": [
@@ -78,6 +94,7 @@
78
94
  "@types/qrcode": "^1.5.6",
79
95
  "openapi-typescript-codegen": "^0.29.0",
80
96
  "prettier": "^3.6.2",
97
+ "tsup": "^8.5.0",
81
98
  "typescript": "^5.9.3",
82
99
  "vitest": "^4.0.16"
83
100
  }
package/dist/config.d.ts DELETED
@@ -1,35 +0,0 @@
1
- /**
2
- * PI-SPI SDK Configuration
3
- */
4
- export interface PiSpiConfig {
5
- /**
6
- * Base URL for the PI-SPI API
7
- * @default 'https://sandbox.api.pi-bceao.com/piz/v1'
8
- */
9
- baseUrl?: string;
10
- /**
11
- * OAuth2 access token for authentication
12
- */
13
- accessToken: string;
14
- /**
15
- * Optional: Client certificate path for mTLS
16
- */
17
- clientCert?: string;
18
- /**
19
- * Optional: Client key path for mTLS
20
- */
21
- clientKey?: string;
22
- /**
23
- * Optional: CA certificate path for mTLS
24
- */
25
- caCert?: string;
26
- /**
27
- * Optional: Additional headers to include in requests
28
- */
29
- headers?: Record<string, string>;
30
- /**
31
- * Optional: Request timeout in milliseconds
32
- * @default 30000
33
- */
34
- timeout?: number;
35
- }
package/dist/config.js DELETED
@@ -1,4 +0,0 @@
1
- /**
2
- * PI-SPI SDK Configuration
3
- */
4
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * Error handler utility for converting API errors to SDK errors
3
- */
4
- /**
5
- * Convert a generated API error to a SDK error
6
- */
7
- export declare function handleApiError(error: unknown): never;
@@ -1,52 +0,0 @@
1
- /**
2
- * Error handler utility for converting API errors to SDK errors
3
- */
4
- import { PiSpiError, PiSpiValidationError, PiSpiAuthError, PiSpiNotFoundError, PiSpiRateLimitError, } from './errors';
5
- /**
6
- * Convert a generated API error to a SDK error
7
- */
8
- export function handleApiError(error) {
9
- // Check if it's an ApiError-like object (from generated code)
10
- const isApiError = error &&
11
- typeof error === 'object' &&
12
- 'status' in error &&
13
- 'statusText' in error &&
14
- 'body' in error;
15
- if (isApiError) {
16
- const apiError = error;
17
- const status = apiError.status;
18
- const body = apiError.body;
19
- // Extract error details from RFC 7807 Problem format
20
- const type = body?.type;
21
- const title = body?.title || apiError.statusText;
22
- const detail = body?.detail || apiError.message;
23
- const instance = body?.instance;
24
- // Handle validation errors (400)
25
- if (status === 400) {
26
- const invalidParams = body?.invalidParams || body?.errors;
27
- throw new PiSpiValidationError(detail || title || 'Validation error', status, apiError.statusText, invalidParams, type, detail);
28
- }
29
- // Handle authentication errors (401)
30
- if (status === 401) {
31
- throw new PiSpiAuthError(detail || title || 'Authentication failed', status, apiError.statusText);
32
- }
33
- // Handle forbidden errors (403)
34
- if (status === 403) {
35
- throw new PiSpiError(detail || title || 'Forbidden', status, apiError.statusText, type, detail, instance);
36
- }
37
- // Handle not found errors (404)
38
- if (status === 404) {
39
- throw new PiSpiNotFoundError(detail || title || 'Resource not found', status, apiError.statusText);
40
- }
41
- // Handle rate limit errors (429)
42
- if (status === 429) {
43
- // Retry-After header would be in the response, but ApiError doesn't expose it
44
- // This can be enhanced if needed
45
- throw new PiSpiRateLimitError(detail || title || 'Rate limit exceeded', status, apiError.statusText);
46
- }
47
- // Handle other errors
48
- throw new PiSpiError(detail || title || apiError.message || 'API error', status, apiError.statusText, type, detail, instance);
49
- }
50
- // Re-throw if it's not an API error
51
- throw error;
52
- }
package/dist/errors.d.ts DELETED
@@ -1,25 +0,0 @@
1
- /**
2
- * Custom error classes for PI-SPI SDK
3
- */
4
- export declare class PiSpiError extends Error {
5
- readonly statusCode: number;
6
- readonly statusText: string;
7
- readonly type?: string;
8
- readonly detail?: string;
9
- readonly instance?: string;
10
- constructor(message: string, statusCode: number, statusText: string, type?: string, detail?: string, instance?: string);
11
- }
12
- export declare class PiSpiValidationError extends PiSpiError {
13
- readonly errors?: Record<string, string[]>;
14
- constructor(message: string, statusCode: number, statusText: string, errors?: Record<string, string[]>, type?: string, detail?: string);
15
- }
16
- export declare class PiSpiAuthError extends PiSpiError {
17
- constructor(message: string, statusCode: number, statusText: string);
18
- }
19
- export declare class PiSpiNotFoundError extends PiSpiError {
20
- constructor(message: string, statusCode: number, statusText: string);
21
- }
22
- export declare class PiSpiRateLimitError extends PiSpiError {
23
- readonly retryAfter?: number;
24
- constructor(message: string, statusCode: number, statusText: string, retryAfter?: number);
25
- }
package/dist/errors.js DELETED
@@ -1,40 +0,0 @@
1
- /**
2
- * Custom error classes for PI-SPI SDK
3
- */
4
- export class PiSpiError extends Error {
5
- constructor(message, statusCode, statusText, type, detail, instance) {
6
- super(message);
7
- this.name = 'PiSpiError';
8
- this.statusCode = statusCode;
9
- this.statusText = statusText;
10
- this.type = type;
11
- this.detail = detail;
12
- this.instance = instance;
13
- }
14
- }
15
- export class PiSpiValidationError extends PiSpiError {
16
- constructor(message, statusCode, statusText, errors, type, detail) {
17
- super(message, statusCode, statusText, type, detail);
18
- this.name = 'PiSpiValidationError';
19
- this.errors = errors;
20
- }
21
- }
22
- export class PiSpiAuthError extends PiSpiError {
23
- constructor(message, statusCode, statusText) {
24
- super(message, statusCode, statusText);
25
- this.name = 'PiSpiAuthError';
26
- }
27
- }
28
- export class PiSpiNotFoundError extends PiSpiError {
29
- constructor(message, statusCode, statusText) {
30
- super(message, statusCode, statusText);
31
- this.name = 'PiSpiNotFoundError';
32
- }
33
- }
34
- export class PiSpiRateLimitError extends PiSpiError {
35
- constructor(message, statusCode, statusText, retryAfter) {
36
- super(message, statusCode, statusText);
37
- this.name = 'PiSpiRateLimitError';
38
- this.retryAfter = retryAfter;
39
- }
40
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Usage Examples for PI-SPI SDK
3
- *
4
- * These examples use production-like data from the PI-SPI OpenAPI specification.
5
- *
6
- * @see {@link https://developers.pi-bceao.com} Official PI-SPI Documentation
7
- */
8
- export {};
package/dist/examples.js DELETED
@@ -1,91 +0,0 @@
1
- /**
2
- * Usage Examples for PI-SPI SDK
3
- *
4
- * These examples use production-like data from the PI-SPI OpenAPI specification.
5
- *
6
- * @see {@link https://developers.pi-bceao.com} Official PI-SPI Documentation
7
- */
8
- import { PiSpiSDK, QueryBuilder, AliasType } from './index';
9
- // Initialize the SDK
10
- const sdk = new PiSpiSDK({
11
- baseUrl: 'https://sandbox.api.pi-bceao.com/piz/v1',
12
- accessToken: process.env.PI_SPI_ACCESS_TOKEN,
13
- });
14
- // Example: Get account balance
15
- // Account numbers follow format: [CountryCode][AccountNumber]
16
- // Examples: 'CIC2344256727788288822' (Côte d'Ivoire), 'SNC2344256727788288822' (Senegal)
17
- async function getAccountBalance() {
18
- const account = await sdk.comptes.getAccount('CIC2344256727788288822');
19
- // @ts-expect-error - Service implementation pending code generation
20
- console.log('Account balance:', account?.solde ?? 'N/A');
21
- // @ts-expect-error
22
- console.log('Account status:', account?.statut);
23
- }
24
- // Example: Create alias
25
- // SHID: System-generated UUID (36 chars) - available for all client types
26
- // MCOD: Merchant code for USSD - business clients only (C, B, G)
27
- // MBNO: Mobile number - individuals only (P)
28
- async function createAliasExample() {
29
- // Create SHID alias (available for all client types)
30
- const shidAlias = await sdk.alias.create({
31
- compte: 'CIC2344256727788288822',
32
- type: AliasType.SHID,
33
- });
34
- // Returns: { cle: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', type: 'SHID', ... }
35
- // Create MCOD alias (business clients only)
36
- const mcodAlias = await sdk.alias.create({
37
- compte: 'SNC2344256727788288822',
38
- type: AliasType.MCOD,
39
- });
40
- // Returns: { cle: 'SNF00_2E4TY', type: 'MCOD', ... }
41
- }
42
- // Example: Query builder usage
43
- async function queryExample() {
44
- const query = new QueryBuilder()
45
- .filter('statut', 'eq', 'IRREVOCABLE')
46
- .filter('montant', 'gte', 150000) // 1,500 XOF minimum
47
- .sort('-dateCreation')
48
- .page(1)
49
- .size(50)
50
- .build();
51
- const payments = await sdk.paiements.list(query);
52
- }
53
- // Example: Create payment with realistic data
54
- async function createPaymentExample() {
55
- const payment = await sdk.paiements.create({
56
- comptePayeur: 'CIC2344256727788288822',
57
- payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', // SHID alias (UUID format)
58
- montant: 150000, // 1,500 XOF (amounts are in centimes)
59
- motif: 'Paiement de services',
60
- txId: '23552722', // Unique transaction ID
61
- });
62
- }
63
- // Example: Error handling
64
- import { PiSpiError, PiSpiValidationError, PiSpiAuthError } from './index';
65
- async function errorHandlingExample() {
66
- try {
67
- await sdk.paiements.create({
68
- comptePayeur: 'CIC2344256727788288822',
69
- payeAlias: '9b1b2499-3e50-435b-b757-ac7a83d8aa8c', // SHID alias
70
- montant: 150000, // 1,500 XOF
71
- motif: 'Paiement de test',
72
- });
73
- }
74
- catch (error) {
75
- if (error instanceof PiSpiValidationError) {
76
- console.error('Validation error:', error.errors);
77
- }
78
- else if (error instanceof PiSpiAuthError) {
79
- console.error('Authentication error:', error.message);
80
- }
81
- else if (error instanceof PiSpiError) {
82
- console.error('API error:', error.message, error.statusCode);
83
- }
84
- else if (error instanceof Error) {
85
- console.error('Unexpected error:', error.message);
86
- }
87
- else {
88
- console.error('Unknown error:', error);
89
- }
90
- }
91
- }
@@ -1,10 +0,0 @@
1
- import type { ApiRequestOptions } from './ApiRequestOptions';
2
- import type { ApiResult } from './ApiResult';
3
- export declare class ApiError extends Error {
4
- readonly url: string;
5
- readonly status: number;
6
- readonly statusText: string;
7
- readonly body: any;
8
- readonly request: ApiRequestOptions;
9
- constructor(request: ApiRequestOptions, response: ApiResult, message: string);
10
- }
@@ -1,11 +0,0 @@
1
- export class ApiError extends Error {
2
- constructor(request, response, message) {
3
- super(message);
4
- this.name = 'ApiError';
5
- this.url = response.url;
6
- this.status = response.status;
7
- this.statusText = response.statusText;
8
- this.body = response.body;
9
- this.request = request;
10
- }
11
- }
@@ -1,13 +0,0 @@
1
- export type ApiRequestOptions = {
2
- readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
3
- readonly url: string;
4
- readonly path?: Record<string, any>;
5
- readonly cookies?: Record<string, any>;
6
- readonly headers?: Record<string, any>;
7
- readonly query?: Record<string, any>;
8
- readonly formData?: Record<string, any>;
9
- readonly body?: any;
10
- readonly mediaType?: string;
11
- readonly responseHeader?: string;
12
- readonly errors?: Record<number, string>;
13
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- export type ApiResult = {
2
- readonly url: string;
3
- readonly ok: boolean;
4
- readonly status: number;
5
- readonly statusText: string;
6
- readonly body: any;
7
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- export declare class CancelError extends Error {
2
- constructor(message: string);
3
- get isCancelled(): boolean;
4
- }
5
- export interface OnCancel {
6
- readonly isResolved: boolean;
7
- readonly isRejected: boolean;
8
- readonly isCancelled: boolean;
9
- (cancelHandler: () => void): void;
10
- }
11
- export declare class CancelablePromise<T> implements Promise<T> {
12
- #private;
13
- constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void);
14
- get [Symbol.toStringTag](): string;
15
- then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
16
- catch<TResult = never>(onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
17
- finally(onFinally?: (() => void) | null): Promise<T>;
18
- cancel(): void;
19
- get isCancelled(): boolean;
20
- }
@@ -1,111 +0,0 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _CancelablePromise_isResolved, _CancelablePromise_isRejected, _CancelablePromise_isCancelled, _CancelablePromise_cancelHandlers, _CancelablePromise_promise, _CancelablePromise_resolve, _CancelablePromise_reject;
13
- /* generated using openapi-typescript-codegen -- do not edit */
14
- /* istanbul ignore file */
15
- /* tslint:disable */
16
- /* eslint-disable */
17
- export class CancelError extends Error {
18
- constructor(message) {
19
- super(message);
20
- this.name = 'CancelError';
21
- }
22
- get isCancelled() {
23
- return true;
24
- }
25
- }
26
- export class CancelablePromise {
27
- constructor(executor) {
28
- _CancelablePromise_isResolved.set(this, void 0);
29
- _CancelablePromise_isRejected.set(this, void 0);
30
- _CancelablePromise_isCancelled.set(this, void 0);
31
- _CancelablePromise_cancelHandlers.set(this, void 0);
32
- _CancelablePromise_promise.set(this, void 0);
33
- _CancelablePromise_resolve.set(this, void 0);
34
- _CancelablePromise_reject.set(this, void 0);
35
- __classPrivateFieldSet(this, _CancelablePromise_isResolved, false, "f");
36
- __classPrivateFieldSet(this, _CancelablePromise_isRejected, false, "f");
37
- __classPrivateFieldSet(this, _CancelablePromise_isCancelled, false, "f");
38
- __classPrivateFieldSet(this, _CancelablePromise_cancelHandlers, [], "f");
39
- __classPrivateFieldSet(this, _CancelablePromise_promise, new Promise((resolve, reject) => {
40
- __classPrivateFieldSet(this, _CancelablePromise_resolve, resolve, "f");
41
- __classPrivateFieldSet(this, _CancelablePromise_reject, reject, "f");
42
- const onResolve = (value) => {
43
- if (__classPrivateFieldGet(this, _CancelablePromise_isResolved, "f") || __classPrivateFieldGet(this, _CancelablePromise_isRejected, "f") || __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f")) {
44
- return;
45
- }
46
- __classPrivateFieldSet(this, _CancelablePromise_isResolved, true, "f");
47
- if (__classPrivateFieldGet(this, _CancelablePromise_resolve, "f"))
48
- __classPrivateFieldGet(this, _CancelablePromise_resolve, "f").call(this, value);
49
- };
50
- const onReject = (reason) => {
51
- if (__classPrivateFieldGet(this, _CancelablePromise_isResolved, "f") || __classPrivateFieldGet(this, _CancelablePromise_isRejected, "f") || __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f")) {
52
- return;
53
- }
54
- __classPrivateFieldSet(this, _CancelablePromise_isRejected, true, "f");
55
- if (__classPrivateFieldGet(this, _CancelablePromise_reject, "f"))
56
- __classPrivateFieldGet(this, _CancelablePromise_reject, "f").call(this, reason);
57
- };
58
- const onCancel = (cancelHandler) => {
59
- if (__classPrivateFieldGet(this, _CancelablePromise_isResolved, "f") || __classPrivateFieldGet(this, _CancelablePromise_isRejected, "f") || __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f")) {
60
- return;
61
- }
62
- __classPrivateFieldGet(this, _CancelablePromise_cancelHandlers, "f").push(cancelHandler);
63
- };
64
- Object.defineProperty(onCancel, 'isResolved', {
65
- get: () => __classPrivateFieldGet(this, _CancelablePromise_isResolved, "f"),
66
- });
67
- Object.defineProperty(onCancel, 'isRejected', {
68
- get: () => __classPrivateFieldGet(this, _CancelablePromise_isRejected, "f"),
69
- });
70
- Object.defineProperty(onCancel, 'isCancelled', {
71
- get: () => __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f"),
72
- });
73
- return executor(onResolve, onReject, onCancel);
74
- }), "f");
75
- }
76
- get [(_CancelablePromise_isResolved = new WeakMap(), _CancelablePromise_isRejected = new WeakMap(), _CancelablePromise_isCancelled = new WeakMap(), _CancelablePromise_cancelHandlers = new WeakMap(), _CancelablePromise_promise = new WeakMap(), _CancelablePromise_resolve = new WeakMap(), _CancelablePromise_reject = new WeakMap(), Symbol.toStringTag)]() {
77
- return "Cancellable Promise";
78
- }
79
- then(onFulfilled, onRejected) {
80
- return __classPrivateFieldGet(this, _CancelablePromise_promise, "f").then(onFulfilled, onRejected);
81
- }
82
- catch(onRejected) {
83
- return __classPrivateFieldGet(this, _CancelablePromise_promise, "f").catch(onRejected);
84
- }
85
- finally(onFinally) {
86
- return __classPrivateFieldGet(this, _CancelablePromise_promise, "f").finally(onFinally);
87
- }
88
- cancel() {
89
- if (__classPrivateFieldGet(this, _CancelablePromise_isResolved, "f") || __classPrivateFieldGet(this, _CancelablePromise_isRejected, "f") || __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f")) {
90
- return;
91
- }
92
- __classPrivateFieldSet(this, _CancelablePromise_isCancelled, true, "f");
93
- if (__classPrivateFieldGet(this, _CancelablePromise_cancelHandlers, "f").length) {
94
- try {
95
- for (const cancelHandler of __classPrivateFieldGet(this, _CancelablePromise_cancelHandlers, "f")) {
96
- cancelHandler();
97
- }
98
- }
99
- catch (error) {
100
- console.warn('Cancellation threw an error', error);
101
- return;
102
- }
103
- }
104
- __classPrivateFieldGet(this, _CancelablePromise_cancelHandlers, "f").length = 0;
105
- if (__classPrivateFieldGet(this, _CancelablePromise_reject, "f"))
106
- __classPrivateFieldGet(this, _CancelablePromise_reject, "f").call(this, new CancelError('Request aborted'));
107
- }
108
- get isCancelled() {
109
- return __classPrivateFieldGet(this, _CancelablePromise_isCancelled, "f");
110
- }
111
- }
@@ -1,16 +0,0 @@
1
- import type { ApiRequestOptions } from './ApiRequestOptions';
2
- type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
3
- type Headers = Record<string, string>;
4
- export type OpenAPIConfig = {
5
- BASE: string;
6
- VERSION: string;
7
- WITH_CREDENTIALS: boolean;
8
- CREDENTIALS: 'include' | 'omit' | 'same-origin';
9
- TOKEN?: string | Resolver<string> | undefined;
10
- USERNAME?: string | Resolver<string> | undefined;
11
- PASSWORD?: string | Resolver<string> | undefined;
12
- HEADERS?: Headers | Resolver<Headers> | undefined;
13
- ENCODE_PATH?: ((path: string) => string) | undefined;
14
- };
15
- export declare const OpenAPI: OpenAPIConfig;
16
- export {};
@@ -1,11 +0,0 @@
1
- export const OpenAPI = {
2
- BASE: 'https://sandbox.api.pi-bceao.com/piz/v1',
3
- VERSION: '1.0.0',
4
- WITH_CREDENTIALS: false,
5
- CREDENTIALS: 'include',
6
- TOKEN: undefined,
7
- USERNAME: undefined,
8
- PASSWORD: undefined,
9
- HEADERS: undefined,
10
- ENCODE_PATH: undefined,
11
- };
@@ -1,34 +0,0 @@
1
- import type { AxiosResponse, AxiosInstance } from 'axios';
2
- import FormData from 'form-data';
3
- import type { ApiRequestOptions } from './ApiRequestOptions';
4
- import type { ApiResult } from './ApiResult';
5
- import { CancelablePromise } from './CancelablePromise';
6
- import type { OnCancel } from './CancelablePromise';
7
- import type { OpenAPIConfig } from './OpenAPI';
8
- export declare const isDefined: <T>(value: T | null | undefined) => value is Exclude<T, null | undefined>;
9
- export declare const isString: (value: any) => value is string;
10
- export declare const isStringWithValue: (value: any) => value is string;
11
- export declare const isBlob: (value: any) => value is Blob;
12
- export declare const isFormData: (value: any) => value is FormData;
13
- export declare const isSuccess: (status: number) => boolean;
14
- export declare const base64: (str: string) => string;
15
- export declare const getQueryString: (params: Record<string, any>) => string;
16
- export declare const getFormData: (options: ApiRequestOptions) => FormData | undefined;
17
- type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
18
- export declare const resolve: <T>(options: ApiRequestOptions, resolver?: T | Resolver<T>) => Promise<T | undefined>;
19
- export declare const getHeaders: (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData) => Promise<Record<string, string>>;
20
- export declare const getRequestBody: (options: ApiRequestOptions) => any;
21
- export declare const sendRequest: <T>(config: OpenAPIConfig, options: ApiRequestOptions, url: string, body: any, formData: FormData | undefined, headers: Record<string, string>, onCancel: OnCancel, axiosClient: AxiosInstance) => Promise<AxiosResponse<T>>;
22
- export declare const getResponseHeader: (response: AxiosResponse<any>, responseHeader?: string) => string | undefined;
23
- export declare const getResponseBody: (response: AxiosResponse<any>) => any;
24
- export declare const catchErrorCodes: (options: ApiRequestOptions, result: ApiResult) => void;
25
- /**
26
- * Request method
27
- * @param config The OpenAPI configuration object
28
- * @param options The request options from the service
29
- * @param axiosClient The axios client instance to use
30
- * @returns CancelablePromise<T>
31
- * @throws ApiError
32
- */
33
- export declare const request: <T>(config: OpenAPIConfig, options: ApiRequestOptions, axiosClient?: AxiosInstance) => CancelablePromise<T>;
34
- export {};