@featurevisor/cli 1.13.1 → 1.15.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/.eslintcache +1 -1
- package/CHANGELOG.md +22 -0
- package/lib/index.js +73 -0
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +67 -0
package/.eslintcache
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"/home/runner/work/featurevisor/featurevisor/packages/cli/bin.js":"1","/home/runner/work/featurevisor/featurevisor/packages/cli/src/index.ts":"2"},{"size":45,"mtime":
|
|
1
|
+
[{"/home/runner/work/featurevisor/featurevisor/packages/cli/bin.js":"1","/home/runner/work/featurevisor/featurevisor/packages/cli/src/index.ts":"2"},{"size":45,"mtime":1712248292373,"results":"3","hashOfConfig":"4"},{"size":9021,"mtime":1712248292373,"results":"5","hashOfConfig":"4"},{"filePath":"6","messages":"7","suppressedMessages":"8","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1n91dwg",{"filePath":"9","messages":"10","suppressedMessages":"11","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/cli/bin.js",[],[],"/home/runner/work/featurevisor/featurevisor/packages/cli/src/index.ts",[],[]]
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.15.0](https://github.com/featurevisor/featurevisor/compare/v1.14.0...v1.15.0) (2024-04-04)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* show project configuration via CLI ([#293](https://github.com/featurevisor/featurevisor/issues/293)) ([a83f6fa](https://github.com/featurevisor/featurevisor/commit/a83f6fa4d21012b2e0c0d97ab6bb182f9aa4c1af))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [1.14.0](https://github.com/featurevisor/featurevisor/compare/v1.13.1...v1.14.0) (2024-04-02)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* benchmarking option in CLI ([#292](https://github.com/featurevisor/featurevisor/issues/292)) ([6abcecc](https://github.com/featurevisor/featurevisor/commit/6abcecc3a92f00ccea7dcb542676126b6eb3b778))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [1.13.1](https://github.com/featurevisor/featurevisor/compare/v1.13.0...v1.13.1) (2024-03-27)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @featurevisor/cli
|
package/lib/index.js
CHANGED
|
@@ -374,6 +374,79 @@ function main() {
|
|
|
374
374
|
.example("$0 find-usage --attribute=my_attribute", "find usage of attribute")
|
|
375
375
|
.example("$0 find-usage --unusedSegments", "find unused segments")
|
|
376
376
|
.example("$0 find-usage --unusedAttributes", "find unused attributes")
|
|
377
|
+
/**
|
|
378
|
+
* Benchmark features
|
|
379
|
+
*/
|
|
380
|
+
.command({
|
|
381
|
+
command: "benchmark",
|
|
382
|
+
handler: function (options) {
|
|
383
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
384
|
+
var deps, e_6;
|
|
385
|
+
return __generator(this, function (_a) {
|
|
386
|
+
switch (_a.label) {
|
|
387
|
+
case 0:
|
|
388
|
+
if (!options.environment) {
|
|
389
|
+
console.error("Please specify an environment with --environment flag.");
|
|
390
|
+
process.exit(1);
|
|
391
|
+
}
|
|
392
|
+
if (!options.feature) {
|
|
393
|
+
console.error("Please specify a feature with --feature flag.");
|
|
394
|
+
process.exit(1);
|
|
395
|
+
}
|
|
396
|
+
return [4 /*yield*/, getDependencies(options)];
|
|
397
|
+
case 1:
|
|
398
|
+
deps = _a.sent();
|
|
399
|
+
_a.label = 2;
|
|
400
|
+
case 2:
|
|
401
|
+
_a.trys.push([2, 4, , 5]);
|
|
402
|
+
return [4 /*yield*/, (0, core_1.benchmarkFeature)(deps, {
|
|
403
|
+
environment: options.environment,
|
|
404
|
+
feature: options.feature,
|
|
405
|
+
n: parseInt(options.n, 10) || 1,
|
|
406
|
+
context: options.context ? JSON.parse(options.context) : {},
|
|
407
|
+
variation: options.variation || undefined,
|
|
408
|
+
variable: options.variable || undefined,
|
|
409
|
+
})];
|
|
410
|
+
case 3:
|
|
411
|
+
_a.sent();
|
|
412
|
+
return [3 /*break*/, 5];
|
|
413
|
+
case 4:
|
|
414
|
+
e_6 = _a.sent();
|
|
415
|
+
console.error(e_6.message);
|
|
416
|
+
process.exit(1);
|
|
417
|
+
return [3 /*break*/, 5];
|
|
418
|
+
case 5: return [2 /*return*/];
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
},
|
|
423
|
+
})
|
|
424
|
+
.example("$0 benchmark", "benchmark feature evaluations")
|
|
425
|
+
.example("$0 benchmark --environment=production --feature=my_feature --context='{}' -n=100", "benchmark feature flag evaluation")
|
|
426
|
+
.example("$0 benchmark --environment=production --feature=my_feature --context='{}' --variation -n=100", "benchmark feature variation evaluation")
|
|
427
|
+
.example("$0 benchmark --environment=production --feature=my_feature --context='{}' --variable=my_variable_key -n=100", "benchmark feature variable evaluation")
|
|
428
|
+
/**
|
|
429
|
+
* Show config
|
|
430
|
+
*/
|
|
431
|
+
.command({
|
|
432
|
+
command: "config",
|
|
433
|
+
handler: function (options) {
|
|
434
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
435
|
+
var projectConfig;
|
|
436
|
+
return __generator(this, function (_a) {
|
|
437
|
+
projectConfig = requireAndGetProjectConfig(rootDirectoryPath);
|
|
438
|
+
(0, core_1.showProjectConfig)(projectConfig, {
|
|
439
|
+
print: options.print,
|
|
440
|
+
pretty: options.pretty,
|
|
441
|
+
});
|
|
442
|
+
return [2 /*return*/];
|
|
443
|
+
});
|
|
444
|
+
});
|
|
445
|
+
},
|
|
446
|
+
})
|
|
447
|
+
.example("$0 config", "show project configuration")
|
|
448
|
+
.example("$0 config --print", "print project configuration as JSON")
|
|
449
|
+
.example("$0 config --print --pretty", "print project configuration as prettified JSON")
|
|
377
450
|
/**
|
|
378
451
|
* Options
|
|
379
452
|
*/
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAyB;AACzB,2BAA6B;AAE7B,6BAA+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featurevisor/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "CLI package of Featurevisor",
|
|
5
5
|
"main": "bin.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
},
|
|
48
48
|
"license": "MIT",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@featurevisor/core": "^1.
|
|
50
|
+
"@featurevisor/core": "^1.15.0",
|
|
51
51
|
"yargs": "^17.6.2"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/yargs": "^17.0.22"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "243244cba5128205779b4b87237e442740d65db6"
|
|
57
57
|
}
|
package/src/index.ts
CHANGED
|
@@ -22,6 +22,8 @@ import {
|
|
|
22
22
|
restoreProject,
|
|
23
23
|
Dependencies,
|
|
24
24
|
Datasource,
|
|
25
|
+
benchmarkFeature,
|
|
26
|
+
showProjectConfig,
|
|
25
27
|
} from "@featurevisor/core";
|
|
26
28
|
|
|
27
29
|
process.on("unhandledRejection", (reason) => {
|
|
@@ -261,6 +263,71 @@ async function main() {
|
|
|
261
263
|
.example("$0 find-usage --unusedSegments", "find unused segments")
|
|
262
264
|
.example("$0 find-usage --unusedAttributes", "find unused attributes")
|
|
263
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Benchmark features
|
|
268
|
+
*/
|
|
269
|
+
.command({
|
|
270
|
+
command: "benchmark",
|
|
271
|
+
handler: async function (options) {
|
|
272
|
+
if (!options.environment) {
|
|
273
|
+
console.error("Please specify an environment with --environment flag.");
|
|
274
|
+
process.exit(1);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
if (!options.feature) {
|
|
278
|
+
console.error("Please specify a feature with --feature flag.");
|
|
279
|
+
process.exit(1);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const deps = await getDependencies(options);
|
|
283
|
+
|
|
284
|
+
try {
|
|
285
|
+
await benchmarkFeature(deps, {
|
|
286
|
+
environment: options.environment,
|
|
287
|
+
feature: options.feature,
|
|
288
|
+
n: parseInt(options.n, 10) || 1,
|
|
289
|
+
context: options.context ? JSON.parse(options.context) : {},
|
|
290
|
+
variation: options.variation || undefined,
|
|
291
|
+
variable: options.variable || undefined,
|
|
292
|
+
});
|
|
293
|
+
} catch (e) {
|
|
294
|
+
console.error(e.message);
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
})
|
|
299
|
+
.example("$0 benchmark", "benchmark feature evaluations")
|
|
300
|
+
.example(
|
|
301
|
+
"$0 benchmark --environment=production --feature=my_feature --context='{}' -n=100",
|
|
302
|
+
"benchmark feature flag evaluation",
|
|
303
|
+
)
|
|
304
|
+
.example(
|
|
305
|
+
"$0 benchmark --environment=production --feature=my_feature --context='{}' --variation -n=100",
|
|
306
|
+
"benchmark feature variation evaluation",
|
|
307
|
+
)
|
|
308
|
+
.example(
|
|
309
|
+
"$0 benchmark --environment=production --feature=my_feature --context='{}' --variable=my_variable_key -n=100",
|
|
310
|
+
"benchmark feature variable evaluation",
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Show config
|
|
315
|
+
*/
|
|
316
|
+
.command({
|
|
317
|
+
command: "config",
|
|
318
|
+
handler: async function (options) {
|
|
319
|
+
const projectConfig = requireAndGetProjectConfig(rootDirectoryPath);
|
|
320
|
+
|
|
321
|
+
showProjectConfig(projectConfig, {
|
|
322
|
+
print: options.print,
|
|
323
|
+
pretty: options.pretty,
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
})
|
|
327
|
+
.example("$0 config", "show project configuration")
|
|
328
|
+
.example("$0 config --print", "print project configuration as JSON")
|
|
329
|
+
.example("$0 config --print --pretty", "print project configuration as prettified JSON")
|
|
330
|
+
|
|
264
331
|
/**
|
|
265
332
|
* Options
|
|
266
333
|
*/
|