diff --git a/package-lock.json b/package-lock.json index 206e9f0..91b04ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@harnessio/ff-nodejs-server-sdk", - "version": "1.6.2", + "version": "1.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@harnessio/ff-nodejs-server-sdk", - "version": "1.6.2", + "version": "1.7.0", "license": "Apache-2.0", "dependencies": { "axios": "^1.6.8", diff --git a/package.json b/package.json index d196c55..568bbf6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@harnessio/ff-nodejs-server-sdk", - "version": "1.6.2", + "version": "1.7.0", "description": "Feature flags SDK for NodeJS environments", "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", diff --git a/src/client.ts b/src/client.ts index 0db6e80..77ca98c 100644 --- a/src/client.ts +++ b/src/client.ts @@ -44,6 +44,8 @@ export enum Event { CHANGED = 'changed', } +export const SDK_INFO = `NodeJS ${VERSION} Server`; + export default class Client { private evaluator: Evaluator; private repository: Repository; @@ -91,6 +93,7 @@ export default class Client { baseOptions: { headers: { 'User-Agent': `NodeJsSDK/${VERSION}`, + 'Harness-SDK-Info': SDK_INFO, }, }, }); @@ -229,6 +232,16 @@ export default class Client { ); } + if (decoded.accountID) { + this.configuration.baseOptions.headers['Harness-AccountID'] = + decoded.accountID; + } + + if (decoded.environmentIdentifier) { + this.configuration.baseOptions.headers['Harness-EnvironmentID'] = + decoded.environmentIdentifier; + } + this.environment = decoded.environment; this.cluster = decoded.clusterIdentifier || '1'; } catch (error) { @@ -327,6 +340,7 @@ export default class Client { this.cluster, this.eventBus, this.repository, + this.configuration.baseOptions.headers, ); this.streamProcessor.start(); diff --git a/src/streaming.ts b/src/streaming.ts index c480659..3dc8063 100644 --- a/src/streaming.ts +++ b/src/streaming.ts @@ -33,6 +33,7 @@ export class StreamProcessor { private readonly api: ClientApi; private readonly repository: Repository; private readonly retryDelayMs: number; + private readonly headers: Record; private options: Options; private request: ClientRequest; @@ -50,6 +51,7 @@ export class StreamProcessor { cluster: string, eventBus: EventEmitter, repository: Repository, + headers: Record, ) { this.api = api; this.apiKey = apiKey; @@ -66,6 +68,7 @@ export class StreamProcessor { this.retryDelayMs = Math.floor( Math.random() * (maxDelay - minDelay) + minDelay, ); + this.headers = headers; } start(): void { @@ -79,6 +82,7 @@ export class StreamProcessor { Accept: 'text/event-stream', Authorization: `Bearer ${this.jwtToken}`, 'API-Key': this.apiKey, + ...this.headers, }, }; diff --git a/src/version.ts b/src/version.ts index e946876..f5ddf13 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '1.6.2'; +export const VERSION = '1.7.0';