{"_id":"@bernierllc/database-adapter-core","_rev":"15-7600b6e99c1fa85da3b8ad519d25045c","name":"@bernierllc/database-adapter-core","dist-tags":{"latest":"3.0.1"},"versions":{"1.0.0":{"name":"@bernierllc/database-adapter-core","version":"1.0.0","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.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":"e51911da83da8b0ba7134eb25a5e2784fbda70ae","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.0.tgz","fileCount":68,"integrity":"sha512-LnwCrRqN1UWs6cAnqgRPX0QeFPUHV9dzkJhUz9J6YVrseKPyFTrrkc82Q2JefZV9nvP+ZTGTQFUN3buMe55zxg==","signatures":[{"sig":"MEYCIQC8ojaXYsWGNAeCpp0y97rVHwcM8i13lDVw1ytG/kt/TgIhANJbVMo91wzQX/BLVVHYmrmFpRRqrkVHJvngtnMZK0Wc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72713},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"23821658847eb7712944196f63660495d06b311b","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.4.2","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/logger":"^1.0.0","@bernierllc/crypto-utils":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.0_1760322682211_0.6754237305647597","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/database-adapter-core","version":"1.0.1","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.1","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":"58352bb3c2a00a9bee090feb42de35aad1b9c856","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.1.tgz","fileCount":68,"integrity":"sha512-8b6ACA+Ljtn2aR+NPgJAbhobiVugW+iyrJ+TEZU6/fNlWALJmM4ROqmA+oIsuJEDujNMFUL/1E8jA/MJXicGSg==","signatures":[{"sig":"MEUCIQDikV56wMCwPDsUR+C4y9VQ6y3vKjmwMpxtwL3idRwz9gIgDdeaj/ltkt7Yltw7dVQyx7zCydpkyBMq6nM72pqiu18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/6deddeda1cbef6c1bb46ea7bf5528c2b/bernierllc-database-adapter-core-1.0.1.tgz","_integrity":"sha512-8b6ACA+Ljtn2aR+NPgJAbhobiVugW+iyrJ+TEZU6/fNlWALJmM4ROqmA+oIsuJEDujNMFUL/1E8jA/MJXicGSg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.7.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.3","@bernierllc/crypto-utils":"1.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.1_1766276704313_0.9361371789342998","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/database-adapter-core","version":"1.0.2","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.2","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":"1d0806ba947caacf6584893d89406ec3c2757049","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.2.tgz","fileCount":68,"integrity":"sha512-C+4S+9f5Fyq45joJU2UCWeWOiWBRv7ewUmLtHDqN5XoEN3R/ikatUdPsixVBaoH0GL/YuqIzFjkEy4eoknSq5Q==","signatures":[{"sig":"MEUCIQDRVxlVFhCrwFgeMd547DAMvYDRu7orCXjla5y/Uvg4RgIgMyMZgr8PsPIbSgWt8FEo0UoVinpjl3dZP/SLe1VRjjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/314783e8ea3830bf3223149130db8d10/bernierllc-database-adapter-core-1.0.2.tgz","_integrity":"sha512-C+4S+9f5Fyq45joJU2UCWeWOiWBRv7ewUmLtHDqN5XoEN3R/ikatUdPsixVBaoH0GL/YuqIzFjkEy4eoknSq5Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.7.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.3","@bernierllc/crypto-utils":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.2_1766283485772_0.2879827491705136","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/database-adapter-core","version":"1.0.3","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.3","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":"d4293b70ee93dda650b1f21af0428fb7e773969e","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.3.tgz","fileCount":68,"integrity":"sha512-wIpB5qjBvtqADI+Aq8S7illGuEnxjakEHZhWbGvzl3MKR9RC/9t7cTokYYQKoyN7pWAwTDxPE8ka50Jo9bYogQ==","signatures":[{"sig":"MEQCIEetBP63IJuJwBLbjGOz5gnWSSMUP8bvQegqEQGXP+BrAiAZzCa7BGgWEgh4sWZqqlawl1Z18a4ufRFC2cYIa9B5XQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/tmp/5c951a46020999a2865b0fc3bbfafd72/bernierllc-database-adapter-core-1.0.3.tgz","_integrity":"sha512-wIpB5qjBvtqADI+Aq8S7illGuEnxjakEHZhWbGvzl3MKR9RC/9t7cTokYYQKoyN7pWAwTDxPE8ka50Jo9bYogQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.7.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.4","@bernierllc/crypto-utils":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.3_1766437746334_0.5676168878657493","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/database-adapter-core","version":"1.0.4","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.4","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":"9befee8a2020227d98f654cae35878e178fe8528","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.4.tgz","fileCount":68,"integrity":"sha512-tObYmk9ZiCH9At9Q2Em3uOnOjFh3nX4GAl0+HArr2/BP3d66M873Szf5hzh2+HtiA6+gijd4YbeO29reWfjXnw==","signatures":[{"sig":"MEUCIAp3HOdtOfiyYw1aTuA95+6gA+eqHs8jAFw5/iRoUOQSAiEAmYSdwVP3cocR8ezrBRE6FgGHOpy8KEdRPxxm3R+heWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/tmp/29c11867afd006a09da483237971cfe5/bernierllc-database-adapter-core-1.0.4.tgz","_integrity":"sha512-tObYmk9ZiCH9At9Q2Em3uOnOjFh3nX4GAl0+HArr2/BP3d66M873Szf5hzh2+HtiA6+gijd4YbeO29reWfjXnw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.7.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.1.0","@bernierllc/crypto-utils":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.4_1766454390085_0.12157013707193554","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/database-adapter-core","version":"1.0.6","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.6","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":"76c506015a4abf2de25193238bfcfbff20686e45","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.6.tgz","fileCount":68,"integrity":"sha512-WEjWRpN7LlVBS2L3peiLaqDkoE5opv64C8QglJJ6x664jBrmZUzzYx7KLmURdFU7pWCMCDA7SVh8MmpGvbmWSQ==","signatures":[{"sig":"MEUCIENoT+rpUpXi0vUUjIwAtE2TsQk46NSVI8oLpYn9byw5AiEA2U7CVWn8RdmtQRgkF7aBrsNzy/R0BbYIRM+c0AoGAy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73630},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.3.0","@bernierllc/crypto-utils":"1.0.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.6_1767642437396_0.6818624734705416","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bernierllc/database-adapter-core","version":"1.0.7","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.7","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":"fe73dc81d50c1e981dc16c7751842c8913f86263","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.7.tgz","fileCount":68,"integrity":"sha512-QyXRTosNO3r2En8kPfX2IJtN1QQ3zp5oQKwveTQlLuMm6WrPeCvnZwz8lhzJeL8ouKWWmsjeq8vhQm911pkCOA==","signatures":[{"sig":"MEUCIQDXXh2BxXPoBFBLerwjoV2h2KCN2owoPfm8E9KjccU4CAIgXVsms3RHWBhf1QHl/Qvhl/nYVnUGKDPW5EoxRKJ+mHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.7.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/tmp/652bf270dc78dc796ddf311c54be7b5b/bernierllc-database-adapter-core-1.0.7.tgz","_integrity":"sha512-QyXRTosNO3r2En8kPfX2IJtN1QQ3zp5oQKwveTQlLuMm6WrPeCvnZwz8lhzJeL8ouKWWmsjeq8vhQm911pkCOA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.11.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.1","@bernierllc/crypto-utils":"1.0.7"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.7_1773078436283_0.7959507993099904","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@bernierllc/database-adapter-core","version":"1.0.8","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.8","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":"c066f2b5e9e949ff572f06d457a96cb10925c0ec","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.8.tgz","fileCount":68,"integrity":"sha512-JfcScYQlqPQ8fDOgARX7It7f7tJs0MuK3BMXoh9Y4OQGYWl3jHmDOQSeeWgrqnUtZdhurCKL/Y0TaDgNBi77kw==","signatures":[{"sig":"MEUCIHTvb58zw1AjrSlIwQEg3AkDUH5TshT4cAPnto4g8P5UAiEA1aH3SBVE1ph7OYLWR9M2EJkNjGnikew23xBQ/mijJ4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.8.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.0.8.tgz","_integrity":"sha512-JfcScYQlqPQ8fDOgARX7It7f7tJs0MuK3BMXoh9Y4OQGYWl3jHmDOQSeeWgrqnUtZdhurCKL/Y0TaDgNBi77kw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.11.0","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.2","@bernierllc/crypto-utils":"1.0.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.8_1773163147772_0.8253070920070575","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bernierllc/database-adapter-core","version":"1.0.9","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.9","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":"b023f98885f9c18539b55ba37a9c0008e543a5a5","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.9.tgz","fileCount":68,"integrity":"sha512-qXAn+vBfdEVtvQCcohd4RFMD0WA9nHH1JayBinPXpSV4zrxB0Polxq+E0eDjN3g75MXyhfxqiat6qhXpQIza2w==","signatures":[{"sig":"MEUCIHamoPDX+ykYbniL8YU/4IS+vCCRY7Goakio1sBRQK7hAiEAnHhIvgRQ/sEumWVoxkXg+YYCpuLh7IJjOuAt86XJm8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.9.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.0.9.tgz","_integrity":"sha512-qXAn+vBfdEVtvQCcohd4RFMD0WA9nHH1JayBinPXpSV4zrxB0Polxq+E0eDjN3g75MXyhfxqiat6qhXpQIza2w==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.0","@bernierllc/crypto-utils":"1.0.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.9_1779133430162_0.6865596002743815","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bernierllc/database-adapter-core","version":"1.0.10","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.10","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":"77d51e840c41649ca5e3db85737d3dc157498949","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.10.tgz","fileCount":68,"integrity":"sha512-SS4HQ+WKY5h+CNNNaJGASnnF/mRX+hp8t70hIUKWRLl9DdFegmmT98n6K4MYla7UcpIcBA+tzSgIgyP6LeVT8Q==","signatures":[{"sig":"MEUCIEj5utA9Nkse1zl05xfBNczHTh+z232GtZ7qUgj98hf7AiEAloLGNyPyUGcdkwYNv2usfEmUT1Zm2en9AU6i/OyK8BU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73573},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.10.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.0.10.tgz","_integrity":"sha512-SS4HQ+WKY5h+CNNNaJGASnnF/mRX+hp8t70hIUKWRLl9DdFegmmT98n6K4MYla7UcpIcBA+tzSgIgyP6LeVT8Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.2","@bernierllc/crypto-utils":"1.0.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.10_1779157180975_0.1555196552942617","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bernierllc/database-adapter-core","version":"1.0.11","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.0.11","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":"7c1fb84a46c2efc8934bff9db621168210ff6a41","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.0.11.tgz","fileCount":68,"integrity":"sha512-lUG2CyHrA+NDJsP4UZrhrc1CC9/DZIfjYEVEVxX09vUTX57Gp0FEcsGfbvdKA0sg0o+sbRj+p858sT9hqZXruQ==","signatures":[{"sig":"MEUCIHitvzo9PVgb2y1uc2AgpEPZnEo6QYWFysDft4EZwnXkAiEAz1SzZITipH0zypNKg1e1HTxP40AN+uC7tWPTt+25HtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73573},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.0.11.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.0.11.tgz","_integrity":"sha512-lUG2CyHrA+NDJsP4UZrhrc1CC9/DZIfjYEVEVxX09vUTX57Gp0FEcsGfbvdKA0sg0o+sbRj+p858sT9hqZXruQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3","@bernierllc/crypto-utils":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.0.11_1779221293630_0.30732663676418204","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/database-adapter-core","version":"1.1.0","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.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":"6cbfc293c766600a43eb236f23a79d746a2743bf","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.1.0.tgz","fileCount":68,"integrity":"sha512-tFQ1+Grp9XI0fvY77vwfynXbv+Gtj2/rxR5YkxieV45eN/85znkgcNkurfDgpRfy/h6DP9wV1jdf4DhiMuGaAg==","signatures":[{"sig":"MEUCIQCONPHR2++RH968C3aPbQv34sNSNKpkkZrI0k0RD223ygIgDmNY6qbZBN/daIpvi2NgbriK/rWJtDsTC2K4lWoy/T0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.1.0.tgz","_integrity":"sha512-tFQ1+Grp9XI0fvY77vwfynXbv+Gtj2/rxR5YkxieV45eN/85znkgcNkurfDgpRfy/h6DP9wV1jdf4DhiMuGaAg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@bernierllc/crypto-utils":"1.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.1.0_1779241102878_0.003559264073336399","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/database-adapter-core","version":"1.2.0","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@1.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":"163de776e7b511a8be48c920bf62419a7d3cc8d0","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-1.2.0.tgz","fileCount":68,"integrity":"sha512-nNyaoQ/sos46M6rxozC6f6Rgl1tpofU2S2T8bYbmOWeMeffCx3wpzd4HlpW8uMBvRojeKpev0G3Y/OKdZfIqLA==","signatures":[{"sig":"MEYCIQCS8SdaDu5HnD/ODWc5vUmtMpAyi1G3qYh9+mLGk7WOrgIhAObrjYpOb8Oh/HncnLQ8iVOuF4YgXXqz9ygnWk0TukNq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73572},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-1.2.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-1.2.0.tgz","_integrity":"sha512-nNyaoQ/sos46M6rxozC6f6Rgl1tpofU2S2T8bYbmOWeMeffCx3wpzd4HlpW8uMBvRojeKpev0G3Y/OKdZfIqLA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/crypto-utils":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_1.2.0_1779249846318_0.9350919316991815","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@bernierllc/database-adapter-core","version":"3.0.0","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/database-adapter-core@3.0.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":"15f71696c0c6326d0a3eace1e8f139d27250b6a6","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-3.0.0.tgz","fileCount":59,"integrity":"sha512-7zOiKhGjx+EScrveXtrawz3pQakSl593SN4b8rfMoLQf4J9n2sITKy6T/2yy07IWH6yBG3hbUjMNyBWm0f4T+g==","signatures":[{"sig":"MEQCIDUf7D3UTLd+6H4zEmn2ewKF4tOSOOE5zqSvOJkj6kVyAiAdhPueKTZAc7plrQweXpkR+A2SpU3Wbncs21wC8/MYlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71423},"main":"dist/index.js","_from":"file:bernierllc-database-adapter-core-3.0.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-3.0.0.tgz","_integrity":"sha512-7zOiKhGjx+EScrveXtrawz3pQakSl593SN4b8rfMoLQf4J9n2sITKy6T/2yy07IWH6yBG3hbUjMNyBWm0f4T+g==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/database-adapter-core"},"_npmVersion":"11.14.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/crypto-utils":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.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/database-adapter-core_3.0.0_1779301931577_0.909316613123281","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@bernierllc/database-adapter-core","version":"3.0.1","description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","main":"dist/index.js","types":"dist/index.d.ts","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/logger":"1.7.1","@bernierllc/crypto-utils":"1.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/database-adapter-core"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src/**/*.ts","clean":"rm -rf dist"},"_id":"@bernierllc/database-adapter-core@3.0.1","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-oNlpTR63N3eUFBVAQcUYE9kAD7NrDR8pC0ezyt49nuxiWI7+pLSBfffzhRM/93a5UlzPu+QoEOAq8xWsfJkmLg==","_resolved":"/home/runner/work/tools/tools/packages/core/database-adapter-core/bernierllc-database-adapter-core-3.0.1.tgz","_from":"file:bernierllc-database-adapter-core-3.0.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-oNlpTR63N3eUFBVAQcUYE9kAD7NrDR8pC0ezyt49nuxiWI7+pLSBfffzhRM/93a5UlzPu+QoEOAq8xWsfJkmLg==","shasum":"2c46d20091936665c87176ef501fe14a9d162ade","tarball":"https://registry.npmjs.org/@bernierllc/database-adapter-core/-/database-adapter-core-3.0.1.tgz","fileCount":59,"unpackedSize":71423,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCT6Yii86x81mmpCf1xFPVvIRSHp0Wsre24Tg1sK923CgIhAMvHBav9tlPjgxD1yXOW4O55bw3C+GiOGeyecgPGQ/x7"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bb0318e-3aff-4d0d-b1b8-07bbe1c13172"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/database-adapter-core_3.0.1_1784015581739_0.08685240087339197"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T02:31:22.091Z","modified":"2026-07-14T07:53:01.992Z","1.0.0":"2025-10-13T02:31:22.400Z","1.0.1":"2025-12-21T00:25:04.590Z","1.0.2":"2025-12-21T02:18:05.902Z","1.0.3":"2025-12-22T21:09:06.471Z","1.0.4":"2025-12-23T01:46:30.241Z","1.0.6":"2026-01-05T19:47:17.552Z","1.0.7":"2026-03-09T17:47:16.461Z","1.0.8":"2026-03-10T17:19:07.910Z","1.0.9":"2026-05-18T19:43:50.302Z","1.0.10":"2026-05-19T02:19:41.118Z","1.0.11":"2026-05-19T20:08:13.788Z","1.1.0":"2026-05-20T01:38:23.041Z","1.2.0":"2026-05-20T04:04:06.488Z","3.0.0":"2026-05-20T18:32:11.723Z","3.0.1":"2026-07-14T07:53:01.882Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/bernierllc/tools#readme","keywords":["database","adapter","interface","abstract","core","postgresql","mysql","sqlite","rls","migrations"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/database-adapter-core"},"description":"Abstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/database-adapter-core\n\nAbstract Database Interface for MECE Architecture - provides database-agnostic interfaces and base implementations for all database operations across BernierLLC tools.\n\n## Features\n\n- **Abstract Database Interfaces** - Clean, database-agnostic interfaces for all database operations\n- **Base Implementations** - Common functionality through abstract base classes\n- **Row Level Security (RLS)** - Built-in support for multi-tenant security and user-based access control\n- **Query Builder Foundation** - Type-safe SQL generation without string concatenation\n- **Migration System** - Schema migration tracking and execution\n- **Transaction Support** - ACID transaction interfaces\n- **Connection Pooling** - Interface for connection pool management\n- **Error Handling** - Structured error classes with sensitive data sanitization\n- **Type-Safe** - Full TypeScript support with strict mode\n- **Zero Runtime Overhead** - Pure interfaces and abstract classes\n\n## Installation\n\n```bash\nnpm install @bernierllc/database-adapter-core\n```\n\n## Usage\n\n### Creating a Database Adapter\n\nExtend `BaseDatabaseAdapter` to create a concrete database implementation:\n\n```typescript\nimport {\n  BaseDatabaseAdapter,\n  IDatabaseConfig,\n  IQueryResult,\n  ITransaction,\n  IDatabaseHealth,\n  ConnectionError\n} from '@bernierllc/database-adapter-core';\n\nclass PostgreSQLAdapter extends BaseDatabaseAdapter {\n  private pool: pg.Pool;\n\n  async connect(): Promise<void> {\n    try {\n      this.pool = new pg.Pool({\n        host: this.config.host,\n        port: this.config.port,\n        database: this.config.database,\n        user: this.config.username,\n        password: this.config.password\n      });\n\n      await this.pool.connect();\n      this.connected = true;\n    } catch (error) {\n      throw new ConnectionError(\n        'Failed to connect to PostgreSQL',\n        'CONNECTION_FAILED',\n        error as Error,\n        this.config.host,\n        this.config.port\n      );\n    }\n  }\n\n  async disconnect(): Promise<void> {\n    await this.pool.end();\n    this.connected = false;\n  }\n\n  async query<T>(sql: string, params?: any[]): Promise<IQueryResult<T>> {\n    this.ensureConnected();\n\n    try {\n      const result = await this.pool.query(sql, params);\n      return {\n        rows: result.rows as T[],\n        rowCount: result.rowCount || 0,\n        fields: result.fields.map(f => ({\n          name: f.name,\n          dataTypeID: f.dataTypeID,\n          dataTypeName: f.dataTypeName,\n          nullable: true\n        })),\n        command: result.command\n      };\n    } catch (error) {\n      throw this.sanitizeError(error);\n    }\n  }\n\n  async beginTransaction(): Promise<ITransaction> {\n    this.ensureConnected();\n    // Implementation details...\n  }\n\n  async healthCheck(): Promise<IDatabaseHealth> {\n    const start = Date.now();\n    await this.query('SELECT 1');\n    const latencyMs = Date.now() - start;\n\n    return {\n      connected: this.connected,\n      latencyMs,\n      version: '15.0',\n      activeConnections: this.pool.totalCount,\n      maxConnections: this.pool.options.max\n    };\n  }\n}\n```\n\n### Using Row Level Security (RLS)\n\n```typescript\nimport { RLSContextManager, IRLSContext } from '@bernierllc/database-adapter-core';\n\nconst rlsManager = new RLSContextManager();\n\n// Set RLS context for multi-tenant security\nconst context: IRLSContext = {\n  userId: 'user-123',\n  userRole: 'admin',\n  tenantId: 'tenant-456',\n  claims: { department: 'engineering' }\n};\n\n// Execute operations with RLS context\nawait rlsManager.withContext(context, async () => {\n  // All database operations here will have RLS context applied\n  const users = await adapter.query('SELECT * FROM users');\n  // PostgreSQL RLS policies will automatically filter based on context\n});\n\n// Generate PostgreSQL SET statements for RLS\nrlsManager.setContext(context);\nconst statements = rlsManager.generateRLSStatements();\n// [\n//   'SET LOCAL \"app.user_id\" = \\'user-123\\';',\n//   'SET LOCAL \"app.user_role\" = \\'admin\\';',\n//   'SET LOCAL \"app.tenant_id\" = \\'tenant-456\\';',\n//   'SET LOCAL \"app.claims\" = \\'{\"department\":\"engineering\"}\\';'\n// ]\n```\n\n### Building Type-Safe Queries\n\n```typescript\nimport { BaseQueryBuilder } from '@bernierllc/database-adapter-core';\n\nclass PostgreSQLQueryBuilder extends BaseQueryBuilder<User> {\n  insert(data: Partial<User>): this {\n    // Implementation for INSERT\n    return this;\n  }\n\n  update(data: Partial<User>): this {\n    // Implementation for UPDATE\n    return this;\n  }\n\n  delete(): this {\n    // Implementation for DELETE\n    return this;\n  }\n\n  build(): { sql: string; params: any[] } {\n    // Build PostgreSQL-specific SQL\n    let sql = `SELECT ${this._select.join(', ')} FROM ${this._from}`;\n    if (this._where.length > 0) {\n      sql += ` WHERE ${this._where.join(' AND ')}`;\n    }\n    return { sql, params: this._params };\n  }\n}\n\n// Usage\nconst query = new PostgreSQLQueryBuilder()\n  .select('id', 'name', 'email')\n  .from('users')\n  .where('age > $1', [18])\n  .where('status = $2', ['active'])\n  .orderBy('name', 'ASC')\n  .limit(10)\n  .offset(20);\n\nconst result = await query.execute(adapter);\n```\n\n### Managing Migrations\n\n```typescript\nimport {\n  BaseMigrationManager,\n  IMigration,\n  IDatabaseAdapter\n} from '@bernierllc/database-adapter-core';\n\nconst migrations: IMigration[] = [\n  {\n    id: '001',\n    name: 'create_users_table',\n    async up(adapter: IDatabaseAdapter) {\n      await adapter.query(`\n        CREATE TABLE users (\n          id SERIAL PRIMARY KEY,\n          name VARCHAR(255) NOT NULL,\n          email VARCHAR(255) UNIQUE NOT NULL,\n          created_at TIMESTAMPTZ DEFAULT NOW()\n        )\n      `);\n    },\n    async down(adapter: IDatabaseAdapter) {\n      await adapter.query('DROP TABLE users');\n    }\n  },\n  {\n    id: '002',\n    name: 'add_users_status',\n    async up(adapter: IDatabaseAdapter) {\n      await adapter.query(`\n        ALTER TABLE users ADD COLUMN status VARCHAR(50) DEFAULT 'active'\n      `);\n    },\n    async down(adapter: IDatabaseAdapter) {\n      await adapter.query('ALTER TABLE users DROP COLUMN status');\n    }\n  }\n];\n\nconst migrationManager = new BaseMigrationManager(adapter, migrations);\n\n// Run pending migrations\nawait migrationManager.up();\n\n// Get migration status\nconst status = await migrationManager.status();\nconsole.log(status);\n// [\n//   { id: '001', name: 'create_users_table', status: 'applied', appliedAt: Date },\n//   { id: '002', name: 'add_users_status', status: 'applied', appliedAt: Date }\n// ]\n\n// Rollback last migration\nawait migrationManager.down();\n```\n\n### Error Handling\n\n```typescript\nimport {\n  DatabaseError,\n  ConnectionError,\n  QueryError\n} from '@bernierllc/database-adapter-core';\n\ntry {\n  await adapter.connect();\n} catch (error) {\n  if (error instanceof ConnectionError) {\n    console.error(`Connection failed: ${error.host}:${error.port}`);\n    console.error(`Error code: ${error.code}`);\n  }\n}\n\ntry {\n  await adapter.query('SELECT * FROM users WHERE id = $1', [userId]);\n} catch (error) {\n  if (error instanceof QueryError) {\n    console.error(`Query failed: ${error.query}`);\n    console.error(`Parameters: ${error.params}`);\n  }\n}\n```\n\n## API Reference\n\n### Interfaces\n\n#### `IDatabaseAdapter`\nMain adapter interface that all concrete adapters must implement.\n\n**Methods:**\n- `connect(): Promise<void>` - Connect to database\n- `disconnect(): Promise<void>` - Disconnect from database\n- `isConnected(): boolean` - Check connection status\n- `query<T>(sql: string, params?: any[]): Promise<IQueryResult<T>>` - Execute query\n- `beginTransaction(): Promise<ITransaction>` - Begin transaction\n- `healthCheck(): Promise<IDatabaseHealth>` - Check database health\n\n#### `ITransaction`\nTransaction interface for ACID operations.\n\n**Methods:**\n- `query<T>(sql: string, params?: any[]): Promise<IQueryResult<T>>` - Execute query in transaction\n- `commit(): Promise<void>` - Commit transaction\n- `rollback(): Promise<void>` - Rollback transaction\n- `isActive(): boolean` - Check if transaction is active\n\n#### `IQueryResult<T>`\nQuery result with metadata.\n\n**Properties:**\n- `rows: T[]` - Result rows\n- `rowCount: number` - Number of rows returned\n- `fields: IFieldInfo[]` - Field metadata\n- `command: string` - SQL command (SELECT, INSERT, UPDATE, DELETE)\n\n#### `IDatabaseConfig`\nDatabase connection configuration.\n\n**Properties:**\n- `type: 'postgresql' | 'mysql' | 'sqlite' | 'mssql'` - Database type\n- `host?: string` - Host address\n- `port?: number` - Port number\n- `database: string` - Database name\n- `username?: string` - Username\n- `password?: string` - Password\n- `ssl?: boolean | object` - SSL configuration\n- `pooling?: object` - Connection pooling settings\n\n#### `IRLSContext`\nRow Level Security context.\n\n**Properties:**\n- `userId: string` - User ID\n- `userRole: string` - User role\n- `tenantId?: string` - Tenant ID (optional)\n- `claims?: Record<string, any>` - Additional claims (optional)\n\n### Base Classes\n\n#### `BaseDatabaseAdapter`\nAbstract base class providing common adapter functionality.\n\n**Methods:**\n- `isConnected(): boolean` - Returns connection status\n- `ensureConnected(): void` - Throws error if not connected\n- `sanitizeError(error: unknown): Error` - Removes sensitive data from errors\n\n#### `BaseQueryBuilder<T>`\nAbstract query builder with fluent API.\n\n**Methods:**\n- `select(...columns: string[]): this`\n- `from(table: string): this`\n- `where(condition: string, params?: readonly unknown[]): this`\n- `whereIn(column: string, values: readonly unknown[]): this`\n- `join(table: string, condition: string): this`\n- `leftJoin(table: string, condition: string): this`\n- `orderBy(column: string, direction?: 'ASC' | 'DESC'): this`\n- `limit(count: number): this`\n- `offset(count: number): this`\n- `execute(adapter: IDatabaseAdapter): Promise<IQueryResult<T>>`\n\n#### `BaseMigrationManager`\nMigration manager for schema changes.\n\n**Methods:**\n- `up(): Promise<void>` - Run pending migrations\n- `down(): Promise<void>` - Rollback last migration\n- `status(): Promise<IMigrationStatus[]>` - Get migration status\n\n### Utilities\n\n#### `RLSContextManager`\nRow Level Security context manager.\n\n**Methods:**\n- `setContext(context: IRLSContext): void` - Set RLS context\n- `getContext(): IRLSContext | null` - Get current context\n- `clearContext(): void` - Clear context\n- `withContext<T>(context: IRLSContext, fn: () => Promise<T>): Promise<T>` - Execute with context\n- `generateRLSStatements(): string[]` - Generate PostgreSQL SET statements\n\n### Error Classes\n\n- `DatabaseError` - Base database error\n- `ConnectionError` - Connection-specific errors\n- `QueryError` - Query-specific errors\n\n## Integration Status\n\n### Logger Integration\n**Status**: Optional - Can be integrated for error logging and query tracing\n\nAdapters can optionally use `@bernierllc/logger` for:\n- Connection lifecycle logging\n- Query execution tracing\n- Error logging with context\n\n### Docs-Suite Integration\n**Status**: Ready\n\nThis package includes complete JSDoc/TypeDoc comments and can be integrated with documentation generators:\n- All public APIs documented\n- Interface documentation complete\n- Examples included\n\n### NeverHub Integration\n**Status**: Not Applicable\n\nThis is a pure interface package with no runtime behavior requiring service discovery or event communication.\n\n## Dependencies\n\n- `@bernierllc/logger` - Structured logging (optional usage)\n- `@bernierllc/crypto-utils` - For secure token generation in adapters\n\n## Testing\n\nThis package has comprehensive test coverage:\n- **90.27%** statement coverage\n- **90.47%** branch coverage\n- **100%** function coverage\n- **90%** line coverage\n- **65 passing tests**\n\nRun tests:\n```bash\nnpm test              # Watch mode\nnpm run test:run      # Single run\nnpm run test:coverage # With coverage report\n```\n\n## Building\n\n```bash\nnpm run build   # Compile TypeScript\nnpm run lint    # Run ESLint\nnpm run clean   # Remove build artifacts\n```\n\n## Related Packages\n\n### Depends On\n- [@bernierllc/logger](../logger) - Structured logging\n- [@bernierllc/crypto-utils](../crypto-utils) - Cryptographic utilities\n\n### Used By\n- `@bernierllc/database-adapter-postgresql` - PostgreSQL implementation (coming soon)\n- `@bernierllc/content-storage-adapter` - Content CRUD operations (coming soon)\n- All packages requiring database access\n\n### Part Of\n- **content-management-suite** - Database foundation layer\n\n## Design Philosophy\n\nThis package follows MECE (Mutually Exclusive, Collectively Exhaustive) architecture principles:\n\n- **Abstract Interfaces** - No concrete database implementations\n- **Single Responsibility** - Pure interface definitions and base utilities\n- **Zero Coupling** - Implementations are separate packages\n- **Adapter Pattern** - Clean abstraction layer for all database operations\n\nBy keeping interfaces separate from implementations, we enable:\n- **Pluggable Backends** - Switch databases without changing application code\n- **Testability** - Mock adapters easily for testing\n- **Flexibility** - Support multiple databases simultaneously\n- **Maintainability** - Changes to one adapter don't affect others\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\nThis file is licensed to the client under a limited-use license. The client may use and modify this code *only within the scope of the project it was delivered for*. Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n","readmeFilename":"README.md"}