@amplitude/unified
Version:
Official Amplitude SDK for Web analytics, experiment, session replay, and more.
87 lines • 4.79 kB
JavaScript
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