UNPKG

@rudderstack/integrations-lib

Version:

A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.

40 lines 6.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureFlagUtils = void 0; class FeatureFlagUtils { static normalizeKey(key) { return key.toLowerCase().replace(/[^a-z0-9-_]/g, '-'); } static validateDefinition(definition) { if (!definition.key || typeof definition.key !== 'string') { throw new Error('Flag definition must have a valid key'); } if (!definition.name || typeof definition.name !== 'string') { throw new Error('Flag definition must have a valid name'); } if (!definition.description || typeof definition.description !== 'string') { throw new Error('Flag definition must have a valid description'); } if (definition.defaultValue === undefined) { throw new Error('Flag definition must have a defaultValue'); } if (!['boolean', 'string', 'number'].includes(definition.type)) { throw new Error('Flag definition type must be boolean, string, or number'); } // Validate defaultValue matches type const actualType = typeof definition.defaultValue; if (actualType !== definition.type) { throw new Error(`Flag defaultValue type (${actualType}) does not match declared type (${definition.type})`); } } static createWorkspaceEnvKey(flagName, workspaceId) { const normalizedFlag = flagName.toUpperCase().replace(/-/g, '_'); return `FEATURE_FLAG_LOCAL__${workspaceId}__${normalizedFlag}`; } static createGlobalEnvKey(flagName) { const normalizedFlag = flagName.toUpperCase().replace(/-/g, '_'); return `FEATURE_FLAG_LOCAL_${normalizedFlag}`; } } exports.FeatureFlagUtils = FeatureFlagUtils; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9jb3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVztRQUM3QixPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsVUFBaUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksT0FBTyxVQUFVLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksT0FBTyxVQUFVLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxVQUFVLEdBQUcsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ2xELElBQUksVUFBVSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLDJCQUEyQixVQUFVLG1DQUFtQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQzNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLFdBQW1CO1FBQ2hFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sdUJBQXVCLFdBQVcsS0FBSyxjQUFjLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQWdCO1FBQ3hDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sc0JBQXNCLGNBQWMsRUFBRSxDQUFDO0lBQ2hELENBQUM7Q0FDRjtBQXhDRCw0Q0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnRGVmaW5pdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVGbGFnVXRpbHMge1xuICBzdGF0aWMgbm9ybWFsaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktX10vZywgJy0nKTtcbiAgfVxuXG4gIHN0YXRpYyB2YWxpZGF0ZURlZmluaXRpb24oZGVmaW5pdGlvbjogRmVhdHVyZUZsYWdEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKCFkZWZpbml0aW9uLmtleSB8fCB0eXBlb2YgZGVmaW5pdGlvbi5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZsYWcgZGVmaW5pdGlvbiBtdXN0IGhhdmUgYSB2YWxpZCBrZXknKTtcbiAgICB9XG4gICAgaWYgKCFkZWZpbml0aW9uLm5hbWUgfHwgdHlwZW9mIGRlZmluaXRpb24ubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmxhZyBkZWZpbml0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIG5hbWUnKTtcbiAgICB9XG4gICAgaWYgKCFkZWZpbml0aW9uLmRlc2NyaXB0aW9uIHx8IHR5cGVvZiBkZWZpbml0aW9uLmRlc2NyaXB0aW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGbGFnIGRlZmluaXRpb24gbXVzdCBoYXZlIGEgdmFsaWQgZGVzY3JpcHRpb24nKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb24uZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmxhZyBkZWZpbml0aW9uIG11c3QgaGF2ZSBhIGRlZmF1bHRWYWx1ZScpO1xuICAgIH1cbiAgICBpZiAoIVsnYm9vbGVhbicsICdzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXMoZGVmaW5pdGlvbi50eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGbGFnIGRlZmluaXRpb24gdHlwZSBtdXN0IGJlIGJvb2xlYW4sIHN0cmluZywgb3IgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZGVmYXVsdFZhbHVlIG1hdGNoZXMgdHlwZVxuICAgIGNvbnN0IGFjdHVhbFR5cGUgPSB0eXBlb2YgZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWU7XG4gICAgaWYgKGFjdHVhbFR5cGUgIT09IGRlZmluaXRpb24udHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmxhZyBkZWZhdWx0VmFsdWUgdHlwZSAoJHthY3R1YWxUeXBlfSkgZG9lcyBub3QgbWF0Y2ggZGVjbGFyZWQgdHlwZSAoJHtkZWZpbml0aW9uLnR5cGV9KWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXb3Jrc3BhY2VFbnZLZXkoZmxhZ05hbWU6IHN0cmluZywgd29ya3NwYWNlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEZsYWcgPSBmbGFnTmFtZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgJ18nKTtcbiAgICByZXR1cm4gYEZFQVRVUkVfRkxBR19MT0NBTF9fJHt3b3Jrc3BhY2VJZH1fXyR7bm9ybWFsaXplZEZsYWd9YDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVHbG9iYWxFbnZLZXkoZmxhZ05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEZsYWcgPSBmbGFnTmFtZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgJ18nKTtcbiAgICByZXR1cm4gYEZFQVRVUkVfRkxBR19MT0NBTF8ke25vcm1hbGl6ZWRGbGFnfWA7XG4gIH1cbn1cbiJdfQ==