@banata-auth/shared 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts","../src/id.ts","../src/errors.ts","../src/validation.ts","../src/runtime-auth-config.ts","../src/email-blocks.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * ID prefixes for all Banata Auth resources.\n * Each resource type gets a unique prefix for type-safety and debuggability.\n * Follows the WorkOS pattern of prefixed identifiers.\n */\nexport const ID_PREFIXES = {\n\tuser: \"usr\",\n\tsession: \"ses\",\n\taccount: \"acc\",\n\torganization: \"org\",\n\torganizationMember: \"mem\",\n\torganizationInvitation: \"inv\",\n\tteam: \"team\",\n\tssoConnection: \"conn\",\n\tssoProfile: \"prof\",\n\tdirectory: \"dir\",\n\tdirectoryUser: \"diru\",\n\tdirectoryGroup: \"dirg\",\n\tauditEvent: \"evt\",\n\tevent: \"event\",\n\twebhookEndpoint: \"wh\",\n\twebhookDelivery: \"whd\",\n\tapiKey: \"ak\",\n\trole: \"role\",\n\tvaultSecret: \"vsec\",\n\tdomainVerification: \"dv\",\n\tfgaTuple: \"fga\",\n\tradarEvent: \"radar\",\n\tproject: \"proj\",\n\tenvironment: \"env\",\n\temailTemplate: \"etpl\",\n} as const;\n\nexport type ResourceType = keyof typeof ID_PREFIXES;\nexport type IdPrefix = (typeof ID_PREFIXES)[ResourceType];\n\n/**\n * Default rate limits per endpoint category (requests per minute).\n */\nexport const RATE_LIMITS = {\n\tgeneral: 600,\n\tsignIn: 30,\n\tsignUp: 10,\n\tpasswordReset: 10,\n\temailOperations: 10,\n\tscim: 100,\n\tadmin: 120,\n\twebhookDelivery: 0, // No limit (outbound)\n} as const;\n\n/**\n * Default token/session lifetimes in seconds.\n */\nexport const TOKEN_LIFETIMES = {\n\t/** JWT access token: 15 minutes */\n\taccessToken: 15 * 60,\n\t/** Session record: 7 days */\n\tsession: 7 * 24 * 60 * 60,\n\t/** Session absolute max: 30 days */\n\tsessionAbsoluteMax: 30 * 24 * 60 * 60,\n\t/** Password reset token: 1 hour */\n\tpasswordReset: 60 * 60,\n\t/** Email verification token: 24 hours */\n\temailVerification: 24 * 60 * 60,\n\t/** Magic link: 10 minutes */\n\tmagicLink: 10 * 60,\n\t/** Email OTP: 10 minutes */\n\temailOtp: 10 * 60,\n\t/** Admin portal link (short-lived): 5 minutes */\n\tadminPortalShort: 5 * 60,\n\t/** Admin portal link (long-lived): 30 days */\n\tadminPortalLong: 30 * 24 * 60 * 60,\n\t/** Organization invitation: 7 days */\n\tinvitation: 7 * 24 * 60 * 60,\n\t/** JWKS key rotation: 90 days */\n\tjwksRotation: 90 * 24 * 60 * 60,\n} as const;\n\n/**\n * Size limits.\n */\nexport const SIZE_LIMITS = {\n\t/** Max custom metadata size in bytes */\n\tmetadataMaxBytes: 16 * 1024, // 16KB\n\t/** Max SAML response size in bytes */\n\tsamlMaxBytes: 256 * 1024, // 256KB\n\t/** Max SAML XML depth */\n\tsamlMaxDepth: 50,\n\t/** Max webhook payload size in bytes */\n\twebhookMaxBytes: 256 * 1024, // 256KB\n\t/** Max webhook response body stored (bytes) */\n\twebhookResponseMaxBytes: 10 * 1024, // 10KB\n\t/** Max SCIM request body size in bytes */\n\tscimMaxBytes: 1024 * 1024, // 1MB\n\t/** Max password length */\n\tpasswordMaxLength: 128,\n\t/** Min password length */\n\tpasswordMinLength: 8,\n\t/** Max FGA hierarchy depth */\n\tfgaMaxDepth: 10,\n} as const;\n\n/**\n * Webhook retry delays in milliseconds.\n */\nexport const WEBHOOK_RETRY_DELAYS = [\n\t0, // Attempt 1: immediate\n\t5 * 60 * 1000, // Attempt 2: 5 minutes\n\t30 * 60 * 1000, // Attempt 3: 30 minutes\n\t2 * 60 * 60 * 1000, // Attempt 4: 2 hours\n\t24 * 60 * 60 * 1000, // Attempt 5: 24 hours\n] as const;\n\n/**\n * Max consecutive webhook failures before auto-disabling endpoint.\n */\nexport const WEBHOOK_MAX_CONSECUTIVE_FAILURES = 3;\n\n/**\n * Max number of webhook retry attempts.\n */\nexport const WEBHOOK_MAX_ATTEMPTS = 5;\n","import { type IdPrefix, ID_PREFIXES, type ResourceType } from \"./constants\";\n\n/**\n * ULID-compatible timestamp + random ID generator.\n *\n * Generates a 26-character Crockford Base32 encoded ID:\n * - First 10 chars: millisecond timestamp (sortable)\n * - Last 16 chars: cryptographically random\n *\n * This gives us:\n * - Lexicographic sorting by creation time\n * - No coordination needed (no sequences)\n * - 80 bits of randomness (collision-resistant)\n */\n\nconst ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nconst ENCODING_LEN = ENCODING.length; // 32\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\nfunction encodeTime(now: number, len: number): string {\n\tlet str = \"\";\n\tlet remaining = now;\n\tfor (let i = len; i > 0; i--) {\n\t\tconst mod = remaining % ENCODING_LEN;\n\t\tstr = ENCODING[mod]! + str;\n\t\tremaining = (remaining - mod) / ENCODING_LEN;\n\t}\n\treturn str;\n}\n\nfunction encodeRandom(len: number): string {\n\tlet str = \"\";\n\tconst bytes = new Uint8Array(len);\n\tcrypto.getRandomValues(bytes);\n\tfor (let i = 0; i < len; i++) {\n\t\tstr += ENCODING[bytes[i]! % ENCODING_LEN];\n\t}\n\treturn str;\n}\n\n/**\n * Generate a ULID (Universally Unique Lexicographically Sortable Identifier).\n */\nexport function ulid(): string {\n\tconst now = Date.now();\n\treturn encodeTime(now, TIME_LEN) + encodeRandom(RANDOM_LEN);\n}\n\n/**\n * Generate a prefixed ID for a given resource type.\n *\n * @example\n * ```ts\n * generateId(\"user\"); // \"usr_01H9GBQN5WP3FVJKZ0JGMH3RXE\"\n * generateId(\"organization\"); // \"org_01H9GBQN5WP3FVJKZ0JGMH3RXE\"\n * generateId(\"ssoConnection\"); // \"conn_01H9GBQN5WP3FVJKZ0JGMH3RXE\"\n * ```\n */\nexport function generateId(resourceType: ResourceType): string {\n\tconst prefix = ID_PREFIXES[resourceType];\n\treturn `${prefix}_${ulid()}`;\n}\n\n/**\n * Extract the resource type from a prefixed ID.\n *\n * @returns The resource type, or null if the prefix is unrecognized.\n *\n * @example\n * ```ts\n * getResourceType(\"usr_01H9GBQN5WP3FVJKZ0JGMH3RXE\"); // \"user\"\n * getResourceType(\"org_01H9GBQN5WP3FVJKZ0JGMH3RXE\"); // \"organization\"\n * getResourceType(\"invalid\"); // null\n * ```\n */\nexport function getResourceType(id: string): ResourceType | null {\n\tconst underscoreIndex = id.indexOf(\"_\");\n\tif (underscoreIndex === -1) return null;\n\n\tconst prefix = id.slice(0, underscoreIndex) as IdPrefix;\n\tconst entry = Object.entries(ID_PREFIXES).find(([, v]) => v === prefix);\n\treturn entry ? (entry[0] as ResourceType) : null;\n}\n\n/**\n * Validate that an ID has the expected prefix for a resource type.\n *\n * @example\n * ```ts\n * validateId(\"usr_01H9...\", \"user\"); // true\n * validateId(\"org_01H9...\", \"user\"); // false\n * ```\n */\nexport function validateId(id: string, expectedType: ResourceType): boolean {\n\tconst prefix = ID_PREFIXES[expectedType];\n\treturn id.startsWith(`${prefix}_`);\n}\n\n/**\n * Generate a cryptographically random string of the specified byte length,\n * encoded as URL-safe base64.\n */\nexport function generateRandomToken(byteLength = 32): string {\n\tconst bytes = new Uint8Array(byteLength);\n\tcrypto.getRandomValues(bytes);\n\t// URL-safe base64 encoding\n\tconst base64 = btoa(String.fromCharCode(...bytes));\n\treturn base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Generate a random 6-digit numeric OTP.\n */\nexport function generateOtp(length = 6): string {\n\tconst bytes = new Uint8Array(length);\n\tcrypto.getRandomValues(bytes);\n\tlet otp = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\totp += (bytes[i]! % 10).toString();\n\t}\n\treturn otp;\n}\n","/**\n * Base error class for all Banata Auth errors.\n * Matches WorkOS SDK error patterns with status, code, and requestId.\n */\nexport class BanataAuthError extends Error {\n\treadonly status: number;\n\treadonly code: string;\n\treadonly requestId: string;\n\treadonly retryable: boolean;\n\n\tconstructor(options: {\n\t\tmessage: string;\n\t\tstatus: number;\n\t\tcode: string;\n\t\trequestId?: string;\n\t\tretryable?: boolean;\n\t}) {\n\t\tsuper(options.message);\n\t\tthis.name = \"BanataAuthError\";\n\t\tthis.status = options.status;\n\t\tthis.code = options.code;\n\t\tthis.requestId = options.requestId ?? \"\";\n\t\tthis.retryable = options.retryable ?? false;\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tstatus: this.status,\n\t\t\tcode: this.code,\n\t\t\trequestId: this.requestId,\n\t\t};\n\t}\n}\n\n/**\n * 401 - Missing or invalid API key / session.\n */\nexport class AuthenticationError extends BanataAuthError {\n\tconstructor(options: { message?: string; requestId?: string } = {}) {\n\t\tsuper({\n\t\t\tmessage: options.message ?? \"Authentication required\",\n\t\t\tstatus: 401,\n\t\t\tcode: \"authentication_required\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: false,\n\t\t});\n\t\tthis.name = \"AuthenticationError\";\n\t}\n}\n\n/**\n * 403 - Valid credentials but insufficient permissions.\n */\nexport class ForbiddenError extends BanataAuthError {\n\tconstructor(options: { message?: string; requestId?: string } = {}) {\n\t\tsuper({\n\t\t\tmessage: options.message ?? \"Insufficient permissions\",\n\t\t\tstatus: 403,\n\t\t\tcode: \"forbidden\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: false,\n\t\t});\n\t\tthis.name = \"ForbiddenError\";\n\t}\n}\n\n/**\n * 404 - Resource not found.\n */\nexport class NotFoundError extends BanataAuthError {\n\tconstructor(options: { message?: string; resource?: string; requestId?: string } = {}) {\n\t\tsuper({\n\t\t\tmessage:\n\t\t\t\toptions.message ?? (options.resource ? `${options.resource} not found` : \"Not found\"),\n\t\t\tstatus: 404,\n\t\t\tcode: \"not_found\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: false,\n\t\t});\n\t\tthis.name = \"NotFoundError\";\n\t}\n}\n\n/**\n * 409 - Conflict (duplicate resource, etc.)\n */\nexport class ConflictError extends BanataAuthError {\n\tconstructor(options: { message?: string; requestId?: string } = {}) {\n\t\tsuper({\n\t\t\tmessage: options.message ?? \"Resource already exists\",\n\t\t\tstatus: 409,\n\t\t\tcode: \"conflict\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: false,\n\t\t});\n\t\tthis.name = \"ConflictError\";\n\t}\n}\n\n/**\n * Individual field validation error.\n */\nexport interface FieldError {\n\tfield: string;\n\tmessage: string;\n\tcode: string;\n}\n\n/**\n * 422 - Validation error with field-level details.\n */\nexport class ValidationError extends BanataAuthError {\n\treadonly errors: FieldError[];\n\n\tconstructor(options: { message?: string; errors: FieldError[]; requestId?: string }) {\n\t\tsuper({\n\t\t\tmessage: options.message ?? \"Validation failed\",\n\t\t\tstatus: 422,\n\t\t\tcode: \"validation_error\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: false,\n\t\t});\n\t\tthis.name = \"ValidationError\";\n\t\tthis.errors = options.errors;\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\terrors: this.errors,\n\t\t};\n\t}\n}\n\n/**\n * 429 - Rate limited.\n */\nexport class RateLimitError extends BanataAuthError {\n\treadonly retryAfter: number;\n\n\tconstructor(options: { retryAfter: number; requestId?: string }) {\n\t\tsuper({\n\t\t\tmessage: `Rate limit exceeded. Retry after ${options.retryAfter} seconds`,\n\t\t\tstatus: 429,\n\t\t\tcode: \"rate_limit_exceeded\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: true,\n\t\t});\n\t\tthis.name = \"RateLimitError\";\n\t\tthis.retryAfter = options.retryAfter;\n\t}\n}\n\n/**\n * 500 - Internal server error.\n */\nexport class InternalError extends BanataAuthError {\n\tconstructor(options: { message?: string; requestId?: string } = {}) {\n\t\tsuper({\n\t\t\tmessage: options.message ?? \"Internal server error\",\n\t\t\tstatus: 500,\n\t\t\tcode: \"internal_error\",\n\t\t\trequestId: options.requestId,\n\t\t\tretryable: true,\n\t\t});\n\t\tthis.name = \"InternalError\";\n\t}\n}\n\n/**\n * Maps an HTTP status code to the appropriate error class.\n */\nexport function createErrorFromStatus(\n\tstatus: number,\n\tbody: { message?: string; code?: string; errors?: FieldError[] },\n\trequestId?: string,\n): BanataAuthError {\n\tswitch (status) {\n\t\tcase 401:\n\t\t\treturn new AuthenticationError({ message: body.message, requestId });\n\t\tcase 403:\n\t\t\treturn new ForbiddenError({ message: body.message, requestId });\n\t\tcase 404:\n\t\t\treturn new NotFoundError({ message: body.message, requestId });\n\t\tcase 409:\n\t\t\treturn new ConflictError({ message: body.message, requestId });\n\t\tcase 422:\n\t\t\treturn new ValidationError({\n\t\t\t\tmessage: body.message,\n\t\t\t\terrors: body.errors ?? [],\n\t\t\t\trequestId,\n\t\t\t});\n\t\tcase 429: {\n\t\t\treturn new RateLimitError({ retryAfter: 60, requestId });\n\t\t}\n\t\tdefault:\n\t\t\tif (status >= 500) {\n\t\t\t\treturn new InternalError({ message: body.message, requestId });\n\t\t\t}\n\t\t\treturn new BanataAuthError({\n\t\t\t\tmessage: body.message ?? \"Unknown error\",\n\t\t\t\tstatus,\n\t\t\t\tcode: body.code ?? \"unknown_error\",\n\t\t\t\trequestId,\n\t\t\t});\n\t}\n}\n","import { z } from \"zod\";\nimport { SIZE_LIMITS } from \"./constants\";\n\n// ─── Primitives ──────────────────────────────────────────────────────────────\n\nexport const emailSchema = z.string().email(\"Invalid email address\").max(255).toLowerCase().trim();\n\nexport const passwordSchema = z\n\t.string()\n\t.min(SIZE_LIMITS.passwordMinLength, `Password must be at least ${SIZE_LIMITS.passwordMinLength} characters`)\n\t.max(SIZE_LIMITS.passwordMaxLength, `Password must be at most ${SIZE_LIMITS.passwordMaxLength} characters`);\n\nexport const nameSchema = z\n\t.string()\n\t.trim()\n\t.min(1, \"Name is required\")\n\t.max(255);\n\nexport const slugSchema = z\n\t.string()\n\t.min(2, \"Slug must be at least 2 characters\")\n\t.max(128)\n\t.regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/, \"Slug must be lowercase alphanumeric with hyphens\")\n\t.trim();\n\nexport const urlSchema = z.string().url(\"Invalid URL\").max(2048);\n\nexport const httpsUrlSchema = urlSchema.refine((url) => url.startsWith(\"https://\"), {\n\tmessage: \"URL must use HTTPS\",\n});\n\nexport const metadataSchema = z\n\t.record(z.unknown())\n\t.refine((data) => JSON.stringify(data).length <= SIZE_LIMITS.metadataMaxBytes, {\n\t\tmessage: `Metadata must be less than ${SIZE_LIMITS.metadataMaxBytes / 1024}KB`,\n\t})\n\t.optional();\n\nexport const domainSchema = z\n\t.string()\n\t.trim()\n\t.toLowerCase()\n\t.min(3)\n\t.max(255)\n\t.regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*\\.[a-z]{2,}$/, {\n\t\tmessage: \"Invalid domain format\",\n\t});\n\n// ─── Pagination ──────────────────────────────────────────────────────────────\n\nexport const paginationSchema = z.object({\n\tlimit: z.coerce.number().int().min(1).max(100).default(10),\n\tbefore: z.string().optional(),\n\tafter: z.string().optional(),\n\torder: z.enum([\"asc\", \"desc\"]).default(\"desc\"),\n});\n\nexport type PaginationOptions = z.infer<typeof paginationSchema>;\n\n// ─── User ────────────────────────────────────────────────────────────────────\n\nexport const createUserSchema = z.object({\n\temail: emailSchema,\n\tpassword: passwordSchema.optional(),\n\tname: nameSchema,\n\timage: urlSchema.optional(),\n\tusername: z.string().min(2).max(64).optional(),\n\tphoneNumber: z.string().optional(),\n\temailVerified: z.boolean().default(false),\n\trole: z.enum([\"user\", \"admin\"]).default(\"user\"),\n\tmetadata: metadataSchema,\n});\n\nexport type CreateUserInput = z.infer<typeof createUserSchema>;\n\nexport const updateUserSchema = z.object({\n\tname: nameSchema.optional(),\n\timage: urlSchema.optional().nullable(),\n\tusername: z.string().min(2).max(64).optional(),\n\tphoneNumber: z.string().optional().nullable(),\n\tmetadata: metadataSchema,\n});\n\nexport type UpdateUserInput = z.infer<typeof updateUserSchema>;\n\n// ─── Organization ────────────────────────────────────────────────────────────\n\nexport const createOrganizationSchema = z.object({\n\tname: nameSchema,\n\tslug: slugSchema.optional(),\n\tlogo: urlSchema.optional(),\n\tmetadata: metadataSchema,\n\trequireMfa: z.boolean().default(false),\n\tallowedEmailDomains: z.array(domainSchema).optional(),\n\tmaxMembers: z.number().int().positive().optional(),\n});\n\nexport type CreateOrganizationInput = z.infer<typeof createOrganizationSchema>;\n\nexport const updateOrganizationSchema = z.object({\n\tname: nameSchema.optional(),\n\tslug: slugSchema.optional(),\n\tlogo: urlSchema.optional().nullable(),\n\tmetadata: metadataSchema,\n\trequireMfa: z.boolean().optional(),\n\tssoEnforced: z.boolean().optional(),\n\tallowedEmailDomains: z.array(domainSchema).optional().nullable(),\n\tmaxMembers: z.number().int().positive().optional().nullable(),\n});\n\nexport type UpdateOrganizationInput = z.infer<typeof updateOrganizationSchema>;\n\nexport const inviteMemberSchema = z.object({\n\temail: emailSchema,\n\trole: z.string().min(1),\n});\n\nexport type InviteMemberInput = z.infer<typeof inviteMemberSchema>;\n\n// ─── SSO Connection ──────────────────────────────────────────────────────────\n\nexport const createSsoConnectionSchema = z.object({\n\torganizationId: z.string(),\n\ttype: z.enum([\"saml\", \"oidc\"]),\n\tname: nameSchema,\n\tdomains: z.array(domainSchema).min(1),\n\tsamlConfig: z\n\t\t.object({\n\t\t\tidpEntityId: z.string(),\n\t\t\tidpSsoUrl: urlSchema,\n\t\t\tidpCertificate: z.string().min(1),\n\t\t\tnameIdFormat: z.string().optional(),\n\t\t\tsignRequest: z.boolean().default(false),\n\t\t\tallowIdpInitiated: z.boolean().default(false),\n\t\t\tattributeMapping: z.record(z.string()).optional(),\n\t\t})\n\t\t.optional(),\n\toidcConfig: z\n\t\t.object({\n\t\t\tissuer: urlSchema,\n\t\t\tclientId: z.string().min(1),\n\t\t\tclientSecret: z.string().min(1),\n\t\t\tscopes: z.array(z.string()).default([\"openid\", \"email\", \"profile\"]),\n\t\t})\n\t\t.optional(),\n});\n\nexport type CreateSsoConnectionInput = z.infer<typeof createSsoConnectionSchema>;\n\n// ─── Webhook ─────────────────────────────────────────────────────────────────\n\nexport const createWebhookEndpointSchema = z.object({\n\turl: httpsUrlSchema,\n\teventTypes: z.array(z.string()).default([]),\n\tenabled: z.boolean().default(true),\n});\n\nexport type CreateWebhookEndpointInput = z.infer<typeof createWebhookEndpointSchema>;\n\n// ─── Audit Log ───────────────────────────────────────────────────────────────\n\nexport const createAuditEventSchema = z.object({\n\taction: z.string().min(1),\n\tactor: z.object({\n\t\ttype: z.enum([\"user\", \"admin\", \"system\", \"api_key\", \"scim\"]),\n\t\tid: z.string(),\n\t\tname: z.string().optional(),\n\t\temail: z.string().optional(),\n\t\tmetadata: z.record(z.string()).optional(),\n\t}),\n\ttargets: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\ttype: z.string(),\n\t\t\t\tid: z.string(),\n\t\t\t\tname: z.string().optional(),\n\t\t\t\tmetadata: z.record(z.string()).optional(),\n\t\t\t}),\n\t\t)\n\t\t.default([]),\n\tcontext: z\n\t\t.object({\n\t\t\torganizationId: z.string().optional(),\n\t\t\tipAddress: z.string().optional(),\n\t\t\tuserAgent: z.string().optional(),\n\t\t\trequestId: z.string().optional(),\n\t\t})\n\t\t.default({}),\n\tchanges: z\n\t\t.object({\n\t\t\tbefore: z.record(z.unknown()).optional(),\n\t\t\tafter: z.record(z.unknown()).optional(),\n\t\t})\n\t\t.optional(),\n\tidempotencyKey: z.string().optional(),\n\tmetadata: z.record(z.string()).optional(),\n\toccurredAt: z.number().optional(),\n});\n\nexport type CreateAuditEventInput = z.infer<typeof createAuditEventSchema>;\n","export interface RuntimeAuthMethods {\n\tsso: boolean;\n\temailPassword: boolean;\n\tpasskey: boolean;\n\tmagicLink: boolean;\n\temailOtp: boolean;\n\ttwoFactor: boolean;\n\torganization: boolean;\n\tanonymous: boolean;\n\tusername: boolean;\n}\n\nexport interface RuntimeSocialProviderStatus {\n\tenabled: boolean;\n\tdemo: boolean;\n}\n\nexport interface RuntimeAuthFeatures {\n\thostedUi: boolean;\n\tsignUp: boolean;\n\tmfa: boolean;\n\tlocalization: boolean;\n}\n\nexport interface RuntimeAuthSessions {\n\tmaxSessionLength: string;\n\taccessTokenDuration: string;\n\tinactivityTimeout: string;\n\tcorsOrigins: string[];\n}\n\nexport interface RuntimeAuthConfig {\n\tauthMethods: RuntimeAuthMethods;\n\tsocialProviders: Record<string, RuntimeSocialProviderStatus>;\n\tfeatures: RuntimeAuthFeatures;\n\tsessions: RuntimeAuthSessions;\n}\n\nexport function listEnabledSocialProviderIds(\n\tconfig: Pick<RuntimeAuthConfig, \"socialProviders\"> | null | undefined,\n): string[] {\n\tif (!config) return [];\n\treturn Object.entries(config.socialProviders)\n\t\t.filter(([, provider]) => provider.enabled)\n\t\t.map(([providerId]) => providerId);\n}\n","/**\n * Email template block types for the block-based email editor.\n *\n * Each email template is stored as an ordered array of typed blocks.\n * These blocks map 1:1 to React Email components and are rendered\n * at design time in the dashboard (live preview) and at send time\n * via `@react-email/render` to produce final HTML.\n *\n * The block schema is the single source of truth shared across:\n * - Dashboard editor (visual editing)\n * - SDK (programmatic template CRUD)\n * - Convex backend (storage + send-time rendering)\n */\n\n// ─── Style Types ───────────────────────────────────────────────────\n\n/** Common inline style properties for email blocks. */\nexport interface EmailBlockStyle {\n\tcolor?: string;\n\tbackgroundColor?: string;\n\tfontSize?: number;\n\tfontWeight?: \"normal\" | \"bold\" | \"600\" | \"700\";\n\tfontStyle?: \"normal\" | \"italic\";\n\ttextAlign?: \"left\" | \"center\" | \"right\";\n\tlineHeight?: number | string;\n\tpadding?: string;\n\tmargin?: string;\n\tborderRadius?: number;\n\twidth?: string;\n\tmaxWidth?: string;\n}\n\n// ─── Block Definitions ─────────────────────────────────────────────\n\n/** Base properties shared by all blocks. */\ninterface BaseBlock {\n\t/** Unique block ID (UUID). */\n\tid: string;\n\t/** Display label for the editor sidebar (optional override). */\n\tlabel?: string;\n}\n\n/** Heading block — maps to React Email `<Heading>`. */\nexport interface HeadingBlock extends BaseBlock {\n\ttype: \"heading\";\n\t/** Heading level: h1–h6. */\n\tas: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\t/** The heading text. Supports {{variable}} interpolation. */\n\ttext: string;\n\tstyle?: EmailBlockStyle;\n}\n\n/** Text/paragraph block — maps to React Email `<Text>`. */\nexport interface TextBlock extends BaseBlock {\n\ttype: \"text\";\n\t/** The paragraph text. Supports {{variable}} interpolation and basic HTML. */\n\ttext: string;\n\tstyle?: EmailBlockStyle;\n}\n\n/** Button (CTA) block — maps to React Email `<Button>`. */\nexport interface ButtonBlock extends BaseBlock {\n\ttype: \"button\";\n\t/** Button label text. */\n\ttext: string;\n\t/** URL the button links to. Supports {{variable}} interpolation. */\n\thref: string;\n\t/** Variant style. */\n\tvariant?: \"primary\" | \"secondary\" | \"outline\";\n\tstyle?: EmailBlockStyle;\n}\n\n/** Image block — maps to React Email `<Img>`. */\nexport interface ImageBlock extends BaseBlock {\n\ttype: \"image\";\n\t/** Image source URL. */\n\tsrc: string;\n\t/** Alt text for accessibility. */\n\talt: string;\n\t/** Width in pixels. */\n\twidth?: number;\n\t/** Height in pixels. */\n\theight?: number;\n\tstyle?: EmailBlockStyle;\n}\n\n/** Divider/horizontal rule — maps to React Email `<Hr>`. */\nexport interface DividerBlock extends BaseBlock {\n\ttype: \"divider\";\n\tstyle?: EmailBlockStyle;\n}\n\n/** Spacer block — empty space with configurable height. */\nexport interface SpacerBlock extends BaseBlock {\n\ttype: \"spacer\";\n\t/** Height in pixels. */\n\theight: number;\n}\n\n/** Link block — maps to React Email `<Link>`. */\nexport interface LinkBlock extends BaseBlock {\n\ttype: \"link\";\n\t/** Link text. */\n\ttext: string;\n\t/** URL. Supports {{variable}} interpolation. */\n\thref: string;\n\tstyle?: EmailBlockStyle;\n}\n\n/** Code block — styled monospace text for OTPs, tokens, etc. */\nexport interface CodeBlock extends BaseBlock {\n\ttype: \"code\";\n\t/** The code/OTP text. Supports {{variable}} interpolation. */\n\ttext: string;\n\tstyle?: EmailBlockStyle;\n}\n\n/** Column definition inside a columns block. */\nexport interface ColumnDef {\n\t/** Width as CSS value (e.g. \"50%\", \"200px\"). */\n\twidth?: string;\n\t/** Blocks nested inside this column. */\n\tblocks: EmailBlock[];\n}\n\n/** Columns (multi-column layout) — maps to React Email `<Row>` + `<Column>`. */\nexport interface ColumnsBlock extends BaseBlock {\n\ttype: \"columns\";\n\t/** Column definitions (2–4 columns). */\n\tcolumns: ColumnDef[];\n}\n\n// ─── Union Type ────────────────────────────────────────────────────\n\n/** Any email block. Discriminated union on `type`. */\nexport type EmailBlock =\n\t| HeadingBlock\n\t| TextBlock\n\t| ButtonBlock\n\t| ImageBlock\n\t| DividerBlock\n\t| SpacerBlock\n\t| LinkBlock\n\t| CodeBlock\n\t| ColumnsBlock;\n\n/** All possible block type strings. */\nexport type EmailBlockType = EmailBlock[\"type\"];\n\n// ─── Template Definition ───────────────────────────────────────────\n\n/** Category for organizing templates. */\nexport type EmailTemplateCategory =\n\t| \"auth\"\n\t| \"marketing\"\n\t| \"transactional\"\n\t| \"onboarding\"\n\t| \"notification\"\n\t| \"custom\";\n\n/**\n * A complete email template definition.\n * Stored as JSON in the database and editable through the dashboard.\n */\nexport interface EmailTemplateDefinition {\n\t/** Unique template ID (generated). */\n\tid: string;\n\t/** Human-readable template name (e.g. \"Welcome Email\", \"Marketing Blast\"). */\n\tname: string;\n\t/** URL-safe slug for SDK usage (e.g. \"welcome-email\", \"marketing-blast\"). */\n\tslug: string;\n\t/** Email subject line. Supports {{variable}} interpolation. */\n\tsubject: string;\n\t/** Preview text shown in inbox (optional). */\n\tpreviewText?: string;\n\t/** Template category for organization. */\n\tcategory: EmailTemplateCategory;\n\t/** Description of what this template is for. */\n\tdescription?: string;\n\t/** The ordered array of content blocks. */\n\tblocks: EmailBlock[];\n\t/** Variables this template expects (for documentation / SDK hints). */\n\tvariables?: EmailTemplateVariable[];\n\t/** Whether this is a built-in auth template (not deletable). */\n\tbuiltIn?: boolean;\n\t/** The built-in email type this template overrides (if any). */\n\tbuiltInType?:\n\t\t| \"verification\"\n\t\t| \"password-reset\"\n\t\t| \"magic-link\"\n\t\t| \"email-otp\"\n\t\t| \"invitation\"\n\t\t| \"welcome\";\n\t/** Timestamps. */\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n/** Variable definition for template documentation. */\nexport interface EmailTemplateVariable {\n\t/** Variable name (without braces, e.g. \"userName\"). */\n\tname: string;\n\t/** Human-readable description. */\n\tdescription?: string;\n\t/** Default value for previews. */\n\tdefaultValue?: string;\n\t/** Whether this variable is required. */\n\trequired?: boolean;\n}\n\n// ─── Block Palette Metadata ────────────────────────────────────────\n\n/** Metadata for the editor's block palette (drag source). */\nexport interface BlockPaletteMeta {\n\ttype: EmailBlockType;\n\tlabel: string;\n\tdescription: string;\n\ticon: string; // Lucide icon name\n}\n\n/** Default palette entries for the editor sidebar. */\nexport const BLOCK_PALETTE: BlockPaletteMeta[] = [\n\t{ type: \"heading\", label: \"Heading\", description: \"Title or section heading\", icon: \"Heading\" },\n\t{\n\t\ttype: \"text\",\n\t\tlabel: \"Text\",\n\t\tdescription: \"Paragraph of body text\",\n\t\ticon: \"AlignLeft\",\n\t},\n\t{\n\t\ttype: \"button\",\n\t\tlabel: \"Button\",\n\t\tdescription: \"Call-to-action button link\",\n\t\ticon: \"MousePointerClick\",\n\t},\n\t{\n\t\ttype: \"image\",\n\t\tlabel: \"Image\",\n\t\tdescription: \"Inline image\",\n\t\ticon: \"Image\",\n\t},\n\t{\n\t\ttype: \"divider\",\n\t\tlabel: \"Divider\",\n\t\tdescription: \"Horizontal separator line\",\n\t\ticon: \"Minus\",\n\t},\n\t{\n\t\ttype: \"spacer\",\n\t\tlabel: \"Spacer\",\n\t\tdescription: \"Empty vertical space\",\n\t\ticon: \"Space\",\n\t},\n\t{\n\t\ttype: \"code\",\n\t\tlabel: \"Code\",\n\t\tdescription: \"Monospace code or OTP display\",\n\t\ticon: \"Code\",\n\t},\n\t{\n\t\ttype: \"link\",\n\t\tlabel: \"Link\",\n\t\tdescription: \"Inline hyperlink\",\n\t\ticon: \"Link\",\n\t},\n\t{\n\t\ttype: \"columns\",\n\t\tlabel: \"Columns\",\n\t\tdescription: \"Multi-column layout (2–4)\",\n\t\ticon: \"Columns2\",\n\t},\n];\n\n// ─── Factory Helpers ───────────────────────────────────────────────\n\n/** Create a new block with a unique ID. Uses crypto.randomUUID where available. */\nfunction makeId(): string {\n\tif (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n\t\treturn crypto.randomUUID();\n\t}\n\t// Fallback: simple random hex string\n\treturn `blk_${Array.from({ length: 12 }, () => Math.floor(Math.random() * 16).toString(16)).join(\"\")}`;\n}\n\n/** Create a default block of the given type. */\nexport function createDefaultBlock(type: EmailBlockType): EmailBlock {\n\tconst id = makeId();\n\n\tswitch (type) {\n\t\tcase \"heading\":\n\t\t\treturn { id, type: \"heading\", as: \"h1\", text: \"Heading\" };\n\t\tcase \"text\":\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: \"Start writing your email content here...\",\n\t\t\t};\n\t\tcase \"button\":\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: \"button\",\n\t\t\t\ttext: \"Click Here\",\n\t\t\t\thref: \"https://example.com\",\n\t\t\t\tvariant: \"primary\",\n\t\t\t};\n\t\tcase \"image\":\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: \"image\",\n\t\t\t\tsrc: \"https://placehold.co/600x200/e2e8f0/64748b?text=Image\",\n\t\t\t\talt: \"Image\",\n\t\t\t\twidth: 600,\n\t\t\t};\n\t\tcase \"divider\":\n\t\t\treturn { id, type: \"divider\" };\n\t\tcase \"spacer\":\n\t\t\treturn { id, type: \"spacer\", height: 24 };\n\t\tcase \"code\":\n\t\t\treturn { id, type: \"code\", text: \"123456\" };\n\t\tcase \"link\":\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: \"link\",\n\t\t\t\ttext: \"Click here\",\n\t\t\t\thref: \"https://example.com\",\n\t\t\t};\n\t\tcase \"columns\":\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: \"columns\",\n\t\t\t\tcolumns: [\n\t\t\t\t\t{ width: \"50%\", blocks: [] },\n\t\t\t\t\t{ width: \"50%\", blocks: [] },\n\t\t\t\t],\n\t\t\t};\n\t}\n}\n\n// ─── Variable Interpolation ────────────────────────────────────────\n\n/**\n * Replace `{{variableName}}` placeholders in a string with values from a map.\n * Unmatched variables are left as-is.\n */\nexport function interpolateVariables(text: string, variables: Record<string, string>): string {\n\treturn text.replace(/\\{\\{(\\w+)\\}\\}/g, (match, name: string) => {\n\t\treturn variables[name] ?? match;\n\t});\n}\n\n/**\n * Extract all `{{variableName}}` references from an array of blocks.\n * Returns a deduplicated list of variable names.\n */\nexport function extractVariables(blocks: EmailBlock[]): string[] {\n\tconst vars = new Set<string>();\n\tconst regex = /\\{\\{(\\w+)\\}\\}/g;\n\n\tfunction scan(text: string) {\n\t\tfor (let m = regex.exec(text); m !== null; m = regex.exec(text)) {\n\t\t\tif (m[1]) vars.add(m[1]);\n\t\t}\n\t}\n\n\tfunction walk(blockList: EmailBlock[]) {\n\t\tfor (const block of blockList) {\n\t\t\tswitch (block.type) {\n\t\t\t\tcase \"heading\":\n\t\t\t\tcase \"text\":\n\t\t\t\tcase \"code\":\n\t\t\t\t\tscan(block.text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"button\":\n\t\t\t\t\tscan(block.text);\n\t\t\t\t\tscan(block.href);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"link\":\n\t\t\t\t\tscan(block.text);\n\t\t\t\t\tscan(block.href);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"image\":\n\t\t\t\t\tscan(block.src);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"columns\":\n\t\t\t\t\tfor (const col of block.columns) {\n\t\t\t\t\t\twalk(col.blocks);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\twalk(blocks);\n\treturn [...vars];\n}\n\n// ─── Built-in Template Defaults ────────────────────────────────────\n\n/**\n * Default block definitions for the 6 built-in auth email templates.\n * These serve as starting points that users can customize.\n */\nexport function getBuiltInTemplateBlocks(\n\ttype: \"verification\" | \"password-reset\" | \"magic-link\" | \"email-otp\" | \"invitation\" | \"welcome\",\n): EmailBlock[] {\n\tswitch (type) {\n\t\tcase \"verification\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"Verify your email address\" },\n\t\t\t\t{ id: makeId(), type: \"text\", text: \"Hi {{userName}},\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Thanks for signing up! Please verify your email address by clicking the button below.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\ttext: \"Verify Email\",\n\t\t\t\t\thref: \"{{verificationUrl}}\",\n\t\t\t\t\tvariant: \"primary\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"If the button doesn't work, copy and paste this URL into your browser:\",\n\t\t\t\t\tstyle: { fontSize: 12, color: \"#94a3b8\" },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"link\",\n\t\t\t\t\ttext: \"{{verificationUrl}}\",\n\t\t\t\t\thref: \"{{verificationUrl}}\",\n\t\t\t\t\tstyle: { fontSize: 12 },\n\t\t\t\t},\n\t\t\t];\n\t\tcase \"password-reset\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"Reset your password\" },\n\t\t\t\t{ id: makeId(), type: \"text\", text: \"Hi {{userName}},\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"We received a request to reset your password. Click the button below to choose a new password.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\ttext: \"Reset Password\",\n\t\t\t\t\thref: \"{{resetUrl}}\",\n\t\t\t\t\tvariant: \"primary\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"This link expires in 1 hour. If you didn't request a password reset, you can safely ignore this email.\",\n\t\t\t\t\tstyle: { fontSize: 12, color: \"#94a3b8\" },\n\t\t\t\t},\n\t\t\t];\n\t\tcase \"magic-link\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"Sign in to your account\" },\n\t\t\t\t{ id: makeId(), type: \"text\", text: \"Hi there,\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Click the button below to sign in to your account. This link expires in 10 minutes.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\ttext: \"Sign In\",\n\t\t\t\t\thref: \"{{magicLinkUrl}}\",\n\t\t\t\t\tvariant: \"primary\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"If you didn't request this link, you can safely ignore this email.\",\n\t\t\t\t\tstyle: { fontSize: 12, color: \"#94a3b8\" },\n\t\t\t\t},\n\t\t\t];\n\t\tcase \"email-otp\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"Your verification code\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Use the code below to verify your identity. It expires in 10 minutes.\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"code\", text: \"{{otp}}\" },\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"If you didn't request this code, you can safely ignore this email. Never share this code with anyone.\",\n\t\t\t\t\tstyle: { fontSize: 12, color: \"#94a3b8\" },\n\t\t\t\t},\n\t\t\t];\n\t\tcase \"invitation\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"You've been invited\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"<strong>{{inviterName}}</strong> has invited you to join <strong>{{organizationName}}</strong>.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\ttext: \"Accept Invitation\",\n\t\t\t\t\thref: \"{{acceptUrl}}\",\n\t\t\t\t\tvariant: \"primary\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"link\",\n\t\t\t\t\ttext: \"{{acceptUrl}}\",\n\t\t\t\t\thref: \"{{acceptUrl}}\",\n\t\t\t\t\tstyle: { fontSize: 12 },\n\t\t\t\t},\n\t\t\t];\n\t\tcase \"welcome\":\n\t\t\treturn [\n\t\t\t\t{ id: makeId(), type: \"heading\", as: \"h1\", text: \"Welcome to {{appName}}\" },\n\t\t\t\t{ id: makeId(), type: \"text\", text: \"Hi {{userName}},\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Your account has been created successfully. You're all set to get started.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\ttext: \"Go to Dashboard\",\n\t\t\t\t\thref: \"{{dashboardUrl}}\",\n\t\t\t\t\tvariant: \"primary\",\n\t\t\t\t},\n\t\t\t\t{ id: makeId(), type: \"divider\" },\n\t\t\t\t{\n\t\t\t\t\tid: makeId(),\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"If you didn't create this account, please contact support.\",\n\t\t\t\t\tstyle: { fontSize: 12, color: \"#94a3b8\" },\n\t\t\t\t},\n\t\t\t];\n\t}\n}\n"]}