{"_id":"@anchrd/gate-api","_rev":"43-be7c9bec81c9dc16aeeb172775cb3707","name":"@anchrd/gate-api","dist-tags":{"latest":"0.26.0"},"versions":{"0.1.0":{"name":"@anchrd/gate-api","version":"0.1.0","_id":"@anchrd/gate-api@0.1.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"1c4172b3f30e853a13473d4abb76cfdda44c343d","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.1.0.tgz","fileCount":55,"integrity":"sha512-itfe2ZBOQ37phsUul6qqYRmHCJ/OAsvsRgaBVVuF1uPpbzJi24FzR/jOmSmju6kjtcLanFhrS82qPretEGw1UA==","signatures":[{"sig":"MEUCIQCUeZbc2YWnfd5PeXKPaMb/Sw7GeCKy670RtNqOCe7NgAIgBE+Z5wVHz+WroljfKqrIXCBMElkJ0v9Q8jQBLis6NIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734212},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"070fff219ab5ae01d261035e801c1d8849a17b2e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node ../../scripts/pack/fix-dts.mjs","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"anchrd","email":"jack.schmidt@outlook.de"},"deprecated":"Merged into @anchrd/gate as of 0.28.0.","_npmVersion":"11.6.0","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"workspace:*","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.21","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.1.0_1784449405908_0.6476389921713557","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anchrd/gate-api","version":"0.1.1","_id":"@anchrd/gate-api@0.1.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"094686534dfaecd27a44e381c3a1290dcfdb6a50","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.1.1.tgz","fileCount":55,"integrity":"sha512-41Y6tVG/0EqK7XwgAhsQdfYTAKL7oSezpYpGYgZFD8ou28o//kFkMRjSdJtCdGl27OrIyB+qg8sLuVqGxQh3qQ==","signatures":[{"sig":"MEUCIFetB6mEiT81jYAwkT0ChiZR++WNNSlaMu0rieZueFqRAiEAjfRr743WA3YY/3tukN3xm2+HG1Yvejr8smcHSUFubo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734213},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"42fceda86c062cb9ad087c11ff7fe070b8156755","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node ../../scripts/pack/fix-dts.mjs","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.1.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.21","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.1.1_1784450764251_0.8394741320466734","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.1.2":{"name":"@anchrd/gate-api","version":"0.1.2","license":"UNLICENSED","_id":"@anchrd/gate-api@0.1.2","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"a93f82251af7f1b02fbc2d5c97a57fe7c621c0f2","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.1.2.tgz","fileCount":33,"integrity":"sha512-DWVXRu/eEjdIwb+kaoR32xg56Iu1i0eU+npcxkawmQ5FPa5hISmke0D+HbJS3Oo0HPaw7Heo71EGGxoLGTUOag==","signatures":[{"sig":"MEQCIBkmsvSVe06GZGtVr1y0ND4nKMBabx7CxuJ5M6St5Q/WAiBdgnxoQIMIi0iOdWyAN+WufbwJNJNOuPRVAKQy+TLjoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":874455},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"6cc2eb3728d48f83c0100ebb990b1a66f9e65af2","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.1.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.21","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.1.2_1784468530479_0.10080337662054739","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.2.0":{"name":"@anchrd/gate-api","version":"0.2.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.2.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"71e3c787cf55a93a64c905bc5cbc3ba96e8bb9bd","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.2.0.tgz","fileCount":47,"integrity":"sha512-iQ94nEFCZ0cxu+SDCO8zI4RhycNCzTcx5ejQfE7WYOmNNMt4aOU0r9uf1hdny9Wy5FWqkZAR8WgcadMaNAWUvg==","signatures":[{"sig":"MEUCIQDRXV2L2qZbgCRM19iVYTV6esgTfgjqFH07ndNmmG000AIgHfTSYHVYoDQM2X8zVDu4hc07GdpddWUmIirSkgoulrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":813179},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"713c11b6590e1b4f15b2c3be00ee49a275a0dd4a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"anchrd","email":"jack.schmidt@outlook.de"},"_npmVersion":"11.6.0","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.2.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.2.0_1785144577280_0.5972861536352327","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.2.1":{"name":"@anchrd/gate-api","version":"0.2.1","license":"UNLICENSED","_id":"@anchrd/gate-api@0.2.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"90b7cf7f76addee870fa6234ed15d51f5a6d0999","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.2.1.tgz","fileCount":70,"integrity":"sha512-HRSk7/Eb5+XpZ/SfwvDG333kcUQ79nJhzhcF+Bjb7DTFd81PpWdm98J9szjJcibqefZYCCkugR6Cwyg7G7uaww==","signatures":[{"sig":"MEUCIQC+K7hmErtG/yPQR3nV2J+4og/GP3Nct+vcjBYvlei+WQIgbkcR99GdL9LmDO0TQiLvrVwmovrr8Zfyqv6vJ66dvvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1350405},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"e5273ddbfa98b32241427805d5e27548d7faf4d1","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"anchrd","email":"jack.schmidt@outlook.de"},"_npmVersion":"11.6.0","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.2.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.2.1_1785155503549_0.10188938744314502","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.2.2":{"name":"@anchrd/gate-api","version":"0.2.2","license":"UNLICENSED","_id":"@anchrd/gate-api@0.2.2","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"f95542fb636c0fde7d86b99ed3ef91a3a6c089e7","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.2.2.tgz","fileCount":70,"integrity":"sha512-9j7es8/YnwmC9Wac5syWaag0bA52w2K26iRNa11+Jr+zg+yy5/ZQClXK4eo+at7uBiKq0ddsLi0Tk6resyQiwA==","signatures":[{"sig":"MEYCIQDIfUqK2VIZCRXXH4ij4Ei9Y0ng/W81gtBJqfspxXUVaQIhANu1tI88cpIzehKdccYYpWje0PKAM56JdbMr63LhZIKz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1350678},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"a8082e419c0e5719df3732f8aacc4304aa25eba6","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"anchrd","email":"jack.schmidt@outlook.de"},"_npmVersion":"11.6.0","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.2.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.2.2_1785173274192_0.8725417186263802","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.2.3":{"name":"@anchrd/gate-api","version":"0.2.3","license":"UNLICENSED","_id":"@anchrd/gate-api@0.2.3","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"f8eed51a694f9f5a25d6494cc57f7c441c08abd6","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.2.3.tgz","fileCount":65,"integrity":"sha512-rghc4W91A5DNB47RDesRMh4Zjmtt6r0IMOIX1Nr0R1kD4JYiLjVwDpBd6ZSfntmZFSNhzd4pDSnOM9nb1ri9Sg==","signatures":[{"sig":"MEQCIGi83mpJqpSS+P2MLY2+MEdYD+DQ+wCYAfwUU9qsuC4hAiAsYYg885hXSgI67u90uEYqN+8VwlXP4/FdBUBfmGGUcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1198264},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"3d73c24579ce4c2e4aafc05de0f9db6f2e36dfe6","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.2.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.2.3_1785177004959_0.28876815401240585","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.3.0":{"name":"@anchrd/gate-api","version":"0.3.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.3.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"f06d34cc02fdaa668601a320c49648eafaa1ee05","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.3.0.tgz","fileCount":69,"integrity":"sha512-2fB7R7dgXT6pBm+SfnbJlM0/ygtTp3iZOQiN1Ca0lvq1JaR2GQ4Gp5GIXYWEbZilnTbA1kpOkx/FfQpk4arLNA==","signatures":[{"sig":"MEUCIFmYL7lFtmU2NPQcZSTJJG7SRCS5hCCCbok2eVfS5lsAAiEApMKWwSJSxupRBb/m6a6bAkh6NZkNHJGEwKY+gvzQEgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1278081},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"7d4f61adf5a3dff0225cb715a6529e52d971d1fd","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.3.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.3.0_1785320290286_0.8539018294270806","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.4.0":{"name":"@anchrd/gate-api","version":"0.4.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.4.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"bec9185c765c8f43aa80e7716547ecd189fef6ed","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.4.0.tgz","fileCount":71,"integrity":"sha512-kYQmqq3EcbQWd4AXAGjcAMdFykwicRsVRmVbfzUjXxE1YRsocCK3N6UZqcnADRuNKoiSimd/ghuNwfJftEpv6w==","signatures":[{"sig":"MEQCIDsv94C9u7kVBxDyRD7xMFdcvewgH441rDCiugDefLprAiBJEmeDzqhlYPT6xmvEvbyB2qy4eNHlHXgZheIadD+Sog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1285259},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"1a5f812cfdd86e27292f804d6cc203efa0ce2e30","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.4.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.4.0_1785338898472_0.8458496250445071","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.4.2":{"name":"@anchrd/gate-api","version":"0.4.2","license":"UNLICENSED","_id":"@anchrd/gate-api@0.4.2","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"5d69bade44029713e807469887640245cc1ebd06","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.4.2.tgz","fileCount":73,"integrity":"sha512-jAdLJodNaDdFd5ebLSK3/PK1bzEJsNTqBlEwroRj+/u2qr6py4u2uZb1iZOXfXlAIFqPIPKYExMnhDXXnXZfjw==","signatures":[{"sig":"MEYCIQDz/UP6ME3sR43AkTBjETovUhG6qy2ivyS8pRrF82IBPAIhAP+d6HJr2YKAw6DXFCsCPie2xjQhWBNuHx5bOxtuIeRt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1346393},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"f31f94daee7f5458c96ba1e279ecea467ade39b8","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.1","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.4.2","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.4.2_1785349380068_0.8428193923768108","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.5.0":{"name":"@anchrd/gate-api","version":"0.5.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.5.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"9419e962f7c7dd69dacac0979b33c3e37d18010d","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.5.0.tgz","fileCount":73,"integrity":"sha512-pyYSXPrkXoFyCbTzrW8V14Micg6snPuqBhtRx9/7n9PM5qWWqYriO+ekx1MMp5S9WrNcPLmWxk2R7Prosb9b9A==","signatures":[{"sig":"MEYCIQCOXRowYSHJD/mq/dRExgHR82+KpmHUWJp9o4bEDZ77FAIhAKxcaOvmS2sQS0eGJdCpca3fp+RmKq2O8IDy6jYDjjqB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1348277},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"6c4a3070f1b916d21234434c18a0918cefb327ff","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.5.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.5.0_1785361945884_0.6243238328433116","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.5.1":{"name":"@anchrd/gate-api","version":"0.5.1","license":"UNLICENSED","_id":"@anchrd/gate-api@0.5.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"91df9b2676fd6243da609fc2a99b70994f9975fa","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.5.1.tgz","fileCount":73,"integrity":"sha512-Ox/qXbjS+OGfNzw4UslMp7RJ2ZVUEicDFpFPEu+BWrk2lNRj5tZnj2xU7I6vCZu1QX3NP7P1ppHfbuBIQ03meg==","signatures":[{"sig":"MEQCIGUyJTfyIiGjV/fPFWJfuPQuBKHB2PvT6YwN59zGWrYlAiBvyE/TSabZF+1mxLwFnRf2rVClNmXGPuMMTC7YfnvCLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1348655},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"f313b26cd614c62fe1647f2a17aba253b739a281","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.5.1","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.5.1_1785362384853_0.5960437180230391","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.5.2":{"name":"@anchrd/gate-api","version":"0.5.2","license":"UNLICENSED","_id":"@anchrd/gate-api@0.5.2","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"ef0627b1eb6a87b2942f5bd7741172559fbbe83a","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.5.2.tgz","fileCount":73,"integrity":"sha512-X7bZreuVjtXU5RLBCS5JDhcayyT4DynqjVXzDNwdm9IFS906L5xxJ/Ne6y8kk3qtUsgSxDHQ/FbL20Hl7TwZzA==","signatures":[{"sig":"MEQCID1Nq55SaVwfCP92Qwvd1CZoGT84h2aMpBjgzDLQ6D60AiAOStdnXzHECtmVB4qXdMWdQqRr9+hJqOA0TTe3PuVw6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1349929},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"fbd8a2ed8de23ec5cbf941dae6f42e1a7ead884f","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.5.2","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.5.2_1785426243023_0.7866818882118518","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.6.0":{"name":"@anchrd/gate-api","version":"0.6.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.6.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"3bae2fa119f745419382913724ea4bfee30a2360","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.6.0.tgz","fileCount":73,"integrity":"sha512-kFRv7h0b6xU4hEe37vKWicDgQyptmJoEgqJ76ti3RFUgwxendpRq/hk5tfxaKqPzqvgUuP0lncfMaXKhyE1QbQ==","signatures":[{"sig":"MEYCIQDNG2HvHbUp4aly0EjtW8glDHYGOG/yL7PWQPAA+jvnWAIhALGFwd0oGDfHwjXCwedTcTmxfQ24S5oApdtrJe7PMXlC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1351001},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"1aa7cae83bd193929b2ca432579fe78e008f7a0e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.6.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.6.0_1785439456290_0.7001764246834352","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.7.0":{"name":"@anchrd/gate-api","version":"0.7.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.7.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"33ef558a64157339cd6f339cbb996c4a39701b97","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.7.0.tgz","fileCount":72,"integrity":"sha512-opF3BhM2g9mIfj2IiwB5hkwJdCQTGbQ1yrA8htX/vYxOqf1d5GtQ3pGpwdSwb9C1/E07DDZO01uTxeqjEAITgg==","signatures":[{"sig":"MEUCIHO36HwfHDIRy94ToaHy1YYO/eAQ6etC9vUiJrAklzd8AiEA42MQIktix0fwVWm7+0CYCQ9+fZyg2MYc9Y4cEtt2sAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1382657},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"a8a02ff4c5575568bfb2996d1980bae7ec4a748b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.7.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.7.0_1785453652679_0.2553337571776422","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.0":{"name":"@anchrd/gate-api","version":"0.8.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"ca47a1f54d3f922f8f1af6981ba9ab011061cb71","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.0.tgz","fileCount":76,"integrity":"sha512-M4vhZxfnR7uFxcW5Hif1CiY4ygx0RoFm96h0cPh5EPXzW/1zXxJcgWY32GpAZ1Re+M99O5ELoafO7HTapiKGBA==","signatures":[{"sig":"MEUCIQDtTh4BxanhO0MSWE8Z2CIYkNmRBQjT9kXIF6jevaXJOgIgAnN39f6uyORYZd/IZ4y+FWqZ1iEvb3hGt875no8UYP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1403405},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"bc6bad4d326b14791084a6367241a8f59c4cf0fa","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.0_1785525507420_0.24679634412008356","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.1":{"name":"@anchrd/gate-api","version":"0.8.1","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"aebebcda61fdc5c5dcd36b74305da4943b62fc8c","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.1.tgz","fileCount":78,"integrity":"sha512-gT6Ml1o7CWmiJe0h9wWBF0fyjvCqo++DEAvgr+ypgZtQDHAajURbMbI55IKp3VmtKirRQQOFe4g9ik5oKG9AbA==","signatures":[{"sig":"MEYCIQCXTrYJFS+rx/W6zH/bmrku0zBLuK/Rh/3h30AfPtewfAIhAN0wEKEBcejcSLXBiIOPbrWnhHpKW0YtZLfe9k6WUeBn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1461273},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"177c7ebdccd2e6eaf1044279c81e073a066a33ad","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.1","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.1_1785532574693_0.9361642585337435","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.2":{"name":"@anchrd/gate-api","version":"0.8.2","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.2","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"c52cc825ba3eb1514807ffa24edaf2a1f75aa856","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.2.tgz","fileCount":78,"integrity":"sha512-lOHRYMLjDXWRLHaUHMPgcZlpAplwFm0rEyMI0izqLdR/n6C5Qm73Rol5zkD3zSTv6GUUspCROspKtN5j9WEUsw==","signatures":[{"sig":"MEUCIQCe/u0phdwiOppZH3W9VTGoBjw1660GMH7EzIGRFAuGsQIgYp6ruM/IQkZhnBrhf6WQsW8WUd30lnhiDylWKeLlgeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1461537},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"3fa487f84feda5311d6dee5495d10fafdc1bc0a2","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.2","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.2_1785577729452_0.0681262303639032","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.3":{"name":"@anchrd/gate-api","version":"0.8.3","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.3","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"b45802f5663fe501eedf5b99b88db7bab8e96d9e","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.3.tgz","fileCount":78,"integrity":"sha512-cKWg8PY4puARphEyF8PMAfVfKjWv5WprNtqDyUAFjUT9y1Udz4CZO46RrNKIN9Cltj2de7PizBrrsZnopn+QvQ==","signatures":[{"sig":"MEQCIGH0CeSPVio5dhEELs9TBcBeqpGuLpNimPdPvUTeGoiWAiBhYm+ApEkaRMAuhwYRvo2D8nCXoKKzEMLJ+cLsVidX+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473028},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"bfb97112adf239bc3955ff9a2414e67da9e76aa7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.3","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.3_1785599576537_0.2622485281135809","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.4":{"name":"@anchrd/gate-api","version":"0.8.4","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.4","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"8d7cd404dce807a80f808d74b6594c5607ce160a","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.4.tgz","fileCount":78,"integrity":"sha512-DL5BiMMaW2p7m60V3zz0unej/0wQglp0BKhU1CST4JGJkFK0T4Xhn/W4Vdu9LmA813jN79fJtCPgzdLaZmeuIg==","signatures":[{"sig":"MEQCIC26y9ea2h4LZxMwR0S4yT+kSFVedVbWtYM2lbhznVW6AiAhG/2gvg4A8xzJvEXBmZWbiU4W+qDCydOpazyjqCSrbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473028},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"8e6230d7b7f3b656e7c8ad61edef03f35b51321a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.4","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.4_1785617962237_0.07996649870983519","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.5":{"name":"@anchrd/gate-api","version":"0.8.5","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.5","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"8b88a06be72a6d2a7c154f5805c9fa7a9ceea713","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.5.tgz","fileCount":78,"integrity":"sha512-5edaaIl3ix13ZMOwJ+uwqPHc3xPT7YAbEhQUvGlnUc+Srrgh9EMK9gVSCeYfqcwa5Jrdg0/KqWuChR1iZPDodQ==","signatures":[{"sig":"MEUCIQDjqOxljHSUX5l7V68MEn4TevqadkLZzhmj0+kmzdvOsAIgTjbYQL1HTfrTKEaczBOAAI30NHDEadtIxwtjk8Q/ZLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473242},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"d76e2cfad47aae5ae6c11f40685df8ea60230583","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.5","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.5_1785629985454_0.5220858159858561","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.6":{"name":"@anchrd/gate-api","version":"0.8.6","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.6","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"4b79796c052e9d62a0800604fa906deb912dc955","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.6.tgz","fileCount":78,"integrity":"sha512-MSjhK8uz1kofWEmOrr4MEvjKmkqyUobDFjZFWtqcugoPk/08jiFvM5b2W9xHwJxqEcjPryYrKAzk25WuBSnKyw==","signatures":[{"sig":"MEUCIQCkC22TRmDWWn3ul8egG/iXFtQg4GfVmn8+LKvi2EXE+gIgWtVX+0t1bgxTt19QjAo0ng4ciHttGK1P4jgawPaiOrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473242},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"67e7a77ae5a2029e7061df37531b559657593e16","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.6","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.6_1785668439761_0.5468428689830409","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.7":{"name":"@anchrd/gate-api","version":"0.8.7","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.7","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"6d7f1019bfa02aa9d7f1a5bab316c4d2013436a7","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.7.tgz","fileCount":79,"integrity":"sha512-wOgdT+CvXZBuxnaUJ+ueO7uRg/b+Yc/GWhUQ8LIJxb6pKMsoyDziKa3a9S80Srf1JfXREpbuJyplTXCuXLv3yA==","signatures":[{"sig":"MEYCIQCurPseqgvUpr2jGMSbGoEDP3ID66m1JUpalg7X8yvNogIhAKoWPx0zFCXwHDZ83RvFWCxJsUio5mlykq8ysG+DhUft","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1475480},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"692a30b31ca313ee4162cf334c3404a901a387a3","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.7","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.7_1785691871917_0.896209248675617","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.8.8":{"name":"@anchrd/gate-api","version":"0.8.8","license":"UNLICENSED","_id":"@anchrd/gate-api@0.8.8","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"07e0fd522aeecba25db4c1819c13fc64dbdb6093","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.8.8.tgz","fileCount":79,"integrity":"sha512-0Ab5+Hq9Y+xbcyryXA+yxiHN8nxkOTNSFZuEamCoZuZJNxbNducLbiFBa3IJS4WvQGOdWg9spQV3xlDh3cLqiQ==","signatures":[{"sig":"MEQCIESVULAjZn5xJ59240mxMquPwXDldw5qHLMetCJC/xgjAiBf3Xbmw5JG/bC6+ZF7fdYGGLLfdiFn+f1Yz5/CiYFTgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1476225},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"40265515d6f3a6fcd72614605d021adb8fe8fa77","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.8.8","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.8.8_1785695037553_0.5473283486649743","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.9.0":{"name":"@anchrd/gate-api","version":"0.9.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.9.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"001149ace0bb22ca691fc94412777263b6ffa826","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.9.0.tgz","fileCount":82,"integrity":"sha512-K5Tfv9cDFNmdHIOqCXNdxEFQf7G1PuCfgzdlO/xwR8tyEgvVIdNT9YZxAPp4isO54gF+shPQJ8f9S4/oFop2cA==","signatures":[{"sig":"MEQCIDqeicwk1ZTVptuN5WF4OaqE5Ly3wFILI4aRUGOX2aJ9AiBkYb8DX/vpXCzEmPilie61i/wkKVIKBhTz9jyc5CU2IQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1485202},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"01a80f7caf2a5e424c2aa9dbb71f7a04850809ba","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.9.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.9.0_1785775606780_0.20688464838214826","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.9.1":{"name":"@anchrd/gate-api","version":"0.9.1","license":"UNLICENSED","_id":"@anchrd/gate-api@0.9.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"b3e68050b1a5bd46dcf5ef8ebe90724aa229eb84","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.9.1.tgz","fileCount":82,"integrity":"sha512-hRWO+AIUsWVY57v5jz5CrHmDPeXllP6Wf4tNb4fWdezU7sN44zmAu2Qgzj7FsIfmIrnoX1LeFUyQyK6MMBDehA==","signatures":[{"sig":"MEUCIQDCYi2gIkiROdz6uNo7EhB3PxO9GkOf6qvgnQmSENjNtAIgZiX+RBJClCIptQF82Fm5F+/D9QpNhbbdyOV7USSsxr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1485216},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"2f085756ce9899883f1e214701477ce1e0f53c3b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.9.1","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.9.1_1785792759358_0.8980564915780787","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.10.0":{"name":"@anchrd/gate-api","version":"0.10.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.10.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"b6f0949b5925c3847801bc93ed64715dbeefb979","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.10.0.tgz","fileCount":83,"integrity":"sha512-3oLtkRwuheryr/H3KPW2GLa40TnSnsf2nC/8ckmwGcD2Pw9mukoYn6eB9J4AKItAiZRNLy21TCmRGOeiTtpa1g==","signatures":[{"sig":"MEUCIQD6q//3dCfb/FD2JfpSLRSOuTNLOM2fc4iDKElXiIlscQIgXsayMrHQbWrBgtlinsTXcVDmCXju0TWI+eBxP4xo9jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1489043},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"29353fb1d7473cd7c10141aa14523b32c1f0085a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.10.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.10.0_1785939123932_0.6495484869204793","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.11.0":{"name":"@anchrd/gate-api","version":"0.11.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.11.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"cdb83d70ceab0750eff45a0ae9a2376ef3bb818f","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.11.0.tgz","fileCount":85,"integrity":"sha512-utvaBi/EBIDKK21RUWNQZ+jV01y/kaDCzFEvs/mQVJWqwmfqg3Glx8H5eHkxUD8sZXkXWKMlsBK8GNAFQhNWig==","signatures":[{"sig":"MEQCIGJfk7QEwt4nR7wC7qNGHWaRcANFImIe2qaFDyi2TqesAiByy6LI6oC0zjfq4Te9zSj7qP6ZRC344Byzrm1Tyg+AoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1553143},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"5bcc45a6c539997100b39ccfd2c3e4857214a6e0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.11.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.11.0_1785966728048_0.5186337946138808","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.11.1":{"name":"@anchrd/gate-api","version":"0.11.1","license":"UNLICENSED","_id":"@anchrd/gate-api@0.11.1","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"5708406a30f89b46d2c26ebb0fe8e2bb170cf8fa","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.11.1.tgz","fileCount":85,"integrity":"sha512-H1oxxQR7PKgmsj+MXXId0vrhqMRFokIgKX69psQjbAD8umKAZQwCn+r/UuyLcTTfYtDNco3hMawufHNxL6nVQQ==","signatures":[{"sig":"MEUCIQDKsM9uEbFbDst/7vKWuasnHqZvOnr5VkE0s3vAFWWhUAIgahlNQ2IN0xnNLJkIf2wr1ClhDtFQWs/6GHfS8299WS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1553999},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"10f6c937acdc78dd19f8c6afc14735d6fbcbc5cf","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.11.1","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.11.1_1786011010082_0.6106925822321878","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.12.0":{"name":"@anchrd/gate-api","version":"0.12.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.12.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"f0a531778d5a3f5de7510609191a281cc00f62f8","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.12.0.tgz","fileCount":87,"integrity":"sha512-UdvonLk1d+xX+0b/TGCZZZmBvUbPK8vGtizWLaOEFSkoBPLSO2k7Ip7c14ysT3lif9GJmdKMrR1IkeuyHGdj5w==","signatures":[{"sig":"MEUCIQCxJtKAXiQ76AU2UCXigqXaf5haaVw11fwQoTztwwDq4AIgOWN3obbZRGhnnsUAMVLzgdUf5RA+OvWBIcCsGve3TbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1562834},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"9b79944bba0701d9b426700124ba5048404caf30","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.12.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.12.0_1786067768972_0.646238875520301","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.13.0":{"name":"@anchrd/gate-api","version":"0.13.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.13.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"ed97ddab20fc8b530db23bfc2c591e96632c1e64","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.13.0.tgz","fileCount":87,"integrity":"sha512-PQQFCj5jdcSRhOw9xcKGIN4Xy3DVO5JtfZ/AwTWPISyFwP26Vg6fn9V/8iGpZfrF2uvU8srf7LfPEVL8i5kH+w==","signatures":[{"sig":"MEYCIQDTYmkl4Y9jLd2++loFUKZ2+5exEWfhNPv4PIWakrPvEgIhAKujoZ8yWogOFUaQ3t1o1wnadyYYmKfp0x7D4WGUMABe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1552438},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"9662d24edd8ad9468949616041c3ae38deed83ca","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.13.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.13.0_1786129099483_0.46477860914320845","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.14.0":{"name":"@anchrd/gate-api","version":"0.14.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.14.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"bd191d147cd9ab09c568ba24956d6610ec233390","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.14.0.tgz","fileCount":92,"integrity":"sha512-Si6FNKRcl1PUf23ZGqDIC4gzvxgns0jYuREveZ22dPGx0HdixlgULz/2qufROjGe2mwdr0BTG41oZSHK+Fqyeg==","signatures":[{"sig":"MEYCIQDtANXexEDIgdz6V6y2BCGgnBxqk1Z2+iqshpF/aLLXjQIhAL/N50QrHHFifZCdlqShQnqHaTboIGZdcQ7Rd+YpZbHV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1579720},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"49111b07fd529f2acee6639a4d90229191ed1055","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.14.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.14.0_1786373200414_0.30561483600224704","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.15.0":{"name":"@anchrd/gate-api","version":"0.15.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.15.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"98adcd870099506925f28aa2d2e8e213a2e7d258","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.15.0.tgz","fileCount":92,"integrity":"sha512-6y0uDzvD1AXyPR1xF7Y0X8VJmXpi2GJHGVqf6a8LFl5t+Kn5rKuf+cGIr9c3xfL21JRWcBe6lkBQ2o9CIB7bdA==","signatures":[{"sig":"MEYCIQDRH3SiedV1TIsVFwXoO0zcy65y2WKykqRoyRvRCKRUwAIhAI4IQEErCxhqGFttAd5Emd55lgeaYXVSLcvo9ZX8urqv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1580359},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"5a868e6e1292fbe5edc1bb9ffd4af70294b65058","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.15.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.15.0_1786384725149_0.847102941035125","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.16.0":{"name":"@anchrd/gate-api","version":"0.16.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.16.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"68b0107346ccfbe2f83d46b69efed6a31fd57fef","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.16.0.tgz","fileCount":94,"integrity":"sha512-F7BwdOqHo9AwyO7xAVwWbbE1/64+A0+NLSFQ9Fek5itpFSyXJoUmIPxa03Dpck7Fosih/OA1q6VzMaOz6IEhTw==","signatures":[{"sig":"MEUCIACh4PER4E8UMUMZSyZdUfu/NyovtNsPlogUVTkEphKuAiEA+8eKsx7b4Ld8GIuGNBEWI3riqYcLNJFRS0RWKx5d8tU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1639282},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"9583b108158eb660e93f86f8788396d2b189db53","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.16.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.16.0_1786453084887_0.7364288330999875","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.17.0":{"name":"@anchrd/gate-api","version":"0.17.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.17.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"8bb2747a789d79041fa6dcb34d0640edf287a259","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.17.0.tgz","fileCount":94,"integrity":"sha512-H9EajouE8x9Z2FeFIiF0wy0fySZgYOfywJN7uyMvXGmVxrlV58any/LgY/UL17Ot0YjOSaQ6Wp/wc5cE5XUUuA==","signatures":[{"sig":"MEUCIDFm0xepEX9Y3/VdTxg//qibyNciVrdxpCDLthFlTg8hAiEAoEDd+lIbr+hZJiUdCF5DhGlWGmmHWNuTPwoxAsSXvqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1639282},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"eaffb99ad61c7da38fe7de8def67328bb770d1e7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.17.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.17.0_1786482368396_0.21652904852891508","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.19.0":{"name":"@anchrd/gate-api","version":"0.19.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.19.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"4268b6ae85e6f523ced9fbc65168e00731712ef3","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.19.0.tgz","fileCount":96,"integrity":"sha512-Xx7E6Y7lOUcKRZFx5Dipenz/WcleP1gyeG2Gtj4YnVyUQ6kPf5iBiqD4oS6R/H1S1YQdGfE0UuFuo4xIEBJjEw==","signatures":[{"sig":"MEUCIH3mK/V+YinWB2K7/T5vK/HIJrEhQrXzxduk8KjYleiJAiEA4Tc4stNDrflaG4860e+byH6ai7ZUhXtmp4r9+7Hc/Qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1640635},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"ed450324b399ed27febc490be5b81834aa101dfd","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.17.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.19.0_1786715494475_0.9579121497622975","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.20.0":{"name":"@anchrd/gate-api","version":"0.20.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.20.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"77275e8a70c3a1bd2aed445332b0a29a40aae94c","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.20.0.tgz","fileCount":100,"integrity":"sha512-7qBJzWkLeck42twcCXYsduRSjTSOfs2KVG6YWZ13FM3wyqD2hW99vM/uh0//Ch15hc/lbpPDvIOrGElpN2XM0Q==","signatures":[{"sig":"MEYCIQD93Tn2TYBJUZ0K200NuQEqdEHQBCYZ3hY4nVJ1YSsIZwIhAIncW88bzDMRM9lkFLaBqkUZLvxan2GYbsT636737D9a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1676896},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"6d0fecf8eec0e65fde9e1655263867eefe2380b1","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.18.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.20.0_1786794298564_0.028764990916986033","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.21.0":{"name":"@anchrd/gate-api","version":"0.21.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.21.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"07ba27b5e971f9973243cbc22e338607fbc4fd34","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.21.0.tgz","fileCount":101,"integrity":"sha512-kQ95LqfrnMskGc70tfahBE4xH048nk2lnrGnRkY5qYWpaDiCB9PCHfnNeDi57jafZAicDfHIIbW/fdmB02jT6g==","signatures":[{"sig":"MEYCIQCKnwdG69PhnxRBuxzdffJQ98Hwl5qrpRMQDdQ6ko4ZzAIhAKCvFY2A34XJdrEEH9jPvnjmMSq5VR2k8GA6ptLd/TqL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687996},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"6a133c3d051fa1293d95de9136709778d5c30141","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.18.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.21.0_1787157275087_0.2973685988390258","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.24.0":{"name":"@anchrd/gate-api","version":"0.24.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.24.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"644f511da6561361ab14832a165b68350ffb5178","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.24.0.tgz","fileCount":106,"integrity":"sha512-MX2vKktKQQe6uiA+H19eHx1oktQiwrhj7KB+54991SKh6WPumgpuQn1yl3dBHs+ipJynh9gUou1bcey65/s0yQ==","signatures":[{"sig":"MEQCIBtgUOuDPdzNm7Lg0aNDMtz/TkUtly833kfgQG0ajhTWAiB1BQ/CT3NgzSwlqh0uwu+/qSFtP4Z3uEhgMlatFgvNhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1749359},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"a780394af179ade1d377722695e37c77ca95b6b3","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.21.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.24.0_1787402982388_0.5179477763929861","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.25.0":{"name":"@anchrd/gate-api","version":"0.25.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.25.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"9af54b89e7a495fad6c0c96f26fce4732e1dd178","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.25.0.tgz","fileCount":106,"integrity":"sha512-GxqHwzcgGEp8lsbGMlm7DRDr0x0f6A+U7DPLWx2JNUeqN4AkWbbPz2u8n0hFWeXWNie+DCUFXgInBF22PURSkQ==","signatures":[{"sig":"MEQCIGdESShdpPpmPiAmUy2otCS/VPwA8kCkA2OAAiyaH2MaAiAOpPG5tasM+/plqysbENJCl3Yz8r6VHZFnKC3SJFyqnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1751559},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"141711b10c20eb917ff6d7b8dd99ec51bfdcb33e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.22.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.25.0_1787409603163_0.7406594749052486","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."},"0.26.0":{"name":"@anchrd/gate-api","version":"0.26.0","license":"UNLICENSED","_id":"@anchrd/gate-api@0.26.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"b817b7cd140370bb0f8b575a99f9bd5818731485","tarball":"https://registry.npmjs.org/@anchrd/gate-api/-/gate-api-0.26.0.tgz","fileCount":106,"integrity":"sha512-ttHyGl0ZpzWTl/rhaPu07QWelWuqsNiesCa09xKDKWgTt+TivXgferGru+hIpZc2F9WQy5TGp+mBhZDmasFIXw==","signatures":[{"sig":"MEQCIDeAGcdisORZKy/FJJ/g+VhpLv3mdFIHMQ78mQf2keU0AiAqiXcz74IEsoMNVmfXr6zR2jHDJqwCtAmsEhpwDKX8lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1760137},"type":"module","exports":{".":"./src/gate/gate.ts","./cloudflare":"./src/adapters/cloudflare/cloudflare.ts"},"gitHead":"13e62713078893db344338f873b023b0b7b18b38","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json --emitDeclarationOnly && node ../../scripts/pack/fix-dts.mjs && esbuild src/gate/gate.ts src/adapters/cloudflare/cloudflare.ts --bundle --minify --format=esm --packages=external --outdir=dist --outbase=src","prepack":"bun run build && node ../../scripts/pack/to-dist-manifest.mjs","postpack":"node ../../scripts/pack/restore-manifest.mjs","typecheck":"tsc --noEmit","db:generate":"drizzle-kit generate","typecheck:core":"tsc --noEmit -p tsconfig.portable.json","db:auth:generate":"better-auth generate --config better-auth.config.ts --output src/adapters/db/auth.schema.ts --yes && biome check --write src/adapters/db/auth.schema.ts","db:migrate:local":"wrangler d1 migrations apply gate --local"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7c2f1bb-26f3-4e88-ada2-c03108f9d1f6"}},"_npmVersion":"12.0.2","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","hono":"^4.12.30","jose":"^6.1.0","ulid":"^3.0.2","better-auth":"1.6.23","drizzle-orm":"^0.45.2","@better-auth/api-key":"1.6.23","@anchrd/gate-contract":"^0.22.0","@cloudflare/workers-types":"^5.20260718.1","@better-auth/oauth-provider":"1.6.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","wrangler":"^4.112.0","drizzle-kit":"^0.31.10","@better-auth/cli":"1.4.22","@cloudflare/vitest-pool-workers":"^0.18.6"},"_npmOperationalInternal":{"tmp":"tmp/gate-api_0.26.0_1787909292012_0.13083710761645584","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Merged into @anchrd/gate as of 0.28.0."}},"time":{"created":"2026-07-19T08:23:25.792Z","modified":"2026-08-31T10:23:05.752Z","0.1.0":"2026-07-19T08:23:26.053Z","0.1.1":"2026-07-19T08:46:04.386Z","0.1.2":"2026-07-19T13:42:10.619Z","0.2.0":"2026-07-27T09:29:37.453Z","0.2.1":"2026-07-27T12:31:44.032Z","0.2.2":"2026-07-27T17:27:54.337Z","0.2.3":"2026-07-27T18:30:05.097Z","0.3.0":"2026-07-29T10:18:10.449Z","0.4.0":"2026-07-29T15:28:18.754Z","0.4.2":"2026-07-29T18:23:00.268Z","0.5.0":"2026-07-29T21:52:26.082Z","0.5.1":"2026-07-29T21:59:45.089Z","0.5.2":"2026-07-30T15:44:03.167Z","0.6.0":"2026-07-30T19:24:16.478Z","0.7.0":"2026-07-30T23:20:52.862Z","0.8.0":"2026-07-31T19:18:27.622Z","0.8.1":"2026-07-31T21:16:14.836Z","0.8.2":"2026-08-01T09:48:49.590Z","0.8.3":"2026-08-01T15:52:56.696Z","0.8.4":"2026-08-01T20:59:22.380Z","0.8.5":"2026-08-02T00:19:45.620Z","0.8.6":"2026-08-02T11:00:39.916Z","0.8.7":"2026-08-02T17:31:12.127Z","0.8.8":"2026-08-02T18:23:57.737Z","0.9.0":"2026-08-03T16:46:46.981Z","0.9.1":"2026-08-03T21:32:39.513Z","0.10.0":"2026-08-05T14:12:04.068Z","0.11.0":"2026-08-05T21:52:08.192Z","0.11.1":"2026-08-06T10:10:10.240Z","0.12.0":"2026-08-07T01:56:09.135Z","0.13.0":"2026-08-07T18:58:19.640Z","0.14.0":"2026-08-10T14:46:40.618Z","0.15.0":"2026-08-10T17:58:45.342Z","0.16.0":"2026-08-11T12:58:05.034Z","0.17.0":"2026-08-11T21:06:08.586Z","0.19.0":"2026-08-14T13:51:34.662Z","0.20.0":"2026-08-15T11:44:58.705Z","0.21.0":"2026-08-19T16:34:35.228Z","0.24.0":"2026-08-22T12:49:42.553Z","0.25.0":"2026-08-22T14:40:03.316Z","0.26.0":"2026-08-28T09:28:12.186Z"},"license":"UNLICENSED","description":"**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic, [D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer, steerable from the outside over **REST** and **MCP**.","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"readme":"# @anchrd/gate-api\n\n**gate** — login and permissions as a finished product. A Cloudflare Worker holds the logic,\n[D1](https://developers.cloudflare.com/d1/) holds everything as data. Deployable per customer,\nsteerable from the outside over **REST** and **MCP**.\n\nBuilt on [Better Auth](https://better-auth.com), [Hono](https://hono.dev),\n[Drizzle](https://orm.drizzle.team), and Zod.\n\n## Install\n\n```bash\nnpm i @anchrd/gate-api\n```\n\n## What it is\n\nOne question matters: **`can(interface, function)`** — may this user perform this action?\ngate holds users, roles with their permissions, registered interfaces, and an append-only audit log. A customer edge\nasks `/api/v1/authorization` once per request and gets back `{ identity, rules }` — you never write code\ninside gate; everything is data.\n\nThe most convenient way to steer and consume gate is [`@anchrd/gate-sdk`](https://www.npmjs.com/package/@anchrd/gate-sdk) (client + `gate` CLI).\n\n**Where this package stops.** It needs a D1 binding and a rate-limit binding, and it needs\n`BETTER_AUTH_URL` and `BETTER_AUTH_SECRET`; without them it does not come up in a usable state. It\nis not a library you call in-process — every consumer talks HTTP. It does not run your service's\nauthorization for you: it answers *what may this identity do*, and the decision is made in your own\ncode by `can()`. It ships no UI of its own ([`@anchrd/gate-ui`](../ui) is a separate package and an\noptional binding), and it stores no business data — only principals, roles, permissions, registered\ninterfaces and the audit log.\n\n## Setup (Cloudflare Worker)\n\nThe core is a factory (`createGate(deps)`); a **thin worker shell** injects the bindings.\nThe ready-made `./cloudflare` export is exactly that shell — your worker entry re-exports it:\n\n```ts\n// api.ts — your wrangler `main`\nimport worker from \"@anchrd/gate-api/cloudflare\";\nexport default worker;\n```\n\n```jsonc\n// wrangler.jsonc\n{\n  \"name\": \"gate\",\n  \"main\": \"api.ts\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n  \"d1_databases\": [{ \"binding\": \"DB\", \"database_name\": \"gate\" }],\n  \"ratelimits\": [{ \"name\": \"RATE_LIMIT\", \"simple\": { \"limit\": 100, \"period\": 60 } }],\n  \"vars\": {\n    \"BETTER_AUTH_URL\": \"https://gate.your-customer.dev\",\n    \"GATE_ADMIN_EMAIL\": \"\",\n    \"GATE_OAUTH_AUDIENCES\": \"https://operations-dwh.example.com/mcp,https://operations-intel.example.com/mcp\"\n  }\n}\n```\n\nOne required secret (not in `vars`):\n\n```bash\nwrangler secret put BETTER_AUTH_SECRET     # ≥ 32 bytes of randomness\n```\n\nApply the migrations and deploy. The first human who signs up becomes administrator and can sign in\nwithout email verification; every later account must verify its address normally. Between deployment\nand that first sign-up, the publicly reachable installation can be claimed. Sign up first, then\nannounce or expose the installation to its intended audience.\n\n`GATE_ADMIN_EMAIL` is an optional emergency exit, not bootstrap configuration. Leave it empty during\nnormal operation. If all administrator roles are lost, set it to the email address of an existing\naccount; the shared admin guard then admits that account so roles can be repaired. Remove the value\nagain after recovery.\n\n`GATE_OAUTH_AUDIENCES` is an optional, comma-separated allowlist for MCP resource servers hosted\noutside gate. Add their exact public `resource` URLs (including `/mcp` when applicable). Gate then\naccepts RFC 8707 `resource` parameters for those URLs and issues access tokens with the requested\naudience; every URL not on the allowlist remains rejected. Without this value, only\n`BETTER_AUTH_URL` is a valid audience.\n\nWhen registering such a service, set its `oauthResource` to the same exact URL. The service key then\naccepts only JWT access tokens minted for that resource; a token for another configured resource is\nrejected.\n\nHosting elsewhere means swapping the `./cloudflare` shell plus the `db`/`mailer` adapters; the core beneath knows no `env`.\n\n## Social sign-in (optional: Google, Microsoft, Cloudflare Access)\n\nUsers can sign in with Google, Microsoft, or Cloudflare Access for SaaS (OIDC). Cloudflare Access\nis the federation layer in front of an upstream identity provider, not an identity origin of its\nown. A provider is active **exactly when all its values are set** — there is no second switch. Set\nnone and gate behaves as before (the login page shows only email/password). Credentials are worker\nconfiguration, never `gate.json`: that file lives in your git and is baked into the UI at build\ntime; a client secret has no place there and the worker could not read it anyway.\n\n```bash\nwrangler secret put GOOGLE_CLIENT_ID\nwrangler secret put GOOGLE_CLIENT_SECRET\nwrangler secret put MICROSOFT_CLIENT_ID\nwrangler secret put MICROSOFT_CLIENT_SECRET\nwrangler secret put CLOUDFLARE_ACCESS_CLIENT_ID\nwrangler secret put CLOUDFLARE_ACCESS_CLIENT_SECRET\n```\n\nFor Cloudflare, also set the non-secret Zero Trust team name as\n`CLOUDFLARE_ACCESS_TEAM_NAME` in `wrangler.jsonc`. Create an **Access for SaaS** application in\nZero Trust → Access controls → Applications, choose OIDC, and copy its client ID and secret. gate\nderives all three Access endpoints at runtime from the team name and client ID:\n\n```text\nhttps://<TEAM>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<CLIENT_ID>/authorization\nhttps://<TEAM>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<CLIENT_ID>/token\nhttps://<TEAM>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<CLIENT_ID>/jwks\n```\n\nRegister these **redirect URIs** at the provider (they are `<BETTER_AUTH_URL>/callback/<provider>`):\n\n| Provider | Where | Redirect URI |\n|---|---|---|\n| Google | [Google Cloud Console](https://console.cloud.google.com/apis/credentials) → OAuth client → *Authorized redirect URIs* | `https://gate.your-customer.dev/callback/google` |\n| Microsoft | [Entra ID](https://entra.microsoft.com) → App registration → *Authentication* → *Redirect URIs* (Web) | `https://gate.your-customer.dev/callback/microsoft` |\n| Cloudflare Access | Zero Trust → Access controls → Applications → SaaS application → OIDC | `https://gate.your-customer.dev/oauth2/callback/cloudflare` |\n\nSwap `gate.your-customer.dev` for your `BETTER_AUTH_URL`. The public `GET /api/v1/auth-options`\nreturns only each active provider's **name and sign-in path** (no client ID, team name, or secret),\nso the UI knows which button and Better Auth mechanism to use. The first human account becomes\nadministrator regardless of whether it is created through OIDC or email/password. Every later OIDC\naccount holds **no role** by default, just like every later email sign-up. Google can supply a\nverified email; Microsoft and Cloudflare Access are forced to `emailVerified: false`, so gate's own\nverification mail must establish ownership before an invitation can be accepted.\n\n## Admin UI (optional, same-origin)\n\nThe admin SPA ([`@anchrd/gate-ui`](../ui)) ships as **Workers Static Assets on this same worker** —\none deploy per customer, no separate UI worker. Same-origin means the Better Auth session cookie\njust works: no CORS, no `SameSite` pain. Add an `assets` binding pointing at the built UI:\n\n```jsonc\n// wrangler.jsonc — add alongside the config above\n{\n  \"assets\": {\n    \"directory\": \".gate/ui\",  // where `gate build` puts the built @anchrd/gate-ui (see below)\n    \"binding\": \"ASSETS\"       // exposes env.ASSETS to the shell for the SPA fallback\n  }\n}\n```\n\nBuild the UI, then deploy the worker — `wrangler dev`/`deploy` serves UI **and** API from one\nprocess:\n\n```bash\nnpm i @anchrd/gate-ui @anchrd/gate-sdk\nnpx gate build       # -> .gate/ui (reads your gate.json; see the ui README)\nwrangler deploy\n```\n\nRouting is automatic and needs no `main` changes: Cloudflare's asset router serves existing files\n(`/`, `/assets/*`) before the worker; the API routes (`/api/*`, `/oauth2/*`, `/.well-known/*`,\n`/mcp`, `/consent`, …) keep priority; and a browser navigation to a client route (`/grants`,\n`/roles`, …) falls back to `index.html` so deep-links and reloads work. The customer picks the\ndomain (e.g. `admin.gate.your-customer.dev`) in their own wrangler config. **Omit the `assets`\nbinding and gate is a pure API** — `env.ASSETS` is absent and the fallback is skipped.\n\n**Why the UI is a separate package.** It is consumed as its own package (`@anchrd/gate-ui`)\ninstead of being bundled into `@anchrd/gate-api`: the API tarball stays lean and runtime-neutral\n(no HTML/JS payload in a package that also runs headless), and the UI versions independently of\nthe API. It ships as **source**, not as a built `dist` — your theme and your languages are applied\nat build time, which a prebuilt bundle could not do. The repo's reference consumer\n([`workers/api`](../../workers/api)) skips the install and points its `assets.directory` straight\nat the workspace build (`../../packages/ui/dist`).\n\n## Surface\n\n| Path | |\n|---|---|\n| `POST /api/v1/authorization` | Bearer → `{ identity, rules }`, scoped to the calling service (service key; stamps \"last seen\"). One field is deliberately **not** scoped: `mcpConnectAnywhere` says whether this person holds `mcp.connect` at any service at all — a bit, never the list — because the MCP portal is one door for every server. |\n| `GET /api/v1/schema` | The calling service's own interfaces, for codegen (`gate init`). |\n| `PUT/DELETE /api/v1/service/interfaces/:handle` | Idempotent self-management of the calling app service's own interfaces. The service key supplies the scope; no service id is accepted. |\n| `/api/v1/services` · `/roles` · `/users` | Administration (admin). A service owns its interfaces (`/services/:id/interfaces`) and carries the one service key. A role owns its permissions: `/roles/:role/permissions` reads them as a tree (service → interface → function) and sets/unsets a single `(role, interfaceId, function)`. |\n| `/api/v1/users/:id/disable` · `/enable` | Lock a human account and release it again. Sessions are deleted, sign-in is refused, an already issued token stops resolving at the next protected access — identity and roles are kept. Nobody locks themselves, and nobody locks the last operational human admin. |\n| `/api/v1/applications` | Machine principals with scoped API keys (CI/CLI), including `/:id/disable` and `/:id/enable`. |\n| `/api/v1/oauth-clients` | The clients that registered themselves at the open `POST /oauth2/register` — list them with their registration date, `DELETE` one together with its tokens and consents. There is no create path here: the open endpoint is the only way in. |\n| `/mcp` | The same administration actions as MCP tools. |\n| `/auth/*` · `/oauth2/*` · `/.well-known/*` | Better Auth: login, OAuth provider, DCR, PKCE, discovery. |\n| `/health` | Whether the gate itself is alive. |\n\n**Two kinds of auth:** `authorization`, `schema`, and interface self-management accept the\n**service key**; `/api/v1/auth-options` is public. Everything else under `/api/v1` requires a\n**user bearer with admin rights** (or an application key holding the `admin` role).\n\n**Every service-key door is scoped to the calling service.** The key identifies a service, and gate\nanswers only about that service's own interfaces: `/authorization` intersects the user's permissions with\nthem (a data warehouse backend never learns what the same user may do on the dashboard MCP), and\n`/schema` generates types for those interfaces alone. This is also what keeps a handle unambiguous —\ntwo services may carry the same handle, but one response only ever describes one service.\nThe single exception is `POST /api/v1/users/invite/accept`: an invitation is accepted by the *invitee*,\nwho is not an admin. It still requires an authenticated session, and the role it grants comes from the\nstored invitation — never from the request body. Accepting only works on an account whose email is\n**verified**, which is what stops a stranger from pre-registering an address about to be invited.\n\n**Sign-up stays open, sign-in requires a verified email.** A newly created user holds no role and\ntherefore no access; `POST /sign-up/email` no longer returns a session, and the first sign-in attempt\nsends the verification mail through the injected mailer port. Sign-in, sign-up and invite are rate\nlimited through the `RATE_LIMIT` binding.\n\n## Related\n\n- [`@anchrd/gate-sdk`](https://www.npmjs.com/package/@anchrd/gate-sdk) — the client and the `gate` CLI.\n- [`@anchrd/gate-contract`](https://www.npmjs.com/package/@anchrd/gate-contract) — the shared wire formats.\n","readmeFilename":"README.md"}