flagsmith-nodejs 2.4.1 → 2.5.1
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/flagsmith-engine/segments/constants.d.ts +2 -0
- package/build/flagsmith-engine/segments/constants.js +4 -2
- package/build/flagsmith-engine/segments/models.js +6 -1
- package/build/sdk/analytics.d.ts +3 -0
- package/build/sdk/analytics.js +15 -1
- package/build/sdk/index.d.ts +2 -0
- package/build/sdk/index.js +15 -2
- package/build/sdk/types.d.ts +2 -0
- package/examples/api-proxy/package-lock.json +19 -25
- package/examples/basic/package-lock.json +29 -32
- package/examples/caching/package-lock.json +158 -78
- package/examples/custom-fetch-agent/package-lock.json +7 -13
- package/examples/local-evaluation/package-lock.json +7 -13
- package/flagsmith-engine/segments/constants.ts +3 -1
- package/flagsmith-engine/segments/models.ts +6 -1
- package/package.json +2 -1
- package/sdk/analytics.ts +23 -12
- package/sdk/index.ts +15 -2
- package/sdk/types.ts +2 -0
- package/tests/engine/unit/segments/segments_model.test.ts +10 -3
- package/tests/engine/unit/utils/utils.test.ts +62 -0
- package/tests/sdk/analytics.test.ts +21 -1
- package/tests/sdk/flagsmith.test.ts +17 -0
|
@@ -15,6 +15,7 @@ export declare const PERCENTAGE_SPLIT = "PERCENTAGE_SPLIT";
|
|
|
15
15
|
export declare const IS_SET = "IS_SET";
|
|
16
16
|
export declare const IS_NOT_SET = "IS_NOT_SET";
|
|
17
17
|
export declare const MODULO = "MODULO";
|
|
18
|
+
export declare const IN = "IN";
|
|
18
19
|
export declare const CONDITION_OPERATORS: {
|
|
19
20
|
EQUAL: string;
|
|
20
21
|
GREATER_THAN: string;
|
|
@@ -29,4 +30,5 @@ export declare const CONDITION_OPERATORS: {
|
|
|
29
30
|
IS_SET: string;
|
|
30
31
|
IS_NOT_SET: string;
|
|
31
32
|
MODULO: string;
|
|
33
|
+
IN: string;
|
|
32
34
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONDITION_OPERATORS = exports.MODULO = exports.IS_NOT_SET = exports.IS_SET = exports.PERCENTAGE_SPLIT = exports.REGEX = exports.NOT_EQUAL = exports.NOT_CONTAINS = exports.GREATER_THAN_INCLUSIVE = exports.CONTAINS = exports.LESS_THAN_INCLUSIVE = exports.LESS_THAN = exports.GREATER_THAN = exports.EQUAL = exports.RULE_TYPES = exports.NONE_RULE = exports.ANY_RULE = exports.ALL_RULE = void 0;
|
|
3
|
+
exports.CONDITION_OPERATORS = exports.IN = exports.MODULO = exports.IS_NOT_SET = exports.IS_SET = exports.PERCENTAGE_SPLIT = exports.REGEX = exports.NOT_EQUAL = exports.NOT_CONTAINS = exports.GREATER_THAN_INCLUSIVE = exports.CONTAINS = exports.LESS_THAN_INCLUSIVE = exports.LESS_THAN = exports.GREATER_THAN = exports.EQUAL = exports.RULE_TYPES = exports.NONE_RULE = exports.ANY_RULE = exports.ALL_RULE = void 0;
|
|
4
4
|
// Segment Rules
|
|
5
5
|
exports.ALL_RULE = 'ALL';
|
|
6
6
|
exports.ANY_RULE = 'ANY';
|
|
@@ -20,6 +20,7 @@ exports.PERCENTAGE_SPLIT = 'PERCENTAGE_SPLIT';
|
|
|
20
20
|
exports.IS_SET = 'IS_SET';
|
|
21
21
|
exports.IS_NOT_SET = 'IS_NOT_SET';
|
|
22
22
|
exports.MODULO = 'MODULO';
|
|
23
|
+
exports.IN = 'IN';
|
|
23
24
|
exports.CONDITION_OPERATORS = {
|
|
24
25
|
EQUAL: exports.EQUAL,
|
|
25
26
|
GREATER_THAN: exports.GREATER_THAN,
|
|
@@ -33,5 +34,6 @@ exports.CONDITION_OPERATORS = {
|
|
|
33
34
|
PERCENTAGE_SPLIT: exports.PERCENTAGE_SPLIT,
|
|
34
35
|
IS_SET: exports.IS_SET,
|
|
35
36
|
IS_NOT_SET: exports.IS_NOT_SET,
|
|
36
|
-
MODULO: exports.MODULO
|
|
37
|
+
MODULO: exports.MODULO,
|
|
38
|
+
IN: exports.IN
|
|
37
39
|
};
|
|
@@ -69,6 +69,7 @@ var SegmentConditionModel = /** @class */ (function () {
|
|
|
69
69
|
_a[constants_1.NOT_CONTAINS] = 'evaluateNotContains',
|
|
70
70
|
_a[constants_1.REGEX] = 'evaluateRegex',
|
|
71
71
|
_a[constants_1.MODULO] = 'evaluateModulo',
|
|
72
|
+
_a[constants_1.IN] = 'evaluateIn',
|
|
72
73
|
_a);
|
|
73
74
|
this.operator = operator;
|
|
74
75
|
this.value = value;
|
|
@@ -90,7 +91,11 @@ var SegmentConditionModel = /** @class */ (function () {
|
|
|
90
91
|
var parts = (_this.value).split("|");
|
|
91
92
|
var _a = __read([parseFloat(parts[0]), parseFloat(parts[1])], 2), divisor = _a[0], reminder = _a[1];
|
|
92
93
|
return traitValue % divisor === reminder;
|
|
93
|
-
}
|
|
94
|
+
},
|
|
95
|
+
evaluateIn: function (traitValue) {
|
|
96
|
+
var _a;
|
|
97
|
+
return (_a = _this.value) === null || _a === void 0 ? void 0 : _a.split(',').includes(traitValue.toString());
|
|
98
|
+
},
|
|
94
99
|
};
|
|
95
100
|
// TODO: move this logic to the evaluator module
|
|
96
101
|
if (this.EXCEPTION_OPERATOR_METHODS[this.operator]) {
|
package/build/sdk/analytics.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
1
2
|
export declare class AnalyticsProcessor {
|
|
2
3
|
private analyticsEndpoint;
|
|
3
4
|
private environmentKey;
|
|
@@ -6,6 +7,7 @@ export declare class AnalyticsProcessor {
|
|
|
6
7
|
[key: string]: any;
|
|
7
8
|
};
|
|
8
9
|
private requestTimeoutMs;
|
|
10
|
+
private logger;
|
|
9
11
|
/**
|
|
10
12
|
* AnalyticsProcessor is used to track how often individual Flags are evaluated within
|
|
11
13
|
* the Flagsmith SDK. Docs: https://docs.flagsmith.com/advanced-use/flag-analytics.
|
|
@@ -19,6 +21,7 @@ export declare class AnalyticsProcessor {
|
|
|
19
21
|
environmentKey: string;
|
|
20
22
|
baseApiUrl: string;
|
|
21
23
|
requestTimeoutMs?: number;
|
|
24
|
+
logger?: Logger;
|
|
22
25
|
});
|
|
23
26
|
/**
|
|
24
27
|
* Sends all the collected data to the api asynchronously and resets the timer
|
package/build/sdk/analytics.js
CHANGED
|
@@ -41,6 +41,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
42
|
exports.AnalyticsProcessor = void 0;
|
|
43
43
|
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
44
|
+
var pino_1 = __importDefault(require("pino"));
|
|
44
45
|
var ANALYTICS_ENDPOINT = 'analytics/flags/';
|
|
45
46
|
// Used to control how often we send data(in seconds)
|
|
46
47
|
var ANALYTICS_TIMER = 10;
|
|
@@ -61,18 +62,23 @@ var AnalyticsProcessor = /** @class */ (function () {
|
|
|
61
62
|
this.lastFlushed = Date.now();
|
|
62
63
|
this.analyticsData = {};
|
|
63
64
|
this.requestTimeoutMs = data.requestTimeoutMs || this.requestTimeoutMs;
|
|
65
|
+
this.logger = data.logger || (0, pino_1.default)();
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
68
|
* Sends all the collected data to the api asynchronously and resets the timer
|
|
67
69
|
*/
|
|
68
70
|
AnalyticsProcessor.prototype.flush = function () {
|
|
69
71
|
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
+
var error_1;
|
|
70
73
|
return __generator(this, function (_a) {
|
|
71
74
|
switch (_a.label) {
|
|
72
75
|
case 0:
|
|
73
76
|
if (!Object.keys(this.analyticsData).length) {
|
|
74
77
|
return [2 /*return*/];
|
|
75
78
|
}
|
|
79
|
+
_a.label = 1;
|
|
80
|
+
case 1:
|
|
81
|
+
_a.trys.push([1, 3, , 4]);
|
|
76
82
|
return [4 /*yield*/, (0, node_fetch_1.default)(this.analyticsEndpoint, {
|
|
77
83
|
method: 'POST',
|
|
78
84
|
body: JSON.stringify(this.analyticsData),
|
|
@@ -82,8 +88,16 @@ var AnalyticsProcessor = /** @class */ (function () {
|
|
|
82
88
|
'X-Environment-Key': this.environmentKey
|
|
83
89
|
}
|
|
84
90
|
})];
|
|
85
|
-
case
|
|
91
|
+
case 2:
|
|
86
92
|
_a.sent();
|
|
93
|
+
return [3 /*break*/, 4];
|
|
94
|
+
case 3:
|
|
95
|
+
error_1 = _a.sent();
|
|
96
|
+
// We don't want failing to write analytics to cause any exceptions in the main
|
|
97
|
+
// thread so we just swallow them here.
|
|
98
|
+
this.logger.warn('Failed to post analytics to Flagsmith API. Not clearing data, will retry.');
|
|
99
|
+
return [2 /*return*/];
|
|
100
|
+
case 4:
|
|
87
101
|
this.analyticsData = {};
|
|
88
102
|
this.lastFlushed = Date.now();
|
|
89
103
|
return [2 /*return*/];
|
package/build/sdk/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export declare class Flagsmith {
|
|
|
31
31
|
private cache?;
|
|
32
32
|
private onEnvironmentChange?;
|
|
33
33
|
private analyticsProcessor?;
|
|
34
|
+
private logger;
|
|
34
35
|
/**
|
|
35
36
|
* A Flagsmith client.
|
|
36
37
|
*
|
|
@@ -60,6 +61,7 @@ export declare class Flagsmith {
|
|
|
60
61
|
@param data.defaultFlagHandler: callable which will be used in the case where
|
|
61
62
|
flags cannot be retrieved from the API or a non existent feature is
|
|
62
63
|
requested
|
|
64
|
+
@param data.logger: an instance of the pino Logger class to use for logging
|
|
63
65
|
*/
|
|
64
66
|
constructor(data: FlagsmithConfig);
|
|
65
67
|
/**
|
package/build/sdk/index.js
CHANGED
|
@@ -62,6 +62,9 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
62
62
|
}
|
|
63
63
|
return ar;
|
|
64
64
|
};
|
|
65
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
66
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
67
|
+
};
|
|
65
68
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
69
|
exports.Flagsmith = exports.EnvironmentDataPollingManager = exports.Flags = exports.DefaultFlag = exports.FlagsmithClientError = exports.FlagsmithAPIError = exports.AnalyticsProcessor = void 0;
|
|
67
70
|
var flagsmith_engine_1 = require("../flagsmith-engine");
|
|
@@ -74,6 +77,7 @@ var models_3 = require("./models");
|
|
|
74
77
|
var polling_manager_1 = require("./polling_manager");
|
|
75
78
|
var utils_1 = require("./utils");
|
|
76
79
|
var evaluators_1 = require("../flagsmith-engine/segments/evaluators");
|
|
80
|
+
var pino_1 = __importDefault(require("pino"));
|
|
77
81
|
var analytics_2 = require("./analytics");
|
|
78
82
|
Object.defineProperty(exports, "AnalyticsProcessor", { enumerable: true, get: function () { return analytics_2.AnalyticsProcessor; } });
|
|
79
83
|
var errors_2 = require("./errors");
|
|
@@ -115,6 +119,7 @@ var Flagsmith = /** @class */ (function () {
|
|
|
115
119
|
@param data.defaultFlagHandler: callable which will be used in the case where
|
|
116
120
|
flags cannot be retrieved from the API or a non existent feature is
|
|
117
121
|
requested
|
|
122
|
+
@param data.logger: an instance of the pino Logger class to use for logging
|
|
118
123
|
*/
|
|
119
124
|
function Flagsmith(data) {
|
|
120
125
|
this.apiUrl = DEFAULT_API_URL;
|
|
@@ -137,6 +142,7 @@ var Flagsmith = /** @class */ (function () {
|
|
|
137
142
|
this.identitiesUrl = "".concat(this.apiUrl, "identities/");
|
|
138
143
|
this.environmentUrl = "".concat(this.apiUrl, "environment-document/");
|
|
139
144
|
this.onEnvironmentChange = data.onEnvironmentChange;
|
|
145
|
+
this.logger = data.logger || (0, pino_1.default)();
|
|
140
146
|
if (!!data.cache) {
|
|
141
147
|
var missingMethods = ['has', 'get', 'set'].filter(function (method) { return data.cache && !data.cache[method]; });
|
|
142
148
|
if (missingMethods.length > 0) {
|
|
@@ -156,7 +162,8 @@ var Flagsmith = /** @class */ (function () {
|
|
|
156
162
|
? new analytics_1.AnalyticsProcessor({
|
|
157
163
|
environmentKey: this.environmentKey,
|
|
158
164
|
baseApiUrl: this.apiUrl,
|
|
159
|
-
requestTimeoutMs: this.requestTimeoutMs
|
|
165
|
+
requestTimeoutMs: this.requestTimeoutMs,
|
|
166
|
+
logger: this.logger
|
|
160
167
|
})
|
|
161
168
|
: undefined;
|
|
162
169
|
}
|
|
@@ -216,6 +223,9 @@ var Flagsmith = /** @class */ (function () {
|
|
|
216
223
|
return __generator(this, function (_b) {
|
|
217
224
|
switch (_b.label) {
|
|
218
225
|
case 0:
|
|
226
|
+
if (!identifier) {
|
|
227
|
+
throw new Error("`identifier` argument is missing or invalid.");
|
|
228
|
+
}
|
|
219
229
|
_a = !!this.cache;
|
|
220
230
|
if (!_a) return [3 /*break*/, 2];
|
|
221
231
|
return [4 /*yield*/, this.cache.get("flags-".concat(identifier))];
|
|
@@ -253,6 +263,9 @@ var Flagsmith = /** @class */ (function () {
|
|
|
253
263
|
*/
|
|
254
264
|
Flagsmith.prototype.getIdentitySegments = function (identifier, traits) {
|
|
255
265
|
var _this = this;
|
|
266
|
+
if (!identifier) {
|
|
267
|
+
throw new Error("`identifier` argument is missing or invalid.");
|
|
268
|
+
}
|
|
256
269
|
traits = traits || {};
|
|
257
270
|
if (this.enableLocalEvaluation) {
|
|
258
271
|
return new Promise(function (resolve, reject) {
|
|
@@ -416,7 +429,7 @@ var Flagsmith = /** @class */ (function () {
|
|
|
416
429
|
featureStates: featureStates,
|
|
417
430
|
analyticsProcessor: this.analyticsProcessor,
|
|
418
431
|
defaultFlagHandler: this.defaultFlagHandler,
|
|
419
|
-
identityID: identityModel.djangoID || identityModel.
|
|
432
|
+
identityID: identityModel.djangoID || identityModel.compositeKey
|
|
420
433
|
});
|
|
421
434
|
if (!!!this.cache) return [3 /*break*/, 2];
|
|
422
435
|
// @ts-ignore node-cache types are incorrect, ttl should be optional
|
package/build/sdk/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DefaultFlag, Flags } from "./models";
|
|
2
2
|
import { EnvironmentModel } from "../flagsmith-engine";
|
|
3
3
|
import { RequestInit } from "node-fetch";
|
|
4
|
+
import { Logger } from "pino";
|
|
4
5
|
export interface FlagsmithCache {
|
|
5
6
|
get(key: string): Promise<Flags | undefined> | undefined;
|
|
6
7
|
set(key: string, value: Flags, ttl: string | number): boolean | Promise<boolean>;
|
|
@@ -22,4 +23,5 @@ export interface FlagsmithConfig {
|
|
|
22
23
|
defaultFlagHandler?: (featureName: string) => DefaultFlag;
|
|
23
24
|
cache?: FlagsmithCache;
|
|
24
25
|
onEnvironmentChange?: (error: Error | null, result: EnvironmentModel) => void;
|
|
26
|
+
logger?: Logger;
|
|
25
27
|
}
|
|
@@ -1783,9 +1783,9 @@
|
|
|
1783
1783
|
}
|
|
1784
1784
|
},
|
|
1785
1785
|
"node_modules/decode-uri-component": {
|
|
1786
|
-
"version": "0.2.
|
|
1787
|
-
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.
|
|
1788
|
-
"integrity": "
|
|
1786
|
+
"version": "0.2.2",
|
|
1787
|
+
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
1788
|
+
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
|
1789
1789
|
"dev": true,
|
|
1790
1790
|
"optional": true,
|
|
1791
1791
|
"engines": {
|
|
@@ -3923,13 +3923,10 @@
|
|
|
3923
3923
|
"dev": true
|
|
3924
3924
|
},
|
|
3925
3925
|
"node_modules/json5": {
|
|
3926
|
-
"version": "2.
|
|
3927
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
3928
|
-
"integrity": "sha512-
|
|
3926
|
+
"version": "2.2.3",
|
|
3927
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
3928
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
3929
3929
|
"dev": true,
|
|
3930
|
-
"dependencies": {
|
|
3931
|
-
"minimist": "^1.2.0"
|
|
3932
|
-
},
|
|
3933
3930
|
"bin": {
|
|
3934
3931
|
"json5": "lib/cli.js"
|
|
3935
3932
|
},
|
|
@@ -4114,9 +4111,9 @@
|
|
|
4114
4111
|
}
|
|
4115
4112
|
},
|
|
4116
4113
|
"node_modules/minimatch": {
|
|
4117
|
-
"version": "3.
|
|
4118
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.
|
|
4119
|
-
"integrity": "sha512-
|
|
4114
|
+
"version": "3.1.2",
|
|
4115
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
4116
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
4120
4117
|
"dev": true,
|
|
4121
4118
|
"dependencies": {
|
|
4122
4119
|
"brace-expansion": "^1.1.7"
|
|
@@ -7515,9 +7512,9 @@
|
|
|
7515
7512
|
}
|
|
7516
7513
|
},
|
|
7517
7514
|
"decode-uri-component": {
|
|
7518
|
-
"version": "0.2.
|
|
7519
|
-
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.
|
|
7520
|
-
"integrity": "
|
|
7515
|
+
"version": "0.2.2",
|
|
7516
|
+
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
7517
|
+
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
|
7521
7518
|
"dev": true,
|
|
7522
7519
|
"optional": true
|
|
7523
7520
|
},
|
|
@@ -9208,13 +9205,10 @@
|
|
|
9208
9205
|
"dev": true
|
|
9209
9206
|
},
|
|
9210
9207
|
"json5": {
|
|
9211
|
-
"version": "2.
|
|
9212
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
9213
|
-
"integrity": "sha512-
|
|
9214
|
-
"dev": true
|
|
9215
|
-
"requires": {
|
|
9216
|
-
"minimist": "^1.2.0"
|
|
9217
|
-
}
|
|
9208
|
+
"version": "2.2.3",
|
|
9209
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
9210
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
9211
|
+
"dev": true
|
|
9218
9212
|
},
|
|
9219
9213
|
"kind-of": {
|
|
9220
9214
|
"version": "6.0.3",
|
|
@@ -9351,9 +9345,9 @@
|
|
|
9351
9345
|
"dev": true
|
|
9352
9346
|
},
|
|
9353
9347
|
"minimatch": {
|
|
9354
|
-
"version": "3.
|
|
9355
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.
|
|
9356
|
-
"integrity": "sha512-
|
|
9348
|
+
"version": "3.1.2",
|
|
9349
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
9350
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
9357
9351
|
"dev": true,
|
|
9358
9352
|
"requires": {
|
|
9359
9353
|
"brace-expansion": "^1.1.7"
|
|
@@ -1750,9 +1750,9 @@
|
|
|
1750
1750
|
}
|
|
1751
1751
|
},
|
|
1752
1752
|
"node_modules/decode-uri-component": {
|
|
1753
|
-
"version": "0.2.
|
|
1754
|
-
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.
|
|
1755
|
-
"integrity": "
|
|
1753
|
+
"version": "0.2.2",
|
|
1754
|
+
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
1755
|
+
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
|
1756
1756
|
"dev": true,
|
|
1757
1757
|
"optional": true,
|
|
1758
1758
|
"engines": {
|
|
@@ -3857,13 +3857,10 @@
|
|
|
3857
3857
|
"dev": true
|
|
3858
3858
|
},
|
|
3859
3859
|
"node_modules/json5": {
|
|
3860
|
-
"version": "2.
|
|
3861
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
3862
|
-
"integrity": "sha512-
|
|
3860
|
+
"version": "2.2.3",
|
|
3861
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
3862
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
3863
3863
|
"dev": true,
|
|
3864
|
-
"dependencies": {
|
|
3865
|
-
"minimist": "^1.2.0"
|
|
3866
|
-
},
|
|
3867
3864
|
"bin": {
|
|
3868
3865
|
"json5": "lib/cli.js"
|
|
3869
3866
|
},
|
|
@@ -4048,9 +4045,9 @@
|
|
|
4048
4045
|
}
|
|
4049
4046
|
},
|
|
4050
4047
|
"node_modules/minimatch": {
|
|
4051
|
-
"version": "3.
|
|
4052
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.
|
|
4053
|
-
"integrity": "sha512-
|
|
4048
|
+
"version": "3.1.2",
|
|
4049
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
4050
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
4054
4051
|
"dev": true,
|
|
4055
4052
|
"dependencies": {
|
|
4056
4053
|
"brace-expansion": "^1.1.7"
|
|
@@ -4060,10 +4057,13 @@
|
|
|
4060
4057
|
}
|
|
4061
4058
|
},
|
|
4062
4059
|
"node_modules/minimist": {
|
|
4063
|
-
"version": "1.2.
|
|
4064
|
-
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.
|
|
4065
|
-
"integrity": "sha512-
|
|
4066
|
-
"dev": true
|
|
4060
|
+
"version": "1.2.7",
|
|
4061
|
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
|
|
4062
|
+
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
|
|
4063
|
+
"dev": true,
|
|
4064
|
+
"funding": {
|
|
4065
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
4066
|
+
}
|
|
4067
4067
|
},
|
|
4068
4068
|
"node_modules/mixin-deep": {
|
|
4069
4069
|
"version": "1.3.2",
|
|
@@ -7426,9 +7426,9 @@
|
|
|
7426
7426
|
}
|
|
7427
7427
|
},
|
|
7428
7428
|
"decode-uri-component": {
|
|
7429
|
-
"version": "0.2.
|
|
7430
|
-
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.
|
|
7431
|
-
"integrity": "
|
|
7429
|
+
"version": "0.2.2",
|
|
7430
|
+
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
7431
|
+
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
|
7432
7432
|
"dev": true,
|
|
7433
7433
|
"optional": true
|
|
7434
7434
|
},
|
|
@@ -9095,13 +9095,10 @@
|
|
|
9095
9095
|
"dev": true
|
|
9096
9096
|
},
|
|
9097
9097
|
"json5": {
|
|
9098
|
-
"version": "2.
|
|
9099
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
9100
|
-
"integrity": "sha512-
|
|
9101
|
-
"dev": true
|
|
9102
|
-
"requires": {
|
|
9103
|
-
"minimist": "^1.2.0"
|
|
9104
|
-
}
|
|
9098
|
+
"version": "2.2.3",
|
|
9099
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
9100
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
9101
|
+
"dev": true
|
|
9105
9102
|
},
|
|
9106
9103
|
"kind-of": {
|
|
9107
9104
|
"version": "6.0.3",
|
|
@@ -9238,18 +9235,18 @@
|
|
|
9238
9235
|
"dev": true
|
|
9239
9236
|
},
|
|
9240
9237
|
"minimatch": {
|
|
9241
|
-
"version": "3.
|
|
9242
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.
|
|
9243
|
-
"integrity": "sha512-
|
|
9238
|
+
"version": "3.1.2",
|
|
9239
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
9240
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
9244
9241
|
"dev": true,
|
|
9245
9242
|
"requires": {
|
|
9246
9243
|
"brace-expansion": "^1.1.7"
|
|
9247
9244
|
}
|
|
9248
9245
|
},
|
|
9249
9246
|
"minimist": {
|
|
9250
|
-
"version": "1.2.
|
|
9251
|
-
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.
|
|
9252
|
-
"integrity": "sha512-
|
|
9247
|
+
"version": "1.2.7",
|
|
9248
|
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
|
|
9249
|
+
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
|
|
9253
9250
|
"dev": true
|
|
9254
9251
|
},
|
|
9255
9252
|
"mixin-deep": {
|