From 10f85c44b0889e24b336c3caf345b04e1bbecb4f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:53:56 +0200 Subject: [PATCH] Version Packages (#3) Co-authored-by: github-actions[bot] --- .changeset/fifty-points-sin.md | 10 ---- .changeset/olive-chairs-grab.md | 46 --------------- .changeset/poor-rules-film.md | 16 ------ .changeset/ten-eagles-build.md | 5 -- packages/adapter-happykit/CHANGELOG.md | 7 +++ packages/adapter-happykit/package.json | 2 +- packages/adapter-hypertune/CHANGELOG.md | 7 +++ packages/adapter-hypertune/package.json | 2 +- packages/adapter-launchdarkly/CHANGELOG.md | 7 +++ packages/adapter-launchdarkly/package.json | 2 +- packages/adapter-optimizely/CHANGELOG.md | 7 +++ packages/adapter-optimizely/package.json | 2 +- packages/adapter-split/CHANGELOG.md | 7 +++ packages/adapter-split/package.json | 2 +- packages/adapter-statsig/CHANGELOG.md | 7 +++ packages/adapter-statsig/package.json | 2 +- packages/flags/CHANGELOG.md | 65 ++++++++++++++++++++++ packages/flags/package.json | 2 +- 18 files changed, 114 insertions(+), 84 deletions(-) delete mode 100644 .changeset/fifty-points-sin.md delete mode 100644 .changeset/olive-chairs-grab.md delete mode 100644 .changeset/poor-rules-film.md delete mode 100644 .changeset/ten-eagles-build.md create mode 100644 packages/adapter-happykit/CHANGELOG.md create mode 100644 packages/adapter-hypertune/CHANGELOG.md create mode 100644 packages/adapter-launchdarkly/CHANGELOG.md create mode 100644 packages/adapter-optimizely/CHANGELOG.md create mode 100644 packages/adapter-split/CHANGELOG.md create mode 100644 packages/adapter-statsig/CHANGELOG.md diff --git a/.changeset/fifty-points-sin.md b/.changeset/fifty-points-sin.md deleted file mode 100644 index 8e9b5d1..0000000 --- a/.changeset/fifty-points-sin.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@flags-sdk/launchdarkly': minor -'@flags-sdk/optimizely': minor -'@flags-sdk/hypertune': minor -'@flags-sdk/happykit': minor -'@flags-sdk/statsig': minor -'@flags-sdk/split': minor ---- - -initialize diff --git a/.changeset/olive-chairs-grab.md b/.changeset/olive-chairs-grab.md deleted file mode 100644 index 7dd9a3d..0000000 --- a/.changeset/olive-chairs-grab.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -'@vercel/flags': minor ---- - -**@vercel/flags/next: Added a `dedupe` function** - -`dedupe` is a middleware-friendly version of `React.cache`. It allows ensuring a function only ever runs once per request. - -```ts -import { dedupe } from '@vercel/flags/next'; - -let i = 0; -const runOnce = dedupe(async () => { - return i++; -}); - -await runOnce(); // returns 0 -await runOnce(); // still returns 0 -``` - -This function is useful when you want to deduplicate work within each feature flag's `decide` function. For example if multiple flags need to check auth you can dedupe the auth function so it only runs once per request. - -`dedupe` is also useful to optimistically generate a random visitor id to be set in a cookie, while also allowing each feature flag to access the id. You can call a dedupe'd function to generate the random id within your Edge Middleware and also within your feature flag's `decide` functions. The function will return a consistent id. - -```ts -import { nanoid } from 'nanoid'; -import { cookies, headers } from 'next/headers'; -import { dedupe } from '@vercel/flags/next'; - -/** - * Reads the visitor id from a cookie or returns a new visitor id - */ -export const getOrGenerateVisitorId = dedupe( - async (): Promise<{ value: string; fresh: boolean }> => { - const visitorIdCookie = (await cookies()).get('visitor-id')?.value; - - return visitorIdCookie - ? { value: visitorIdCookie, fresh: false } - : { value: nanoid(), fresh: true }; - }, -); -``` - -> Note: "once per request" is an imprecise description. A `dedupe`d function actually runs once per request, per compute instance. If a dedupe'd function is used in Edge Middleware and in a React Server Component it will run twice, as there are two separate compute instances handling this request. - -> Note: This function acts as a sort of polyfill until similar functionality lands in Next.js directly. diff --git a/.changeset/poor-rules-film.md b/.changeset/poor-rules-film.md deleted file mode 100644 index db5fef1..0000000 --- a/.changeset/poor-rules-film.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@vercel/flags': major ---- - -- **BREAKING CHANGE** removed all `unstable_` prefixes, e.g. `unstable_flag` is now `flag` -- **BREAKING CHANGE** removed `getPrecomputationContext`, use `dedupe` instead (see below) -- **BREAKING CHANGE** moved all provider functions to dedicated packages - - `@vercel/flags/providers/launchdarkly` → `@flags-sdk/launchdarkly` - - `@vercel/flags/providers/statsig` → `@flags-sdk/statsig` - - `@vercel/flags/providers/split` → `@flags-sdk/split` - - `@vercel/flags/providers/hypertune` → `@flags-sdk/hypertune` - - `@vercel/flags/providers/optimizely` → `@flags-sdk/optimizely` - - `@vercel/flags/providers/happykit` → `@flags-sdk/happykit` -- **BREAKING CHANGE** changed `.run({})` behavior - -See [flags-sdk.com](https://flags-sdk.com/) for the latest APIs. diff --git a/.changeset/ten-eagles-build.md b/.changeset/ten-eagles-build.md deleted file mode 100644 index acedac4..0000000 --- a/.changeset/ten-eagles-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@vercel/flags': major ---- - -remove unstable\_ prefixes diff --git a/packages/adapter-happykit/CHANGELOG.md b/packages/adapter-happykit/CHANGELOG.md new file mode 100644 index 0000000..16f2db7 --- /dev/null +++ b/packages/adapter-happykit/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/happykit + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-happykit/package.json b/packages/adapter-happykit/package.json index 3eea88f..ec2eafa 100644 --- a/packages/adapter-happykit/package.json +++ b/packages/adapter-happykit/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/happykit", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/adapter-hypertune/CHANGELOG.md b/packages/adapter-hypertune/CHANGELOG.md new file mode 100644 index 0000000..4e4ee07 --- /dev/null +++ b/packages/adapter-hypertune/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/hypertune + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-hypertune/package.json b/packages/adapter-hypertune/package.json index f225a21..216faa9 100644 --- a/packages/adapter-hypertune/package.json +++ b/packages/adapter-hypertune/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/hypertune", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/adapter-launchdarkly/CHANGELOG.md b/packages/adapter-launchdarkly/CHANGELOG.md new file mode 100644 index 0000000..353394e --- /dev/null +++ b/packages/adapter-launchdarkly/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/launchdarkly + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-launchdarkly/package.json b/packages/adapter-launchdarkly/package.json index 13538f8..4610089 100644 --- a/packages/adapter-launchdarkly/package.json +++ b/packages/adapter-launchdarkly/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/launchdarkly", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/adapter-optimizely/CHANGELOG.md b/packages/adapter-optimizely/CHANGELOG.md new file mode 100644 index 0000000..9e69800 --- /dev/null +++ b/packages/adapter-optimizely/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/optimizely + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-optimizely/package.json b/packages/adapter-optimizely/package.json index 95ea386..87e927d 100644 --- a/packages/adapter-optimizely/package.json +++ b/packages/adapter-optimizely/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/optimizely", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/adapter-split/CHANGELOG.md b/packages/adapter-split/CHANGELOG.md new file mode 100644 index 0000000..b6bc9cc --- /dev/null +++ b/packages/adapter-split/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/split + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-split/package.json b/packages/adapter-split/package.json index 958cdc9..0f31201 100644 --- a/packages/adapter-split/package.json +++ b/packages/adapter-split/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/split", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/adapter-statsig/CHANGELOG.md b/packages/adapter-statsig/CHANGELOG.md new file mode 100644 index 0000000..9f3a40b --- /dev/null +++ b/packages/adapter-statsig/CHANGELOG.md @@ -0,0 +1,7 @@ +# @flags-sdk/statsig + +## 0.1.0 + +### Minor Changes + +- 3c66284: initialize diff --git a/packages/adapter-statsig/package.json b/packages/adapter-statsig/package.json index 577814e..89825e6 100644 --- a/packages/adapter-statsig/package.json +++ b/packages/adapter-statsig/package.json @@ -1,6 +1,6 @@ { "name": "@flags-sdk/statsig", - "version": "0.0.0", + "version": "0.1.0", "description": "", "keywords": [], "license": "MIT", diff --git a/packages/flags/CHANGELOG.md b/packages/flags/CHANGELOG.md index c301bb3..096b790 100644 --- a/packages/flags/CHANGELOG.md +++ b/packages/flags/CHANGELOG.md @@ -1,5 +1,70 @@ # @vercel/flags +## 3.0.0 + +### Major Changes + +- db89f0d: - **BREAKING CHANGE** removed all `unstable_` prefixes, e.g. `unstable_flag` is now `flag` + + - **BREAKING CHANGE** removed `getPrecomputationContext`, use `dedupe` instead (see below) + - **BREAKING CHANGE** moved all provider functions to dedicated packages + - `@vercel/flags/providers/launchdarkly` → `@flags-sdk/launchdarkly` + - `@vercel/flags/providers/statsig` → `@flags-sdk/statsig` + - `@vercel/flags/providers/split` → `@flags-sdk/split` + - `@vercel/flags/providers/hypertune` → `@flags-sdk/hypertune` + - `@vercel/flags/providers/optimizely` → `@flags-sdk/optimizely` + - `@vercel/flags/providers/happykit` → `@flags-sdk/happykit` + - **BREAKING CHANGE** changed `.run({})` behavior + + See [flags-sdk.com](https://flags-sdk.com/) for the latest APIs. + +- db89f0d: remove unstable\_ prefixes + +### Minor Changes + +- db89f0d: **@vercel/flags/next: Added a `dedupe` function** + + `dedupe` is a middleware-friendly version of `React.cache`. It allows ensuring a function only ever runs once per request. + + ```ts + import { dedupe } from '@vercel/flags/next'; + + let i = 0; + const runOnce = dedupe(async () => { + return i++; + }); + + await runOnce(); // returns 0 + await runOnce(); // still returns 0 + ``` + + This function is useful when you want to deduplicate work within each feature flag's `decide` function. For example if multiple flags need to check auth you can dedupe the auth function so it only runs once per request. + + `dedupe` is also useful to optimistically generate a random visitor id to be set in a cookie, while also allowing each feature flag to access the id. You can call a dedupe'd function to generate the random id within your Edge Middleware and also within your feature flag's `decide` functions. The function will return a consistent id. + + ```ts + import { nanoid } from 'nanoid'; + import { cookies, headers } from 'next/headers'; + import { dedupe } from '@vercel/flags/next'; + + /** + * Reads the visitor id from a cookie or returns a new visitor id + */ + export const getOrGenerateVisitorId = dedupe( + async (): Promise<{ value: string; fresh: boolean }> => { + const visitorIdCookie = (await cookies()).get('visitor-id')?.value; + + return visitorIdCookie + ? { value: visitorIdCookie, fresh: false } + : { value: nanoid(), fresh: true }; + }, + ); + ``` + + > Note: "once per request" is an imprecise description. A `dedupe`d function actually runs once per request, per compute instance. If a dedupe'd function is used in Edge Middleware and in a React Server Component it will run twice, as there are two separate compute instances handling this request. + + > Note: This function acts as a sort of polyfill until similar functionality lands in Next.js directly. + ## 2.7.0 ### Minor Changes diff --git a/packages/flags/package.json b/packages/flags/package.json index c01b214..946aeab 100644 --- a/packages/flags/package.json +++ b/packages/flags/package.json @@ -1,6 +1,6 @@ { "name": "@vercel/flags", - "version": "2.7.0", + "version": "3.0.0", "description": "Make the Vercel Toolbar aware of your feature flags and read overrides set by it", "keywords": [ "feature flags",