@dipakparmar/docusaurus-plugin-umami
Version:
Umami Analytics plugin for Docusaurus v2.
77 lines (76 loc) • 3.59 kB
JavaScript
;
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);
}