authula 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{fetch-CDNq42ed.js → fetch-BnZpQ0Yq.js} +1 -1
- package/dist/{fetch-CDNq42ed.js.map → fetch-BnZpQ0Yq.js.map} +1 -1
- package/dist/{fetch-DBol2Fc9.cjs → fetch-CEj1gBkL.cjs} +1 -1
- package/dist/{fetch-DBol2Fc9.cjs.map → fetch-CEj1gBkL.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.cjs +4 -2
- package/dist/plugins/index.cjs.map +1 -1
- package/dist/plugins/index.d.cts +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.js +5 -3
- package/dist/plugins/index.js.map +1 -1
- package/dist/{sdk-CONwA-47.d.cts → sdk-7eSlhCrf.d.cts} +1 -1
- package/dist/{sdk-C0cWDM6F.d.ts → sdk-7eSlhCrf.d.ts} +1 -1
- package/package.json +15 -17
|
@@ -125,4 +125,4 @@ async function wrappedFetch(client, endpoint, options = {}) {
|
|
|
125
125
|
|
|
126
126
|
//#endregion
|
|
127
127
|
export { verificationSchema as a, userSchema as i, accountSchema as n, verificationTypeSchema as o, sessionSchema as r, wrappedFetch as t };
|
|
128
|
-
//# sourceMappingURL=fetch-
|
|
128
|
+
//# sourceMappingURL=fetch-BnZpQ0Yq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-
|
|
1
|
+
{"version":3,"file":"fetch-BnZpQ0Yq.js","names":[],"sources":["../src/types/schemas.ts","../src/fetch.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const userSchema = z.object({\n id: z.uuid(),\n name: z.string().nonempty(),\n email: z.email(),\n emailVerified: z.boolean(),\n image: z.string().nullish(),\n metadata: z.record(z.string(), z.unknown()).nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type User = z.infer<typeof userSchema>;\n\nexport const accountSchema = z.object({\n id: z.uuid(),\n userId: z.string().nonempty(),\n accountId: z.string().nonempty(),\n providerId: z.string().nonempty(),\n accessToken: z.string().nullish(),\n refreshToken: z.string().nullish(),\n idToken: z.string().nullish(),\n accessTokenExpiresAt: z.iso.datetime().nullish(),\n refreshTokenExpiresAt: z.iso.datetime().nullish(),\n scope: z.string().nullish(),\n password: z.string().nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Account = z.infer<typeof accountSchema>;\n\nexport const sessionSchema = z.object({\n id: z.uuid(),\n userId: z.string().nonempty(),\n token: z.string().nonempty(),\n expiresAt: z.iso.datetime(),\n ipAddress: z.string().nullish(),\n userAgent: z.string().nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Session = z.infer<typeof sessionSchema>;\n\nexport const verificationTypeSchema = z.enum([\n \"email_verification\",\n \"password_reset_request\",\n \"email_reset_request\",\n]);\nexport type VerificationType = z.infer<typeof verificationTypeSchema>;\n\nexport const verificationSchema = z.object({\n id: z.uuid(),\n userId: z.string().nullish(),\n identifier: z.string().nonempty(),\n token: z.string().nonempty(),\n type: verificationTypeSchema,\n expiresAt: z.iso.datetime(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Verification = z.infer<typeof verificationSchema>;\n","import { toCamelCaseKeys, toSnakeCaseKeys } from \"es-toolkit\";\n\nimport type { AuthulaClient } from \"./client\";\nimport type { CookieStore, FetchContext, FetchRequestOptions } from \"./types\";\n\nexport async function wrappedFetch<T>(\n client: AuthulaClient,\n endpoint: string,\n options: FetchRequestOptions = {},\n): Promise<T> {\n const headersCombined = {\n ...options.headers,\n ...(client.config.fetchOptions?.headers ?? {}),\n };\n const headers = new Headers(headersCombined || {});\n\n let cookieStore: CookieStore | null = null;\n\n if (client.config.cookies) {\n cookieStore = await client.config.cookies();\n\n const cookieHeader = cookieStore\n .getAll()\n .map((c) => `${c.name}=${c.value}`)\n .join(\"; \");\n\n if (cookieHeader) {\n headers.set(\"cookie\", cookieHeader);\n }\n }\n\n const controller = new AbortController();\n const abortTimeout = client.config.fetchOptions?.abortTimeout;\n\n if (abortTimeout) {\n setTimeout(() => controller.abort(), abortTimeout * 1000);\n }\n\n const ctx: FetchContext = {\n url: `${client.config.url}${endpoint}`,\n init: {\n method: options.method ?? \"GET\",\n headers,\n body: options.body\n ? JSON.stringify(toSnakeCaseKeys(options.body))\n : undefined,\n credentials: \"include\",\n signal: controller.signal,\n },\n meta: {},\n };\n\n await client.runBeforeFetch(ctx);\n\n let res = await fetch(ctx.url, ctx.init);\n\n const action = await client.runAfterFetch(ctx, res);\n if (action === \"retry\" && !ctx.meta.retry) {\n ctx.meta.retry = true;\n res = await fetch(ctx.url, ctx.init);\n }\n\n const setCookieHeaders =\n res.headers.getSetCookie?.() ??\n res.headers.get(\"set-cookie\")?.split(\", \") ??\n null;\n\n if (!res.ok) {\n throw new Error(await res.text());\n }\n\n const resData = await res.json();\n\n // Apply Set-Cookie back into Next.js store (SSR only)\n if (cookieStore && setCookieHeaders) {\n for (const raw of setCookieHeaders) {\n const [pair, ...attrs] = raw.split(\";\");\n const [name, value] = pair.split(\"=\");\n\n if (!name || !value) continue;\n\n const options: Record<string, any> = {};\n\n for (const attr of attrs) {\n const [k, v] = attr.trim().split(\"=\");\n\n switch (k.toLowerCase()) {\n case \"path\":\n options.path = v;\n break;\n case \"expires\":\n options.expires = new Date(v);\n break;\n case \"max-age\":\n options.maxAge = Number(v);\n break;\n case \"httponly\":\n options.httpOnly = true;\n break;\n case \"secure\":\n options.secure = true;\n break;\n case \"samesite\":\n options.sameSite = v?.toLowerCase();\n break;\n }\n }\n\n cookieStore.set(name.trim(), decodeURIComponent(value.trim()), options);\n }\n }\n\n return toCamelCaseKeys(resData) as T;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-
|
|
1
|
+
{"version":3,"file":"fetch-CEj1gBkL.cjs","names":["z"],"sources":["../src/types/schemas.ts","../src/fetch.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const userSchema = z.object({\n id: z.uuid(),\n name: z.string().nonempty(),\n email: z.email(),\n emailVerified: z.boolean(),\n image: z.string().nullish(),\n metadata: z.record(z.string(), z.unknown()).nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type User = z.infer<typeof userSchema>;\n\nexport const accountSchema = z.object({\n id: z.uuid(),\n userId: z.string().nonempty(),\n accountId: z.string().nonempty(),\n providerId: z.string().nonempty(),\n accessToken: z.string().nullish(),\n refreshToken: z.string().nullish(),\n idToken: z.string().nullish(),\n accessTokenExpiresAt: z.iso.datetime().nullish(),\n refreshTokenExpiresAt: z.iso.datetime().nullish(),\n scope: z.string().nullish(),\n password: z.string().nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Account = z.infer<typeof accountSchema>;\n\nexport const sessionSchema = z.object({\n id: z.uuid(),\n userId: z.string().nonempty(),\n token: z.string().nonempty(),\n expiresAt: z.iso.datetime(),\n ipAddress: z.string().nullish(),\n userAgent: z.string().nullish(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Session = z.infer<typeof sessionSchema>;\n\nexport const verificationTypeSchema = z.enum([\n \"email_verification\",\n \"password_reset_request\",\n \"email_reset_request\",\n]);\nexport type VerificationType = z.infer<typeof verificationTypeSchema>;\n\nexport const verificationSchema = z.object({\n id: z.uuid(),\n userId: z.string().nullish(),\n identifier: z.string().nonempty(),\n token: z.string().nonempty(),\n type: verificationTypeSchema,\n expiresAt: z.iso.datetime(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Verification = z.infer<typeof verificationSchema>;\n","import { toCamelCaseKeys, toSnakeCaseKeys } from \"es-toolkit\";\n\nimport type { AuthulaClient } from \"./client\";\nimport type { CookieStore, FetchContext, FetchRequestOptions } from \"./types\";\n\nexport async function wrappedFetch<T>(\n client: AuthulaClient,\n endpoint: string,\n options: FetchRequestOptions = {},\n): Promise<T> {\n const headersCombined = {\n ...options.headers,\n ...(client.config.fetchOptions?.headers ?? {}),\n };\n const headers = new Headers(headersCombined || {});\n\n let cookieStore: CookieStore | null = null;\n\n if (client.config.cookies) {\n cookieStore = await client.config.cookies();\n\n const cookieHeader = cookieStore\n .getAll()\n .map((c) => `${c.name}=${c.value}`)\n .join(\"; \");\n\n if (cookieHeader) {\n headers.set(\"cookie\", cookieHeader);\n }\n }\n\n const controller = new AbortController();\n const abortTimeout = client.config.fetchOptions?.abortTimeout;\n\n if (abortTimeout) {\n setTimeout(() => controller.abort(), abortTimeout * 1000);\n }\n\n const ctx: FetchContext = {\n url: `${client.config.url}${endpoint}`,\n init: {\n method: options.method ?? \"GET\",\n headers,\n body: options.body\n ? JSON.stringify(toSnakeCaseKeys(options.body))\n : undefined,\n credentials: \"include\",\n signal: controller.signal,\n },\n meta: {},\n };\n\n await client.runBeforeFetch(ctx);\n\n let res = await fetch(ctx.url, ctx.init);\n\n const action = await client.runAfterFetch(ctx, res);\n if (action === \"retry\" && !ctx.meta.retry) {\n ctx.meta.retry = true;\n res = await fetch(ctx.url, ctx.init);\n }\n\n const setCookieHeaders =\n res.headers.getSetCookie?.() ??\n res.headers.get(\"set-cookie\")?.split(\", \") ??\n null;\n\n if (!res.ok) {\n throw new Error(await res.text());\n }\n\n const resData = await res.json();\n\n // Apply Set-Cookie back into Next.js store (SSR only)\n if (cookieStore && setCookieHeaders) {\n for (const raw of setCookieHeaders) {\n const [pair, ...attrs] = raw.split(\";\");\n const [name, value] = pair.split(\"=\");\n\n if (!name || !value) continue;\n\n const options: Record<string, any> = {};\n\n for (const attr of attrs) {\n const [k, v] = attr.trim().split(\"=\");\n\n switch (k.toLowerCase()) {\n case \"path\":\n options.path = v;\n break;\n case \"expires\":\n options.expires = new Date(v);\n break;\n case \"max-age\":\n options.maxAge = Number(v);\n break;\n case \"httponly\":\n options.httpOnly = true;\n break;\n case \"secure\":\n options.secure = true;\n break;\n case \"samesite\":\n options.sameSite = v?.toLowerCase();\n break;\n }\n }\n\n cookieStore.set(name.trim(), decodeURIComponent(value.trim()), options);\n }\n }\n\n return toCamelCaseKeys(resData) as T;\n}\n"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["wrappedFetch"],"sources":["../src/client.ts","../src/sdk.ts"],"sourcesContent":["import { toSnakeCaseKeys } from \"es-toolkit\";\n\nimport { wrappedFetch } from \"./fetch\";\nimport type {\n FetchContext,\n AuthulaClientConfig,\n AuthulaClientOptions,\n SignOutRequest,\n SignOutResponse,\n Plugin,\n BeforeFetchHook,\n AfterFetchHook,\n} from \"./types\";\n\nexport class AuthulaClient {\n public readonly config: AuthulaClientConfig;\n private readonly plugins: Array<Plugin>;\n private readonly beforeFetchHooks: BeforeFetchHook[] = [];\n private readonly afterFetchHooks: AfterFetchHook[] = [];\n\n constructor(options: AuthulaClientOptions) {\n this.plugins = options.plugins;\n\n const { plugins, ...rest } = options;\n this.config = rest;\n\n for (const plugin of this.plugins) {\n if (\"attachCookies\" in plugin && this.config.cookies) {\n (plugin as any).attachCookies(this.config.cookies);\n }\n (this as any)[plugin.id] = plugin.init(this);\n }\n }\n\n public registerBeforeFetch(hook: BeforeFetchHook): void {\n this.beforeFetchHooks.push(hook);\n }\n\n public registerAfterFetch(hook: AfterFetchHook): void {\n this.afterFetchHooks.push(hook);\n }\n\n public async runBeforeFetch(ctx: FetchContext): Promise<void> {\n for (const hook of this.beforeFetchHooks) {\n await hook(ctx);\n }\n }\n\n public async runAfterFetch(ctx: FetchContext, res: Response) {\n for (const hook of this.afterFetchHooks) {\n const result = await hook(ctx, res);\n if (result === \"retry\") {\n return \"retry\";\n }\n }\n }\n\n public async getMe<T = unknown>(): Promise<T> {\n return wrappedFetch<T>(this, \"/me\", {\n method: \"GET\",\n });\n }\n\n public async signOut(data: SignOutRequest): Promise<SignOutResponse> {\n return wrappedFetch<SignOutResponse>(this, \"/sign-out\", {\n method: \"POST\",\n body: toSnakeCaseKeys(data),\n });\n }\n\n public getPlugin<T extends Plugin>(id: string): T | undefined {\n return this.plugins.find((plugin) => plugin.id === id) as T | undefined;\n }\n}\n","import { AuthulaClient } from \"./client\";\nimport type { AuthulaClientOptions, Plugin } from \"./types\";\n\n// Helper to extract plugin methods\nexport type InferPluginMethods<P> = P extends { init: (client: any) => infer M }\n ? M\n : never;\n\nexport type ClientWithPlugins<T extends readonly Plugin[]> = AuthulaClient & {\n [P in T[number] as P[\"id\"]]: InferPluginMethods<P>;\n};\n\nexport function createClient<const T extends readonly Plugin[]>(\n options: Omit<AuthulaClientOptions, \"plugins\"> & { plugins: T },\n): ClientWithPlugins<T> {\n return new AuthulaClient(options as any) as ClientWithPlugins<T>;\n}\n"],"mappings":";;;;;AAcA,IAAa,gBAAb,MAA2B;CACzB,AAAgB;CAChB,AAAiB;CACjB,AAAiB,mBAAsC,
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["wrappedFetch"],"sources":["../src/client.ts","../src/sdk.ts"],"sourcesContent":["import { toSnakeCaseKeys } from \"es-toolkit\";\n\nimport { wrappedFetch } from \"./fetch\";\nimport type {\n FetchContext,\n AuthulaClientConfig,\n AuthulaClientOptions,\n SignOutRequest,\n SignOutResponse,\n Plugin,\n BeforeFetchHook,\n AfterFetchHook,\n} from \"./types\";\n\nexport class AuthulaClient {\n public readonly config: AuthulaClientConfig;\n private readonly plugins: Array<Plugin>;\n private readonly beforeFetchHooks: BeforeFetchHook[] = [];\n private readonly afterFetchHooks: AfterFetchHook[] = [];\n\n constructor(options: AuthulaClientOptions) {\n this.plugins = options.plugins;\n\n const { plugins, ...rest } = options;\n this.config = rest;\n\n for (const plugin of this.plugins) {\n if (\"attachCookies\" in plugin && this.config.cookies) {\n (plugin as any).attachCookies(this.config.cookies);\n }\n (this as any)[plugin.id] = plugin.init(this);\n }\n }\n\n public registerBeforeFetch(hook: BeforeFetchHook): void {\n this.beforeFetchHooks.push(hook);\n }\n\n public registerAfterFetch(hook: AfterFetchHook): void {\n this.afterFetchHooks.push(hook);\n }\n\n public async runBeforeFetch(ctx: FetchContext): Promise<void> {\n for (const hook of this.beforeFetchHooks) {\n await hook(ctx);\n }\n }\n\n public async runAfterFetch(ctx: FetchContext, res: Response) {\n for (const hook of this.afterFetchHooks) {\n const result = await hook(ctx, res);\n if (result === \"retry\") {\n return \"retry\";\n }\n }\n }\n\n public async getMe<T = unknown>(): Promise<T> {\n return wrappedFetch<T>(this, \"/me\", {\n method: \"GET\",\n });\n }\n\n public async signOut(data: SignOutRequest): Promise<SignOutResponse> {\n return wrappedFetch<SignOutResponse>(this, \"/sign-out\", {\n method: \"POST\",\n body: toSnakeCaseKeys(data),\n });\n }\n\n public getPlugin<T extends Plugin>(id: string): T | undefined {\n return this.plugins.find((plugin) => plugin.id === id) as T | undefined;\n }\n}\n","import { AuthulaClient } from \"./client\";\nimport type { AuthulaClientOptions, Plugin } from \"./types\";\n\n// Helper to extract plugin methods\nexport type InferPluginMethods<P> = P extends { init: (client: any) => infer M }\n ? M\n : never;\n\nexport type ClientWithPlugins<T extends readonly Plugin[]> = AuthulaClient & {\n [P in T[number] as P[\"id\"]]: InferPluginMethods<P>;\n};\n\nexport function createClient<const T extends readonly Plugin[]>(\n options: Omit<AuthulaClientOptions, \"plugins\"> & { plugins: T },\n): ClientWithPlugins<T> {\n return new AuthulaClient(options as any) as ClientWithPlugins<T>;\n}\n"],"mappings":";;;;;AAcA,IAAa,gBAAb,MAA2B;CACzB,AAAgB;CAChB,AAAiB;CACjB,AAAiB,mBAAsC,CAAC;CACxD,AAAiB,kBAAoC,CAAC;CAEtD,YAAY,SAA+B;EACzC,KAAK,UAAU,QAAQ;EAEvB,MAAM,EAAE,SAAS,GAAG,SAAS;EAC7B,KAAK,SAAS;EAEd,KAAK,MAAM,UAAU,KAAK,SAAS;GACjC,IAAI,mBAAmB,UAAU,KAAK,OAAO,SAC3C,AAAC,OAAe,cAAc,KAAK,OAAO,OAAO;GAEnD,AAAC,KAAa,OAAO,MAAM,OAAO,KAAK,IAAI;EAC7C;CACF;CAEA,AAAO,oBAAoB,MAA6B;EACtD,KAAK,iBAAiB,KAAK,IAAI;CACjC;CAEA,AAAO,mBAAmB,MAA4B;EACpD,KAAK,gBAAgB,KAAK,IAAI;CAChC;CAEA,MAAa,eAAe,KAAkC;EAC5D,KAAK,MAAM,QAAQ,KAAK,kBACtB,MAAM,KAAK,GAAG;CAElB;CAEA,MAAa,cAAc,KAAmB,KAAe;EAC3D,KAAK,MAAM,QAAQ,KAAK,iBAEtB,IAAI,MADiB,KAAK,KAAK,GAAG,MACnB,SACb,OAAO;CAGb;CAEA,MAAa,QAAiC;EAC5C,OAAOA,2BAAgB,MAAM,OAAO,EAClC,QAAQ,MACV,CAAC;CACH;CAEA,MAAa,QAAQ,MAAgD;EACnE,OAAOA,2BAA8B,MAAM,aAAa;GACtD,QAAQ;GACR,sCAAsB,IAAI;EAC5B,CAAC;CACH;CAEA,AAAO,UAA4B,IAA2B;EAC5D,OAAO,KAAK,QAAQ,MAAM,WAAW,OAAO,OAAO,EAAE;CACvD;AACF;;;;AC7DA,SAAgB,aACd,SACsB;CACtB,OAAO,IAAI,cAAc,OAAc;AACzC"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as AfterFetchHook, E as FetchRequestOptions, S as verificationTypeSchema, T as FetchContext, _ as VerificationType, a as SignOutResponse, b as userSchema, c as FetchOptions, d as CookieProvider, f as CookieStore, g as Verification, h as User, i as SignOutRequest, l as Plugin, m as Session, n as createClient, o as AuthulaClientConfig, p as Account, r as GetMeResponse, s as AuthulaClientOptions, u as AuthulaClient, v as accountSchema, w as BeforeFetchHook, x as verificationSchema, y as sessionSchema } from "./sdk-
|
|
2
|
-
export { Account, AfterFetchHook, AuthulaClient, AuthulaClientConfig, AuthulaClientOptions, BeforeFetchHook, CookieProvider, CookieStore, FetchContext, FetchOptions, FetchRequestOptions, GetMeResponse, Plugin, Session, SignOutRequest, SignOutResponse, User, Verification, VerificationType, accountSchema, createClient, sessionSchema, userSchema, verificationSchema, verificationTypeSchema };
|
|
1
|
+
import { C as AfterFetchHook, E as FetchRequestOptions, S as verificationTypeSchema, T as FetchContext, _ as VerificationType, a as SignOutResponse, b as userSchema, c as FetchOptions, d as CookieProvider, f as CookieStore, g as Verification, h as User, i as SignOutRequest, l as Plugin, m as Session, n as createClient, o as AuthulaClientConfig, p as Account, r as GetMeResponse, s as AuthulaClientOptions, t as ClientWithPlugins, u as AuthulaClient, v as accountSchema, w as BeforeFetchHook, x as verificationSchema, y as sessionSchema } from "./sdk-7eSlhCrf.cjs";
|
|
2
|
+
export { Account, AfterFetchHook, AuthulaClient, AuthulaClientConfig, AuthulaClientOptions, BeforeFetchHook, type ClientWithPlugins, CookieProvider, CookieStore, FetchContext, FetchOptions, FetchRequestOptions, GetMeResponse, Plugin, Session, SignOutRequest, SignOutResponse, User, Verification, VerificationType, accountSchema, createClient, sessionSchema, userSchema, verificationSchema, verificationTypeSchema };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as AfterFetchHook, E as FetchRequestOptions, S as verificationTypeSchema, T as FetchContext, _ as VerificationType, a as SignOutResponse, b as userSchema, c as FetchOptions, d as CookieProvider, f as CookieStore, g as Verification, h as User, i as SignOutRequest, l as Plugin, m as Session, n as createClient, o as AuthulaClientConfig, p as Account, r as GetMeResponse, s as AuthulaClientOptions, u as AuthulaClient, v as accountSchema, w as BeforeFetchHook, x as verificationSchema, y as sessionSchema } from "./sdk-
|
|
2
|
-
export { Account, AfterFetchHook, AuthulaClient, AuthulaClientConfig, AuthulaClientOptions, BeforeFetchHook, CookieProvider, CookieStore, FetchContext, FetchOptions, FetchRequestOptions, GetMeResponse, Plugin, Session, SignOutRequest, SignOutResponse, User, Verification, VerificationType, accountSchema, createClient, sessionSchema, userSchema, verificationSchema, verificationTypeSchema };
|
|
1
|
+
import { C as AfterFetchHook, E as FetchRequestOptions, S as verificationTypeSchema, T as FetchContext, _ as VerificationType, a as SignOutResponse, b as userSchema, c as FetchOptions, d as CookieProvider, f as CookieStore, g as Verification, h as User, i as SignOutRequest, l as Plugin, m as Session, n as createClient, o as AuthulaClientConfig, p as Account, r as GetMeResponse, s as AuthulaClientOptions, t as ClientWithPlugins, u as AuthulaClient, v as accountSchema, w as BeforeFetchHook, x as verificationSchema, y as sessionSchema } from "./sdk-7eSlhCrf.js";
|
|
2
|
+
export { Account, AfterFetchHook, AuthulaClient, AuthulaClientConfig, AuthulaClientOptions, BeforeFetchHook, type ClientWithPlugins, CookieProvider, CookieStore, FetchContext, FetchOptions, FetchRequestOptions, GetMeResponse, Plugin, Session, SignOutRequest, SignOutResponse, User, Verification, VerificationType, accountSchema, createClient, sessionSchema, userSchema, verificationSchema, verificationTypeSchema };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as verificationSchema, i as userSchema, n as accountSchema, o as verificationTypeSchema, r as sessionSchema, t as wrappedFetch } from "./fetch-
|
|
1
|
+
import { a as verificationSchema, i as userSchema, n as accountSchema, o as verificationTypeSchema, r as sessionSchema, t as wrappedFetch } from "./fetch-BnZpQ0Yq.js";
|
|
2
2
|
import { toSnakeCaseKeys } from "es-toolkit";
|
|
3
3
|
|
|
4
4
|
//#region src/client.ts
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/client.ts","../src/sdk.ts"],"sourcesContent":["import { toSnakeCaseKeys } from \"es-toolkit\";\n\nimport { wrappedFetch } from \"./fetch\";\nimport type {\n FetchContext,\n AuthulaClientConfig,\n AuthulaClientOptions,\n SignOutRequest,\n SignOutResponse,\n Plugin,\n BeforeFetchHook,\n AfterFetchHook,\n} from \"./types\";\n\nexport class AuthulaClient {\n public readonly config: AuthulaClientConfig;\n private readonly plugins: Array<Plugin>;\n private readonly beforeFetchHooks: BeforeFetchHook[] = [];\n private readonly afterFetchHooks: AfterFetchHook[] = [];\n\n constructor(options: AuthulaClientOptions) {\n this.plugins = options.plugins;\n\n const { plugins, ...rest } = options;\n this.config = rest;\n\n for (const plugin of this.plugins) {\n if (\"attachCookies\" in plugin && this.config.cookies) {\n (plugin as any).attachCookies(this.config.cookies);\n }\n (this as any)[plugin.id] = plugin.init(this);\n }\n }\n\n public registerBeforeFetch(hook: BeforeFetchHook): void {\n this.beforeFetchHooks.push(hook);\n }\n\n public registerAfterFetch(hook: AfterFetchHook): void {\n this.afterFetchHooks.push(hook);\n }\n\n public async runBeforeFetch(ctx: FetchContext): Promise<void> {\n for (const hook of this.beforeFetchHooks) {\n await hook(ctx);\n }\n }\n\n public async runAfterFetch(ctx: FetchContext, res: Response) {\n for (const hook of this.afterFetchHooks) {\n const result = await hook(ctx, res);\n if (result === \"retry\") {\n return \"retry\";\n }\n }\n }\n\n public async getMe<T = unknown>(): Promise<T> {\n return wrappedFetch<T>(this, \"/me\", {\n method: \"GET\",\n });\n }\n\n public async signOut(data: SignOutRequest): Promise<SignOutResponse> {\n return wrappedFetch<SignOutResponse>(this, \"/sign-out\", {\n method: \"POST\",\n body: toSnakeCaseKeys(data),\n });\n }\n\n public getPlugin<T extends Plugin>(id: string): T | undefined {\n return this.plugins.find((plugin) => plugin.id === id) as T | undefined;\n }\n}\n","import { AuthulaClient } from \"./client\";\nimport type { AuthulaClientOptions, Plugin } from \"./types\";\n\n// Helper to extract plugin methods\nexport type InferPluginMethods<P> = P extends { init: (client: any) => infer M }\n ? M\n : never;\n\nexport type ClientWithPlugins<T extends readonly Plugin[]> = AuthulaClient & {\n [P in T[number] as P[\"id\"]]: InferPluginMethods<P>;\n};\n\nexport function createClient<const T extends readonly Plugin[]>(\n options: Omit<AuthulaClientOptions, \"plugins\"> & { plugins: T },\n): ClientWithPlugins<T> {\n return new AuthulaClient(options as any) as ClientWithPlugins<T>;\n}\n"],"mappings":";;;;AAcA,IAAa,gBAAb,MAA2B;CACzB,AAAgB;CAChB,AAAiB;CACjB,AAAiB,mBAAsC,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/client.ts","../src/sdk.ts"],"sourcesContent":["import { toSnakeCaseKeys } from \"es-toolkit\";\n\nimport { wrappedFetch } from \"./fetch\";\nimport type {\n FetchContext,\n AuthulaClientConfig,\n AuthulaClientOptions,\n SignOutRequest,\n SignOutResponse,\n Plugin,\n BeforeFetchHook,\n AfterFetchHook,\n} from \"./types\";\n\nexport class AuthulaClient {\n public readonly config: AuthulaClientConfig;\n private readonly plugins: Array<Plugin>;\n private readonly beforeFetchHooks: BeforeFetchHook[] = [];\n private readonly afterFetchHooks: AfterFetchHook[] = [];\n\n constructor(options: AuthulaClientOptions) {\n this.plugins = options.plugins;\n\n const { plugins, ...rest } = options;\n this.config = rest;\n\n for (const plugin of this.plugins) {\n if (\"attachCookies\" in plugin && this.config.cookies) {\n (plugin as any).attachCookies(this.config.cookies);\n }\n (this as any)[plugin.id] = plugin.init(this);\n }\n }\n\n public registerBeforeFetch(hook: BeforeFetchHook): void {\n this.beforeFetchHooks.push(hook);\n }\n\n public registerAfterFetch(hook: AfterFetchHook): void {\n this.afterFetchHooks.push(hook);\n }\n\n public async runBeforeFetch(ctx: FetchContext): Promise<void> {\n for (const hook of this.beforeFetchHooks) {\n await hook(ctx);\n }\n }\n\n public async runAfterFetch(ctx: FetchContext, res: Response) {\n for (const hook of this.afterFetchHooks) {\n const result = await hook(ctx, res);\n if (result === \"retry\") {\n return \"retry\";\n }\n }\n }\n\n public async getMe<T = unknown>(): Promise<T> {\n return wrappedFetch<T>(this, \"/me\", {\n method: \"GET\",\n });\n }\n\n public async signOut(data: SignOutRequest): Promise<SignOutResponse> {\n return wrappedFetch<SignOutResponse>(this, \"/sign-out\", {\n method: \"POST\",\n body: toSnakeCaseKeys(data),\n });\n }\n\n public getPlugin<T extends Plugin>(id: string): T | undefined {\n return this.plugins.find((plugin) => plugin.id === id) as T | undefined;\n }\n}\n","import { AuthulaClient } from \"./client\";\nimport type { AuthulaClientOptions, Plugin } from \"./types\";\n\n// Helper to extract plugin methods\nexport type InferPluginMethods<P> = P extends { init: (client: any) => infer M }\n ? M\n : never;\n\nexport type ClientWithPlugins<T extends readonly Plugin[]> = AuthulaClient & {\n [P in T[number] as P[\"id\"]]: InferPluginMethods<P>;\n};\n\nexport function createClient<const T extends readonly Plugin[]>(\n options: Omit<AuthulaClientOptions, \"plugins\"> & { plugins: T },\n): ClientWithPlugins<T> {\n return new AuthulaClient(options as any) as ClientWithPlugins<T>;\n}\n"],"mappings":";;;;AAcA,IAAa,gBAAb,MAA2B;CACzB,AAAgB;CAChB,AAAiB;CACjB,AAAiB,mBAAsC,CAAC;CACxD,AAAiB,kBAAoC,CAAC;CAEtD,YAAY,SAA+B;EACzC,KAAK,UAAU,QAAQ;EAEvB,MAAM,EAAE,SAAS,GAAG,SAAS;EAC7B,KAAK,SAAS;EAEd,KAAK,MAAM,UAAU,KAAK,SAAS;GACjC,IAAI,mBAAmB,UAAU,KAAK,OAAO,SAC3C,AAAC,OAAe,cAAc,KAAK,OAAO,OAAO;GAEnD,AAAC,KAAa,OAAO,MAAM,OAAO,KAAK,IAAI;EAC7C;CACF;CAEA,AAAO,oBAAoB,MAA6B;EACtD,KAAK,iBAAiB,KAAK,IAAI;CACjC;CAEA,AAAO,mBAAmB,MAA4B;EACpD,KAAK,gBAAgB,KAAK,IAAI;CAChC;CAEA,MAAa,eAAe,KAAkC;EAC5D,KAAK,MAAM,QAAQ,KAAK,kBACtB,MAAM,KAAK,GAAG;CAElB;CAEA,MAAa,cAAc,KAAmB,KAAe;EAC3D,KAAK,MAAM,QAAQ,KAAK,iBAEtB,IAAI,MADiB,KAAK,KAAK,GAAG,MACnB,SACb,OAAO;CAGb;CAEA,MAAa,QAAiC;EAC5C,OAAO,aAAgB,MAAM,OAAO,EAClC,QAAQ,MACV,CAAC;CACH;CAEA,MAAa,QAAQ,MAAgD;EACnE,OAAO,aAA8B,MAAM,aAAa;GACtD,QAAQ;GACR,MAAM,gBAAgB,IAAI;EAC5B,CAAC;CACH;CAEA,AAAO,UAA4B,IAA2B;EAC5D,OAAO,KAAK,QAAQ,MAAM,WAAW,OAAO,OAAO,EAAE;CACvD;AACF;;;;AC7DA,SAAgB,aACd,SACsB;CACtB,OAAO,IAAI,cAAc,OAAc;AACzC"}
|
package/dist/plugins/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_fetch = require('../fetch-
|
|
2
|
+
const require_fetch = require('../fetch-CEj1gBkL.cjs');
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
let cookie = require("cookie");
|
|
5
5
|
|
|
@@ -326,6 +326,7 @@ const impersonationSchema = zod.z.object({
|
|
|
326
326
|
//#endregion
|
|
327
327
|
//#region src/plugins/bearer/plugin.ts
|
|
328
328
|
var BearerPlugin = class {
|
|
329
|
+
options;
|
|
329
330
|
id = "bearer";
|
|
330
331
|
refreshPromise = null;
|
|
331
332
|
constructor(options) {
|
|
@@ -378,6 +379,7 @@ var BearerPlugin = class {
|
|
|
378
379
|
//#endregion
|
|
379
380
|
//#region src/plugins/csrf/plugin.ts
|
|
380
381
|
var CSRFPlugin = class {
|
|
382
|
+
options;
|
|
381
383
|
id = "csrf";
|
|
382
384
|
constructor(options) {
|
|
383
385
|
this.options = options;
|
|
@@ -390,7 +392,7 @@ var CSRFPlugin = class {
|
|
|
390
392
|
"HEAD",
|
|
391
393
|
"GET"
|
|
392
394
|
].includes(ctx.init.method || "GET")) return;
|
|
393
|
-
const value = (0, cookie.
|
|
395
|
+
const value = (0, cookie.parseCookie)(document.cookie)[this.options.cookieName];
|
|
394
396
|
if (!value) return;
|
|
395
397
|
ctx.init.headers = new Headers(ctx.init.headers);
|
|
396
398
|
ctx.init.headers.set(this.options.headerName, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["wrappedFetch","z","wrappedFetch","z","sessionSchema","cookie","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch"],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["wrappedFetch","z","wrappedFetch","z","sessionSchema","cookie","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch"],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parseCookie } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parseCookie(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
|
package/dist/plugins/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as User, l as Plugin, m as Session, p as Account, t as ClientWithPlugins, u as AuthulaClient } from "../sdk-
|
|
1
|
+
import { h as User, l as Plugin, m as Session, p as Account, t as ClientWithPlugins, u as AuthulaClient } from "../sdk-7eSlhCrf.cjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/access-control/types.d.ts
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as User, l as Plugin, m as Session, p as Account, t as ClientWithPlugins, u as AuthulaClient } from "../sdk-
|
|
1
|
+
import { h as User, l as Plugin, m as Session, p as Account, t as ClientWithPlugins, u as AuthulaClient } from "../sdk-7eSlhCrf.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/access-control/types.d.ts
|
package/dist/plugins/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as sessionSchema, t as wrappedFetch } from "../fetch-
|
|
1
|
+
import { r as sessionSchema, t as wrappedFetch } from "../fetch-BnZpQ0Yq.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
3
|
+
import { parseCookie } from "cookie";
|
|
4
4
|
|
|
5
5
|
//#region src/plugins/access-control/plugin.ts
|
|
6
6
|
var AccessControlPlugin = class {
|
|
@@ -325,6 +325,7 @@ const impersonationSchema = z.object({
|
|
|
325
325
|
//#endregion
|
|
326
326
|
//#region src/plugins/bearer/plugin.ts
|
|
327
327
|
var BearerPlugin = class {
|
|
328
|
+
options;
|
|
328
329
|
id = "bearer";
|
|
329
330
|
refreshPromise = null;
|
|
330
331
|
constructor(options) {
|
|
@@ -377,6 +378,7 @@ var BearerPlugin = class {
|
|
|
377
378
|
//#endregion
|
|
378
379
|
//#region src/plugins/csrf/plugin.ts
|
|
379
380
|
var CSRFPlugin = class {
|
|
381
|
+
options;
|
|
380
382
|
id = "csrf";
|
|
381
383
|
constructor(options) {
|
|
382
384
|
this.options = options;
|
|
@@ -389,7 +391,7 @@ var CSRFPlugin = class {
|
|
|
389
391
|
"HEAD",
|
|
390
392
|
"GET"
|
|
391
393
|
].includes(ctx.init.method || "GET")) return;
|
|
392
|
-
const value =
|
|
394
|
+
const value = parseCookie(document.cookie)[this.options.cookieName];
|
|
393
395
|
if (!value) return;
|
|
394
396
|
ctx.init.headers = new Headers(ctx.init.headers);
|
|
395
397
|
ctx.init.headers.set(this.options.headerName, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parseCookie } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parseCookie(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -164,4 +164,4 @@ declare function createClient<const T extends readonly Plugin[]>(options: Omit<A
|
|
|
164
164
|
}): ClientWithPlugins<T>;
|
|
165
165
|
//#endregion
|
|
166
166
|
export { AfterFetchHook as C, FetchRequestOptions as E, verificationTypeSchema as S, FetchContext as T, VerificationType as _, SignOutResponse as a, userSchema as b, FetchOptions as c, CookieProvider as d, CookieStore as f, Verification as g, User as h, SignOutRequest as i, Plugin as l, Session as m, createClient as n, AuthulaClientConfig as o, Account as p, GetMeResponse as r, AuthulaClientOptions as s, ClientWithPlugins as t, AuthulaClient as u, accountSchema as v, BeforeFetchHook as w, verificationSchema as x, sessionSchema as y };
|
|
167
|
-
//# sourceMappingURL=sdk-
|
|
167
|
+
//# sourceMappingURL=sdk-7eSlhCrf.d.cts.map
|
|
@@ -164,4 +164,4 @@ declare function createClient<const T extends readonly Plugin[]>(options: Omit<A
|
|
|
164
164
|
}): ClientWithPlugins<T>;
|
|
165
165
|
//#endregion
|
|
166
166
|
export { AfterFetchHook as C, FetchRequestOptions as E, verificationTypeSchema as S, FetchContext as T, VerificationType as _, SignOutResponse as a, userSchema as b, FetchOptions as c, CookieProvider as d, CookieStore as f, Verification as g, User as h, SignOutRequest as i, Plugin as l, Session as m, createClient as n, AuthulaClientConfig as o, Account as p, GetMeResponse as r, AuthulaClientOptions as s, ClientWithPlugins as t, AuthulaClient as u, accountSchema as v, BeforeFetchHook as w, verificationSchema as x, sessionSchema as y };
|
|
167
|
-
//# sourceMappingURL=sdk-
|
|
167
|
+
//# sourceMappingURL=sdk-7eSlhCrf.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "authula",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.3",
|
|
5
5
|
"description": "Official SDK for Authula.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"homepage": "https://github.com/Authula/authula-node-sdk#readme",
|
|
@@ -29,25 +29,23 @@
|
|
|
29
29
|
"files": [
|
|
30
30
|
"dist"
|
|
31
31
|
],
|
|
32
|
-
"
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"cookie": "^2.0.0",
|
|
34
|
+
"es-toolkit": "^1.49.0",
|
|
35
|
+
"zod": "^4.4.3"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^26.0.1",
|
|
39
|
+
"bumpp": "^11.1.0",
|
|
40
|
+
"tsdown": "^0.22.3",
|
|
41
|
+
"typescript": "^6.0.3",
|
|
42
|
+
"vitest": "^4.1.9"
|
|
43
|
+
},
|
|
33
44
|
"scripts": {
|
|
34
45
|
"build": "tsdown",
|
|
35
46
|
"dev": "tsdown --watch",
|
|
36
47
|
"typecheck": "tsc --noEmit",
|
|
37
48
|
"test": "vitest run",
|
|
38
|
-
"test:watch": "vitest --watch"
|
|
39
|
-
"prepublishOnly": "pnpm run build"
|
|
40
|
-
},
|
|
41
|
-
"dependencies": {
|
|
42
|
-
"cookie": "^1.1.1",
|
|
43
|
-
"es-toolkit": "^1.46.1",
|
|
44
|
-
"zod": "^4.4.1"
|
|
45
|
-
},
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"@types/node": "^25.6.0",
|
|
48
|
-
"bumpp": "^11.0.1",
|
|
49
|
-
"tsdown": "^0.21.10",
|
|
50
|
-
"typescript": "^6.0.3",
|
|
51
|
-
"vitest": "^4.1.5"
|
|
49
|
+
"test:watch": "vitest --watch"
|
|
52
50
|
}
|
|
53
|
-
}
|
|
51
|
+
}
|