@featurevisor/core 0.53.2 → 0.53.3

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 (77) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +8 -0
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/index.html +1 -1
  5. package/coverage/lcov-report/lib/builder/allocator.js.html +1 -1
  6. package/coverage/lcov-report/lib/builder/index.html +1 -1
  7. package/coverage/lcov-report/lib/builder/traffic.js.html +1 -1
  8. package/coverage/lcov-report/src/builder/allocator.ts.html +1 -1
  9. package/coverage/lcov-report/src/builder/index.html +1 -1
  10. package/coverage/lcov-report/src/builder/traffic.ts.html +1 -1
  11. package/lib/builder/buildDatafile.d.ts +1 -1
  12. package/lib/builder/buildDatafile.js +241 -168
  13. package/lib/builder/buildDatafile.js.map +1 -1
  14. package/lib/builder/buildProject.d.ts +1 -1
  15. package/lib/builder/buildProject.js +99 -40
  16. package/lib/builder/buildProject.js.map +1 -1
  17. package/lib/builder/getFeatureRanges.d.ts +1 -1
  18. package/lib/builder/getFeatureRanges.js +92 -31
  19. package/lib/builder/getFeatureRanges.js.map +1 -1
  20. package/lib/datasource/datasource.d.ts +16 -16
  21. package/lib/datasource/datasource.js +123 -67
  22. package/lib/datasource/datasource.js.map +1 -1
  23. package/lib/find-duplicate-segments/findDuplicateSegments.d.ts +1 -1
  24. package/lib/find-duplicate-segments/findDuplicateSegments.js +75 -18
  25. package/lib/find-duplicate-segments/findDuplicateSegments.js.map +1 -1
  26. package/lib/find-duplicate-segments/index.d.ts +1 -1
  27. package/lib/find-duplicate-segments/index.js +56 -9
  28. package/lib/find-duplicate-segments/index.js.map +1 -1
  29. package/lib/generate-code/index.d.ts +1 -1
  30. package/lib/generate-code/index.js +67 -23
  31. package/lib/generate-code/index.js.map +1 -1
  32. package/lib/generate-code/typescript.d.ts +1 -1
  33. package/lib/generate-code/typescript.js +139 -72
  34. package/lib/generate-code/typescript.js.map +1 -1
  35. package/lib/linter/checkCircularDependency.d.ts +1 -1
  36. package/lib/linter/checkCircularDependency.js +78 -22
  37. package/lib/linter/checkCircularDependency.js.map +1 -1
  38. package/lib/linter/groupSchema.js +79 -28
  39. package/lib/linter/groupSchema.js.map +1 -1
  40. package/lib/linter/lintProject.js +122 -101
  41. package/lib/linter/lintProject.js.map +1 -1
  42. package/lib/restore.d.ts +1 -1
  43. package/lib/restore.js +53 -11
  44. package/lib/restore.js.map +1 -1
  45. package/lib/site/exportSite.d.ts +1 -1
  46. package/lib/site/exportSite.js +64 -21
  47. package/lib/site/exportSite.js.map +1 -1
  48. package/lib/site/generateSiteSearchIndex.d.ts +1 -1
  49. package/lib/site/generateSiteSearchIndex.js +203 -111
  50. package/lib/site/generateSiteSearchIndex.js.map +1 -1
  51. package/lib/tester/testFeature.d.ts +1 -1
  52. package/lib/tester/testFeature.js +127 -59
  53. package/lib/tester/testFeature.js.map +1 -1
  54. package/lib/tester/testProject.d.ts +1 -1
  55. package/lib/tester/testProject.js +105 -48
  56. package/lib/tester/testProject.js.map +1 -1
  57. package/lib/tester/testSegment.d.ts +1 -1
  58. package/lib/tester/testSegment.js +69 -21
  59. package/lib/tester/testSegment.js.map +1 -1
  60. package/package.json +2 -2
  61. package/src/builder/buildDatafile.ts +9 -9
  62. package/src/builder/buildProject.ts +2 -2
  63. package/src/builder/getFeatureRanges.ts +4 -4
  64. package/src/datasource/datasource.ts +22 -69
  65. package/src/find-duplicate-segments/findDuplicateSegments.ts +9 -6
  66. package/src/find-duplicate-segments/index.ts +5 -2
  67. package/src/generate-code/index.ts +2 -2
  68. package/src/generate-code/typescript.ts +42 -25
  69. package/src/linter/checkCircularDependency.ts +4 -4
  70. package/src/linter/groupSchema.ts +3 -3
  71. package/src/linter/lintProject.ts +39 -39
  72. package/src/restore.ts +1 -1
  73. package/src/site/exportSite.ts +2 -2
  74. package/src/site/generateSiteSearchIndex.ts +14 -14
  75. package/src/tester/testFeature.ts +8 -6
  76. package/src/tester/testProject.ts +8 -5
  77. package/src/tester/testSegment.ts +3 -3
@@ -12,24 +12,26 @@ import { checkIfArraysAreEqual } from "./checkIfArraysAreEqual";
12
12
  import { checkIfObjectsAreEqual } from "./checkIfObjectsAreEqual";
13
13
  import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat";
14
14
 
15
- export function testFeature(
15
+ export async function testFeature(
16
16
  datasource: Datasource,
17
17
  projectConfig: ProjectConfig,
18
18
  test: TestFeature,
19
- ): boolean {
19
+ ): Promise<boolean> {
20
20
  let hasError = false;
21
21
  const featureKey = test.feature;
22
22
 
23
23
  console.log(CLI_FORMAT_BOLD, ` Feature "${featureKey}":`);
24
24
 
25
- test.assertions.forEach(function (assertion, aIndex) {
25
+ for (let aIndex = 0; aIndex < test.assertions.length; aIndex++) {
26
+ const assertion = test.assertions[aIndex];
26
27
  const description = assertion.description || `at ${assertion.at}%`;
27
28
 
28
29
  console.log(` Assertion #${aIndex + 1}: (${assertion.environment}) ${description}`);
29
30
 
30
- const featuresToInclude = Array.from(datasource.getRequiredFeaturesChain(test.feature));
31
+ const requiredChain = await datasource.getRequiredFeaturesChain(test.feature);
32
+ const featuresToInclude = Array.from(requiredChain);
31
33
 
32
- const datafileContent = buildDatafile(
34
+ const datafileContent = await buildDatafile(
33
35
  projectConfig,
34
36
  datasource,
35
37
  {
@@ -110,7 +112,7 @@ export function testFeature(
110
112
  }
111
113
  });
112
114
  }
113
- });
115
+ }
114
116
 
115
117
  return hasError;
116
118
  }
@@ -9,7 +9,10 @@ import { testSegment } from "./testSegment";
9
9
  import { testFeature } from "./testFeature";
10
10
  import { CLI_FORMAT_BOLD, CLI_FORMAT_GREEN, CLI_FORMAT_RED } from "./cliFormat";
11
11
 
12
- export function testProject(rootDirectoryPath: string, projectConfig: ProjectConfig): boolean {
12
+ export async function testProject(
13
+ rootDirectoryPath: string,
14
+ projectConfig: ProjectConfig,
15
+ ): Promise<boolean> {
13
16
  let hasError = false;
14
17
  const datasource = new Datasource(projectConfig);
15
18
 
@@ -20,7 +23,7 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
20
23
  return hasError;
21
24
  }
22
25
 
23
- const testFiles = datasource.listTests();
26
+ const testFiles = await datasource.listTests();
24
27
 
25
28
  if (testFiles.length === 0) {
26
29
  console.error(`No tests found in: ${projectConfig.testsDirectoryPath}`);
@@ -35,13 +38,13 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
35
38
  console.log("");
36
39
  console.log(CLI_FORMAT_BOLD, `Testing: ${testFilePath.replace(rootDirectoryPath, "")}`);
37
40
 
38
- const t = datasource.readTest(testFile);
41
+ const t = await datasource.readTest(testFile);
39
42
 
40
43
  if ((t as TestSegment).segment) {
41
44
  // segment testing
42
45
  const test = t as TestSegment;
43
46
 
44
- const segmentHasError = testSegment(datasource, test);
47
+ const segmentHasError = await testSegment(datasource, test);
45
48
 
46
49
  if (segmentHasError) {
47
50
  hasError = true;
@@ -50,7 +53,7 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
50
53
  // feature testing
51
54
  const test = t as TestFeature;
52
55
 
53
- const featureHasError = testFeature(datasource, projectConfig, test);
56
+ const featureHasError = await testFeature(datasource, projectConfig, test);
54
57
 
55
58
  if (featureHasError) {
56
59
  hasError = true;
@@ -5,14 +5,14 @@ import { Datasource } from "../datasource";
5
5
 
6
6
  import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat";
7
7
 
8
- export function testSegment(datasource: Datasource, test: TestSegment): boolean {
8
+ export async function testSegment(datasource: Datasource, test: TestSegment): Promise<boolean> {
9
9
  let hasError = false;
10
10
 
11
11
  const segmentKey = test.segment;
12
12
 
13
13
  console.log(CLI_FORMAT_BOLD, ` Segment "${segmentKey}":`);
14
14
 
15
- const segmentExists = datasource.entityExists("segment", segmentKey);
15
+ const segmentExists = await datasource.entityExists("segment", segmentKey);
16
16
 
17
17
  if (!segmentExists) {
18
18
  console.error(CLI_FORMAT_RED, ` Segment does not exist: ${segmentKey}`);
@@ -21,7 +21,7 @@ export function testSegment(datasource: Datasource, test: TestSegment): boolean
21
21
  return hasError;
22
22
  }
23
23
 
24
- const parsedSegment = datasource.readSegment(segmentKey);
24
+ const parsedSegment = await datasource.readSegment(segmentKey);
25
25
  const conditions = parsedSegment.conditions as Condition | Condition[];
26
26
 
27
27
  test.assertions.forEach(function (assertion, aIndex) {