Represent feature flags using an enum
Replaces the previous string literal type
This commit is contained in:
parent
5e87034b3b
commit
6d62c245ec
12 changed files with 88 additions and 108 deletions
40
lib/feature-flags.js
generated
40
lib/feature-flags.js
generated
|
|
@ -19,9 +19,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createFeatureFlags = exports.GitHubFeatureFlags = void 0;
|
||||
exports.createFeatureFlags = exports.GitHubFeatureFlags = exports.FeatureFlag = void 0;
|
||||
const api_client_1 = require("./api-client");
|
||||
const util = __importStar(require("./util"));
|
||||
var FeatureFlag;
|
||||
(function (FeatureFlag) {
|
||||
FeatureFlag["DatabaseUploadsEnabled"] = "database_uploads_enabled";
|
||||
FeatureFlag["MlPoweredQueriesEnabled"] = "ml_powered_queries_enabled";
|
||||
FeatureFlag["UploadsDomainEnabled"] = "uploads_domain_enabled";
|
||||
})(FeatureFlag = exports.FeatureFlag || (exports.FeatureFlag = {}));
|
||||
class GitHubFeatureFlags {
|
||||
constructor(gitHubVersion, apiDetails, repositoryNwo, logger) {
|
||||
this.gitHubVersion = gitHubVersion;
|
||||
|
|
@ -29,25 +35,17 @@ class GitHubFeatureFlags {
|
|||
this.repositoryNwo = repositoryNwo;
|
||||
this.logger = logger;
|
||||
}
|
||||
getDatabaseUploadsEnabled() {
|
||||
return this.getFeatureFlag("database_uploads_enabled");
|
||||
}
|
||||
getMlPoweredQueriesEnabled() {
|
||||
return this.getFeatureFlag("ml_powered_queries_enabled");
|
||||
}
|
||||
getUploadsDomainEnabled() {
|
||||
return this.getFeatureFlag("uploads_domain_enabled");
|
||||
async getValue(flag) {
|
||||
const response = (await this.getApiResponse())[flag];
|
||||
if (response === undefined) {
|
||||
this.logger.debug(`Feature flag '${flag}' undefined in API response, considering it disabled.`);
|
||||
return false;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
async preloadFeatureFlags() {
|
||||
await this.getApiResponse();
|
||||
}
|
||||
async getFeatureFlag(name) {
|
||||
const response = (await this.getApiResponse())[name];
|
||||
if (response === undefined) {
|
||||
this.logger.debug(`Feature flag '${name}' undefined in API response, considering it disabled.`);
|
||||
}
|
||||
return response || false;
|
||||
}
|
||||
async getApiResponse() {
|
||||
const loadApiResponse = async () => {
|
||||
// Do nothing when not running against github.com
|
||||
|
|
@ -84,14 +82,8 @@ exports.GitHubFeatureFlags = GitHubFeatureFlags;
|
|||
*/
|
||||
function createFeatureFlags(enabledFlags) {
|
||||
return {
|
||||
getDatabaseUploadsEnabled: async () => {
|
||||
return enabledFlags.includes("database_uploads_enabled");
|
||||
},
|
||||
getMlPoweredQueriesEnabled: async () => {
|
||||
return enabledFlags.includes("ml_powered_queries_enabled");
|
||||
},
|
||||
getUploadsDomainEnabled: async () => {
|
||||
return enabledFlags.includes("uploads_domain_enabled");
|
||||
getValue: async (flag) => {
|
||||
return enabledFlags.includes(flag);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue