diff --git a/packages/node/package.json b/packages/node/package.json index 141d859..41de392 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -30,6 +30,6 @@ "homepage": "https://github.com/amplitude/experiment-node-server#readme", "gitHead": "e8ceef5275b6daf4f7f26c6ac2e1683eeba7aca6", "dependencies": { - "@amplitude/evaluation-js": "1.0.0" + "@amplitude/evaluation-js": "1.1.0" } } diff --git a/packages/node/src/local/client.ts b/packages/node/src/local/client.ts index 745277d..e829b11 100644 --- a/packages/node/src/local/client.ts +++ b/packages/node/src/local/client.ts @@ -8,7 +8,7 @@ import { import { FlagConfig, FlagConfigCache } from '../types/flag'; import { HttpClient } from '../types/transport'; import { ExperimentUser } from '../types/user'; -import { Variants } from '../types/variant'; +import { Results, Variants } from '../types/variant'; import { ConsoleLogger } from '../util/logger'; import { Logger } from '../util/logger'; @@ -80,9 +80,17 @@ export class LocalEvaluationClient { 'flagConfigs:', flagConfigs, ); - const results: Variants = evaluation.evaluate(flagConfigs, user); - this.logger.debug('[Experiment] evaluate - result: ', results); - return results; + const results: Results = evaluation.evaluate(flagConfigs, user); + const variants: Variants = {}; + for (const flagKey in results) { + const flagResult = results[flagKey]; + variants[flagKey] = { + value: flagResult.value, + payload: flagResult.payload, + }; + } + this.logger.debug('[Experiment] evaluate - variants: ', variants); + return variants; } /** diff --git a/packages/node/src/local/fetcher.ts b/packages/node/src/local/fetcher.ts index 897b6f8..9269f2c 100644 --- a/packages/node/src/local/fetcher.ts +++ b/packages/node/src/local/fetcher.ts @@ -34,7 +34,7 @@ export class FlagConfigFetcher { * environment */ public async fetch(): Promise> { - const endpoint = `${this.serverUrl}/sdk/rules?eval_mode=local`; + const endpoint = `${this.serverUrl}/sdk/v1/flags`; const headers = { Authorization: `Api-Key ${this.apiKey}`, Accept: 'application/json', diff --git a/packages/node/src/types/variant.ts b/packages/node/src/types/variant.ts index d39f163..df00410 100644 --- a/packages/node/src/types/variant.ts +++ b/packages/node/src/types/variant.ts @@ -20,3 +20,16 @@ export type Variant = { export type Variants = { [flagKey: string]: Variant; }; + +export type FlagResult = { + value: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + payload: any | null | undefined; + expKey: string | null | undefined; + deployed: boolean; + type: string; +}; + +export type Results = { + [flagKey: string]: FlagResult; +}; diff --git a/yarn.lock b/yarn.lock index 72612af..17caaf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@amplitude/evaluation-js@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@amplitude/evaluation-js/-/evaluation-js-1.0.0.tgz#1ae828379d3600f433b37a505514b756c94678ef" - integrity sha512-U2ibGJ+5XLwfyHPmwDdxkqWhxxmZBs/gnPWalKBnmcY4zGXfBi2XkGbHsghlAD3XD3vZ1eMl7xqhHp3CWtpp/g== +"@amplitude/evaluation-js@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@amplitude/evaluation-js/-/evaluation-js-1.1.0.tgz#e8c0ae9843165d5b6ab3183df5ba7f54c523faa7" + integrity sha512-//PMRmRrmBQMA94hYrDKWvU+037IDxM3rfdyPS3GiQKXMTg6CWPZWsOVlbD2RtXf0QMx5C7q2O6bCjId4tsUWQ== "@amplitude/experiment-js-client@^0.2.0": version "0.2.0"