flagsmith-nodejs 2.2.0 → 2.2.2-beta.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.
package/build/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { AnalyticsProcessor, FlagsmithAPIError, FlagsmithClientError, EnvironmentDataPollingManager, FlagsmithCache, DefaultFlag, Flags } from './sdk';
1
+ export { AnalyticsProcessor, FlagsmithAPIError, FlagsmithClientError, EnvironmentDataPollingManager, FlagsmithCache, DefaultFlag, Flags, default } from './sdk';
2
2
  export { EnvironmentModel, IntegrationModel, FeatureStateModel, IdentityModel, TraitModel, SegmentModel, OrganisationModel } from './flagsmith-engine';
package/build/index.js CHANGED
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OrganisationModel = exports.SegmentModel = exports.TraitModel = exports.IdentityModel = exports.FeatureStateModel = exports.IntegrationModel = exports.EnvironmentModel = exports.Flags = exports.DefaultFlag = exports.EnvironmentDataPollingManager = exports.FlagsmithClientError = exports.FlagsmithAPIError = exports.AnalyticsProcessor = void 0;
7
- var sdk_1 = __importDefault(require("./sdk"));
8
- var sdk_2 = require("./sdk");
9
- Object.defineProperty(exports, "AnalyticsProcessor", { enumerable: true, get: function () { return sdk_2.AnalyticsProcessor; } });
10
- Object.defineProperty(exports, "FlagsmithAPIError", { enumerable: true, get: function () { return sdk_2.FlagsmithAPIError; } });
11
- Object.defineProperty(exports, "FlagsmithClientError", { enumerable: true, get: function () { return sdk_2.FlagsmithClientError; } });
12
- Object.defineProperty(exports, "EnvironmentDataPollingManager", { enumerable: true, get: function () { return sdk_2.EnvironmentDataPollingManager; } });
13
- Object.defineProperty(exports, "DefaultFlag", { enumerable: true, get: function () { return sdk_2.DefaultFlag; } });
14
- Object.defineProperty(exports, "Flags", { enumerable: true, get: function () { return sdk_2.Flags; } });
6
+ exports.OrganisationModel = exports.SegmentModel = exports.TraitModel = exports.IdentityModel = exports.FeatureStateModel = exports.IntegrationModel = exports.EnvironmentModel = exports.default = exports.Flags = exports.DefaultFlag = exports.EnvironmentDataPollingManager = exports.FlagsmithClientError = exports.FlagsmithAPIError = exports.AnalyticsProcessor = void 0;
7
+ var sdk_1 = require("./sdk");
8
+ Object.defineProperty(exports, "AnalyticsProcessor", { enumerable: true, get: function () { return sdk_1.AnalyticsProcessor; } });
9
+ Object.defineProperty(exports, "FlagsmithAPIError", { enumerable: true, get: function () { return sdk_1.FlagsmithAPIError; } });
10
+ Object.defineProperty(exports, "FlagsmithClientError", { enumerable: true, get: function () { return sdk_1.FlagsmithClientError; } });
11
+ Object.defineProperty(exports, "EnvironmentDataPollingManager", { enumerable: true, get: function () { return sdk_1.EnvironmentDataPollingManager; } });
12
+ Object.defineProperty(exports, "DefaultFlag", { enumerable: true, get: function () { return sdk_1.DefaultFlag; } });
13
+ Object.defineProperty(exports, "Flags", { enumerable: true, get: function () { return sdk_1.Flags; } });
14
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(sdk_1).default; } });
15
15
  var flagsmith_engine_1 = require("./flagsmith-engine");
16
16
  Object.defineProperty(exports, "EnvironmentModel", { enumerable: true, get: function () { return flagsmith_engine_1.EnvironmentModel; } });
17
17
  Object.defineProperty(exports, "IntegrationModel", { enumerable: true, get: function () { return flagsmith_engine_1.IntegrationModel; } });
@@ -20,4 +20,3 @@ Object.defineProperty(exports, "IdentityModel", { enumerable: true, get: functio
20
20
  Object.defineProperty(exports, "TraitModel", { enumerable: true, get: function () { return flagsmith_engine_1.TraitModel; } });
21
21
  Object.defineProperty(exports, "SegmentModel", { enumerable: true, get: function () { return flagsmith_engine_1.SegmentModel; } });
22
22
  Object.defineProperty(exports, "OrganisationModel", { enumerable: true, get: function () { return flagsmith_engine_1.OrganisationModel; } });
23
- module.exports = sdk_1.default;
@@ -114,6 +114,7 @@ export declare class Flagsmith {
114
114
  * You only need to call this if you wish to bypass environmentRefreshIntervalSeconds.
115
115
  */
116
116
  updateEnvironment(): Promise<void>;
117
+ close(): Promise<void>;
117
118
  private getJSONResponse;
118
119
  /**
119
120
  * This promise ensures that the environment is retrieved before attempting to locally evaluate.
@@ -183,10 +183,10 @@ var Flagsmith = /** @class */ (function () {
183
183
  return [2 /*return*/, cachedItem];
184
184
  }
185
185
  if (this.enableLocalEvaluation) {
186
- return [2 /*return*/, new Promise(function (resolve) {
186
+ return [2 /*return*/, new Promise(function (resolve, reject) {
187
187
  return _this.environmentPromise.then(function () {
188
188
  resolve(_this.getEnvironmentFlagsFromDocument());
189
- });
189
+ }).catch(function (e) { return reject(e); });
190
190
  })];
191
191
  }
192
192
  if (this.environment) {
@@ -228,10 +228,10 @@ var Flagsmith = /** @class */ (function () {
228
228
  }
229
229
  traits = traits || {};
230
230
  if (this.enableLocalEvaluation) {
231
- return [2 /*return*/, new Promise(function (resolve) {
231
+ return [2 /*return*/, new Promise(function (resolve, reject) {
232
232
  return _this.environmentPromise.then(function () {
233
233
  resolve(_this.getIdentityFlagsFromDocument(identifier, traits || {}));
234
- });
234
+ }).catch(function (e) { return reject(e); });
235
235
  })];
236
236
  }
237
237
  return [2 /*return*/, this.getIdentityFlagsFromApi(identifier, traits)];
@@ -254,15 +254,15 @@ var Flagsmith = /** @class */ (function () {
254
254
  var _this = this;
255
255
  traits = traits || {};
256
256
  if (this.enableLocalEvaluation) {
257
- return this.environmentPromise.then(function () {
258
- return new Promise(function (resolve) {
257
+ return new Promise(function (resolve, reject) {
258
+ return _this.environmentPromise.then(function () {
259
259
  var identityModel = _this.buildIdentityModel(identifier, Object.keys(traits || {}).map(function (key) { return ({
260
260
  key: key,
261
261
  value: traits === null || traits === void 0 ? void 0 : traits[key]
262
262
  }); }));
263
263
  var segments = (0, evaluators_1.getIdentitySegments)(_this.environment, identityModel);
264
264
  return resolve(segments);
265
- });
265
+ }).catch(function (e) { return reject(e); });
266
266
  });
267
267
  }
268
268
  console.error('This function is only permitted with local evaluation.');
@@ -312,6 +312,15 @@ var Flagsmith = /** @class */ (function () {
312
312
  });
313
313
  });
314
314
  };
315
+ Flagsmith.prototype.close = function () {
316
+ var _a;
317
+ return __awaiter(this, void 0, void 0, function () {
318
+ return __generator(this, function (_b) {
319
+ (_a = this.environmentDataPollingManager) === null || _a === void 0 ? void 0 : _a.stop();
320
+ return [2 /*return*/];
321
+ });
322
+ });
323
+ };
315
324
  Flagsmith.prototype.getJSONResponse = function (url, method, body) {
316
325
  return __awaiter(this, void 0, void 0, function () {
317
326
  var headers, _a, _b, _c, k, v, data;
@@ -9,7 +9,7 @@
9
9
  "version": "0.1.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "flagsmith-nodejs": "^2.0.0-beta.1",
12
+ "flagsmith-nodejs": "^2.2.2-beta.1",
13
13
  "node-cache": "^5.1.2",
14
14
  "ssg-node-express": "4.16.4",
15
15
  "ssg-util": "0.0.3"
@@ -478,16 +478,31 @@
478
478
  }
479
479
  },
480
480
  "node_modules/flagsmith-nodejs": {
481
- "version": "2.0.0-beta.1",
482
- "resolved": "https://registry.npmjs.org/flagsmith-nodejs/-/flagsmith-nodejs-2.0.0-beta.1.tgz",
483
- "integrity": "sha512-PZwLJJFvsLat+L2ovDNmJFbvSYs+HVKM0Ve6AkzTd6lqrhSTeqe2ZqWnjd7wvylx/fG6gv58sUMnV9gx07HNLg==",
481
+ "version": "2.2.2-beta.1",
482
+ "resolved": "https://registry.npmjs.org/flagsmith-nodejs/-/flagsmith-nodejs-2.2.2-beta.1.tgz",
483
+ "integrity": "sha512-bUAhcU/T6UmNpZXfUZ1D1KtkaidVrSNMXyjBiIASpureOtg1xaLyIrhD+S24RLpf/TBwyhhqmdupcmpeAf9uJw==",
484
484
  "dependencies": {
485
485
  "big-integer": "^1.6.51",
486
486
  "md5": "^2.3.0",
487
487
  "node-fetch": "^2.1.2",
488
+ "semver": "^7.3.7",
488
489
  "uuid": "^8.3.2"
489
490
  }
490
491
  },
492
+ "node_modules/flagsmith-nodejs/node_modules/semver": {
493
+ "version": "7.3.7",
494
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
495
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
496
+ "dependencies": {
497
+ "lru-cache": "^6.0.0"
498
+ },
499
+ "bin": {
500
+ "semver": "bin/semver.js"
501
+ },
502
+ "engines": {
503
+ "node": ">=10"
504
+ }
505
+ },
491
506
  "node_modules/forwarded": {
492
507
  "version": "0.1.2",
493
508
  "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@@ -714,6 +729,17 @@
714
729
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
715
730
  "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
716
731
  },
732
+ "node_modules/lru-cache": {
733
+ "version": "6.0.0",
734
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
735
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
736
+ "dependencies": {
737
+ "yallist": "^4.0.0"
738
+ },
739
+ "engines": {
740
+ "node": ">=10"
741
+ }
742
+ },
717
743
  "node_modules/md5": {
718
744
  "version": "2.3.0",
719
745
  "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -1320,6 +1346,11 @@
1320
1346
  "version": "1.0.2",
1321
1347
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1322
1348
  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1349
+ },
1350
+ "node_modules/yallist": {
1351
+ "version": "4.0.0",
1352
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1353
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
1323
1354
  }
1324
1355
  },
1325
1356
  "dependencies": {
@@ -1684,14 +1715,25 @@
1684
1715
  }
1685
1716
  },
1686
1717
  "flagsmith-nodejs": {
1687
- "version": "2.0.0-beta.1",
1688
- "resolved": "https://registry.npmjs.org/flagsmith-nodejs/-/flagsmith-nodejs-2.0.0-beta.1.tgz",
1689
- "integrity": "sha512-PZwLJJFvsLat+L2ovDNmJFbvSYs+HVKM0Ve6AkzTd6lqrhSTeqe2ZqWnjd7wvylx/fG6gv58sUMnV9gx07HNLg==",
1718
+ "version": "2.2.2-beta.1",
1719
+ "resolved": "https://registry.npmjs.org/flagsmith-nodejs/-/flagsmith-nodejs-2.2.2-beta.1.tgz",
1720
+ "integrity": "sha512-bUAhcU/T6UmNpZXfUZ1D1KtkaidVrSNMXyjBiIASpureOtg1xaLyIrhD+S24RLpf/TBwyhhqmdupcmpeAf9uJw==",
1690
1721
  "requires": {
1691
1722
  "big-integer": "^1.6.51",
1692
1723
  "md5": "^2.3.0",
1693
1724
  "node-fetch": "^2.1.2",
1725
+ "semver": "^7.3.7",
1694
1726
  "uuid": "^8.3.2"
1727
+ },
1728
+ "dependencies": {
1729
+ "semver": {
1730
+ "version": "7.3.7",
1731
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
1732
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
1733
+ "requires": {
1734
+ "lru-cache": "^6.0.0"
1735
+ }
1736
+ }
1695
1737
  }
1696
1738
  },
1697
1739
  "forwarded": {
@@ -1866,6 +1908,14 @@
1866
1908
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
1867
1909
  "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
1868
1910
  },
1911
+ "lru-cache": {
1912
+ "version": "6.0.0",
1913
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1914
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1915
+ "requires": {
1916
+ "yallist": "^4.0.0"
1917
+ }
1918
+ },
1869
1919
  "md5": {
1870
1920
  "version": "2.3.0",
1871
1921
  "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -2327,6 +2377,11 @@
2327
2377
  "version": "1.0.2",
2328
2378
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2329
2379
  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2380
+ },
2381
+ "yallist": {
2382
+ "version": "4.0.0",
2383
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2384
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
2330
2385
  }
2331
2386
  }
2332
2387
  }
@@ -15,7 +15,7 @@
15
15
  "npm": "3.10.x"
16
16
  },
17
17
  "dependencies": {
18
- "flagsmith-nodejs": "^2.0.0-beta.1",
18
+ "flagsmith-nodejs": "^2.2.2-beta.1",
19
19
  "node-cache": "^5.1.2",
20
20
  "ssg-node-express": "4.16.4",
21
21
  "ssg-util": "0.0.3"
@@ -1,6 +1,7 @@
1
1
  const Router = require('express').Router;
2
- const Flagsmith = require('../../../build');
2
+ const Flagsmith = require('flagsmith-nodejs').default;
3
3
  const environmentKey = '';
4
+
4
5
  const nodecache = require("node-cache");
5
6
 
6
7
  if (!environmentKey) {
package/index.ts CHANGED
@@ -1,5 +1,3 @@
1
- import Flagsmith from './sdk';
2
-
3
1
  export {
4
2
  AnalyticsProcessor,
5
3
  FlagsmithAPIError,
@@ -7,7 +5,8 @@ export {
7
5
  EnvironmentDataPollingManager,
8
6
  FlagsmithCache,
9
7
  DefaultFlag,
10
- Flags
8
+ Flags,
9
+ default
11
10
  } from './sdk';
12
11
 
13
12
  export {
@@ -19,5 +18,3 @@ export {
19
18
  SegmentModel,
20
19
  OrganisationModel
21
20
  } from './flagsmith-engine';
22
-
23
- module.exports = Flagsmith;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flagsmith-nodejs",
3
- "version": "2.2.0",
3
+ "version": "2.2.2-beta.2",
4
4
  "description": "Flagsmith lets you manage features flags and remote config across web, mobile and server side applications. Deliver true Continuous Integration. Get builds out faster. Control who has access to new features.",
5
5
  "main": "build/index.js",
6
6
  "repository": {
package/sdk/index.ts CHANGED
@@ -152,10 +152,10 @@ export class Flagsmith {
152
152
  return cachedItem;
153
153
  }
154
154
  if (this.enableLocalEvaluation) {
155
- return new Promise(resolve =>
155
+ return new Promise((resolve, reject) =>
156
156
  this.environmentPromise!.then(() => {
157
157
  resolve(this.getEnvironmentFlagsFromDocument());
158
- })
158
+ }).catch((e) => reject(e))
159
159
  );
160
160
  }
161
161
  if (this.environment) {
@@ -182,10 +182,10 @@ export class Flagsmith {
182
182
  }
183
183
  traits = traits || {};
184
184
  if (this.enableLocalEvaluation) {
185
- return new Promise(resolve =>
185
+ return new Promise((resolve, reject) =>
186
186
  this.environmentPromise!.then(() => {
187
187
  resolve(this.getIdentityFlagsFromDocument(identifier, traits || {}));
188
- })
188
+ }).catch(e => reject(e))
189
189
  );
190
190
  }
191
191
  return this.getIdentityFlagsFromApi(identifier, traits);
@@ -208,8 +208,8 @@ export class Flagsmith {
208
208
  ): Promise<SegmentModel[]> {
209
209
  traits = traits || {};
210
210
  if (this.enableLocalEvaluation) {
211
- return this.environmentPromise!.then(() => {
212
- return new Promise(resolve => {
211
+ return new Promise((resolve, reject) => {
212
+ return this.environmentPromise!.then(() => {
213
213
  const identityModel = this.buildIdentityModel(
214
214
  identifier,
215
215
  Object.keys(traits || {}).map(key => ({
@@ -220,7 +220,7 @@ export class Flagsmith {
220
220
 
221
221
  const segments = getIdentitySegments(this.environment, identityModel);
222
222
  return resolve(segments);
223
- });
223
+ }).catch((e) => reject(e));
224
224
  });
225
225
  }
226
226
  console.error('This function is only permitted with local evaluation.');
@@ -253,6 +253,10 @@ export class Flagsmith {
253
253
  }
254
254
  }
255
255
 
256
+ async close() {
257
+ this.environmentDataPollingManager?.stop();
258
+ }
259
+
256
260
  private async getJSONResponse(
257
261
  url: string,
258
262
  method: string,