UNPKG

@dipakparmar/docusaurus-plugin-umami

Version:
77 lines (76 loc) 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = pluginUmami; exports.validateOptions = validateOptions; const utils_validation_1 = require("@docusaurus/utils-validation"); function pluginUmami(context, options) { const { websiteID, analyticsDomain, scriptName, dataHostURL, dataAutoTrack, dataDoNotTrack, dataCache, dataDomains, dataExcludeSearch, dataExcludeHash, dataTag, dataBeforeSend, } = options; const isProd = process.env.NODE_ENV === "production"; return { name: "docusaurus-plugin-umami", async contentLoaded({ actions }) { actions.setGlobalData(options); }, injectHtmlTags() { if (!isProd) { return {}; } return { headTags: [ { tagName: "link", attributes: { rel: "preconnect", href: `https://${analyticsDomain}`, }, }, { tagName: "script", attributes: { async: true, defer: true, src: `https://${analyticsDomain}/${scriptName ? scriptName : "script.js"}`, "data-website-id": websiteID, ...(dataHostURL && { "data-host-url": dataHostURL }), ...(dataAutoTrack !== undefined && { "data-auto-track": String(dataAutoTrack), }), ...(dataDoNotTrack !== undefined && { "data-do-not-track": String(dataDoNotTrack), }), ...(dataCache !== undefined && { "data-cache": String(dataCache), }), ...(dataDomains && { "data-domains": dataDomains }), ...(dataExcludeSearch !== undefined && { "data-exclude-search": String(dataExcludeSearch), }), ...(dataExcludeHash !== undefined && { "data-exclude-hash": String(dataExcludeHash), }), ...(dataTag && { "data-tag": dataTag }), ...(dataBeforeSend && { "data-before-send": dataBeforeSend }), }, }, ], }; }, }; } const pluginOptionsSchema = utils_validation_1.Joi.object({ websiteID: utils_validation_1.Joi.string().required(), analyticsDomain: utils_validation_1.Joi.string().required(), scriptName: utils_validation_1.Joi.string(), dataHostURL: utils_validation_1.Joi.string(), dataAutoTrack: utils_validation_1.Joi.boolean().default(true), dataDoNotTrack: utils_validation_1.Joi.boolean().default(false), dataCache: utils_validation_1.Joi.boolean().default(false), dataDomains: utils_validation_1.Joi.string(), dataExcludeSearch: utils_validation_1.Joi.boolean().default(false), dataExcludeHash: utils_validation_1.Joi.boolean().default(false), dataTag: utils_validation_1.Joi.string(), dataBeforeSend: utils_validation_1.Joi.string(), }); function validateOptions({ validate, options, }) { return validate(pluginOptionsSchema, options); }