Skip to content

Commit c201a8f

Browse files
committed
Add missing declaration
1 parent 7b7789d commit c201a8f

File tree

4 files changed

+43
-31
lines changed

4 files changed

+43
-31
lines changed

packages/optimizely-sdk/lib/core/datafile_manager/index.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,11 @@ import { HttpPollingDatafileManager } from '@optimizely/js-sdk-datafile-manager'
1717

1818
import { DatafileManagerConfig } from '../../shared_types';
1919

20-
export class DefaultHttpPollingDatafileManager extends HttpPollingDatafileManager {
21-
// TODO: define makeGetRequest method
22-
// eslint-disable-next-line
23-
protected makeGetRequest(): any {};
2420

25-
// TODO: define getConfigDefaults method
26-
// eslint-disable-next-line
27-
protected getConfigDefaults(): any {};
28-
}
29-
30-
export function createDefaultHttpPollingDatafileManager(
21+
export function createHttpPollingDatafileManager(
3122
config: DatafileManagerConfig
32-
): DefaultHttpPollingDatafileManager {
33-
return new DefaultHttpPollingDatafileManager(config);
23+
): HttpPollingDatafileManager {
24+
return new HttpPollingDatafileManager(config);
3425
}
26+
27+
export type { HttpPollingDatafileManager } from '@optimizely/js-sdk-datafile-manager';

packages/optimizely-sdk/lib/core/project_config/project_config_manager.tests.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('lib/core/project_config/project_config_manager', function() {
3131
var globalStubErrorHandler;
3232
var stubLogHandler;
3333
beforeEach(function() {
34-
sinon.stub(datafileManager, 'createDefaultHttpPollingDatafileManager').returns({
34+
sinon.stub(datafileManager, 'createHttpPollingDatafileManager').returns({
3535
start: sinon.stub(),
3636
stop: sinon.stub(),
3737
get: sinon.stub().returns(null),
@@ -50,7 +50,7 @@ describe('lib/core/project_config/project_config_manager', function() {
5050
});
5151

5252
afterEach(function() {
53-
datafileManager.createDefaultHttpPollingDatafileManager.restore();
53+
datafileManager.createHttpPollingDatafileManager.restore();
5454
logging.resetErrorHandler();
5555
logging.resetLogger();
5656
});
@@ -185,9 +185,9 @@ describe('lib/core/project_config/project_config_manager', function() {
185185
updateInterval: 10000,
186186
},
187187
});
188-
sinon.assert.calledOnce(datafileManager.createDefaultHttpPollingDatafileManager);
188+
sinon.assert.calledOnce(datafileManager.createHttpPollingDatafileManager);
189189
sinon.assert.calledWithExactly(
190-
datafileManager.createDefaultHttpPollingDatafileManager,
190+
datafileManager.createHttpPollingDatafileManager,
191191
sinon.match({
192192
datafile: JSON.stringify(config),
193193
sdkKey: '12345',
@@ -200,7 +200,7 @@ describe('lib/core/project_config/project_config_manager', function() {
200200
describe('when constructed with sdkKey and without datafile', function() {
201201
it('updates itself when the datafile manager is ready, fulfills its onReady promise with a successful result, and then emits updates', function() {
202202
var configWithFeatures = testData.getTestProjectConfigWithFeatures();
203-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
203+
datafileManager.createHttpPollingDatafileManager.returns({
204204
start: sinon.stub(),
205205
stop: sinon.stub(),
206206
get: sinon.stub().returns(JSON.stringify(cloneDeep(configWithFeatures))),
@@ -229,7 +229,7 @@ describe('lib/core/project_config/project_config_manager', function() {
229229
variations: [{ key: 'variation', id: '99977477477747747' }],
230230
});
231231
nextDatafile.revision = '36';
232-
var fakeDatafileManager = datafileManager.createDefaultHttpPollingDatafileManager.getCall(0).returnValue;
232+
var fakeDatafileManager = datafileManager.createHttpPollingDatafileManager.getCall(0).returnValue;
233233
fakeDatafileManager.get.returns(cloneDeep(nextDatafile));
234234
var updateListener = fakeDatafileManager.on.getCall(0).args[1];
235235
updateListener({ datafile: nextDatafile });
@@ -238,7 +238,7 @@ describe('lib/core/project_config/project_config_manager', function() {
238238
});
239239

240240
it('calls onUpdate listeners after becoming ready, and after the datafile manager emits updates', function() {
241-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
241+
datafileManager.createHttpPollingDatafileManager.returns({
242242
start: sinon.stub(),
243243
stop: sinon.stub(),
244244
get: sinon.stub().returns(JSON.stringify(testData.getTestProjectConfigWithFeatures())),
@@ -253,7 +253,7 @@ describe('lib/core/project_config/project_config_manager', function() {
253253
return manager.onReady().then(function() {
254254
sinon.assert.calledOnce(onUpdateSpy);
255255

256-
var fakeDatafileManager = datafileManager.createDefaultHttpPollingDatafileManager.getCall(0).returnValue;
256+
var fakeDatafileManager = datafileManager.createHttpPollingDatafileManager.getCall(0).returnValue;
257257
var updateListener = fakeDatafileManager.on.getCall(0).args[1];
258258
var newDatafile = testData.getTestProjectConfigWithFeatures();
259259
newDatafile.revision = '36';
@@ -265,7 +265,7 @@ describe('lib/core/project_config/project_config_manager', function() {
265265
});
266266

267267
it('can remove onUpdate listeners using the function returned from onUpdate', function() {
268-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
268+
datafileManager.createHttpPollingDatafileManager.returns({
269269
start: sinon.stub(),
270270
stop: sinon.stub(),
271271
get: sinon.stub().returns(JSON.stringify(testData.getTestProjectConfigWithFeatures())),
@@ -279,7 +279,7 @@ describe('lib/core/project_config/project_config_manager', function() {
279279
var onUpdateSpy = sinon.spy();
280280
var unsubscribe = manager.onUpdate(onUpdateSpy);
281281

282-
var fakeDatafileManager = datafileManager.createDefaultHttpPollingDatafileManager.getCall(0).returnValue;
282+
var fakeDatafileManager = datafileManager.createHttpPollingDatafileManager.getCall(0).returnValue;
283283
var updateListener = fakeDatafileManager.on.getCall(0).args[1];
284284
var newDatafile = testData.getTestProjectConfigWithFeatures();
285285
newDatafile.revision = '36';
@@ -303,7 +303,7 @@ describe('lib/core/project_config/project_config_manager', function() {
303303
it('fulfills its ready promise with an unsuccessful result when the datafile manager emits an invalid datafile', function() {
304304
var invalidDatafile = testData.getTestProjectConfig();
305305
delete invalidDatafile['projectId'];
306-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
306+
datafileManager.createHttpPollingDatafileManager.returns({
307307
start: sinon.stub(),
308308
stop: sinon.stub(),
309309
get: sinon.stub().returns(JSON.stringify(invalidDatafile)),
@@ -322,7 +322,7 @@ describe('lib/core/project_config/project_config_manager', function() {
322322
});
323323

324324
it('fullfils its ready promise with an unsuccessful result when the datafile manager onReady promise rejects', function() {
325-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
325+
datafileManager.createHttpPollingDatafileManager.returns({
326326
start: sinon.stub(),
327327
stop: sinon.stub(),
328328
get: sinon.stub().returns(null),
@@ -345,7 +345,7 @@ describe('lib/core/project_config/project_config_manager', function() {
345345
sdkKey: '12345',
346346
});
347347
manager.stop();
348-
sinon.assert.calledOnce(datafileManager.createDefaultHttpPollingDatafileManager.getCall(0).returnValue.stop);
348+
sinon.assert.calledOnce(datafileManager.createHttpPollingDatafileManager.getCall(0).returnValue.stop);
349349
});
350350

351351
it('does not log an error message', function() {
@@ -358,7 +358,7 @@ describe('lib/core/project_config/project_config_manager', function() {
358358

359359
describe('when constructed with sdkKey and with a valid datafile object', function() {
360360
it('fulfills its onReady promise with a successful result, and does not call onUpdate listeners after becoming ready', function() {
361-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
361+
datafileManager.createHttpPollingDatafileManager.returns({
362362
start: sinon.stub(),
363363
stop: sinon.stub(),
364364
get: sinon.stub().returns(JSON.stringify(testData.getTestProjectConfigWithFeatures())),
@@ -385,7 +385,7 @@ describe('lib/core/project_config/project_config_manager', function() {
385385

386386
describe('when constructed with sdkKey and with a valid datafile string', function() {
387387
it('fulfills its onReady promise with a successful result, and does not call onUpdate listeners after becoming ready', function() {
388-
datafileManager.createDefaultHttpPollingDatafileManager.returns({
388+
datafileManager.createHttpPollingDatafileManager.returns({
389389
start: sinon.stub(),
390390
stop: sinon.stub(),
391391
get: sinon.stub().returns(JSON.stringify(testData.getTestProjectConfigWithFeatures())),
@@ -430,7 +430,7 @@ describe('lib/core/project_config/project_config_manager', function() {
430430
manager.getOptimizelyConfig();
431431
sinon.assert.calledOnce(optimizelyConfig.createOptimizelyConfig);
432432
// create config with new revision
433-
var fakeDatafileManager = datafileManager.createDefaultHttpPollingDatafileManager.getCall(0).returnValue;
433+
var fakeDatafileManager = datafileManager.createHttpPollingDatafileManager.getCall(0).returnValue;
434434
var updateListener = fakeDatafileManager.on.getCall(0).args[1];
435435
var newDatafile = testData.getTestProjectConfigWithFeatures();
436436
newDatafile.revision = '36';

packages/optimizely-sdk/lib/core/project_config/project_config_manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import { sprintf } from '@optimizely/js-sdk-utils';
1717
import { getLogger } from '@optimizely/js-sdk-logging';
1818

19-
import { DefaultHttpPollingDatafileManager, createDefaultHttpPollingDatafileManager } from '../datafile_manager';
19+
import { HttpPollingDatafileManager, createHttpPollingDatafileManager } from '../datafile_manager';
2020
import fns from '../../utils/fns';
2121
import { ERROR_MESSAGES } from '../../utils/enums';
2222
import projectConfig from '../../core/project_config';
@@ -64,7 +64,7 @@ export class ProjectConfigManager {
6464
private optimizelyConfigObj: OptimizelyConfig | null;
6565
private readyPromise: Promise<{ success: boolean; reason?: string }>;
6666
public jsonSchemaValidator: { validate(jsonObject: unknown): boolean } | undefined;
67-
public datafileManager: DefaultHttpPollingDatafileManager | null;
67+
public datafileManager: HttpPollingDatafileManager | null;
6868

6969
constructor(config: ProjectConfigManagerConfig) {
7070
try {
@@ -99,7 +99,7 @@ export class ProjectConfigManager {
9999
if (this.configObj) {
100100
datafileManagerConfig.datafile = projectConfig.toDatafile(this.configObj)
101101
}
102-
this.datafileManager = createDefaultHttpPollingDatafileManager(datafileManagerConfig);
102+
this.datafileManager = createHttpPollingDatafileManager(datafileManagerConfig);
103103
this.datafileManager.start();
104104
this.readyPromise = this.datafileManager
105105
.onReady()

packages/optimizely-sdk/typings/murmurhash.d.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,22 @@ declare module 'murmurhash' {
88
*/
99
function v3(key: string | Uint8Array, seed?: number): number;
1010
}
11+
12+
declare module '@optimizely/js-sdk-datafile-manager' {
13+
interface DatafileManagerConfig {
14+
sdkKey: string;
15+
}
16+
interface DatafileUpdate {
17+
datafile: string;
18+
}
19+
type Disposer = () => void;
20+
21+
export class HttpPollingDatafileManager {
22+
constructor(config: DatafileManagerConfig);
23+
start(): void;
24+
onReady(): Promise<void>;
25+
on(eventName: string, listener: (datafileUpdate: DatafileUpdate) => void): Disposer;
26+
get(): string;
27+
stop(): Promise<void>;
28+
}
29+
}

0 commit comments

Comments
 (0)