{"_id":"@digital-nature/licence-verifier","_rev":"6-e3be9899a088634c8aed052576875a96","name":"@digital-nature/licence-verifier","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@digital-nature/licence-verifier","version":"0.1.0","_id":"@digital-nature/licence-verifier@0.1.0","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"dist":{"shasum":"e741a00e819287dcb46a958f321e9e4525f7f4f5","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.1.0.tgz","fileCount":6,"integrity":"sha512-9CKaU7oVEHJ+eovDE8YHfPGUjJK9ioit3aCi14p5VyV3RSU4F0iB2wdDUicXwV1RS5Qwrc45cVlKp4RBCvQZ5w==","signatures":[{"sig":"MEYCIQDN+Em082jHQUbJJEhQYKZCLf5BCH/plSYPQwbOsVMeSgIhAIxEaPoL4Mhpuki6iocRcpoQ9UQUeGkZIwxOFAB+6XxR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18813},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"249db4788eb21c4651004c7c386f02161589769c","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"digital-nature","email":"hello@digital-nature.co.uk"},"_npmVersion":"10.9.0","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"_nodeVersion":"22.10.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/licence-verifier_0.1.0_1779541891384_0.8970779863740872","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@digital-nature/licence-verifier","version":"0.1.2","_id":"@digital-nature/licence-verifier@0.1.2","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"dist":{"shasum":"bd168b45ed1330f60fb8e7917380b7ee16b7b816","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.1.2.tgz","fileCount":6,"integrity":"sha512-jlyOihg7q1yxcz+eS/tujWFdPdM+9o57qWwlvdLzPnMcOxmdJhcMhYFF3KjpvEDIG84/7lxPhX97RpvsfzQfpQ==","signatures":[{"sig":"MEQCIH4t0sz515Az7F9SQt9TUKILnfbfUKaxcelqOp1/eJBLAiA7i7gIcQ5P1ci+iuJnT6rL8TNg+2W8uLE0ytcbc/b5pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@digital-nature%2flicence-verifier@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18964},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"84eaad85cf651f5215ee156b312e3676004d0f0e","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1b3795df-c5e6-4207-a98b-a8b15a48961a"}},"repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"_npmVersion":"11.12.1","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/licence-verifier_0.1.2_1779542266320_0.032956677029739145","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@digital-nature/licence-verifier","version":"0.2.0","_id":"@digital-nature/licence-verifier@0.2.0","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"dist":{"shasum":"607a5c435b875c3904c952f2ffe3032a7813ceb0","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.2.0.tgz","fileCount":6,"integrity":"sha512-HTkAMoJ1QdhFxi4+4quk6UP6x+vl1hrTYFLBjM5S9VKEQS2f5DZqvQRAvhEvPZeUylfo/7RF4+Wz1b9k8ZBhWA==","signatures":[{"sig":"MEUCIQD6Cf7LjuUBYj3vdeSWYczKIE5iw0Lfog97S4XLz4Uo1AIgGhh2oBBaFCe+pmX9A0k9EhwJk6A2dgwLj4P6vRmy1XQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@digital-nature%2flicence-verifier@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20858},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"10802db9733b1117895800a7b7671f6ae6654e17","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1b3795df-c5e6-4207-a98b-a8b15a48961a"}},"repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"_npmVersion":"11.12.1","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/licence-verifier_0.2.0_1779877412021_0.3498721509005627","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@digital-nature/licence-verifier","version":"0.2.1","_id":"@digital-nature/licence-verifier@0.2.1","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"dist":{"shasum":"a37932ecda43ba4cc404c05e487d8f7bfebf5821","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.2.1.tgz","fileCount":6,"integrity":"sha512-4RHnSNKasFUoxeLnge6UnIcxQDGHeAG3EqGNzf1HePCrKde1WqqHx/eZqvxgU4vuCj9UoqgWvJ6TOCasvR15cg==","signatures":[{"sig":"MEQCIDQBogcjzPtJZE8Lf60ChHWiL9riFtd8+aCoqbFeSKaBAiAWpeomE+714jQ3wMyH9bw93nZJwPoMszo4w71de93KKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@digital-nature%2flicence-verifier@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20858},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"07a4403d7a1b289b50f648c9a6938c1f10e473ee","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1b3795df-c5e6-4207-a98b-a8b15a48961a"}},"repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"_npmVersion":"11.13.0","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/licence-verifier_0.2.1_1780433189098_0.35646330421063044","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@digital-nature/licence-verifier","version":"0.3.0","_id":"@digital-nature/licence-verifier@0.3.0","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"dist":{"shasum":"167e88bbbba6ada1b625100bac47270973367cfb","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.3.0.tgz","fileCount":6,"integrity":"sha512-LC2vdQ9DRXFk11R2RM8ogpxS+cEtZ4XG08cTvUh7sKN1QpfgMri4QIYwRsn6wx0rlh052Du0BbzXTnfuUW4JrA==","signatures":[{"sig":"MEYCIQC6XoQ8aKt7iYN7DAOxjv+A/2lnkx4yN21C8geTIU/rPQIhAJmcMSwjPCqRmUVpPYbitVdnxqp4kK1tQ6+fQ7hfyKA/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@digital-nature%2flicence-verifier@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23676},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6273124862c3c018d1c5430b2494521a2742ace5","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7877f1ea-4556-4941-9085-c367a93b92e8"}},"repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"_npmVersion":"11.17.0","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/licence-verifier_0.3.0_1788027209969_0.4223240312491905","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@digital-nature/licence-verifier@0.4.0","bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"dist":{"shasum":"ee665e5f5f5075d14553691f1740bb97151b95ce","tarball":"https://registry.npmjs.org/@digital-nature/licence-verifier/-/licence-verifier-0.4.0.tgz","fileCount":6,"integrity":"sha512-GgQApcrdCuZH8o7ki4Yw43G8iV4SN22zlqSd2wHiXqV3SyZzNOM3zbud0ew95X2OQsf9vWDoLgbGnNVtNPuFCg==","signatures":[{"sig":"MEQCIQD69gfufMBHrzcME1D/f2zNLPCnHqLqy/AjFhfCEK3V+gIfIOVgxrxG1UnYLxAzrbcyt4cD+jE85krk09q6JPGvzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOnkBhr34WpyZAcgxGobftfsBGiTdpqv/vT/NG/0WEEgIhAOnQKbWWUuyomNWm/D9oL2ySQnJDUt812ELrJJY+NHea"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@digital-nature%2flicence-verifier@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27449},"main":"./dist/index.cjs","name":"@digital-nature/licence-verifier","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"17d2e5d1fe60271953389b25b067c7eb8715a898","scripts":{"test":"node --import tsx/esm --test tests/**/*.test.ts","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.4.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7877f1ea-4556-4941-9085-c367a93b92e8"}},"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"_npmVersion":"11.19.0","description":"JavaScript/TypeScript client for the Digital Nature licence verification API","directories":{},"maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/licence-verifier_0.4.0_1789669025254_0.8661182613296377"}}},"time":{"created":"2026-05-23T13:11:31.270Z","modified":"2026-09-17T18:17:05.832Z","0.1.0":"2026-05-23T13:11:31.544Z","0.1.2":"2026-05-23T13:17:46.471Z","0.2.0":"2026-05-27T10:23:32.177Z","0.2.1":"2026-06-02T20:46:29.246Z","0.3.0":"2026-08-29T18:13:30.097Z","0.4.0":"2026-09-17T18:17:05.365Z"},"bugs":{"url":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js/issues"},"homepage":"https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js#readme","repository":{"url":"git+https://github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-js.git","type":"git"},"description":"JavaScript/TypeScript client for the Digital Nature licence verification API","maintainers":[{"name":"digital-nature","email":"hello@digital-nature.co.uk"}],"readme":"# @digital-nature/licence-verifier\n\nJavaScript/TypeScript client for the [Digital Nature](https://digital-nature.co.uk) licence verification API.\n\n## Installation\n\n```bash\nnpm install @digital-nature/licence-verifier\n```\n\n## Usage\n\n```ts\nimport { LicenceVerifier } from '@digital-nature/licence-verifier'\n\nconst verifier = new LicenceVerifier({\n  baseUrl: 'https://verify.software.digital-nature.co.uk',\n})\n\n// Check a licence is valid\nconst result = await verifier.verify('XXXX-XXXX-XXXX-XXXX')\n// { valid: true, licenceKey: '...', productSlug: '...', status: 'active', expiresAt: null }\n\n// Activate a domain\nconst activation = await verifier.activate('XXXX-XXXX-XXXX-XXXX', 'example.com')\n// { activated: true, domain: 'example.com', domainType: 'production', activationsUsed: 1, activationLimit: 2 }\n\n// Deactivate a domain\nawait verifier.deactivate('XXXX-XXXX-XXXX-XXXX', 'example.com')\n\n// Get full licence info\nconst info = await verifier.info('XXXX-XXXX-XXXX-XXXX')\n// { licenceKey: '...', productSlug: '...', status: 'active', activationsUsed: 1, activationLimit: 2, domains: [...] }\n```\n\n## Packages, add-ons and free trials\n\n`verify` and `info` also say what the licence grants:\n\n```ts\nconst { package: pkg, addons, trials } = await verifier.verify(key)\n// pkg:    'club-platform'            — or null for an ordinary product\n// addons: ['club-platform-pitch-x-3'] — everything granted RIGHT NOW\n// trials: [{ addon: 'club-platform-pitch-x-3', endsAt: '2026-10-17T09:00:00.000Z' }]\n```\n\n- `addons` never includes a trial that has ended, so gating on `addons` alone\n  already enforces a trial's end.\n- `trials` says which of `addons` are on a free trial and when each stops. Use it\n  to show \"N days left\". `[]` when none, and from a server older than trials.\n- A cached `verify`/`info` result is never kept past the soonest trial end.\n\n## Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `baseUrl` | `string` | — | Base URL of the verify service |\n| `cacheTtl` | `number` | `30000` | Cache TTL in ms for `verify` and `info` responses. Set to `0` to disable. |\n| `fetch` | `typeof fetch` | `globalThis.fetch` | Override the fetch implementation (useful for testing) |\n\n## Error handling\n\nAll methods throw typed errors you can `instanceof` check:\n\n```ts\nimport {\n  LicenceNotFoundError,\n  LicenceExpiredError,\n  LicenceInactiveError,\n  ActivationLimitReachedError,\n  DomainAlreadyActiveError,\n  LicenceVerifierError,  // base class\n} from '@digital-nature/licence-verifier'\n\ntry {\n  await verifier.activate(key, domain)\n} catch (err) {\n  if (err instanceof ActivationLimitReachedError) {\n    // handle limit\n  } else if (err instanceof LicenceNotFoundError) {\n    // handle not found\n  }\n}\n```\n\n## Requirements\n\nNode.js 18 or later (uses native `fetch`).\n","readmeFilename":"README.md"}