UNPKG

featurehub-javascript-client-sdk

Version:
115 lines 4.99 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureHub = void 0; const edge_featurehub_config_1 = require("./edge_featurehub_config"); const polling_sdk_1 = require("./polling_sdk"); const feature_hub_config_1 = require("./feature_hub_config"); __exportStar(require("./feature_state"), exports); __exportStar(require("./feature_hub_config"), exports); __exportStar(require("./edge_service"), exports); __exportStar(require("./client_feature_repository"), exports); __exportStar(require("./models/models"), exports); __exportStar(require("./analytics"), exports); __exportStar(require("./test_sdk"), exports); __exportStar(require("./polling_sdk"), exports); __exportStar(require("./middleware"), exports); __exportStar(require("./baggage_header"), exports); __exportStar(require("./interceptors"), exports); __exportStar(require("./client_context"), exports); __exportStar(require("./internal_feature_repository"), exports); __exportStar(require("./context_impl"), exports); __exportStar(require("./featurehub_repository"), exports); __exportStar(require("./edge_featurehub_config"), exports); __exportStar(require("./featurehub_eventsource"), exports); __exportStar(require("./local_context"), exports); class FeatureHub { static feature(key) { return this.context.feature(key); } static set(config, context) { window['fhConfig'] = config; window['fhContext'] = context; } static get context() { if (this.inBrowser) { const fhContext = window['fhContext']; if (fhContext) { return fhContext; } } throw new Error('No FeatureHub context defined'); } static get config() { if (this.inBrowser) { const fhConfig = window['fhConfig']; if (fhConfig) { return fhConfig; } } throw new Error('No FeatureHub config defined'); } static _initialize() { if (this.inBrowser) { const metaTags = document.getElementsByTagName('meta'); const apiKeys = []; let pollInterval; let url; const params = []; for (let count = 0; count < metaTags.length; count++) { const name = metaTags[count].getAttribute('name'); const content = metaTags[count].content; if (name === 'featurehub-url') { url = content; } else if (name === 'featurehub-apiKey') { apiKeys.push(content); } else if (name === 'featurehub-interval') { pollInterval = content; } else if (name === null || name === void 0 ? void 0 : name.startsWith('featurehub-')) { params.push([name.substring(11), content]); } } if (apiKeys.length > 0) { if (pollInterval) { const _interval = pollInterval; feature_hub_config_1.fhLog.trace('setting polling interval to', pollInterval); edge_featurehub_config_1.EdgeFeatureHubConfig.defaultEdgeServiceSupplier = (repo, config) => new polling_sdk_1.FeatureHubPollingClient(repo, config, parseInt(_interval)); } const config = edge_featurehub_config_1.EdgeFeatureHubConfig.config(url || 'https://app.featurehub.io/vanilla', apiKeys[0]); if (apiKeys.length > 1) { for (let count = 1; count < apiKeys.length; count++) { config.apiKey(apiKeys[count]); } } const context = config.newContext(); for (let count = 0; count < params.length; count++) { context.attributeValue(params[count][0], params[count][1]); } context.build(); this.set(config, context); } } } static close() { this.config.close(); } } exports.FeatureHub = FeatureHub; FeatureHub.inBrowser = (typeof window !== 'undefined' && typeof document !== 'undefined'); FeatureHub._initialize(); //# sourceMappingURL=index.js.map