@splitsoftware/splitio-commons 3.0.0-rc.4 → 3.0.0-rc.5

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.
Files changed (58) hide show
  1. package/cjs/listeners/browser.js +2 -2
  2. package/cjs/presets/serverSide.js +2 -2
  3. package/cjs/sdkClient/sdkLifecycle.js +2 -2
  4. package/cjs/sdkFactory/index.js +4 -4
  5. package/cjs/services/authProvider.js +1 -1
  6. package/cjs/services/serviceApi.js +145 -0
  7. package/cjs/services/splitApi.js +13 -14
  8. package/cjs/sync/polling/fetchers/splitChangesFetcher.js +1 -1
  9. package/cjs/sync/polling/pollingManagerCS.js +2 -2
  10. package/cjs/sync/streaming/AuthClient/index.js +1 -1
  11. package/cjs/sync/streaming/pushManager.js +2 -2
  12. package/cjs/sync/submitters/eventsSubmitter.js +1 -1
  13. package/cjs/sync/submitters/impressionCountsSubmitter.js +1 -1
  14. package/cjs/sync/submitters/impressionsSubmitter.js +1 -1
  15. package/cjs/sync/submitters/telemetrySubmitter.js +3 -3
  16. package/cjs/sync/submitters/uniqueKeysSubmitter.js +1 -1
  17. package/cjs/sync/syncManagerOnline.js +1 -1
  18. package/cjs/utils/settingsValidation/index.js +1 -1
  19. package/esm/listeners/browser.js +2 -2
  20. package/esm/presets/serverSide.js +2 -2
  21. package/esm/sdkClient/sdkLifecycle.js +2 -2
  22. package/esm/sdkFactory/index.js +4 -4
  23. package/esm/services/authProvider.js +1 -1
  24. package/esm/services/serviceApi.js +141 -0
  25. package/esm/services/splitApi.js +13 -14
  26. package/esm/sync/polling/fetchers/splitChangesFetcher.js +1 -1
  27. package/esm/sync/polling/pollingManagerCS.js +2 -2
  28. package/esm/sync/streaming/AuthClient/index.js +1 -1
  29. package/esm/sync/streaming/pushManager.js +2 -2
  30. package/esm/sync/submitters/eventsSubmitter.js +1 -1
  31. package/esm/sync/submitters/impressionCountsSubmitter.js +1 -1
  32. package/esm/sync/submitters/impressionsSubmitter.js +1 -1
  33. package/esm/sync/submitters/telemetrySubmitter.js +3 -3
  34. package/esm/sync/submitters/uniqueKeysSubmitter.js +1 -1
  35. package/esm/sync/syncManagerOnline.js +1 -1
  36. package/esm/utils/settingsValidation/index.js +1 -1
  37. package/package.json +1 -1
  38. package/src/listeners/browser.ts +4 -4
  39. package/src/presets/serverSide.ts +2 -2
  40. package/src/sdkClient/sdkLifecycle.ts +2 -2
  41. package/src/sdkFactory/index.ts +4 -4
  42. package/src/sdkFactory/types.ts +7 -7
  43. package/src/services/authProvider.ts +1 -1
  44. package/src/services/serviceApi.ts +166 -0
  45. package/src/services/splitApi.ts +19 -18
  46. package/src/services/types.ts +1 -1
  47. package/src/sync/polling/fetchers/splitChangesFetcher.ts +1 -1
  48. package/src/sync/polling/pollingManagerCS.ts +2 -2
  49. package/src/sync/streaming/AuthClient/index.ts +1 -1
  50. package/src/sync/streaming/pushManager.ts +2 -2
  51. package/src/sync/submitters/eventsSubmitter.ts +1 -1
  52. package/src/sync/submitters/impressionCountsSubmitter.ts +1 -1
  53. package/src/sync/submitters/impressionsSubmitter.ts +1 -1
  54. package/src/sync/submitters/telemetrySubmitter.ts +3 -3
  55. package/src/sync/submitters/uniqueKeysSubmitter.ts +1 -1
  56. package/src/sync/syncManagerOnline.ts +1 -1
  57. package/src/utils/settingsValidation/index.ts +1 -1
  58. package/types/splitio.d.ts +3 -3
@@ -14,11 +14,11 @@ var EVENT_NAME = 'for visibilitychange and pagehide events.';
14
14
  */
15
15
  var BrowserSignalListener = /** @class */ (function () {
16
16
  function BrowserSignalListener(_a) {
17
- var syncManager = _a.syncManager, settings = _a.settings, storage = _a.storage, splitApi = _a.splitApi, entityType = _a.entityType;
17
+ var syncManager = _a.syncManager, settings = _a.settings, storage = _a.storage, serviceApi = _a.serviceApi, entityType = _a.entityType;
18
18
  this.syncManager = syncManager;
19
19
  this.settings = settings;
20
20
  this.storage = storage;
21
- this.serviceApi = splitApi;
21
+ this.serviceApi = serviceApi;
22
22
  this.flushData = this.flushData.bind(this);
23
23
  this.flushDataIfHidden = this.flushDataIfHidden.bind(this);
24
24
  this.fromImpressionsCollector = impressionsSubmitter_1.fromImpressionsCollector.bind(undefined, settings.core.labelsEnabled, entityType);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serverSideModules = void 0;
4
- var splitApi_1 = require("../services/splitApi");
4
+ var serviceApi_1 = require("../services/serviceApi");
5
5
  var syncManagerOnline_1 = require("../sync/syncManagerOnline");
6
6
  var pushManager_1 = require("../sync/streaming/pushManager");
7
7
  var pollingManagerSS_1 = require("../sync/polling/pollingManagerSS");
@@ -12,7 +12,7 @@ var impressionObserverSS_1 = require("../trackers/impressionObserver/impressionO
12
12
  var syncManagerOnlineSSFactory = (0, syncManagerOnline_1.syncManagerOnlineFactory)(pollingManagerSS_1.pollingManagerSSFactory, pushManager_1.pushManagerFactory);
13
13
  exports.serverSideModules = {
14
14
  storageFactory: InMemoryStorage_1.InMemoryStorageFactory,
15
- splitApiFactory: splitApi_1.splitApiFactory,
15
+ serviceApiFactory: serviceApi_1.serviceApiFactory,
16
16
  syncManagerFactory: syncManagerOnlineSSFactory,
17
17
  sdkManagerFactory: sdkManager_1.sdkManagerFactory,
18
18
  sdkClientMethodFactory: sdkClientMethod_1.sdkClientMethodFactory,
@@ -7,7 +7,7 @@ var COOLDOWN_TIME_IN_MILLIS = 1000;
7
7
  * Creates an Sdk client, i.e., a base client with status, init, flush and destroy interface
8
8
  */
9
9
  function sdkLifecycleFactory(params, isSharedClient) {
10
- var sdkReadinessManager = params.sdkReadinessManager, syncManager = params.syncManager, storage = params.storage, settings = params.settings, telemetryTracker = params.telemetryTracker, impressionsTracker = params.impressionsTracker, platform = params.platform, splitApi = params.splitApi;
10
+ var sdkReadinessManager = params.sdkReadinessManager, syncManager = params.syncManager, storage = params.storage, settings = params.settings, telemetryTracker = params.telemetryTracker, impressionsTracker = params.impressionsTracker, platform = params.platform, serviceApi = params.serviceApi;
11
11
  var hasInit = false;
12
12
  var lastActionTime = 0;
13
13
  var signalListener = platform.SignalListener && new platform.SignalListener(params);
@@ -60,7 +60,7 @@ function sdkLifecycleFactory(params, isSharedClient) {
60
60
  }
61
61
  // Stop background jobs
62
62
  syncManager && syncManager.stop();
63
- splitApi && splitApi.stop();
63
+ serviceApi && serviceApi.stop();
64
64
  return __flush().then(function () {
65
65
  // Cleanup storage
66
66
  return storage.destroy();
@@ -16,7 +16,7 @@ var fallbackTreatmentsCalculator_1 = require("../evaluator/fallbackTreatmentsCal
16
16
  * Modular SDK factory
17
17
  */
18
18
  function sdkFactory(params) {
19
- var settings = params.settings, platform = params.platform, storageFactory = params.storageFactory, splitApiFactory = params.splitApiFactory, extraProps = params.extraProps, syncManagerFactory = params.syncManagerFactory, integrationsManagerFactory = params.integrationsManagerFactory, sdkManagerFactory = params.sdkManagerFactory, sdkClientMethodFactory = params.sdkClientMethodFactory, lazyInit = params.lazyInit;
19
+ var settings = params.settings, platform = params.platform, storageFactory = params.storageFactory, serviceApiFactory = params.serviceApiFactory, extraProps = params.extraProps, syncManagerFactory = params.syncManagerFactory, integrationsManagerFactory = params.integrationsManagerFactory, sdkManagerFactory = params.sdkManagerFactory, sdkClientMethodFactory = params.sdkClientMethodFactory, lazyInit = params.lazyInit;
20
20
  var log = settings.log, initialRolloutPlan = settings.initialRolloutPlan, key = settings.core.key;
21
21
  // @TODO handle non-recoverable errors, such as, global `fetch` not available, invalid SDK Key, etc.
22
22
  // On non-recoverable errors, we should mark the SDK as destroyed and not start synchronization.
@@ -48,9 +48,9 @@ function sdkFactory(params) {
48
48
  var integrationsManager = integrationsManagerFactory && integrationsManagerFactory({ settings: settings, storage: storage, telemetryTracker: telemetryTracker });
49
49
  var impressionsTracker = (0, impressionsTracker_1.impressionsTrackerFactory)(params, storage, integrationsManager);
50
50
  var eventTracker = (0, eventTracker_1.eventTrackerFactory)(settings, storage.events, integrationsManager, storage.telemetry);
51
- // splitApi is used by SyncManager and Browser signal listener
52
- var splitApi = splitApiFactory && splitApiFactory(settings, platform, telemetryTracker);
53
- var ctx = { clients: clients, splitApi: splitApi, eventTracker: eventTracker, impressionsTracker: impressionsTracker, telemetryTracker: telemetryTracker, sdkReadinessManager: sdkReadinessManager, readiness: readiness, settings: settings, storage: storage, platform: platform, fallbackCalculator: fallbackCalculator };
51
+ // serviceApi is used by SyncManager and Browser signal listener
52
+ var serviceApi = serviceApiFactory && serviceApiFactory(settings, platform, telemetryTracker);
53
+ var ctx = { clients: clients, serviceApi: serviceApi, eventTracker: eventTracker, impressionsTracker: impressionsTracker, telemetryTracker: telemetryTracker, sdkReadinessManager: sdkReadinessManager, readiness: readiness, settings: settings, storage: storage, platform: platform, fallbackCalculator: fallbackCalculator };
54
54
  ctx.syncManager = syncManagerFactory && syncManagerFactory(ctx);
55
55
  // SDK client and manager
56
56
  var clientMethod = sdkClientMethodFactory(ctx);
@@ -16,7 +16,7 @@ function isExpired(credential) {
16
16
  function authProviderFactory(settings, splitHttpClient, telemetryTracker) {
17
17
  var urls = settings.urls, log = settings.log;
18
18
  function fetchAuth() {
19
- var url = "".concat(urls.auth, "/v3/auth?capabilities=config");
19
+ var url = "".concat(urls.auth, "/api/v3/auth?capabilities=config");
20
20
  return splitHttpClient(url, undefined, telemetryTracker.trackHttp(constants_2.TOKEN), false, true);
21
21
  }
22
22
  var authenticate = (0, AuthClient_1.authenticateFactory)(fetchAuth);
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceApiFactory = void 0;
4
+ var splitHttpClient_1 = require("./splitHttpClient");
5
+ var objectAssign_1 = require("../utils/lang/objectAssign");
6
+ var constants_1 = require("../utils/constants");
7
+ var constants_2 = require("../logger/constants");
8
+ var noCacheHeaderOptions = { headers: { 'Cache-Control': 'no-cache' } };
9
+ function userKeyToQueryParam(userKey) {
10
+ return 'users=' + encodeURIComponent(userKey); // no need to check availability of `encodeURIComponent`, since it is a global highly supported.
11
+ }
12
+ /**
13
+ * Factory of ServiceApi objects, which group the collection of HTTP endpoints used by the SDKs
14
+ *
15
+ * @param settings - validated settings object
16
+ * @param platform - object containing environment-specific dependencies
17
+ * @param telemetryTracker - telemetry tracker
18
+ * @param secureSplitHttpClientFactory - factory of SecureSplitHttpClient objects
19
+ */
20
+ function serviceApiFactory(settings, platform, telemetryTracker, secureSplitHttpClientFactory) {
21
+ var urls = settings.urls;
22
+ var filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
23
+ var SplitSDKImpressionsMode = settings.sync.impressionsMode;
24
+ var splitHttpClient = (0, splitHttpClient_1.splitHttpClientFactory)(settings, platform);
25
+ var secureSplitHttpClient = secureSplitHttpClientFactory(settings, platform, telemetryTracker);
26
+ return {
27
+ // @TODO throw errors if health check requests fail, to log them in the Synchronizer
28
+ getSdkAPIHealthCheck: function () {
29
+ var url = "".concat(urls.sdk, "/api/version");
30
+ return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
31
+ },
32
+ getEventsAPIHealthCheck: function () {
33
+ var url = "".concat(urls.events, "/api/version");
34
+ return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
35
+ },
36
+ fetchAuth: function (userMatchingKeys) {
37
+ var url = "".concat(urls.auth, "/api/v2/auth?s=").concat(settings.sync.flagSpecVersion);
38
+ if (userMatchingKeys) { // `userMatchingKeys` is undefined in server-side
39
+ var queryParams = userMatchingKeys.map(userKeyToQueryParam).join('&');
40
+ if (queryParams)
41
+ url += '&' + queryParams;
42
+ }
43
+ return splitHttpClient(url, undefined, telemetryTracker.trackHttp(constants_1.TOKEN));
44
+ },
45
+ fetchSplitChanges: function (since, noCache, till, rbSince) {
46
+ var url = "".concat(urls.sdk, "/api/splitChanges?s=").concat(settings.sync.flagSpecVersion, "&since=").concat(since).concat(rbSince ? '&rbSince=' + rbSince : '').concat(filterQueryString || '').concat(till ? '&till=' + till : '');
47
+ return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.SPLITS))
48
+ .catch(function (err) {
49
+ if (err.statusCode === 414)
50
+ settings.log.error(constants_2.ERROR_TOO_MANY_SETS);
51
+ throw err;
52
+ });
53
+ },
54
+ fetchSegmentChanges: function (since, segmentName, noCache, till) {
55
+ var url = "".concat(urls.sdk, "/api/segmentChanges/").concat(segmentName, "?since=").concat(since).concat(till ? '&till=' + till : '');
56
+ return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.SEGMENT));
57
+ },
58
+ // @TODO support filterQueryString and handle ERROR_TOO_MANY_SETS error
59
+ fetchConfigs: function (since, noCache, till) {
60
+ var url = "".concat(urls.configs, "/api/v1/configs?since=").concat(since).concat(filterQueryString || '').concat(till ? '&till=' + till : '');
61
+ return secureSplitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
62
+ },
63
+ fetchConfigsSegmentChanges: function (since, segmentName, noCache, till) {
64
+ var url = "".concat(urls.configs, "/api/v1/segmentChanges/").concat(segmentName, "?since=").concat(since).concat(till ? '&till=' + till : '');
65
+ return secureSplitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
66
+ },
67
+ fetchMemberships: function (userMatchingKey, noCache, till) {
68
+ /**
69
+ * URI encoding of user keys in order to:
70
+ * - avoid 400 responses (due to URI malformed). E.g.: '/api/memberships/%'
71
+ * - avoid 404 responses. E.g.: '/api/memberships/foo/bar'
72
+ * - match user keys with special characters. E.g.: 'foo%bar', 'foo/bar'
73
+ */
74
+ var url = "".concat(urls.sdk, "/api/memberships/").concat(encodeURIComponent(userMatchingKey)).concat(till ? '?till=' + till : '');
75
+ return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.MEMBERSHIPS));
76
+ },
77
+ /**
78
+ * Post events.
79
+ *
80
+ * @param body - Events bulk payload
81
+ * @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
82
+ */
83
+ postEventsBulk: function (body, headers) {
84
+ var url = "".concat(urls.events, "/api/events/bulk");
85
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.EVENTS));
86
+ },
87
+ /**
88
+ * Post impressions.
89
+ *
90
+ * @param body - Impressions bulk payload
91
+ * @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
92
+ */
93
+ postTestImpressionsBulk: function (body, headers) {
94
+ var url = "".concat(urls.events, "/api/testImpressions/bulk");
95
+ return splitHttpClient(url, {
96
+ // Adding extra headers to send impressions in OPTIMIZED or DEBUG modes.
97
+ method: 'POST',
98
+ body: body,
99
+ headers: (0, objectAssign_1.objectAssign)({ SplitSDKImpressionsMode: SplitSDKImpressionsMode }, headers)
100
+ }, telemetryTracker.trackHttp(constants_1.IMPRESSIONS));
101
+ },
102
+ /**
103
+ * Post impressions counts.
104
+ *
105
+ * @param body - Impressions counts payload
106
+ * @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
107
+ */
108
+ postTestImpressionsCount: function (body, headers) {
109
+ var url = "".concat(urls.events, "/api/testImpressions/count");
110
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.IMPRESSIONS_COUNT));
111
+ },
112
+ /**
113
+ * Post unique keys for client side.
114
+ *
115
+ * @param body - unique keys payload
116
+ * @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
117
+ */
118
+ postUniqueKeysBulkCs: function (body, headers) {
119
+ var url = "".concat(urls.telemetry, "/api/v1/keys/cs");
120
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.TELEMETRY));
121
+ },
122
+ /**
123
+ * Post unique keys for server side.
124
+ *
125
+ * @param body - unique keys payload
126
+ * @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
127
+ */
128
+ postUniqueKeysBulkSs: function (body, headers) {
129
+ var url = "".concat(urls.telemetry, "/api/v1/keys/ss");
130
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.TELEMETRY));
131
+ },
132
+ postMetricsConfig: function (body, headers) {
133
+ var url = "".concat(urls.telemetry, "/api/v1/metrics/config");
134
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.TELEMETRY), true);
135
+ },
136
+ postMetricsUsage: function (body, headers) {
137
+ var url = "".concat(urls.telemetry, "/api/v1/metrics/usage");
138
+ return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.TELEMETRY), true);
139
+ },
140
+ stop: function () {
141
+ secureSplitHttpClient.stop();
142
+ }
143
+ };
144
+ }
145
+ exports.serviceApiFactory = serviceApiFactory;
@@ -9,19 +9,19 @@ var noCacheHeaderOptions = { headers: { 'Cache-Control': 'no-cache' } };
9
9
  function userKeyToQueryParam(userKey) {
10
10
  return 'users=' + encodeURIComponent(userKey); // no need to check availability of `encodeURIComponent`, since it is a global highly supported.
11
11
  }
12
+ // @TODO remove when migrating to the new `urls` defaults.
12
13
  /**
13
- * Factory of SplitApi objects, which group the collection of Split HTTP endpoints used by the SDK
14
+ * Factory of ServiceApi objects, which group the collection of Split HTTP endpoints used by the SDK
14
15
  *
15
16
  * @param settings - validated settings object
16
17
  * @param platform - object containing environment-specific dependencies
17
18
  * @param telemetryTracker - telemetry tracker
18
19
  */
19
- function splitApiFactory(settings, platform, telemetryTracker, secureSplitHttpClientFactory) {
20
+ function splitApiFactory(settings, platform, telemetryTracker) {
20
21
  var urls = settings.urls;
21
22
  var filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
22
23
  var SplitSDKImpressionsMode = settings.sync.impressionsMode;
23
24
  var splitHttpClient = (0, splitHttpClient_1.splitHttpClientFactory)(settings, platform);
24
- var secureSplitHttpClient = secureSplitHttpClientFactory ? secureSplitHttpClientFactory(settings, platform, telemetryTracker) : undefined;
25
25
  return {
26
26
  // @TODO throw errors if health check requests fail, to log them in the Synchronizer
27
27
  getSdkAPIHealthCheck: function () {
@@ -54,15 +54,6 @@ function splitApiFactory(settings, platform, telemetryTracker, secureSplitHttpCl
54
54
  var url = "".concat(urls.sdk, "/segmentChanges/").concat(segmentName, "?since=").concat(since).concat(till ? '&till=' + till : '');
55
55
  return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.SEGMENT));
56
56
  },
57
- // @TODO support filterQueryString and handle ERROR_TOO_MANY_SETS error
58
- fetchConfigs: function (since, noCache, till) {
59
- var url = "".concat(urls.configs, "/v1/configs?since=").concat(since).concat(filterQueryString || '').concat(till ? '&till=' + till : '');
60
- return (secureSplitHttpClient || splitHttpClient)(url, noCache ? noCacheHeaderOptions : undefined);
61
- },
62
- fetchConfigsSegmentChanges: function (since, segmentName, noCache, till) {
63
- var url = "".concat(urls.configs, "/v1/segmentChanges/").concat(segmentName, "?since=").concat(since).concat(till ? '&till=' + till : '');
64
- return (secureSplitHttpClient || splitHttpClient)(url, noCache ? noCacheHeaderOptions : undefined);
65
- },
66
57
  fetchMemberships: function (userMatchingKey, noCache, till) {
67
58
  /**
68
59
  * URI encoding of user keys in order to:
@@ -136,9 +127,17 @@ function splitApiFactory(settings, platform, telemetryTracker, secureSplitHttpCl
136
127
  var url = "".concat(urls.telemetry, "/v1/metrics/usage");
137
128
  return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(constants_1.TELEMETRY), true);
138
129
  },
130
+ // Not used. Just here to satisfy the IServiceApi interface.
131
+ fetchConfigs: function (since, noCache, till) {
132
+ var url = "".concat(urls.configs, "/v1/configs?since=").concat(since).concat(filterQueryString || '').concat(till ? '&till=' + till : '');
133
+ return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
134
+ },
135
+ fetchConfigsSegmentChanges: function (since, segmentName, noCache, till) {
136
+ var url = "".concat(urls.configs, "/v1/segmentChanges/").concat(segmentName, "?since=").concat(since).concat(till ? '&till=' + till : '');
137
+ return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
138
+ },
139
139
  stop: function () {
140
- if (secureSplitHttpClient)
141
- secureSplitHttpClient.stop();
140
+ // no-op
142
141
  }
143
142
  };
144
143
  }
@@ -24,7 +24,7 @@ function partitionByStatus(items, till, since) {
24
24
  */
25
25
  // @TODO breaking: drop support for Split Proxy below v5.10.0 and simplify the implementation
26
26
  function splitChangesFetcherFactory(params) {
27
- var fetchSplitChanges = params.splitApi.fetchSplitChanges, settings = params.settings, storage = params.storage;
27
+ var fetchSplitChanges = params.serviceApi.fetchSplitChanges, settings = params.settings, storage = params.storage;
28
28
  var log = settings.log;
29
29
  var PROXY_CHECK_INTERVAL_MILLIS = (0, key_1.checkIfServerSide)(settings) ? PROXY_CHECK_INTERVAL_MILLIS_SS : PROXY_CHECK_INTERVAL_MILLIS_CS;
30
30
  var lastProxyCheckTimestamp;
@@ -13,7 +13,7 @@ var AbstractDefinitionsCacheSync_1 = require("../../storages/AbstractDefinitions
13
13
  * For client-side API with multiple clients.
14
14
  */
15
15
  function pollingManagerCSFactory(params, definitionChangesFetcher) {
16
- var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
16
+ var serviceApi = params.serviceApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
17
17
  var log = settings.log;
18
18
  var definitionsSyncTask = (0, definitionsSyncTask_1.definitionsSyncTaskFactory)(definitionChangesFetcher, storage, readiness, settings, true);
19
19
  // Map of matching keys to their corresponding MySegmentsSyncTask.
@@ -47,7 +47,7 @@ function pollingManagerCSFactory(params, definitionChangesFetcher) {
47
47
  }
48
48
  });
49
49
  function add(matchingKey, readiness, storage) {
50
- var mySegmentsSyncTask = (0, mySegmentsSyncTask_1.mySegmentsSyncTaskFactory)(splitApi.fetchMemberships, storage, readiness, settings, matchingKey);
50
+ var mySegmentsSyncTask = (0, mySegmentsSyncTask_1.mySegmentsSyncTaskFactory)(serviceApi.fetchMemberships, storage, readiness, settings, matchingKey);
51
51
  // smart ready
52
52
  function smartReady(metadata) {
53
53
  if (!readiness.isReady() && !(0, AbstractDefinitionsCacheSync_1.usesSegmentsSync)(storage))
@@ -8,7 +8,7 @@ var murmur3_1 = require("../../../utils/murmur3/murmur3");
8
8
  /**
9
9
  * Factory of authentication function.
10
10
  *
11
- * @param fetchAuth - `SplitAPI.fetchAuth` endpoint
11
+ * @param fetchAuth - `ServiceApi.fetchAuth` endpoint
12
12
  */
13
13
  function authenticateFactory(fetchAuth) {
14
14
  /**
@@ -23,7 +23,7 @@ var constants_3 = require("../../utils/constants");
23
23
  * - for client-side, with support for multiple clients, if key is provided in settings
24
24
  */
25
25
  function pushManagerFactory(params, pollingManager) {
26
- var settings = params.settings, storage = params.storage, splitApi = params.splitApi, readiness = params.readiness, platform = params.platform, telemetryTracker = params.telemetryTracker;
26
+ var settings = params.settings, storage = params.storage, serviceApi = params.serviceApi, readiness = params.readiness, platform = params.platform, telemetryTracker = params.telemetryTracker;
27
27
  // `userKey` is the matching key of main client in client-side SDK.
28
28
  // It can be used to check if running on client-side or server-side SDK.
29
29
  var userKey = (0, key_1.checkIfServerSide)(settings) ? undefined : (0, key_1.getMatching)(settings.core.key);
@@ -37,7 +37,7 @@ function pushManagerFactory(params, pollingManager) {
37
37
  log.warn(constants_2.STREAMING_FALLBACK, [e]);
38
38
  return;
39
39
  }
40
- var authenticate = (0, AuthClient_1.authenticateFactory)(splitApi.fetchAuth);
40
+ var authenticate = (0, AuthClient_1.authenticateFactory)(serviceApi.fetchAuth);
41
41
  // init feedback loop
42
42
  var pushEmitter = new platform.EventEmitter();
43
43
  var sseHandler = (0, SSEHandler_1.SSEHandlerFactory)(log, pushEmitter, telemetryTracker);
@@ -7,7 +7,7 @@ var constants_1 = require("../../logger/constants");
7
7
  * Submitter that periodically posts tracked events
8
8
  */
9
9
  function eventsSubmitterFactory(params) {
10
- var _a = params.settings, log = _a.log, eventsPushRate = _a.scheduler.eventsPushRate, eventsFirstPushWindow = _a.startup.eventsFirstPushWindow, postEventsBulk = params.splitApi.postEventsBulk, events = params.storage.events;
10
+ var _a = params.settings, log = _a.log, eventsPushRate = _a.scheduler.eventsPushRate, eventsFirstPushWindow = _a.startup.eventsFirstPushWindow, postEventsBulk = params.serviceApi.postEventsBulk, events = params.storage.events;
11
11
  // don't retry events.
12
12
  var submitter = (0, submitter_1.submitterFactory)(log, postEventsBulk, events, eventsPushRate);
13
13
  // Set a timer for the first push window of events.
@@ -29,7 +29,7 @@ var IMPRESSIONS_COUNT_RATE = 1800000; // 30 minutes
29
29
  * Submitter that periodically posts impression counts
30
30
  */
31
31
  function impressionCountsSubmitterFactory(params) {
32
- var log = params.settings.log, postTestImpressionsCount = params.splitApi.postTestImpressionsCount, impressionCounts = params.storage.impressionCounts;
32
+ var log = params.settings.log, postTestImpressionsCount = params.serviceApi.postTestImpressionsCount, impressionCounts = params.storage.impressionCounts;
33
33
  // retry impressions counts only once.
34
34
  return (0, submitter_1.submitterFactory)(log, postTestImpressionsCount, impressionCounts, IMPRESSIONS_COUNT_RATE, fromImpressionCountsCollector, 1);
35
35
  }
@@ -35,7 +35,7 @@ exports.fromImpressionsCollector = fromImpressionsCollector;
35
35
  * Submitter that periodically posts impressions data
36
36
  */
37
37
  function impressionsSubmitterFactory(params) {
38
- var _a = params.settings, log = _a.log, impressionsRefreshRate = _a.scheduler.impressionsRefreshRate, labelsEnabled = _a.core.labelsEnabled, postTestImpressionsBulk = params.splitApi.postTestImpressionsBulk, impressions = params.storage.impressions, entityType = params.entityType;
38
+ var _a = params.settings, log = _a.log, impressionsRefreshRate = _a.scheduler.impressionsRefreshRate, labelsEnabled = _a.core.labelsEnabled, postTestImpressionsBulk = params.serviceApi.postTestImpressionsBulk, impressions = params.storage.impressions, entityType = params.entityType;
39
39
  // retry impressions only once.
40
40
  var syncTask = (0, submitter_1.submitterFactory)(log, postTestImpressionsBulk, impressions, impressionsRefreshRate, fromImpressionsCollector.bind(undefined, labelsEnabled, entityType), 1);
41
41
  // register impressions submitter to be executed when impressions cache is full
@@ -107,9 +107,9 @@ function telemetrySubmitterFactory(params) {
107
107
  var telemetry = params.storage.telemetry, now = params.platform.now;
108
108
  if (!telemetry || !now)
109
109
  return; // No submitter created if telemetry cache is not defined
110
- var settings = params.settings, _a = params.settings, log = _a.log, telemetryRefreshRate = _a.scheduler.telemetryRefreshRate, splitApi = params.splitApi, readiness = params.readiness;
110
+ var settings = params.settings, _a = params.settings, log = _a.log, telemetryRefreshRate = _a.scheduler.telemetryRefreshRate, serviceApi = params.serviceApi, readiness = params.readiness;
111
111
  var stopTimer = (0, timer_1.timer)(now);
112
- var submitter = (0, submitter_1.firstPushWindowDecorator)((0, submitter_1.submitterFactory)(log, splitApi.postMetricsUsage, telemetry, telemetryRefreshRate, undefined, 0, true), telemetryRefreshRate);
112
+ var submitter = (0, submitter_1.firstPushWindowDecorator)((0, submitter_1.submitterFactory)(log, serviceApi.postMetricsUsage, telemetry, telemetryRefreshRate, undefined, 0, true), telemetryRefreshRate);
113
113
  readiness.gate.once(constants_2.SDK_READY_FROM_CACHE, function () {
114
114
  telemetry.recordTimeUntilReadyFromCache(stopTimer());
115
115
  });
@@ -117,7 +117,7 @@ function telemetrySubmitterFactory(params) {
117
117
  telemetry.recordTimeUntilReady(stopTimer());
118
118
  // Post config data when the SDK is ready and if the telemetry submitter was started
119
119
  if (submitter.isRunning()) {
120
- var postMetricsConfigTask = (0, submitter_1.submitterFactory)(log, splitApi.postMetricsConfig, telemetryCacheConfigAdapter(telemetry, settings), 0, undefined, 0, true);
120
+ var postMetricsConfigTask = (0, submitter_1.submitterFactory)(log, serviceApi.postMetricsConfig, telemetryCacheConfigAdapter(telemetry, settings), 0, undefined, 0, true);
121
121
  postMetricsConfigTask.execute();
122
122
  }
123
123
  });
@@ -8,7 +8,7 @@ var UNIQUE_KEYS_RATE = 900000; // 15 minutes
8
8
  * Submitter that periodically posts impression counts
9
9
  */
10
10
  function uniqueKeysSubmitterFactory(params) {
11
- var _a = params.settings, log = _a.log, key = _a.core.key, _b = params.splitApi, postUniqueKeysBulkCs = _b.postUniqueKeysBulkCs, postUniqueKeysBulkSs = _b.postUniqueKeysBulkSs, uniqueKeys = params.storage.uniqueKeys;
11
+ var _a = params.settings, log = _a.log, key = _a.core.key, _b = params.serviceApi, postUniqueKeysBulkCs = _b.postUniqueKeysBulkCs, postUniqueKeysBulkSs = _b.postUniqueKeysBulkSs, uniqueKeys = params.storage.uniqueKeys;
12
12
  var isClientSide = key !== undefined;
13
13
  var postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
14
14
  var syncTask = (0, submitter_1.submitterFactory)(log, postUniqueKeysBulk, uniqueKeys, UNIQUE_KEYS_RATE);
@@ -21,7 +21,7 @@ var segmentChangesFetcher_1 = require("./polling/fetchers/segmentChangesFetcher"
21
21
  */
22
22
  function syncManagerOnlineFactory(pollingManagerFactory, pushManagerFactory, definitionFetcherFactory, segmentFetcherFactory) {
23
23
  if (definitionFetcherFactory === void 0) { definitionFetcherFactory = splitChangesFetcher_1.splitChangesFetcherFactory; }
24
- if (segmentFetcherFactory === void 0) { segmentFetcherFactory = function (params) { return (0, segmentChangesFetcher_1.segmentChangesFetcherFactory)(params.splitApi.fetchSegmentChanges); }; }
24
+ if (segmentFetcherFactory === void 0) { segmentFetcherFactory = function (params) { return (0, segmentChangesFetcher_1.segmentChangesFetcherFactory)(params.serviceApi.fetchSegmentChanges); }; }
25
25
  /**
26
26
  * SyncManager factory for modular SDK
27
27
  */
@@ -56,7 +56,7 @@ exports.base = {
56
56
  // Telemetry Server
57
57
  telemetry: 'https://telemetry.split.io/api',
58
58
  // Configs Server
59
- configs: 'https://configs.split.io/api',
59
+ configs: 'https://configs.split.io',
60
60
  },
61
61
  // Defines which kind of storage we should instantiate.
62
62
  storage: undefined,
@@ -11,11 +11,11 @@ var EVENT_NAME = 'for visibilitychange and pagehide events.';
11
11
  */
12
12
  var BrowserSignalListener = /** @class */ (function () {
13
13
  function BrowserSignalListener(_a) {
14
- var syncManager = _a.syncManager, settings = _a.settings, storage = _a.storage, splitApi = _a.splitApi, entityType = _a.entityType;
14
+ var syncManager = _a.syncManager, settings = _a.settings, storage = _a.storage, serviceApi = _a.serviceApi, entityType = _a.entityType;
15
15
  this.syncManager = syncManager;
16
16
  this.settings = settings;
17
17
  this.storage = storage;
18
- this.serviceApi = splitApi;
18
+ this.serviceApi = serviceApi;
19
19
  this.flushData = this.flushData.bind(this);
20
20
  this.flushDataIfHidden = this.flushDataIfHidden.bind(this);
21
21
  this.fromImpressionsCollector = fromImpressionsCollector.bind(undefined, settings.core.labelsEnabled, entityType);
@@ -1,4 +1,4 @@
1
- import { splitApiFactory } from '../services/splitApi';
1
+ import { serviceApiFactory } from '../services/serviceApi';
2
2
  import { syncManagerOnlineFactory } from '../sync/syncManagerOnline';
3
3
  import { pushManagerFactory } from '../sync/streaming/pushManager';
4
4
  import { pollingManagerSSFactory } from '../sync/polling/pollingManagerSS';
@@ -9,7 +9,7 @@ import { impressionObserverSSFactory } from '../trackers/impressionObserver/impr
9
9
  var syncManagerOnlineSSFactory = syncManagerOnlineFactory(pollingManagerSSFactory, pushManagerFactory);
10
10
  export var serverSideModules = {
11
11
  storageFactory: InMemoryStorageFactory,
12
- splitApiFactory: splitApiFactory,
12
+ serviceApiFactory: serviceApiFactory,
13
13
  syncManagerFactory: syncManagerOnlineSSFactory,
14
14
  sdkManagerFactory: sdkManagerFactory,
15
15
  sdkClientMethodFactory: sdkClientMethodFactory,
@@ -4,7 +4,7 @@ var COOLDOWN_TIME_IN_MILLIS = 1000;
4
4
  * Creates an Sdk client, i.e., a base client with status, init, flush and destroy interface
5
5
  */
6
6
  export function sdkLifecycleFactory(params, isSharedClient) {
7
- var sdkReadinessManager = params.sdkReadinessManager, syncManager = params.syncManager, storage = params.storage, settings = params.settings, telemetryTracker = params.telemetryTracker, impressionsTracker = params.impressionsTracker, platform = params.platform, splitApi = params.splitApi;
7
+ var sdkReadinessManager = params.sdkReadinessManager, syncManager = params.syncManager, storage = params.storage, settings = params.settings, telemetryTracker = params.telemetryTracker, impressionsTracker = params.impressionsTracker, platform = params.platform, serviceApi = params.serviceApi;
8
8
  var hasInit = false;
9
9
  var lastActionTime = 0;
10
10
  var signalListener = platform.SignalListener && new platform.SignalListener(params);
@@ -57,7 +57,7 @@ export function sdkLifecycleFactory(params, isSharedClient) {
57
57
  }
58
58
  // Stop background jobs
59
59
  syncManager && syncManager.stop();
60
- splitApi && splitApi.stop();
60
+ serviceApi && serviceApi.stop();
61
61
  return __flush().then(function () {
62
62
  // Cleanup storage
63
63
  return storage.destroy();
@@ -13,7 +13,7 @@ import { FallbackTreatmentsCalculator } from '../evaluator/fallbackTreatmentsCal
13
13
  * Modular SDK factory
14
14
  */
15
15
  export function sdkFactory(params) {
16
- var settings = params.settings, platform = params.platform, storageFactory = params.storageFactory, splitApiFactory = params.splitApiFactory, extraProps = params.extraProps, syncManagerFactory = params.syncManagerFactory, integrationsManagerFactory = params.integrationsManagerFactory, sdkManagerFactory = params.sdkManagerFactory, sdkClientMethodFactory = params.sdkClientMethodFactory, lazyInit = params.lazyInit;
16
+ var settings = params.settings, platform = params.platform, storageFactory = params.storageFactory, serviceApiFactory = params.serviceApiFactory, extraProps = params.extraProps, syncManagerFactory = params.syncManagerFactory, integrationsManagerFactory = params.integrationsManagerFactory, sdkManagerFactory = params.sdkManagerFactory, sdkClientMethodFactory = params.sdkClientMethodFactory, lazyInit = params.lazyInit;
17
17
  var log = settings.log, initialRolloutPlan = settings.initialRolloutPlan, key = settings.core.key;
18
18
  // @TODO handle non-recoverable errors, such as, global `fetch` not available, invalid SDK Key, etc.
19
19
  // On non-recoverable errors, we should mark the SDK as destroyed and not start synchronization.
@@ -45,9 +45,9 @@ export function sdkFactory(params) {
45
45
  var integrationsManager = integrationsManagerFactory && integrationsManagerFactory({ settings: settings, storage: storage, telemetryTracker: telemetryTracker });
46
46
  var impressionsTracker = impressionsTrackerFactory(params, storage, integrationsManager);
47
47
  var eventTracker = eventTrackerFactory(settings, storage.events, integrationsManager, storage.telemetry);
48
- // splitApi is used by SyncManager and Browser signal listener
49
- var splitApi = splitApiFactory && splitApiFactory(settings, platform, telemetryTracker);
50
- var ctx = { clients: clients, splitApi: splitApi, eventTracker: eventTracker, impressionsTracker: impressionsTracker, telemetryTracker: telemetryTracker, sdkReadinessManager: sdkReadinessManager, readiness: readiness, settings: settings, storage: storage, platform: platform, fallbackCalculator: fallbackCalculator };
48
+ // serviceApi is used by SyncManager and Browser signal listener
49
+ var serviceApi = serviceApiFactory && serviceApiFactory(settings, platform, telemetryTracker);
50
+ var ctx = { clients: clients, serviceApi: serviceApi, eventTracker: eventTracker, impressionsTracker: impressionsTracker, telemetryTracker: telemetryTracker, sdkReadinessManager: sdkReadinessManager, readiness: readiness, settings: settings, storage: storage, platform: platform, fallbackCalculator: fallbackCalculator };
51
51
  ctx.syncManager = syncManagerFactory && syncManagerFactory(ctx);
52
52
  // SDK client and manager
53
53
  var clientMethod = sdkClientMethodFactory(ctx);
@@ -13,7 +13,7 @@ function isExpired(credential) {
13
13
  export function authProviderFactory(settings, splitHttpClient, telemetryTracker) {
14
14
  var urls = settings.urls, log = settings.log;
15
15
  function fetchAuth() {
16
- var url = "".concat(urls.auth, "/v3/auth?capabilities=config");
16
+ var url = "".concat(urls.auth, "/api/v3/auth?capabilities=config");
17
17
  return splitHttpClient(url, undefined, telemetryTracker.trackHttp(TOKEN), false, true);
18
18
  }
19
19
  var authenticate = authenticateFactory(fetchAuth);