UNPKG

@vectry/react

Version:

React integration for Vectry Analytics. Includes Context, Hooks, and transport for browser-based event tracking.

85 lines (81 loc) 1.96 kB
// src/sdk/Vectry.ts import { defaultConfig, setRuntimeConfig, VectryCore } from "@vectry/js-core"; // src/transport/HttpTransport.ts import axios from "axios"; var HttpTransport = class { constructor(config) { this.client = axios.create({ baseURL: config.baseUrl, timeout: 1e4, headers: { "Content-Type": "application/json", Accept: "application/json" } }); } async request(method, path, payload) { const config = { method, url: path }; if (["GET", "DELETE"].includes(method) && payload) { config.params = payload; } else if (payload) { config.data = payload; } const response = await this.client.request(config); return response.data; } async get(path, payload) { return this.request("GET", path, payload); } async post(path, payload) { return this.request("POST", path, payload); } async put(path, payload) { return this.request("PUT", path, payload); } async patch(path, payload) { return this.request("PATCH", path, payload); } async delete(path, payload) { return this.request("DELETE", path, payload); } }; // src/context/DefaultContextProvider.ts var DefaultContextProvider = async () => { return { veripass_username: "system", app_id: "react-app", session_id: `sess-${Date.now().toString(36)}` }; }; // src/sdk/Vectry.ts var Vectry = class extends VectryCore { constructor(config) { const mergedConfig = { ...defaultConfig, ...config, transport: config.transport ?? new HttpTransport(config), contextProvider: config.contextProvider ?? DefaultContextProvider }; setRuntimeConfig(mergedConfig); super({ transport: mergedConfig.transport, organizationId: mergedConfig.organizationId }); } }; function vectry(config) { return new Vectry(config); } export { DefaultContextProvider, HttpTransport, Vectry, vectry };