{"_id":"@allservices/sdk-svelte","_rev":"7-70defb6637252a781e9b1a23c28c8755","name":"@allservices/sdk-svelte","dist-tags":{"latest":"2.0.0"},"versions":{"0.1.0":{"name":"@allservices/sdk-svelte","version":"0.1.0","keywords":["allservices","sdk","svelte","sveltekit","tanstack","svelte-query"],"author":{"name":"linkst"},"license":"UNLICENSED","_id":"@allservices/sdk-svelte@0.1.0","maintainers":[{"name":"linkstcc","email":"linkst@allservices.cc"}],"homepage":"https://github.com/linkstcc/AllService-SDK#readme","bugs":{"url":"https://github.com/linkstcc/AllService-SDK/issues"},"dist":{"shasum":"7cd2887e166688ffadf8050d3658a884fb7c1184","tarball":"https://registry.npmjs.org/@allservices/sdk-svelte/-/sdk-svelte-0.1.0.tgz","fileCount":35,"integrity":"sha512-EgOVPLxqXV6tqGyLB646P19r02P38FvQsaAJxzC1TzNuHl/s+faUddLbf8pvX3/LDPGa2+nffa2zbMKV4nQLtw==","signatures":[{"sig":"MEUCIQDn7jKeS6+NXPsF+x+7ffiQEyirDZEP09zRYMsvBFBnpgIgF29dRAeH6GDn54xZKuk1QF7wmtVcMXTAnSdSvHu5KXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1210957},"main":"./dist/index.cjs","type":"module","_from":"file:allservices-sdk-svelte-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","svelte":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"svelte":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./provider/allservices-provider.svelte":"./dist/provider/allservices-provider.svelte"},"private":false,"scripts":{"lint":"eslint \"src/**/*.{ts,svelte}\"","test":"vitest run","build":"tsup","clean":"rimraf dist .turbo","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"linkstcc","email":"linkst@allservices.cc"},"_resolved":"/tmp/45ed0e51326f33432abd161a56dd301c/allservices-sdk-svelte-0.1.0.tgz","_integrity":"sha512-EgOVPLxqXV6tqGyLB646P19r02P38FvQsaAJxzC1TzNuHl/s+faUddLbf8pvX3/LDPGa2+nffa2zbMKV4nQLtw==","repository":{"url":"git+https://github.com/linkstcc/AllService-SDK.git","type":"git","directory":"packages/sdk-svelte"},"_npmVersion":"10.9.7","description":"TanStack Svelte Query hooks and Svelte 5 provider for the AllServices API.","directories":{},"sideEffects":["**/*.svelte"],"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"devDependencies":{"msw":"^2.6.0","tsup":"^8.3.0","rimraf":"^6.0.1","svelte":"^5.25.0","vitest":"^2.1.0","happy-dom":"^15.11.0","tinyglobby":"^0.2.0","typescript":"^5.6.3","svelte-check":"^4.1.0","@allservices/sdk-core":"1.3.0","@allservices/tsconfig":"0.0.0","@allservices/contracts":"0.2.0","@tanstack/svelte-query":"^6.1.24","@testing-library/svelte":"^5.2.4","@testing-library/jest-dom":"^6.6.0","@sveltejs/vite-plugin-svelte":"^4.0.0","@allservices/sdk-testing-core":"0.0.0"},"peerDependencies":{"svelte":"^5.25.0","@allservices/sdk-core":"1.3.0","@allservices/contracts":"0.2.0","@tanstack/svelte-query":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-svelte_0.1.0_1777426745102_0.4112270514303267","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@allservices/sdk-svelte","version":"1.0.0","keywords":["allservices","sdk","svelte","sveltekit","tanstack","svelte-query"],"author":{"name":"linkst"},"license":"UNLICENSED","_id":"@allservices/sdk-svelte@1.0.0","maintainers":[{"name":"linkstcc","email":"linkst@allservices.cc"}],"homepage":"https://github.com/linkstcc/AllService-SDK#readme","bugs":{"url":"https://github.com/linkstcc/AllService-SDK/issues"},"dist":{"shasum":"0447137ef489ea49a00e8f13db96494a2b70f5a5","tarball":"https://registry.npmjs.org/@allservices/sdk-svelte/-/sdk-svelte-1.0.0.tgz","fileCount":35,"integrity":"sha512-jgzF4nO/ME0oQfXphzRwkzh3A3eb8FBdSuvLGtzLCm4Spo60mz9juCucHWVaD+310AabiOFWr+jWPbWXbG+8DA==","signatures":[{"sig":"MEYCIQDRN7GtUTUCv0iSKX0RP16qPsIbzjo1/Hxn6frUyrZFoQIhANqSEqhTiUcbD53cR8hjs5mdBib6RqzbUTH4GFyR0fGb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1211417},"main":"./dist/index.cjs","type":"module","_from":"file:allservices-sdk-svelte-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","svelte":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"svelte":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./provider/allservices-provider.svelte":"./dist/provider/allservices-provider.svelte"},"private":false,"scripts":{"lint":"eslint \"src/**/*.{ts,svelte}\"","test":"vitest run","build":"tsup","clean":"rimraf dist .turbo","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"linkstcc","email":"linkst@allservices.cc"},"_resolved":"/tmp/124441c155478be58720268d866d1071/allservices-sdk-svelte-1.0.0.tgz","_integrity":"sha512-jgzF4nO/ME0oQfXphzRwkzh3A3eb8FBdSuvLGtzLCm4Spo60mz9juCucHWVaD+310AabiOFWr+jWPbWXbG+8DA==","repository":{"url":"git+https://github.com/linkstcc/AllService-SDK.git","type":"git","directory":"packages/sdk-svelte"},"_npmVersion":"10.9.7","description":"TanStack Svelte Query hooks and Svelte 5 provider for the AllServices API.","directories":{},"sideEffects":["**/*.svelte"],"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"devDependencies":{"msw":"^2.6.0","tsup":"^8.3.0","rimraf":"^6.0.1","svelte":"^5.25.0","vitest":"^2.1.0","happy-dom":"^15.11.0","tinyglobby":"^0.2.0","typescript":"^5.6.3","svelte-check":"^4.1.0","@allservices/sdk-core":"2.0.0","@allservices/tsconfig":"0.0.0","@allservices/contracts":"1.0.0","@tanstack/svelte-query":"^6.1.24","@testing-library/svelte":"^5.2.4","@testing-library/jest-dom":"^6.6.0","@sveltejs/vite-plugin-svelte":"^4.0.0","@allservices/sdk-testing-core":"1.0.0"},"peerDependencies":{"svelte":"^5.25.0","@allservices/sdk-core":"2.0.0","@allservices/contracts":"1.0.0","@tanstack/svelte-query":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-svelte_1.0.0_1778029842654_0.5008014259960127","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@allservices/sdk-svelte","version":"2.0.0","description":"TanStack Svelte Query hooks and Svelte 5 provider for the AllServices API.","author":{"name":"linkst"},"license":"UNLICENSED","homepage":"https://github.com/linkstcc/AllService-SDK#readme","repository":{"type":"git","url":"git+https://github.com/linkstcc/AllService-SDK.git","directory":"packages/sdk-svelte"},"bugs":{"url":"https://github.com/linkstcc/AllService-SDK/issues"},"keywords":["allservices","sdk","svelte","sveltekit","tanstack","svelte-query"],"private":false,"type":"module","sideEffects":["**/*.svelte"],"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"svelte":"./dist/index.js","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./provider/allservices-provider.svelte":"./dist/provider/allservices-provider.svelte","./package.json":"./package.json"},"peerDependencies":{"@tanstack/svelte-query":"^6.0.0","svelte":"^5.25.0","@allservices/contracts":"1.1.0","@allservices/sdk-core":"3.0.0"},"devDependencies":{"@sveltejs/vite-plugin-svelte":"^4.0.0","@tanstack/svelte-query":"^6.1.24","@testing-library/jest-dom":"^6.6.0","@testing-library/svelte":"^5.2.4","happy-dom":"^15.11.0","msw":"^2.6.0","rimraf":"^6.0.1","svelte":"^5.25.0","svelte-check":"^4.1.0","tinyglobby":"^0.2.0","tsup":"^8.3.0","typescript":"^5.6.3","vitest":"^2.1.0","@allservices/contracts":"1.1.0","@allservices/sdk-testing-core":"2.0.0","@allservices/tsconfig":"0.0.0","@allservices/sdk-core":"3.0.0"},"scripts":{"build":"tsup","typecheck":"svelte-check --tsconfig ./tsconfig.json","test":"vitest run","test:watch":"vitest","lint":"eslint \"src/**/*.{ts,svelte}\"","clean":"rimraf dist .turbo"},"_id":"@allservices/sdk-svelte@2.0.0","_integrity":"sha512-qchCsu0ic3EmoEegKb1cU4s4/edSj8fGXlEv6kQAvqL/igvxTdoN2b9Gea3hMsqEW7G5k4LZ6X2hVRtGAReUGg==","_resolved":"/tmp/050ffbb12934b1cfc3b6c733ad5e6a77/allservices-sdk-svelte-2.0.0.tgz","_from":"file:allservices-sdk-svelte-2.0.0.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-qchCsu0ic3EmoEegKb1cU4s4/edSj8fGXlEv6kQAvqL/igvxTdoN2b9Gea3hMsqEW7G5k4LZ6X2hVRtGAReUGg==","shasum":"1f5791a837196731dbe580c98f0fd24174fec1db","tarball":"https://registry.npmjs.org/@allservices/sdk-svelte/-/sdk-svelte-2.0.0.tgz","fileCount":35,"unpackedSize":1209491,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD0wyvDqdHVY+Fsy62KbUxJl4UV+4umq4iED+cCdCRojgIhAPe13PRXPT1sqUqzuqvLfY85DH0A/yFkEYtHmsabPmyW"}]},"_npmUser":{"name":"linkstcc","email":"linkst@allservices.cc"},"directories":{},"maintainers":[{"name":"linkstcc","email":"linkst@allservices.cc"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-svelte_2.0.0_1778273350085_0.14580076471769887"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T01:39:04.623Z","modified":"2026-05-08T20:49:10.431Z","0.1.0":"2026-04-29T01:39:05.283Z","1.0.0":"2026-05-06T01:10:42.867Z","2.0.0":"2026-05-08T20:49:10.274Z"},"bugs":{"url":"https://github.com/linkstcc/AllService-SDK/issues"},"author":{"name":"linkst"},"license":"UNLICENSED","homepage":"https://github.com/linkstcc/AllService-SDK#readme","keywords":["allservices","sdk","svelte","sveltekit","tanstack","svelte-query"],"repository":{"type":"git","url":"git+https://github.com/linkstcc/AllService-SDK.git","directory":"packages/sdk-svelte"},"description":"TanStack Svelte Query hooks and Svelte 5 provider for the AllServices API.","maintainers":[{"name":"linkstcc","email":"linkst@allservices.cc"}],"readme":"# @allservices/sdk-svelte\n\nTanStack Svelte Query hooks, an `<AllServicesProvider>` context component, and a `<SudoGuard>` step-up component for the [AllServices](https://allservices.cc) API. Built for Svelte 5 with runes and fully compatible with SvelteKit 2.\n\n> **Status:** alpha. Public API may change between minors until `1.0.0`. Requires Svelte 5 and `@tanstack/svelte-query` v6.\n\n## Install\n\n```bash\npnpm add @allservices/sdk-svelte @allservices/sdk-core @tanstack/svelte-query svelte\n```\n\n## Setup\n\nMount `<AllServicesProvider>` at your root layout so every descendant component can resolve the TanStack QueryClient and AllServicesClient contexts.\n\n```svelte\n<!-- src/routes/+layout.svelte -->\n<script lang=\"ts\">\n  import { AllServicesProvider } from '@allservices/sdk-svelte';\n  import type { ClientConfig } from '@allservices/sdk-svelte';\n\n  const config: ClientConfig = {\n    region: 'eu',\n    credentials: 'include',\n  };\n</script>\n\n<AllServicesProvider {config}>\n  {@render children()}\n</AllServicesProvider>\n```\n\nThe provider constructs an `AllServicesClient` and a default `QueryClient` internally. Pass an existing `QueryClient` via the optional `queryClient` prop to share state with other providers in the tree.\n\n## Hook usage\n\nHooks follow the Svelte `create*` naming convention instead of React's `use*` prefix. This avoids a collision with Svelte's reserved `use:` directive namespace; see [Hook naming](#hook-naming) below.\n\n### Current user\n\n```svelte\n<script lang=\"ts\">\n  import { createCurrentUser } from '@allservices/sdk-svelte';\n\n  const user = createCurrentUser();\n</script>\n\n{#if user.isPending}\n  <p>Loading…</p>\n{:else if user.isError}\n  <p role=\"alert\">{user.error.message}</p>\n{:else}\n  <p>Signed in as {user.data.email}</p>\n{/if}\n```\n\n### Login mutation\n\n```svelte\n<script lang=\"ts\">\n  import { createLogin, isMfaChallenge } from '@allservices/sdk-svelte';\n\n  const login = createLogin();\n\n  let email = $state('');\n  let password = $state('');\n  let mfaCode = $state('');\n\n  $derived const challenge = login.data && isMfaChallenge(login.data) ? login.data : null;\n\n  function submit(e: SubmitEvent) {\n    e.preventDefault();\n    login.mutate({ email, password, mfaCode: challenge ? mfaCode : undefined });\n  }\n</script>\n\n<form onsubmit={submit}>\n  <input bind:value={email} placeholder=\"Email\" autocomplete=\"username\" />\n  <input type=\"password\" bind:value={password} placeholder=\"Password\" autocomplete=\"current-password\" />\n  {#if challenge}\n    <input bind:value={mfaCode} inputmode=\"numeric\" maxlength=\"6\" placeholder=\"6-digit code\" />\n  {/if}\n  <button type=\"submit\" disabled={login.isPending}>\n    {challenge ? 'Verify' : 'Sign in'}\n  </button>\n  {#if login.isError}\n    <p role=\"alert\">{login.error.message}</p>\n  {/if}\n</form>\n```\n\n### Active sessions\n\n```svelte\n<script lang=\"ts\">\n  import { createSessions, createRevokeSession } from '@allservices/sdk-svelte';\n\n  const sessions = createSessions();\n  const revoke = createRevokeSession();\n</script>\n\n{#each sessions.data ?? [] as session (session.id)}\n  <div>\n    <span>{session.userAgent}</span>\n    <button onclick={() => revoke.mutate(session.id)}>Revoke</button>\n  </div>\n{/each}\n```\n\n### Infinite security log\n\n```svelte\n<script lang=\"ts\">\n  import { createInfiniteSecurityLog } from '@allservices/sdk-svelte';\n\n  const log = createInfiniteSecurityLog({});\n</script>\n\n{#each log.data?.pages ?? [] as page}\n  {#each page.data as entry (entry.id)}\n    <p>{entry.eventType} — {entry.createdAt}</p>\n  {/each}\n{/each}\n\n{#if log.hasNextPage}\n  <button onclick={() => log.fetchNextPage()} disabled={log.isFetchingNextPage}>\n    Load more\n  </button>\n{/if}\n```\n\n## `<SudoGuard>`\n\nWrap any action that may raise `SudoRequiredError` in `<SudoGuard>`. The component catches the error, defers the original action, and exposes `isSudoRequired` / `resolveSudo` / `cancelSudo` render-prop state so you can prompt for credentials and replay.\n\n```svelte\n<script lang=\"ts\">\n  import { SudoGuard, createDeleteMe } from '@allservices/sdk-svelte';\n\n  const deleteMe = createDeleteMe();\n</script>\n\n<SudoGuard>\n  {#snippet children({ run, isSudoRequired, resolveSudo, cancelSudo, isPending })}\n    <button onclick={() => run(() => deleteMe.mutateAsync())}>\n      Delete account\n    </button>\n\n    {#if isSudoRequired}\n      <SudoPrompt onSubmit={resolveSudo} onCancel={cancelSudo} {isPending} />\n    {/if}\n  {/snippet}\n</SudoGuard>\n```\n\n## Accessing the client and auth state\n\nTwo accessor helpers are available outside component context (e.g. in utility modules):\n\n```ts\nimport { getAllServicesClient, getAuthState } from '@allservices/sdk-svelte';\n\n// Returns the AllServicesClient from the nearest AllServicesProvider context.\nconst client = getAllServicesClient();\n\n// Returns a reactive AuthState rune: { user, isAuthenticated, isLoading }.\nconst auth = getAuthState();\n```\n\nBoth functions must be called during component initialisation (same constraint as Svelte's `getContext`).\n\n## Hook naming\n\nAllServices follows Svelte community convention and names all query/mutation factories with a `create*` prefix (e.g. `createCurrentUser`, `createLogin`, `createSessions`). The React adapter uses `use*` for the same hooks. The reason is that Svelte reserves the `use:` directive namespace — a function named `useCurrentUser` is syntactically valid but creates confusion when readers scan `.svelte` files expecting directives. Keeping the prefix distinct makes intent immediately clear.\n\n## Full hook coverage\n\nEvery domain in `@allservices/sdk-core` has corresponding hooks: auth (login, register, MFA, sessions, sudo, panic, trusted devices, recovery, PATs, security log), users, roles, careers, webhooks, licensing, assets, identity providers, required actions, and health. Suspense variants (e.g. `createCurrentUserSuspense`) and infinite variants (e.g. `createInfiniteSecurityLog`, `createInfiniteUsers`) are included.\n\n## SSR with SvelteKit\n\nSee [`@allservices/sdk-sveltekit`](../sdk-sveltekit/README.md) for `hooks.server.ts` middleware, `+page.server.ts` prefetch patterns, `<HydrationBoundary>`, and cookie helpers.\n\n## Reference app\n\nThe SvelteKit reference application at [`examples/sveltekit-app/`](../../examples/sveltekit-app/README.md) exercises every cross-cutting concern end-to-end: server prefetch + hydration, form actions, `SudoGuard`, infinite queries, and webhook verification.\n\n## Test utilities\n\nSee [`@allservices/sdk-testing-svelte`](../sdk-testing-svelte/README.md) for `MockAllServicesProvider`, `renderWithSvelteProviders`, and re-exports of MSW handlers and fixtures.\n\n## Documentation\n\nSee the [main README](https://github.com/linkstcc/AllService-SDK#readme).\n\n## License\n\nUNLICENSED — internal AllServices use only.\n","readmeFilename":"README.md"}