vormiaqueryjs
Version:
Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application
1 lines • 12.1 kB
Source Map (JSON)
{"version":3,"file":"createVormiaClient.mjs","sources":["../../../src/client/createVormiaClient.js"],"sourcesContent":["import {\n encryptData,\n encryptWithPublicKey,\n decryptWithPrivateKey,\n} from \"./utils/encryption.js\";\n\n/* global process */\n\n// Helper function to convert headers to HeadersInit\nconst toHeadersInit = (headers) => {\n const result = {};\n if (!headers) return result;\n\n Object.entries(headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n result[key] = value.join(\",\");\n } else if (value !== undefined) {\n result[key] = value;\n }\n });\n\n return result;\n};\n\n// Create a simple HTTP client that matches our VormiaInstance interface\nconst createHttpClient = (baseConfig) => {\n const client = {\n request: async (config) => {\n const fullUrl = config.url\n ? new URL(config.url, config.baseURL || baseConfig.baseURL).toString()\n : \"\";\n const headers = toHeadersInit({\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...baseConfig.headers,\n ...config.headers,\n });\n\n try {\n const response = await fetch(fullUrl, {\n method: config.method || \"GET\",\n headers,\n body: config.data ? JSON.stringify(config.data) : undefined,\n credentials:\n config.withCredentials || baseConfig.withCredentials\n ? \"include\"\n : \"same-origin\",\n });\n\n const responseData = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(\n JSON.stringify({\n message: responseData.message || \"Request failed\",\n status: response.status,\n response: {\n data: responseData,\n status: response.status,\n statusText: response.statusText,\n headers: {},\n },\n })\n );\n }\n\n return {\n data: responseData,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n config,\n };\n } catch (error) {\n let errorData;\n try {\n errorData = JSON.parse(error.message);\n } catch {\n errorData = {\n message: error.message,\n status: 0,\n response: {\n data: { message: error.message },\n status: 0,\n statusText: \"\",\n headers: {},\n },\n };\n }\n\n const errorObj = new Error(errorData.message);\n errorObj.status = errorData.status;\n errorObj.response = errorData.response;\n throw errorObj;\n }\n },\n };\n\n // Add HTTP methods\n const methods = [\"get\", \"delete\", \"head\", \"options\"];\n methods.forEach((method) => {\n client[method] = (url, config = {}) =>\n client.request({ ...config, method: method.toUpperCase(), url });\n });\n\n const methodsWithData = [\"post\", \"put\", \"patch\"];\n methodsWithData.forEach((method) => {\n client[method] = (url, data, config = {}) =>\n client.request({\n ...config,\n method: method.toUpperCase(),\n url,\n data,\n });\n });\n\n return client;\n};\n\nclass VormiaClient {\n constructor(config) {\n this.config = {\n authTokenKey: \"auth_token\",\n withCredentials: false,\n timeout: 30000,\n rsaEncrypt: false,\n publicKey: process.env.VORMIA_PUBLIC_KEY,\n privateKey: process.env.VORMIA_PRIVATE_KEY,\n ...config,\n };\n\n this.http = createHttpClient({\n baseURL: this.config.baseURL,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...this.config.headers,\n },\n withCredentials: this.config.withCredentials,\n timeout: this.config.timeout,\n });\n }\n\n // Simplified interceptor-like functionality\n async handleRequest(config) {\n // Add auth token if available\n const token = this.getAuthToken();\n if (token) {\n config.headers = {\n ...config.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n // Handle encryption if enabled\n if (config.encryptData && this.config.encryptionKey) {\n if (config.data) {\n config.data = {\n encrypted: encryptData(\n JSON.stringify(config.data),\n this.config.encryptionKey\n ),\n };\n }\n if (config.params) {\n config.params = {\n encrypted: encryptData(\n JSON.stringify(config.params),\n this.config.encryptionKey\n ),\n };\n }\n }\n\n return config;\n }\n\n handleUnauthorized() {\n this.removeAuthToken();\n if (this.config.onUnauthenticated) {\n this.config.onUnauthenticated();\n }\n }\n\n getAuthToken() {\n if (typeof window !== \"undefined\") {\n return localStorage.getItem(this.config.authTokenKey);\n }\n return null;\n }\n\n setAuthToken(token) {\n if (typeof window !== \"undefined\") {\n localStorage.setItem(this.config.authTokenKey, token);\n }\n }\n\n removeAuthToken() {\n if (typeof window !== \"undefined\") {\n localStorage.removeItem(this.config.authTokenKey);\n }\n }\n\n async request(config) {\n try {\n const processedConfig = await this.handleRequest({\n ...config,\n headers: {\n ...this.config.headers,\n ...config.headers,\n },\n });\n\n // Encrypt request data if enabled\n let requestData = processedConfig.data;\n if (this.config.rsaEncrypt && requestData) {\n requestData = encryptWithPublicKey(requestData, this.config.publicKey);\n processedConfig.data = { encrypted: requestData };\n }\n\n const response = await this.http.request(processedConfig);\n\n // Decrypt response data if enabled\n let responseData = response.data;\n if (this.config.rsaEncrypt && responseData && responseData.encrypted) {\n responseData = decryptWithPrivateKey(\n responseData.encrypted,\n this.config.privateKey\n );\n response.data = responseData;\n }\n return response;\n } catch (error) {\n if (error.status === 401) {\n this.handleUnauthorized();\n }\n throw error;\n }\n }\n\n get(url, config) {\n return this.request({ ...config, method: \"GET\", url });\n }\n\n post(url, data, config) {\n return this.request({ ...config, method: \"POST\", url, data });\n }\n\n put(url, data, config) {\n return this.request({ ...config, method: \"PUT\", url, data });\n }\n\n patch(url, data, config) {\n return this.request({ ...config, method: \"PATCH\", url, data });\n }\n\n delete(url, config) {\n return this.request({ ...config, method: \"DELETE\", url });\n }\n}\n\n// Create and export the client factory function\nexport function createVormiaClient(config) {\n return new VormiaClient(config);\n}\n\n// Global client instance\nlet globalClient = null;\n\nexport function setGlobalVormiaClient(client) {\n globalClient = client;\n}\n\nexport function getGlobalVormiaClient() {\n if (!globalClient) {\n throw new Error(\n \"Vormia client not initialized. Call createVormiaClient first.\"\n );\n }\n return globalClient;\n}\n\nexport { VormiaClient };\n"],"names":[],"mappings":"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"}