{"_id":"@destiny-labs/reniec-sunat-client","_rev":"2-44f926ffe7c741350b8f3053cf6e5d6a","name":"@destiny-labs/reniec-sunat-client","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.2":{"name":"@destiny-labs/reniec-sunat-client","version":"1.0.2","keywords":["reniec","sunat","dni","ruc","peru","typescript"],"author":{"name":"DLabs Peru"},"license":"MIT","_id":"@destiny-labs/reniec-sunat-client@1.0.2","maintainers":[{"name":"destiny_zxy104","email":"patrick1254367@gmail.com"}],"homepage":"https://github.com/DLabsPeru/reniec-sunat-client-node#readme","bugs":{"url":"https://github.com/DLabsPeru/reniec-sunat-client-node/issues"},"dist":{"shasum":"d46496d2871cff04bf86543e8513e621cbbbf3af","tarball":"https://registry.npmjs.org/@destiny-labs/reniec-sunat-client/-/reniec-sunat-client-1.0.2.tgz","fileCount":9,"integrity":"sha512-wp6XGn6LzvBRiNzrCbgLHw1R51OHoSc/dFawQ+ZPECpbwcBJ4DQijQX1PED43QHG6DH4/dEP6e+x9t1D3RFKhw==","signatures":[{"sig":"MEUCIFs7xqW/M9JFetoSb5umsxGg5FG4BP7Y7pEN5nFOfVKPAiEA+U1TK+KP12xxMiehO2pPVuoWdn1ZP/R7w7aMioqUb8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67609},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f8985aba5e46a3a63d159f6a217b894bded54497","scripts":{"test":"vitest run","build":"tsup","check":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run check && npm test && npm run build"},"_npmUser":{"name":"destiny_zxy104","email":"patrick1254367@gmail.com"},"overrides":{"nanoid":"^3.3.18","esbuild":"^0.28.1"},"repository":{"url":"git+https://github.com/DLabsPeru/reniec-sunat-client-node.git","type":"git"},"_npmVersion":"10.9.2","description":"Cliente oficial TypeScript para la API RENIEC SUNAT de DLabs Peru.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/reniec-sunat-client_1.0.2_1787674882014_0.027235368780896163","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@destiny-labs/reniec-sunat-client","version":"1.0.3","description":"Cliente oficial TypeScript para la API RENIEC SUNAT de DLabs Peru.","keywords":["reniec","sunat","dni","ruc","peru","typescript"],"license":"MIT","author":{"name":"DLabs Peru"},"repository":{"type":"git","url":"git+https://github.com/DLabsPeru/reniec-sunat-client-node.git"},"bugs":{"url":"https://github.com/DLabsPeru/reniec-sunat-client-node/issues"},"homepage":"https://github.com/DLabsPeru/reniec-sunat-client-node#readme","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"engines":{"node":">=20"},"scripts":{"build":"tsup","check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run check && npm test && npm run build"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"overrides":{"esbuild":"^0.28.1","nanoid":"^3.3.18"},"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","vitest":"^3.2.4"},"gitHead":"ef837df4a8c4ced1abb40a6508ca181621696ede","_id":"@destiny-labs/reniec-sunat-client@1.0.3","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-QRcC/tWRJBfkhi0ABs+xhLrAubv6UqOEtMnfDYSKFJ3Np9eyZwMTpj3wxEIlvAPMX71Ty3m40N7G4Kt6ahCLVw==","shasum":"c563392b76ff6af3856b3187cbd5dfc6707cb30a","tarball":"https://registry.npmjs.org/@destiny-labs/reniec-sunat-client/-/reniec-sunat-client-1.0.3.tgz","fileCount":9,"unpackedSize":67208,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@destiny-labs%2freniec-sunat-client@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB++NPBl/ExaSYfnFn+FOqml29+GlLCk8AI7+pME7N63AiEA60Gn2d+wpMx/7CLePh0pu77cHuHIbe45TQIYyqxv8bw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:511003fe-fa01-4710-abe8-03e6fdd44d1b"}},"directories":{},"maintainers":[{"name":"destiny_zxy104","email":"patrick1254367@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/reniec-sunat-client_1.0.3_1787675920669_0.1467496022071073"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T16:21:21.870Z","modified":"2026-08-25T16:38:41.221Z","1.0.2":"2026-08-25T16:21:22.192Z","1.0.3":"2026-08-25T16:38:40.815Z"},"bugs":{"url":"https://github.com/DLabsPeru/reniec-sunat-client-node/issues"},"author":{"name":"DLabs Peru"},"license":"MIT","homepage":"https://github.com/DLabsPeru/reniec-sunat-client-node#readme","keywords":["reniec","sunat","dni","ruc","peru","typescript"],"repository":{"type":"git","url":"git+https://github.com/DLabsPeru/reniec-sunat-client-node.git"},"description":"Cliente oficial TypeScript para la API RENIEC SUNAT de DLabs Peru.","maintainers":[{"name":"destiny_zxy104","email":"patrick1254367@gmail.com"}],"readme":"# @destiny-labs/reniec-sunat-client\n\nCliente TypeScript para consumir el microservicio `reniec-sunat` desde Node.js.\nIncluye tipos, validacion de DNI/RUC, timeout, cancelacion y errores de API\nestructurados. No requiere dependencias en tiempo de ejecucion.\n\n## Requisitos\n\n- Node.js 20 o superior\n- TypeScript 5 o superior si el proyecto consumidor usa TypeScript\n\n## Instalacion\n\nEl paquete es publico y se distribuye mediante npmjs. No requiere token ni\narchivo `.npmrc`:\n\n```bash\nnpm install @destiny-labs/reniec-sunat-client\n```\n\n## Uso rapido\n\n```ts\nimport {\n  ReniecSunatApiError,\n  createReniecSunatClient\n} from \"@destiny-labs/reniec-sunat-client\";\n\nconst client = createReniecSunatClient({\n  timeoutMs: 15_000\n});\n\nconst health = await client.health();\nconst person = await client.getPersonByDni(\"71101328\");\nconst company = await client.getCompanyByRuc(\"20604633070\");\n\nconsole.log(health.status);\nconsole.log(person.firstNames, person.lastNames);\nconsole.log(company.businessName);\n\ntry {\n  await client.getCompanyByRuc(\"20114052311\");\n} catch (error) {\n  if (error instanceof ReniecSunatApiError) {\n    console.error(error.statusCode, error.code, error.requestId);\n  }\n}\n```\n\nLa URL de produccion ya esta configurada por defecto:\n\n```text\nhttps://api-reniec-sunat.destiny-peru.com\n```\n\nPara desarrollo local u otro ambiente:\n\n```ts\nconst client = createReniecSunatClient({\n  baseUrl: \"http://localhost:8080\",\n  headers: {\n    \"X-Request-ID\": \"demo-123\"\n  }\n});\n```\n\nSi el servicio incorpora autenticacion:\n\n```ts\nconst client = createReniecSunatClient({\n  bearerToken: process.env.RENIEC_SUNAT_TOKEN\n});\n```\n\n## Metodos\n\n```ts\nclient.health(options?)\nclient.getPersonByDni(dni, options?)\nclient.getCompanyByRuc(ruc, options?)\nclient.getTodayExchangeRate(options?)\nclient.getExchangeRateByDate(\"2026-07-28\", options?)\nclient.getExchangeRatesByMonth(2026, 7, options?)\n```\n\nCada metodo acepta un `AbortSignal` y headers adicionales:\n\n```ts\nconst controller = new AbortController();\n\nconst person = await client.getPersonByDni(\"71101328\", {\n  signal: controller.signal,\n  headers: {\n    \"X-Request-ID\": crypto.randomUUID()\n  }\n});\n```\n\n## Errores\n\n- `ReniecSunatValidationError`: DNI, RUC, fecha o periodo invalido.\n- `ReniecSunatApiError`: la API respondio con HTTP 4xx o 5xx.\n- `ReniecSunatTimeoutError`: se alcanzo el timeout configurado.\n- `ReniecSunatNetworkError`: no fue posible conectar con la API.\n\n`ReniecSunatApiError` expone `statusCode`, `code`, `requestId`, `path`,\n`details` y los helpers `isBadRequest`, `isNotFound`, `isUnauthorized`,\n`isBadGateway` e `isServiceUnavailable`.\n\n## Fechas\n\nEl cliente mantiene las fechas como cadenas ISO para evitar cambios silenciosos\npor zona horaria. Las fechas de negocio usan `YYYY-MM-DD` y los timestamps\nmantienen el formato enviado por la API.\n\n## Desarrollo\n\n```bash\nnpm install\nnpm run check\nnpm test\nnpm run build\n```\n\nPara verificar el contenido que se publicara:\n\n```bash\nnpm pack --dry-run\n```\n\n## Publicacion\n\nEl proyecto usa Release Please y Conventional Commits para administrar las\nversiones automaticamente:\n\n1. Un `feat:` genera una version minor.\n2. Un `fix:` genera una version patch.\n3. Un `feat!:` o `BREAKING CHANGE:` genera una version major.\n4. Release Please crea o actualiza el PR de release.\n5. Al fusionar el PR, se crea el tag `vX.Y.Z` y el GitHub Release.\n6. El paquete de esa version se prueba, compila y publica publicamente en npmjs.\n\nEl historial de versiones se conserva desde `1.0.1`. El paquete se publica\nbajo el scope `@destiny-labs` desde la version `1.0.2`. El manifest,\n`package.json`, `package-lock.json` y `CHANGELOG.md` se actualizan mediante el\nPR de release.\n\nLa publicacion utiliza npm Trusted Publishing mediante OIDC. El publicador\nconfiable debe autorizar el repositorio\n`DLabsPeru/reniec-sunat-client-node` y el workflow\n`release-please.yml`. Las publicaciones automatizadas no utilizan tokens npm\npersistentes. Un registro npm no permite reemplazar una version que ya fue\npublicada.\n\n## Migracion desde el scope anterior\n\nEl paquete publicado como `@destiny-peru/reniec-sunat-client` no puede cambiar\nde scope en npm. Los consumidores deben reemplazarlo por el paquete nuevo:\n\n```bash\nnpm uninstall @destiny-peru/reniec-sunat-client\nnpm install @destiny-labs/reniec-sunat-client\n```\n\nLos imports deben usar `@destiny-labs/reniec-sunat-client`. El paquete anterior\npuede marcarse como obsoleto indicando esta ruta de migracion.\n","readmeFilename":"README.md"}