MCPcopy Create free account
hub / github.com/vercel/vercel / useFlags

Function useFlags

packages/cli/test/mocks/flags.ts:229–583  ·  view source on GitHub ↗
(
  flagsList: Flag[] = defaultFlags,
  sdkKeysList: SdkKey[] = defaultSdkKeys,
  settings: FlagSettings = defaultFlagSettings,
  segmentsList: Segment[] = defaultSegments
)

Source from the content-addressed store, hash-verified

227];
228
229export function useFlags(
230 flagsList: Flag[] = defaultFlags,
231 sdkKeysList: SdkKey[] = defaultSdkKeys,
232 settings: FlagSettings = defaultFlagSettings,
233 segmentsList: Segment[] = defaultSegments
234) {
235 // Get flag settings
236 client.scenario.get(
237 '/v1/projects/:projectId/feature-flags/settings',
238 (_req, res) => {
239 res.json(settings);
240 }
241 );
242
243 // List flags (v2: paginated, supports tag/createdBy/maintainerId filters)
244 client.scenario.get(
245 '/v2/projects/:projectId/feature-flags/flags',
246 (req, res) => {
247 const state = req.query.state || 'active';
248 const createdBy = req.query.createdBy as string | undefined;
249 const tags = toArray(req.query.tags);
250 const maintainerIds = toArray(req.query.maintainerIds);
251
252 let filteredFlags = flagsList.filter(f => f.state === state);
253 if (createdBy) {
254 filteredFlags = filteredFlags.filter(f => f.createdBy === createdBy);
255 }
256 if (tags.length > 0) {
257 filteredFlags = filteredFlags.filter(f =>
258 tags.every(tag => (f.tags ?? []).includes(tag))
259 );
260 }
261 if (maintainerIds.length > 0) {
262 filteredFlags = filteredFlags.filter(f =>
263 maintainerIds.some(id => (f.maintainerIds ?? []).includes(id))
264 );
265 }
266
267 // The CLI always sends `limit`; fall back to a single full page otherwise.
268 const limit = req.query.limit
269 ? Number(req.query.limit)
270 : filteredFlags.length;
271 const offset = req.query.cursor ? Number(req.query.cursor) : 0;
272 const page = filteredFlags.slice(offset, offset + limit);
273 const nextOffset = offset + limit;
274 const next =
275 nextOffset < filteredFlags.length ? String(nextOffset) : null;
276
277 res.json({ data: page, pagination: { next } });
278 }
279 );
280
281 // Get single flag
282 client.scenario.get(
283 '/v1/projects/:projectId/feature-flags/flags/:flagIdOrSlug',
284 (req, res) => {
285 const { flagIdOrSlug } = req.params;
286 const flag = flagsList.find(

Callers 14

update.test.tsFile · 0.90
sdk-keys.test.tsFile · 0.90
split.test.tsFile · 0.90
segments.test.tsFile · 0.90
set.test.tsFile · 0.90
inspect.test.tsFile · 0.90
enable.test.tsFile · 0.90
ls.test.tsFile · 0.90
add.test.tsFile · 0.90
open.test.tsFile · 0.90
archive.test.tsFile · 0.90
rm.test.tsFile · 0.90

Calls 12

toArrayFunction · 0.85
filterMethod · 0.80
statusMethod · 0.80
putMethod · 0.80
patchMethod · 0.80
getMethod · 0.65
jsonMethod · 0.65
pushMethod · 0.65
findMethod · 0.45
deleteMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected