UNPKG

featurehub-repository

Version:

Core package of API that exposes FeatureHub feature flags, values and configuration to client applications written in Typescript or Javascript.

68 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureUpdater = void 0; const models_1 = require("./models/models"); class BrowserFeaturePostUpdater { post(url, update) { return new Promise((resolve) => { const req = new XMLHttpRequest(); req.open('PUT', url); req.setRequestHeader('Content-type', 'application/json'); req.send(JSON.stringify(models_1.ObjectSerializer.serialize(update, 'FeatureStateUpdate'))); req.onreadystatechange = function () { if (req.readyState === 4) { resolve(req.status >= 200 && req.status < 300); } }; }); } } class NodejsFeaturePostUpdater { post(url, update) { const loc = new URL(url); const cra = { protocol: loc.protocol, path: loc.pathname, host: loc.hostname, method: 'PUT', port: loc.port, timeout: 3000, headers: { 'content-type': 'application/json' } }; const http = cra.protocol === 'http:' ? require('http') : require('https'); return new Promise((resolve, reject) => { try { const req = http.request(cra, (res) => { if (res.statusCode >= 200 && res.statusCode < 300) { resolve(true); } else { resolve(false); } }); req.on('error', (e) => { resolve(false); }); const data = models_1.ObjectSerializer.serialize(update, 'FeatureStateUpdate'); req.write(JSON.stringify(data)); req.end(); } catch (e) { resolve(false); } }); } } class FeatureUpdater { constructor(config) { this.sdkUrl = config.url(); if (typeof window === 'object') { this.manager = new BrowserFeaturePostUpdater(); } else { this.manager = new NodejsFeaturePostUpdater(); } } updateKey(key, update) { return this.manager.post(this.sdkUrl + '/' + key, update); } } exports.FeatureUpdater = FeatureUpdater; //# sourceMappingURL=test_sdk.js.map