@featurevisor/core 1.35.3 → 2.0.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.
Files changed (252) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +0 -6
  3. package/coverage/clover.xml +321 -237
  4. package/coverage/coverage-final.json +8 -8
  5. package/coverage/lcov-report/index.html +77 -47
  6. package/coverage/lcov-report/lib/builder/allocator.js.html +14 -14
  7. package/coverage/lcov-report/lib/builder/index.html +16 -16
  8. package/coverage/lcov-report/lib/builder/revision.js.html +3 -3
  9. package/coverage/lcov-report/lib/builder/traffic.js.html +88 -64
  10. package/coverage/lcov-report/lib/list/index.html +116 -0
  11. package/coverage/lcov-report/lib/{tester → list}/matrix.js.html +90 -66
  12. package/coverage/lcov-report/lib/tester/helpers.js.html +295 -0
  13. package/coverage/lcov-report/lib/tester/index.html +20 -35
  14. package/coverage/lcov-report/src/builder/allocator.ts.html +2 -2
  15. package/coverage/lcov-report/src/builder/index.html +15 -15
  16. package/coverage/lcov-report/src/builder/revision.ts.html +1 -1
  17. package/coverage/lcov-report/src/builder/traffic.ts.html +96 -24
  18. package/coverage/lcov-report/src/list/index.html +116 -0
  19. package/coverage/lcov-report/src/{tester → list}/matrix.ts.html +87 -21
  20. package/coverage/lcov-report/src/tester/helpers.ts.html +313 -0
  21. package/coverage/lcov-report/src/tester/index.html +20 -35
  22. package/coverage/lcov.info +592 -436
  23. package/lib/assess-distribution/index.d.ts +1 -1
  24. package/lib/assess-distribution/index.js +102 -162
  25. package/lib/assess-distribution/index.js.map +1 -1
  26. package/lib/benchmark/index.js +87 -143
  27. package/lib/benchmark/index.js.map +1 -1
  28. package/lib/builder/allocator.d.ts +1 -1
  29. package/lib/builder/allocator.js +12 -12
  30. package/lib/builder/allocator.js.map +1 -1
  31. package/lib/builder/allocator.spec.js +22 -22
  32. package/lib/builder/allocator.spec.js.map +1 -1
  33. package/lib/builder/buildDatafile.d.ts +4 -3
  34. package/lib/builder/buildDatafile.js +311 -388
  35. package/lib/builder/buildDatafile.js.map +1 -1
  36. package/lib/builder/buildProject.d.ts +2 -1
  37. package/lib/builder/buildProject.js +96 -183
  38. package/lib/builder/buildProject.js.map +1 -1
  39. package/lib/builder/convertToV1.d.ts +10 -0
  40. package/lib/builder/convertToV1.js +119 -0
  41. package/lib/builder/convertToV1.js.map +1 -0
  42. package/lib/builder/getFeatureRanges.d.ts +1 -1
  43. package/lib/builder/getFeatureRanges.js +32 -105
  44. package/lib/builder/getFeatureRanges.js.map +1 -1
  45. package/lib/builder/hashes.d.ts +4 -0
  46. package/lib/builder/hashes.js +70 -0
  47. package/lib/builder/hashes.js.map +1 -0
  48. package/lib/builder/revision.js +2 -2
  49. package/lib/builder/revision.js.map +1 -1
  50. package/lib/builder/revision.spec.js +1 -1
  51. package/lib/builder/revision.spec.js.map +1 -1
  52. package/lib/builder/traffic.d.ts +1 -1
  53. package/lib/builder/traffic.js +57 -49
  54. package/lib/builder/traffic.js.map +1 -1
  55. package/lib/builder/traffic.spec.js +14 -14
  56. package/lib/builder/traffic.spec.js.map +1 -1
  57. package/lib/cli/cli.js +60 -129
  58. package/lib/cli/cli.js.map +1 -1
  59. package/lib/cli/plugins.js +14 -16
  60. package/lib/cli/plugins.js.map +1 -1
  61. package/lib/config/parsers.js +1 -1
  62. package/lib/config/parsers.js.map +1 -1
  63. package/lib/config/projectConfig.d.ts +8 -6
  64. package/lib/config/projectConfig.js +31 -72
  65. package/lib/config/projectConfig.js.map +1 -1
  66. package/lib/datasource/adapter.d.ts +1 -1
  67. package/lib/datasource/adapter.js +2 -5
  68. package/lib/datasource/adapter.js.map +1 -1
  69. package/lib/datasource/datasource.d.ts +2 -1
  70. package/lib/datasource/datasource.js +107 -148
  71. package/lib/datasource/datasource.js.map +1 -1
  72. package/lib/datasource/filesystemAdapter.d.ts +1 -1
  73. package/lib/datasource/filesystemAdapter.js +224 -360
  74. package/lib/datasource/filesystemAdapter.js.map +1 -1
  75. package/lib/evaluate/index.d.ts +1 -1
  76. package/lib/evaluate/index.js +120 -188
  77. package/lib/evaluate/index.js.map +1 -1
  78. package/lib/find-duplicate-segments/findDuplicateSegments.d.ts +1 -1
  79. package/lib/find-duplicate-segments/findDuplicateSegments.js +40 -128
  80. package/lib/find-duplicate-segments/findDuplicateSegments.js.map +1 -1
  81. package/lib/find-duplicate-segments/index.js +27 -82
  82. package/lib/find-duplicate-segments/index.js.map +1 -1
  83. package/lib/find-usage/index.d.ts +7 -5
  84. package/lib/find-usage/index.js +333 -507
  85. package/lib/find-usage/index.js.map +1 -1
  86. package/lib/generate-code/index.js +36 -91
  87. package/lib/generate-code/index.js.map +1 -1
  88. package/lib/generate-code/typescript.js +117 -157
  89. package/lib/generate-code/typescript.js.map +1 -1
  90. package/lib/index.d.ts +0 -1
  91. package/lib/index.js +0 -1
  92. package/lib/index.js.map +1 -1
  93. package/lib/info/index.js +45 -133
  94. package/lib/info/index.js.map +1 -1
  95. package/lib/init/index.d.ts +1 -1
  96. package/lib/init/index.js +16 -64
  97. package/lib/init/index.js.map +1 -1
  98. package/lib/linter/attributeSchema.d.ts +21 -6
  99. package/lib/linter/attributeSchema.js +18 -4
  100. package/lib/linter/attributeSchema.js.map +1 -1
  101. package/lib/linter/checkCircularDependency.d.ts +1 -1
  102. package/lib/linter/checkCircularDependency.js +22 -80
  103. package/lib/linter/checkCircularDependency.js.map +1 -1
  104. package/lib/linter/checkPercentageExceedingSlot.d.ts +1 -1
  105. package/lib/linter/checkPercentageExceedingSlot.js +36 -76
  106. package/lib/linter/checkPercentageExceedingSlot.js.map +1 -1
  107. package/lib/linter/conditionSchema.d.ts +1 -1
  108. package/lib/linter/conditionSchema.js +89 -41
  109. package/lib/linter/conditionSchema.js.map +1 -1
  110. package/lib/linter/featureSchema.d.ts +345 -197
  111. package/lib/linter/featureSchema.js +313 -172
  112. package/lib/linter/featureSchema.js.map +1 -1
  113. package/lib/linter/groupSchema.js +6 -6
  114. package/lib/linter/groupSchema.js.map +1 -1
  115. package/lib/linter/lintProject.js +306 -480
  116. package/lib/linter/lintProject.js.map +1 -1
  117. package/lib/linter/printError.js +7 -7
  118. package/lib/linter/printError.js.map +1 -1
  119. package/lib/linter/segmentSchema.js +2 -2
  120. package/lib/linter/segmentSchema.js.map +1 -1
  121. package/lib/linter/testSchema.d.ts +155 -3
  122. package/lib/linter/testSchema.js +47 -17
  123. package/lib/linter/testSchema.js.map +1 -1
  124. package/lib/list/index.d.ts +1 -0
  125. package/lib/list/index.js +349 -517
  126. package/lib/list/index.js.map +1 -1
  127. package/lib/{tester → list}/matrix.d.ts +1 -1
  128. package/lib/{tester → list}/matrix.js +50 -42
  129. package/lib/list/matrix.js.map +1 -0
  130. package/lib/{tester → list}/matrix.spec.js +7 -7
  131. package/lib/list/matrix.spec.js.map +1 -0
  132. package/lib/site/exportSite.js +25 -71
  133. package/lib/site/exportSite.js.map +1 -1
  134. package/lib/site/generateHistory.d.ts +1 -1
  135. package/lib/site/generateHistory.js +26 -82
  136. package/lib/site/generateHistory.js.map +1 -1
  137. package/lib/site/generateSiteSearchIndex.d.ts +1 -1
  138. package/lib/site/generateSiteSearchIndex.js +182 -259
  139. package/lib/site/generateSiteSearchIndex.js.map +1 -1
  140. package/lib/site/getLastModifiedFromHistory.d.ts +1 -1
  141. package/lib/site/getLastModifiedFromHistory.js +2 -2
  142. package/lib/site/getLastModifiedFromHistory.js.map +1 -1
  143. package/lib/site/getOwnerAndRepoFromUrl.js +6 -6
  144. package/lib/site/getOwnerAndRepoFromUrl.js.map +1 -1
  145. package/lib/site/getRelativePaths.js +7 -7
  146. package/lib/site/getRelativePaths.js.map +1 -1
  147. package/lib/site/getRepoDetails.js +20 -20
  148. package/lib/site/getRepoDetails.js.map +1 -1
  149. package/lib/site/index.js +25 -73
  150. package/lib/site/index.js.map +1 -1
  151. package/lib/site/serveSite.js +10 -10
  152. package/lib/site/serveSite.js.map +1 -1
  153. package/lib/tester/helpers.d.ts +2 -0
  154. package/lib/tester/helpers.js +71 -0
  155. package/lib/tester/helpers.js.map +1 -0
  156. package/lib/tester/helpers.spec.js +115 -0
  157. package/lib/tester/helpers.spec.js.map +1 -0
  158. package/lib/tester/index.d.ts +0 -1
  159. package/lib/tester/index.js +0 -1
  160. package/lib/tester/index.js.map +1 -1
  161. package/lib/tester/prettyDuration.js +11 -11
  162. package/lib/tester/prettyDuration.js.map +1 -1
  163. package/lib/tester/printTestResult.d.ts +1 -1
  164. package/lib/tester/printTestResult.js +35 -15
  165. package/lib/tester/printTestResult.js.map +1 -1
  166. package/lib/tester/testFeature.d.ts +4 -2
  167. package/lib/tester/testFeature.js +264 -226
  168. package/lib/tester/testFeature.js.map +1 -1
  169. package/lib/tester/testProject.d.ts +3 -7
  170. package/lib/tester/testProject.js +145 -246
  171. package/lib/tester/testProject.js.map +1 -1
  172. package/lib/tester/testSegment.d.ts +5 -2
  173. package/lib/tester/testSegment.js +65 -102
  174. package/lib/tester/testSegment.js.map +1 -1
  175. package/lib/utils/extractKeys.d.ts +2 -1
  176. package/lib/utils/extractKeys.js +57 -12
  177. package/lib/utils/extractKeys.js.map +1 -1
  178. package/lib/utils/git.d.ts +1 -1
  179. package/lib/utils/git.js +23 -23
  180. package/lib/utils/git.js.map +1 -1
  181. package/lib/utils/pretty.js +2 -4
  182. package/lib/utils/pretty.js.map +1 -1
  183. package/package.json +5 -6
  184. package/src/assess-distribution/index.ts +3 -2
  185. package/src/benchmark/index.ts +3 -3
  186. package/src/builder/allocator.spec.ts +1 -1
  187. package/src/builder/allocator.ts +1 -1
  188. package/src/builder/buildDatafile.ts +161 -124
  189. package/src/builder/buildProject.ts +6 -3
  190. package/src/builder/convertToV1.ts +166 -0
  191. package/src/builder/getFeatureRanges.ts +1 -1
  192. package/src/builder/hashes.ts +109 -0
  193. package/src/builder/traffic.ts +40 -16
  194. package/src/cli/cli.ts +1 -1
  195. package/src/cli/plugins.ts +0 -2
  196. package/src/config/projectConfig.ts +13 -10
  197. package/src/datasource/adapter.ts +1 -1
  198. package/src/datasource/datasource.ts +23 -2
  199. package/src/datasource/filesystemAdapter.ts +11 -12
  200. package/src/evaluate/index.ts +7 -6
  201. package/src/find-duplicate-segments/findDuplicateSegments.ts +1 -1
  202. package/src/find-usage/index.ts +111 -44
  203. package/src/generate-code/index.ts +1 -3
  204. package/src/generate-code/typescript.ts +7 -29
  205. package/src/index.ts +0 -1
  206. package/src/info/index.ts +2 -2
  207. package/src/init/index.ts +2 -2
  208. package/src/linter/attributeSchema.ts +18 -2
  209. package/src/linter/checkCircularDependency.ts +1 -1
  210. package/src/linter/checkPercentageExceedingSlot.ts +28 -8
  211. package/src/linter/conditionSchema.ts +66 -10
  212. package/src/linter/featureSchema.ts +312 -116
  213. package/src/linter/lintProject.ts +9 -4
  214. package/src/linter/testSchema.ts +42 -3
  215. package/src/list/index.ts +18 -30
  216. package/src/{tester → list}/matrix.ts +33 -11
  217. package/src/site/exportSite.ts +2 -4
  218. package/src/site/generateHistory.ts +1 -1
  219. package/src/site/generateSiteSearchIndex.ts +58 -50
  220. package/src/site/getLastModifiedFromHistory.ts +1 -1
  221. package/src/tester/helpers.spec.ts +149 -0
  222. package/src/tester/helpers.ts +76 -0
  223. package/src/tester/index.ts +0 -1
  224. package/src/tester/printTestResult.ts +25 -3
  225. package/src/tester/testFeature.ts +270 -124
  226. package/src/tester/testProject.ts +28 -49
  227. package/src/tester/testSegment.ts +48 -40
  228. package/src/utils/extractKeys.ts +58 -1
  229. package/src/utils/git.ts +1 -1
  230. package/tsconfig.cjs.json +1 -0
  231. package/coverage/lcov-report/lib/tester/checkIfObjectsAreEqual.js.html +0 -151
  232. package/coverage/lcov-report/src/tester/checkIfObjectsAreEqual.ts.html +0 -157
  233. package/lib/restore/index.d.ts +0 -4
  234. package/lib/restore/index.js +0 -91
  235. package/lib/restore/index.js.map +0 -1
  236. package/lib/tester/checkIfArraysAreEqual.d.ts +0 -1
  237. package/lib/tester/checkIfArraysAreEqual.js +0 -18
  238. package/lib/tester/checkIfArraysAreEqual.js.map +0 -1
  239. package/lib/tester/checkIfObjectsAreEqual.d.ts +0 -1
  240. package/lib/tester/checkIfObjectsAreEqual.js +0 -23
  241. package/lib/tester/checkIfObjectsAreEqual.js.map +0 -1
  242. package/lib/tester/checkIfObjectsAreEqual.spec.js +0 -26
  243. package/lib/tester/checkIfObjectsAreEqual.spec.js.map +0 -1
  244. package/lib/tester/matrix.js.map +0 -1
  245. package/lib/tester/matrix.spec.js.map +0 -1
  246. package/src/restore/index.ts +0 -42
  247. package/src/tester/checkIfArraysAreEqual.ts +0 -16
  248. package/src/tester/checkIfObjectsAreEqual.spec.ts +0 -31
  249. package/src/tester/checkIfObjectsAreEqual.ts +0 -24
  250. /package/lib/{tester → list}/matrix.spec.d.ts +0 -0
  251. /package/lib/tester/{checkIfObjectsAreEqual.spec.d.ts → helpers.spec.d.ts} +0 -0
  252. /package/src/{tester → list}/matrix.spec.ts +0 -0
@@ -1,42 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getRepoDetails = getRepoDetails;
4
- var child_process_1 = require("child_process");
5
- var getOwnerAndRepoFromUrl_1 = require("./getOwnerAndRepoFromUrl");
4
+ const child_process_1 = require("child_process");
5
+ const getOwnerAndRepoFromUrl_1 = require("./getOwnerAndRepoFromUrl");
6
6
  function getRepoDetails() {
7
7
  try {
8
- var topLevelPathOutput = (0, child_process_1.execSync)("git rev-parse --show-toplevel");
9
- var topLevelPath = topLevelPathOutput.toString().trim();
10
- var remoteUrlOutput = (0, child_process_1.execSync)("git remote get-url origin");
11
- var remoteUrl = remoteUrlOutput.toString().trim();
12
- var branchOutput = (0, child_process_1.execSync)("git rev-parse --abbrev-ref HEAD");
13
- var branch = branchOutput.toString().trim();
8
+ const topLevelPathOutput = (0, child_process_1.execSync)(`git rev-parse --show-toplevel`);
9
+ const topLevelPath = topLevelPathOutput.toString().trim();
10
+ const remoteUrlOutput = (0, child_process_1.execSync)(`git remote get-url origin`);
11
+ const remoteUrl = remoteUrlOutput.toString().trim();
12
+ const branchOutput = (0, child_process_1.execSync)(`git rev-parse --abbrev-ref HEAD`);
13
+ const branch = branchOutput.toString().trim();
14
14
  if (!remoteUrl || !branch) {
15
15
  return;
16
16
  }
17
- var _a = (0, getOwnerAndRepoFromUrl_1.getOwnerAndRepoFromUrl)(remoteUrl), owner = _a.owner, repo = _a.repo;
17
+ const { owner, repo } = (0, getOwnerAndRepoFromUrl_1.getOwnerAndRepoFromUrl)(remoteUrl);
18
18
  if (!owner || !repo) {
19
19
  return;
20
20
  }
21
- var blobUrl = void 0;
22
- var commitUrl = void 0;
21
+ let blobUrl;
22
+ let commitUrl;
23
23
  if (remoteUrl.indexOf("github.com") > -1) {
24
- blobUrl = "https://github.com/".concat(owner, "/").concat(repo, "/blob/").concat(branch, "/{{blobPath}}");
25
- commitUrl = "https://github.com/".concat(owner, "/").concat(repo, "/commit/{{hash}}");
24
+ blobUrl = `https://github.com/${owner}/${repo}/blob/${branch}/{{blobPath}}`;
25
+ commitUrl = `https://github.com/${owner}/${repo}/commit/{{hash}}`;
26
26
  }
27
27
  else if (remoteUrl.indexOf("bitbucket.org") > -1) {
28
- blobUrl = "https://bitbucket.org/".concat(owner, "/").concat(repo, "/src/").concat(branch, "/{{blobPath}}");
29
- commitUrl = "https://bitbucket.org/".concat(owner, "/").concat(repo, "/commits/{{hash}}");
28
+ blobUrl = `https://bitbucket.org/${owner}/${repo}/src/${branch}/{{blobPath}}`;
29
+ commitUrl = `https://bitbucket.org/${owner}/${repo}/commits/{{hash}}`;
30
30
  }
31
31
  if (!blobUrl || !commitUrl) {
32
32
  return;
33
33
  }
34
34
  return {
35
- branch: branch,
36
- remoteUrl: remoteUrl,
37
- blobUrl: blobUrl,
38
- commitUrl: commitUrl,
39
- topLevelPath: topLevelPath,
35
+ branch,
36
+ remoteUrl,
37
+ blobUrl,
38
+ commitUrl,
39
+ topLevelPath,
40
40
  };
41
41
  }
42
42
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"getRepoDetails.js","sourceRoot":"","sources":["../../src/site/getRepoDetails.ts"],"names":[],"mappings":";;AAYA,wCAiDC;AA7DD,+CAAyC;AAEzC,mEAAkE;AAUlE,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,IAAM,kBAAkB,GAAG,IAAA,wBAAQ,EAAC,+BAA+B,CAAC,CAAC;QACrE,IAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAE1D,IAAM,eAAe,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,CAAC,CAAC;QAC9D,IAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpD,IAAM,YAAY,GAAG,IAAA,wBAAQ,EAAC,iCAAiC,CAAC,CAAC;QACjE,IAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAEK,IAAA,KAAkB,IAAA,+CAAsB,EAAC,SAAS,CAAC,EAAjD,KAAK,WAAA,EAAE,IAAI,UAAsC,CAAC;QAE1D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,SAAA,CAAC;QACZ,IAAI,SAAS,SAAA,CAAC;QAEd,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,6BAAsB,KAAK,cAAI,IAAI,mBAAS,MAAM,kBAAe,CAAC;YAC5E,SAAS,GAAG,6BAAsB,KAAK,cAAI,IAAI,qBAAkB,CAAC;QACpE,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,GAAG,gCAAyB,KAAK,cAAI,IAAI,kBAAQ,MAAM,kBAAe,CAAC;YAC9E,SAAS,GAAG,gCAAyB,KAAK,cAAI,IAAI,sBAAmB,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,OAAO;YACL,MAAM,QAAA;YACN,SAAS,WAAA;YACT,OAAO,SAAA;YACP,SAAS,WAAA;YACT,YAAY,cAAA;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IAED,OAAO;AACT,CAAC"}
1
+ {"version":3,"file":"getRepoDetails.js","sourceRoot":"","sources":["../../src/site/getRepoDetails.ts"],"names":[],"mappings":";;AAYA,wCAiDC;AA7DD,iDAAyC;AAEzC,qEAAkE;AAUlE,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,IAAA,wBAAQ,EAAC,+BAA+B,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAE1D,MAAM,eAAe,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpD,MAAM,YAAY,GAAG,IAAA,wBAAQ,EAAC,iCAAiC,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,+CAAsB,EAAC,SAAS,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,SAAS,CAAC;QAEd,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,sBAAsB,KAAK,IAAI,IAAI,SAAS,MAAM,eAAe,CAAC;YAC5E,SAAS,GAAG,sBAAsB,KAAK,IAAI,IAAI,kBAAkB,CAAC;QACpE,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,GAAG,yBAAyB,KAAK,IAAI,IAAI,QAAQ,MAAM,eAAe,CAAC;YAC9E,SAAS,GAAG,yBAAyB,KAAK,IAAI,IAAI,mBAAmB,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,OAAO;YACL,MAAM;YACN,SAAS;YACT,OAAO;YACP,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IAED,OAAO;AACT,CAAC"}
package/lib/site/index.js CHANGED
@@ -1,81 +1,33 @@
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.sitePlugin = void 0;
40
- var exportSite_1 = require("./exportSite");
41
- var serveSite_1 = require("./serveSite");
4
+ const exportSite_1 = require("./exportSite");
5
+ const serveSite_1 = require("./serveSite");
42
6
  exports.sitePlugin = {
43
7
  command: "site [subcommand]",
44
- handler: function (_a) {
45
- return __awaiter(this, arguments, void 0, function (_b) {
46
- var deps, allowedSubcommands, hasError;
47
- var rootDirectoryPath = _b.rootDirectoryPath, projectConfig = _b.projectConfig, datasource = _b.datasource, parsed = _b.parsed;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- deps = {
52
- rootDirectoryPath: rootDirectoryPath,
53
- projectConfig: projectConfig,
54
- datasource: datasource,
55
- options: parsed,
56
- };
57
- allowedSubcommands = ["export", "serve"];
58
- if (!allowedSubcommands.includes(parsed.subcommand)) {
59
- console.log("Please specify a subcommand: `export` or `serve`");
60
- return [2 /*return*/];
61
- }
62
- if (!(parsed.subcommand === "export")) return [3 /*break*/, 2];
63
- return [4 /*yield*/, (0, exportSite_1.exportSite)(deps)];
64
- case 1:
65
- hasError = _c.sent();
66
- if (hasError) {
67
- return [2 /*return*/, false];
68
- }
69
- _c.label = 2;
70
- case 2:
71
- // serve
72
- if (parsed.subcommand === "serve") {
73
- (0, serveSite_1.serveSite)(deps);
74
- }
75
- return [2 /*return*/];
76
- }
77
- });
78
- });
8
+ handler: async function ({ rootDirectoryPath, projectConfig, datasource, parsed }) {
9
+ const deps = {
10
+ rootDirectoryPath,
11
+ projectConfig,
12
+ datasource,
13
+ options: parsed,
14
+ };
15
+ const allowedSubcommands = ["export", "serve"];
16
+ if (!allowedSubcommands.includes(parsed.subcommand)) {
17
+ console.log("Please specify a subcommand: `export` or `serve`");
18
+ return;
19
+ }
20
+ // export
21
+ if (parsed.subcommand === "export") {
22
+ const hasError = await (0, exportSite_1.exportSite)(deps);
23
+ if (hasError) {
24
+ return false;
25
+ }
26
+ }
27
+ // serve
28
+ if (parsed.subcommand === "serve") {
29
+ (0, serveSite_1.serveSite)(deps);
30
+ }
79
31
  },
80
32
  examples: [
81
33
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/site/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA0C;AAC1C,yCAAwC;AAE3B,QAAA,UAAU,GAAW;IAChC,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE;4DAAgB,EAAwD;;gBAAtD,iBAAiB,uBAAA,EAAE,aAAa,mBAAA,EAAE,UAAU,gBAAA,EAAE,MAAM,YAAA;;;;wBACvE,IAAI,GAAG;4BACX,iBAAiB,mBAAA;4BACjB,aAAa,eAAA;4BACb,UAAU,YAAA;4BACV,OAAO,EAAE,MAAM;yBAChB,CAAC;wBAEI,kBAAkB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAE/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;4BACpD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;4BAChE,sBAAO;wBACT,CAAC;6BAGG,CAAA,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAA,EAA9B,wBAA8B;wBACf,qBAAM,IAAA,uBAAU,EAAC,IAAI,CAAC,EAAA;;wBAAjC,QAAQ,GAAG,SAAsB;wBAEvC,IAAI,QAAQ,EAAE,CAAC;4BACb,sBAAO,KAAK,EAAC;wBACf,CAAC;;;wBAGH,QAAQ;wBACR,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;4BAClC,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;wBAClB,CAAC;;;;;KACF;IACD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,wCAAwC;SACtD;QACD;YACE,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,qCAAqC;SACnD;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/site/index.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAC1C,2CAAwC;AAE3B,QAAA,UAAU,GAAW;IAChC,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE;QAC/E,MAAM,IAAI,GAAG;YACX,iBAAiB;YACjB,aAAa;YACb,UAAU;YACV,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,SAAS;QACT,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAU,EAAC,IAAI,CAAC,CAAC;YAExC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,QAAQ;QACR,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAClC,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,wCAAwC;SACtD;QACD;YACE,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,qCAAqC;SACnD;KACF;CACF,CAAC"}
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serveSite = serveSite;
4
- var fs = require("fs");
5
- var path = require("path");
6
- var http = require("http");
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const http = require("http");
7
7
  function serveSite(deps) {
8
- var projectConfig = deps.projectConfig, options = deps.options;
9
- var port = options.p || 3000;
8
+ const { projectConfig, options } = deps;
9
+ const port = options.p || 3000;
10
10
  http
11
11
  .createServer(function (request, response) {
12
- var requestedUrl = request.url;
13
- var filePath = requestedUrl === "/"
12
+ const requestedUrl = request.url;
13
+ const filePath = requestedUrl === "/"
14
14
  ? path.join(projectConfig.siteExportDirectoryPath, "index.html")
15
15
  : path.join(projectConfig.siteExportDirectoryPath, requestedUrl);
16
16
  console.log("requesting: " + filePath + "");
17
- var extname = path.extname(filePath);
18
- var contentType = "text/html";
17
+ const extname = path.extname(filePath);
18
+ let contentType = "text/html";
19
19
  switch (extname) {
20
20
  case ".js":
21
21
  contentType = "text/javascript";
@@ -49,6 +49,6 @@ function serveSite(deps) {
49
49
  });
50
50
  })
51
51
  .listen(port);
52
- console.log("Server running at http://127.0.0.1:".concat(port, "/"));
52
+ console.log(`Server running at http://127.0.0.1:${port}/`);
53
53
  }
54
54
  //# sourceMappingURL=serveSite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serveSite.js","sourceRoot":"","sources":["../../src/site/serveSite.ts"],"names":[],"mappings":";;AAMA,8BAmDC;AAzDD,uBAAyB;AACzB,2BAA6B;AAC7B,2BAA6B;AAI7B,SAAgB,SAAS,CAAC,IAAkB;IAClC,IAAA,aAAa,GAAc,IAAI,cAAlB,EAAE,OAAO,GAAK,IAAI,QAAT,CAAU;IAExC,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;IAE/B,IAAI;SACD,YAAY,CAAC,UAAU,OAAO,EAAE,QAAQ;QACvC,IAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;QACjC,IAAM,QAAQ,GACZ,YAAY,KAAK,GAAG;YAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,YAAY,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,YAAsB,CAAC,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;QAE5C,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,WAAW,GAAG,WAAW,CAAC;QAC9B,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,WAAW,GAAG,iBAAiB,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,GAAG,UAAU,CAAC;gBACzB,MAAM;YACR,KAAK,OAAO;gBACV,WAAW,GAAG,kBAAkB,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,GAAG,WAAW,CAAC;gBAC1B,MAAM;QACV,CAAC;QAED,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,KAAK,EAAE,OAAO;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC3B,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxB,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACzD,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;SACD,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,6CAAsC,IAAI,MAAG,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"serveSite.js","sourceRoot":"","sources":["../../src/site/serveSite.ts"],"names":[],"mappings":";;AAMA,8BAmDC;AAzDD,yBAAyB;AACzB,6BAA6B;AAC7B,6BAA6B;AAI7B,SAAgB,SAAS,CAAC,IAAkB;IAC1C,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAExC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;IAE/B,IAAI;SACD,YAAY,CAAC,UAAU,OAAO,EAAE,QAAQ;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;QACjC,MAAM,QAAQ,GACZ,YAAY,KAAK,GAAG;YAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,YAAY,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,YAAsB,CAAC,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,WAAW,GAAG,WAAW,CAAC;QAC9B,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,WAAW,GAAG,iBAAiB,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,GAAG,UAAU,CAAC;gBACzB,MAAM;YACR,KAAK,OAAO;gBACV,WAAW,GAAG,kBAAkB,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,GAAG,WAAW,CAAC;gBAC1B,MAAM;QACV,CAAC;QAED,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,KAAK,EAAE,OAAO;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC3B,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxB,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACzD,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;SACD,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function checkIfObjectsAreEqual(obj1: any, obj2: any): boolean;
2
+ export declare function checkIfArraysAreEqual(arr1: any[], arr2: any[]): boolean;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkIfObjectsAreEqual = checkIfObjectsAreEqual;
4
+ exports.checkIfArraysAreEqual = checkIfArraysAreEqual;
5
+ function checkIfObjectsAreEqual(obj1, obj2) {
6
+ if (obj1 === obj2) {
7
+ return true;
8
+ }
9
+ if (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) {
10
+ return false;
11
+ }
12
+ const keys1 = Object.keys(obj1);
13
+ const keys2 = Object.keys(obj2);
14
+ if (keys1.length !== keys2.length) {
15
+ return false;
16
+ }
17
+ for (const key of keys1) {
18
+ if (!keys2.includes(key)) {
19
+ return false;
20
+ }
21
+ const val1 = obj1[key];
22
+ const val2 = obj2[key];
23
+ if (Array.isArray(val1) && Array.isArray(val2)) {
24
+ if (!checkIfArraysAreEqual(val1, val2)) {
25
+ return false;
26
+ }
27
+ }
28
+ else if (typeof val1 === "object" && typeof val2 === "object") {
29
+ if (!checkIfObjectsAreEqual(val1, val2)) {
30
+ return false;
31
+ }
32
+ }
33
+ else if (val1 !== val2) {
34
+ return false;
35
+ }
36
+ }
37
+ return true;
38
+ }
39
+ function checkIfArraysAreEqual(arr1, arr2) {
40
+ if (arr1 === arr2) {
41
+ return true;
42
+ }
43
+ if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
44
+ return false;
45
+ }
46
+ if (arr1.length !== arr2.length) {
47
+ return false;
48
+ }
49
+ for (let i = 0; i < arr1.length; i++) {
50
+ const val1 = arr1[i];
51
+ const val2 = arr2[i];
52
+ if (Array.isArray(val1) && Array.isArray(val2)) {
53
+ if (!checkIfArraysAreEqual(val1, val2)) {
54
+ return false;
55
+ }
56
+ }
57
+ else if (typeof val1 === "object" &&
58
+ typeof val2 === "object" &&
59
+ val1 !== null &&
60
+ val2 !== null) {
61
+ if (!checkIfObjectsAreEqual(val1, val2)) {
62
+ return false;
63
+ }
64
+ }
65
+ else if (val1 !== val2) {
66
+ return false;
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tester/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpers_1 = require("./helpers");
4
+ describe("helpers", function () {
5
+ describe("checkIfObjectsAreEqual", function () {
6
+ it("should return true for two empty objects", () => {
7
+ expect((0, helpers_1.checkIfObjectsAreEqual)({}, {})).toBe(true);
8
+ });
9
+ it("should return true for objects with same keys and values", () => {
10
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true);
11
+ });
12
+ it("should return false for objects with different keys", () => {
13
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1 }, { b: 1 })).toBe(false);
14
+ });
15
+ it("should return false for objects with same keys but different values", () => {
16
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1 }, { a: 2 })).toBe(false);
17
+ });
18
+ it("should return false if one object has extra keys", () => {
19
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1, b: 2 }, { a: 1 })).toBe(false);
20
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1 }, { a: 1, b: 2 })).toBe(false);
21
+ });
22
+ it("should return true for nested objects that are deeply equal", () => {
23
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: { b: 2 }, c: 3 }, { a: { b: 2 }, c: 3 })).toBe(true);
24
+ });
25
+ it("should return false for nested objects that are not deeply equal", () => {
26
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: { b: 2 }, c: 3 }, { a: { b: 3 }, c: 3 })).toBe(false);
27
+ });
28
+ // it("should return false if types differ", () => {
29
+ // expect(checkIfObjectsAreEqual({ a: 1 }, null as any)).toBe(false);
30
+ // expect(checkIfObjectsAreEqual(null as any, { a: 1 })).toBe(false);
31
+ // expect(checkIfObjectsAreEqual([], {})).toBe(false);
32
+ // });
33
+ it("should return true for objects with array values that are equal", () => {
34
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: [1, 2, 3] }, { a: [1, 2, 3] })).toBe(true);
35
+ });
36
+ it("should return false for objects with array values that are not equal", () => {
37
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: [1, 2, 3] }, { a: [1, 2, 4] })).toBe(false);
38
+ });
39
+ it("should return true for objects with different key order", () => {
40
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: 1, b: 2 }, { b: 2, a: 1 })).toBe(true);
41
+ });
42
+ it("should return true for objects with undefined values if both have them", () => {
43
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: undefined }, { a: undefined })).toBe(true);
44
+ });
45
+ it("should return false for objects with one undefined and one missing key", () => {
46
+ expect((0, helpers_1.checkIfObjectsAreEqual)({ a: undefined }, {})).toBe(false);
47
+ });
48
+ });
49
+ describe("checkIfArraysAreEqual", function () {
50
+ it("should return true for two empty arrays", () => {
51
+ expect((0, helpers_1.checkIfArraysAreEqual)([], [])).toBe(true);
52
+ });
53
+ it("should return true for arrays with same elements in same order", () => {
54
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], [1, 2, 3])).toBe(true);
55
+ });
56
+ it("should return false for arrays with same elements in different order", () => {
57
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], [3, 2, 1])).toBe(false);
58
+ });
59
+ it("should return false for arrays of different lengths", () => {
60
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2], [1, 2, 3])).toBe(false);
61
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], [1, 2])).toBe(false);
62
+ });
63
+ it("should return false for arrays with different elements", () => {
64
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], [1, 2, 4])).toBe(false);
65
+ });
66
+ it("should return true for nested arrays that are deeply equal", () => {
67
+ expect((0, helpers_1.checkIfArraysAreEqual)([[1, 2], [3]], [[1, 2], [3]])).toBe(true);
68
+ });
69
+ it("should return false for nested arrays that are not deeply equal", () => {
70
+ expect((0, helpers_1.checkIfArraysAreEqual)([[1, 2], [3]], [[1, 2], [4]])).toBe(false);
71
+ });
72
+ it("should return true for arrays with objects that are deeply equal", () => {
73
+ expect((0, helpers_1.checkIfArraysAreEqual)([{ a: 1 }, { b: 2 }], [{ a: 1 }, { b: 2 }])).toBe(true);
74
+ });
75
+ it("should return false for arrays with objects that are not deeply equal", () => {
76
+ expect((0, helpers_1.checkIfArraysAreEqual)([{ a: 1 }, { b: 2 }], [{ a: 1 }, { b: 3 }])).toBe(false);
77
+ });
78
+ it("should return false if types differ", () => {
79
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], null)).toBe(false);
80
+ expect((0, helpers_1.checkIfArraysAreEqual)(null, [1, 2, 3])).toBe(false);
81
+ expect((0, helpers_1.checkIfArraysAreEqual)({}, [])).toBe(false);
82
+ });
83
+ it("should return true for arrays with undefined values if both have them in same positions", () => {
84
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, undefined, 3], [1, undefined, 3])).toBe(true);
85
+ });
86
+ it("should return false for arrays with undefined values in different positions", () => {
87
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, undefined, 3], [1, 3, undefined])).toBe(false);
88
+ });
89
+ it("should return true for arrays with different reference but same primitive values", () => {
90
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2, 3], [1, 2, 3])).toBe(true);
91
+ });
92
+ it("should return true for arrays with nested objects and arrays that are deeply equal", () => {
93
+ expect((0, helpers_1.checkIfArraysAreEqual)([{ a: [1, 2], b: { c: 3 } }], [{ a: [1, 2], b: { c: 3 } }])).toBe(true);
94
+ });
95
+ it("should return false for arrays with nested objects and arrays that are not deeply equal", () => {
96
+ expect((0, helpers_1.checkIfArraysAreEqual)([{ a: [1, 2], b: { c: 3 } }], [{ a: [1, 2], b: { c: 4 } }])).toBe(false);
97
+ });
98
+ it("should return false for arrays with extra undefined at the end", () => {
99
+ expect((0, helpers_1.checkIfArraysAreEqual)([1, 2], [1, 2, undefined])).toBe(false);
100
+ });
101
+ // it("should return true for arrays with NaN values in same positions", () => {
102
+ // expect(checkIfArraysAreEqual([NaN, 2], [NaN, 2])).toBe(true);
103
+ // });
104
+ // it("should return false for arrays with NaN values in different positions", () => {
105
+ // expect(checkIfArraysAreEqual([2, NaN], [NaN, 2])).toBe(false);
106
+ // });
107
+ it("should return true for arrays with null values in same positions", () => {
108
+ expect((0, helpers_1.checkIfArraysAreEqual)([null, 2], [null, 2])).toBe(true);
109
+ });
110
+ it("should return false for arrays with null values in different positions", () => {
111
+ expect((0, helpers_1.checkIfArraysAreEqual)([2, null], [null, 2])).toBe(false);
112
+ });
113
+ });
114
+ });
115
+ //# sourceMappingURL=helpers.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../../src/tester/helpers.spec.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export * from "./testProject";
2
2
  export * from "./testFeature";
3
- export * from "./matrix";
@@ -16,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./testProject"), exports);
18
18
  __exportStar(require("./testFeature"), exports);
19
- __exportStar(require("./matrix"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tester/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tester/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B"}
@@ -2,28 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prettyDuration = prettyDuration;
4
4
  function prettyDuration(diffInMs) {
5
- var diff = Math.abs(diffInMs);
5
+ let diff = Math.abs(diffInMs);
6
6
  if (diff === 0) {
7
- return "0ms";
7
+ return `0ms`;
8
8
  }
9
- var ms = diff % 1000;
9
+ const ms = diff % 1000;
10
10
  diff = (diff - ms) / 1000;
11
- var secs = diff % 60;
11
+ const secs = diff % 60;
12
12
  diff = (diff - secs) / 60;
13
- var mins = diff % 60;
14
- var hrs = (diff - mins) / 60;
15
- var result = "";
13
+ const mins = diff % 60;
14
+ const hrs = (diff - mins) / 60;
15
+ let result = "";
16
16
  if (hrs) {
17
- result += " ".concat(hrs, "h");
17
+ result += ` ${hrs}h`;
18
18
  }
19
19
  if (mins) {
20
- result += " ".concat(mins, "m");
20
+ result += ` ${mins}m`;
21
21
  }
22
22
  if (secs) {
23
- result += " ".concat(secs, "s");
23
+ result += ` ${secs}s`;
24
24
  }
25
25
  if (ms) {
26
- result += " ".concat(ms, "ms");
26
+ result += ` ${ms}ms`;
27
27
  }
28
28
  return result.trim();
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prettyDuration.js","sourceRoot":"","sources":["../../src/tester/prettyDuration.ts"],"names":[],"mappings":";;AAAA,wCAiCC;AAjCD,SAAgB,cAAc,CAAC,QAAQ;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,IAAM,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,WAAI,GAAG,MAAG,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,WAAI,IAAI,MAAG,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,WAAI,IAAI,MAAG,CAAC;IACxB,CAAC;IAED,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,IAAI,WAAI,EAAE,OAAI,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"prettyDuration.js","sourceRoot":"","sources":["../../src/tester/prettyDuration.ts"],"names":[],"mappings":";;AAAA,wCAiCC;AAjCD,SAAgB,cAAc,CAAC,QAAQ;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC;IACxB,CAAC;IAED,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -1,2 +1,2 @@
1
- import { TestResult } from "@featurevisor/types";
1
+ import type { TestResult } from "@featurevisor/types";
2
2
  export declare function printTestResult(testResult: TestResult, relativeTestFilePath: any, rootDirectoryPath: any): void;
@@ -1,37 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.printTestResult = printTestResult;
4
- var cliFormat_1 = require("./cliFormat");
5
- var prettyDuration_1 = require("./prettyDuration");
4
+ const cliFormat_1 = require("./cliFormat");
5
+ const prettyDuration_1 = require("./prettyDuration");
6
6
  function printTestResult(testResult, relativeTestFilePath, rootDirectoryPath) {
7
7
  console.log("");
8
- var title = "Testing: ".concat(relativeTestFilePath.replace(rootDirectoryPath, ""), " (").concat((0, prettyDuration_1.prettyDuration)(testResult.duration), ")");
8
+ const title = `Testing: ${relativeTestFilePath.replace(rootDirectoryPath, "")} (${(0, prettyDuration_1.prettyDuration)(testResult.duration)})`;
9
9
  console.log(title);
10
10
  if (testResult.notFound) {
11
- console.log(cliFormat_1.CLI_FORMAT_RED, " => ".concat(testResult.type, " ").concat(testResult.key, " not found"));
11
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => ${testResult.type} ${testResult.key} not found`);
12
12
  return;
13
13
  }
14
- console.log(cliFormat_1.CLI_FORMAT_BOLD, " ".concat(testResult.type, " \"").concat(testResult.key, "\":"));
14
+ console.log(cliFormat_1.CLI_FORMAT_BOLD, ` ${testResult.type} "${testResult.key}":`);
15
15
  testResult.assertions.forEach(function (assertion) {
16
- var _a;
17
16
  if (assertion.passed) {
18
- console.log(" \u2714 ".concat(assertion.description, " (").concat((0, prettyDuration_1.prettyDuration)(assertion.duration), ")"));
17
+ console.log(` ${assertion.description} (${(0, prettyDuration_1.prettyDuration)(assertion.duration)})`);
19
18
  }
20
19
  else {
21
- console.log(cliFormat_1.CLI_FORMAT_RED, " \u2718 ".concat(assertion.description, " (").concat((0, prettyDuration_1.prettyDuration)(assertion.duration), ")"));
22
- (_a = assertion.errors) === null || _a === void 0 ? void 0 : _a.forEach(function (error) {
20
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` ${assertion.description} (${(0, prettyDuration_1.prettyDuration)(assertion.duration)})`);
21
+ assertion.errors?.forEach(function (error) {
23
22
  if (error.message) {
24
- console.log(cliFormat_1.CLI_FORMAT_RED, " => ".concat(error.message));
23
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => ${error.message}`);
25
24
  return;
26
25
  }
26
+ let section = error.type;
27
+ if (error.type === "flag") {
28
+ section = "expectedToBeEnabled";
29
+ }
30
+ else if (error.type === "variation") {
31
+ section = "expectedVariation";
32
+ }
33
+ else if (error.type === "variable") {
34
+ section = "expectedVariables";
35
+ }
36
+ if (error.details && error.details.childIndex !== undefined) {
37
+ section = `children[${error.details.childIndex}].${section}`;
38
+ }
27
39
  if (error.type === "variable") {
28
- var variableKey = error.details.variableKey;
29
- console.log(cliFormat_1.CLI_FORMAT_RED, " => variable key: ".concat(variableKey));
30
- console.log(cliFormat_1.CLI_FORMAT_RED, " => expected: ".concat(error.expected));
31
- console.log(cliFormat_1.CLI_FORMAT_RED, " => received: ".concat(error.actual));
40
+ const variableKey = error.details.variableKey;
41
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => ${section}.${variableKey}:`);
42
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => expected: ${error.expected}`);
43
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => received: ${error.actual}`);
32
44
  }
33
45
  else {
34
- console.log(cliFormat_1.CLI_FORMAT_RED, " => ".concat(error.type, ": expected \"").concat(error.expected, "\", received \"").concat(error.actual, "\""));
46
+ if (error.type === "evaluation") {
47
+ if (error.details && error.details.variableKey) {
48
+ section = `${section}.variables.${error.details.variableKey}.${error.details.evaluationKey}`;
49
+ }
50
+ else if (error.details && error.details.evaluationType) {
51
+ section = `${section}.${error.details.evaluationType}.${error.details.evaluationKey}`;
52
+ }
53
+ }
54
+ console.log(cliFormat_1.CLI_FORMAT_RED, ` => ${section}: expected "${error.expected}", received "${error.actual}"`);
35
55
  }
36
56
  });
37
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"printTestResult.js","sourceRoot":"","sources":["../../src/tester/printTestResult.ts"],"names":[],"mappings":";;AAKA,0CA+CC;AAlDD,yCAA8D;AAC9D,mDAAkD;AAElD,SAAgB,eAAe,CAAC,UAAsB,EAAE,oBAAoB,EAAE,iBAAiB;IAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAM,KAAK,GAAG,mBAAY,oBAAoB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,eAAK,IAAA,+BAAc,EAC9F,UAAU,CAAC,QAAQ,CACpB,MAAG,CAAC;IACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,0BAAc,EAAE,eAAQ,UAAU,CAAC,IAAI,cAAI,UAAU,CAAC,GAAG,eAAY,CAAC,CAAC;QAEnF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAAe,EAAE,YAAK,UAAU,CAAC,IAAI,gBAAK,UAAU,CAAC,GAAG,QAAI,CAAC,CAAC;IAE1E,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,SAAS;;QAC/C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,mBAAO,SAAS,CAAC,WAAW,eAAK,IAAA,+BAAc,EAAC,SAAS,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,0BAAc,EACd,mBAAO,SAAS,CAAC,WAAW,eAAK,IAAA,+BAAc,EAAC,SAAS,CAAC,QAAQ,CAAC,MAAG,CACvE,CAAC;YAEF,MAAA,SAAS,CAAC,MAAM,0CAAE,OAAO,CAAC,UAAU,KAAK;gBACvC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,0BAAc,EAAE,iBAAU,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC;oBAEvD,OAAO;gBACT,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,IAAM,WAAW,GAAI,KAAK,CAAC,OAAe,CAAC,WAAW,CAAC;oBAEvD,OAAO,CAAC,GAAG,CAAC,0BAAc,EAAE,+BAAwB,WAAW,CAAE,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,0BAAc,EAAE,8BAAuB,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,CAAC,0BAAc,EAAE,8BAAuB,KAAK,CAAC,MAAM,CAAE,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CACT,0BAAc,EACd,iBAAU,KAAK,CAAC,IAAI,0BAAe,KAAK,CAAC,QAAQ,4BAAgB,KAAK,CAAC,MAAM,OAAG,CACjF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"printTestResult.js","sourceRoot":"","sources":["../../src/tester/printTestResult.ts"],"names":[],"mappings":"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"}