UNPKG

@amplitude/unified

Version:

Official Amplitude SDK for Web analytics, experiment, session replay, and more.

87 lines 4.79 kB
import { __assign, __awaiter, __extends, __generator } from "tslib"; import { AmplitudeBrowser } from '@amplitude/analytics-browser'; import { sessionReplayPlugin, SessionReplayPlugin, } from '@amplitude/plugin-session-replay-browser'; import { ExperimentPlugin, experimentPlugin, } from '@amplitude/plugin-experiment-browser'; import { plugin as EngagementPlugin } from '@amplitude/engagement-browser'; import { libraryPlugin } from './library'; var AmplitudeUnified = /** @class */ (function (_super) { __extends(AmplitudeUnified, _super); function AmplitudeUnified() { return _super !== null && _super.apply(this, arguments) || this; } AmplitudeUnified.prototype.sessionReplay = function () { return this._sessionReplay; }; AmplitudeUnified.prototype.experiment = function () { // Return when init() or initAll() is not called if (this.config === undefined) { return undefined; } var expPlugins = this.plugins(ExperimentPlugin); if (expPlugins.length === 0) { this.config.loggerProvider.debug("".concat(ExperimentPlugin.pluginName, " plugin is not found.")); return undefined; } else if (expPlugins.length === 1) { return expPlugins[0].experiment; } else { this.config.loggerProvider.debug("Multiple instances of ".concat(ExperimentPlugin.pluginName, " are found.")); return undefined; } }; /** * Initialize SDKs with configuration options. * * @param apiKey Amplitude API key. * @param analyticsOptions Analytics configuration options. Refer to {@link https://amplitude.com/docs/sdks/analytics/browser/browser-sdk-2#configure-the-sdk here} for more info. * @param unifiedOptions Shared configuration for all SDKs and for blade SDKs. */ AmplitudeUnified.prototype.initAll = function (apiKey, unifiedOptions) { return __awaiter(this, void 0, void 0, function () { var sharedOptions, srPlugin; return __generator(this, function (_a) { switch (_a.label) { case 0: sharedOptions = { serverZone: unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.serverZone, instanceName: unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.instanceName, }; _super.prototype.add.call(this, libraryPlugin()); return [4 /*yield*/, _super.prototype.init.call(this, apiKey, __assign(__assign({}, unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.analytics), sharedOptions)).promise]; case 1: _a.sent(); return [4 /*yield*/, _super.prototype.add.call(this, sessionReplayPlugin(__assign(__assign({}, unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.sessionReplay), sharedOptions))).promise]; case 2: _a.sent(); return [4 /*yield*/, _super.prototype.add.call(this, experimentPlugin(__assign(__assign({}, unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.experiment), sharedOptions))).promise]; case 3: _a.sent(); srPlugin = this.plugin(SessionReplayPlugin.pluginName); if (srPlugin === undefined) { this.config.loggerProvider.debug("".concat(SessionReplayPlugin.pluginName, " plugin is not found.")); } else { this._sessionReplay = srPlugin.sessionReplay; } return [4 /*yield*/, _super.prototype.add.call(this, EngagementPlugin(__assign(__assign({}, unifiedOptions === null || unifiedOptions === void 0 ? void 0 : unifiedOptions.engagement), sharedOptions))).promise]; case 4: _a.sent(); return [2 /*return*/]; } }); }); }; /** * Only analytics SDK is initialized. Use initAll() instead to initialize all blade SDKs. */ /* istanbul ignore next */ AmplitudeUnified.prototype.init = function (apiKey, userIdOrOptions, maybeOptions) { if (apiKey === void 0) { apiKey = ''; } var res = _super.prototype.init.call(this, apiKey, userIdOrOptions, maybeOptions); return res; }; return AmplitudeUnified; }(AmplitudeBrowser)); export { AmplitudeUnified }; //# sourceMappingURL=unified.js.map