UNPKG

@segment/analytics-next

Version:

Analytics Next (aka Analytics 2.0) is the latest version of Segment’s JavaScript SDK - enabling you to send your data to any tool without having to learn, test, or use a new API every time.

98 lines 3.7 kB
var _a; import { __awaiter, __generator, __spreadArray } from "tslib"; /* eslint-disable @typescript-eslint/no-floating-promises */ import { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'; import { setVersionType } from '../lib/version-type'; if (process.env.IS_WEBPACK_BUILD) { if (process.env.ASSET_PATH) { // @ts-ignore __webpack_public_path__ = process.env.ASSET_PATH; } else { var cdn = getCDN(); setGlobalCDNUrl(cdn); // @ts-ignore __webpack_public_path__ = cdn ? cdn + '/analytics-next/bundles/' : 'https://cdn.segment.com/analytics-next/bundles/'; } } setVersionType('web'); import { install } from './standalone-analytics'; import '../lib/csp-detection'; import { shouldPolyfill } from '../lib/browser-polyfill'; import { RemoteMetrics } from '../core/stats/remote-metrics'; import { embeddedWriteKey } from '../lib/embedded-write-key'; import { loadAjsClassicFallback, isAnalyticsCSPError, } from '../lib/csp-detection'; import { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'; var ajsIdentifiedCSP = false; var sendErrorMetrics = function (tags) { // this should not be instantied at the root, or it will break ie11. var metrics = new RemoteMetrics(); metrics.increment('analytics_js.invoke.error', __spreadArray(__spreadArray([], tags, true), [ "wk:".concat(embeddedWriteKey()), ], false)); }; function onError(err) { console.error('[analytics.js]', 'Failed to load Analytics.js', err); sendErrorMetrics(__spreadArray([ 'type:initialization' ], (err instanceof Error ? ["message:".concat(err === null || err === void 0 ? void 0 : err.message), "name:".concat(err === null || err === void 0 ? void 0 : err.name)] : []), true)); } document.addEventListener('securitypolicyviolation', function (e) { if (ajsIdentifiedCSP || !isAnalyticsCSPError(e)) { return; } ajsIdentifiedCSP = true; sendErrorMetrics(['type:csp']); loadAjsClassicFallback().catch(console.error); }); /** * Attempts to run a promise and catch both sync and async errors. **/ function attempt(promise) { return __awaiter(this, void 0, void 0, function () { var result, err_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, promise()]; case 1: result = _a.sent(); return [2 /*return*/, result]; case 2: err_1 = _a.sent(); onError(err_1); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); } var globalAnalyticsKey = (_a = document.querySelector('script[data-global-segment-analytics-key]')) === null || _a === void 0 ? void 0 : _a.dataset.globalSegmentAnalyticsKey; if (globalAnalyticsKey) { setGlobalAnalyticsKey(globalAnalyticsKey); } if (shouldPolyfill()) { // load polyfills in order to get AJS to work with old browsers var script_1 = document.createElement('script'); script_1.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.7.0/polyfill.min.js'); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { return document.body.appendChild(script_1); }); } else { document.body.appendChild(script_1); } script_1.onload = function () { attempt(install); }; } else { attempt(install); } //# sourceMappingURL=standalone.js.map