@featurevisor/core 1.35.3 → 2.0.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.
Files changed (251) hide show
  1. package/README.md +0 -6
  2. package/coverage/clover.xml +321 -237
  3. package/coverage/coverage-final.json +8 -8
  4. package/coverage/lcov-report/index.html +77 -47
  5. package/coverage/lcov-report/lib/builder/allocator.js.html +14 -14
  6. package/coverage/lcov-report/lib/builder/index.html +16 -16
  7. package/coverage/lcov-report/lib/builder/revision.js.html +3 -3
  8. package/coverage/lcov-report/lib/builder/traffic.js.html +88 -64
  9. package/coverage/lcov-report/lib/list/index.html +116 -0
  10. package/coverage/lcov-report/lib/{tester → list}/matrix.js.html +90 -66
  11. package/coverage/lcov-report/lib/tester/helpers.js.html +295 -0
  12. package/coverage/lcov-report/lib/tester/index.html +20 -35
  13. package/coverage/lcov-report/src/builder/allocator.ts.html +2 -2
  14. package/coverage/lcov-report/src/builder/index.html +15 -15
  15. package/coverage/lcov-report/src/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/src/builder/traffic.ts.html +96 -24
  17. package/coverage/lcov-report/src/list/index.html +116 -0
  18. package/coverage/lcov-report/src/{tester → list}/matrix.ts.html +87 -21
  19. package/coverage/lcov-report/src/tester/helpers.ts.html +313 -0
  20. package/coverage/lcov-report/src/tester/index.html +20 -35
  21. package/coverage/lcov.info +592 -436
  22. package/lib/assess-distribution/index.d.ts +1 -1
  23. package/lib/assess-distribution/index.js +102 -162
  24. package/lib/assess-distribution/index.js.map +1 -1
  25. package/lib/benchmark/index.js +87 -143
  26. package/lib/benchmark/index.js.map +1 -1
  27. package/lib/builder/allocator.d.ts +1 -1
  28. package/lib/builder/allocator.js +12 -12
  29. package/lib/builder/allocator.js.map +1 -1
  30. package/lib/builder/allocator.spec.js +22 -22
  31. package/lib/builder/allocator.spec.js.map +1 -1
  32. package/lib/builder/buildDatafile.d.ts +4 -3
  33. package/lib/builder/buildDatafile.js +311 -388
  34. package/lib/builder/buildDatafile.js.map +1 -1
  35. package/lib/builder/buildProject.d.ts +2 -1
  36. package/lib/builder/buildProject.js +96 -183
  37. package/lib/builder/buildProject.js.map +1 -1
  38. package/lib/builder/convertToV1.d.ts +10 -0
  39. package/lib/builder/convertToV1.js +119 -0
  40. package/lib/builder/convertToV1.js.map +1 -0
  41. package/lib/builder/getFeatureRanges.d.ts +1 -1
  42. package/lib/builder/getFeatureRanges.js +32 -105
  43. package/lib/builder/getFeatureRanges.js.map +1 -1
  44. package/lib/builder/hashes.d.ts +4 -0
  45. package/lib/builder/hashes.js +70 -0
  46. package/lib/builder/hashes.js.map +1 -0
  47. package/lib/builder/revision.js +2 -2
  48. package/lib/builder/revision.js.map +1 -1
  49. package/lib/builder/revision.spec.js +1 -1
  50. package/lib/builder/revision.spec.js.map +1 -1
  51. package/lib/builder/traffic.d.ts +1 -1
  52. package/lib/builder/traffic.js +57 -49
  53. package/lib/builder/traffic.js.map +1 -1
  54. package/lib/builder/traffic.spec.js +14 -14
  55. package/lib/builder/traffic.spec.js.map +1 -1
  56. package/lib/cli/cli.js +60 -129
  57. package/lib/cli/cli.js.map +1 -1
  58. package/lib/cli/plugins.js +14 -16
  59. package/lib/cli/plugins.js.map +1 -1
  60. package/lib/config/parsers.js +1 -1
  61. package/lib/config/parsers.js.map +1 -1
  62. package/lib/config/projectConfig.d.ts +8 -6
  63. package/lib/config/projectConfig.js +31 -72
  64. package/lib/config/projectConfig.js.map +1 -1
  65. package/lib/datasource/adapter.d.ts +1 -1
  66. package/lib/datasource/adapter.js +2 -5
  67. package/lib/datasource/adapter.js.map +1 -1
  68. package/lib/datasource/datasource.d.ts +2 -1
  69. package/lib/datasource/datasource.js +107 -148
  70. package/lib/datasource/datasource.js.map +1 -1
  71. package/lib/datasource/filesystemAdapter.d.ts +1 -1
  72. package/lib/datasource/filesystemAdapter.js +224 -360
  73. package/lib/datasource/filesystemAdapter.js.map +1 -1
  74. package/lib/evaluate/index.d.ts +1 -1
  75. package/lib/evaluate/index.js +120 -188
  76. package/lib/evaluate/index.js.map +1 -1
  77. package/lib/find-duplicate-segments/findDuplicateSegments.d.ts +1 -1
  78. package/lib/find-duplicate-segments/findDuplicateSegments.js +40 -128
  79. package/lib/find-duplicate-segments/findDuplicateSegments.js.map +1 -1
  80. package/lib/find-duplicate-segments/index.js +27 -82
  81. package/lib/find-duplicate-segments/index.js.map +1 -1
  82. package/lib/find-usage/index.d.ts +7 -5
  83. package/lib/find-usage/index.js +333 -507
  84. package/lib/find-usage/index.js.map +1 -1
  85. package/lib/generate-code/index.js +36 -91
  86. package/lib/generate-code/index.js.map +1 -1
  87. package/lib/generate-code/typescript.js +117 -157
  88. package/lib/generate-code/typescript.js.map +1 -1
  89. package/lib/index.d.ts +0 -1
  90. package/lib/index.js +0 -1
  91. package/lib/index.js.map +1 -1
  92. package/lib/info/index.js +45 -133
  93. package/lib/info/index.js.map +1 -1
  94. package/lib/init/index.d.ts +1 -1
  95. package/lib/init/index.js +16 -64
  96. package/lib/init/index.js.map +1 -1
  97. package/lib/linter/attributeSchema.d.ts +21 -6
  98. package/lib/linter/attributeSchema.js +18 -4
  99. package/lib/linter/attributeSchema.js.map +1 -1
  100. package/lib/linter/checkCircularDependency.d.ts +1 -1
  101. package/lib/linter/checkCircularDependency.js +22 -80
  102. package/lib/linter/checkCircularDependency.js.map +1 -1
  103. package/lib/linter/checkPercentageExceedingSlot.d.ts +1 -1
  104. package/lib/linter/checkPercentageExceedingSlot.js +36 -76
  105. package/lib/linter/checkPercentageExceedingSlot.js.map +1 -1
  106. package/lib/linter/conditionSchema.d.ts +1 -1
  107. package/lib/linter/conditionSchema.js +89 -41
  108. package/lib/linter/conditionSchema.js.map +1 -1
  109. package/lib/linter/featureSchema.d.ts +345 -197
  110. package/lib/linter/featureSchema.js +313 -172
  111. package/lib/linter/featureSchema.js.map +1 -1
  112. package/lib/linter/groupSchema.js +6 -6
  113. package/lib/linter/groupSchema.js.map +1 -1
  114. package/lib/linter/lintProject.js +306 -480
  115. package/lib/linter/lintProject.js.map +1 -1
  116. package/lib/linter/printError.js +7 -7
  117. package/lib/linter/printError.js.map +1 -1
  118. package/lib/linter/segmentSchema.js +2 -2
  119. package/lib/linter/segmentSchema.js.map +1 -1
  120. package/lib/linter/testSchema.d.ts +155 -3
  121. package/lib/linter/testSchema.js +47 -17
  122. package/lib/linter/testSchema.js.map +1 -1
  123. package/lib/list/index.d.ts +1 -0
  124. package/lib/list/index.js +349 -517
  125. package/lib/list/index.js.map +1 -1
  126. package/lib/{tester → list}/matrix.d.ts +1 -1
  127. package/lib/{tester → list}/matrix.js +50 -42
  128. package/lib/list/matrix.js.map +1 -0
  129. package/lib/{tester → list}/matrix.spec.js +7 -7
  130. package/lib/list/matrix.spec.js.map +1 -0
  131. package/lib/site/exportSite.js +25 -71
  132. package/lib/site/exportSite.js.map +1 -1
  133. package/lib/site/generateHistory.d.ts +1 -1
  134. package/lib/site/generateHistory.js +26 -82
  135. package/lib/site/generateHistory.js.map +1 -1
  136. package/lib/site/generateSiteSearchIndex.d.ts +1 -1
  137. package/lib/site/generateSiteSearchIndex.js +182 -259
  138. package/lib/site/generateSiteSearchIndex.js.map +1 -1
  139. package/lib/site/getLastModifiedFromHistory.d.ts +1 -1
  140. package/lib/site/getLastModifiedFromHistory.js +2 -2
  141. package/lib/site/getLastModifiedFromHistory.js.map +1 -1
  142. package/lib/site/getOwnerAndRepoFromUrl.js +6 -6
  143. package/lib/site/getOwnerAndRepoFromUrl.js.map +1 -1
  144. package/lib/site/getRelativePaths.js +7 -7
  145. package/lib/site/getRelativePaths.js.map +1 -1
  146. package/lib/site/getRepoDetails.js +20 -20
  147. package/lib/site/getRepoDetails.js.map +1 -1
  148. package/lib/site/index.js +25 -73
  149. package/lib/site/index.js.map +1 -1
  150. package/lib/site/serveSite.js +10 -10
  151. package/lib/site/serveSite.js.map +1 -1
  152. package/lib/tester/helpers.d.ts +2 -0
  153. package/lib/tester/helpers.js +71 -0
  154. package/lib/tester/helpers.js.map +1 -0
  155. package/lib/tester/helpers.spec.js +115 -0
  156. package/lib/tester/helpers.spec.js.map +1 -0
  157. package/lib/tester/index.d.ts +0 -1
  158. package/lib/tester/index.js +0 -1
  159. package/lib/tester/index.js.map +1 -1
  160. package/lib/tester/prettyDuration.js +11 -11
  161. package/lib/tester/prettyDuration.js.map +1 -1
  162. package/lib/tester/printTestResult.d.ts +1 -1
  163. package/lib/tester/printTestResult.js +35 -15
  164. package/lib/tester/printTestResult.js.map +1 -1
  165. package/lib/tester/testFeature.d.ts +4 -2
  166. package/lib/tester/testFeature.js +264 -226
  167. package/lib/tester/testFeature.js.map +1 -1
  168. package/lib/tester/testProject.d.ts +3 -7
  169. package/lib/tester/testProject.js +145 -246
  170. package/lib/tester/testProject.js.map +1 -1
  171. package/lib/tester/testSegment.d.ts +5 -2
  172. package/lib/tester/testSegment.js +65 -102
  173. package/lib/tester/testSegment.js.map +1 -1
  174. package/lib/utils/extractKeys.d.ts +2 -1
  175. package/lib/utils/extractKeys.js +57 -12
  176. package/lib/utils/extractKeys.js.map +1 -1
  177. package/lib/utils/git.d.ts +1 -1
  178. package/lib/utils/git.js +23 -23
  179. package/lib/utils/git.js.map +1 -1
  180. package/lib/utils/pretty.js +2 -4
  181. package/lib/utils/pretty.js.map +1 -1
  182. package/package.json +5 -6
  183. package/src/assess-distribution/index.ts +3 -2
  184. package/src/benchmark/index.ts +3 -3
  185. package/src/builder/allocator.spec.ts +1 -1
  186. package/src/builder/allocator.ts +1 -1
  187. package/src/builder/buildDatafile.ts +161 -124
  188. package/src/builder/buildProject.ts +6 -3
  189. package/src/builder/convertToV1.ts +166 -0
  190. package/src/builder/getFeatureRanges.ts +1 -1
  191. package/src/builder/hashes.ts +109 -0
  192. package/src/builder/traffic.ts +40 -16
  193. package/src/cli/cli.ts +1 -1
  194. package/src/cli/plugins.ts +0 -2
  195. package/src/config/projectConfig.ts +13 -10
  196. package/src/datasource/adapter.ts +1 -1
  197. package/src/datasource/datasource.ts +23 -2
  198. package/src/datasource/filesystemAdapter.ts +11 -12
  199. package/src/evaluate/index.ts +7 -6
  200. package/src/find-duplicate-segments/findDuplicateSegments.ts +1 -1
  201. package/src/find-usage/index.ts +111 -44
  202. package/src/generate-code/index.ts +1 -3
  203. package/src/generate-code/typescript.ts +7 -29
  204. package/src/index.ts +0 -1
  205. package/src/info/index.ts +2 -2
  206. package/src/init/index.ts +2 -2
  207. package/src/linter/attributeSchema.ts +18 -2
  208. package/src/linter/checkCircularDependency.ts +1 -1
  209. package/src/linter/checkPercentageExceedingSlot.ts +28 -8
  210. package/src/linter/conditionSchema.ts +66 -10
  211. package/src/linter/featureSchema.ts +312 -116
  212. package/src/linter/lintProject.ts +9 -4
  213. package/src/linter/testSchema.ts +42 -3
  214. package/src/list/index.ts +18 -30
  215. package/src/{tester → list}/matrix.ts +33 -11
  216. package/src/site/exportSite.ts +2 -4
  217. package/src/site/generateHistory.ts +1 -1
  218. package/src/site/generateSiteSearchIndex.ts +58 -50
  219. package/src/site/getLastModifiedFromHistory.ts +1 -1
  220. package/src/tester/helpers.spec.ts +149 -0
  221. package/src/tester/helpers.ts +76 -0
  222. package/src/tester/index.ts +0 -1
  223. package/src/tester/printTestResult.ts +25 -3
  224. package/src/tester/testFeature.ts +270 -124
  225. package/src/tester/testProject.ts +28 -49
  226. package/src/tester/testSegment.ts +48 -40
  227. package/src/utils/extractKeys.ts +58 -1
  228. package/src/utils/git.ts +1 -1
  229. package/tsconfig.cjs.json +1 -0
  230. package/coverage/lcov-report/lib/tester/checkIfObjectsAreEqual.js.html +0 -151
  231. package/coverage/lcov-report/src/tester/checkIfObjectsAreEqual.ts.html +0 -157
  232. package/lib/restore/index.d.ts +0 -4
  233. package/lib/restore/index.js +0 -91
  234. package/lib/restore/index.js.map +0 -1
  235. package/lib/tester/checkIfArraysAreEqual.d.ts +0 -1
  236. package/lib/tester/checkIfArraysAreEqual.js +0 -18
  237. package/lib/tester/checkIfArraysAreEqual.js.map +0 -1
  238. package/lib/tester/checkIfObjectsAreEqual.d.ts +0 -1
  239. package/lib/tester/checkIfObjectsAreEqual.js +0 -23
  240. package/lib/tester/checkIfObjectsAreEqual.js.map +0 -1
  241. package/lib/tester/checkIfObjectsAreEqual.spec.js +0 -26
  242. package/lib/tester/checkIfObjectsAreEqual.spec.js.map +0 -1
  243. package/lib/tester/matrix.js.map +0 -1
  244. package/lib/tester/matrix.spec.js.map +0 -1
  245. package/src/restore/index.ts +0 -42
  246. package/src/tester/checkIfArraysAreEqual.ts +0 -16
  247. package/src/tester/checkIfObjectsAreEqual.spec.ts +0 -31
  248. package/src/tester/checkIfObjectsAreEqual.ts +0 -24
  249. /package/lib/{tester → list}/matrix.spec.d.ts +0 -0
  250. /package/lib/tester/{checkIfObjectsAreEqual.spec.d.ts → helpers.spec.d.ts} +0 -0
  251. /package/src/{tester → list}/matrix.spec.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { FeatureKey, AttributeKey, Context } from "@featurevisor/types";
1
+ import type { FeatureKey, AttributeKey, Context } from "@featurevisor/types";
2
2
  import { Dependencies } from "../dependencies";
3
3
  import { Plugin } from "../cli";
4
4
  export interface AssessDistributionOptions {
@@ -1,68 +1,20 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
2
  Object.defineProperty(exports, "__esModule", { value: true });
50
3
  exports.assessDistributionPlugin = void 0;
51
4
  exports.assessDistribution = assessDistribution;
52
- var crypto_1 = require("crypto");
53
- var sdk_1 = require("@featurevisor/sdk");
54
- var builder_1 = require("../builder");
55
- var config_1 = require("../config");
56
- var utils_1 = require("../utils");
57
- var UUID_LENGTHS = [4, 2, 2, 2, 6];
5
+ const crypto_1 = require("crypto");
6
+ const sdk_1 = require("@featurevisor/sdk");
7
+ const builder_1 = require("../builder");
8
+ const config_1 = require("../config");
9
+ const utils_1 = require("../utils");
10
+ const UUID_LENGTHS = [4, 2, 2, 2, 6];
58
11
  function generateUUID() {
59
- return UUID_LENGTHS.map(function (len) { return (0, crypto_1.randomBytes)(len).toString("hex"); }).join("-");
12
+ return UUID_LENGTHS.map((len) => (0, crypto_1.randomBytes)(len).toString("hex")).join("-");
60
13
  }
61
- function printCounts(evaluations, n, sort) {
62
- if (sort === void 0) { sort = true; }
63
- var entries = Object.entries(evaluations);
14
+ function printCounts(evaluations, n, sort = true) {
15
+ let entries = Object.entries(evaluations);
64
16
  if (sort) {
65
- entries = entries.sort(function (a, b) {
17
+ entries = entries.sort((a, b) => {
66
18
  if (a[1] > b[1]) {
67
19
  return -1;
68
20
  }
@@ -72,124 +24,112 @@ function printCounts(evaluations, n, sort) {
72
24
  return 0;
73
25
  });
74
26
  }
75
- var longestValueLength = Object.keys(evaluations).reduce(function (acc, curr) { return (curr.length > acc ? curr.length : acc); }, 0);
76
- var highestCount = Object.values(evaluations).reduce(function (acc, curr) { return (curr > acc ? curr : acc); }, 0);
77
- var prettyHighestCountLength = (0, utils_1.prettyNumber)(highestCount).length;
78
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
79
- var _a = entries_1[_i], value = _a[0], count = _a[1];
80
- console.log(" - ".concat(value, ":").padEnd(longestValueLength + 5, " "), "\t".concat((0, utils_1.prettyNumber)(count).padStart(prettyHighestCountLength, " ")), "\t".concat((0, utils_1.prettyPercentage)(count, n).padStart(7, " ")));
27
+ const longestValueLength = Object.keys(evaluations).reduce((acc, curr) => (curr.length > acc ? curr.length : acc), 0);
28
+ const highestCount = Object.values(evaluations).reduce((acc, curr) => (curr > acc ? curr : acc), 0);
29
+ const prettyHighestCountLength = (0, utils_1.prettyNumber)(highestCount).length;
30
+ for (const [value, count] of entries) {
31
+ console.log(` - ${value}:`.padEnd(longestValueLength + 5, " "), `\t${(0, utils_1.prettyNumber)(count).padStart(prettyHighestCountLength, " ")}`, `\t${(0, utils_1.prettyPercentage)(count, n).padStart(7, " ")}`);
81
32
  }
82
33
  }
83
34
  function createContext(providedContext, populateUuid) {
84
- var context = __assign({}, providedContext);
35
+ const context = { ...providedContext };
85
36
  if (populateUuid) {
86
- for (var _i = 0, populateUuid_1 = populateUuid; _i < populateUuid_1.length; _i++) {
87
- var key = populateUuid_1[_i];
37
+ for (const key of populateUuid) {
88
38
  context[key] = generateUUID();
89
39
  }
90
40
  }
91
41
  return context;
92
42
  }
93
- function assessDistribution(deps, options) {
94
- return __awaiter(this, void 0, void 0, function () {
95
- var projectConfig, datasource, datafileBuildStart, existingState, datafileContent, datafileBuildDuration, f, hasVariations, feature, flagEvaluations, variationEvaluations, i, context, flagEvaluation, variationEvaluation;
96
- return __generator(this, function (_a) {
97
- switch (_a.label) {
98
- case 0:
99
- projectConfig = deps.projectConfig, datasource = deps.datasource;
100
- console.log("\nAssessing distribution for feature: \"".concat(options.feature, "\"..."));
101
- datafileBuildStart = Date.now();
102
- console.log("\n\nBuilding datafile containing all features for \"".concat(options.environment, "\"..."));
103
- return [4 /*yield*/, datasource.readState(options.environment || false)];
104
- case 1:
105
- existingState = _a.sent();
106
- return [4 /*yield*/, (0, builder_1.buildDatafile)(projectConfig, datasource, {
107
- schemaVersion: options.schemaVersion || config_1.SCHEMA_VERSION,
108
- revision: "include-all-features",
109
- environment: options.environment || false,
110
- inflate: options.inflate,
111
- }, existingState)];
112
- case 2:
113
- datafileContent = _a.sent();
114
- datafileBuildDuration = Date.now() - datafileBuildStart;
115
- console.log("Datafile build duration: ".concat(datafileBuildDuration, "ms"));
116
- f = (0, sdk_1.createInstance)({
117
- datafile: datafileContent,
118
- });
119
- console.log("\n\n...SDK initialized\n");
120
- hasVariations = false;
121
- feature = f.getFeature(options.feature);
122
- if (feature && feature.variations) {
123
- hasVariations = true;
124
- }
125
- flagEvaluations = {
126
- enabled: 0,
127
- disabled: 0,
128
- };
129
- variationEvaluations = {};
130
- console.log("\nEvaluating ".concat((0, utils_1.prettyNumber)(options.n), " times..."));
131
- for (i = 0; i < options.n; i++) {
132
- context = createContext(options.context, options.populateUuid);
133
- if (options.verbose) {
134
- console.log("[".concat(i + 1, "/").concat(options.n, "] Evaluating against context: ").concat(JSON.stringify(context)));
135
- }
136
- flagEvaluation = f.isEnabled(options.feature, context);
137
- if (flagEvaluation) {
138
- flagEvaluations.enabled++;
139
- }
140
- else {
141
- flagEvaluations.disabled++;
142
- }
143
- // variation
144
- if (hasVariations) {
145
- variationEvaluation = f.getVariation(options.feature, context);
146
- if (!variationEvaluations[variationEvaluation]) {
147
- variationEvaluations[variationEvaluation] = 0;
148
- }
149
- variationEvaluations[variationEvaluation]++;
150
- }
151
- }
152
- /**
153
- * Print results
154
- */
155
- console.log("\n\nFlag evaluations:\n");
156
- printCounts(flagEvaluations, options.n);
157
- if (hasVariations) {
158
- console.log("\n\nVariation evaluations:\n");
159
- printCounts(variationEvaluations, options.n);
160
- }
161
- return [2 /*return*/];
162
- }
163
- });
43
+ async function assessDistribution(deps, options) {
44
+ const { projectConfig, datasource } = deps;
45
+ console.log(`\nAssessing distribution for feature: "${options.feature}"...`);
46
+ /**
47
+ * Prepare datafile
48
+ */
49
+ const datafileBuildStart = Date.now();
50
+ console.log(`\n\nBuilding datafile containing all features for "${options.environment}"...`);
51
+ const existingState = await datasource.readState(options.environment || false);
52
+ const datafileContent = await (0, builder_1.buildDatafile)(projectConfig, datasource, {
53
+ schemaVersion: options.schemaVersion || config_1.SCHEMA_VERSION,
54
+ revision: "include-all-features",
55
+ environment: options.environment || false,
56
+ inflate: options.inflate,
57
+ }, existingState);
58
+ const datafileBuildDuration = Date.now() - datafileBuildStart;
59
+ console.log(`Datafile build duration: ${datafileBuildDuration}ms`);
60
+ /**
61
+ * Initialize SDK
62
+ */
63
+ const f = (0, sdk_1.createInstance)({
64
+ datafile: datafileContent,
65
+ logLevel: "warn",
164
66
  });
67
+ console.log("\n\n...SDK initialized\n");
68
+ /**
69
+ * Evaluations
70
+ */
71
+ let hasVariations = false;
72
+ const feature = f.getFeature(options.feature);
73
+ if (feature && feature.variations) {
74
+ hasVariations = true;
75
+ }
76
+ const flagEvaluations = {
77
+ enabled: 0,
78
+ disabled: 0,
79
+ };
80
+ const variationEvaluations = {};
81
+ console.log(`\nEvaluating ${(0, utils_1.prettyNumber)(options.n)} times...`);
82
+ for (let i = 0; i < options.n; i++) {
83
+ const context = createContext(options.context, options.populateUuid);
84
+ if (options.verbose) {
85
+ console.log(`[${i + 1}/${options.n}] Evaluating against context: ${JSON.stringify(context)}`);
86
+ }
87
+ // flag
88
+ const flagEvaluation = f.isEnabled(options.feature, context);
89
+ if (flagEvaluation) {
90
+ flagEvaluations.enabled++;
91
+ }
92
+ else {
93
+ flagEvaluations.disabled++;
94
+ }
95
+ // variation
96
+ if (hasVariations) {
97
+ const variationEvaluation = f.getVariation(options.feature, context);
98
+ if (!variationEvaluations[variationEvaluation]) {
99
+ variationEvaluations[variationEvaluation] = 0;
100
+ }
101
+ variationEvaluations[variationEvaluation]++;
102
+ }
103
+ }
104
+ /**
105
+ * Print results
106
+ */
107
+ console.log("\n\nFlag evaluations:\n");
108
+ printCounts(flagEvaluations, options.n);
109
+ if (hasVariations) {
110
+ console.log("\n\nVariation evaluations:\n");
111
+ printCounts(variationEvaluations, options.n);
112
+ }
165
113
  }
166
114
  exports.assessDistributionPlugin = {
167
115
  command: "assess-distribution",
168
- handler: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
169
- var rootDirectoryPath = _b.rootDirectoryPath, projectConfig = _b.projectConfig, datasource = _b.datasource, parsed = _b.parsed;
170
- return __generator(this, function (_c) {
171
- switch (_c.label) {
172
- case 0: return [4 /*yield*/, assessDistribution({
173
- rootDirectoryPath: rootDirectoryPath,
174
- projectConfig: projectConfig,
175
- datasource: datasource,
176
- options: parsed,
177
- }, {
178
- environment: parsed.environment,
179
- feature: parsed.feature,
180
- n: parseInt(parsed.n, 10) || 1,
181
- context: parsed.context ? JSON.parse(parsed.context) : {},
182
- populateUuid: Array.isArray(parsed.populateUuid)
183
- ? parsed.populateUuid
184
- : [parsed.populateUuid].filter(Boolean),
185
- verbose: parsed.verbose,
186
- })];
187
- case 1:
188
- _c.sent();
189
- return [2 /*return*/];
190
- }
116
+ handler: async ({ rootDirectoryPath, projectConfig, datasource, parsed }) => {
117
+ await assessDistribution({
118
+ rootDirectoryPath,
119
+ projectConfig,
120
+ datasource,
121
+ options: parsed,
122
+ }, {
123
+ environment: parsed.environment,
124
+ feature: parsed.feature,
125
+ n: parseInt(parsed.n, 10) || 1,
126
+ context: parsed.context ? JSON.parse(parsed.context) : {},
127
+ populateUuid: Array.isArray(parsed.populateUuid)
128
+ ? parsed.populateUuid
129
+ : [parsed.populateUuid].filter(Boolean),
130
+ verbose: parsed.verbose,
191
131
  });
192
- }); },
132
+ },
193
133
  examples: [
194
134
  {
195
135
  command: "assess-distribution --environment=production --feature=my_feature --context='{}' --populateUuid=userId -n=100",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assess-distribution/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assess-distribution/index.ts"],"names":[],"mappings":"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"}
@@ -1,176 +1,120 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.benchmarkPlugin = void 0;
40
4
  exports.benchmarkFeatureFlag = benchmarkFeatureFlag;
41
5
  exports.benchmarkFeatureVariation = benchmarkFeatureVariation;
42
6
  exports.benchmarkFeatureVariable = benchmarkFeatureVariable;
43
7
  exports.benchmarkFeature = benchmarkFeature;
44
- var sdk_1 = require("@featurevisor/sdk");
45
- var config_1 = require("../config");
46
- var builder_1 = require("../builder");
47
- var prettyDuration_1 = require("../tester/prettyDuration");
8
+ const sdk_1 = require("@featurevisor/sdk");
9
+ const config_1 = require("../config");
10
+ const builder_1 = require("../builder");
11
+ const prettyDuration_1 = require("../tester/prettyDuration");
48
12
  function benchmarkFeatureFlag(f, featureKey, context, n) {
49
- var start = Date.now();
50
- var value;
51
- for (var i = 0; i < n; i++) {
13
+ const start = Date.now();
14
+ let value;
15
+ for (let i = 0; i < n; i++) {
52
16
  value = f.isEnabled(featureKey, context);
53
17
  }
54
- var duration = Date.now() - start;
18
+ const duration = Date.now() - start;
55
19
  return {
56
- value: value,
57
- duration: duration,
20
+ value,
21
+ duration,
58
22
  };
59
23
  }
60
24
  function benchmarkFeatureVariation(f, featureKey, context, n) {
61
- var start = Date.now();
62
- var value;
63
- for (var i = 0; i < n; i++) {
25
+ const start = Date.now();
26
+ let value;
27
+ for (let i = 0; i < n; i++) {
64
28
  value = f.getVariation(featureKey, context);
65
29
  }
66
- var duration = Date.now() - start;
30
+ const duration = Date.now() - start;
67
31
  return {
68
- value: value,
69
- duration: duration,
32
+ value,
33
+ duration,
70
34
  };
71
35
  }
72
36
  function benchmarkFeatureVariable(f, featureKey, variableKey, context, n) {
73
- var start = Date.now();
74
- var value;
75
- for (var i = 0; i < n; i++) {
37
+ const start = Date.now();
38
+ let value;
39
+ for (let i = 0; i < n; i++) {
76
40
  value = f.getVariable(featureKey, variableKey, context);
77
41
  }
78
- var duration = Date.now() - start;
42
+ const duration = Date.now() - start;
79
43
  return {
80
- value: value,
81
- duration: duration,
44
+ value,
45
+ duration,
82
46
  };
83
47
  }
84
- function benchmarkFeature(deps, options) {
85
- return __awaiter(this, void 0, void 0, function () {
86
- var datasource, projectConfig, datafileBuildStart, existingState, datafileContent, datafileBuildDuration, f, output;
87
- return __generator(this, function (_a) {
88
- switch (_a.label) {
89
- case 0:
90
- datasource = deps.datasource, projectConfig = deps.projectConfig;
91
- console.log("");
92
- console.log("Running benchmark for feature \"".concat(options.feature, "\"..."));
93
- console.log("");
94
- console.log("Building datafile containing all features for \"".concat(options.environment, "\"..."));
95
- datafileBuildStart = Date.now();
96
- return [4 /*yield*/, datasource.readState(options.environment || false)];
97
- case 1:
98
- existingState = _a.sent();
99
- return [4 /*yield*/, (0, builder_1.buildDatafile)(projectConfig, datasource, {
100
- schemaVersion: options.schemaVersion || config_1.SCHEMA_VERSION,
101
- revision: "include-all-features",
102
- environment: options.environment || false,
103
- inflate: options.inflate,
104
- }, existingState)];
105
- case 2:
106
- datafileContent = _a.sent();
107
- datafileBuildDuration = Date.now() - datafileBuildStart;
108
- console.log("Datafile build duration: ".concat(datafileBuildDuration, "ms"));
109
- console.log("Datafile size: ".concat((JSON.stringify(datafileContent).length / 1024).toFixed(2), " kB"));
110
- if (options.inflate) {
111
- console.log("");
112
- console.log("Features count:", Object.keys(datafileContent.features).length);
113
- console.log("Segments count:", Object.keys(datafileContent.segments).length);
114
- console.log("Attributes count:", Object.keys(datafileContent.attributes).length);
115
- }
116
- console.log("");
117
- f = (0, sdk_1.createInstance)({
118
- datafile: datafileContent,
119
- });
120
- console.log("...SDK initialized");
121
- console.log("");
122
- console.log("Against context: ".concat(JSON.stringify(options.context)));
123
- if (options.variable) {
124
- // variable
125
- console.log("Evaluating variable \"".concat(options.variable, "\" ").concat(options.n, " times..."));
126
- output = benchmarkFeatureVariable(f, options.feature, options.variable, options.context, options.n);
127
- }
128
- else if (options.variation) {
129
- // variation
130
- console.log("Evaluating variation ".concat(options.n, " times..."));
131
- output = benchmarkFeatureVariation(f, options.feature, options.context, options.n);
132
- }
133
- else {
134
- // flag
135
- console.log("Evaluating flag ".concat(options.n, " times..."));
136
- output = benchmarkFeatureFlag(f, options.feature, options.context, options.n);
137
- }
138
- console.log("");
139
- console.log("Evaluated value : ".concat(JSON.stringify(output.value)));
140
- console.log("Total duration : ".concat((0, prettyDuration_1.prettyDuration)(output.duration)));
141
- console.log("Average duration: ".concat((0, prettyDuration_1.prettyDuration)(output.duration / options.n)));
142
- return [2 /*return*/];
143
- }
144
- });
48
+ async function benchmarkFeature(deps, options) {
49
+ const { datasource, projectConfig } = deps;
50
+ console.log("");
51
+ console.log(`Running benchmark for feature "${options.feature}"...`);
52
+ console.log("");
53
+ console.log(`Building datafile containing all features for "${options.environment}"...`);
54
+ const datafileBuildStart = Date.now();
55
+ const existingState = await datasource.readState(options.environment || false);
56
+ const datafileContent = await (0, builder_1.buildDatafile)(projectConfig, datasource, {
57
+ schemaVersion: options.schemaVersion || config_1.SCHEMA_VERSION,
58
+ revision: "include-all-features",
59
+ environment: options.environment || false,
60
+ inflate: options.inflate,
61
+ }, existingState);
62
+ const datafileBuildDuration = Date.now() - datafileBuildStart;
63
+ console.log(`Datafile build duration: ${datafileBuildDuration}ms`);
64
+ console.log(`Datafile size: ${(JSON.stringify(datafileContent).length / 1024).toFixed(2)} kB`);
65
+ if (options.inflate) {
66
+ console.log("");
67
+ console.log("Features count:", Object.keys(datafileContent.features).length);
68
+ console.log("Segments count:", Object.keys(datafileContent.segments).length);
69
+ }
70
+ console.log("");
71
+ const f = (0, sdk_1.createInstance)({
72
+ datafile: datafileContent,
73
+ logLevel: "warn",
145
74
  });
75
+ console.log("...SDK initialized");
76
+ console.log("");
77
+ console.log(`Against context: ${JSON.stringify(options.context)}`);
78
+ let output;
79
+ if (options.variable) {
80
+ // variable
81
+ console.log(`Evaluating variable "${options.variable}" ${options.n} times...`);
82
+ output = benchmarkFeatureVariable(f, options.feature, options.variable, options.context, options.n);
83
+ }
84
+ else if (options.variation) {
85
+ // variation
86
+ console.log(`Evaluating variation ${options.n} times...`);
87
+ output = benchmarkFeatureVariation(f, options.feature, options.context, options.n);
88
+ }
89
+ else {
90
+ // flag
91
+ console.log(`Evaluating flag ${options.n} times...`);
92
+ output = benchmarkFeatureFlag(f, options.feature, options.context, options.n);
93
+ }
94
+ console.log("");
95
+ console.log(`Evaluated value : ${JSON.stringify(output.value)}`);
96
+ console.log(`Total duration : ${(0, prettyDuration_1.prettyDuration)(output.duration)}`);
97
+ console.log(`Average duration: ${(0, prettyDuration_1.prettyDuration)(output.duration / options.n)}`);
146
98
  }
147
99
  exports.benchmarkPlugin = {
148
100
  command: "benchmark",
149
- handler: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
150
- var rootDirectoryPath = _b.rootDirectoryPath, projectConfig = _b.projectConfig, datasource = _b.datasource, parsed = _b.parsed;
151
- return __generator(this, function (_c) {
152
- switch (_c.label) {
153
- case 0: return [4 /*yield*/, benchmarkFeature({
154
- rootDirectoryPath: rootDirectoryPath,
155
- projectConfig: projectConfig,
156
- datasource: datasource,
157
- options: parsed,
158
- }, {
159
- environment: parsed.environment,
160
- feature: parsed.feature,
161
- n: parseInt(parsed.n, 10) || 1,
162
- context: parsed.context ? JSON.parse(parsed.context) : {},
163
- variation: parsed.variation || undefined,
164
- variable: parsed.variable || undefined,
165
- schemaVersion: parsed.schemaVersion || undefined,
166
- inflate: parseInt(parsed.inflate, 10) || undefined,
167
- })];
168
- case 1:
169
- _c.sent();
170
- return [2 /*return*/];
171
- }
101
+ handler: async ({ rootDirectoryPath, projectConfig, datasource, parsed }) => {
102
+ await benchmarkFeature({
103
+ rootDirectoryPath,
104
+ projectConfig,
105
+ datasource,
106
+ options: parsed,
107
+ }, {
108
+ environment: parsed.environment,
109
+ feature: parsed.feature,
110
+ n: parseInt(parsed.n, 10) || 1,
111
+ context: parsed.context ? JSON.parse(parsed.context) : {},
112
+ variation: parsed.variation || undefined,
113
+ variable: parsed.variable || undefined,
114
+ schemaVersion: parsed.schemaVersion || undefined,
115
+ inflate: parseInt(parsed.inflate, 10) || undefined,
172
116
  });
173
- }); },
117
+ },
174
118
  examples: [
175
119
  {
176
120
  command: 'benchmark --environment=production --feature=my_feature -n=1000 --context=\'{"userId": "123"}\'',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"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"}