@splitsoftware/splitio-browserjs 1.0.0-rc.0 → 1.0.0-rc.2

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 (39) hide show
  1. package/CHANGES.txt +4 -1
  2. package/cjs/index.js +1 -3
  3. package/cjs/platform/getModules.js +2 -1
  4. package/cjs/settings/defaults.js +1 -1
  5. package/cjs/settings/index.js +0 -6
  6. package/cjs/splitFactory.js +5 -6
  7. package/esm/index.js +0 -1
  8. package/esm/platform/getModules.js +2 -1
  9. package/esm/settings/defaults.js +1 -1
  10. package/esm/settings/index.js +0 -6
  11. package/esm/splitFactory.js +4 -5
  12. package/package.json +6 -9
  13. package/src/index.ts +0 -1
  14. package/src/platform/getModules.ts +3 -3
  15. package/src/settings/defaults.ts +4 -4
  16. package/src/settings/index.ts +0 -6
  17. package/src/splitFactory.ts +6 -7
  18. package/types/index.d.ts +6 -16
  19. package/cjs/full/index.js +0 -17
  20. package/cjs/full/splitFactory.js +0 -28
  21. package/cjs/platform/getFetchFull.js +0 -9
  22. package/cjs/settings/full.js +0 -30
  23. package/esm/full/index.js +0 -7
  24. package/esm/full/splitFactory.js +0 -24
  25. package/esm/platform/getFetchFull.js +0 -4
  26. package/esm/settings/full.js +0 -26
  27. package/full/package.json +0 -6
  28. package/src/full/index.ts +0 -7
  29. package/src/full/splitFactory.ts +0 -27
  30. package/src/platform/getFetchFull.ts +0 -6
  31. package/src/settings/full.ts +0 -29
  32. package/types/full/index.d.ts +0 -62
  33. package/types/splitio.d.ts +0 -1586
  34. /package/cjs/platform/{getFetchSlim.js → getFetch.js} +0 -0
  35. /package/cjs/{full/umd.js → umd-full.js} +0 -0
  36. /package/esm/platform/{getFetchSlim.js → getFetch.js} +0 -0
  37. /package/esm/{full/umd.js → umd-full.js} +0 -0
  38. /package/src/platform/{getFetchSlim.ts → getFetch.ts} +0 -0
  39. /package/src/{full/umd.ts → umd-full.ts} +0 -0
package/CHANGES.txt CHANGED
@@ -3,8 +3,11 @@
3
3
  - Added `factory.destroy()` method, which invokes the `destroy` method of all clients created by the factory.
4
4
  - Updated @splitsoftware/splitio-commons package to version 2.0.0 that includes major updates and updated some transitive dependencies for vulnerability fixes.
5
5
  - BREAKING CHANGES:
6
+ - Renamed some TypeScript definitions in the SplitIO namespace to avoid conflicts with other libraries: `SplitIO.IBrowserSettings` to `SplitIO.IClientSideSettings`, `SplitIO.IBrowserAsyncSettings` to `SplitIO.IClientSideAsyncSettings`.
6
7
  - Removed internal ponyfills for the `Map` and `Set` global objects, dropping support for IE and other outdated browsers. The SDK now requires the runtime environment to support these features natively or provide a polyfill.
7
8
  - Removed the deprecated `GoogleAnalyticsToSplit` and `SplitToGoogleAnalytics` pluggable integration modules, along with the related interfaces in the TypeScript definitions.
9
+ - Removed the `LocalhostFromObject` export from the default import (`import { LocalhostFromObject } from '@splitsoftware/splitio-browserjs'`). It is no longer necessary to manually import and configure it in the `sync.localhostMode` option to enable localhost mode.
10
+ - Removed the "full" import (`import { SplitFactory } from '@splitsoftware/splitio-browserjs/full'`), since with the removal of `LocalhostFromObject` from the default import, the difference between them is minimal. The "full" import differs only by including the `unfetch` ponyfill to support older browsers.
8
11
 
9
12
  0.15.0 (September 13, 2024)
10
13
  - Updated @splitsoftware/splitio-commons package to version 1.17.0 that includes minor updates:
@@ -70,7 +73,7 @@
70
73
 
71
74
  0.9.4 (May 4, 2023)
72
75
  - Updated some transitive dependencies for vulnerability fixes.
73
- - Bugfixing - Updated `unfetch` package as a runtime dependency, required when using the "full" entrypoint (`import { SplitFactory } from '@splitsoftware/splitio-browserjs/full'`).
76
+ - Bugfixing - Updated `unfetch` package as a runtime dependency, required when using the "full" import (`import { SplitFactory } from '@splitsoftware/splitio-browserjs/full'`).
74
77
 
75
78
  0.9.3 (March 20, 2023)
76
79
  - Updated @splitsoftware/splitio-commons package to version 1.8.1 that includes minor improvements.
package/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PluggableStorage = exports.LocalhostFromObject = exports.DebugLogger = exports.InfoLogger = exports.WarnLogger = exports.ErrorLogger = exports.InLocalStorage = exports.SplitFactory = void 0;
3
+ exports.PluggableStorage = exports.DebugLogger = exports.InfoLogger = exports.WarnLogger = exports.ErrorLogger = exports.InLocalStorage = exports.SplitFactory = void 0;
4
4
  var splitFactory_1 = require("./splitFactory");
5
5
  Object.defineProperty(exports, "SplitFactory", { enumerable: true, get: function () { return splitFactory_1.SplitFactory; } });
6
6
  var index_1 = require("@splitsoftware/splitio-commons/cjs/storages/inLocalStorage/index");
@@ -13,7 +13,5 @@ var InfoLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/In
13
13
  Object.defineProperty(exports, "InfoLogger", { enumerable: true, get: function () { return InfoLogger_1.InfoLogger; } });
14
14
  var DebugLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/DebugLogger");
15
15
  Object.defineProperty(exports, "DebugLogger", { enumerable: true, get: function () { return DebugLogger_1.DebugLogger; } });
16
- var LocalhostFromObject_1 = require("@splitsoftware/splitio-commons/cjs/sync/offline/LocalhostFromObject");
17
- Object.defineProperty(exports, "LocalhostFromObject", { enumerable: true, get: function () { return LocalhostFromObject_1.LocalhostFromObject; } });
18
16
  var pluggable_1 = require("@splitsoftware/splitio-commons/cjs/storages/pluggable");
19
17
  Object.defineProperty(exports, "PluggableStorage", { enumerable: true, get: function () { return pluggable_1.PluggableStorage; } });
@@ -12,6 +12,7 @@ var impressionObserverCS_1 = require("@splitsoftware/splitio-commons/cjs/tracker
12
12
  var pluggable_1 = require("@splitsoftware/splitio-commons/cjs/integrations/pluggable");
13
13
  var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants");
14
14
  var sdkUserConsent_1 = require("@splitsoftware/splitio-commons/cjs/consent/sdkUserConsent");
15
+ var LocalhostFromObject_1 = require("@splitsoftware/splitio-commons/cjs/sync/offline/LocalhostFromObject");
15
16
  var syncManagerStandaloneFactory;
16
17
  var syncManagerSubmittersFactory;
17
18
  function getModules(settings, platform) {
@@ -37,7 +38,7 @@ function getModules(settings, platform) {
37
38
  switch (settings.mode) {
38
39
  case constants_1.LOCALHOST_MODE:
39
40
  modules.splitApiFactory = undefined;
40
- modules.syncManagerFactory = settings.sync.localhostMode;
41
+ modules.syncManagerFactory = LocalhostFromObject_1.localhostFromObjectFactory;
41
42
  modules.SignalListener = undefined;
42
43
  break;
43
44
  case constants_1.CONSUMER_MODE:
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaults = void 0;
4
4
  var index_1 = require("@splitsoftware/splitio-commons/cjs/logger/index");
5
5
  var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants");
6
- var packageVersion = '1.0.0-rc.0';
6
+ var packageVersion = '1.0.0-rc.2';
7
7
  /**
8
8
  * In browser, the default debug level, can be set via the `localStorage.splitio_debug` item.
9
9
  * Acceptable values are: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'.
@@ -7,9 +7,7 @@ var runtime_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValida
7
7
  var storageCS_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/storage/storageCS");
8
8
  var pluggable_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/integrations/pluggable");
9
9
  var pluggableLogger_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/logger/pluggableLogger");
10
- var pluggable_2 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/localhost/pluggable");
11
10
  var consent_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/consent");
12
- var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants");
13
11
  var params = {
14
12
  defaults: defaults_1.defaults,
15
13
  acceptKey: true,
@@ -17,14 +15,10 @@ var params = {
17
15
  storage: storageCS_1.validateStorageCS,
18
16
  integrations: pluggable_1.validatePluggableIntegrations,
19
17
  logger: pluggableLogger_1.validateLogger,
20
- localhost: pluggable_2.validateLocalhost,
21
18
  consent: consent_1.validateConsent,
22
19
  };
23
20
  function settingsFactory(config) {
24
21
  var settings = (0, index_1.settingsValidation)(config, params);
25
- // @ts-ignore, Override in localhost and consumer modes to emit SDK_READY event
26
- if (settings.mode !== constants_1.STANDALONE_MODE)
27
- settings.sync.largeSegmentsEnabled = false;
28
22
  return settings;
29
23
  }
30
24
  exports.settingsFactory = settingsFactory;
@@ -4,17 +4,16 @@ exports.SplitFactory = void 0;
4
4
  var settings_1 = require("./settings");
5
5
  var getModules_1 = require("./platform/getModules");
6
6
  var index_1 = require("@splitsoftware/splitio-commons/cjs/sdkFactory/index");
7
- var getFetchSlim_1 = require("./platform/getFetchSlim");
7
+ var getFetch_1 = require("./platform/getFetch");
8
8
  var getEventSource_1 = require("./platform/getEventSource");
9
9
  var MinEvents_1 = require("@splitsoftware/splitio-commons/cjs/utils/MinEvents");
10
10
  var browser_1 = require("@splitsoftware/splitio-commons/cjs/utils/timeTracker/now/browser");
11
- var platform = { getFetch: getFetchSlim_1.getFetch, getEventSource: getEventSource_1.getEventSource, EventEmitter: MinEvents_1.EventEmitter, now: browser_1.now };
11
+ var platform = { getFetch: getFetch_1.getFetch, getEventSource: getEventSource_1.getEventSource, EventEmitter: MinEvents_1.EventEmitter, now: browser_1.now };
12
12
  /**
13
- * Slim SplitFactory with pluggable modules for Browser.
14
- * Doesn't include localhost mode and fetch ponyfill out-of-the-box.
13
+ * SplitFactory with pluggable modules for Browser.
15
14
  *
16
- * @param config configuration object used to instantiate the SDK
17
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
15
+ * @param config - configuration object used to instantiate the SDK
16
+ * @param __updateModules - optional function that lets redefine internal SDK modules. Use with
18
17
  * caution since, unlike `config`, this param is not validated neither considered part of the public API.
19
18
  * @throws Will throw an error if the provided config is invalid.
20
19
  */
package/esm/index.js CHANGED
@@ -4,5 +4,4 @@ export { ErrorLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/E
4
4
  export { WarnLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/WarnLogger';
5
5
  export { InfoLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/InfoLogger';
6
6
  export { DebugLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/DebugLogger';
7
- export { LocalhostFromObject } from '@splitsoftware/splitio-commons/esm/sync/offline/LocalhostFromObject';
8
7
  export { PluggableStorage } from '@splitsoftware/splitio-commons/esm/storages/pluggable';
@@ -9,6 +9,7 @@ import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/esm/
9
9
  import { pluggableIntegrationsManagerFactory } from '@splitsoftware/splitio-commons/esm/integrations/pluggable';
10
10
  import { CONSUMER_MODE, CONSUMER_PARTIAL_MODE, LOCALHOST_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
11
11
  import { createUserConsentAPI } from '@splitsoftware/splitio-commons/esm/consent/sdkUserConsent';
12
+ import { localhostFromObjectFactory } from '@splitsoftware/splitio-commons/esm/sync/offline/LocalhostFromObject';
12
13
  var syncManagerStandaloneFactory;
13
14
  var syncManagerSubmittersFactory;
14
15
  export function getModules(settings, platform) {
@@ -34,7 +35,7 @@ export function getModules(settings, platform) {
34
35
  switch (settings.mode) {
35
36
  case LOCALHOST_MODE:
36
37
  modules.splitApiFactory = undefined;
37
- modules.syncManagerFactory = settings.sync.localhostMode;
38
+ modules.syncManagerFactory = localhostFromObjectFactory;
38
39
  modules.SignalListener = undefined;
39
40
  break;
40
41
  case CONSUMER_MODE:
@@ -1,6 +1,6 @@
1
1
  import { LogLevels, isLogLevelString } from '@splitsoftware/splitio-commons/esm/logger/index';
2
2
  import { CONSENT_GRANTED } from '@splitsoftware/splitio-commons/esm/utils/constants';
3
- var packageVersion = '1.0.0-rc.0';
3
+ var packageVersion = '1.0.0-rc.2';
4
4
  /**
5
5
  * In browser, the default debug level, can be set via the `localStorage.splitio_debug` item.
6
6
  * Acceptable values are: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'.
@@ -4,9 +4,7 @@ import { validateRuntime } from '@splitsoftware/splitio-commons/esm/utils/settin
4
4
  import { validateStorageCS } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/storage/storageCS';
5
5
  import { validatePluggableIntegrations } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/integrations/pluggable';
6
6
  import { validateLogger } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/logger/pluggableLogger';
7
- import { validateLocalhost } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/localhost/pluggable';
8
7
  import { validateConsent } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/consent';
9
- import { STANDALONE_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
10
8
  var params = {
11
9
  defaults: defaults,
12
10
  acceptKey: true,
@@ -14,13 +12,9 @@ var params = {
14
12
  storage: validateStorageCS,
15
13
  integrations: validatePluggableIntegrations,
16
14
  logger: validateLogger,
17
- localhost: validateLocalhost,
18
15
  consent: validateConsent,
19
16
  };
20
17
  export function settingsFactory(config) {
21
18
  var settings = settingsValidation(config, params);
22
- // @ts-ignore, Override in localhost and consumer modes to emit SDK_READY event
23
- if (settings.mode !== STANDALONE_MODE)
24
- settings.sync.largeSegmentsEnabled = false;
25
19
  return settings;
26
20
  }
@@ -1,17 +1,16 @@
1
1
  import { settingsFactory } from './settings';
2
2
  import { getModules } from './platform/getModules';
3
3
  import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory/index';
4
- import { getFetch } from './platform/getFetchSlim';
4
+ import { getFetch } from './platform/getFetch';
5
5
  import { getEventSource } from './platform/getEventSource';
6
6
  import { EventEmitter } from '@splitsoftware/splitio-commons/esm/utils/MinEvents';
7
7
  import { now } from '@splitsoftware/splitio-commons/esm/utils/timeTracker/now/browser';
8
8
  var platform = { getFetch: getFetch, getEventSource: getEventSource, EventEmitter: EventEmitter, now: now };
9
9
  /**
10
- * Slim SplitFactory with pluggable modules for Browser.
11
- * Doesn't include localhost mode and fetch ponyfill out-of-the-box.
10
+ * SplitFactory with pluggable modules for Browser.
12
11
  *
13
- * @param config configuration object used to instantiate the SDK
14
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
12
+ * @param config - configuration object used to instantiate the SDK
13
+ * @param __updateModules - optional function that lets redefine internal SDK modules. Use with
15
14
  * caution since, unlike `config`, this param is not validated neither considered part of the public API.
16
15
  * @throws Will throw an error if the provided config is invalid.
17
16
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-browserjs",
3
- "version": "1.0.0-rc.0",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "Split SDK for JavaScript on Browser",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -13,8 +13,7 @@
13
13
  "cjs",
14
14
  "esm",
15
15
  "src",
16
- "types",
17
- "full"
16
+ "types"
18
17
  ],
19
18
  "scripts": {
20
19
  "check": "npm run check:lint && npm run check:types && npm run check:version",
@@ -36,9 +35,7 @@
36
35
  "test:e2e-errorCatching": "karma start karma/e2e.errorCatching.karma.conf.js",
37
36
  "test:e2e-push": "karma start karma/e2e.push.karma.conf.js",
38
37
  "test:e2e-consumer": "karma start karma/e2e.consumer.karma.conf.js",
39
- "pretest-ts-decls": "npm run build:esm && npm run build:cjs && npm link",
40
- "test-ts-decls": "./scripts/ts-tests.sh",
41
- "posttest-ts-decls": "npm rm --location=global @splitsoftware/splitio-browserjs && npm install",
38
+ "test-ts-decls": "tsc --build ts-tests",
42
39
  "all": "npm run check && npm run build && npm run test-ts-decls && npm run test",
43
40
  "publish:rc": "npm run check && npm run build && npm publish --tag rc",
44
41
  "publish:stable": "npm run check && npm run build && npm publish"
@@ -61,9 +58,8 @@
61
58
  "bugs": "https://github.com/splitio/javascript-browser-client/issues",
62
59
  "homepage": "https://github.com/splitio/javascript-browser-client#readme",
63
60
  "dependencies": {
64
- "@splitsoftware/splitio-commons": "2.0.0-rc.2",
65
- "tslib": "^2.3.1",
66
- "unfetch": "^4.2.0"
61
+ "@splitsoftware/splitio-commons": "2.0.0-rc.5",
62
+ "tslib": "^2.3.1"
67
63
  },
68
64
  "devDependencies": {
69
65
  "@rollup/plugin-commonjs": "^24.0.1",
@@ -77,6 +73,7 @@
77
73
  "eslint": "^8.48.0",
78
74
  "eslint-plugin-compat": "^4.2.0",
79
75
  "eslint-plugin-import": "^2.25.4",
76
+ "eslint-plugin-tsdoc": "^0.3.0",
80
77
  "fetch-mock": "^11.1.3",
81
78
  "jest": "^27.2.3",
82
79
  "karma": "^6.4.1",
package/src/index.ts CHANGED
@@ -4,5 +4,4 @@ export { ErrorLogger } from '@splitsoftware/splitio-commons/src/logger/browser/E
4
4
  export { WarnLogger } from '@splitsoftware/splitio-commons/src/logger/browser/WarnLogger';
5
5
  export { InfoLogger } from '@splitsoftware/splitio-commons/src/logger/browser/InfoLogger';
6
6
  export { DebugLogger } from '@splitsoftware/splitio-commons/src/logger/browser/DebugLogger';
7
- export { LocalhostFromObject } from '@splitsoftware/splitio-commons/src/sync/offline/LocalhostFromObject';
8
7
  export { PluggableStorage } from '@splitsoftware/splitio-commons/src/storages/pluggable';
@@ -7,11 +7,11 @@ import { sdkClientMethodCSFactory } from '@splitsoftware/splitio-commons/src/sdk
7
7
  import { BrowserSignalListener } from '@splitsoftware/splitio-commons/src/listeners/browser';
8
8
  import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/src/trackers/impressionObserver/impressionObserverCS';
9
9
  import { pluggableIntegrationsManagerFactory } from '@splitsoftware/splitio-commons/src/integrations/pluggable';
10
-
11
10
  import { IPlatform, ISdkFactoryParams } from '@splitsoftware/splitio-commons/src/sdkFactory/types';
12
11
  import { ISettings } from '@splitsoftware/splitio-commons/src/types';
13
12
  import { CONSUMER_MODE, CONSUMER_PARTIAL_MODE, LOCALHOST_MODE } from '@splitsoftware/splitio-commons/src/utils/constants';
14
13
  import { createUserConsentAPI } from '@splitsoftware/splitio-commons/src/consent/sdkUserConsent';
14
+ import { localhostFromObjectFactory } from '@splitsoftware/splitio-commons/src/sync/offline/LocalhostFromObject';
15
15
 
16
16
  let syncManagerStandaloneFactory: ISdkFactoryParams['syncManagerFactory'];
17
17
  let syncManagerSubmittersFactory: ISdkFactoryParams['syncManagerFactory'];
@@ -25,7 +25,7 @@ export function getModules(settings: ISettings, platform: IPlatform): ISdkFactor
25
25
 
26
26
  platform,
27
27
 
28
- storageFactory: settings.storage,
28
+ storageFactory: settings.storage as ISdkFactoryParams['storageFactory'],
29
29
 
30
30
  splitApiFactory,
31
31
 
@@ -51,7 +51,7 @@ export function getModules(settings: ISettings, platform: IPlatform): ISdkFactor
51
51
  switch (settings.mode) {
52
52
  case LOCALHOST_MODE:
53
53
  modules.splitApiFactory = undefined;
54
- modules.syncManagerFactory = settings.sync.localhostMode;
54
+ modules.syncManagerFactory = localhostFromObjectFactory;
55
55
  modules.SignalListener = undefined;
56
56
  break;
57
57
  case CONSUMER_MODE:
@@ -1,8 +1,8 @@
1
+ import type SplitIO from '@splitsoftware/splitio-commons/types/splitio';
1
2
  import { LogLevels, isLogLevelString } from '@splitsoftware/splitio-commons/src/logger/index';
2
- import { ConsentStatus, LogLevel } from '@splitsoftware/splitio-commons/src/types';
3
3
  import { CONSENT_GRANTED } from '@splitsoftware/splitio-commons/src/utils/constants';
4
4
 
5
- const packageVersion = '1.0.0-rc.0';
5
+ const packageVersion = '1.0.0-rc.2';
6
6
 
7
7
  /**
8
8
  * In browser, the default debug level, can be set via the `localStorage.splitio_debug` item.
@@ -10,7 +10,7 @@ const packageVersion = '1.0.0-rc.0';
10
10
  * Other acceptable values are 'on', 'enable' and 'enabled', which are equivalent to 'DEBUG'.
11
11
  * Any other string value is equivalent to disable ('NONE').
12
12
  */
13
- let initialLogLevel: LogLevel | undefined;
13
+ let initialLogLevel: SplitIO.LogLevel | undefined;
14
14
 
15
15
  const LS_KEY = 'splitio_debug';
16
16
 
@@ -34,7 +34,7 @@ export const defaults = {
34
34
  },
35
35
 
36
36
  // Consent is considered granted by default
37
- userConsent: CONSENT_GRANTED as ConsentStatus,
37
+ userConsent: CONSENT_GRANTED as SplitIO.ConsentStatus,
38
38
 
39
39
  // Instance version.
40
40
  version: `browserjs-${packageVersion}`,
@@ -4,9 +4,7 @@ import { validateRuntime } from '@splitsoftware/splitio-commons/src/utils/settin
4
4
  import { validateStorageCS } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/storage/storageCS';
5
5
  import { validatePluggableIntegrations } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/integrations/pluggable';
6
6
  import { validateLogger } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/logger/pluggableLogger';
7
- import { validateLocalhost } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/localhost/pluggable';
8
7
  import { validateConsent } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/consent';
9
- import { STANDALONE_MODE } from '@splitsoftware/splitio-commons/src/utils/constants';
10
8
 
11
9
  const params = {
12
10
  defaults,
@@ -15,15 +13,11 @@ const params = {
15
13
  storage: validateStorageCS,
16
14
  integrations: validatePluggableIntegrations,
17
15
  logger: validateLogger,
18
- localhost: validateLocalhost, // Slim SplitFactory validates that the localhost module is passed in localhost mode
19
16
  consent: validateConsent,
20
17
  };
21
18
 
22
19
  export function settingsFactory(config: any) {
23
20
  const settings = settingsValidation(config, params);
24
21
 
25
- // @ts-ignore, Override in localhost and consumer modes to emit SDK_READY event
26
- if (settings.mode !== STANDALONE_MODE) settings.sync.largeSegmentsEnabled = false;
27
-
28
22
  return settings;
29
23
  }
@@ -1,25 +1,24 @@
1
+ import type SplitIO from '@splitsoftware/splitio-commons/types/splitio';
1
2
  import { settingsFactory } from './settings';
2
3
  import { getModules } from './platform/getModules';
3
4
  import { sdkFactory } from '@splitsoftware/splitio-commons/src/sdkFactory/index';
4
5
  import { ISdkFactoryParams } from '@splitsoftware/splitio-commons/src/sdkFactory/types';
5
- import { getFetch } from './platform/getFetchSlim';
6
+ import { getFetch } from './platform/getFetch';
6
7
  import { getEventSource } from './platform/getEventSource';
7
8
  import { EventEmitter } from '@splitsoftware/splitio-commons/src/utils/MinEvents';
8
9
  import { now } from '@splitsoftware/splitio-commons/src/utils/timeTracker/now/browser';
9
- import { IBrowserSettings } from '../types/splitio';
10
10
 
11
11
  const platform = { getFetch, getEventSource, EventEmitter, now };
12
12
 
13
13
  /**
14
- * Slim SplitFactory with pluggable modules for Browser.
15
- * Doesn't include localhost mode and fetch ponyfill out-of-the-box.
14
+ * SplitFactory with pluggable modules for Browser.
16
15
  *
17
- * @param config configuration object used to instantiate the SDK
18
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
16
+ * @param config - configuration object used to instantiate the SDK
17
+ * @param __updateModules - optional function that lets redefine internal SDK modules. Use with
19
18
  * caution since, unlike `config`, this param is not validated neither considered part of the public API.
20
19
  * @throws Will throw an error if the provided config is invalid.
21
20
  */
22
- export function SplitFactory(config: IBrowserSettings, __updateModules?: (modules: ISdkFactoryParams) => void) {
21
+ export function SplitFactory(config: SplitIO.IClientSideSettings, __updateModules?: (modules: ISdkFactoryParams) => void) {
23
22
  const settings = settingsFactory(config);
24
23
  const modules = getModules(settings, platform);
25
24
  if (__updateModules) __updateModules(modules);
package/types/index.d.ts CHANGED
@@ -2,21 +2,19 @@
2
2
  // Project: http://www.split.io/
3
3
  // Definitions by: Nico Zelaya <https://github.com/NicoZelaya/>
4
4
 
5
- /// <reference path="./splitio.d.ts" />
5
+ import '@splitsoftware/splitio-commons';
6
+
6
7
  export = JsSdk;
7
8
 
8
9
  declare module JsSdk {
9
10
  /**
10
- * Slim version of the Split.io SDK factory function.
11
- *
12
- * Recommended to use for bundle size reduction in production, since it doesn't include a 'fetch' polyfill and localhost mode out-of-the-box
13
- * @see {@link https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK#localhost-mode}.
11
+ * Split.io SDK factory function.
14
12
  *
15
- * The settings parameter should be an object that complies with the SplitIO.IBrowserSettings.
13
+ * The settings parameter should be an object that complies with the SplitIO.IClientSideSettings or SplitIO.IClientSideAsyncSettings interfaces.
16
14
  * For more information read the corresponding article: @see {@link https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK#configuration}
17
15
  */
18
- export function SplitFactory(settings: SplitIO.IBrowserSettings): SplitIO.ISDK;
19
- export function SplitFactory(settings: SplitIO.IBrowserAsyncSettings): SplitIO.IAsyncSDK;
16
+ export function SplitFactory(settings: SplitIO.IClientSideSettings): SplitIO.ISDK;
17
+ export function SplitFactory(settings: SplitIO.IClientSideAsyncSettings): SplitIO.IAsyncSDK;
20
18
 
21
19
  /**
22
20
  * Persistent storage based on the LocalStorage Web API for browsers.
@@ -59,12 +57,4 @@ declare module JsSdk {
59
57
  * @see {@link https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK#logging}
60
58
  */
61
59
  export function ErrorLogger(): SplitIO.ILogger;
62
-
63
- /**
64
- * Required to enable localhost mode when importing the SDK from the slim entry point of the library.
65
- * It uses the mocked features map defined in the 'features' config object.
66
- *
67
- * @see {@link https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK#localhost-mode}
68
- */
69
- export function LocalhostFromObject(): SplitIO.LocalhostFactory;
70
60
  }
package/cjs/full/index.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PluggableStorage = exports.DebugLogger = exports.InfoLogger = exports.WarnLogger = exports.ErrorLogger = exports.InLocalStorage = exports.SplitFactory = void 0;
4
- var splitFactory_1 = require("./splitFactory");
5
- Object.defineProperty(exports, "SplitFactory", { enumerable: true, get: function () { return splitFactory_1.SplitFactory; } });
6
- var index_1 = require("@splitsoftware/splitio-commons/cjs/storages/inLocalStorage/index");
7
- Object.defineProperty(exports, "InLocalStorage", { enumerable: true, get: function () { return index_1.InLocalStorage; } });
8
- var ErrorLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/ErrorLogger");
9
- Object.defineProperty(exports, "ErrorLogger", { enumerable: true, get: function () { return ErrorLogger_1.ErrorLogger; } });
10
- var WarnLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/WarnLogger");
11
- Object.defineProperty(exports, "WarnLogger", { enumerable: true, get: function () { return WarnLogger_1.WarnLogger; } });
12
- var InfoLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/InfoLogger");
13
- Object.defineProperty(exports, "InfoLogger", { enumerable: true, get: function () { return InfoLogger_1.InfoLogger; } });
14
- var DebugLogger_1 = require("@splitsoftware/splitio-commons/cjs/logger/browser/DebugLogger");
15
- Object.defineProperty(exports, "DebugLogger", { enumerable: true, get: function () { return DebugLogger_1.DebugLogger; } });
16
- var pluggable_1 = require("@splitsoftware/splitio-commons/cjs/storages/pluggable");
17
- Object.defineProperty(exports, "PluggableStorage", { enumerable: true, get: function () { return pluggable_1.PluggableStorage; } });
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SplitFactory = void 0;
4
- var full_1 = require("../settings/full");
5
- var getModules_1 = require("../platform/getModules");
6
- var index_1 = require("@splitsoftware/splitio-commons/cjs/sdkFactory/index");
7
- var getFetchFull_1 = require("../platform/getFetchFull");
8
- var getEventSource_1 = require("../platform/getEventSource");
9
- var MinEvents_1 = require("@splitsoftware/splitio-commons/cjs/utils/MinEvents");
10
- var browser_1 = require("@splitsoftware/splitio-commons/cjs/utils/timeTracker/now/browser");
11
- var platform = { getFetch: getFetchFull_1.getFetch, getEventSource: getEventSource_1.getEventSource, EventEmitter: MinEvents_1.EventEmitter, now: browser_1.now };
12
- /**
13
- * SplitFactory with pluggable modules for Browser.
14
- * Includes localhost mode and fetch polyfill out-of-the-box.
15
- *
16
- * @param config configuration object used to instantiate the SDK
17
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
18
- * caution since, unlike `config`, this param is not validated neither considered part of the public API.
19
- * @throws Will throw an error if the provided config is invalid.
20
- */
21
- function SplitFactory(config, __updateModules) {
22
- var settings = (0, full_1.settingsFactory)(config);
23
- var modules = (0, getModules_1.getModules)(settings, platform);
24
- if (__updateModules)
25
- __updateModules(modules);
26
- return (0, index_1.sdkFactory)(modules);
27
- }
28
- exports.SplitFactory = SplitFactory;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFetch = void 0;
4
- var tslib_1 = require("tslib");
5
- var unfetch_1 = (0, tslib_1.__importDefault)(require("unfetch"));
6
- function getFetch() {
7
- return typeof fetch === 'function' ? fetch : unfetch_1.default;
8
- }
9
- exports.getFetch = getFetch;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settingsFactory = void 0;
4
- var index_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/index");
5
- var defaults_1 = require("./defaults");
6
- var runtime_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/runtime");
7
- var storageCS_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/storage/storageCS");
8
- var pluggable_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/integrations/pluggable");
9
- var pluggableLogger_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/logger/pluggableLogger");
10
- var builtin_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/localhost/builtin");
11
- var consent_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/consent");
12
- var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants");
13
- var params = {
14
- defaults: defaults_1.defaults,
15
- acceptKey: true,
16
- runtime: runtime_1.validateRuntime,
17
- storage: storageCS_1.validateStorageCS,
18
- integrations: pluggable_1.validatePluggableIntegrations,
19
- logger: pluggableLogger_1.validateLogger,
20
- localhost: builtin_1.validateLocalhostWithDefault,
21
- consent: consent_1.validateConsent,
22
- };
23
- function settingsFactory(config) {
24
- var settings = (0, index_1.settingsValidation)(config, params);
25
- // @ts-ignore, Override in localhost and consumer modes to emit SDK_READY event
26
- if (settings.mode !== constants_1.STANDALONE_MODE)
27
- settings.sync.largeSegmentsEnabled = false;
28
- return settings;
29
- }
30
- exports.settingsFactory = settingsFactory;
package/esm/full/index.js DELETED
@@ -1,7 +0,0 @@
1
- export { SplitFactory } from './splitFactory';
2
- export { InLocalStorage } from '@splitsoftware/splitio-commons/esm/storages/inLocalStorage/index';
3
- export { ErrorLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/ErrorLogger';
4
- export { WarnLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/WarnLogger';
5
- export { InfoLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/InfoLogger';
6
- export { DebugLogger } from '@splitsoftware/splitio-commons/esm/logger/browser/DebugLogger';
7
- export { PluggableStorage } from '@splitsoftware/splitio-commons/esm/storages/pluggable';
@@ -1,24 +0,0 @@
1
- import { settingsFactory } from '../settings/full';
2
- import { getModules } from '../platform/getModules';
3
- import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory/index';
4
- import { getFetch } from '../platform/getFetchFull';
5
- import { getEventSource } from '../platform/getEventSource';
6
- import { EventEmitter } from '@splitsoftware/splitio-commons/esm/utils/MinEvents';
7
- import { now } from '@splitsoftware/splitio-commons/esm/utils/timeTracker/now/browser';
8
- var platform = { getFetch: getFetch, getEventSource: getEventSource, EventEmitter: EventEmitter, now: now };
9
- /**
10
- * SplitFactory with pluggable modules for Browser.
11
- * Includes localhost mode and fetch polyfill out-of-the-box.
12
- *
13
- * @param config configuration object used to instantiate the SDK
14
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
15
- * caution since, unlike `config`, this param is not validated neither considered part of the public API.
16
- * @throws Will throw an error if the provided config is invalid.
17
- */
18
- export function SplitFactory(config, __updateModules) {
19
- var settings = settingsFactory(config);
20
- var modules = getModules(settings, platform);
21
- if (__updateModules)
22
- __updateModules(modules);
23
- return sdkFactory(modules);
24
- }
@@ -1,4 +0,0 @@
1
- import unfetch from 'unfetch';
2
- export function getFetch() {
3
- return typeof fetch === 'function' ? fetch : unfetch;
4
- }
@@ -1,26 +0,0 @@
1
- import { settingsValidation } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/index';
2
- import { defaults } from './defaults';
3
- import { validateRuntime } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/runtime';
4
- import { validateStorageCS } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/storage/storageCS';
5
- import { validatePluggableIntegrations } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/integrations/pluggable';
6
- import { validateLogger } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/logger/pluggableLogger';
7
- import { validateLocalhostWithDefault } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/localhost/builtin';
8
- import { validateConsent } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/consent';
9
- import { STANDALONE_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
10
- var params = {
11
- defaults: defaults,
12
- acceptKey: true,
13
- runtime: validateRuntime,
14
- storage: validateStorageCS,
15
- integrations: validatePluggableIntegrations,
16
- logger: validateLogger,
17
- localhost: validateLocalhostWithDefault,
18
- consent: validateConsent,
19
- };
20
- export function settingsFactory(config) {
21
- var settings = settingsValidation(config, params);
22
- // @ts-ignore, Override in localhost and consumer modes to emit SDK_READY event
23
- if (settings.mode !== STANDALONE_MODE)
24
- settings.sync.largeSegmentsEnabled = false;
25
- return settings;
26
- }
package/full/package.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../cjs/full/index.js",
3
- "module": "../esm/full/index.js",
4
- "types": "../types/full/index.d.ts",
5
- "sideEffects": false
6
- }
package/src/full/index.ts DELETED
@@ -1,7 +0,0 @@
1
- export { SplitFactory } from './splitFactory';
2
- export { InLocalStorage } from '@splitsoftware/splitio-commons/src/storages/inLocalStorage/index';
3
- export { ErrorLogger } from '@splitsoftware/splitio-commons/src/logger/browser/ErrorLogger';
4
- export { WarnLogger } from '@splitsoftware/splitio-commons/src/logger/browser/WarnLogger';
5
- export { InfoLogger } from '@splitsoftware/splitio-commons/src/logger/browser/InfoLogger';
6
- export { DebugLogger } from '@splitsoftware/splitio-commons/src/logger/browser/DebugLogger';
7
- export { PluggableStorage } from '@splitsoftware/splitio-commons/src/storages/pluggable';
@@ -1,27 +0,0 @@
1
- import { settingsFactory } from '../settings/full';
2
- import { getModules } from '../platform/getModules';
3
- import { sdkFactory } from '@splitsoftware/splitio-commons/src/sdkFactory/index';
4
- import { ISdkFactoryParams } from '@splitsoftware/splitio-commons/src/sdkFactory/types';
5
- import { getFetch } from '../platform/getFetchFull';
6
- import { getEventSource } from '../platform/getEventSource';
7
- import { EventEmitter } from '@splitsoftware/splitio-commons/src/utils/MinEvents';
8
- import { now } from '@splitsoftware/splitio-commons/src/utils/timeTracker/now/browser';
9
- import { IBrowserSettings } from '../../types/splitio';
10
-
11
- const platform = { getFetch, getEventSource, EventEmitter, now };
12
-
13
- /**
14
- * SplitFactory with pluggable modules for Browser.
15
- * Includes localhost mode and fetch polyfill out-of-the-box.
16
- *
17
- * @param config configuration object used to instantiate the SDK
18
- * @param __updateModules optional function that lets redefine internal SDK modules. Use with
19
- * caution since, unlike `config`, this param is not validated neither considered part of the public API.
20
- * @throws Will throw an error if the provided config is invalid.
21
- */
22
- export function SplitFactory(config: IBrowserSettings, __updateModules?: (modules: ISdkFactoryParams) => void) {
23
- const settings = settingsFactory(config);
24
- const modules = getModules(settings, platform);
25
- if (__updateModules) __updateModules(modules);
26
- return sdkFactory(modules);
27
- }