@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
37 lines • 4.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FeatureFlagLoader = void 0;
class FeatureFlagLoader {
static fromJSON(json) {
try {
const config = JSON.parse(json);
return config.flags;
}
catch (error) {
throw new Error(`Failed to parse flag configuration JSON: ${error}`);
}
}
static fromObject(config) {
if (!config.flags || !Array.isArray(config.flags)) {
throw new Error('Configuration must have a flags array');
}
return config.flags;
}
static fromEnvironment() {
const configPath = process.env.FEATURE_FLAGS_CONFIG_PATH;
if (!configPath) {
return [];
}
try {
// eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
const fs = require('fs');
const configContent = fs.readFileSync(configPath, 'utf8');
return this.fromJSON(configContent);
}
catch (error) {
throw new Error(`Failed to load flag configuration from ${configPath}: ${error}`);
}
}
}
exports.FeatureFlagLoader = FeatureFlagLoader;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZlYXR1cmUtZmxhZ3MvZmxhZ3MvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLE1BQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBc0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUF5QjtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQztZQUNILDhFQUE4RTtZQUM5RSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhDRCw4Q0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnRGVmaW5pdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbmZpZyB7XG4gIGZsYWdzOiBGZWF0dXJlRmxhZ0RlZmluaXRpb25bXTtcbiAgZGVmYXVsdHM/OiB7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgdHlwZT86ICdib29sZWFuJyB8ICdzdHJpbmcnIHwgJ251bWJlcic7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBGZWF0dXJlRmxhZ0xvYWRlciB7XG4gIHN0YXRpYyBmcm9tSlNPTihqc29uOiBzdHJpbmcpOiBGZWF0dXJlRmxhZ0RlZmluaXRpb25bXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbmZpZzogRmVhdHVyZUZsYWdDb25maWcgPSBKU09OLnBhcnNlKGpzb24pO1xuICAgICAgcmV0dXJuIGNvbmZpZy5mbGFncztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgZmxhZyBjb25maWd1cmF0aW9uIEpTT046ICR7ZXJyb3J9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoY29uZmlnOiBGZWF0dXJlRmxhZ0NvbmZpZyk6IEZlYXR1cmVGbGFnRGVmaW5pdGlvbltdIHtcbiAgICBpZiAoIWNvbmZpZy5mbGFncyB8fCAhQXJyYXkuaXNBcnJheShjb25maWcuZmxhZ3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbmZpZ3VyYXRpb24gbXVzdCBoYXZlIGEgZmxhZ3MgYXJyYXknKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZy5mbGFncztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW52aXJvbm1lbnQoKTogRmVhdHVyZUZsYWdEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5GRUFUVVJFX0ZMQUdTX0NPTkZJR19QQVRIO1xuICAgIGlmICghY29uZmlnUGF0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ2xvYmFsLXJlcXVpcmUsIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIHJldHVybiB0aGlzLmZyb21KU09OKGNvbmZpZ0NvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIGZsYWcgY29uZmlndXJhdGlvbiBmcm9tICR7Y29uZmlnUGF0aH06ICR7ZXJyb3J9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=