Files
Schnappix/node_modules/react-native-worklets/lib/module/featureFlags/index.js
T

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