@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.
70 lines • 3.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.remoteMiddlewares = void 0;
var tslib_1 = require("tslib");
var environment_1 = require("../../core/environment");
var load_script_1 = require("../../lib/load-script");
var parse_cdn_1 = require("../../lib/parse-cdn");
function remoteMiddlewares(ctx, settings, obfuscate) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function () {
var path, remoteMiddleware, names, scripts, middleware;
var _this = this;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if ((0, environment_1.isServer)()) {
return [2 /*return*/, []];
}
path = (0, parse_cdn_1.getNextIntegrationsURL)();
remoteMiddleware = (_a = settings.enabledMiddleware) !== null && _a !== void 0 ? _a : {};
names = Object.entries(remoteMiddleware)
.filter(function (_a) {
var _ = _a[0], enabled = _a[1];
return enabled;
})
.map(function (_a) {
var name = _a[0];
return name;
});
scripts = names.map(function (name) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var nonNamespaced, bundleName, fullPath, error_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
nonNamespaced = name.replace('@segment/', '');
bundleName = nonNamespaced;
if (obfuscate) {
bundleName = btoa(nonNamespaced).replace(/=/g, '');
}
fullPath = "".concat(path, "/middleware/").concat(bundleName, "/latest/").concat(bundleName, ".js.gz");
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, (0, load_script_1.loadScript)(fullPath)
// @ts-ignore
];
case 2:
_a.sent();
// @ts-ignore
return [2 /*return*/, window["".concat(nonNamespaced, "Middleware")]];
case 3:
error_1 = _a.sent();
ctx.log('error', error_1);
ctx.stats.increment('failed_remote_middleware');
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
}); });
return [4 /*yield*/, Promise.all(scripts)];
case 1:
middleware = _b.sent();
middleware = middleware.filter(Boolean);
return [2 /*return*/, middleware];
}
});
});
}
exports.remoteMiddlewares = remoteMiddlewares;
//# sourceMappingURL=index.js.map