{"_id":"@bernierllc/nevar-storage","_rev":"6-1915a9236c1133bd670a776f0665a3e1","name":"@bernierllc/nevar-storage","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.1":{"name":"@bernierllc/nevar-storage","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@bernierllc/nevar-storage@0.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3d756000d72b6b849b907be2b48f8d2d81d989e7","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.0.1.tgz","fileCount":2,"integrity":"sha512-D1uWgy+3nZIa5Cila2NQjCpOFtIfojziFJt2Y3dTYEp06AXW5VBamWn6vO66zqtTw6oFg1/UEZXLFkVNhvKR3g==","signatures":[{"sig":"MEUCIFfHcklJFdYXnif1W8WSb1dW0wom88uVJBgRSA4f0IjqAiEAuHY6FoZOvpfd02LA6ZbqZS5bHZhznT3693AiAIUqfRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2063},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.11.0","description":"OIDC trusted publishing setup package for @bernierllc/nevar-storage","directories":{},"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nevar-storage_0.0.1_1774655993200_0.063510985910459","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@bernierllc/nevar-storage","version":"0.1.0","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-storage@0.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"6b646dc3bdf839138da9446ad4377b9ec9035ef3","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.1.0.tgz","fileCount":9,"integrity":"sha512-V1uiYqENHemJiG56CiiY5h/ZhN4J2MJj0tL1a4kVaGkwV2PBehBB7cfYPkTvCq6c/60AEHz7wPrNurL7T/H+DQ==","signatures":[{"sig":"MEUCIAaWcQv5wl/eutEt+1yBRM5OHGFMSY8t80j8vpaGkZH0AiEA9dx55git9RgBTyECzZ1nH5NSEtfbrEtO749t/C4Wv8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31967},"main":"dist/index.js","_from":"file:bernierllc-nevar-storage-0.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:de5854b3-52d1-4607-a7b1-cd18c39f4e8d"}},"_resolved":"/home/runner/work/tools/tools/packages/service/nevar-storage/bernierllc-nevar-storage-0.1.0.tgz","_integrity":"sha512-V1uiYqENHemJiG56CiiY5h/ZhN4J2MJj0tL1a4kVaGkwV2PBehBB7cfYPkTvCq6c/60AEHz7wPrNurL7T/H+DQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"_npmVersion":"11.12.1","description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@bernierllc/nevar-types":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-storage_0.1.0_1774898487048_0.8106184199147637","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bernierllc/nevar-storage","version":"0.2.0","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-storage@0.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"13c608b8fb7dd4e09cfc8a9cb5c266cb7c2e1932","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.2.0.tgz","fileCount":9,"integrity":"sha512-I6IVUtrRParel8b6C6HPn3A57ZefeIOZ15XBzmuxD8zht1eROhHz04+inlLILm5b1qHwlY8eQekkhxDRsT8CVQ==","signatures":[{"sig":"MEYCIQDkNJ2Vy3xEKGJDP+Ih0UOH+Z1xCnJ9Awu3uvNrck8IWwIhAKRkx3khJprraZ5pDusimCgTFf25CHotjz+7GRrQY838","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31967},"main":"dist/index.js","_from":"file:bernierllc-nevar-storage-0.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:de5854b3-52d1-4607-a7b1-cd18c39f4e8d"}},"_resolved":"/home/runner/work/tools/tools/packages/service/nevar-storage/bernierllc-nevar-storage-0.2.0.tgz","_integrity":"sha512-I6IVUtrRParel8b6C6HPn3A57ZefeIOZ15XBzmuxD8zht1eROhHz04+inlLILm5b1qHwlY8eQekkhxDRsT8CVQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"_npmVersion":"11.14.1","description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/nevar-types":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-storage_0.2.0_1779133885430_0.30928791002768063","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bernierllc/nevar-storage","version":"0.3.0","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-storage@0.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"79d7546b5098c5a92ff321eeee98d7f97a74e137","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.3.0.tgz","fileCount":9,"integrity":"sha512-9iHcxtGjrHI+nyr8W93tVk+Sw+U2la+a5doVEUODtT8Ffnb4KYT/D1ZovU+CIycF5ReyQzv5l/460vwjNd6jng==","signatures":[{"sig":"MEQCIEfnZRMPtq7TW6p6Ja4P2OiW2lSgmOQevv424Z5LD+qbAiAw67RhIc/xfXPR3j1LESId3FCpN/n1Mjy1ZE8PEMv9SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31967},"main":"dist/index.js","_from":"file:bernierllc-nevar-storage-0.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:de5854b3-52d1-4607-a7b1-cd18c39f4e8d"}},"_resolved":"/home/runner/work/tools/tools/packages/service/nevar-storage/bernierllc-nevar-storage-0.3.0.tgz","_integrity":"sha512-9iHcxtGjrHI+nyr8W93tVk+Sw+U2la+a5doVEUODtT8Ffnb4KYT/D1ZovU+CIycF5ReyQzv5l/460vwjNd6jng==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"_npmVersion":"11.14.1","description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/nevar-types":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-storage_0.3.0_1779241788293_0.46781679175534774","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bernierllc/nevar-storage","version":"0.4.0","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-storage@0.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e37c84b3883eb93216a06db763d1d350a5016d06","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.4.0.tgz","fileCount":9,"integrity":"sha512-s5yi1wh06PQHZTqoth0abdc6EtRAroXVrz5pGhhjaE4HTZK29CTZsmVZsDDyB1MONqfYOf+MZFe3EnccHHA66Q==","signatures":[{"sig":"MEQCIFuwwaG5afkvWozPe2SrjmL2wRaB3ohOq0LFgQL6iMrMAiAJzZks5qW37DJ23rWJKliX1Y+U7rXQRJ1qA1ypr81auw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31967},"main":"dist/index.js","_from":"file:bernierllc-nevar-storage-0.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:de5854b3-52d1-4607-a7b1-cd18c39f4e8d"}},"_resolved":"/home/runner/work/tools/tools/packages/service/nevar-storage/bernierllc-nevar-storage-0.4.0.tgz","_integrity":"sha512-s5yi1wh06PQHZTqoth0abdc6EtRAroXVrz5pGhhjaE4HTZK29CTZsmVZsDDyB1MONqfYOf+MZFe3EnccHHA66Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"_npmVersion":"11.14.1","description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/nevar-types":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-storage_0.4.0_1779250537014_0.7875965249613979","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"_id":"@bernierllc/nevar-storage@0.4.1","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e2b58f474c6ca2aa7a6b8cb1884948fd8c6b2eb5","tarball":"https://registry.npmjs.org/@bernierllc/nevar-storage/-/nevar-storage-0.4.1.tgz","fileCount":9,"integrity":"sha512-Tx7Ad6IUJckIqolvaNCDtEWwuqCWROPQuTLZtA7VEwWOSnxtYxHUnOKF2U/TE10ESQePE+uVZGGhj8amms49Ew==","signatures":[{"sig":"MEYCIQCUVFQgaL5sUprZ4UUKABkTZAmPReT/lvfyH5qfsewHmQIhAL/2xtGGd011sHuljlrFZjoVVEXjAFaehFoD/lZaByze","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCiYmFw8nCK7gGQBYUyFxAvVDjQ/MK4joYYTRVWC2Im0QIhAPZhUFt8UJmLPgEkJu5D4FvSWp0+BXCfJuEBVuBotlLk"}],"unpackedSize":31968},"main":"dist/index.js","name":"@bernierllc/nevar-storage","_from":"file:bernierllc-nevar-storage-0.4.1.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"engines":{"node":">=16.0.0"},"license":"SEE LICENSE IN LICENSE","scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"version":"0.4.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"de5854b3-52d1-4607-a7b1-cd18c39f4e8d"}},"homepage":"https://github.com/bernierllc/tools#readme","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"_resolved":"/home/runner/work/tools/tools/packages/service/nevar-storage/bernierllc-nevar-storage-0.4.1.tgz","_integrity":"sha512-Tx7Ad6IUJckIqolvaNCDtEWwuqCWROPQuTLZtA7VEwWOSnxtYxHUnOKF2U/TE10ESQePE+uVZGGhj8amms49Ew==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"_npmVersion":"12.2.0","description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/nevar-types":"^0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nevar-storage_0.4.1_1790884429683_0.7276917023607026"}}},"time":{"created":"2026-03-27T23:59:53.081Z","modified":"2026-10-01T19:53:50.048Z","0.0.1":"2026-03-27T23:59:53.356Z","0.1.0":"2026-03-30T19:21:27.224Z","0.2.0":"2026-05-18T19:51:25.574Z","0.3.0":"2026-05-20T01:49:48.434Z","0.4.0":"2026-05-20T04:15:37.178Z","0.4.1":"2026-10-01T19:53:49.776Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/bernierllc/tools#readme","keywords":["nevar","rules-engine","storage","adapter","in-memory"],"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/nevar-storage"},"description":"Storage adapter interface and in-memory reference implementation for the Nevar rules engine","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/nevar-storage\n\nStorage adapter interface and in-memory reference implementation for the Nevar rules engine.\n\n## Installation\n\n```bash\nnpm install @bernierllc/nevar-storage\n```\n\n## Usage\n\n```typescript\nimport { InMemoryStorageAdapter, createAdapterConformanceTests } from '@bernierllc/nevar-storage';\n\nconst adapter = new InMemoryStorageAdapter();\n\n// Create a rule group\nconst group = await adapter.createGroup({\n  name: 'Production Rules',\n  slug: 'production-rules',\n  isActive: true,\n  isDefault: true,\n  rules: [],\n  metadata: { env: 'production' },\n  createdAt: new Date(),\n  updatedAt: new Date(),\n});\n```\n\n## Adapter Conformance Tests\n\nUse `createAdapterConformanceTests` to verify your custom adapter implementation:\n\n```typescript\nimport { createAdapterConformanceTests } from '@bernierllc/nevar-storage';\nimport { MyCustomAdapter } from './my-custom-adapter';\n\ndescribe('MyCustomAdapter', () => {\n  createAdapterConformanceTests(() => new MyCustomAdapter());\n});\n```\n\n## API\n\n### `InMemoryStorageAdapter`\n\nIn-memory reference implementation of `NevarStorageAdapter`. Suitable for testing, prototyping, and single-process deployments. Implements all CRUD operations for groups, rules, and execution logs.\n\n### `createAdapterConformanceTests(factory)`\n\nTest suite factory that validates a custom storage adapter implementation against the `NevarStorageAdapter` contract. Pass a factory function that creates a fresh adapter instance.\n\n### `makeGroupInput()` / `makeRuleInput()` / `makeLogEntry()`\n\nHelper functions for generating valid test fixtures for groups, rules, and execution log entries.\n\n### Re-exported Types\n\n- `NevarStorageAdapter` - Interface that all storage adapters must implement\n- `GroupFilters` / `RuleFilters` / `LogFilters` - Filter types for list operations\n- `PaginatedResult<T>` - Paginated response wrapper\n- `ExecutionLogEntry` - Audit log entry shape\n- `NevarStorageError` - Error class for storage operation failures\n\n## Integration Documentation\n\n### Logger Integration\n\nThis package supports optional integration with `@bernierllc/logger` for structured logging. Storage adapters should log CRUD operations and errors through logger for observability into data access patterns and failure modes.\n\n### NeverHub Integration\n\nThis package supports optional integration with `@bernierllc/neverhub-adapter`. When NeverHub is available, storage adapters can register for discovery and health monitoring, exposing metrics like operation counts and error rates. Graceful degradation is supported when NeverHub is not present.\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}