flagsmith-nodejs 2.0.2 → 2.1.0
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/README.md +1 -1
- package/build/flagsmith-engine/index.d.ts +7 -0
- package/build/flagsmith-engine/index.js +15 -1
- package/build/index.d.ts +2 -1
- package/build/index.js +15 -3
- package/build/sdk/index.d.ts +5 -0
- package/build/sdk/index.js +19 -1
- package/build/sdk/types.d.ts +3 -3
- package/es6-example/.babelrc +3 -0
- package/es6-example/.eslintrc +8 -0
- package/es6-example/README.md +62 -0
- package/es6-example/package-lock.json +10585 -0
- package/es6-example/package.json +55 -0
- package/es6-example/src/api/index.js +50 -0
- package/es6-example/src/index.js +29 -0
- package/example/package-lock.json +1573 -21
- package/example/package.json +4 -1
- package/example/server/api/index.js +6 -3
- package/example/server/index.js +1 -1
- package/flagsmith-engine/index.ts +8 -0
- package/index.ts +19 -2
- package/package.json +3 -2
- package/sdk/analytics.ts +2 -2
- package/sdk/index.ts +12 -0
- package/sdk/models.ts +1 -1
- package/sdk/types.ts +4 -4
- package/tests/sdk/analytics.test.ts +10 -10
- package/tests/sdk/utils.ts +2 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ The SDK clients for NodeJS [https://www.flagsmith.com/](https://www.flagsmith.co
|
|
|
9
9
|
|
|
10
10
|
## Adding to your project
|
|
11
11
|
|
|
12
|
-
For full documentation visit [https://docs.flagsmith.com/clients/
|
|
12
|
+
For full documentation visit [https://docs.flagsmith.com/clients/server-side](https://docs.flagsmith.com/clients/server-side).
|
|
13
13
|
|
|
14
14
|
## Contributing
|
|
15
15
|
|
|
@@ -2,6 +2,13 @@ import { EnvironmentModel } from './environments/models';
|
|
|
2
2
|
import { FeatureStateModel } from './features/models';
|
|
3
3
|
import { IdentityModel } from './identities/models';
|
|
4
4
|
import { TraitModel } from './identities/traits/models';
|
|
5
|
+
export { EnvironmentModel } from './environments/models';
|
|
6
|
+
export { IntegrationModel } from './environments/integrations/models';
|
|
7
|
+
export { FeatureStateModel } from './features/models';
|
|
8
|
+
export { IdentityModel } from './identities/models';
|
|
9
|
+
export { TraitModel } from './identities/traits/models';
|
|
10
|
+
export { SegmentModel } from './segments/models';
|
|
11
|
+
export { OrganisationModel } from './organisations/models';
|
|
5
12
|
export declare function getIdentityFeatureState(environment: EnvironmentModel, identity: IdentityModel, featureName: string, overrideTraits?: TraitModel[]): FeatureStateModel;
|
|
6
13
|
export declare function getIdentityFeatureStates(environment: EnvironmentModel, identity: IdentityModel, overrideTraits?: TraitModel[]): FeatureStateModel[];
|
|
7
14
|
export declare function getEnvironmentFeatureState(environment: EnvironmentModel, featureName: string): FeatureStateModel;
|
|
@@ -11,9 +11,23 @@ var __values = (this && this.__values) || function(o) {
|
|
|
11
11
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.getEnvironmentFeatureStates = exports.getEnvironmentFeatureState = exports.getIdentityFeatureStates = exports.getIdentityFeatureState = void 0;
|
|
14
|
+
exports.getEnvironmentFeatureStates = exports.getEnvironmentFeatureState = exports.getIdentityFeatureStates = exports.getIdentityFeatureState = exports.OrganisationModel = exports.SegmentModel = exports.TraitModel = exports.IdentityModel = exports.FeatureStateModel = exports.IntegrationModel = exports.EnvironmentModel = void 0;
|
|
15
15
|
var evaluators_1 = require("./segments/evaluators");
|
|
16
16
|
var errors_1 = require("./utils/errors");
|
|
17
|
+
var models_1 = require("./environments/models");
|
|
18
|
+
Object.defineProperty(exports, "EnvironmentModel", { enumerable: true, get: function () { return models_1.EnvironmentModel; } });
|
|
19
|
+
var models_2 = require("./environments/integrations/models");
|
|
20
|
+
Object.defineProperty(exports, "IntegrationModel", { enumerable: true, get: function () { return models_2.IntegrationModel; } });
|
|
21
|
+
var models_3 = require("./features/models");
|
|
22
|
+
Object.defineProperty(exports, "FeatureStateModel", { enumerable: true, get: function () { return models_3.FeatureStateModel; } });
|
|
23
|
+
var models_4 = require("./identities/models");
|
|
24
|
+
Object.defineProperty(exports, "IdentityModel", { enumerable: true, get: function () { return models_4.IdentityModel; } });
|
|
25
|
+
var models_5 = require("./identities/traits/models");
|
|
26
|
+
Object.defineProperty(exports, "TraitModel", { enumerable: true, get: function () { return models_5.TraitModel; } });
|
|
27
|
+
var models_6 = require("./segments/models");
|
|
28
|
+
Object.defineProperty(exports, "SegmentModel", { enumerable: true, get: function () { return models_6.SegmentModel; } });
|
|
29
|
+
var models_7 = require("./organisations/models");
|
|
30
|
+
Object.defineProperty(exports, "OrganisationModel", { enumerable: true, get: function () { return models_7.OrganisationModel; } });
|
|
17
31
|
function getIdentityFeatureStatesDict(environment, identity, overrideTraits) {
|
|
18
32
|
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
|
|
19
33
|
// Get feature states from the environment
|
package/build/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { AnalyticsProcessor, FlagsmithAPIError, FlagsmithClientError, EnvironmentDataPollingManager, FlagsmithCache, DefaultFlag, Flags } from './sdk';
|
|
2
|
+
export { EnvironmentModel, IntegrationModel, FeatureStateModel, IdentityModel, TraitModel, SegmentModel, OrganisationModel } from './flagsmith-engine';
|
package/build/index.js
CHANGED
|
@@ -3,9 +3,21 @@ 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.
|
|
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
7
|
var sdk_1 = __importDefault(require("./sdk"));
|
|
8
8
|
var sdk_2 = require("./sdk");
|
|
9
|
-
Object.defineProperty(exports, "
|
|
10
|
-
|
|
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; } });
|
|
15
|
+
var flagsmith_engine_1 = require("./flagsmith-engine");
|
|
16
|
+
Object.defineProperty(exports, "EnvironmentModel", { enumerable: true, get: function () { return flagsmith_engine_1.EnvironmentModel; } });
|
|
17
|
+
Object.defineProperty(exports, "IntegrationModel", { enumerable: true, get: function () { return flagsmith_engine_1.IntegrationModel; } });
|
|
18
|
+
Object.defineProperty(exports, "FeatureStateModel", { enumerable: true, get: function () { return flagsmith_engine_1.FeatureStateModel; } });
|
|
19
|
+
Object.defineProperty(exports, "IdentityModel", { enumerable: true, get: function () { return flagsmith_engine_1.IdentityModel; } });
|
|
20
|
+
Object.defineProperty(exports, "TraitModel", { enumerable: true, get: function () { return flagsmith_engine_1.TraitModel; } });
|
|
21
|
+
Object.defineProperty(exports, "SegmentModel", { enumerable: true, get: function () { return flagsmith_engine_1.SegmentModel; } });
|
|
22
|
+
Object.defineProperty(exports, "OrganisationModel", { enumerable: true, get: function () { return flagsmith_engine_1.OrganisationModel; } });
|
|
11
23
|
module.exports = sdk_1.default;
|
package/build/sdk/index.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ import { DefaultFlag, Flags } from './models';
|
|
|
3
3
|
import { EnvironmentDataPollingManager } from './polling_manager';
|
|
4
4
|
import { SegmentModel } from '../flagsmith-engine/segments/models';
|
|
5
5
|
import { FlagsmithCache } from './types';
|
|
6
|
+
export { AnalyticsProcessor } from './analytics';
|
|
7
|
+
export { FlagsmithAPIError, FlagsmithClientError } from './errors';
|
|
8
|
+
export { DefaultFlag, Flags } from './models';
|
|
9
|
+
export { EnvironmentDataPollingManager } from './polling_manager';
|
|
10
|
+
export { FlagsmithCache } from './types';
|
|
6
11
|
export declare class Flagsmith {
|
|
7
12
|
environmentKey?: string;
|
|
8
13
|
apiUrl: string;
|
package/build/sdk/index.js
CHANGED
|
@@ -63,7 +63,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
63
63
|
return ar;
|
|
64
64
|
};
|
|
65
65
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
-
exports.Flagsmith = void 0;
|
|
66
|
+
exports.Flagsmith = exports.EnvironmentDataPollingManager = exports.Flags = exports.DefaultFlag = exports.FlagsmithClientError = exports.FlagsmithAPIError = exports.AnalyticsProcessor = void 0;
|
|
67
67
|
var flagsmith_engine_1 = require("../flagsmith-engine");
|
|
68
68
|
var util_1 = require("../flagsmith-engine/environments/util");
|
|
69
69
|
var models_1 = require("../flagsmith-engine/identities/models");
|
|
@@ -74,6 +74,16 @@ var models_3 = require("./models");
|
|
|
74
74
|
var polling_manager_1 = require("./polling_manager");
|
|
75
75
|
var utils_1 = require("./utils");
|
|
76
76
|
var evaluators_1 = require("../flagsmith-engine/segments/evaluators");
|
|
77
|
+
var analytics_2 = require("./analytics");
|
|
78
|
+
Object.defineProperty(exports, "AnalyticsProcessor", { enumerable: true, get: function () { return analytics_2.AnalyticsProcessor; } });
|
|
79
|
+
var errors_2 = require("./errors");
|
|
80
|
+
Object.defineProperty(exports, "FlagsmithAPIError", { enumerable: true, get: function () { return errors_2.FlagsmithAPIError; } });
|
|
81
|
+
Object.defineProperty(exports, "FlagsmithClientError", { enumerable: true, get: function () { return errors_2.FlagsmithClientError; } });
|
|
82
|
+
var models_4 = require("./models");
|
|
83
|
+
Object.defineProperty(exports, "DefaultFlag", { enumerable: true, get: function () { return models_4.DefaultFlag; } });
|
|
84
|
+
Object.defineProperty(exports, "Flags", { enumerable: true, get: function () { return models_4.Flags; } });
|
|
85
|
+
var polling_manager_2 = require("./polling_manager");
|
|
86
|
+
Object.defineProperty(exports, "EnvironmentDataPollingManager", { enumerable: true, get: function () { return polling_manager_2.EnvironmentDataPollingManager; } });
|
|
77
87
|
var DEFAULT_API_URL = 'https://edge.api.flagsmith.com/api/v1/';
|
|
78
88
|
var Flagsmith = /** @class */ (function () {
|
|
79
89
|
/**
|
|
@@ -368,8 +378,10 @@ var Flagsmith = /** @class */ (function () {
|
|
|
368
378
|
defaultFlagHandler: this.defaultFlagHandler
|
|
369
379
|
});
|
|
370
380
|
if (!!!this.cache) return [3 /*break*/, 2];
|
|
381
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
371
382
|
return [4 /*yield*/, this.cache.set('flags', flags)];
|
|
372
383
|
case 1:
|
|
384
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
373
385
|
_a.sent();
|
|
374
386
|
_a.label = 2;
|
|
375
387
|
case 2: return [2 /*return*/, flags];
|
|
@@ -394,8 +406,10 @@ var Flagsmith = /** @class */ (function () {
|
|
|
394
406
|
defaultFlagHandler: this.defaultFlagHandler
|
|
395
407
|
});
|
|
396
408
|
if (!!!this.cache) return [3 /*break*/, 2];
|
|
409
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
397
410
|
return [4 /*yield*/, this.cache.set("flags-".concat(identifier), flags)];
|
|
398
411
|
case 1:
|
|
412
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
399
413
|
_a.sent();
|
|
400
414
|
_a.label = 2;
|
|
401
415
|
case 2: return [2 /*return*/, flags];
|
|
@@ -419,8 +433,10 @@ var Flagsmith = /** @class */ (function () {
|
|
|
419
433
|
defaultFlagHandler: this.defaultFlagHandler
|
|
420
434
|
});
|
|
421
435
|
if (!!!this.cache) return [3 /*break*/, 3];
|
|
436
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
422
437
|
return [4 /*yield*/, this.cache.set('flags', flags)];
|
|
423
438
|
case 2:
|
|
439
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
424
440
|
_a.sent();
|
|
425
441
|
_a.label = 3;
|
|
426
442
|
case 3: return [2 /*return*/, flags];
|
|
@@ -455,8 +471,10 @@ var Flagsmith = /** @class */ (function () {
|
|
|
455
471
|
defaultFlagHandler: this.defaultFlagHandler
|
|
456
472
|
});
|
|
457
473
|
if (!!!this.cache) return [3 /*break*/, 3];
|
|
474
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
458
475
|
return [4 /*yield*/, this.cache.set("flags-".concat(identifier), flags)];
|
|
459
476
|
case 2:
|
|
477
|
+
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
|
460
478
|
_a.sent();
|
|
461
479
|
_a.label = 3;
|
|
462
480
|
case 3: return [2 /*return*/, flags];
|
package/build/sdk/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Flags } from "./models";
|
|
2
2
|
export interface FlagsmithCache {
|
|
3
|
-
get(key: string): Promise<Flags
|
|
4
|
-
set(key: string, value: Flags): Promise<
|
|
5
|
-
has(key: string): Promise<boolean>;
|
|
3
|
+
get(key: string): Promise<Flags | undefined> | undefined;
|
|
4
|
+
set(key: string, value: Flags, ttl: string | number): boolean | Promise<boolean>;
|
|
5
|
+
has(key: string): boolean | Promise<boolean>;
|
|
6
6
|
[key: string]: any;
|
|
7
7
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Nodejs-ES6-Boilerplate
|
|
2
|
+
[](https://github.com/made-in-indonesia/made-in-indonesia)
|
|
3
|
+
|
|
4
|
+
A Node.js boilerplate with ES6, ESLint, and Prettier
|
|
5
|
+
|
|
6
|
+
## Background
|
|
7
|
+
|
|
8
|
+
I created this boilerplate because I have several coding interviews that needs to be done using JavaScript.
|
|
9
|
+
|
|
10
|
+
## Scripts
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Run the project without nodemon
|
|
14
|
+
npm run start
|
|
15
|
+
|
|
16
|
+
# Build the project
|
|
17
|
+
npm run build
|
|
18
|
+
|
|
19
|
+
# Clean build
|
|
20
|
+
npm run clean
|
|
21
|
+
|
|
22
|
+
# Check the lint errors
|
|
23
|
+
npm run lint
|
|
24
|
+
|
|
25
|
+
# Fix the lint errors
|
|
26
|
+
npm run lint:fix
|
|
27
|
+
|
|
28
|
+
# Run prettier
|
|
29
|
+
npm run format
|
|
30
|
+
|
|
31
|
+
# Check prettier errors
|
|
32
|
+
npm run format:check
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
1. Clone the repository and init new git project
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
$ git clone git@github.com:vferdiansyah/nodejs-es6-boilerplate.git ./your/project/folder
|
|
41
|
+
$ cd ./your/project/folder
|
|
42
|
+
$ rm -rf .git
|
|
43
|
+
$ git init
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
2. Change project specific information in the following places
|
|
47
|
+
|
|
48
|
+
- [package.json](./package.json)
|
|
49
|
+
- [README.md](./README.md)
|
|
50
|
+
|
|
51
|
+
3. Install dependencies
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
$ npm i
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
4. Start coding
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
Copyright (c) 2020 Veri Ferdiansyah
|
|
62
|
+
Licensed under the MIT license.
|