@flagsync/nextjs-sdk 0.3.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/identify.ts"],"sourcesContent":["export type {\n CustomAttributes,\n CustomAttributeValue,\n FsConfig,\n FsClient,\n LogLevel,\n FsUserContext,\n FeatureFlags,\n FlagKey,\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/identify.ts"],"sourcesContent":["export type {\n CustomAttributes,\n CustomAttributeValue,\n FsConfig,\n FsClient,\n LogLevel,\n FsUserContext,\n FeatureFlags,\n FlagKey,\n} from '@flagsync/node-sdk';\n\nexport { SyncType } from '@flagsync/node-sdk';\n\nexport type { JsonObject } from './types';\n\nexport { createFlagSyncClient, createFlagSyncAdapter } from './adapter';\n\nexport { createIdentify } from './identify';\n","import {\n FeatureFlags,\n FlagKey,\n FlagSyncFactory,\n FsClient,\n type FsConfig,\n type FsUserContext,\n} from '@flagsync/node-sdk';\nimport type { Adapter } from 'flags';\n\nexport type TypedFeatureFlags = keyof FeatureFlags extends never\n ? Record<string, unknown>\n : { [K in keyof FeatureFlags]: FeatureFlags[K] };\n\n/**\n * Creates a FlagSync client instance that can be used across multiple feature flags.\n * This function should be called once to create a singleton client for your application.\n */\nexport function createFlagSyncClient(config: FsConfig): FsClient {\n const instance = FlagSyncFactory({\n ...config,\n metadata: {\n sdkName: '@flagsync/nextjs-sdk',\n sdkVersion: '1.0.0',\n },\n });\n return instance.client();\n}\n\n/**\n * Creates an adapter factory that integrates FlagSync with Vercel's feature flag system.\n * This adapter handles the communication between your application and the FlagSync service.\n */\nexport function createFlagSyncAdapter(client: FsClient) {\n let isReady = false;\n\n /**\n * Ensures the FlagSync client is ready before making any flag decisions.\n * This is called internally before each flag evaluation.\n */\n const ensureReady = async () => {\n if (!isReady) {\n await client.waitForReady();\n isReady = true;\n }\n };\n\n /**\n * Creates a typed adapter instance for a specific flag value type.\n */\n return function flagSyncAdapter<Key extends FlagKey>(): Adapter<\n TypedFeatureFlags[Key],\n FsUserContext\n > {\n return {\n /**\n * Evaluates a feature flag for a given context and returns its value.\n */\n async decide({ key, entities, defaultValue }) {\n await ensureReady();\n\n const userContext: FsUserContext = {\n key: 'anonymous',\n ...(entities ?? {}),\n };\n\n return client.flag<Key>(\n userContext,\n key as Key,\n defaultValue,\n ) as TypedFeatureFlags[Key];\n },\n };\n };\n}\n","import { FsUserContext } from '@flagsync/node-sdk';\nimport { Identify } from 'flags';\n\ntype ExtractParams<T> = T extends (params: infer P) => any ? P : never;\n\nexport const createIdentify =\n (\n callback: (\n params: ExtractParams<Identify<FsUserContext>>,\n ) => Promise<FsUserContext> | FsUserContext,\n ): Identify<FsUserContext> =>\n (params) =>\n callback(params);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAAA,mBAAyB;;;ACXzB,sBAOO;AAWA,SAAS,qBAAqB,QAA4B;AAC/D,QAAM,eAAW,iCAAgB;AAAA,IAC/B,GAAG;AAAA,IACH,UAAU;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AACD,SAAO,SAAS,OAAO;AACzB;AAMO,SAAS,sBAAsB,QAAkB;AACtD,MAAI,UAAU;AAMd,QAAM,cAAc,YAAY;AAC9B,QAAI,CAAC,SAAS;AACZ,YAAM,OAAO,aAAa;AAC1B,gBAAU;AAAA,IACZ;AAAA,EACF;AAKA,SAAO,SAAS,kBAGd;AACA,WAAO;AAAA;AAAA;AAAA;AAAA,MAIL,MAAM,OAAO,EAAE,KAAK,UAAU,aAAa,GAAG;AAC5C,cAAM,YAAY;AAElB,cAAM,cAA6B;AAAA,UACjC,KAAK;AAAA,UACL,GAAI,YAAY,CAAC;AAAA,QACnB;AAEA,eAAO,OAAO;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrEO,IAAM,iBACX,CACE,aAIF,CAAC,WACC,SAAS,MAAM;","names":["import_node_sdk"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FsConfig, FsClient, FlagKey, FeatureFlags, FsUserContext } from '@flagsync/node-sdk';
|
|
2
|
-
export { CustomAttributeValue, CustomAttributes, FeatureFlags, FlagKey, FsClient, FsConfig, FsUserContext, LogLevel, SyncType
|
|
2
|
+
export { CustomAttributeValue, CustomAttributes, FeatureFlags, FlagKey, FsClient, FsConfig, FsUserContext, LogLevel, SyncType } from '@flagsync/node-sdk';
|
|
3
3
|
import { Adapter, Identify } from 'flags';
|
|
4
4
|
|
|
5
5
|
type JsonPrimitive = string | number | boolean | null;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FsConfig, FsClient, FlagKey, FeatureFlags, FsUserContext } from '@flagsync/node-sdk';
|
|
2
|
-
export { CustomAttributeValue, CustomAttributes, FeatureFlags, FlagKey, FsClient, FsConfig, FsUserContext, LogLevel, SyncType
|
|
2
|
+
export { CustomAttributeValue, CustomAttributes, FeatureFlags, FlagKey, FsClient, FsConfig, FsUserContext, LogLevel, SyncType } from '@flagsync/node-sdk';
|
|
3
3
|
import { Adapter, Identify } from 'flags';
|
|
4
4
|
|
|
5
5
|
type JsonPrimitive = string | number | boolean | null;
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/identify.ts"],"sourcesContent":["export type {\n CustomAttributes,\n CustomAttributeValue,\n FsConfig,\n FsClient,\n LogLevel,\n FsUserContext,\n FeatureFlags,\n FlagKey,\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/identify.ts"],"sourcesContent":["export type {\n CustomAttributes,\n CustomAttributeValue,\n FsConfig,\n FsClient,\n LogLevel,\n FsUserContext,\n FeatureFlags,\n FlagKey,\n} from '@flagsync/node-sdk';\n\nexport { SyncType } from '@flagsync/node-sdk';\n\nexport type { JsonObject } from './types';\n\nexport { createFlagSyncClient, createFlagSyncAdapter } from './adapter';\n\nexport { createIdentify } from './identify';\n","import {\n FeatureFlags,\n FlagKey,\n FlagSyncFactory,\n FsClient,\n type FsConfig,\n type FsUserContext,\n} from '@flagsync/node-sdk';\nimport type { Adapter } from 'flags';\n\nexport type TypedFeatureFlags = keyof FeatureFlags extends never\n ? Record<string, unknown>\n : { [K in keyof FeatureFlags]: FeatureFlags[K] };\n\n/**\n * Creates a FlagSync client instance that can be used across multiple feature flags.\n * This function should be called once to create a singleton client for your application.\n */\nexport function createFlagSyncClient(config: FsConfig): FsClient {\n const instance = FlagSyncFactory({\n ...config,\n metadata: {\n sdkName: '@flagsync/nextjs-sdk',\n sdkVersion: '1.0.0',\n },\n });\n return instance.client();\n}\n\n/**\n * Creates an adapter factory that integrates FlagSync with Vercel's feature flag system.\n * This adapter handles the communication between your application and the FlagSync service.\n */\nexport function createFlagSyncAdapter(client: FsClient) {\n let isReady = false;\n\n /**\n * Ensures the FlagSync client is ready before making any flag decisions.\n * This is called internally before each flag evaluation.\n */\n const ensureReady = async () => {\n if (!isReady) {\n await client.waitForReady();\n isReady = true;\n }\n };\n\n /**\n * Creates a typed adapter instance for a specific flag value type.\n */\n return function flagSyncAdapter<Key extends FlagKey>(): Adapter<\n TypedFeatureFlags[Key],\n FsUserContext\n > {\n return {\n /**\n * Evaluates a feature flag for a given context and returns its value.\n */\n async decide({ key, entities, defaultValue }) {\n await ensureReady();\n\n const userContext: FsUserContext = {\n key: 'anonymous',\n ...(entities ?? {}),\n };\n\n return client.flag<Key>(\n userContext,\n key as Key,\n defaultValue,\n ) as TypedFeatureFlags[Key];\n },\n };\n };\n}\n","import { FsUserContext } from '@flagsync/node-sdk';\nimport { Identify } from 'flags';\n\ntype ExtractParams<T> = T extends (params: infer P) => any ? P : never;\n\nexport const createIdentify =\n (\n callback: (\n params: ExtractParams<Identify<FsUserContext>>,\n ) => Promise<FsUserContext> | FsUserContext,\n ): Identify<FsUserContext> =>\n (params) =>\n callback(params);\n"],"mappings":";AAWA,SAAS,gBAAgB;;;ACXzB;AAAA,EAGE;AAAA,OAIK;AAWA,SAAS,qBAAqB,QAA4B;AAC/D,QAAM,WAAW,gBAAgB;AAAA,IAC/B,GAAG;AAAA,IACH,UAAU;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AACD,SAAO,SAAS,OAAO;AACzB;AAMO,SAAS,sBAAsB,QAAkB;AACtD,MAAI,UAAU;AAMd,QAAM,cAAc,YAAY;AAC9B,QAAI,CAAC,SAAS;AACZ,YAAM,OAAO,aAAa;AAC1B,gBAAU;AAAA,IACZ;AAAA,EACF;AAKA,SAAO,SAAS,kBAGd;AACA,WAAO;AAAA;AAAA;AAAA;AAAA,MAIL,MAAM,OAAO,EAAE,KAAK,UAAU,aAAa,GAAG;AAC5C,cAAM,YAAY;AAElB,cAAM,cAA6B;AAAA,UACjC,KAAK;AAAA,UACL,GAAI,YAAY,CAAC;AAAA,QACnB;AAEA,eAAO,OAAO;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrEO,IAAM,iBACX,CACE,aAIF,CAAC,WACC,SAAS,MAAM;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flagsync/nextjs-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "FlagSync adapter for Vercel's Flags SDK",
|
|
5
5
|
"author": "Mike Chabot",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"flags": "^4.0.1"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@flagsync/node-sdk": "^0.5.
|
|
42
|
+
"@flagsync/node-sdk": "^0.5.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|