48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
import { logger } from "../logger.js";
|
|
import { WorkletsModule } from "../WorkletsModule/index.js";
|
|
export const DynamicFlags = {
|
|
EXAMPLE_DYNAMIC_FLAG: true,
|
|
init() {
|
|
Object.keys(DynamicFlags).forEach(key => {
|
|
if (key !== 'init' && key !== 'setFlag') {
|
|
WorkletsModule.setDynamicFeatureFlag(key, DynamicFlags[key]);
|
|
}
|
|
});
|
|
},
|
|
setFlag(name, value) {
|
|
if (name in DynamicFlags) {
|
|
DynamicFlags[name] = value;
|
|
WorkletsModule.setDynamicFeatureFlag(name, value);
|
|
} else {
|
|
logger.warn(`The feature flag: '${name}' no longer exists, you can safely remove invocation of \`setDynamicFeatureFlag('${name}')\` from your code.`);
|
|
}
|
|
}
|
|
};
|
|
DynamicFlags.init();
|
|
// Public API function to update a feature flag
|
|
export function setDynamicFeatureFlag(name, value) {
|
|
DynamicFlags.setFlag(name, value);
|
|
}
|
|
|
|
/**
|
|
* This constant is needed for typechecking and preserving static typechecks in
|
|
* generated .d.ts files. Without it, the static flags resolve to an object
|
|
* without specific keys.
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
const DefaultStaticFeatureFlags = {
|
|
RUNTIME_TEST_FLAG: false,
|
|
IOS_DYNAMIC_FRAMERATE_ENABLED: false
|
|
};
|
|
const staticFeatureFlags = {};
|
|
export function getStaticFeatureFlag(name) {
|
|
if (name in staticFeatureFlags) {
|
|
return staticFeatureFlags[name];
|
|
}
|
|
const featureFlagValue = WorkletsModule.getStaticFeatureFlag(name);
|
|
staticFeatureFlags[name] = featureFlagValue;
|
|
return featureFlagValue;
|
|
}
|
|
//# sourceMappingURL=index.js.map
|