{"_id":"@codeflex-dev/unified-payment-gateway","_rev":"5-03c7a5950bc67d8d1f5cbf0ae7fd4480","name":"@codeflex-dev/unified-payment-gateway","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@codeflex-dev/unified-payment-gateway","version":"1.0.0","keywords":["payment","gateway","paystack","yoco","unified","sdk"],"author":"","license":"ISC","_id":"@codeflex-dev/unified-payment-gateway@1.0.0","maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"dist":{"shasum":"e266289d25e24e64637520a53edee9ace6192a16","tarball":"https://registry.npmjs.org/@codeflex-dev/unified-payment-gateway/-/unified-payment-gateway-1.0.0.tgz","fileCount":16,"integrity":"sha512-ctjDzHnQygPeaRnRSo5Apsvep+iiSC3s8WfBT6MtdkDBOk7i5fS50TpBqYsLD9jRQkhIsLx4sSe0+nK4vLLoew==","signatures":[{"sig":"MEYCIQDgUA5jvc2c+0XdkRswt9wBLJdsx2bTSOaXmkMLiZVVOgIhAK8Fcjoq1c913UAIH46sKUutJYRboxH/KzHXJjgZOSow","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31394},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"ab339b7f1efe6470768eb6f42acc4386537b9de2","scripts":{"test":"jest","build":"tsc","watch":"tsc --watch","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"codeflex-dev","email":"sabelod@siko.co.za"},"repository":{"url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git","type":"git"},"_npmVersion":"10.9.0","description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"axios":"^1.6.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/unified-payment-gateway_1.0.0_1765190947300_0.8164361157640225","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@codeflex-dev/unified-payment-gateway","version":"1.0.1","keywords":["payment","gateway","paystack","yoco","unified","sdk"],"author":"","license":"ISC","_id":"@codeflex-dev/unified-payment-gateway@1.0.1","maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"dist":{"shasum":"5744a40ceb22750ef22772a2a3b04ec861bab3a6","tarball":"https://registry.npmjs.org/@codeflex-dev/unified-payment-gateway/-/unified-payment-gateway-1.0.1.tgz","fileCount":16,"integrity":"sha512-ub1EFzbCAito7eXEaaf22mFlu87p9PN2/6+jToftW/GCOZ7LfZnt8n0HfOZP+o1Ve2oG/lHT6SVuJz/5lnEECQ==","signatures":[{"sig":"MEQCIHSPhYUQ3C1jtS7/a15LmO61NCtwd1sTM6+XpFDvnNplAiAX1T7bvdnio8NgsmYOWi+G14E6xN6k8Rzn6JKa5wIHBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31542},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1762aad25d6f5b4786bde05058ab62b17b417ecd","scripts":{"test":"jest","build":"tsc","watch":"tsc --watch","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"codeflex-dev","email":"sabelod@siko.co.za"},"repository":{"url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git","type":"git"},"_npmVersion":"10.9.0","description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"axios":"^1.6.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/unified-payment-gateway_1.0.1_1765192823186_0.2697850994079414","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@codeflex-dev/unified-payment-gateway","version":"1.0.2","keywords":["payment","gateway","paystack","yoco","unified","sdk"],"author":"","license":"ISC","_id":"@codeflex-dev/unified-payment-gateway@1.0.2","maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"dist":{"shasum":"0f6fadaa4f32b36b390636f5958b7f2a3cdc5822","tarball":"https://registry.npmjs.org/@codeflex-dev/unified-payment-gateway/-/unified-payment-gateway-1.0.2.tgz","fileCount":16,"integrity":"sha512-xr3r/1qNqj5mCctr4CFHbHPJy5TaZtVZp9X74TFu7beWRbwVIOuJHaYrKLUqMcXznIdWyv6W5Wp9zKmd84veZg==","signatures":[{"sig":"MEQCIBGVhcex6BQ/o8xF3DuAGm41kQX669pMbar6h6xS2ymFAiAjrGVKgddjqAllhQxwLnPIy66VMFTOuASCrBA6PER7zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31550},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1762aad25d6f5b4786bde05058ab62b17b417ecd","scripts":{"test":"jest","build":"tsc","watch":"tsc --watch","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"codeflex-dev","email":"sabelod@siko.co.za"},"repository":{"url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git","type":"git"},"_npmVersion":"10.9.0","description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"axios":"^1.6.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/unified-payment-gateway_1.0.2_1765193049997_0.12858696267782244","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@codeflex-dev/unified-payment-gateway","version":"1.0.3","keywords":["payment","gateway","paystack","yoco","unified","sdk"],"author":"","license":"ISC","_id":"@codeflex-dev/unified-payment-gateway@1.0.3","maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"dist":{"shasum":"25fce80253353652da5579c3627235b1e2b30ebf","tarball":"https://registry.npmjs.org/@codeflex-dev/unified-payment-gateway/-/unified-payment-gateway-1.0.3.tgz","fileCount":16,"integrity":"sha512-SBFHDNMZ7ggKO/5NX1JeVvRd6pMMcxPwFsIWuD0vNOSWZnWF2l3U5bvcLLFymAqQBKoTQEsRn7xNo+U+hvHebQ==","signatures":[{"sig":"MEUCIEKrbUd05d9jretUQGNcJ2XgoT1MKZdCAFerXZLbrwr2AiEA1ZGtKjnHikbIZpC5NK94S3ZZXsUftRj2/UfGM4dFRxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33468},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1762aad25d6f5b4786bde05058ab62b17b417ecd","scripts":{"test":"jest","build":"tsc","watch":"tsc --watch","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"codeflex-dev","email":"sabelod@siko.co.za"},"repository":{"url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git","type":"git"},"_npmVersion":"10.9.0","description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"axios":"^1.6.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/unified-payment-gateway_1.0.3_1765193666852_0.2008401082402287","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@codeflex-dev/unified-payment-gateway","version":"1.0.4","description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"sideEffects":false,"scripts":{"build":"tsc","watch":"tsc --watch","prepublishOnly":"npm run build","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"keywords":["payment","gateway","paystack","yoco","unified","sdk"],"author":"","license":"ISC","repository":{"type":"git","url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git"},"bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","devDependencies":{"@types/jest":"^29.5.11","@types/node":"^20.10.0","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3"},"dependencies":{"axios":"^1.6.2"},"_id":"@codeflex-dev/unified-payment-gateway@1.0.4","gitHead":"1762aad25d6f5b4786bde05058ab62b17b417ecd","_nodeVersion":"24.11.1","_npmVersion":"10.9.0","dist":{"integrity":"sha512-mRTbhlIJKf4/bD+8Fi1EF3YjDb0UUlEd41V5iRUJsKF29jTC/h8UlRgzo8CEuFepzdkTmy4abGNVIHmXXB/PCw==","shasum":"d3418c247cf57dbfc78b755f54ca3272bace8ea3","tarball":"https://registry.npmjs.org/@codeflex-dev/unified-payment-gateway/-/unified-payment-gateway-1.0.4.tgz","fileCount":16,"unpackedSize":33752,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCkdWhq3mZyav9AF39zEK0bYTQDwB0pbEfXh81e3oWtMwIhAORJv29Tu55rwejUi7t/GoaOQ54Gglx19Z7HQ/e8OFHZ"}]},"_npmUser":{"name":"codeflex-dev","email":"sabelod@siko.co.za"},"directories":{},"maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unified-payment-gateway_1.0.4_1765197566779_0.5530145113370022"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-08T10:49:07.234Z","modified":"2025-12-08T12:39:27.140Z","1.0.0":"2025-12-08T10:49:07.451Z","1.0.1":"2025-12-08T11:20:23.331Z","1.0.2":"2025-12-08T11:24:10.159Z","1.0.3":"2025-12-08T11:34:26.995Z","1.0.4":"2025-12-08T12:39:26.945Z"},"bugs":{"url":"https://github.com/sabelod1982/unified-payment-gateway-package/issues"},"license":"ISC","homepage":"https://github.com/sabelod1982/unified-payment-gateway-package#readme","keywords":["payment","gateway","paystack","yoco","unified","sdk"],"repository":{"type":"git","url":"git+https://github.com/sabelod1982/unified-payment-gateway-package.git"},"description":"Unified payment gateway SDK supporting multiple providers (PayStack, Yoco, etc.)","maintainers":[{"name":"codeflex-dev","email":"sabelod@siko.co.za"}],"readme":"# Unified Payment Gateway SDK\r\n\r\nA centralized, reusable payment gateway SDK that supports multiple payment providers. Switch between providers (PayStack, Yoco, etc.) with a simple configuration flag - no code changes needed!\r\n\r\n## Features\r\n\r\n- 🎯 **Unified Interface** - Same API for all payment providers\r\n- 🔄 **Easy Provider Switching** - Change providers with a single config flag\r\n- 📦 **TypeScript Support** - Full type safety and IntelliSense\r\n- 🛡️ **Type-Safe** - Comprehensive TypeScript types for all operations\r\n- 🚀 **Zero Dependencies** - Minimal external dependencies\r\n- 🔌 **Extensible** - Easy to add new payment providers\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @codeflex-dev/unified-payment-gateway\r\n```\r\n\r\nOr if using as a local package in a monorepo:\r\n\r\n```bash\r\nnpm install ./path/to/payment-gateway\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { PaymentGatewayFactory } from '@codeflex-dev/unified-payment-gateway';\r\n\r\n// Create gateway instance with provider flag\r\nconst gateway = PaymentGatewayFactory.create({\r\n  provider: 'paystack', // or 'yoco'\r\n  publicKey: 'pk_test_...',\r\n  secretKey: 'sk_test_...',\r\n  testMode: true,\r\n});\r\n\r\n// Initialize payment\r\nconst payment = await gateway.initializePayment({\r\n  amount: { value: 1000, currency: 'NGN' },\r\n  customer: { email: 'customer@example.com' },\r\n  description: 'Payment for order #123',\r\n});\r\n\r\nconsole.log('Payment URL:', payment.authorizationUrl);\r\n```\r\n\r\n### Verify Payment\r\n\r\n```typescript\r\nconst verification = await gateway.verifyPayment({\r\n  reference: 'PSK_1234567890_abc123',\r\n});\r\n\r\nif (verification.success) {\r\n  console.log('Payment successful!', verification.amount);\r\n}\r\n```\r\n\r\n## Supported Providers\r\n\r\n### PayStack\r\n\r\n```typescript\r\nimport { PaymentGatewayFactory } from '@codeflex-dev/unified-payment-gateway';\r\n\r\nconst gateway = PaymentGatewayFactory.create({\r\n  provider: 'paystack',\r\n  publicKey: 'pk_test_...',\r\n  secretKey: 'sk_test_...',\r\n});\r\n```\r\n\r\n### Yoco\r\n\r\n```typescript\r\nimport { PaymentGatewayFactory } from '@codeflex-dev/unified-payment-gateway';\r\n\r\nconst gateway = PaymentGatewayFactory.create({\r\n  provider: 'yoco',\r\n  secretKey: 'sk_test_...',\r\n  testMode: true,\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n### PaymentGatewayFactory\r\n\r\n#### `create(config: GatewayConfig): IPaymentGateway`\r\n\r\nCreates a payment gateway instance based on the provider specified in config.\r\n\r\n**Parameters:**\r\n- `config.provider`: `'paystack' | 'yoco'` - The payment provider to use\r\n- `config.secretKey`: `string` - Secret key for the provider\r\n- `config.publicKey`: `string` - Public key (required for PayStack)\r\n- `config.testMode`: `boolean` - Enable test mode\r\n\r\n### IPaymentGateway\r\n\r\nAll gateway instances implement this interface:\r\n\r\n#### `initializePayment(request: PaymentRequest): Promise<PaymentResponse>`\r\n\r\nInitialize a new payment transaction.\r\n\r\n**Request:**\r\n```typescript\r\n{\r\n  amount: { value: number, currency: Currency },\r\n  customer: { email: string, firstName?: string, lastName?: string, phone?: string },\r\n  reference?: string,\r\n  description?: string,\r\n  callbackUrl?: string,\r\n  metadata?: Record<string, any>\r\n}\r\n```\r\n\r\n**Response:**\r\n```typescript\r\n{\r\n  success: boolean,\r\n  transactionId: string,\r\n  reference: string,\r\n  amount: Amount,\r\n  status: PaymentStatus,\r\n  authorizationUrl?: string,\r\n  message?: string,\r\n  metadata?: Record<string, any>\r\n}\r\n```\r\n\r\n#### `verifyPayment(request: VerifyPaymentRequest): Promise<VerifyPaymentResponse>`\r\n\r\nVerify a payment transaction status.\r\n\r\n**Request:**\r\n```typescript\r\n{\r\n  reference: string,\r\n  transactionId?: string\r\n}\r\n```\r\n\r\n**Response:**\r\n```typescript\r\n{\r\n  success: boolean,\r\n  transactionId: string,\r\n  reference: string,\r\n  amount: Amount,\r\n  status: PaymentStatus,\r\n  paidAt?: Date,\r\n  customer?: Customer,\r\n  metadata?: Record<string, any>\r\n}\r\n```\r\n\r\n## Usage Examples\r\n\r\n### Express.js Example\r\n\r\n```typescript\r\nimport express from 'express';\r\nimport { PaymentGatewayFactory } from '@codeflex-dev/unified-payment-gateway';\r\n\r\nconst app = express();\r\nconst gateway = PaymentGatewayFactory.create({\r\n  provider: process.env.PAYMENT_PROVIDER as 'paystack' | 'yoco',\r\n  publicKey: process.env.PAYMENT_PUBLIC_KEY!,\r\n  secretKey: process.env.PAYMENT_SECRET_KEY!,\r\n});\r\n\r\napp.post('/api/payments/initialize', async (req, res) => {\r\n  try {\r\n    const payment = await gateway.initializePayment({\r\n      amount: { value: req.body.amount, currency: 'NGN' },\r\n      customer: { email: req.body.email },\r\n      callbackUrl: req.body.callbackUrl,\r\n    });\r\n    res.json(payment);\r\n  } catch (error) {\r\n    res.status(500).json({ error: error.message });\r\n  }\r\n});\r\n\r\napp.get('/api/payments/verify/:reference', async (req, res) => {\r\n  try {\r\n    const verification = await gateway.verifyPayment({\r\n      reference: req.params.reference,\r\n    });\r\n    res.json(verification);\r\n  } catch (error) {\r\n    res.status(500).json({ error: error.message });\r\n  }\r\n});\r\n```\r\n\r\n### Environment-Based Provider Selection\r\n\r\n```typescript\r\nimport { PaymentGatewayFactory } from '@codeflex-dev/unified-payment-gateway';\r\n\r\n// Switch providers via environment variable\r\nconst getPaymentGateway = () => {\r\n  const provider = process.env.PAYMENT_PROVIDER || 'paystack';\r\n  \r\n  return PaymentGatewayFactory.create({\r\n    provider: provider as 'paystack' | 'yoco',\r\n    publicKey: process.env[`${provider.toUpperCase()}_PUBLIC_KEY`]!,\r\n    secretKey: process.env[`${provider.toUpperCase()}_SECRET_KEY`]!,\r\n    testMode: process.env.NODE_ENV !== 'production',\r\n  });\r\n};\r\n\r\nconst gateway = getPaymentGateway();\r\n```\r\n\r\n## Development\r\n\r\n### Building\r\n\r\n```bash\r\nnpm run build\r\n```\r\n\r\n### Watch Mode\r\n\r\n```bash\r\nnpm run watch\r\n```\r\n\r\n## Testing\r\n\r\nThe SDK includes comprehensive integration tests using Jest.\r\n\r\n### Running Tests\r\n\r\n```bash\r\n# Run all tests\r\nnpm test\r\n\r\n# Run tests in watch mode\r\nnpm run test:watch\r\n\r\n# Run tests with coverage\r\nnpm run test:coverage\r\n```\r\n\r\n### Test Structure\r\n\r\n- **`tests/integration/`** - Integration tests for all providers\r\n  - `PaymentGatewayFactory.test.ts` - Factory pattern tests\r\n  - `PayStackGateway.test.ts` - PayStack provider tests\r\n  - `YocoGateway.test.ts` - Yoco provider tests\r\n  - `UnifiedInterface.test.ts` - Unified interface consistency tests\r\n  - `ErrorHandling.test.ts` - Error handling and edge cases\r\n\r\n- **`tests/utils/`** - Test utilities and helpers\r\n  - `test-helpers.ts` - Mock data generators and API response mocks\r\n\r\n### Test Coverage\r\n\r\nThe test suite covers:\r\n- ✅ Provider initialization and configuration\r\n- ✅ Payment initialization\r\n- ✅ Payment verification\r\n- ✅ Error handling (network, API, validation)\r\n- ✅ Edge cases (missing data, invalid inputs)\r\n- ✅ Unified interface consistency across providers\r\n- ✅ Amount normalization\r\n- ✅ Reference generation\r\n\r\nAll tests use mocked HTTP requests, so no real API calls are made during testing.\r\n\r\n## Adding New Providers\r\n\r\nTo add a new payment provider:\r\n\r\n1. Create a new class extending `BasePaymentGateway`\r\n2. Implement `initializePayment` and `verifyPayment` methods\r\n3. Add the provider type to `PaymentProvider` in `types/index.ts`\r\n4. Add the provider case in `PaymentGatewayFactory.create()`\r\n\r\nExample:\r\n\r\n```typescript\r\nexport class NewProviderGateway extends BasePaymentGateway {\r\n  async initializePayment(request: PaymentRequest): Promise<PaymentResponse> {\r\n    // Implementation\r\n  }\r\n  \r\n  async verifyPayment(request: VerifyPaymentRequest): Promise<VerifyPaymentResponse> {\r\n    // Implementation\r\n  }\r\n  \r\n  getProvider(): string {\r\n    return 'newprovider';\r\n  }\r\n}\r\n```\r\n\r\n## License\r\n\r\nISC\r\n\r\nFun0D1@m!niss","readmeFilename":"README.md"}