UNPKG

@safaricom-mxl/nextjs

Version:

MXL Javascript RUM agent for nextjs

249 lines (246 loc) 7.88 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package.json var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "@safaricom-mxl/nextjs", version: "0.0.61", description: "MXL Javascript RUM agent for nextjs", main: "./dist/index.js", type: "module", scripts: { test: "vitest", dev: "rm -rf /dist && tsup --watch", build: "rm -rf dist && tsup", clean: "git clean -xdf .turbo node_modules coverage dist tmp", format: "biome format .", lint: "biome check ." }, keywords: [ "mxl", "event tracker", "web analytics", "analytics" ], author: "Francis Masha", license: "MIT", exports: { ".": { browser: "./dist/index.js", import: "./dist/index.js", require: "./dist/index.cjs" }, "./server": { import: "./dist/server.cjs", default: "./dist/server.js" } }, typesVersions: { "*": { "*": [ "dist/index.d.ts", "dist/server.d.ts" ] } }, types: "dist/index.d.ts", files: [ "dist", "package.json", "LICENSE" ], devDependencies: { "@safaricom-mxl/tsconfig": "workspace:*", "@types/node": "^22.13.11", "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "@vitest/browser": "^3.0.9", react: "19.0.0", tsup: "^8.4.0", typescript: "^5.8.2", vitest: "^3.0.9" }, peerDependencies: { next: "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", react: "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, publishConfig: { access: "public" }, dependencies: { "@safaricom-mxl/browser": "workspace:*", "server-only": "^0.0.1" }, peerDependenciesMeta: { next: { optional: true }, react: { optional: true } } }; } }); // src/index.tsx var index_exports = {}; __export(index_exports, { IdentifyComponent: () => IdentifyComponent, MxlAnalyticsComponent: () => MxlAnalyticsComponent, SetGlobalPropertiesComponent: () => SetGlobalPropertiesComponent, useMxlAnalytics: () => useMxlAnalytics }); module.exports = __toCommonJS(index_exports); var import_script = __toESM(require("next/script"), 1); var import_react = __toESM(require("react"), 1); __reExport(index_exports, require("@safaricom-mxl/browser"), module.exports); var packageJson = require_package(); var SCRIPT_URL = "http://mxl-scripts.service-availability.apps.ocpthikadev01.safaricom.net/v1/mxl.js"; var OTEL_WEB_URL = "http://mxl-scripts.service-availability.apps.ocpthikadev01.safaricom.net/v1/otel-web.js"; var stringify = (obj) => { if (typeof obj === "object" && obj !== null && obj !== void 0) { const entries = Object.entries(obj).map(([key, value]) => { if (key === "filter") { return `"${key}":${value}`; } return `"${key}":${JSON.stringify(value)}`; }); return `{${entries.join(",")}}`; } return JSON.stringify(obj); }; function MxlAnalyticsComponent({ profileId, cdnUrl, globalProperties, injectOtelWeb, ...options }) { const methods = [ { name: "init", value: { ...options, sdk: "nextjs", sdkVersion: packageJson.version } } ]; if (profileId) { methods.push({ name: "identify", value: { profileId } }); } if (globalProperties) { methods.push({ name: "setGlobalProperties", value: globalProperties }); } return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_script.default, { src: cdnUrl ?? SCRIPT_URL, async: true, defer: true }), injectOtelWeb && /* @__PURE__ */ import_react.default.createElement(import_script.default, { src: OTEL_WEB_URL, async: true, defer: true }), /* @__PURE__ */ import_react.default.createElement( import_script.default, { dangerouslySetInnerHTML: { __html: `window.mxl = window.mxl || function(...args) {(window.mxl.q = window.mxl.q || []).push(args)}; ${methods.map((method) => { return `window.mxl('${method.name}', ${stringify(method.value)});`; }).join("\n")}` } } )); } function IdentifyComponent(props) { return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( import_script.default, { dangerouslySetInnerHTML: { __html: `window.mxl('identify', ${JSON.stringify(props)});` } } )); } function SetGlobalPropertiesComponent(props) { return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( import_script.default, { dangerouslySetInnerHTML: { __html: `window.mxl('setGlobalProperties', ${JSON.stringify(props)});` } } )); } function useMxlAnalytics() { return { track, screenView, identify, increment, decrement, clear, setGlobalProperties }; } function setGlobalProperties(properties) { window.mxl?.("setGlobalProperties", properties); } function track(name, properties) { window.mxl?.("track", name, properties); } function screenView(pathOrProperties, propertiesOrUndefined) { window.mxl?.("screenView", pathOrProperties, propertiesOrUndefined); } function identify(payload) { window.mxl?.("identify", payload); } function increment(payload) { window.mxl?.("increment", payload); } function decrement(payload) { window.mxl?.("decrement", payload); } function clear() { window.mxl?.("clear"); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { IdentifyComponent, MxlAnalyticsComponent, SetGlobalPropertiesComponent, useMxlAnalytics, ...require("@safaricom-mxl/browser") });