{"_id":"@auth-craft/tenant-access-control-dynamodb","_rev":"8-b25500954b51e62275a18d42449af43d","name":"@auth-craft/tenant-access-control-dynamodb","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.1","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.1","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"f2bdf522388b2762cbdfcf50123394fe43ab86f5","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.1.tgz","fileCount":8,"integrity":"sha512-bfoS0xtZLgRqGSPzBVnkdPTr0IeXCYUf9uY43rv2sxgh+bSnXO3kQaIEJKh/svndV5VV1E98Ynpr7idi7rgkBQ==","signatures":[{"sig":"MEQCIAttIKi4ShL7mrVyORv46boLmPjcHCRdtmj18Pobe/CLAiA9Wj0tYGgFS1OJ6ydEF22q1dhsM4ibFMovRPIBjncECg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76715},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0f91d2230ede79d1cc5b135a914aa5e428995842","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"workspace:*","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/tsup-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.1_1768475813311_0.3182830441562905","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.2","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.2","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"01ac4c4f017e0cd00b7024d3ceb73b4976b2cf72","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.2.tgz","fileCount":8,"integrity":"sha512-zfs40UFYus7hEyZh6YuJHqkPraAWpIvnyFwAD5HThep34d22l5fxT1lMN6jYq37uUCjY1/iUK8GCxxtTkK2a8A==","signatures":[{"sig":"MEQCIHaE6MxrnMOyT+5klwNfLzyJbK3/bv/3lWgm3/tfbe+ZAiBfBlxnw+hRpzXNdMOaUJ5dYIChciCIQcWeRoLb2mkMAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196802},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b05464d676bff3de8b3773b141511e49905892ae","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.2_1768541781320_0.896762578915123","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.3","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.3","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"97fb3b74b69c7a29b6739e1579254a176868d323","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.3.tgz","fileCount":8,"integrity":"sha512-ZkK24yk50m1N911Nob4C8qljS+D78pmHqmn34dPWKgp3RTtkEByJWS7JAUoSpk1tDUs3FwLJz3M6sYFweFXrkg==","signatures":[{"sig":"MEQCIHJXRDLe0JnfM2qi4k7rPl8f/6f1oxFJ8goLwm5FZcYyAiAgxVfAlVLxof0TEh6rOCUU8UL1pxN53sQ2U4HTJ+zviw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190383},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"07ecebb316c9c1ee0a1d1b812b11b89f159cfec5","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.3_1768752478511_0.7086934066629631","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.4","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.4","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"778d59f83b87549d688db0bbbb59f04acf0cb509","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.4.tgz","fileCount":8,"integrity":"sha512-Ny9n+/vzNWfESW6/jNYXLT4BGDLONDkPeqSFiintMK3VIL8n82Ymv+NJdMNstBUIAZ2ZEiolzLoc+HUSaV7ZYw==","signatures":[{"sig":"MEUCIQC1uHrTIVl/+vWdeSO+nS3gt+KEsIZv+8ZaiUv7MX+pqgIgGtY54LIvPc8zF5DL4msuvgFX8FjfM/tGs0VonyzHR6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190383},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"07ecebb316c9c1ee0a1d1b812b11b89f159cfec5","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.4_1768752610794_0.5519930520422871","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.5","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.5","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"01e024c8e58be0c26d364e52d4192bbb79b1f6c1","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.5.tgz","fileCount":8,"integrity":"sha512-uxkVXRoSPm9eeFTEIp4PJWbIGcI50Zgo+NGb56XdT1d/DSPTb3XKebK13NumAiUoDY5E0QLP+jMKutrSsPxDzg==","signatures":[{"sig":"MEYCIQDIBHHGju12fob8r1wpG0WfLsr1Ba/ybo/HsVga6IkHYgIhALEPcxHrpu31UZ9XswlemnaCgFC6OPApcnJDJiKE9xu5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190373},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"07ecebb316c9c1ee0a1d1b812b11b89f159cfec5","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"^0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"^0.0.2"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.5_1768752728544_0.8907130163165078","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.6","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.6","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"ca4362e320aef51332d3d5cd8fda0c0ca605b924","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.6.tgz","fileCount":8,"integrity":"sha512-UMTPFqh/BiAzjtwvwnFu0kG72tOZZLSV9jt0qY/T6+H57iYvvMcjHkxDRrqLTO46tQmNYShJHnrqn3kzL1TrWQ==","signatures":[{"sig":"MEUCICkEjHbKldp+X85YUfiSsTO/UV4Ex33gOpaNzrE1Tmi4AiEA6/WDcpE4VFZQvjeq1Oxem4d6Wlqg/dCzux6trd6t96A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189981},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a03685d6e27c554d348c584aa3e9a62a0b356bc4","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^2.2.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"^0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.6_1768817591945_0.6226818477528664","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.7","license":"MIT","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.7","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"dist":{"shasum":"c690cb2a1e999750419b8d1cc891e287d7acc606","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.7.tgz","fileCount":8,"integrity":"sha512-WkNrZQGveKP8BktSGOt4fzLpOWbKhCzZeJBrNNgnKYltLbWc9DWif9w0tm8/iaCX7guTOoDqkYEJ+NMHuv5srA==","signatures":[{"sig":"MEUCIQC6C8yQkXmR1Gklr4D1zlv+Ki7xH9FiyGhJyXq5mxhZbQIgA/7qnJrSM9I9lp9mPpylVgHl1rIbgbjILSzr6/oKx+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185936},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2f2a0293d1427e2372bb0b56788119b888830add","scripts":{"dev":"tsup --watch","build":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"_npmVersion":"11.6.2","description":"DynamoDB implementation for tenant-access-control","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ts-micro-result":"^3.3.0","@aws-sdk/lib-dynamodb":"^3.600.0","@aws-sdk/client-dynamodb":"^3.600.0","@auth-craft/tenant-access-control":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^22.10.0","@auth-craft/database-plugin-dynamodb":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/tenant-access-control-dynamodb_0.0.7_1768963235951_0.0996088372423809","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@auth-craft/tenant-access-control-dynamodb","version":"0.0.8","license":"MIT","description":"DynamoDB implementation for tenant-access-control","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","type-check":"tsc --noEmit"},"dependencies":{"@auth-craft/tenant-access-control":"0.0.8","@aws-sdk/client-dynamodb":"^3.600.0","@aws-sdk/lib-dynamodb":"^3.600.0","ts-micro-result":"^3.3.0"},"devDependencies":{"@auth-craft/database-plugin-dynamodb":"workspace:*","@types/node":"^22.10.0","tsup":"^8.3.5","typescript":"^5.7.2"},"gitHead":"2f2a0293d1427e2372bb0b56788119b888830add","_id":"@auth-craft/tenant-access-control-dynamodb@0.0.8","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-LiRyZSg/YEXoG42anZFpERYrVI7d+LPQ4FPSl+ZcsMz96LFWNDHoqVva9oCefzDhllNBAtEOjIqckCpF3sPXmw==","shasum":"776a430ad2e866ab126e9a88a1d7e87f82c96285","tarball":"https://registry.npmjs.org/@auth-craft/tenant-access-control-dynamodb/-/tenant-access-control-dynamodb-0.0.8.tgz","fileCount":8,"unpackedSize":185936,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDwyW+OyR0Vp4HSxEYpZeRUCP0EHfeifiytdDhEdNeRkwIhALNKDBpe+t23XseBMQbWXiob5UgTeKiDQCepXeFoMob1"}]},"_npmUser":{"name":"minhtaimc","email":"minhtaimc@gmail.com"},"directories":{},"maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tenant-access-control-dynamodb_0.0.8_1768963255203_0.6570645740460042"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-15T11:16:53.197Z","modified":"2026-01-21T02:40:55.468Z","0.0.1":"2026-01-15T11:16:53.450Z","0.0.2":"2026-01-16T05:36:21.464Z","0.0.3":"2026-01-18T16:07:58.690Z","0.0.4":"2026-01-18T16:10:10.958Z","0.0.5":"2026-01-18T16:12:08.698Z","0.0.6":"2026-01-19T10:13:12.085Z","0.0.7":"2026-01-21T02:40:36.122Z","0.0.8":"2026-01-21T02:40:55.343Z"},"license":"MIT","description":"DynamoDB implementation for tenant-access-control","maintainers":[{"name":"minhtaimc","email":"minhtaimc@gmail.com"}],"readme":"# @auth-craft/tenant-access-control-dynamodb\r\n\r\n> ⚠️ **Experimental / Internal Use**\r\n>\r\n> This package is published for convenience only.\r\n>\r\n> - No stability guarantee\r\n> - Breaking changes may happen at any time\r\n> - No documentation\r\n> - No support\r\n>\r\n> Use at your own risk.\r\n\r\n---\r\n\r\nDynamoDB implementation for `@auth-craft/tenant-access-control`.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @auth-craft/tenant-access-control @auth-craft/tenant-access-control-dynamodb\r\n```\r\n\r\n## Usage\r\n\r\n```typescript\r\nimport { createTenantAccessSDK } from '@auth-craft/tenant-access-control';\r\nimport { createTenantAccessDynamoDBPlugin } from '@auth-craft/tenant-access-control-dynamodb';\r\n\r\n// Create DynamoDB plugin\r\nconst plugin = createTenantAccessDynamoDBPlugin({\r\n  tableName: 'your-auth-table',\r\n});\r\n\r\n// Create SDK with DynamoDB implementation\r\nconst sdk = createTenantAccessSDK(plugin);\r\n\r\n// Use SDK\r\nconst member = await sdk.getMember({ ... });\r\n```\r\n\r\n## Configuration\r\n\r\n### `createTenantAccessDynamoDBPlugin(config)`\r\n\r\n**Parameters:**\r\n\r\n```typescript\r\ninterface TenantAccessDynamoDBConfig {\r\n  // DynamoDB table name (required)\r\n  tableName: string;\r\n\r\n  // Optional: Provide your own DynamoDB client\r\n  // If not provided, a new client will be created\r\n  client?: DynamoDBClient;\r\n}\r\n```\r\n\r\n### With Custom Client\r\n\r\n```typescript\r\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb';\r\n\r\nconst client = new DynamoDBClient({\r\n  region: 'ap-southeast-1',\r\n  credentials: {\r\n    accessKeyId: '...',\r\n    secretAccessKey: '...',\r\n  },\r\n});\r\n\r\nconst plugin = createTenantAccessDynamoDBPlugin({\r\n  tableName: 'auth-table',\r\n  client,\r\n});\r\n```\r\n\r\n### With Local DynamoDB\r\n\r\n```typescript\r\nconst client = new DynamoDBClient({\r\n  endpoint: 'http://localhost:8000',\r\n  region: 'local',\r\n  credentials: {\r\n    accessKeyId: 'local',\r\n    secretAccessKey: 'local',\r\n  },\r\n});\r\n\r\nconst plugin = createTenantAccessDynamoDBPlugin({\r\n  tableName: 'auth-table',\r\n  client,\r\n});\r\n```\r\n\r\n## Table Schema\r\n\r\nThis package uses the same DynamoDB table schema as `@auth-craft/database-plugin-dynamodb`.\r\n\r\n### TenantMember Item\r\n\r\n| Attribute | Value |\r\n|-----------|-------|\r\n| PK | `TNT#{tenantId}` |\r\n| SK | `AUD#{audience}#USR#{userId}` |\r\n| userStatus | `invited` \\| `active` \\| `suspended` \\| `removed` |\r\n| roleIds | JSON stringified array |\r\n| permMask | number |\r\n| createdAt | Unix milliseconds |\r\n| updatedAt | Unix milliseconds |\r\n\r\n### Session Item\r\n\r\nUses existing session items with:\r\n- `tenantId` - Tenant identifier\r\n- `audience` - Target audience\r\n- GSI_ActiveSessions for querying active sessions\r\n\r\n## Advanced Usage\r\n\r\n### Direct Repository Access\r\n\r\n```typescript\r\nimport {\r\n  DynamoDBTenantMemberRepository,\r\n  DynamoDBSessionRepository,\r\n} from '@auth-craft/tenant-access-control-dynamodb';\r\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb';\r\n\r\nconst client = new DynamoDBClient({});\r\n\r\nconst tenantMemberRepo = new DynamoDBTenantMemberRepository(client, 'auth-table');\r\nconst sessionRepo = new DynamoDBSessionRepository(client, 'auth-table');\r\n\r\n// Use repositories directly\r\nconst member = await tenantMemberRepo.get(tenantId, audience, userId);\r\n```\r\n\r\n## Dependencies\r\n\r\n- `@auth-craft/tenant-access-control` - SDK and interfaces\r\n- `@auth-craft/database-plugin-dynamodb` - Key patterns and utilities\r\n- `@aws-sdk/client-dynamodb` - AWS SDK DynamoDB client\r\n- `@aws-sdk/lib-dynamodb` - AWS SDK DynamoDB Document client\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}