馃尨 Gradual feature flags.
Install package:
# npm
npm install compat-flags
# yarn
yarn add compat-flags
# pnpm
pnpm install compat-flags
# bun
bun install compat-flags
import {
defineCompatibilityFlag,
defineCompatibilityFlags,
} from "compat-flags";
const compatFlags = defineCompatibilityFlags({
build_cache: defineCompatibilityFlag({
name: "Enable build caching support",
from: "2024/03/14",
}),
node_fix: defineCompatibilityFlag({
name: "Enable hotfix for Node.js suppor",
from: "2024/01/01",
to: "2024/01/15",
}),
});
isCompatFlagEnabled
checks if a flag is enabled within the range [from, to]
in compatibility flag.
If enabled, returns true
, if disabled, returns false
and if not specified, returns undefined
.
import { isCompatFlagEnabled } from "compat flags";
// Loaded from user or integration config
const compatSpec = { date: "2020/1/1", flags: ["build_cache"] };
const buildCache = isCompatFlagEnabled("build_cache", compatFlags, userSpec);
formatDate
makes sure input date is formatted as YY/MM/DD
import type { formatDate } from 'compat-flags'
// Typescript types
import type {
CompatibilityFlags,
CompatibilityFlag,
} from "./types";
// Type helpers
import {
defineCompatibilityFlag,
defineCompatibilityFlags,
} from "compat-flags";
CompatibilityFlags
defines an object map from flag keys to their defenition.
CompatibilityFlag
defines a specific compatibility flag with from
date (required), and name
(human friendly name) and to
which are optional.
- Clone this repository
- Install latest LTS version of Node.js
- Enable Corepack using
corepack enable
- Install dependencies using
pnpm install
- Run interactive tests using
pnpm dev
Made with 馃挍
Published under MIT License.