{"_id":"namespace-guard","_rev":"24-5c83d0962665a2104602e1800f0ae605","name":"namespace-guard","dist-tags":{"latest":"0.22.0"},"versions":{"0.1.0":{"name":"namespace-guard","version":"0.1.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.1.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://github.com/paultendo/namespace-guard#readme","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"191811b9e618e90b487e65fe3f03344cf8e24459","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.1.0.tgz","fileCount":30,"integrity":"sha512-60+7H+/7dfkXiUFcuV2hCWLwhGcG3WTWMfMuUdQAS3kYqyJ5w4HwK8BVnm68M4HBDIubI71TgcIyyXZ1h5N6wA==","signatures":[{"sig":"MEUCIQCtTd6iyCHY5r8kEiYQpNQiAHXZFD+N377CePMxPuo1nwIgIqbihbu/EDCOmvxxAo/4bvq9iVkzH4xKro6sHyw2qmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71284},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"}},"gitHead":"28eda3c73b5fcf5ac0860dc3e3c9e787091332c5","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.1.0_1771545646984_0.4420249202495039","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"namespace-guard","version":"0.1.2","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.1.2","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"7a6330bddb9a35de7f31c97cbb959586526da03a","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.1.2.tgz","fileCount":30,"integrity":"sha512-56SZ52CCL1EY5I13L6dInjaYDP/ZyJg5+VIQzqt8UlOFodzgoUjmeWbzTyvVWC7nqsVwlrdr4e1hRZBsdAj8gw==","signatures":[{"sig":"MEQCIC06/pUe5Dzw0wCBO62ikblU1xh7me9cNYzcCUDDkV5HAiB0J/Kd0DIa8hEmbhmPiHIKpZ7aioMeMNSUf/mozfWnQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71628},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"}},"gitHead":"0434a8ec1d90618932b71f88c7e2d4f5b38bcb42","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.1.2_1771546505480_0.613451331302272","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"namespace-guard","version":"0.2.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.2.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"415a3cc0f08cdcb77d95606d836b5d8cb0a27e2a","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.2.0.tgz","fileCount":30,"integrity":"sha512-t2SAuwOlD8UkxVKhsnJy8eoxXb5K5um3QtlYfu7/1KoLmk3HglDXalowJ97ZhJILEQ/q0X9TpsnzX4IBGNQwbA==","signatures":[{"sig":"MEUCIBjNgY9W+kSpvUQrn3iKpFv2KubyB+oVLtRmafaMTGySAiEA8Dk3rcHeXGuvUz2ZThIeNY1DG1otdPf6SomSwuse/OE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81042},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"}},"gitHead":"7001ee303cc16b00d3b0f76ca0ca70a5dbbf761c","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.2.0_1771581014411_0.7199954226179797","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"namespace-guard","version":"0.4.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.4.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"80131351d6b8d4db7ef97b2436b67d3fc2198d8d","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.4.0.tgz","fileCount":46,"integrity":"sha512-aHNrGhhDjFq7Xmblr6nciFAy+aRVI6ExQfnOMPTqpmwtZzcUeA9zGCheB6zY7jix+taY2J8+VEHzf5+jPslLoA==","signatures":[{"sig":"MEYCIQCDfKDnBZrsmjw3Ud5nePUGAVxZvYeXCl8mdWuqIcbtYQIhANFKNc4AktPXwavWNtOrvcfX3O4e1FBziWGX9rnqQAcu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121632},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"e4bf1ee5ca953fa444d5e3885ff7f205836b74d6","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.4.0_1771583051112_0.7778174403873159","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"namespace-guard","version":"0.6.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.6.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"66180375d50843b0787a627fcb211620f9479be3","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.6.0.tgz","fileCount":46,"integrity":"sha512-F/W6PRx+IRyXz5uVraf+V/5jEYjcmJYKxvm1sW4fhFCM4ePkZwF2AlVuN10AQpcL3ppyEBseM2W9TBH6HJhlLg==","signatures":[{"sig":"MEYCIQCdbov1ZuXz0MIxWdrxvtm4Jl8ShFpivxRNmVjI/LTSawIhAN8APbmoojCf9ExunDQV11jfvWzTKRuxRZcdts6rbvVm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152840},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"53ee92f20d93b4b10f570bb8bfe74c20a8dc97af","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.6.0_1771585993693_0.27736394182553115","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"namespace-guard","version":"0.6.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.6.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"196e1e725cb2decd960799ba899a2ec075e4ee63","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.6.1.tgz","fileCount":46,"integrity":"sha512-lrdgv9HkJ/CnibrT78FAbRZcF++O0vpBdNiv3HfMm+tHDc6ZUmveYysqT3qB4AiLfYG8SWI7tYGss6KRILlgrA==","signatures":[{"sig":"MEUCIBW/pkPoTZEGY2I602qnQK4MbLgvUsOsv2UZ+VAjp8dyAiEAsO6VXZrLhtg9Ti58EBRkcm74tVw6xun4jgvvH2v8ZEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152837},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"048f4d3d09c668a2867a60c05a89247286bb529a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.6.1_1771586288366_0.7353297474427336","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"namespace-guard","version":"0.7.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.7.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"a15d58572d6de112f284e29be3f5f59cd3520cb7","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.7.0.tgz","fileCount":47,"integrity":"sha512-L8gW11+9yuT42qeWiYaMZWxSy8l2u1FRefis/sLs8ZRBBbcY5Jy6dYD8rK2NBxKfivNfuJXwFzYea+ZmjBhsRQ==","signatures":[{"sig":"MEYCIQDMI0sv6sZeLsXwVK+K23HO2z1PVPMwFtVoFRNqf4r0JQIhAK3qz1CvcmhYqZ2Gt29dNt9IaHNFBquTkbObY5lD+PRQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167268},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"269cffe478db923bcec11b2e445b4f25557b0d46","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.7.0_1771618713676_0.20958785219106324","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"namespace-guard","version":"0.8.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.8.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"77739dd3f38e6c69b97f72ed5db4000deaa478ad","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.8.1.tgz","fileCount":47,"integrity":"sha512-YVprK5Q+1T0a08BmNBZ/P8W6H/rAJMA3rTuV+AQbTtWT2FdUQQqu9EXWsnkgGAMIuV2F+YtOg16sN3O156aqMg==","signatures":[{"sig":"MEUCIE4l+dhA8rKLyP3aPjw9JVP4g+OSs3jvch5x8yC1sJg4AiEAuPdlG2BoMImEOTnbc8Yibf02IW1jupfL/VNDQKyZP1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195386},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"269cffe478db923bcec11b2e445b4f25557b0d46","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.8.1_1771626096369_0.9145965083161549","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"namespace-guard","version":"0.8.2","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.8.2","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"6989f0a91efe2a5450eb92c70b4b3e950ed89ec2","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.8.2.tgz","fileCount":47,"integrity":"sha512-LoQ1dgKbthgK801Uzh26MAk08BRiQBZHw029xS4XBimaLBroQgW12srphKLzx33nUR8S7vpjujP35dzK6uFu6g==","signatures":[{"sig":"MEUCIDDvQBjzs6i6BLyDfPrRVXPLWgE+8gHIZCyABZmQz16xAiEAwErRCuKRjlmRvBq8jrw/WqBzInajboLE4LK8vlmtVq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196331},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"b502bc282db618424ec76fa08530fb948b9190a7","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.8.2_1771786888345_0.04499203880253133","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"namespace-guard","version":"0.10.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.10.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"25bfadc90db397b5460a82873e5e4f9935441354","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.10.0.tgz","fileCount":47,"integrity":"sha512-ZTSw/zT1eC2ILgtS7ju7LfRM37EleJI+kt+sDi0LgZu8KtGGNm2V2Hkdahbo7YZCKcSXItuvObrgqA058mxr9g==","signatures":[{"sig":"MEYCIQDrJOCzn4XW6l+3oG206crnbb5Am0F99DywTpg9+inhpwIhANAzxAaOdG9/sImQlszva9gSZ1FGueAF4mGZ+XMCSW2c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276625},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"0afd304b92d354689a34bb160a9edb253176b48b","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.10.0_1771798369082_0.5060411029712748","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"namespace-guard","version":"0.11.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.11.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"5f271967547beb4a73ec46fa46008f8728f02425","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.11.0.tgz","fileCount":47,"integrity":"sha512-DmkZM7NX38uxoJx9ITH/Qpz5Ugz+xd5caB1JdzYIw8XP9Q/sdhz4YQAQ6CGVbiqKL7CXcu+ZIWzxtHCPV5k4zw==","signatures":[{"sig":"MEUCIG+CMZMSO4Iwjto0+i4onEXVbdFN04KH3Dw7op3p1hlbAiEAkbWZrtTRzqV3vozhK04bpzvSuRlnM/Gd3LN+hDCv9n4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281416},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"4bb400411d8c9702e55c68adefc1efe63ef5548c","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.11.0_1771803324098_0.01497980581409819","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"namespace-guard","version":"0.11.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.11.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"0fb741d96282958731a1dbb17300f14aac094b8d","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.11.1.tgz","fileCount":47,"integrity":"sha512-iKuxwbHcY+IcL+u6HaYRJ2Q3ADHxfM5yD/53pBn8HmE9t8I1TrfRmHCWx0F9rViU2yRDfyx34t37C+ahOtS8Ng==","signatures":[{"sig":"MEUCIQChitu4N8+BW3vlm0ymd9ljDpk0pjn+IBLIdtXgwXSC8AIgDd+aKFaSzkOlhCmWwxHIOIRP2GJviZoe/Eku7VRr71A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281648},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"}},"gitHead":"b0497d8c59c88c2781f0513eeca51313160226f2","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.11.1_1771805541734_0.07473971006358004","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"namespace-guard","version":"0.15.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.15.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"842ec8c83c5a6af10ec86fdfe35aff5fed78b9fd","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.15.0.tgz","fileCount":55,"integrity":"sha512-0CD1nwzVYw3RO96cQQl34yUiXN/o/zqy/zUy43SiS+r6bBMqqqXDsyLapK8rrdovXxKbd07IF5gLylLl24MKxA==","signatures":[{"sig":"MEQCIErK6nO3+tLfjZ/i48KMoMai5UXq9j85SjOP4xINQ/sUAiAtilAZkC2+FKPvzpGwvJXEapSUcuDQtVWg1qLQkzXQkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819659},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"ed24953ffa6a4ad443dfef0f531f506fcc4e8a6e","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.15.0_1771984070265_0.43516778026257485","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"namespace-guard","version":"0.15.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.15.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"0668c4d66a35ec395658f344d6f8dfbe1f6add81","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.15.1.tgz","fileCount":55,"integrity":"sha512-/I7hUf9ZjWM3jpWS+SWdkmp6dc22hZ/w17HKu9jjbnf8RDVmu6ArZBX/pvrzfVpPJlBLLH4G7WP1PraGQ+es6w==","signatures":[{"sig":"MEYCIQDQP23BtIzaMHRMELQ5UpObr4zffjh657C68RJ1p3gPAgIhANLc4mZ8wJesHM1dXnGzTmOFdr/BeeLRVj9iZQLIK+m4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819659},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"ac6ac1b355a3f9f4f3b78d0669a335f56705df7c","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.15.1_1771984267134_0.8130052359240827","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"namespace-guard","version":"0.16.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.16.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"912a145dc739fe2c10167701b6dfce2a8b063d50","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.16.0.tgz","fileCount":59,"integrity":"sha512-aXWE2xvLza1IqEhSX5yOgD96seFSaT9eCOVBNgUq3wi9aA0EoBEcOzFzgjJvOGSvXEMI0IbcVWZnu4v0A68S9Q==","signatures":[{"sig":"MEUCIQCSzpawICg/CUq512iTf302pZGMCE/kWeSw8Jj/zZwVHAIgO8T/XoAhjRQO/gAZEpUncdgJc29Ebhy/kbv5qJXizSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1030198},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"ca28b90a291676f512e37c86a58900efb11d0e42","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.16.0_1772046173121_0.928338049945681","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"namespace-guard","version":"0.16.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.16.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"29e403d098e2038fd82b7efadc3dcbeae9274309","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.16.1.tgz","fileCount":59,"integrity":"sha512-z2DhDNIega4QLk5fe1p0Jc1ZC4p2ynYOqW2paEQedoVRRbKucuzhLE42sBFwkD25ekXCY28ElXRizYsGGU4xmw==","signatures":[{"sig":"MEQCIBIkhjYjBYqk17QQU9FfM24NioyEEPcq4MriwDSoZj5RAiABhzRqaHTCjMAK3pE28iI77Wk8wKcK17n1jhT4XREJ8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1030970},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"229bd4f9d2730b1fffb82bfa8698488f71c71b5a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.16.1_1772047192099_0.17942419134934906","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"namespace-guard","version":"0.17.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.17.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"9a7187203c6f0b98c8e7cf2eb60fc7a4bb6c7cd0","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.17.0.tgz","fileCount":59,"integrity":"sha512-InBMLoiHvs1zapfcSpp5R0LMqvsSCrCpMDXyx6D1Copkc0+h4Kha5/nnw/2zZiMOu/HcgrR+lsjMk2Y0LScmkw==","signatures":[{"sig":"MEYCIQCgjDTZU5N9XtoI0GY7FsWH6m/CWrQULGIIskxK4FuAsAIhAJ2bSL6p5qvIu+a17N2B6EJnzyaNhl6VIJndPY5hk1Bb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1535551},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"6c27df0dfb5141b3c8448e028d5454a9f1b965e2","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.17.0_1772145152481_0.28248254711590026","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"namespace-guard","version":"0.17.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.17.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"67ba023b65a89fac98e56ba6eacc3cb9c95a21e8","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.17.1.tgz","fileCount":59,"integrity":"sha512-k7VcIbVoPxq+OSBZRE4nwOrgIfttblx7eXDYTYUy/TQBzNZPQm20PdSOz8s8/R4Cee1OF5zeJjR9kDOoyvru1Q==","signatures":[{"sig":"MEQCIA7oUi7U+m3gpLLrosjzWjGxrob++cGOQGVYZh/7/cBQAiBWqsH6xJq/X6oDEe6CbIYCS/vqFqrL3CnJUuYIN9LBKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1696667},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"ad23191057a688f7af9b955b04df825bb19a51ea","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Check slug/handle uniqueness across multiple database tables with reserved name protection","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.17.1_1772147662211_0.14441597030066733","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"namespace-guard","version":"0.18.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.18.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"967890c7358da3f7e5d393aca5864deafaf2cb77","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.18.0.tgz","fileCount":59,"integrity":"sha512-DDZjp3VQsL/KbuddVzP/czCz2DSQM4Z8UpOMkrm6JG3p/37enMdwkd5AkDziSm/s2jo7gp5wLgY5IR8HSoxFUw==","signatures":[{"sig":"MEUCIDyfi/5h7naFZyENXwQ1xfOZUn8MsoHxA3xJC2E5I+C+AiEA1gyeiM8xjrey9q+9FtlFc8LykO2G3SwHl2tfihV+nfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3689034},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"}},"gitHead":"5a96842d70124b60fbd60231c8c48c49ec76144a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.18.0_1772230469782_0.9794555419649829","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"namespace-guard","version":"0.19.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.19.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"22a94730e84c45e149b4dd0d915408608bd34e7c","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.19.0.tgz","fileCount":63,"integrity":"sha512-r8UIEDd3plRi2CDghTzmzV3o8Zhm+MfBDct6mjBt5zk8KwGRlks9deTi5W0Uag6WQurdjE6vIaISWU6EFmYVsg==","signatures":[{"sig":"MEUCIDrQhg/YKXfxAJwjz2vQl4bBQOjSPVHmhj6VfIRb+FqdAiEAhZBf5+yYylQkRta/IeH1Tl51MywZUFZz0O3YGo2bdEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5368849},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"},"./font-specific-weights":{"types":"./dist/font-specific-weights.d.ts","import":"./dist/font-specific-weights.mjs","require":"./dist/font-specific-weights.js"}},"gitHead":"e4526cf4cd6010fdd83b56822dc50b7ff1cc897a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.19.0_1772244248593_0.9928770748377216","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"namespace-guard","version":"0.19.1","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.19.1","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"d19a06c8117c58ee75f1527f922ae7600f30d1e6","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.19.1.tgz","fileCount":63,"integrity":"sha512-1dyhsmLUGf92sQuS9qS3YetvrdOYZVWrxuNvm0nqwsyxpNdCYoH1kgldkfSsPGFD7Zv+FnEu8jDhR0GuCxaEew==","signatures":[{"sig":"MEYCIQCHXSbt+ALsO5j/VFZKppC4GYWzCpFQGCzMxCvp8OTVHQIhANpgKVB5Cmnv4+U12HgBC6IX/uP6HNYqz6z4h6zrSKpx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5368922},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"},"./font-specific-weights":{"types":"./dist/font-specific-weights.d.ts","import":"./dist/font-specific-weights.mjs","require":"./dist/font-specific-weights.js"}},"gitHead":"20f69b3d1aafe9c7709b59da3c84d15fd2cd1fe8","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.19.1_1772311065425_0.6063175110425616","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"namespace-guard","version":"0.20.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.20.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"adf6586769bc7f62c1c9b36bd415e63a08bec6d6","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.20.0.tgz","fileCount":63,"integrity":"sha512-C74oYmp+xXu4DPX114TN1Cx31SG236Ns02uhecVg/4stei6XzcS2XuG1T50HLr4uCkcd7szlfzNeuxcjfiCJnA==","signatures":[{"sig":"MEYCIQCHAya7SfF7LbOlWFi75JOWGVzzfQcGnA5lJdd6/p0c/wIhAJdt7wAL+gp/t+QIHaDEKPkSXya/rZwPG/Ii+/OCmEyR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6170372},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"},"./font-specific-weights":{"types":"./dist/font-specific-weights.d.ts","import":"./dist/font-specific-weights.mjs","require":"./dist/font-specific-weights.js"}},"gitHead":"2fa93ae712c878c36523f905924b53d81d0669d9","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.7.0","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.20.0_1772492640289_0.2291540823633329","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"namespace-guard","version":"0.21.0","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"author":{"name":"Paul Wood FRSA"},"license":"MIT","_id":"namespace-guard@0.21.0","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"homepage":"https://paultendo.github.io/namespace-guard/","bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"bin":{"namespace-guard":"dist/cli.js"},"dist":{"shasum":"c59351c40c4fdcb94ac6b9db90e1c7320712920c","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.21.0.tgz","fileCount":63,"integrity":"sha512-4GNMOdPU/XTjvSe5b4gD2F4ls0wLTCEKPVWqOvcSPwNkAEn1kF44BLe5mDQYsgNDKxQ3aZw+aD4J5i2Qw6tZmw==","signatures":[{"sig":"MEUCIQDfi6rbcBfUsSc70dFsc1EOqp5cNoMVVOjfH6cfpNRfygIgYlrU4mV3EsFhWsMCwZz+r4zksWF97Wbfcb29QAWWlt0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBdDf+rDt25YwCJK96UNk9K5fhxtvm7rArdIB4fQ22GxAiBxjH+vNHzqMNpbbU1v6lMAdM9ZP6EEyGvMrRUkE9ob6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5227142},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"},"./font-specific-weights":{"types":"./dist/font-specific-weights.d.ts","import":"./dist/font-specific-weights.mjs","require":"./dist/font-specific-weights.js"}},"gitHead":"e9e90abd8ba7c1c466a9831dc43dcba067ea29b3","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"_npmUser":{"name":"paultendo","email":"paul@pw.media"},"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.11.1","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"_nodeVersion":"25.8.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/namespace-guard_0.21.0_1790260120480_0.5833731446791508","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"_id":"namespace-guard@0.22.0","bin":{"namespace-guard":"dist/cli.js"},"bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"dist":{"shasum":"cdf5e909248c9ed0d800cb12f16623214efd1b89","tarball":"https://registry.npmjs.org/namespace-guard/-/namespace-guard-0.22.0.tgz","fileCount":63,"integrity":"sha512-6+43ZG0bOg+jpzfwq3Rdg72Rue18bKDYtdi9u8896/M/oO+aJ9pf8XmmYqpy7Mc6NtCW+Ta9aCXXFHNJhUugKQ==","signatures":[{"sig":"MEQCIDoR9XPRSJgvuFQiSMX1tY5JHdgTRYyCG2ygT2C9oc2WAiB4uPoyPSOJHxLemIBsvLdkK1SdaL0nAxtTkecQcEkUuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAhE5vWKIH2jZOpA5IDUhBPKc7MNSCqHAQNjDPcASrdKAiEAsEwdAopg0pazDqWuMLwm4SIg7KLLcaSCTZuPbJXaVAQ="}],"unpackedSize":3127412},"main":"dist/index.js","name":"namespace-guard","types":"dist/index.d.ts","author":{"name":"Paul Wood FRSA"},"module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters/raw":{"types":"./dist/adapters/raw.d.ts","import":"./dist/adapters/raw.mjs","require":"./dist/adapters/raw.js"},"./profanity-en":{"types":"./dist/profanity-en.d.ts","import":"./dist/profanity-en.mjs","require":"./dist/profanity-en.js"},"./adapters/knex":{"types":"./dist/adapters/knex.d.ts","import":"./dist/adapters/knex.mjs","require":"./dist/adapters/knex.js"},"./adapters/kysely":{"types":"./dist/adapters/kysely.d.ts","import":"./dist/adapters/kysely.mjs","require":"./dist/adapters/kysely.js"},"./adapters/prisma":{"types":"./dist/adapters/prisma.d.ts","import":"./dist/adapters/prisma.mjs","require":"./dist/adapters/prisma.js"},"./adapters/drizzle":{"types":"./dist/adapters/drizzle.d.ts","import":"./dist/adapters/drizzle.mjs","require":"./dist/adapters/drizzle.js"},"./adapters/typeorm":{"types":"./dist/adapters/typeorm.d.ts","import":"./dist/adapters/typeorm.mjs","require":"./dist/adapters/typeorm.js"},"./adapters/mongoose":{"types":"./dist/adapters/mongoose.d.ts","import":"./dist/adapters/mongoose.mjs","require":"./dist/adapters/mongoose.js"},"./adapters/mikro-orm":{"types":"./dist/adapters/mikro-orm.d.ts","import":"./dist/adapters/mikro-orm.mjs","require":"./dist/adapters/mikro-orm.js"},"./adapters/sequelize":{"types":"./dist/adapters/sequelize.d.ts","import":"./dist/adapters/sequelize.mjs","require":"./dist/adapters/sequelize.js"},"./confusable-weights":{"types":"./dist/confusable-weights.d.ts","import":"./dist/confusable-weights.mjs","require":"./dist/confusable-weights.js"},"./composability-vectors":{"types":"./dist/composability-vectors.d.ts","import":"./dist/composability-vectors.mjs","require":"./dist/composability-vectors.js"},"./font-specific-weights":{"types":"./dist/font-specific-weights.d.ts","import":"./dist/font-specific-weights.mjs","require":"./dist/font-specific-weights.js"}},"gitHead":"24452ccc7d973702f248328e6e189eb667f68122","license":"MIT","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","ci:drift-gate":"node scripts/drift-gate.js","prepublishOnly":"npm run build","build:profanity-data":"node scripts/generate-profanity-global.js","build:weights-global":"node scripts/generate-confusable-weights-global.js","build:confusable-bench":"node scripts/generate-confusable-bench.js","build:composability-data":"node scripts/generate-composability-vectors.js","build:llm-confusable-map":"npm run build && node scripts/generate-llm-confusable-map.js"},"version":"0.22.0","_npmUser":{"name":"paultendo","email":"paul@pw.media"},"homepage":"https://paultendo.github.io/namespace-guard/","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"_npmVersion":"11.11.1","description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","directories":{},"maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"_nodeVersion":"25.8.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^25.3.0"},"peerDependencies":{"pg":">=8.0.0","knex":">=2.0.0","kysely":">=0.26.0","typeorm":">=0.3.0","mongoose":">=7.0.0","sequelize":">=6.0.0","drizzle-orm":">=0.29.0","@prisma/client":">=5.0.0","@mikro-orm/core":">=5.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"knex":{"optional":true},"kysely":{"optional":true},"typeorm":{"optional":true},"mongoose":{"optional":true},"sequelize":{"optional":true},"drizzle-orm":{"optional":true},"@prisma/client":{"optional":true},"@mikro-orm/core":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/namespace-guard_0.22.0_1790278514880_0.5062341742714171"}}},"time":{"created":"2026-02-20T00:00:46.983Z","modified":"2026-09-24T19:35:15.168Z","0.1.0":"2026-02-20T00:00:47.193Z","0.1.2":"2026-02-20T00:15:05.628Z","0.2.0":"2026-02-20T09:50:14.570Z","0.4.0":"2026-02-20T10:24:11.277Z","0.6.0":"2026-02-20T11:13:13.835Z","0.6.1":"2026-02-20T11:18:08.523Z","0.7.0":"2026-02-20T20:18:33.822Z","0.8.1":"2026-02-20T22:21:36.559Z","0.8.2":"2026-02-22T19:01:28.494Z","0.10.0":"2026-02-22T22:12:49.231Z","0.11.0":"2026-02-22T23:35:24.259Z","0.11.1":"2026-02-23T00:12:21.885Z","0.15.0":"2026-02-25T01:47:50.488Z","0.15.1":"2026-02-25T01:51:07.378Z","0.16.0":"2026-02-25T19:02:53.360Z","0.16.1":"2026-02-25T19:19:52.274Z","0.17.0":"2026-02-26T22:32:32.709Z","0.17.1":"2026-02-26T23:14:22.440Z","0.18.0":"2026-02-27T22:14:29.978Z","0.19.0":"2026-02-28T02:04:08.922Z","0.19.1":"2026-02-28T20:37:45.721Z","0.20.0":"2026-03-02T23:04:00.558Z","0.21.0":"2026-09-24T14:28:40.596Z","0.22.0":"2026-09-24T19:35:15.016Z"},"bugs":{"url":"https://github.com/paultendo/namespace-guard/issues"},"author":{"name":"Paul Wood FRSA"},"license":"MIT","homepage":"https://paultendo.github.io/namespace-guard/","keywords":["namespace","slug","handle","username","unique","collision","reserved","multi-tenant","drizzle","prisma","kysely","knex","typeorm","mikro-orm","sequelize","mongoose","mongodb","cli","homoglyph","confusable","unicode","anti-spoofing","reserved-usernames","slug-validation","security","nodejs","profanity-filter","skeleton","tr39","nfkc","typescript"],"repository":{"url":"git+https://github.com/paultendo/namespace-guard.git","type":"git"},"description":"Cross-script confusable detection, slug safety, and LLM Denial of Spend defence. Zero dependencies.","maintainers":[{"name":"paultendo","email":"paul@pw.media"}],"readme":"# namespace-guard\n\n[![npm version](https://img.shields.io/npm/v/namespace-guard.svg)](https://www.npmjs.com/package/namespace-guard)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/namespace-guard)](https://bundlephobia.com/package/namespace-guard)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**The world's first library that detects confusable characters across non-Latin scripts.** Slug claimability, Unicode anti-spoofing, and LLM [Denial of Spend](https://paultendo.github.io/posts/confusable-vision-llm-attack-tests/) defence in one zero-dependency package.\n\n- Live demo: https://paultendo.github.io/namespace-guard/\n- Blog post: https://paultendo.github.io/posts/namespace-guard-launch/\n\n## Cross-script confusable detection\n\nExisting confusable standards (TR39, IDNA) map non-Latin characters to Latin equivalents. They have zero coverage for confusable pairs *between* two non-Latin scripts.\n\nnamespace-guard ships measured lookalike pairs from [confusable-vision](https://github.com/paultendo/confusable-vision) release 2026.09.24 (vector-outline raycasting, [RaySpace](https://paultendo.github.io/posts/rayspace-methodology/), at the size and baseline position glyphs have in running text, across every macOS system font and Roboto). They include pairs between two non-Latin scripts that no standard covers:\n\n```typescript\nimport { areConfusable, detectCrossScriptRisk } from \"namespace-guard\";\nimport { CONFUSABLE_WEIGHTS } from \"namespace-guard/confusable-weights\";\n\n// Hangul ᅵ and Han 丨 are alike in every text font that draws both\nareConfusable(\"\\u1175\", \"\\u4E28\", { weights: CONFUSABLE_WEIGHTS }); // true\n\n// Cyrillic ј and Greek ϳ are alike in 95% of text fonts\nareConfusable(\"\\u0458\", \"\\u03F3\", { weights: CONFUSABLE_WEIGHTS }); // true\n\n// Cyrillic І and Greek Ι are identical outlines (62 fonts)\nareConfusable(\"\\u0406\", \"\\u0399\", { weights: CONFUSABLE_WEIGHTS }); // true\n\n// Without weights, only skeleton-based detection (TR39 coverage)\nareConfusable(\"\\u1175\", \"\\u4E28\"); // false\n\n// Analyze an identifier for cross-script risk\nconst risk = detectCrossScriptRisk(\"\\u1175\\u4E28\", { weights: CONFUSABLE_WEIGHTS });\n// { riskLevel: \"high\", scripts: [\"han\", \"hangul\"], crossScriptPairs: [...] }\n```\n\n322 pairs ship, each found alike at running-text size within one font or across fonts. A pair's `danger` (0–1) is the share of text fonts (or font combinations) where it holds; filter at `danger > 0.7` (85 pairs) for the pairs alike almost everywhere. `namespace-guard/font-specific-weights` gives the same pairs per font (106 fonts), for saying which font makes a lookalike most convincing. Data licensed CC-BY-4.0.\n\n## Installation\n\n```bash\nnpm install namespace-guard\n```\n\n## Quick Start (60 seconds)\n\n```typescript\nimport { createNamespaceGuardWithProfile } from \"namespace-guard\";\nimport { createPrismaAdapter } from \"namespace-guard/adapters/prisma\";\nimport { PrismaClient } from \"@prisma/client\";\n\nconst prisma = new PrismaClient();\n\nconst guard = createNamespaceGuardWithProfile(\n  \"consumer-handle\",\n  {\n    reserved: [\"admin\", \"api\", \"settings\", \"dashboard\", \"login\", \"signup\"],\n    sources: [\n      { name: \"user\", column: \"handleCanonical\", scopeKey: \"id\" },\n      { name: \"organization\", column: \"slugCanonical\", scopeKey: \"id\" },\n    ],\n  },\n  createPrismaAdapter(prisma)\n);\n\nawait guard.assertClaimable(\"acme-corp\");\n```\n\nFor race-safe writes, use `claim()`:\n\n```typescript\nconst result = await guard.claim(input.handle, async (canonical) => {\n  return prisma.user.create({\n    data: {\n      handle: input.handle,\n      handleCanonical: canonical,\n    },\n  });\n});\n\nif (!result.claimed) {\n  return { error: result.message };\n}\n```\n\n## What You Get\n\n- **Cross-script confusable detection** with measured pairs, including pairs between two non-Latin scripts\n- Cross-table collision checks (users, orgs, teams, etc.)\n- Reserved-name blocking with category-aware messages\n- Unicode anti-spoofing (NFKC + confusable detection + mixed-script/risk controls)\n- Invisible character detection (zero-width joiners, direction overrides, and other hidden bytes)\n- Optional profanity/evasion validation\n- Suggestion strategies for taken names\n- CLI for red-team generation, calibration, drift, and CI gates\n\n## LLM Pipeline Preprocessing\n\nConfusable characters are pixel-identical to Latin letters but encode as multi-byte BPE tokens. A 95-line contract that costs 881 tokens in clean ASCII costs 4,567 tokens when flooded with confusables: **5.2x the API bill**. The model reads it correctly. The invoice does not care.\n\nWe tested this across 4 frontier models, 8 attack types, and 130+ API calls. Zero meaning flips. Every substituted clause was correctly interpreted. But the billing attack succeeds. We call it **Denial of Spend**: the confusable analogue of DDoS, where the attacker cannot degrade the service but can inflate the cost of running it.\n\n`canonicalise()` recovered every substituted term across all 12 attack variants, collapsing the 5.2x inflation to 1.0x. Processing a 10,000-character document takes under 1ms.\n\n```typescript\nimport { canonicalise, scan, isClean } from \"namespace-guard\";\n\nconst raw = \"The seller аssumes аll liаbility.\";\n\nconst report = scan(raw);        // detailed findings + risk level\nconst clean = canonicalise(raw); // \"The seller assumes all liability.\"\nconst ok = isClean(raw);         // false (mixed-script confusable detected)\n\n// For known-Latin documents (e.g. English contracts), use strategy: \"all\"\n// to also catch words where every character was substituted:\ncanonicalise(\"поп-refundable\", { strategy: \"all\" }); // \"non-refundable\"\n```\n\nResearch:\n- Denial of Spend: https://paultendo.github.io/posts/confusable-vision-llm-attack-tests/\n- Launch: https://paultendo.github.io/posts/namespace-guard-launch/\n- NFKC/TR39 composability: https://paultendo.github.io/posts/unicode-confusables-nfkc-conflict/\n\n## Advanced Security Primitives\n\nLow-level helpers for custom scoring, pairwise checks, and cross-script risk analysis:\n\n```typescript\nimport { skeleton, areConfusable, confusableDistance } from \"namespace-guard\";\n\nskeleton(\"pa\\u0443pal\"); // \"paypal\" skeleton form\nareConfusable(\"paypal\", \"pa\\u0443pal\"); // true\nconfusableDistance(\"paypal\", \"pa\\u0443pal\"); // graded similarity + chainDepth + explainable steps\n```\n\nFor measured visual scoring, pass the optional weights from confusable-vision release 2026.09.24 (322 pairs measured at running-text size by vector-outline raycasting). Each pair has a `danger` score (0–1), the share of text fonts where it holds; use `danger > 0.7` for the pairs alike almost everywhere. The `context` filter restricts to identifier-valid, domain-valid, or all pairs.\n\n```typescript\nimport { confusableDistance } from \"namespace-guard\";\nimport { CONFUSABLE_WEIGHTS } from \"namespace-guard/confusable-weights\";\n\nconst result = confusableDistance(\"paypal\", \"pa\\u0443pal\", {\n  weights: CONFUSABLE_WEIGHTS,\n  context: \"identifier\",\n});\n// result.similarity, result.steps (including \"visual-weight\" reason for novel pairs)\n```\n\n### Realistic Domain Spoof Detection\n\nFor domain name validation, `isDomainSpoof()` only flags threats that could produce registrable domain names. ICANN registrars enforce single-script labels, so mixed-script spoofs (e.g., one Cyrillic letter in a Latin domain) are excluded — they can't actually be registered.\n\n```typescript\nimport { isDomainSpoof } from \"namespace-guard\";\nimport { CONFUSABLE_WEIGHTS } from \"namespace-guard/confusable-weights\";\n\n// Full-Cyrillic lookalike — registrable and deceptive\nisDomainSpoof(\"\\u0440\\u0430\\u0443\\u0440\\u0430\\u04CF\", \"paypal\", { weights: CONFUSABLE_WEIGHTS });\n// { spoof: true, script: \"cyrillic\", danger: 0.91, substitutions: [...] }\n\n// Mixed-script — not registrable, not flagged\nisDomainSpoof(\"\\u0440aypal\", \"paypal\", { weights: CONFUSABLE_WEIGHTS });\n// { spoof: false }\n\n// Known-legitimate non-Latin domain — skip via allowlist\nisDomainSpoof(\"\\u0430\\u0441\\u0435\", \"ace\", {\n  weights: CONFUSABLE_WEIGHTS,\n  allowlist: [\"\\u0430\\u0441\\u0435\"],\n});\n// { spoof: false }\n```\n\nThe `danger` score (0–1) is always returned when a script match is found, even if below the `minDanger` threshold (default 0.5). Set `minDanger: 0.7` for higher precision.\n\n## Research\n\nTwo research tracks feed the library:\n\n**Visual measurement.** Lookalike pairs measured by vector-outline raycasting ([RaySpace](https://paultendo.github.io/posts/rayspace-methodology/)) at the size and baseline position glyphs have in running text, across every macOS system font and Roboto, and calibrated against pairs with known answers. Release 2026.09.24 finds 857 pairs alike; the 322 that pass its thresholds ship here, including pairs between two non-Latin scripts (Cyrillic/Greek, Katakana/Hiragana, Han/Hangul) that no standard covers. The March 2026 measurements were blind to size and are superseded. Full dataset published as [confusable-vision](https://github.com/paultendo/confusable-vision) (CC-BY-4.0).\n\n**Normalisation composability.** 31 characters where Unicode's confusables.txt and NFKC normalisation disagree. Two production maps (`CONFUSABLE_MAP` for NFKC-first, `CONFUSABLE_MAP_FULL` for raw-input pipelines), a benchmark corpus, and composability vectors wired into CLI drift baselines. Submitted to [Unicode public review (PRI #540)](https://www.unicode.org/review/pri540/) and published in [accumulated feedback](https://www.unicode.org/review/pri540/feedback.html).\n\n- Technical reference: [docs/reference.md#how-the-anti-spoofing-pipeline-works](docs/reference.md#how-the-anti-spoofing-pipeline-works)\n- Launch write-up: https://paultendo.github.io/posts/namespace-guard-launch/\n- Denial of Spend: https://paultendo.github.io/posts/confusable-vision-llm-attack-tests/\n\n## Built-in Profiles\n\nUse `createNamespaceGuardWithProfile(profile, overrides, adapter)`:\n\n- `consumer-handle`: strict defaults for public handles\n- `org-slug`: workspace/org slugs\n- `developer-id`: technical IDs with looser numeric rules\n\nProfiles are defaults, not lock-in. Override only what you need.\n\n## Zero-Dependency Moderation Integration\n\nCore stays zero-dependency. You can use built-ins or plug in any external library.\n\n```typescript\nimport {\n  createNamespaceGuard,\n  createPredicateValidator,\n} from \"namespace-guard\";\nimport { createEnglishProfanityValidator } from \"namespace-guard/profanity-en\";\n\nconst guard = createNamespaceGuard(\n  {\n    sources: [\n      { name: \"user\", column: \"handleCanonical\", scopeKey: \"id\" },\n      { name: \"organization\", column: \"slugCanonical\", scopeKey: \"id\" },\n    ],\n    validators: [\n      createEnglishProfanityValidator({ mode: \"evasion\" }),\n      createPredicateValidator((identifier) => thirdPartyFilter.has(identifier)),\n    ],\n  },\n  adapter\n);\n```\n\n## CLI Workflow\n\n```bash\n# 1) Generate realistic attack variants\nnpx namespace-guard attack-gen paypal --json\n\n# 2) Calibrate thresholds and CI gate suggestions from your dataset\nnpx namespace-guard recommend ./risk-dataset.json\n\n# 3) Preflight canonical collisions before adding DB unique constraints\nnpx namespace-guard audit-canonical ./users-export.json --json\n\n# 4) Compare TR39-full vs NFKC-filtered behaviour\nnpx namespace-guard drift --json\n```\n\n## Adapter Support\n\n- Prisma\n- Drizzle\n- Kysely\n- Knex\n- TypeORM\n- MikroORM\n- Sequelize\n- Mongoose\n- Raw SQL\n\nAdapter setup examples and migration guidance: [docs/reference.md#adapters](docs/reference.md#adapters)\n\n## Production Recommendation: Canonical Uniqueness\n\nFor full protection against Unicode/canonicalization edge cases, enforce uniqueness on canonical columns (for example `handleCanonical`, `slugCanonical`) and point `sources[*].column` there.\n\nMigration guides per adapter: [docs/reference.md#canonical-uniqueness-migration-per-adapter](docs/reference.md#canonical-uniqueness-migration-per-adapter)\n\n## Documentation Map\n\n- Full reference: [docs/reference.md](docs/reference.md)\n- Config reference: [docs/reference.md#configuration](docs/reference.md#configuration)\n- Validators (profanity, homoglyph, invisible): [docs/reference.md#async-validators](docs/reference.md#async-validators)\n- Canonical preflight audit (`audit-canonical`): [docs/reference.md#audit-canonical-command](docs/reference.md#audit-canonical-command)\n- Anti-spoofing pipeline and composability vectors: [docs/reference.md#how-the-anti-spoofing-pipeline-works](docs/reference.md#how-the-anti-spoofing-pipeline-works)\n- LLM preprocessing (`canonicalise`, `scan`, `isClean`): [docs/reference.md#llm-pipeline-preprocessing](docs/reference.md#llm-pipeline-preprocessing)\n- Benchmark corpus (`confusable-bench.v1`): [docs/reference.md#confusable-benchmark-corpus-artifact](docs/reference.md#confusable-benchmark-corpus-artifact)\n- Advanced primitives (`skeleton`, `areConfusable`, `confusableDistance`): [docs/reference.md#advanced-security-primitives](docs/reference.md#advanced-security-primitives)\n- Confusable weights (scored pairs, including cross-script): [docs/reference.md#confusable-weights-subpath](docs/reference.md#confusable-weights-subpath)\n- Cross-script detection: [docs/reference.md#cross-script-detection](docs/reference.md#cross-script-detection)\n- CLI reference: [docs/reference.md#cli](docs/reference.md#cli)\n- API reference: [docs/reference.md#api-reference](docs/reference.md#api-reference)\n- Framework integration (Next.js/Express/tRPC): [docs/reference.md#framework-integration](docs/reference.md#framework-integration)\n\n## Support\n\nIf `namespace-guard` helped you, please star the repo. It helps the project a lot.\n\n- GitHub Sponsors: https://github.com/sponsors/paultendo\n- Buy me a coffee: https://buymeacoffee.com/paultendo\n\n## Contributing\n\nContributions welcome. Please open an issue first to discuss larger changes.\n\n## License\n\nMIT © [Paul Wood FRSA (@paultendo)](https://github.com/paultendo)\n","readmeFilename":"README.md"}