{"version":3,"sources":["../src/client.ts"],"names":["totalChunks","firstChunkEnd","firstChunkHeaders","firstChunk","firstPayload","response","uploadId","chunks","CONCURRENCY","completedCount","uploadedBytes","lastResponse","finalResponse","failed","isUploadComplete","uploadChunk","queue","workers","workerCount"],"mappings":"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","file":"client.mjs","sourcesContent":["import { fetch, FormData, File, Agent, type RequestInit } from 'undici';\nimport { Models } from './models';\nimport { InputFile } from './inputFile';\nimport JSONbigModule from 'json-bigint';\nconst JSONbigParser = JSONbigModule({ storeAsString: false });\nconst JSONbigSerializer = JSONbigModule({ useNativeBigInt: true });\n\nconst MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\nconst MIN_SAFE = BigInt(Number.MIN_SAFE_INTEGER);\nconst MAX_INT64 = BigInt('9223372036854775807');\nconst MIN_INT64 = BigInt('-9223372036854775808');\n\nfunction isBigNumber(value: any): boolean {\n    return (\n        value !== null &&\n        typeof value === 'object' &&\n        value._isBigNumber === true &&\n        typeof value.isInteger === 'function' &&\n        typeof value.toFixed === 'function' &&\n        typeof value.toNumber === 'function'\n    );\n}\n\nfunction reviver(_key: string, value: any): any {\n    if (isBigNumber(value)) {\n        if (value.isInteger()) {\n            const str = value.toFixed();\n            const bi = BigInt(str);\n            if (bi >= MIN_SAFE && bi <= MAX_SAFE) {\n                return Number(str);\n            }\n            if (bi >= MIN_INT64 && bi <= MAX_INT64) {\n                return bi;\n            }\n            return value.toNumber();\n        }\n        return value.toNumber();\n    }\n    return value;\n}\n\nconst JSONbig = {\n    parse: (text: string) => JSONbigParser.parse(text, reviver),\n    stringify: JSONbigSerializer.stringify,\n};\n\ntype Payload = {\n    [key: string]: any;\n};\n\ntype UploadProgress = {\n    $id: string;\n    progress: number;\n    sizeUploaded: number;\n    chunksTotal: number;\n    chunksUploaded: number;\n};\n\ntype Headers = {\n    [key: string]: string;\n};\n\nclass AppwriteException extends Error {\n    code: number;\n    response: string;\n    type: string;\n    constructor(\n        message: string,\n        code: number = 0,\n        type: string = '',\n        response: string = '',\n    ) {\n        super(message);\n        this.name = 'AppwriteException';\n        this.message = message;\n        this.code = code;\n        this.type = type;\n        this.response = response;\n    }\n}\n\nfunction getUserAgent() {\n    let ua = 'AppwriteNodeJSSDK/29.0.0';\n\n    // `process` is a global in Node.js, but not fully available in all runtimes.\n    const platform: string[] = [];\n    if (typeof process !== 'undefined') {\n        if (typeof process.platform === 'string')\n            platform.push(process.platform);\n        if (typeof process.arch === 'string') platform.push(process.arch);\n    }\n    if (platform.length > 0) {\n        ua += ` (${platform.join('; ')})`;\n    }\n\n    // `navigator.userAgent` is available in Node.js 21 and later.\n    // It's also part of the WinterCG spec, so many edge runtimes provide it.\n    // https://common-min-api.proposal.wintercg.org/#requirements-for-navigatoruseragent\n    if (\n        typeof navigator !== 'undefined' &&\n        typeof navigator.userAgent === 'string'\n    ) {\n        ua += ` ${navigator.userAgent}`;\n\n        // @ts-expect-error EdgeRuntime is injected by edge runtimes only.\n    } else if (typeof globalThis.EdgeRuntime === 'string') {\n        ua += ` EdgeRuntime`;\n\n        // Older Node.js versions don't have `navigator.userAgent`, so we have to use `process.version`.\n    } else if (\n        typeof process !== 'undefined' &&\n        typeof process.version === 'string'\n    ) {\n        ua += ` Node.js/${process.version}`;\n    }\n\n    return ua;\n}\n\nclass Client {\n    static CHUNK_SIZE = 1024 * 1024 * 5;\n    private selfSignedAgent?: Agent;\n\n    config = {\n        endpoint: 'https://cloud.appwrite.io/v1',\n        selfSigned: false,\n        project: '',\n        key: '',\n        organization: '',\n        jwt: '',\n        bearer: '',\n        locale: '',\n        session: '',\n        forwardeduseragent: '',\n        devkey: '',\n        cookie: '',\n        impersonateuserid: '',\n        impersonateuseremail: '',\n        impersonateuserphone: '',\n    };\n    headers: Headers = {\n        'x-sdk-name': 'Node.js',\n        'x-sdk-platform': 'server',\n        'x-sdk-language': 'nodejs',\n        'x-sdk-version': '29.0.0',\n        'user-agent': getUserAgent(),\n        'X-Appwrite-Response-Format': '2.0.0',\n    };\n\n    /**\n     * Set Endpoint\n     *\n     * Your project endpoint\n     *\n     * @param {string} endpoint\n     *\n     * @returns {this}\n     */\n    setEndpoint(endpoint: string): this {\n        if (!endpoint || typeof endpoint !== 'string') {\n            throw new AppwriteException('Endpoint must be a valid string');\n        }\n\n        if (\n            !endpoint.startsWith('http://') &&\n            !endpoint.startsWith('https://')\n        ) {\n            throw new AppwriteException('Invalid endpoint URL: ' + endpoint);\n        }\n\n        this.config.endpoint = endpoint;\n        return this;\n    }\n\n    /**\n     * Set self-signed\n     *\n     * @param {boolean} selfSigned\n     *\n     * @returns {this}\n     */\n    setSelfSigned(selfSigned: boolean): this {\n        // @ts-expect-error EdgeRuntime is injected by edge runtimes only.\n        if (typeof globalThis.EdgeRuntime !== 'undefined') {\n            console.warn('setSelfSigned is not supported in edge runtimes.');\n        }\n\n        this.config.selfSigned = selfSigned;\n\n        if (!selfSigned && this.selfSignedAgent) {\n            this.selfSignedAgent.destroy();\n            this.selfSignedAgent = undefined;\n        }\n\n        return this;\n    }\n\n    /**\n     * Add header\n     *\n     * @param {string} header\n     * @param {string} value\n     *\n     * @returns {this}\n     */\n    addHeader(header: string, value: string): this {\n        this.headers[header.toLowerCase()] = value;\n\n        return this;\n    }\n\n    /**\n     * Get Headers\n     *\n     * Returns a copy of the current request headers, including any\n     * authentication headers. Handle with care.\n     *\n     * @returns {Headers}\n     */\n    getHeaders(): Headers {\n        return { ...this.headers };\n    }\n\n    /**\n     * Set Project\n     *\n     * Your project ID\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setProject(value: string): this {\n        this.config.project = value;\n        return this;\n    }\n    /**\n     * Set Key\n     *\n     * Your secret API key\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setKey(value: string): this {\n        this.headers['X-Appwrite-Key'] = value;\n        this.config.key = value;\n        return this;\n    }\n    /**\n     * Set Organization\n     *\n     * Your organization ID\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setOrganization(value: string): this {\n        this.headers['X-Appwrite-Organization'] = value;\n        this.config.organization = value;\n        return this;\n    }\n    /**\n     * Set JWT\n     *\n     * Your secret JSON Web Token\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setJWT(value: string): this {\n        this.headers['X-Appwrite-JWT'] = value;\n        this.config.jwt = value;\n        return this;\n    }\n    /**\n     * Set Bearer\n     *\n     * The OAuth access token to authenticate with\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setBearer(value: string): this {\n        this.headers['Authorization'] = `Bearer ${value}`;\n        this.config.bearer = value;\n        return this;\n    }\n    /**\n     * Set Locale\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setLocale(value: string): this {\n        this.headers['X-Appwrite-Locale'] = value;\n        this.config.locale = value;\n        return this;\n    }\n    /**\n     * Set Session\n     *\n     * The user session to authenticate with\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setSession(value: string): this {\n        this.headers['X-Appwrite-Session'] = value;\n        this.config.session = value;\n        return this;\n    }\n    /**\n     * Set ForwardedUserAgent\n     *\n     * The user agent string of the client that made the request\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setForwardedUserAgent(value: string): this {\n        this.headers['X-Forwarded-User-Agent'] = value;\n        this.config.forwardeduseragent = value;\n        return this;\n    }\n    /**\n     * Set DevKey\n     *\n     * Your secret dev API key\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setDevKey(value: string): this {\n        this.headers['X-Appwrite-Dev-Key'] = value;\n        this.config.devkey = value;\n        return this;\n    }\n    /**\n     * Set Cookie\n     *\n     * The user cookie to authenticate with. Used by SDKs that forward an incoming Cookie header in server-side runtimes.\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setCookie(value: string): this {\n        this.headers['Cookie'] = value;\n        this.config.cookie = value;\n        return this;\n    }\n    /**\n     * Set ImpersonateUserId\n     *\n     * Impersonate a user by ID\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setImpersonateUserId(value: string): this {\n        this.headers['X-Appwrite-Impersonate-User-Id'] = value;\n        this.config.impersonateuserid = value;\n        return this;\n    }\n    /**\n     * Set ImpersonateUserEmail\n     *\n     * Impersonate a user by email\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setImpersonateUserEmail(value: string): this {\n        this.headers['X-Appwrite-Impersonate-User-Email'] = value;\n        this.config.impersonateuseremail = value;\n        return this;\n    }\n    /**\n     * Set ImpersonateUserPhone\n     *\n     * Impersonate a user by phone\n     *\n     * @param value string\n     *\n     * @return {this}\n     */\n    setImpersonateUserPhone(value: string): this {\n        this.headers['X-Appwrite-Impersonate-User-Phone'] = value;\n        this.config.impersonateuserphone = value;\n        return this;\n    }\n\n    prepareRequest(\n        method: string,\n        url: URL,\n        headers: Headers = {},\n        params: Payload = {},\n    ): { uri: string; options: RequestInit } {\n        method = method.toUpperCase();\n\n        headers = Object.assign({}, this.headers, headers);\n\n        const options: RequestInit = {\n            method,\n            headers,\n        };\n\n        if (this.config.selfSigned) {\n            if (!this.selfSignedAgent) {\n                this.selfSignedAgent = new Agent({\n                    connect: {\n                        rejectUnauthorized: false,\n                    },\n                });\n            }\n            options.dispatcher = this.selfSignedAgent;\n        }\n\n        if (method === 'GET') {\n            for (const [key, value] of Object.entries(Client.flatten(params))) {\n                url.searchParams.append(key, value);\n            }\n        } else {\n            switch (headers['content-type']) {\n                case 'application/json':\n                    options.body = JSONbig.stringify(params);\n                    break;\n\n                case 'multipart/form-data': {\n                    const formData = new FormData();\n\n                    for (const [key, value] of Object.entries(params)) {\n                        if (value instanceof File) {\n                            formData.append(key, value, value.name);\n                        } else if (Array.isArray(value)) {\n                            for (const nestedValue of value) {\n                                formData.append(`${key}[]`, nestedValue);\n                            }\n                        } else {\n                            formData.append(key, value);\n                        }\n                    }\n\n                    options.body = formData;\n                    delete headers['content-type'];\n                    break;\n                }\n            }\n        }\n\n        return { uri: url.toString(), options };\n    }\n\n    async chunkedUpload(\n        method: string,\n        url: URL,\n        headers: Headers = {},\n        originalPayload: Payload = {},\n        onProgress: (progress: UploadProgress) => void,\n    ) {\n        const [fileParam, file] =\n            Object.entries(originalPayload).find(\n                ([_, value]) =>\n                    value instanceof File || value instanceof InputFile,\n            ) ?? [];\n\n        if (!file || !fileParam) {\n            throw new Error('File not found in payload');\n        }\n\n        if (file instanceof InputFile) {\n            const size = await file.size();\n\n            if (size <= Client.CHUNK_SIZE) {\n                const payload = { ...originalPayload };\n                payload[fileParam] = await file.toFile();\n                return await this.call(method, url, headers, payload);\n            }\n\n            const totalChunks = Math.ceil(size / Client.CHUNK_SIZE);\n\n            // Upload first chunk alone to get the upload ID\n            const firstChunkEnd = Math.min(Client.CHUNK_SIZE, size);\n            const firstChunkHeaders = {\n                ...headers,\n                'content-range': `bytes 0-${firstChunkEnd - 1}/${size}`,\n            };\n            const firstChunk = await file.slice(0, firstChunkEnd);\n            const firstPayload = { ...originalPayload };\n            firstPayload[fileParam] = new File([firstChunk], file.filename);\n\n            const response = await this.call(\n                method,\n                url,\n                firstChunkHeaders,\n                firstPayload,\n            );\n            const uploadId = response?.$id;\n\n            if (onProgress && typeof onProgress === 'function') {\n                onProgress({\n                    $id: uploadId,\n                    progress: Math.round((firstChunkEnd / size) * 100),\n                    sizeUploaded: firstChunkEnd,\n                    chunksTotal: totalChunks,\n                    chunksUploaded: 1,\n                });\n            }\n\n            if (totalChunks === 1) {\n                return response;\n            }\n\n            // Prepare remaining chunks\n            const chunks: { start: number; end: number }[] = [];\n            for (let i = 1; i < totalChunks; i++) {\n                const start = i * Client.CHUNK_SIZE;\n                const end = Math.min(start + Client.CHUNK_SIZE, size);\n                chunks.push({ start, end });\n            }\n\n            // Upload remaining chunks with max concurrency of 8\n            const CONCURRENCY = 8;\n            let completedCount = 1;\n            let uploadedBytes = firstChunkEnd;\n            let lastResponse = response;\n            let finalResponse = null;\n            let failed = false;\n\n            const isUploadComplete = (chunkResponse: any) => {\n                const chunksUploaded = chunkResponse?.chunksUploaded;\n                const chunksTotal = chunkResponse?.chunksTotal ?? totalChunks;\n                return (\n                    typeof chunksUploaded === 'number' &&\n                    typeof chunksTotal === 'number' &&\n                    chunksUploaded >= chunksTotal\n                );\n            };\n\n            const uploadChunk = async (chunk: (typeof chunks)[0]) => {\n                const chunkHeaders = { ...headers };\n                if (uploadId) {\n                    chunkHeaders['x-appwrite-id'] = uploadId;\n                }\n                chunkHeaders['content-range'] =\n                    `bytes ${chunk.start}-${chunk.end - 1}/${size}`;\n\n                const chunkBlob = await file.slice(chunk.start, chunk.end);\n                const chunkPayload = { ...originalPayload };\n                chunkPayload[fileParam] = new File([chunkBlob], file.filename);\n\n                const chunkResponse = await this.call(\n                    method,\n                    url,\n                    chunkHeaders,\n                    chunkPayload,\n                );\n\n                if (failed) {\n                    return chunkResponse;\n                }\n\n                completedCount++;\n                uploadedBytes += chunk.end - chunk.start;\n\n                lastResponse = chunkResponse;\n                if (isUploadComplete(chunkResponse)) {\n                    finalResponse = chunkResponse;\n                }\n\n                if (onProgress && typeof onProgress === 'function') {\n                    onProgress({\n                        $id: uploadId,\n                        progress: Math.round((uploadedBytes / size) * 100),\n                        sizeUploaded: uploadedBytes,\n                        chunksTotal: totalChunks,\n                        chunksUploaded: completedCount,\n                    });\n                }\n\n                return chunkResponse;\n            };\n\n            // Process with limited concurrency using a worker pool\n            const queue = [...chunks];\n            const workers: Promise<void>[] = [];\n            const workerCount = Math.min(CONCURRENCY, queue.length);\n\n            for (let i = 0; i < workerCount; i++) {\n                workers.push(\n                    (async () => {\n                        while (!failed && queue.length > 0) {\n                            const chunk = queue.shift()!;\n                            try {\n                                await uploadChunk(chunk);\n                            } catch (error) {\n                                failed = true;\n                                throw error;\n                            }\n                        }\n                    })(),\n                );\n            }\n\n            await Promise.all(workers);\n\n            return finalResponse ?? lastResponse;\n        }\n\n        if (file.size <= Client.CHUNK_SIZE) {\n            return await this.call(method, url, headers, originalPayload);\n        }\n\n        const totalChunks = Math.ceil(file.size / Client.CHUNK_SIZE);\n\n        // Upload first chunk alone to get the upload ID\n        const firstChunkEnd = Math.min(Client.CHUNK_SIZE, file.size);\n        const firstChunkHeaders = {\n            ...headers,\n            'content-range': `bytes 0-${firstChunkEnd - 1}/${file.size}`,\n        };\n        const firstChunk = file.slice(0, firstChunkEnd);\n        const firstPayload = { ...originalPayload };\n        firstPayload[fileParam] = new File([firstChunk], file.name);\n\n        const response = await this.call(\n            method,\n            url,\n            firstChunkHeaders,\n            firstPayload,\n        );\n        const uploadId = response?.$id;\n\n        if (onProgress && typeof onProgress === 'function') {\n            onProgress({\n                $id: uploadId,\n                progress: Math.round((firstChunkEnd / file.size) * 100),\n                sizeUploaded: firstChunkEnd,\n                chunksTotal: totalChunks,\n                chunksUploaded: 1,\n            });\n        }\n\n        if (totalChunks === 1) {\n            return response;\n        }\n\n        // Prepare remaining chunks\n        const chunks: { start: number; end: number }[] = [];\n        for (let i = 1; i < totalChunks; i++) {\n            const start = i * Client.CHUNK_SIZE;\n            const end = Math.min(start + Client.CHUNK_SIZE, file.size);\n            chunks.push({ start, end });\n        }\n\n        // Upload remaining chunks with max concurrency of 8\n        const CONCURRENCY = 8;\n        let completedCount = 1;\n        let uploadedBytes = firstChunkEnd;\n        let lastResponse = response;\n        let finalResponse = null;\n        let failed = false;\n\n        const isUploadComplete = (chunkResponse: any) => {\n            const chunksUploaded = chunkResponse?.chunksUploaded;\n            const chunksTotal = chunkResponse?.chunksTotal ?? totalChunks;\n            return (\n                typeof chunksUploaded === 'number' &&\n                typeof chunksTotal === 'number' &&\n                chunksUploaded >= chunksTotal\n            );\n        };\n\n        const uploadChunk = async (chunk: (typeof chunks)[0]) => {\n            const chunkHeaders = { ...headers };\n            if (uploadId) {\n                chunkHeaders['x-appwrite-id'] = uploadId;\n            }\n            chunkHeaders['content-range'] =\n                `bytes ${chunk.start}-${chunk.end - 1}/${file.size}`;\n\n            const chunkBlob = file.slice(chunk.start, chunk.end);\n            const chunkPayload = { ...originalPayload };\n            chunkPayload[fileParam] = new File([chunkBlob], file.name);\n\n            const chunkResponse = await this.call(\n                method,\n                url,\n                chunkHeaders,\n                chunkPayload,\n            );\n\n            if (failed) {\n                return chunkResponse;\n            }\n\n            completedCount++;\n            uploadedBytes += chunk.end - chunk.start;\n\n            lastResponse = chunkResponse;\n            if (isUploadComplete(chunkResponse)) {\n                finalResponse = chunkResponse;\n            }\n\n            if (onProgress && typeof onProgress === 'function') {\n                onProgress({\n                    $id: uploadId,\n                    progress: Math.round((uploadedBytes / file.size) * 100),\n                    sizeUploaded: uploadedBytes,\n                    chunksTotal: totalChunks,\n                    chunksUploaded: completedCount,\n                });\n            }\n\n            return chunkResponse;\n        };\n\n        // Process with limited concurrency using a worker pool\n        const queue = [...chunks];\n        const workers: Promise<void>[] = [];\n        const workerCount = Math.min(CONCURRENCY, queue.length);\n\n        for (let i = 0; i < workerCount; i++) {\n            workers.push(\n                (async () => {\n                    while (!failed && queue.length > 0) {\n                        const chunk = queue.shift()!;\n                        try {\n                            await uploadChunk(chunk);\n                        } catch (error) {\n                            failed = true;\n                            throw error;\n                        }\n                    }\n                })(),\n            );\n        }\n\n        await Promise.all(workers);\n\n        return finalResponse ?? lastResponse;\n    }\n\n    async ping(): Promise<unknown> {\n        return this.call('GET', new URL(this.config.endpoint + '/ping'), {\n            'X-Appwrite-Project': this.config.project,\n            accept: 'application/json',\n        });\n    }\n\n    async redirect(\n        method: string,\n        url: URL,\n        headers: Headers = {},\n        params: Payload = {},\n    ): Promise<string> {\n        const { uri, options } = this.prepareRequest(\n            method,\n            url,\n            headers,\n            params,\n        );\n\n        const response = await fetch(uri, {\n            ...options,\n            redirect: 'manual',\n        });\n\n        if (response.status !== 301 && response.status !== 302) {\n            throw new AppwriteException('Invalid redirect', response.status);\n        }\n\n        return response.headers.get('location') || '';\n    }\n\n    async call(\n        method: string,\n        url: URL,\n        headers: Headers = {},\n        params: Payload = {},\n        responseType = 'json',\n    ): Promise<any> {\n        const { uri, options } = this.prepareRequest(\n            method,\n            url,\n            headers,\n            params,\n        );\n\n        let data: any = null;\n\n        const response = await fetch(uri, options);\n\n        const warnings = response.headers.get('x-appwrite-warning');\n        if (warnings) {\n            warnings\n                .split(';')\n                .forEach((warning: string) =>\n                    console.warn('Warning: ' + warning),\n                );\n        }\n\n        if (\n            response.headers.get('content-type')?.includes('application/json')\n        ) {\n            data = JSONbig.parse(await response.text());\n        } else if (responseType === 'arrayBuffer') {\n            data = await response.arrayBuffer();\n        } else {\n            data = {\n                message: await response.text(),\n            };\n        }\n\n        if (400 <= response.status) {\n            let responseText: string;\n            if (\n                response.headers\n                    .get('content-type')\n                    ?.includes('application/json') ||\n                responseType === 'arrayBuffer'\n            ) {\n                responseText = JSONbig.stringify(data);\n            } else {\n                responseText = data?.message;\n            }\n            throw new AppwriteException(\n                data?.message,\n                response.status,\n                data?.type,\n                responseText,\n            );\n        }\n\n        if (data && typeof data === 'object') {\n            Object.defineProperty(data, 'toString', {\n                value: () => JSONbig.stringify(data),\n                writable: true,\n                enumerable: false,\n                configurable: true,\n            });\n        }\n\n        return data;\n    }\n\n    static flatten(data: Payload, prefix = ''): Payload {\n        let output: Payload = {};\n\n        for (const [key, value] of Object.entries(data)) {\n            const finalKey = prefix ? prefix + '[' + key + ']' : key;\n            if (Array.isArray(value)) {\n                output = { ...output, ...Client.flatten(value, finalKey) };\n            } else {\n                output[finalKey] = value;\n            }\n        }\n\n        return output;\n    }\n}\n\nexport { Client, AppwriteException };\nexport { Query } from './query';\nexport type { Models, Payload, UploadProgress };\nexport type { QueryTypes, QueryTypesList } from './query';\n"]}