@microsoft/docusaurus-plugin-application-insights
Version:
Microsoft Application Insights plugin for Docusaurus.
135 lines (132 loc) • 8.31 kB
JavaScript
"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateOptions = exports.normalizeConfig = exports.DEPRECATED_CONFIG_MESSAGE = void 0;
const node_util_1 = require("node:util");
const utils_validation_1 = require("@docusaurus/utils-validation");
exports.DEPRECATED_CONFIG_MESSAGE = `You passed the Application Insights configuration using the legacy configuration structure. Please use the new configuration structure in the future.
Example:
{
config: <Application Insights Configuration object>,
enableClickAnalytics: <boolean>
}`;
function normalizeConfig(maybeLegacyOptions) {
// If we have a `config` property, we're using the new configuration API
if ('config' in maybeLegacyOptions) {
return maybeLegacyOptions;
}
let options;
// If we don't have a `config` property, we're using the legacy configuration API, so we normalize it
const deprecateConfig = (0, node_util_1.deprecate)(() => {
options = {
config: maybeLegacyOptions,
enableClickAnalytics: false,
};
}, exports.DEPRECATED_CONFIG_MESSAGE);
deprecateConfig();
return options;
}
exports.normalizeConfig = normalizeConfig;
const pluginOptionsSchema = utils_validation_1.Joi.object({
config: utils_validation_1.Joi.object({
instrumentationKey: utils_validation_1.Joi.string().empty(''),
connectionString: utils_validation_1.Joi.string().empty(''),
diagnosticLogInterval: utils_validation_1.Joi.number().optional(),
maxMessageLimit: utils_validation_1.Joi.number().optional(),
loggingLevelConsole: utils_validation_1.Joi.number().optional(),
loggingLevelTelemetry: utils_validation_1.Joi.number().optional(),
enableDebug: utils_validation_1.Joi.boolean().optional(),
enableDebugExceptions: utils_validation_1.Joi.boolean().optional(),
endpointUrl: utils_validation_1.Joi.string().optional(),
extensionConfig: utils_validation_1.Joi.object().optional(),
extensions: utils_validation_1.Joi.array().items(utils_validation_1.Joi.object()).optional(),
channels: utils_validation_1.Joi.array().items(utils_validation_1.Joi.array().items(utils_validation_1.Joi.object())).optional(),
disableInstrumentationKeyValidation: utils_validation_1.Joi.boolean().optional(),
enablePerfMgr: utils_validation_1.Joi.boolean().optional(),
createPerfMgr: utils_validation_1.Joi.func().optional(),
perfEvtsSendAll: utils_validation_1.Joi.boolean().optional(),
idLength: utils_validation_1.Joi.number().optional(),
cookieDomain: utils_validation_1.Joi.string().optional(),
cookiePath: utils_validation_1.Joi.string().optional(),
disableCookiesUsage: utils_validation_1.Joi.boolean().optional(),
cookieCfg: utils_validation_1.Joi.object().optional(),
disablePageUnloadEvents: utils_validation_1.Joi.array().items(utils_validation_1.Joi.string()).optional(),
disablePageShowEvents: utils_validation_1.Joi.array().items(utils_validation_1.Joi.string()).optional(),
disableDbgExt: utils_validation_1.Joi.boolean().optional(),
emitLineDelimitedJson: utils_validation_1.Joi.boolean().optional(),
accountId: utils_validation_1.Joi.string().optional(),
sessionRenewalMs: utils_validation_1.Joi.number().optional(),
sessionExpirationMs: utils_validation_1.Joi.number().optional(),
maxBatchSizeInBytes: utils_validation_1.Joi.number().optional(),
maxBatchInterval: utils_validation_1.Joi.number().optional(),
disableExceptionTracking: utils_validation_1.Joi.boolean().optional(),
disableTelemetry: utils_validation_1.Joi.boolean().optional(),
samplingPercentage: utils_validation_1.Joi.number().optional(),
autoTrackPageVisitTime: utils_validation_1.Joi.boolean().optional(),
enableAutoRouteTracking: utils_validation_1.Joi.boolean().optional(),
disableAjaxTracking: utils_validation_1.Joi.boolean().optional(),
disableFetchTracking: utils_validation_1.Joi.boolean().optional(),
excludeRequestFromAutoTrackingPatterns: utils_validation_1.Joi.array()
.items(utils_validation_1.Joi.alternatives().try(utils_validation_1.Joi.string(), utils_validation_1.Joi.object().instance(RegExp)))
.optional(),
addRequestContext: utils_validation_1.Joi.func().optional(),
overridePageViewDuration: utils_validation_1.Joi.boolean().optional(),
maxAjaxCallsPerView: utils_validation_1.Joi.number().optional(),
disableDataLossAnalysis: utils_validation_1.Joi.boolean().optional(),
disableCorrelationHeaders: utils_validation_1.Joi.boolean().optional(),
distributedTracingMode: utils_validation_1.Joi.string().optional(),
correlationHeaderExcludedDomains: utils_validation_1.Joi.array()
.items(utils_validation_1.Joi.string())
.optional(),
disableFlushOnBeforeUnload: utils_validation_1.Joi.boolean().optional(),
disableFlushOnUnload: utils_validation_1.Joi.boolean().optional(),
enableSessionStorageBuffer: utils_validation_1.Joi.boolean().optional(),
bufferOverride: utils_validation_1.Joi.object().optional(),
isCookieUseDisabled: utils_validation_1.Joi.boolean().optional(),
isRetryDisabled: utils_validation_1.Joi.boolean().optional(),
url: utils_validation_1.Joi.string().optional(),
isStorageUseDisabled: utils_validation_1.Joi.boolean().optional(),
isBeaconApiDisabled: utils_validation_1.Joi.boolean().optional(),
disableXhr: utils_validation_1.Joi.boolean().optional(),
onunloadDisableFetch: utils_validation_1.Joi.boolean().optional(),
sdkExtension: utils_validation_1.Joi.string().optional(),
isBrowserLinkTrackingEnabled: utils_validation_1.Joi.boolean().optional(),
appId: utils_validation_1.Joi.string().optional(),
enableCorsCorrelation: utils_validation_1.Joi.boolean().optional(),
namePrefix: utils_validation_1.Joi.string().optional(),
sessionCookiePostfix: utils_validation_1.Joi.string().optional(),
userCookiePostfix: utils_validation_1.Joi.string().optional(),
enableRequestHeaderTracking: utils_validation_1.Joi.boolean().optional(),
enableResponseHeaderTracking: utils_validation_1.Joi.boolean().optional(),
enableAjaxErrorStatusText: utils_validation_1.Joi.boolean().optional(),
enableAjaxPerfTracking: utils_validation_1.Joi.boolean().optional(),
maxAjaxPerfLookupAttempts: utils_validation_1.Joi.number().optional(),
ajaxPerfLookupDelay: utils_validation_1.Joi.number().optional(),
onunloadDisableBeacon: utils_validation_1.Joi.boolean().optional(),
autoExceptionInstrumented: utils_validation_1.Joi.boolean().optional(),
correlationHeaderDomains: utils_validation_1.Joi.array().items(utils_validation_1.Joi.string()).optional(),
autoUnhandledPromiseInstrumented: utils_validation_1.Joi.boolean().optional(),
enableUnhandledPromiseRejectionTracking: utils_validation_1.Joi.boolean().optional(),
correlationHeaderExcludePatterns: utils_validation_1.Joi.array()
.items(utils_validation_1.Joi.object().instance(RegExp))
.optional(),
customHeaders: utils_validation_1.Joi.array()
.items(utils_validation_1.Joi.object({
header: utils_validation_1.Joi.string().required(),
value: utils_validation_1.Joi.string().required(),
}))
.optional(),
convertUndefined: utils_validation_1.Joi.any().optional(),
eventsLimitInMem: utils_validation_1.Joi.number().optional(),
disableIkeyDeprecationMessage: utils_validation_1.Joi.boolean().optional(),
addIntEndpoints: utils_validation_1.Joi.boolean().optional(),
})
.required()
.xor('instrumentationKey', 'connectionString'),
enableClickAnalytics: utils_validation_1.Joi.boolean().optional(),
});
function validateOptions({ validate, options, }) {
return validate(pluginOptionsSchema, options);
}
exports.validateOptions = validateOptions;