@kiauth/web-sdk 1.0.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,"file":"kiauth-sdk.min.js","sources":["../src/api.ts","../src/Websocket.ts","../node_modules/qrcode-generator/qrcode.js","../src/QrModal.ts","../src/Fallback.ts","../src/Button.ts","../src/styles.ts","../src/pkce.ts","../src/KiauthSDK.ts"],"sourcesContent":["import { KiauthConfig, InitiateSessionResponse, KiauthUser } from './types';\n\nexport class KiauthApi {\n private baseUrl: string;\n\n constructor(config: KiauthConfig) {\n this.baseUrl = KiauthApi.resolveBaseUrl(config);\n }\n\n // Resolve the backend API base. An explicit config.baseUrl always wins so a\n // developer can point the SDK at the live backend (api.kiauth.com (the branded backend host)\n // mapped) or a self-hosted instance; otherwise fall back to env defaults.\n private static resolveBaseUrl(config: KiauthConfig): string {\n if (config.baseUrl) {\n const trimmed = config.baseUrl.replace(/\\/+$/, '');\n return /\\/api\\/v\\d+$/.test(trimmed) ? trimmed : `${trimmed}/api/v1`;\n }\n if (config.environment === 'production') {\n return 'https://api.kiauth.com/api/v1';\n }\n // Sandbox/dev: talk to a locally running backend.\n return 'http://localhost:3000/api/v1';\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n // Default 8s (not 2s): a backend on a cold start / slow network must not be\n // mistaken for \"offline\". The on-click re-check passes a longer timeout still.\n async healthCheck(timeoutMs = 8000): Promise<boolean> {\n try {\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), timeoutMs);\n\n const res = await fetch(`${this.baseUrl}/auth/health`, {\n method: 'GET',\n headers: { 'Accept': 'application/json' },\n signal: controller.signal\n });\n clearTimeout(id);\n return res.ok;\n } catch {\n return false;\n }\n }\n\n async initiateSession(\n clientId: string,\n scopes: string[],\n redirectUri?: string,\n codeChallenge?: string\n ): Promise<InitiateSessionResponse> {\n const res = await fetch(`${this.baseUrl}/auth/initiate`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n clientId,\n scopes,\n redirectUri,\n // PKCE challenge for public clients (omitted for confidential clients).\n ...(codeChallenge ? { codeChallenge, codeChallengeMethod: 'S256' } : {})\n })\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'INITIATE_FAILED', message: err.message || 'Failed to initiate login session.' };\n }\n return res.json();\n }\n\n // Poll a QR session's status. On APPROVED the backend also returns the one-time\n // authCode, so the SDK can complete the exchange even if the WebSocket event\n // never arrived (proxy/cold-network). Mirrors the dev-portal's polling flow.\n async getSessionStatus(sessionId: string): Promise<{ status: string; authCode: string | null }> {\n try {\n const res = await fetch(`${this.baseUrl}/auth/session/${sessionId}`, {\n method: 'GET',\n headers: { 'Accept': 'application/json' }\n });\n if (!res.ok) return { status: 'UNKNOWN', authCode: null };\n const data = await res.json();\n return { status: data.status || 'UNKNOWN', authCode: data.authCode || null };\n } catch {\n return { status: 'UNKNOWN', authCode: null };\n }\n }\n\n /**\n * Exchange the authorization code for tokens. Public clients pass\n * { codeVerifier } (PKCE); confidential clients pass { clientSecret }.\n */\n async exchangeToken(\n code: string,\n clientId: string,\n credentials: { codeVerifier?: string; clientSecret?: string }\n ): Promise<{ accessToken: string; user: KiauthUser }> {\n const res = await fetch(`${this.baseUrl}/auth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n grantType: 'authorization_code',\n code,\n clientId,\n ...(credentials.codeVerifier ? { codeVerifier: credentials.codeVerifier } : {}),\n ...(credentials.clientSecret ? { clientSecret: credentials.clientSecret } : {})\n })\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'TOKEN_EXCHANGE_FAILED', message: err.message || 'Failed to exchange authorization code.' };\n }\n return res.json();\n }\n\n async verifyToken(token: string): Promise<{ valid: boolean; user?: KiauthUser }> {\n const res = await fetch(`${this.baseUrl}/auth/verify`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({ token })\n });\n if (!res.ok) {\n return { valid: false };\n }\n return res.json();\n }\n\n async reportSession(\n clientId: string,\n clientSecret: string,\n options: {\n kiauthUserToken: string;\n externalSessionId: string;\n authMethod: string;\n deviceName?: string;\n deviceType?: string;\n ipAddress?: string;\n location?: string;\n userAgent?: string;\n }\n ): Promise<{ bridgedSessionId: string }> {\n const creds = btoa(`${clientId}:${clientSecret}`);\n const res = await fetch(`${this.baseUrl}/sessions/bridge`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Basic ${creds}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify(options)\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'REPORT_SESSION_FAILED', message: err.message || 'Failed to report session bridge.' };\n }\n return res.json();\n }\n\n async reportBatchSessions(\n clientId: string,\n clientSecret: string,\n kiauthUserToken: string,\n sessions: any[]\n ): Promise<{ created: number; skipped: number }> {\n const creds = btoa(`${clientId}:${clientSecret}`);\n const res = await fetch(`${this.baseUrl}/sessions/bridge/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Basic ${creds}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({ kiauthUserToken, sessions })\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'REPORT_BATCH_FAILED', message: err.message || 'Failed to report batch session bridge.' };\n }\n return res.json();\n }\n\n // Email-keyed login reporting (\"claim on first sighting\"). Use this when you do NOT\n // have a kiauthUserToken — e.g. a user logged in with their own email/password/Google\n // and you want it to appear in their Kiauth app. If the user is already linked we show\n // it immediately; if not, Kiauth asks them \"was this you?\" to link or revoke.\n // Always resolves on a 2xx (Kiauth never reveals whether the email is a Kiauth user).\n // Requires a VERIFIED business + clientSecret → must run on your backend, never the browser.\n async reportSessionByEmail(\n clientId: string,\n clientSecret: string,\n options: {\n email: string;\n externalSessionId: string;\n authMethod: string;\n deviceName?: string;\n deviceLabel?: string;\n deviceType?: string;\n ipAddress?: string;\n location?: string;\n userAgent?: string;\n }\n ): Promise<{ accepted: boolean }> {\n const creds = btoa(`${clientId}:${clientSecret}`);\n const res = await fetch(`${this.baseUrl}/sessions/bridge/by-email`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Basic ${creds}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify(options)\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'REPORT_BY_EMAIL_FAILED', message: err.message || 'Failed to report session by email.' };\n }\n return res.json();\n }\n\n // RP-initiated logout. Ends a Kiauth session the RP owns when the user logs out\n // on the RP's own site, so the Kiauth app reflects it as revoked. Identify the\n // session by accessToken (native SSO), sessionId, or externalSessionId (bridged).\n // Requires clientSecret → must run on the developer's backend, never the browser.\n async endSession(\n clientId: string,\n clientSecret: string,\n opts: { accessToken?: string; sessionId?: string; externalSessionId?: string }\n ): Promise<{ success: boolean; sessionId: string }> {\n const creds = btoa(`${clientId}:${clientSecret}`);\n const res = await fetch(`${this.baseUrl}/sessions/bridge/end`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Basic ${creds}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify(opts)\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw { code: err.code || 'END_SESSION_FAILED', message: err.message || 'Failed to end session.' };\n }\n return res.json();\n }\n}\n\n","export class KiauthWebsocket {\n private ws: WebSocket | null = null;\n private pingIntervalId: any = null;\n private reconnectTimeoutId: any = null;\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 5;\n private isIntentionalDisconnect = false;\n\n constructor(private serverUrl: string) {}\n\n connect(\n channelId: string,\n onAuthComplete: (data: { code: string; user: any }) => void,\n onError: (error: { code: string; message: string }) => void\n ): void {\n this.isIntentionalDisconnect = false;\n \n // Parse HTTP url to WS url using URL object to extract correct host\n const urlObj = new URL(this.serverUrl);\n const wsProtocol = urlObj.protocol.startsWith('https') ? 'wss' : 'ws';\n const wsUrl = `${wsProtocol}://${urlObj.host}/socket.io/?EIO=4&transport=websocket`;\n\n try {\n this.ws = new WebSocket(wsUrl);\n } catch (err) {\n onError({ code: 'WEBSOCKET_ERROR', message: 'Failed to initialize WebSocket client.' });\n return;\n }\n\n this.ws.onopen = () => {\n this.reconnectAttempts = 0;\n };\n\n this.ws.onmessage = (event) => {\n const data = event.data;\n if (typeof data !== 'string') return;\n\n // Handle Engine.io packet types:\n // 0: Open (handshake JSON)\n // 2: Ping\n // 3: Pong\n // 4: Message\n // 40: Socket.io Connect\n // 42: Socket.io Event message\n if (data.startsWith('0')) {\n try {\n const handshake = JSON.parse(data.substring(1));\n const pingInterval = handshake.pingInterval || 25000;\n \n // Start client-initiated ping (Engine.io v4)\n this.startPinging(pingInterval);\n\n // Join channel in default namespace\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n // First send namespace connect (not strictly required but standard in socket.io client)\n this.ws.send('40');\n // Join our specific QR channel\n this.ws.send(`42[\"join_channel\",\"${channelId}\"]`);\n }\n } catch (e) {\n // Handshake parse failed\n }\n } else if (data.startsWith('42')) {\n try {\n const payload = JSON.parse(data.substring(2));\n if (Array.isArray(payload)) {\n const [eventName, eventData] = payload;\n if (eventName === 'auth_complete' && eventData) {\n this.disconnect();\n onAuthComplete(eventData);\n }\n }\n } catch (e) {\n // Message parsing failed\n }\n }\n };\n\n this.ws.onclose = (event) => {\n this.stopPinging();\n if (!this.isIntentionalDisconnect) {\n this.attemptReconnect(channelId, onAuthComplete, onError);\n }\n };\n\n this.ws.onerror = (err) => {\n // Socket error\n };\n }\n\n private startPinging(interval: number): void {\n this.stopPinging();\n this.pingIntervalId = setInterval(() => {\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n this.ws.send('2'); // Ping packet type in Engine.io\n }\n }, interval);\n }\n\n private stopPinging(): void {\n if (this.pingIntervalId) {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = null;\n }\n }\n\n private attemptReconnect(\n channelId: string,\n onAuthComplete: (data: { code: string; user: any }) => void,\n onError: (error: { code: string; message: string }) => void\n ): void {\n if (this.reconnectAttempts >= this.maxReconnectAttempts) {\n onError({ code: 'WEBSOCKET_DISCONNECTED', message: 'WebSocket connection lost permanently.' });\n return;\n }\n\n this.reconnectAttempts++;\n const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 10000);\n\n this.reconnectTimeoutId = setTimeout(() => {\n this.connect(channelId, onAuthComplete, onError);\n }, delay);\n }\n\n disconnect(): void {\n this.isIntentionalDisconnect = true;\n this.stopPinging();\n if (this.reconnectTimeoutId) {\n clearTimeout(this.reconnectTimeoutId);\n this.reconnectTimeoutId = null;\n }\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n}\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import qrcode from 'qrcode-generator';\n\nexport class QrModal {\n private dialog: HTMLDialogElement | null = null;\n private timerInterval: any = null;\n\n show(\n sessionId: string,\n qrData: string,\n expiresIn: number, // in seconds\n onRefresh: () => void,\n onCancel: () => void\n ): void {\n this.close();\n\n // 1. Create dialog element\n this.dialog = document.createElement('dialog');\n this.dialog.className = 'kiauth-dialog';\n this.dialog.setAttribute('closedby', 'any');\n this.dialog.setAttribute('aria-labelledby', 'kiauth-dialog-title');\n\n // 2. Generate QR code image source using qrcode-generator\n let qrImgHtml = '';\n try {\n const qr = qrcode(0, 'M');\n qr.addData(qrData);\n qr.make();\n qrImgHtml = qr.createImgTag(5, 0); // cellSize=5, margin=0\n } catch (e) {\n qrImgHtml = '<div style=\"color:red;padding:20px;\">Failed to render QR code</div>';\n }\n\n // 3. Setup deep link for mobile devices\n const deepLink = `https://www.kiauth.com/auth?sid=${sessionId}`;\n\n this.dialog.innerHTML = `\n <div class=\"kiauth-modal-content\">\n <div class=\"kiauth-header\">\n <h2 id=\"kiauth-dialog-title\" class=\"kiauth-title\">Login with <span>Kiauth</span></h2>\n <button class=\"kiauth-close-btn\" type=\"button\" aria-label=\"Close dialog\">&times;</button>\n </div>\n\n <div class=\"kiauth-qr-container\">\n <div class=\"kiauth-qr-img-wrapper\">${qrImgHtml}</div>\n <div class=\"kiauth-qr-expired\">\n <span style=\"font-weight: 600; font-size: 16px; margin-bottom: 6px; color:#ff4f4f;\">Session Expired</span>\n <span style=\"font-size: 12px; opacity: 0.8; margin-bottom: 12px; line-height: 1.4;\">For security, QR codes expire.</span>\n <button class=\"kiauth-btn-refresh\" type=\"button\">Refresh Code</button>\n </div>\n </div>\n\n <div class=\"kiauth-instructions\">\n Scan this QR code with the <strong>Kiauth mobile app</strong> to log in securely.\n </div>\n\n <div class=\"kiauth-timer\">\n Code expires in <span class=\"kiauth-countdown-val\">05:00</span>\n </div>\n\n <div class=\"kiauth-divider\"></div>\n\n <div class=\"kiauth-mobile-direct\">\n <a href=\"${deepLink}\" class=\"kiauth-btn-direct\">Open on mobile instead</a>\n </div>\n </div>\n `;\n\n // Apply classes to the generated img element\n const imgEl = this.dialog.querySelector('img');\n if (imgEl) {\n imgEl.className = 'kiauth-qr-img';\n imgEl.alt = 'Kiauth QR Code';\n }\n\n document.body.appendChild(this.dialog);\n this.dialog.showModal();\n\n // 4. Event Listener bindings\n const closeBtn = this.dialog.querySelector('.kiauth-close-btn');\n closeBtn?.addEventListener('click', () => {\n this.close();\n onCancel();\n });\n\n const refreshBtn = this.dialog.querySelector('.kiauth-btn-refresh');\n refreshBtn?.addEventListener('click', () => {\n this.close();\n onRefresh();\n });\n\n this.dialog.addEventListener('cancel', () => {\n this.close();\n onCancel();\n });\n\n // 5. Light-dismiss fallback for unsupported browsers\n if (!('closedBy' in HTMLDialogElement.prototype)) {\n this.dialog.addEventListener('click', (event) => {\n if (!this.dialog || event.target !== this.dialog) return;\n\n const rect = this.dialog.getBoundingClientRect();\n const isDialogContent = (\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width\n );\n\n if (!isDialogContent) {\n this.close();\n onCancel();\n }\n });\n }\n\n // 6. Countdown Timer Logic\n let secondsLeft = expiresIn;\n const timerValEl = this.dialog.querySelector('.kiauth-countdown-val') as HTMLSpanElement;\n const expiredOverlayEl = this.dialog.querySelector('.kiauth-qr-expired') as HTMLDivElement;\n\n const updateTimer = () => {\n if (secondsLeft <= 0) {\n clearInterval(this.timerInterval);\n if (timerValEl) timerValEl.textContent = 'Expired';\n if (expiredOverlayEl) expiredOverlayEl.classList.add('active');\n return;\n }\n\n const mins = Math.floor(secondsLeft / 60);\n const secs = secondsLeft % 60;\n if (timerValEl) {\n timerValEl.textContent = `${String(mins).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;\n }\n secondsLeft--;\n };\n\n updateTimer();\n this.timerInterval = setInterval(updateTimer, 1000);\n }\n\n close(): void {\n if (this.timerInterval) {\n clearInterval(this.timerInterval);\n this.timerInterval = null;\n }\n if (this.dialog) {\n try {\n if (this.dialog.hasAttribute('open')) {\n this.dialog.close();\n }\n } catch (e) {\n // ignore errors if already closed\n }\n this.dialog.remove();\n this.dialog = null;\n }\n }\n}\n","/** Escapes user-supplied text before interpolating into innerHTML (SDK-02 / XSS). */\nfunction escapeHtml(value: string): string {\n return String(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n}\n\nexport class OtpFallback {\n private container: HTMLElement;\n\n constructor(\n container: HTMLElement,\n private callbacks: {\n onSuccess: (user: any) => void;\n onError: (error: { code: string; message: string }) => void;\n onCancel?: () => void;\n onOtpSend?: (phone: string) => Promise<string | { transactionId: string }>;\n onOtpVerify?: (phone: string, otp: string, transactionId?: string) => Promise<any>;\n },\n private apiBaseUrl: string\n ) {\n this.container = container;\n }\n\n show(): void {\n this.renderPhoneForm();\n }\n\n private renderPhoneForm(): void {\n this.container.innerHTML = `\n <div class=\"kiauth-fallback-container\">\n <div class=\"kiauth-header\">\n <h2 class=\"kiauth-title\">OTP Fallback</h2>\n <button class=\"kiauth-close-btn\" type=\"button\" aria-label=\"Close dialog\">&times;</button>\n </div>\n \n <p style=\"font-size: 14px; opacity: 0.8; margin-bottom: 20px; text-align: center; line-height: 1.4;\">\n Kiauth QR login is offline. Log in with your verified phone number instead.\n </p>\n\n <div class=\"kiauth-input-group\">\n <label class=\"kiauth-input-label\">Phone Number</label>\n <input type=\"tel\" class=\"kiauth-input kiauth-phone-input\" placeholder=\"e.g. +91 99999 99999\" value=\"+91 \">\n </div>\n\n <div class=\"kiauth-error-message\" style=\"color: #ff4f4f; font-size: 13px; margin-bottom: 12px; display: none; text-align: center;\"></div>\n\n <button class=\"kiauth-btn-direct kiauth-btn-send-otp\" type=\"button\" style=\"width: 100%;\">\n Send OTP\n </button>\n </div>\n `;\n\n const closeBtn = this.container.querySelector('.kiauth-close-btn');\n closeBtn?.addEventListener('click', () => {\n this.callbacks.onCancel?.();\n });\n\n const phoneInput = this.container.querySelector('.kiauth-phone-input') as HTMLInputElement;\n const sendBtn = this.container.querySelector('.kiauth-btn-send-otp') as HTMLButtonElement;\n const errorEl = this.container.querySelector('.kiauth-error-message') as HTMLDivElement;\n\n // Focus phone input field\n setTimeout(() => phoneInput.focus(), 100);\n\n sendBtn.addEventListener('click', async () => {\n const phone = phoneInput.value.trim();\n if (!phone || phone === '+91' || phone.length < 8) {\n errorEl.textContent = 'Please enter a valid phone number.';\n errorEl.style.display = 'block';\n return;\n }\n\n sendBtn.disabled = true;\n sendBtn.innerHTML = '<span class=\"kiauth-spinner\"></span>';\n errorEl.style.display = 'none';\n\n try {\n let transactionId = '';\n if (this.callbacks.onOtpSend) {\n const res = await this.callbacks.onOtpSend(phone);\n transactionId = typeof res === 'string' ? res : res?.transactionId || '';\n } else {\n // Call backend identity service\n const res = await fetch(`${this.apiBaseUrl}/identity/register/phone`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({ phoneNumber: phone })\n });\n const data = await res.json();\n if (!res.ok) {\n throw new Error(data.message || 'Failed to send OTP.');\n }\n transactionId = data.userId;\n }\n\n this.renderOtpForm(phone, transactionId);\n } catch (err: any) {\n sendBtn.disabled = false;\n sendBtn.textContent = 'Send OTP';\n errorEl.textContent = err.message || 'Error sending OTP.';\n errorEl.style.display = 'block';\n }\n });\n }\n\n private renderOtpForm(phone: string, transactionId: string): void {\n this.container.innerHTML = `\n <div class=\"kiauth-fallback-container\">\n <div class=\"kiauth-header\">\n <h2 class=\"kiauth-title\">Enter OTP</h2>\n <button class=\"kiauth-close-btn\" type=\"button\" aria-label=\"Close dialog\">&times;</button>\n </div>\n\n <p style=\"font-size: 14px; opacity: 0.8; margin-bottom: 20px; text-align: center;\">\n An OTP has been sent to <strong>${escapeHtml(phone)}</strong>.\n </p>\n\n <div class=\"kiauth-otp-inputs\">\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"0\">\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"1\" disabled>\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"2\" disabled>\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"3\" disabled>\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"4\" disabled>\n <input type=\"text\" pattern=\"[0-9]*\" inputmode=\"numeric\" maxlength=\"1\" class=\"kiauth-otp-box\" data-index=\"5\" disabled>\n </div>\n\n <div class=\"kiauth-error-message\" style=\"color: #ff4f4f; font-size: 13px; margin-bottom: 12px; display: none; text-align: center;\"></div>\n\n <button class=\"kiauth-btn-direct kiauth-btn-verify-otp\" type=\"button\" style=\"width: 100%;\" disabled>\n Verify\n </button>\n\n <button class=\"kiauth-btn-refresh\" type=\"button\" style=\"background: transparent; color: rgba(255, 255, 255, 0.5); font-size: 13px; width: 100%; margin-top: 12px;\">\n ← Back to Phone\n </button>\n </div>\n `;\n\n const closeBtn = this.container.querySelector('.kiauth-close-btn');\n closeBtn?.addEventListener('click', () => {\n this.callbacks.onCancel?.();\n });\n\n const backBtn = this.container.querySelector('.kiauth-btn-refresh');\n backBtn?.addEventListener('click', () => {\n this.renderPhoneForm();\n });\n\n const otpBoxes = this.container.querySelectorAll('.kiauth-otp-box') as NodeListOf<HTMLInputElement>;\n const verifyBtn = this.container.querySelector('.kiauth-btn-verify-otp') as HTMLButtonElement;\n const errorEl = this.container.querySelector('.kiauth-error-message') as HTMLDivElement;\n\n // Auto-focus first digit\n setTimeout(() => otpBoxes[0].focus(), 100);\n\n const getOtpValue = () => Array.from(otpBoxes).map(b => b.value).join('');\n\n const otpContainer = this.container.querySelector('.kiauth-otp-inputs');\n otpContainer?.addEventListener('paste', (e: any) => {\n e.preventDefault();\n const pastedData = e.clipboardData?.getData('text') || '';\n const digits = pastedData.replace(/\\D/g, '').slice(0, 6);\n if (digits.length > 0) {\n otpBoxes.forEach((box, i) => {\n if (digits[i]) {\n box.value = digits[i];\n box.removeAttribute('disabled');\n if (i < 5) {\n otpBoxes[i + 1].removeAttribute('disabled');\n }\n }\n });\n\n const focusIndex = Math.min(digits.length, 5);\n otpBoxes[focusIndex].focus();\n\n const otp = getOtpValue();\n if (otp.length === 6) {\n verifyBtn.removeAttribute('disabled');\n verifyBtn.click();\n }\n }\n });\n\n otpBoxes.forEach((box, idx) => {\n box.addEventListener('input', () => {\n const val = box.value;\n if (!/^[0-9]$/.test(val)) {\n box.value = '';\n return;\n }\n\n if (idx < 5) {\n const nextBox = otpBoxes[idx + 1];\n nextBox.removeAttribute('disabled');\n nextBox.focus();\n }\n\n const otp = getOtpValue();\n if (otp.length === 6) {\n verifyBtn.removeAttribute('disabled');\n }\n });\n\n box.addEventListener('keydown', (e) => {\n if (e.key === 'Backspace' && box.value === '') {\n if (idx > 0) {\n const prevBox = otpBoxes[idx - 1];\n prevBox.focus();\n prevBox.value = '';\n verifyBtn.setAttribute('disabled', 'true');\n }\n }\n });\n });\n\n verifyBtn.addEventListener('click', async () => {\n const otp = getOtpValue();\n if (otp.length !== 6) return;\n\n verifyBtn.disabled = true;\n verifyBtn.innerHTML = '<span class=\"kiauth-spinner\"></span>';\n errorEl.style.display = 'none';\n\n try {\n let user: any = null;\n if (this.callbacks.onOtpVerify) {\n user = await this.callbacks.onOtpVerify(phone, otp, transactionId);\n } else {\n // Call backend verify OTP\n const res = await fetch(`${this.apiBaseUrl}/identity/register/verify-otp`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({ userId: transactionId, otp })\n });\n const data = await res.json();\n if (!res.ok) {\n throw new Error(data.message || 'OTP verification failed.');\n }\n\n // Build a mock user object representing the verified identity session\n user = {\n name: 'OTP Verified User',\n email: null,\n kiauth_verified: true,\n userToken: `fallback_token_${transactionId}`,\n verificationExpiry: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString()\n };\n }\n\n this.callbacks.onSuccess(user);\n } catch (err: any) {\n verifyBtn.disabled = false;\n verifyBtn.textContent = 'Verify';\n errorEl.textContent = err.message || 'Invalid OTP. Please try again.';\n errorEl.style.display = 'block';\n }\n });\n }\n}\n","import type { ButtonStyleOptions } from './types';\n\nexport class KiauthButton {\n render(\n selector: string,\n options: ButtonStyleOptions & { onClick: () => void }\n ): void {\n const container = document.querySelector(selector);\n if (!container) {\n console.error(`KiauthSDK: Element with selector \"${selector}\" not found.`);\n return;\n }\n\n const button = document.createElement('button');\n button.type = 'button';\n\n const theme = options.theme || 'purple';\n const size = options.size || 'medium';\n button.className = `kiauth-login-button kiauth-btn-${theme} kiauth-btn-${size}`;\n\n // White-label overrides (applied as inline styles so they win over the preset\n // theme classes; omitting them keeps the default themed look = backward compatible).\n if (options.color) {\n button.style.background = options.color;\n button.style.borderColor = options.color;\n }\n if (options.textColor) button.style.color = options.textColor;\n if (options.fullWidth) button.style.width = '100%';\n if (options.shape) {\n const radius = options.shape === 'pill' ? '999px' : options.shape === 'square' ? '4px' : '10px';\n button.style.borderRadius = radius;\n }\n\n const text = options.text || 'Login with Kiauth';\n const showLogo = options.logo !== false; // default true\n\n // Premium logo icon (lock / identity shield). Suppressed when logo:false.\n const logoSvg = showLogo\n ? `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display:inline-block; vertical-align:middle;\">\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\n </svg>`\n : '';\n\n button.innerHTML = `${logoSvg}<span style=\"${showLogo ? 'margin-left: 8px;' : ''}\">${text}</span>`;\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n options.onClick();\n });\n\n container.innerHTML = '';\n container.appendChild(button);\n }\n}\n","export const CSS_STYLES = `\n @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap');\n\n :root {\n --kiauth-purple: #534ab7;\n --kiauth-purple-hover: #423a9c;\n --kiauth-bg-dark: #0f0c1b;\n --kiauth-border-dark: rgba(255, 255, 255, 0.1);\n --kiauth-glass: rgba(15, 12, 27, 0.7);\n --kiauth-glow: rgba(83, 74, 183, 0.3);\n }\n\n .kiauth-dialog {\n border: none;\n border-radius: 20px;\n padding: 0;\n background: var(--kiauth-bg-dark);\n box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5), 0 0 0 1px var(--kiauth-border-dark), 0 0 30px var(--kiauth-glow);\n max-width: 420px;\n width: 90%;\n color: #ffffff;\n font-family: 'Outfit', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n overflow: hidden;\n outline: none;\n opacity: 0;\n transform: scale(0.9);\n transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1), transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n .kiauth-dialog[open] {\n opacity: 1;\n transform: scale(1);\n }\n\n .kiauth-dialog::backdrop {\n background: rgba(10, 8, 20, 0.75);\n backdrop-filter: blur(12px);\n opacity: 0;\n transition: opacity 0.3s ease;\n }\n\n .kiauth-dialog[open]::backdrop {\n opacity: 1;\n }\n\n .kiauth-modal-content {\n padding: 32px 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n }\n\n .kiauth-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n margin-bottom: 24px;\n }\n\n .kiauth-title {\n font-size: 22px;\n font-weight: 600;\n color: #ffffff;\n margin: 0;\n letter-spacing: -0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .kiauth-title span {\n color: var(--kiauth-purple);\n font-weight: 700;\n }\n\n .kiauth-close-btn {\n background: transparent;\n border: none;\n color: rgba(255, 255, 255, 0.5);\n font-size: 24px;\n cursor: pointer;\n line-height: 1;\n padding: 4px;\n transition: color 0.2s;\n }\n\n .kiauth-close-btn:hover {\n color: #ffffff;\n }\n\n .kiauth-qr-container {\n background: #ffffff;\n padding: 16px;\n border-radius: 16px;\n margin-bottom: 20px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3);\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 220px;\n height: 220px;\n }\n\n .kiauth-qr-img {\n width: 200px;\n height: 200px;\n display: block;\n }\n\n .kiauth-qr-expired {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(15, 12, 27, 0.95);\n backdrop-filter: blur(4px);\n border-radius: 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #ffffff;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s;\n padding: 16px;\n }\n\n .kiauth-qr-expired.active {\n opacity: 1;\n pointer-events: auto;\n }\n\n .kiauth-btn-refresh {\n background: var(--kiauth-purple);\n color: #ffffff;\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n cursor: pointer;\n margin-top: 12px;\n font-family: inherit;\n transition: background 0.2s;\n }\n\n .kiauth-btn-refresh:hover {\n background: var(--kiauth-purple-hover);\n }\n\n .kiauth-instructions {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n margin-bottom: 24px;\n line-height: 1.5;\n }\n\n .kiauth-timer {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.4);\n margin-bottom: 20px;\n }\n\n .kiauth-timer span {\n color: var(--kiauth-purple);\n font-weight: 600;\n }\n\n .kiauth-divider {\n width: 100%;\n height: 1px;\n background: var(--kiauth-border-dark);\n margin: 20px 0;\n }\n\n .kiauth-mobile-direct {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n }\n\n .kiauth-btn-direct {\n background: var(--kiauth-purple);\n color: #ffffff;\n border: none;\n padding: 14px;\n border-radius: 12px;\n font-size: 16px;\n font-weight: 600;\n cursor: pointer;\n font-family: inherit;\n text-decoration: none;\n display: inline-block;\n transition: background 0.2s, transform 0.1s;\n box-shadow: 0 4px 12px var(--kiauth-glow);\n }\n\n .kiauth-btn-direct:hover {\n background: var(--kiauth-purple-hover);\n }\n\n .kiauth-btn-direct:active {\n transform: scale(0.98);\n }\n\n /* Button Renderers */\n .kiauth-login-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-family: 'Outfit', sans-serif;\n font-weight: 600;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n user-select: none;\n }\n\n .kiauth-btn-purple {\n background-color: var(--kiauth-purple);\n color: #ffffff;\n }\n .kiauth-btn-purple:hover {\n background-color: var(--kiauth-purple-hover);\n }\n\n .kiauth-btn-white {\n background-color: #ffffff;\n color: #0f0c1b;\n border-color: rgba(0, 0, 0, 0.1);\n }\n .kiauth-btn-white:hover {\n background-color: #f5f5f7;\n }\n\n .kiauth-btn-dark {\n background-color: #0f0c1b;\n color: #ffffff;\n border-color: var(--kiauth-border-dark);\n }\n .kiauth-btn-dark:hover {\n background-color: #1a1530;\n }\n\n .kiauth-btn-small {\n padding: 8px 16px;\n font-size: 13px;\n }\n .kiauth-btn-medium {\n padding: 12px 24px;\n font-size: 15px;\n }\n .kiauth-btn-large {\n padding: 16px 32px;\n font-size: 17px;\n }\n\n /* Fallback Form */\n .kiauth-fallback-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .kiauth-input-group {\n width: 100%;\n margin-bottom: 16px;\n text-align: left;\n }\n\n .kiauth-input-label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .kiauth-input {\n width: 100%;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--kiauth-border-dark);\n padding: 12px;\n border-radius: 8px;\n color: #ffffff;\n font-family: inherit;\n font-size: 15px;\n box-sizing: border-box;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .kiauth-input:focus {\n outline: none;\n border-color: var(--kiauth-purple);\n box-shadow: 0 0 10px var(--kiauth-glow);\n }\n\n .kiauth-otp-inputs {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n margin: 16px 0;\n width: 100%;\n }\n\n .kiauth-otp-box {\n width: 45px;\n height: 45px;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid var(--kiauth-border-dark);\n border-radius: 8px;\n text-align: center;\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n transition: border-color 0.2s;\n }\n\n .kiauth-otp-box:focus {\n outline: none;\n border-color: var(--kiauth-purple);\n box-shadow: 0 0 10px var(--kiauth-glow);\n }\n\n .kiauth-spinner {\n border: 2px solid rgba(255, 255, 255, 0.1);\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border-left-color: #ffffff;\n animation: spin 0.8s linear infinite;\n display: inline-block;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n`;\n\nexport function injectStyles() {\n const id = 'kiauth-sdk-styles';\n if (document.getElementById(id)) return;\n const style = document.createElement('style');\n style.id = id;\n style.textContent = CSS_STYLES;\n document.head.appendChild(style);\n}\n","/**\n * PKCE (RFC 7636) helpers for public/browser clients, so the SDK never needs a\n * confidential clientSecret in the browser. Uses the Web Crypto API.\n */\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n let str = '';\n for (let i = 0; i < bytes.length; i++) {\n str += String.fromCharCode(bytes[i]);\n }\n return btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/** Cryptographically-random code_verifier (43 chars, base64url of 32 bytes). */\nexport function generateCodeVerifier(): string {\n const arr = new Uint8Array(32);\n crypto.getRandomValues(arr);\n return base64UrlEncode(arr);\n}\n\n/** code_challenge = BASE64URL(SHA256(code_verifier)). */\nexport async function generateCodeChallenge(verifier: string): Promise<string> {\n const data = new TextEncoder().encode(verifier);\n const digest = await crypto.subtle.digest('SHA-256', data);\n return base64UrlEncode(new Uint8Array(digest));\n}\n","import { KiauthConfig, KiauthUser, LoginOptions, ProgrammaticLoginOptions } from './types';\nimport { KiauthApi } from './api';\nimport { KiauthWebsocket } from './Websocket';\nimport { QrModal } from './QrModal';\nimport { OtpFallback } from './Fallback';\nimport { KiauthButton } from './Button';\nimport { injectStyles } from './styles';\nimport { generateCodeVerifier, generateCodeChallenge } from './pkce';\n\nexport class KiauthSDK {\n private api: KiauthApi;\n private socket: KiauthWebsocket;\n private modal: QrModal;\n private buttonRenderer: KiauthButton;\n \n private isFallbackMode = false;\n private healthCheckIntervalId: any = null;\n private pollIntervalId: any = null;\n private completed = false;\n\n constructor(private config: KiauthConfig) {\n if (typeof window !== 'undefined' && config.clientSecret) {\n console.warn(\n '[Kiauth] CRITICAL SECURITY WARNING: clientSecret is configured in the browser environment. This leaks your clientSecret to all visitors. Omit clientSecret and use the default PKCE flow in the browser.'\n );\n }\n\n this.api = new KiauthApi(config);\n this.socket = new KiauthWebsocket(this.api.getBaseUrl());\n this.modal = new QrModal();\n this.buttonRenderer = new KiauthButton();\n\n // Inject the premium styles automatically into the head\n if (typeof document !== 'undefined') {\n injectStyles();\n }\n\n // Start background health checking to determine when to fallback silently\n this.startHealthCheck();\n }\n\n private startHealthCheck(): void {\n const runCheck = async () => {\n const isHealthy = await this.api.healthCheck();\n this.isFallbackMode = !isHealthy;\n };\n\n runCheck();\n this.healthCheckIntervalId = setInterval(runCheck, 30000); // Check every 30 seconds\n }\n\n renderButton(selector: string, options: LoginOptions): void {\n this.buttonRenderer.render(selector, {\n text: options.text,\n theme: options.theme,\n size: options.size,\n color: options.color,\n textColor: options.textColor,\n shape: options.shape,\n fullWidth: options.fullWidth,\n logo: options.logo,\n onClick: () => {\n this.startLogin({\n onSuccess: options.onSuccess,\n onError: options.onError,\n onCancel: options.onCancel\n });\n }\n });\n }\n\n async startLogin(options: ProgrammaticLoginOptions & { onCancel?: () => void }): Promise<void> {\n // Don't trust a stale background health result (e.g. one slow/cold-start\n // check). Re-verify with a longer timeout before deciding to fall back, so a\n // backend that's just waking up still serves the real Kiauth flow.\n if (this.isFallbackMode) {\n const healthyNow = await this.api.healthCheck(15000);\n this.isFallbackMode = !healthyNow;\n if (!healthyNow) {\n this.triggerOtpFallback(options);\n return;\n }\n }\n\n try {\n this.completed = false;\n this.stopPolling();\n\n // 0. PKCE for public (browser) clients — the secure default. We only fall\n // back to a confidential clientSecret if one was explicitly configured\n // (discouraged in the browser).\n const usePkce = !this.config.clientSecret;\n let codeVerifier: string | undefined;\n let codeChallenge: string | undefined;\n if (usePkce) {\n codeVerifier = generateCodeVerifier();\n codeChallenge = await generateCodeChallenge(codeVerifier);\n }\n\n // 1. Initiate QR session on the backend\n const session = await this.api.initiateSession(\n this.config.clientId,\n this.config.scopes,\n this.config.redirectUri,\n codeChallenge\n );\n\n const isMobile = typeof navigator !== 'undefined' && \n /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);\n\n // 2. Open QR code modal\n this.modal.show(\n session.sessionId,\n session.qrData,\n session.expiresIn,\n // On Refresh click\n () => {\n this.modal.close();\n this.startLogin(options);\n },\n // On Cancel click\n () => {\n this.socket.disconnect();\n this.stopPolling();\n options.onCancel?.();\n }\n );\n\n // 3. If mobile, attempt auto deep link redirect\n if (isMobile) {\n window.location.href = `https://www.kiauth.com/auth?sid=${session.sessionId}`;\n }\n\n // Shared completion: exchange the code and fire onSuccess exactly once,\n // whether approval arrived via the WebSocket or via HTTP polling.\n const finish = async (code: string) => {\n if (this.completed) return;\n this.completed = true;\n this.stopPolling();\n this.socket.disconnect();\n this.modal.close();\n try {\n if (!usePkce) {\n console.warn(\n '[Kiauth] Using clientSecret in the browser is insecure. Omit clientSecret to use the default PKCE flow.'\n );\n }\n const tokenResponse = await this.api.exchangeToken(\n code,\n this.config.clientId,\n usePkce ? { codeVerifier } : { clientSecret: this.config.clientSecret }\n );\n options.onSuccess(tokenResponse.user);\n } catch (exchangeErr: any) {\n options.onError({\n code: exchangeErr.code || 'EXCHANGE_FAILED',\n message: exchangeErr.message || 'Failed to complete authentication exchange.'\n });\n }\n };\n\n // 4a. Real-time path: WebSocket auth_complete (fast when it connects).\n this.socket.connect(\n session.channelId,\n (authData) => finish(authData.code),\n () => {\n // Socket loss is non-fatal: the poller below is the reliable path,\n // so we do NOT drop to OTP here.\n }\n );\n\n // 4b. Reliable path: poll session status until APPROVED. This works through\n // proxies / cold networks where the WS event may never arrive (it's the same\n // mechanism the dev portal uses successfully).\n this.startPolling(session.sessionId, session.expiresIn, finish);\n\n } catch (err: any) {\n this.modal.close();\n if (err.code === 'KIAUTH_OFFLINE' || this.isFallbackMode) {\n this.triggerOtpFallback(options);\n } else {\n options.onError({\n code: err.code || 'LOGIN_INITIATE_FAILED',\n message: err.message || 'Login initiation failed.'\n });\n }\n }\n }\n\n // Poll the QR session until it's APPROVED, then complete via the shared finish().\n private startPolling(sessionId: string, expiresInSec: number, finish: (code: string) => void): void {\n this.stopPolling();\n const deadline = Date.now() + (expiresInSec || 300) * 1000;\n let consecutiveErrors = 0;\n this.pollIntervalId = setInterval(async () => {\n if (this.completed || Date.now() > deadline) {\n this.stopPolling();\n return;\n }\n try {\n const { status, authCode } = await this.api.getSessionStatus(sessionId);\n consecutiveErrors = 0;\n if (status === 'APPROVED' && authCode) {\n finish(authCode);\n } else if (status === 'EXPIRED' || status === 'USED') {\n this.stopPolling();\n }\n } catch (err: any) {\n consecutiveErrors++;\n const isExpiredOrNotFound = err && (err.statusCode === 404 || err.statusCode === 410 || err.code === 'SESSION_EXPIRED');\n if (isExpiredOrNotFound || consecutiveErrors >= 5) {\n this.stopPolling();\n }\n }\n }, 3000);\n }\n\n private stopPolling(): void {\n if (this.pollIntervalId) {\n clearInterval(this.pollIntervalId);\n this.pollIntervalId = null;\n }\n }\n\n private triggerOtpFallback(options: ProgrammaticLoginOptions & { onCancel?: () => void }): void {\n // Show empty dialog container to render OTP fallback view inside\n const dialog = document.createElement('dialog');\n dialog.className = 'kiauth-dialog';\n dialog.setAttribute('closedby', 'any');\n dialog.setAttribute('aria-labelledby', 'kiauth-dialog-title');\n document.body.appendChild(dialog);\n dialog.showModal();\n\n const cleanUp = () => {\n dialog.close();\n dialog.remove();\n };\n\n const fallback = new OtpFallback(\n dialog,\n {\n onSuccess: (user) => {\n cleanUp();\n options.onSuccess(user);\n },\n onError: (err) => {\n cleanUp();\n options.onError(err);\n },\n onCancel: () => {\n cleanUp();\n options.onCancel?.();\n }\n },\n this.api.getBaseUrl()\n );\n\n fallback.show();\n }\n\n async verifyToken(token: string): Promise<{ valid: boolean; user?: KiauthUser }> {\n return this.api.verifyToken(token);\n }\n\n async reportSession(options: {\n kiauthUserToken: string;\n externalSessionId: string;\n authMethod:\n | 'EMAIL_PASSWORD'\n | 'GOOGLE_OAUTH'\n | 'FACEBOOK'\n | 'PHONE_OTP'\n | 'APPLE'\n | 'PASSKEY'\n | 'UNKNOWN';\n deviceName?: string;\n deviceType?: 'MOBILE' | 'DESKTOP' | 'TABLET' | 'TV' | 'UNKNOWN';\n ipAddress?: string;\n location?: string;\n userAgent?: string;\n }): Promise<{ bridgedSessionId: string }> {\n if (typeof window !== 'undefined') {\n throw new Error('reportSession cannot be called in the browser environment to prevent client-side exposure of clientSecret. Run this method on your backend server only.');\n }\n if (!this.config.clientSecret) {\n throw new Error('clientSecret is required to call reportSession.');\n }\n return this.api.reportSession(this.config.clientId, this.config.clientSecret, options);\n }\n\n async reportBatchSessions(\n kiauthUserToken: string,\n sessions: Array<{\n externalSessionId: string;\n authMethod: string;\n deviceName?: string;\n deviceType?: string;\n ipAddress?: string;\n location?: string;\n createdAt?: string;\n }>\n ): Promise<{ created: number; skipped: number }> {\n if (typeof window !== 'undefined') {\n throw new Error('reportBatchSessions cannot be called in the browser environment to prevent client-side exposure of clientSecret. Run this method on your backend server only.');\n }\n if (!this.config.clientSecret) {\n throw new Error('clientSecret is required to call reportBatchSessions.');\n }\n return this.api.reportBatchSessions(this.config.clientId, this.config.clientSecret, kiauthUserToken, sessions);\n }\n\n // Email-keyed login reporting (\"claim on first sighting\"). Use when you don't have a\n // kiauthUserToken — e.g. the user signed in with their own email/password/Google and you\n // want it shown in their Kiauth app. Requires a VERIFIED business + clientSecret — call\n // this from your backend, never the browser.\n async reportSessionByEmail(options: {\n email: string;\n externalSessionId: string;\n authMethod:\n | 'EMAIL_PASSWORD'\n | 'GOOGLE_OAUTH'\n | 'FACEBOOK'\n | 'PHONE_OTP'\n | 'APPLE'\n | 'PASSKEY'\n | 'UNKNOWN';\n deviceName?: string;\n deviceLabel?: string;\n deviceType?: 'MOBILE' | 'DESKTOP' | 'TABLET' | 'TV' | 'UNKNOWN';\n ipAddress?: string;\n location?: string;\n userAgent?: string;\n }): Promise<{ accepted: boolean }> {\n if (typeof window !== 'undefined') {\n throw new Error('reportSessionByEmail cannot be called in the browser environment to prevent client-side exposure of clientSecret. Run this method on your backend server only.');\n }\n if (!this.config.clientSecret) {\n throw new Error('clientSecret is required to call reportSessionByEmail (run this on your backend).');\n }\n return this.api.reportSessionByEmail(this.config.clientId, this.config.clientSecret, options);\n }\n\n // RP-initiated logout. Call this from your backend when the user logs out of\n // your site so the Kiauth app shows the session as revoked. Requires\n // clientSecret — never expose this in the browser.\n async logout(opts: { accessToken?: string; sessionId?: string; externalSessionId?: string }): Promise<{ success: boolean; sessionId: string }> {\n if (typeof window !== 'undefined') {\n throw new Error('logout cannot be called in the browser environment to prevent client-side exposure of clientSecret. Run this method on your backend server only.');\n }\n if (!this.config.clientSecret) {\n throw new Error('clientSecret is required to call logout (run this on your backend).');\n }\n return this.api.endSession(this.config.clientId, this.config.clientSecret, opts);\n }\n\n destroy(): void {\n if (this.healthCheckIntervalId) {\n clearInterval(this.healthCheckIntervalId);\n this.healthCheckIntervalId = null;\n }\n this.socket.disconnect();\n this.modal.close();\n }\n}\n\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
@@ -0,0 +1,6 @@
1
+ import type { ButtonStyleOptions } from './types';
2
+ export declare class KiauthButton {
3
+ render(selector: string, options: ButtonStyleOptions & {
4
+ onClick: () => void;
5
+ }): void;
6
+ }
@@ -0,0 +1,20 @@
1
+ export declare class OtpFallback {
2
+ private callbacks;
3
+ private apiBaseUrl;
4
+ private container;
5
+ constructor(container: HTMLElement, callbacks: {
6
+ onSuccess: (user: any) => void;
7
+ onError: (error: {
8
+ code: string;
9
+ message: string;
10
+ }) => void;
11
+ onCancel?: () => void;
12
+ onOtpSend?: (phone: string) => Promise<string | {
13
+ transactionId: string;
14
+ }>;
15
+ onOtpVerify?: (phone: string, otp: string, transactionId?: string) => Promise<any>;
16
+ }, apiBaseUrl: string);
17
+ show(): void;
18
+ private renderPhoneForm;
19
+ private renderOtpForm;
20
+ }