From 3c9e85cab5689409ffbc2d12df8e8476b1311fec Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Fri, 7 Feb 2020 11:55:09 -0500 Subject: [PATCH] [WIP] Add window.optimizelyDatafile interface --- packages/optimizely-sdk/lib/index.d.ts | 71 +++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/packages/optimizely-sdk/lib/index.d.ts b/packages/optimizely-sdk/lib/index.d.ts index 59e4f37ca..79db4fbb0 100644 --- a/packages/optimizely-sdk/lib/index.d.ts +++ b/packages/optimizely-sdk/lib/index.d.ts @@ -35,10 +35,79 @@ declare module "@optimizely/optimizely-sdk" { updateInterval?: number; urlTemplate?: string; } + + /** + * The shape of `window.optimizelyDatafile` + * @todo array objects need typing. + */ + export interface Datafile { + version: string; + /** + * rollouts: Rollout[]; + */ + rollouts: { experiments: any[] }[]; + typedAudiences: any[]; + anonymizeIP: boolean; + projectId: string; + variables: any[]; + /** + * featureFlags: FeatureFlag[]; + */ + featureFlags: { + experimentIds: string[]; + rolloutId: string; + variables: any[]; + id: string; + key: string; + }[]; + /** + * experiments: Experiment[]; + */ + experiments: { + status: string; + audienceIds: string[]; + variations: { + variables: any[]; + id: string; + key: string; + }[]; + id: string; + key: string; + layerId: string; + trafficAllocation: { + entityId: string; + endOfRange: number; + }[]; + forcedVariations: { + [key: string]: string; + }; + }[]; + /** + * audiences: Audience[]; + */ + audiences: any[]; + groups: any[]; + attributes: { + id: string; + key: string; + }[]; + botFiltering: boolean; + accountId: string; + /** + * events: Event[]; + * - note namespace conflits + */ + events: { + experimentIds: string[]; + id: string; + key: string; + }[]; + revision: string; + } // The options object given to Optimizely.createInstance. export interface Config { - datafile?: object | string; + datafile?: Datafile | object | string; datafileOptions?: DatafileOptions; errorHandler?: ErrorHandler; eventDispatcher?: EventDispatcher;