pesafy 0.0.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.
- package/CHANGELOG.md +39 -0
- package/README.md +62 -40
- package/dist/adapters/express.d.ts +5 -81
- package/dist/adapters/express.js +127 -1
- package/dist/adapters/express.js.map +1 -0
- package/dist/adapters/fastify.d.ts +10 -74
- package/dist/adapters/fastify.js +85 -1
- package/dist/adapters/fastify.js.map +1 -0
- package/dist/adapters/hono.d.ts +4 -88
- package/dist/adapters/hono.js +105 -1
- package/dist/adapters/hono.js.map +1 -0
- package/dist/adapters/nextjs.d.ts +28 -176
- package/dist/adapters/nextjs.js +166 -1
- package/dist/adapters/nextjs.js.map +1 -0
- package/dist/cli.mjs +2387 -112
- package/dist/cli.mjs.map +1 -0
- package/dist/errors.mjs +6 -1
- package/dist/errors.mjs.map +1 -0
- package/dist/index.d.ts +4864 -136
- package/dist/index.js +4197 -1
- package/dist/index.js.map +1 -0
- package/dist/phone.mjs +5 -1
- package/dist/phone.mjs.map +1 -0
- package/dist/rolldown-runtime.mjs +18 -0
- package/dist/route-definitions.js +3292 -0
- package/dist/route-definitions.js.map +1 -0
- package/dist/types.d.ts +924 -5
- package/package.json +6 -1
- package/dist/chunk.js +0 -1
- package/dist/encryption.mjs +0 -22
- package/dist/utils.mjs +0 -32
- package/dist/webhook-guard.js +0 -1
package/dist/errors.mjs
CHANGED
|
@@ -36,6 +36,11 @@ var PesafyError = class PesafyError extends Error {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
+
/** Convenience factory */
|
|
40
|
+
function createError(options) {
|
|
41
|
+
return new PesafyError(options);
|
|
42
|
+
}
|
|
39
43
|
|
|
40
44
|
//#endregion
|
|
41
|
-
export { PesafyError as t };
|
|
45
|
+
export { createError as n, PesafyError as t };
|
|
46
|
+
//# sourceMappingURL=errors.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.mjs","names":[],"sources":["../src/utils/errors/index.ts"],"sourcesContent":["// 📁 PATH: src/utils/errors/index.ts\n\n/**\n * Pesafy error types — single source of truth.\n *\n * All codes map to a specific failure category so callers can handle\n * them without string-matching on the message.\n */\n\n// ── Error codes ───────────────────────────────────────────────────────────────\n\nexport const ERROR_CODES = [\n 'AUTH_FAILED',\n 'INVALID_CREDENTIALS',\n 'INVALID_PHONE',\n 'ENCRYPTION_FAILED',\n 'VALIDATION_ERROR',\n 'API_ERROR',\n 'HTTP_ERROR',\n 'NETWORK_ERROR',\n 'REQUEST_FAILED',\n 'INVALID_RESPONSE',\n 'TIMEOUT',\n 'RATE_LIMITED',\n 'INSUFFICIENT_FUNDS',\n 'TRANSACTION_FAILED',\n 'DUPLICATE_REQUEST',\n 'IDEMPOTENCY_ERROR',\n] as const\n\nexport type ErrorCode = (typeof ERROR_CODES)[number]\n\nexport interface PesafyErrorOptions {\n code: ErrorCode\n message: string\n /** HTTP status code from Daraja (if applicable) */\n statusCode?: number\n /** Raw Daraja response body (for debugging) */\n response?: unknown\n /** Underlying caught error (network, crypto, etc.) */\n cause?: unknown\n /** Daraja requestId from the error envelope */\n requestId?: string\n /** Whether this error is retryable */\n retryable?: boolean\n}\n\n// ── PesafyError class ─────────────────────────────────────────────────────────\n\nexport class PesafyError extends Error {\n readonly code: ErrorCode\n readonly statusCode: number | undefined\n readonly response: unknown\n readonly requestId: string | undefined\n override readonly cause: unknown\n readonly retryable: boolean\n\n constructor(options: PesafyErrorOptions) {\n super(options.message)\n Object.defineProperty(this, 'name', { value: 'PesafyError' })\n this.code = options.code\n this.statusCode = options.statusCode\n this.response = options.response\n this.requestId = options.requestId\n this.cause = options.cause\n // 429 / 503 / network errors are retryable\n this.retryable =\n options.retryable ??\n (options.code === 'NETWORK_ERROR' ||\n options.code === 'TIMEOUT' ||\n options.code === 'RATE_LIMITED' ||\n options.code === 'REQUEST_FAILED')\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, PesafyError)\n }\n }\n\n /** Returns true if this is a validation error (user bug — do not retry) */\n get isValidation(): boolean {\n return this.code === 'VALIDATION_ERROR'\n }\n\n /** Returns true if this is an auth error */\n get isAuth(): boolean {\n return this.code === 'AUTH_FAILED' || this.code === 'INVALID_CREDENTIALS'\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n statusCode: this.statusCode,\n requestId: this.requestId,\n retryable: this.retryable,\n }\n }\n}\n\n/** Convenience factory */\nexport function createError(options: PesafyErrorOptions): PesafyError {\n return new PesafyError(options)\n}\n\n/** Type guard */\nexport function isPesafyError(err: unknown): err is PesafyError {\n return err instanceof PesafyError\n}\n"],"mappings":";AAiDA,IAAa,cAAb,MAAa,oBAAoB,MAAM;CACrC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAkB;CAClB,AAAS;CAET,YAAY,SAA6B;AACvC,QAAM,QAAQ,QAAQ;AACtB,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,eAAe,CAAC;AAC7D,OAAK,OAAO,QAAQ;AACpB,OAAK,aAAa,QAAQ;AAC1B,OAAK,WAAW,QAAQ;AACxB,OAAK,YAAY,QAAQ;AACzB,OAAK,QAAQ,QAAQ;AAErB,OAAK,YACH,QAAQ,cACP,QAAQ,SAAS,mBAChB,QAAQ,SAAS,aACjB,QAAQ,SAAS,kBACjB,QAAQ,SAAS;AAErB,MAAI,MAAM,kBACR,OAAM,kBAAkB,MAAM,YAAY;;;CAK9C,IAAI,eAAwB;AAC1B,SAAO,KAAK,SAAS;;;CAIvB,IAAI,SAAkB;AACpB,SAAO,KAAK,SAAS,iBAAiB,KAAK,SAAS;;CAGtD,SAAS;AACP,SAAO;GACL,MAAM,KAAK;GACX,MAAM,KAAK;GACX,SAAS,KAAK;GACd,YAAY,KAAK;GACjB,WAAW,KAAK;GAChB,WAAW,KAAK;GACjB;;;;AAKL,SAAgB,YAAY,SAA0C;AACpE,QAAO,IAAI,YAAY,QAAQ"}
|