{"_id":"@axowl/sdk","_rev":"4-08e3295c9307d4142e9944dbec87d620","name":"@axowl/sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@axowl/sdk","version":"0.1.0","license":"MIT","_id":"@axowl/sdk@0.1.0","maintainers":[{"name":"sonny72","email":"admin@axowl.com"}],"dist":{"shasum":"9950dcb0d901545b451c3438ed6d95a531e71b0a","tarball":"https://registry.npmjs.org/@axowl/sdk/-/sdk-0.1.0.tgz","fileCount":33,"integrity":"sha512-2UDpLOfYKq98ZzCjR6D4LZaHCo1z/QVbjGFOYIWLimtqBugvXDdOIMUPnt+FllglWBOPH4wI7Bg4em4b/b1EIQ==","signatures":[{"sig":"MEUCIBRZnGhQQPgOlF+i7ekYdAIqnpoM6hGcp/b63PdqTwM8AiEAuPS7CuxZly0C5c12J2qoFvS/kYueOUk2AFCLPQp/4JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21399},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"sonny72","email":"admin@axowl.com"},"_npmVersion":"10.9.2","description":"Axowl SDK for React — authentication, session, and permission hooks","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@axowl/sdk-core":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1775730180876_0.3537775375618082","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@axowl/sdk","version":"0.1.1","license":"MIT","_id":"@axowl/sdk@0.1.1","maintainers":[{"name":"sonny72","email":"admin@axowl.com"}],"dist":{"shasum":"457fed88ad50b8a2a483446171ef51852e13e253","tarball":"https://registry.npmjs.org/@axowl/sdk/-/sdk-0.1.1.tgz","fileCount":34,"integrity":"sha512-DWL6Y8B5OgqhR9MXY8F+bF6IfD+GGesnGGU7qNKX1wMCDIHbMWGu6ltbcKQEGy9H4MfUKcaTsNKtU1eRpLbsow==","signatures":[{"sig":"MEYCIQCj43HEB3WcWM9nkEuDX0O51xKiAPleazm357Gtvmp49wIhALQd7MocV2vvkKNzaYeD6kWgxjqNZ/ler1GTT7wrD2wk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25303},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"sonny72","email":"admin@axowl.com"},"_npmVersion":"10.9.2","description":"Axowl SDK for React — authentication, session, and permission hooks","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@axowl/sdk-core":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1775730895275_0.4054194723868596","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@axowl/sdk","version":"0.1.2","license":"MIT","_id":"@axowl/sdk@0.1.2","maintainers":[{"name":"sonny72","email":"admin@axowl.com"}],"dist":{"shasum":"2803207b823363d8879ed6617498b44947d37a4c","tarball":"https://registry.npmjs.org/@axowl/sdk/-/sdk-0.1.2.tgz","fileCount":34,"integrity":"sha512-g4K5tTi8THMBfcEMcNuf4kcnztM+UczAJt6+0iVJvVYRrkzY5BYNFq0eYetrq5wusDbVf1MemKXcAwwsrKolZw==","signatures":[{"sig":"MEQCIExzParT7LNFBtuJ28GUOO6hzyJu8AE8q5e1BIO6gxEbAiA7RnFioIvimFpX1oGcfIrjZr80qK1haba2DB5AlJ7Wqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25298},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"sonny72","email":"admin@axowl.com"},"_npmVersion":"10.9.2","description":"Axowl SDK for React — authentication, session, and permission hooks","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@axowl/sdk-core":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1775731557556_0.860308887750439","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@axowl/sdk","version":"0.2.0","description":"Axowl SDK for React — authentication, session, and permission hooks","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"dependencies":{"@axowl/sdk-core":"^0.2.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"devDependencies":{"@types/react":"^19.0.0","react":"^19.0.0","typescript":"^5.7.0"},"license":"MIT","_id":"@axowl/sdk@0.2.0","gitHead":"f4ba09d9039212a4dc3ad9012dfee1ab31da7fa6","_nodeVersion":"24.12.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-z5vf2OPqes4wo3zCoe/hAY6D+OBIWxYPfnZFimLTM3xPfi8SkskPL0OZP6zRmXzpr68sek3rHfLkSqn4kEw5FA==","shasum":"73fbf53a4c4b634171dbe9d069b369a42ec382ea","tarball":"https://registry.npmjs.org/@axowl/sdk/-/sdk-0.2.0.tgz","fileCount":34,"unpackedSize":25298,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICzgaaLFGKwCyQ2MCPX+BAssiFM7woi8FD+Ya2zCm0DxAiByaPpKfnG8ACueFfdkerkKQFrXp0kZQcQdzzkPz7KbVg=="}]},"_npmUser":{"name":"sonny72","email":"admin@axowl.com"},"directories":{},"maintainers":[{"name":"sonny72","email":"admin@axowl.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.2.0_1776760322207_0.8970240002068597"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-09T10:23:00.757Z","modified":"2026-04-21T08:32:02.474Z","0.1.0":"2026-04-09T10:23:01.026Z","0.1.1":"2026-04-09T10:34:55.446Z","0.1.2":"2026-04-09T10:45:57.703Z","0.2.0":"2026-04-21T08:32:02.346Z"},"license":"MIT","description":"Axowl SDK for React — authentication, session, and permission hooks","maintainers":[{"name":"sonny72","email":"admin@axowl.com"}],"readme":"# @axowl/sdk\n\nThe official Axowl SDK for React — drop-in authentication, session management, and permission control.\n\n## Install\n\n```bash\nnpm install @axowl/sdk\n```\n\n## Quick Start\n\n### 1. Wrap your app with `AxowlProvider`\n\n```tsx\nimport { AxowlProvider } from '@axowl/sdk';\n\nfunction App() {\n  return (\n    <AxowlProvider orgSlug=\"my-org\" appKey=\"ak_live_xxxxx\">\n      <YourApp />\n    </AxowlProvider>\n  );\n}\n```\n\n### 2. Use authentication hooks\n\n```tsx\nimport { useAxowl } from '@axowl/sdk';\n\nfunction LoginPage() {\n  const { user, isSignedIn, isLoaded, signIn, signOut } = useAxowl();\n\n  if (!isLoaded) return <p>Loading...</p>;\n\n  if (isSignedIn) {\n    return (\n      <div>\n        <p>Welcome, {user.name}!</p>\n        <button onClick={signOut}>Sign Out</button>\n      </div>\n    );\n  }\n\n  return (\n    <div>\n      <button onClick={() => signIn.magicLink('user@example.com')}>\n        Send Magic Link\n      </button>\n      <button onClick={() => signIn.social({ provider: 'google', idToken: '...' })}>\n        Sign in with Google\n      </button>\n    </div>\n  );\n}\n```\n\n### 3. Check permissions\n\n```tsx\nimport { usePermission } from '@axowl/sdk';\n\nfunction Dashboard() {\n  const { can, canAll, canAny } = usePermission();\n\n  if (!can('dashboard.view')) {\n    return <p>Access denied</p>;\n  }\n\n  return (\n    <div>\n      <h1>Dashboard</h1>\n      {can('report.export') && <button>Export Report</button>}\n      {canAny(['settings.view', 'settings.edit']) && <a href=\"/settings\">Settings</a>}\n    </div>\n  );\n}\n```\n\n### 4. Access organization info\n\n```tsx\nimport { useOrg } from '@axowl/sdk';\n\nfunction OrgInfo() {\n  const { currentOrganization, organizations, membershipType } = useOrg();\n\n  return (\n    <div>\n      <p>Current: {currentOrganization?.orgName}</p>\n      <p>Role: {membershipType}</p>\n      <p>Total orgs: {organizations.length}</p>\n    </div>\n  );\n}\n```\n\n## Hooks\n\n| Hook | Returns | Description |\n|---|---|---|\n| `useAxowl()` | `{ user, isSignedIn, isLoaded, signIn, signOut, refreshUser }` | Core auth state and actions |\n| `usePermission()` | `{ can, canAll, canAny, checkRemote, permissions }` | Permission checking |\n| `useSession()` | `{ isSignedIn, expiresAt, refresh, revokeAll }` | Session management |\n| `useOrg()` | `{ currentOrganization, organizations, orgSlug, connectedId, membershipType }` | Organization context |\n\n## Components\n\n```tsx\nimport { SignInButton, UserButton } from '@axowl/sdk';\n\n// Shows \"Sign In\" button when not authenticated (hidden when signed in)\n<SignInButton className=\"btn\" />\n\n// Shows user name/email when authenticated (hidden when signed out)\n<UserButton />\n```\n\n## Sign-in Methods\n\n```tsx\nconst { signIn } = useAxowl();\n\n// Magic link (email)\nawait signIn.magicLink('user@example.com');\n\n// Social (Google, Line)\nawait signIn.social({ provider: 'google', idToken: '...' });\n\n// Federated (OIDC — Keycloak, Clerk, etc.)\nawait signIn.federated({ orgSlug: 'my-org', provider: 'keycloak', idToken: '...' });\n\n// Passkey (FIDO2)\nawait signIn.passkey('user@example.com', credentialResponseJson);\n```\n\n## Remote Permission Check\n\nFor high-security operations, verify permissions server-side:\n\n```tsx\nconst { checkRemote } = usePermission();\n\nasync function handleSensitiveAction() {\n  const allowed = await checkRemote('billing.charge');\n  if (allowed) {\n    // proceed\n  }\n}\n```\n\n## Configuration\n\n```tsx\n<AxowlProvider\n  orgSlug=\"my-org\"               // Required: organization slug\n  appKey=\"ak_live_xxxxx\"         // Required: application key\n  baseUrl=\"https://auth.axowl.com\"  // Optional: API URL\n  tokenStorage=\"localStorage\"    // Optional: localStorage | sessionStorage | memory\n  autoRefresh={true}             // Optional: auto-refresh tokens (default: true)\n  refreshThresholdSeconds={60}   // Optional: refresh before expiry in seconds\n>\n```\n\n## Requirements\n\n- React 18+ or React 19+\n- TypeScript 5+ (recommended)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}