@featurevisor/core 0.47.6 → 0.48.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 (48) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +19 -0
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/index.html +1 -1
  5. package/coverage/lcov-report/lib/allocator.js.html +1 -1
  6. package/coverage/lcov-report/lib/index.html +1 -1
  7. package/coverage/lcov-report/lib/traffic.js.html +1 -1
  8. package/coverage/lcov-report/src/allocator.ts.html +1 -1
  9. package/coverage/lcov-report/src/index.html +1 -1
  10. package/coverage/lcov-report/src/traffic.ts.html +1 -1
  11. package/lib/builder.d.ts +3 -2
  12. package/lib/builder.js +20 -28
  13. package/lib/builder.js.map +1 -1
  14. package/lib/config.d.ts +3 -0
  15. package/lib/config.js +3 -1
  16. package/lib/config.js.map +1 -1
  17. package/lib/datasource/datasource.d.ts +32 -0
  18. package/lib/datasource/datasource.js +152 -0
  19. package/lib/datasource/datasource.js.map +1 -0
  20. package/lib/datasource/parsers.d.ts +15 -0
  21. package/lib/datasource/parsers.js +19 -0
  22. package/lib/datasource/parsers.js.map +1 -0
  23. package/lib/generate-code/index.js +3 -1
  24. package/lib/generate-code/index.js.map +1 -1
  25. package/lib/generate-code/typescript.d.ts +2 -1
  26. package/lib/generate-code/typescript.js +7 -10
  27. package/lib/generate-code/typescript.js.map +1 -1
  28. package/lib/init.d.ts +1 -1
  29. package/lib/init.js +1 -1
  30. package/lib/init.js.map +1 -1
  31. package/lib/linter.d.ts +2 -1
  32. package/lib/linter.js +44 -55
  33. package/lib/linter.js.map +1 -1
  34. package/lib/site.js +15 -28
  35. package/lib/site.js.map +1 -1
  36. package/lib/tester.js +9 -11
  37. package/lib/tester.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/builder.ts +22 -30
  40. package/src/config.ts +7 -0
  41. package/src/datasource/datasource.ts +185 -0
  42. package/src/datasource/parsers.ts +26 -0
  43. package/src/generate-code/index.ts +9 -1
  44. package/src/generate-code/typescript.ts +8 -12
  45. package/src/init.ts +1 -1
  46. package/src/linter.ts +46 -45
  47. package/src/site.ts +104 -127
  48. package/src/tester.ts +10 -12
package/.eslintcache CHANGED
@@ -1 +1 @@
1
- [{"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/config.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/init.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/site.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.spec.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils.ts":"15"},{"size":3214,"mtime":1694898717557,"results":"16","hashOfConfig":"17"},{"size":1014,"mtime":1694898717557,"results":"18","hashOfConfig":"17"},{"size":12956,"mtime":1694898717557,"results":"19","hashOfConfig":"17"},{"size":2825,"mtime":1694898717557,"results":"20","hashOfConfig":"17"},{"size":1479,"mtime":1694898717557,"results":"21","hashOfConfig":"17"},{"size":6151,"mtime":1694898717557,"results":"22","hashOfConfig":"17"},{"size":213,"mtime":1694898717557,"results":"23","hashOfConfig":"17"},{"size":1306,"mtime":1694898717557,"results":"24","hashOfConfig":"17"},{"size":18113,"mtime":1694898717557,"results":"25","hashOfConfig":"17"},{"size":604,"mtime":1694898717557,"results":"26","hashOfConfig":"17"},{"size":15571,"mtime":1694898717557,"results":"27","hashOfConfig":"17"},{"size":6725,"mtime":1694898717557,"results":"28","hashOfConfig":"17"},{"size":12889,"mtime":1694898717557,"results":"29","hashOfConfig":"17"},{"size":4799,"mtime":1694898717557,"results":"30","hashOfConfig":"17"},{"size":2108,"mtime":1694898717557,"results":"31","hashOfConfig":"17"},{"filePath":"32","messages":"33","suppressedMessages":"34","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1u59miw",{"filePath":"35","messages":"36","suppressedMessages":"37","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38","messages":"39","suppressedMessages":"40","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"41","messages":"42","suppressedMessages":"43","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"44","messages":"45","suppressedMessages":"46","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"47","messages":"48","suppressedMessages":"49","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"50","messages":"51","suppressedMessages":"52","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"53","messages":"54","suppressedMessages":"55","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["77"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils.ts",[],[],{"ruleId":"78","severity":2,"message":"79","line":43,"column":10,"nodeType":"80","messageId":"81","endLine":43,"endColumn":38,"suppressions":"82"},"@typescript-eslint/no-unused-vars","'getFeaturevisorTypeFromValue' is defined but never used.","Identifier","unusedVar",["83"],{"kind":"84","justification":"85"},"directive",""]
1
+ [{"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/config.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/parsers.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/init.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/site.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.spec.ts":"15","/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.ts":"16","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils.ts":"17"},{"size":3214,"mtime":1695664147110,"results":"18","hashOfConfig":"19"},{"size":1014,"mtime":1695664147110,"results":"20","hashOfConfig":"19"},{"size":12226,"mtime":1695664147110,"results":"21","hashOfConfig":"19"},{"size":2966,"mtime":1695664147110,"results":"22","hashOfConfig":"19"},{"size":4829,"mtime":1695664147110,"results":"23","hashOfConfig":"19"},{"size":646,"mtime":1695664147110,"results":"24","hashOfConfig":"19"},{"size":1630,"mtime":1695664147110,"results":"25","hashOfConfig":"19"},{"size":5886,"mtime":1695664147110,"results":"26","hashOfConfig":"19"},{"size":213,"mtime":1695664147110,"results":"27","hashOfConfig":"19"},{"size":1308,"mtime":1695664147110,"results":"28","hashOfConfig":"19"},{"size":17487,"mtime":1695664147110,"results":"29","hashOfConfig":"19"},{"size":604,"mtime":1695664147110,"results":"30","hashOfConfig":"19"},{"size":14680,"mtime":1695664147110,"results":"31","hashOfConfig":"19"},{"size":6584,"mtime":1695664147110,"results":"32","hashOfConfig":"19"},{"size":12889,"mtime":1695664147110,"results":"33","hashOfConfig":"19"},{"size":4799,"mtime":1695664147110,"results":"34","hashOfConfig":"19"},{"size":2108,"mtime":1695664147110,"results":"35","hashOfConfig":"19"},{"filePath":"36","messages":"37","suppressedMessages":"38","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1u59miw",{"filePath":"39","messages":"40","suppressedMessages":"41","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"42","messages":"43","suppressedMessages":"44","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"45","messages":"46","suppressedMessages":"47","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"48","messages":"49","suppressedMessages":"50","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"51","messages":"52","suppressedMessages":"53","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"54","messages":"55","suppressedMessages":"56","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"57","messages":"58","suppressedMessages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","suppressedMessages":"62","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"63","messages":"64","suppressedMessages":"65","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","suppressedMessages":"68","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"69","messages":"70","suppressedMessages":"71","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","suppressedMessages":"74","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"75","messages":"76","suppressedMessages":"77","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","suppressedMessages":"80","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"81","messages":"82","suppressedMessages":"83","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","suppressedMessages":"86","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/parsers.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["87"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils.ts",[],[],{"ruleId":"88","severity":2,"message":"89","line":41,"column":10,"nodeType":"90","messageId":"91","endLine":41,"endColumn":38,"suppressions":"92"},"@typescript-eslint/no-unused-vars","'getFeaturevisorTypeFromValue' is defined but never used.","Identifier","unusedVar",["93"],{"kind":"94","justification":"95"},"directive",""]
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.48.0](https://github.com/featurevisor/featurevisor/compare/v0.47.7...v0.48.0) (2023-09-25)
7
+
8
+
9
+ ### Features
10
+
11
+ * custom parser API for going beyond just YAML files ([#158](https://github.com/featurevisor/featurevisor/issues/158)) ([3fb0352](https://github.com/featurevisor/featurevisor/commit/3fb0352e168d3f186bd54108eead789ec44da217))
12
+
13
+
14
+
15
+
16
+
17
+ ## [0.47.7](https://github.com/featurevisor/featurevisor/compare/v0.47.6...v0.47.7) (2023-09-19)
18
+
19
+ **Note:** Version bump only for package @featurevisor/core
20
+
21
+
22
+
23
+
24
+
6
25
  ## [0.47.6](https://github.com/featurevisor/featurevisor/compare/v0.47.5...v0.47.6) (2023-09-16)
7
26
 
8
27
  **Note:** Version bump only for package @featurevisor/core
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1694898881262" clover="3.2.0">
3
- <project timestamp="1694898881263" name="All files">
2
+ <coverage generated="1695664345021" clover="3.2.0">
3
+ <project timestamp="1695664345021" name="All files">
4
4
  <metrics statements="173" coveredstatements="165" conditionals="86" coveredconditionals="70" methods="28" coveredmethods="28" elements="287" coveredelements="263" complexity="0" loc="173" ncloc="173" packages="2" files="4" classes="4"/>
5
5
  <package name="lib">
6
6
  <metrics statements="90" coveredstatements="86" conditionals="48" coveredconditionals="39" methods="14" coveredmethods="14"/>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2023-09-16T21:14:41.244Z
119
+ at 2023-09-25T17:52:25.000Z
120
120
  </div>
121
121
  <script src="prettify.js"></script>
122
122
  <script>
@@ -175,7 +175,7 @@ exports.getUpdatedAvailableRangesAfterFilling = getUpdatedAvailableRangesAfterFi
175
175
  <div class='footer quiet pad2 space-top1 center small'>
176
176
  Code coverage generated by
177
177
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
178
- at 2023-09-16T21:14:41.244Z
178
+ at 2023-09-25T17:52:25.000Z
179
179
  </div>
180
180
  <script src="../prettify.js"></script>
181
181
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2023-09-16T21:14:41.244Z
119
+ at 2023-09-25T17:52:25.000Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -442,7 +442,7 @@ exports.getTraffic = getTraffic;
442
442
  <div class='footer quiet pad2 space-top1 center small'>
443
443
  Code coverage generated by
444
444
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
445
- at 2023-09-16T21:14:41.244Z
445
+ at 2023-09-25T17:52:25.000Z
446
446
  </div>
447
447
  <script src="../prettify.js"></script>
448
448
  <script>
@@ -193,7 +193,7 @@ export function getUpdatedAvailableRangesAfterFilling(
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at 2023-09-16T21:14:41.244Z
196
+ at 2023-09-25T17:52:25.000Z
197
197
  </div>
198
198
  <script src="../prettify.js"></script>
199
199
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2023-09-16T21:14:41.244Z
119
+ at 2023-09-25T17:52:25.000Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -553,7 +553,7 @@ export function getTraffic(
553
553
  <div class='footer quiet pad2 space-top1 center small'>
554
554
  Code coverage generated by
555
555
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
556
- at 2023-09-16T21:14:41.244Z
556
+ at 2023-09-25T17:52:25.000Z
557
557
  </div>
558
558
  <script src="../prettify.js"></script>
559
559
  <script>
package/lib/builder.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { DatafileContent, ExistingState, FeatureKey, EnvironmentKey, Range } from "@featurevisor/types";
2
2
  import { ProjectConfig } from "./config";
3
+ import { Datasource } from "./datasource/datasource";
3
4
  export interface BuildOptions {
4
5
  schemaVersion: string;
5
6
  revision: string;
@@ -15,8 +16,8 @@ interface FeatureRangesResult {
15
16
  [key: string]: boolean;
16
17
  };
17
18
  }
18
- export declare function getFeatureRanges(projectConfig: ProjectConfig): FeatureRangesResult;
19
- export declare function buildDatafile(projectConfig: ProjectConfig, options: BuildOptions, existingState: ExistingState): DatafileContent;
19
+ export declare function getFeatureRanges(projectConfig: ProjectConfig, datasource: Datasource): FeatureRangesResult;
20
+ export declare function buildDatafile(projectConfig: ProjectConfig, datasource: Datasource, options: BuildOptions, existingState: ExistingState): DatafileContent;
20
21
  export interface BuildCLIOptions {
21
22
  revision?: string;
22
23
  }
package/lib/builder.js CHANGED
@@ -16,6 +16,7 @@ var fs = require("fs");
16
16
  var path = require("path");
17
17
  var mkdirp = require("mkdirp");
18
18
  var config_1 = require("./config");
19
+ var datasource_1 = require("./datasource/datasource");
19
20
  var traffic_1 = require("./traffic");
20
21
  var utils_1 = require("./utils");
21
22
  function getDatafilePath(projectConfig, environment, tag) {
@@ -27,18 +28,14 @@ function getExistingStateFilePath(projectConfig, environment) {
27
28
  return path.join(projectConfig.stateDirectoryPath, "existing-state-".concat(environment, ".json"));
28
29
  }
29
30
  exports.getExistingStateFilePath = getExistingStateFilePath;
30
- function getFeatureRanges(projectConfig) {
31
+ function getFeatureRanges(projectConfig, datasource) {
31
32
  var featureRanges = new Map();
32
33
  var featureIsInGroup = {}; // featureKey => boolean
33
34
  var groups = [];
34
35
  if (fs.existsSync(projectConfig.groupsDirectoryPath)) {
35
- var groupFiles = fs
36
- .readdirSync(projectConfig.groupsDirectoryPath)
37
- .filter(function (f) { return f.endsWith(".yml"); });
38
- var _loop_1 = function (groupFile) {
39
- var groupKey = path.basename(groupFile, ".yml");
40
- var groupFilePath = path.join(projectConfig.groupsDirectoryPath, groupFile);
41
- var parsedGroup = (0, utils_1.parseYaml)(fs.readFileSync(groupFilePath, "utf8"));
36
+ var groupFiles = datasource.listGroups();
37
+ var _loop_1 = function (groupKey) {
38
+ var parsedGroup = datasource.readGroup(groupKey);
42
39
  groups.push(__assign(__assign({}, parsedGroup), { key: groupKey }));
43
40
  var accumulatedPercentage = 0;
44
41
  parsedGroup.slots.forEach(function (slot, slotIndex) {
@@ -58,14 +55,14 @@ function getFeatureRanges(projectConfig) {
58
55
  });
59
56
  };
60
57
  for (var _i = 0, groupFiles_1 = groupFiles; _i < groupFiles_1.length; _i++) {
61
- var groupFile = groupFiles_1[_i];
62
- _loop_1(groupFile);
58
+ var groupKey = groupFiles_1[_i];
59
+ _loop_1(groupKey);
63
60
  }
64
61
  }
65
62
  return { featureRanges: featureRanges, featureIsInGroup: featureIsInGroup };
66
63
  }
67
64
  exports.getFeatureRanges = getFeatureRanges;
68
- function buildDatafile(projectConfig, options, existingState) {
65
+ function buildDatafile(projectConfig, datasource, options, existingState) {
69
66
  var datafileContent = {
70
67
  schemaVersion: options.schemaVersion,
71
68
  revision: options.revision,
@@ -75,17 +72,15 @@ function buildDatafile(projectConfig, options, existingState) {
75
72
  };
76
73
  var segmentKeysUsedByTag = new Set();
77
74
  var attributeKeysUsedByTag = new Set();
78
- var _a = getFeatureRanges(projectConfig), featureRanges = _a.featureRanges, featureIsInGroup = _a.featureIsInGroup;
75
+ var _a = getFeatureRanges(projectConfig, datasource), featureRanges = _a.featureRanges, featureIsInGroup = _a.featureIsInGroup;
79
76
  // features
80
77
  var features = [];
81
78
  var featuresDirectory = projectConfig.featuresDirectoryPath;
82
79
  if (fs.existsSync(featuresDirectory)) {
83
- var featureFiles = fs.readdirSync(featuresDirectory).filter(function (f) { return f.endsWith(".yml"); });
80
+ var featureFiles = datasource.listFeatures();
84
81
  for (var _i = 0, featureFiles_1 = featureFiles; _i < featureFiles_1.length; _i++) {
85
- var featureFile = featureFiles_1[_i];
86
- var featureKey = path.basename(featureFile, ".yml");
87
- var featureFilePath = path.join(featuresDirectory, featureFile);
88
- var parsedFeature = (0, utils_1.parseYaml)(fs.readFileSync(featureFilePath, "utf8"));
82
+ var featureKey = featureFiles_1[_i];
83
+ var parsedFeature = datasource.readFeature(featureKey);
89
84
  if (parsedFeature.archived === true) {
90
85
  continue;
91
86
  }
@@ -192,12 +187,10 @@ function buildDatafile(projectConfig, options, existingState) {
192
187
  var segments = [];
193
188
  var segmentsDirectory = projectConfig.segmentsDirectoryPath;
194
189
  if (fs.existsSync(segmentsDirectory)) {
195
- var segmentFiles = fs.readdirSync(segmentsDirectory).filter(function (f) { return f.endsWith(".yml"); });
190
+ var segmentFiles = datasource.listSegments();
196
191
  for (var _d = 0, segmentFiles_1 = segmentFiles; _d < segmentFiles_1.length; _d++) {
197
- var segmentFile = segmentFiles_1[_d];
198
- var segmentKey = path.basename(segmentFile, ".yml");
199
- var segmentFilePath = path.join(segmentsDirectory, segmentFile);
200
- var parsedSegment = (0, utils_1.parseYaml)(fs.readFileSync(segmentFilePath, "utf8"));
192
+ var segmentKey = segmentFiles_1[_d];
193
+ var parsedSegment = datasource.readSegment(segmentKey);
201
194
  if (parsedSegment.archived === true) {
202
195
  continue;
203
196
  }
@@ -219,12 +212,10 @@ function buildDatafile(projectConfig, options, existingState) {
219
212
  var attributes = [];
220
213
  var attributesDirectory = projectConfig.attributesDirectoryPath;
221
214
  if (fs.existsSync(attributesDirectory)) {
222
- var attributeFiles = fs.readdirSync(attributesDirectory).filter(function (f) { return f.endsWith(".yml"); });
215
+ var attributeFiles = datasource.listAttributes();
223
216
  for (var _e = 0, attributeFiles_1 = attributeFiles; _e < attributeFiles_1.length; _e++) {
224
- var attributeFile = attributeFiles_1[_e];
225
- var attributeKey = path.basename(attributeFile, ".yml");
226
- var attributeFilePath = path.join(attributesDirectory, attributeFile);
227
- var parsedAttribute = (0, utils_1.parseYaml)(fs.readFileSync(attributeFilePath, "utf8"));
217
+ var attributeKey = attributeFiles_1[_e];
218
+ var parsedAttribute = datasource.readAttribute(attributeKey);
228
219
  if (parsedAttribute.archived === true) {
229
220
  continue;
230
221
  }
@@ -252,6 +243,7 @@ function buildProject(rootDirectoryPath, projectConfig, cliOptions) {
252
243
  var tags = projectConfig.tags;
253
244
  var environments = projectConfig.environments;
254
245
  var pkg = require(path.join(rootDirectoryPath, "package.json"));
246
+ var datasource = new datasource_1.Datasource(projectConfig);
255
247
  for (var _i = 0, environments_1 = environments; _i < environments_1.length; _i++) {
256
248
  var environment = environments_1[_i];
257
249
  console.log("\nBuilding datafiles for environment: ".concat(environment));
@@ -264,7 +256,7 @@ function buildProject(rootDirectoryPath, projectConfig, cliOptions) {
264
256
  for (var _a = 0, tags_1 = tags; _a < tags_1.length; _a++) {
265
257
  var tag = tags_1[_a];
266
258
  console.log("\n => Tag: ".concat(tag));
267
- var datafileContent = buildDatafile(projectConfig, {
259
+ var datafileContent = buildDatafile(projectConfig, datasource, {
268
260
  schemaVersion: config_1.SCHEMA_VERSION,
269
261
  revision: cliOptions.revision || pkg.version,
270
262
  environment: environment,
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/lib/config.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { BucketBy } from "@featurevisor/types";
2
+ import { Parser } from "./datasource/parsers";
2
3
  export declare const FEATURES_DIRECTORY_NAME = "features";
3
4
  export declare const SEGMENTS_DIRECTORY_NAME = "segments";
4
5
  export declare const ATTRIBUTES_DIRECTORY_NAME = "attributes";
@@ -14,6 +15,7 @@ export declare const DEFAULT_TAGS: string[];
14
15
  export declare const DEFAULT_BUCKET_BY_ATTRIBUTE = "userId";
15
16
  export declare const DEFAULT_PRETTY_STATE = false;
16
17
  export declare const DEFAULT_PRETTY_DATAFILE = false;
18
+ export declare const DEFAULT_PARSER: Parser;
17
19
  export declare const SCHEMA_VERSION = "1";
18
20
  export interface ProjectConfig {
19
21
  featuresDirectoryPath: string;
@@ -26,6 +28,7 @@ export interface ProjectConfig {
26
28
  environments: string[];
27
29
  tags: string[];
28
30
  defaultBucketBy: BucketBy;
31
+ parser: Parser;
29
32
  prettyState: boolean;
30
33
  prettyDatafile: boolean;
31
34
  siteExportDirectoryPath: string;
package/lib/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProjectConfig = exports.SCHEMA_VERSION = exports.DEFAULT_PRETTY_DATAFILE = exports.DEFAULT_PRETTY_STATE = exports.DEFAULT_BUCKET_BY_ATTRIBUTE = exports.DEFAULT_TAGS = exports.DEFAULT_ENVIRONMENTS = exports.ROOT_DIR_PLACEHOLDER = exports.CONFIG_MODULE_NAME = exports.SITE_EXPORT_DIRECTORY_NAME = exports.OUTPUT_DIRECTORY_NAME = exports.STATE_DIRECTORY_NAME = exports.TESTS_DIRECTORY_NAME = exports.GROUPS_DIRECTORY_NAME = exports.ATTRIBUTES_DIRECTORY_NAME = exports.SEGMENTS_DIRECTORY_NAME = exports.FEATURES_DIRECTORY_NAME = void 0;
3
+ exports.getProjectConfig = exports.SCHEMA_VERSION = exports.DEFAULT_PARSER = exports.DEFAULT_PRETTY_DATAFILE = exports.DEFAULT_PRETTY_STATE = exports.DEFAULT_BUCKET_BY_ATTRIBUTE = exports.DEFAULT_TAGS = exports.DEFAULT_ENVIRONMENTS = exports.ROOT_DIR_PLACEHOLDER = exports.CONFIG_MODULE_NAME = exports.SITE_EXPORT_DIRECTORY_NAME = exports.OUTPUT_DIRECTORY_NAME = exports.STATE_DIRECTORY_NAME = exports.TESTS_DIRECTORY_NAME = exports.GROUPS_DIRECTORY_NAME = exports.ATTRIBUTES_DIRECTORY_NAME = exports.SEGMENTS_DIRECTORY_NAME = exports.FEATURES_DIRECTORY_NAME = void 0;
4
4
  var path = require("path");
5
5
  exports.FEATURES_DIRECTORY_NAME = "features";
6
6
  exports.SEGMENTS_DIRECTORY_NAME = "segments";
@@ -17,6 +17,7 @@ exports.DEFAULT_TAGS = ["all"];
17
17
  exports.DEFAULT_BUCKET_BY_ATTRIBUTE = "userId";
18
18
  exports.DEFAULT_PRETTY_STATE = false;
19
19
  exports.DEFAULT_PRETTY_DATAFILE = false;
20
+ exports.DEFAULT_PARSER = "yml";
20
21
  exports.SCHEMA_VERSION = "1";
21
22
  // rootDirectoryPath: path to the root directory of the project (without ending with a slash)
22
23
  function getProjectConfig(rootDirectoryPath) {
@@ -31,6 +32,7 @@ function getProjectConfig(rootDirectoryPath) {
31
32
  environments: exports.DEFAULT_ENVIRONMENTS,
32
33
  tags: exports.DEFAULT_TAGS,
33
34
  defaultBucketBy: "userId",
35
+ parser: exports.DEFAULT_PARSER,
34
36
  prettyState: exports.DEFAULT_PRETTY_STATE,
35
37
  prettyDatafile: exports.DEFAULT_PRETTY_DATAFILE,
36
38
  siteExportDirectoryPath: path.join(rootDirectoryPath, exports.SITE_EXPORT_DIRECTORY_NAME),
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,2BAA6B;AAIhB,QAAA,uBAAuB,GAAG,UAAU,CAAC;AACrC,QAAA,uBAAuB,GAAG,UAAU,CAAC;AACrC,QAAA,yBAAyB,GAAG,YAAY,CAAC;AACzC,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AACjC,QAAA,oBAAoB,GAAG,OAAO,CAAC;AAC/B,QAAA,oBAAoB,GAAG,eAAe,CAAC;AACvC,QAAA,qBAAqB,GAAG,MAAM,CAAC;AAC/B,QAAA,0BAA0B,GAAG,KAAK,CAAC;AAEnC,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAEnC,QAAA,oBAAoB,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACjD,QAAA,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,2BAA2B,GAAG,QAAQ,CAAC;AAEvC,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAC7B,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAEhC,QAAA,cAAc,GAAG,GAAG,CAAC;AAkBlC,6FAA6F;AAC7F,SAAgB,gBAAgB,CAAC,iBAAyB;IACxD,IAAM,UAAU,GAAkB;QAChC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAAuB,CAAC;QAC5E,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAAuB,CAAC;QAC5E,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,iCAAyB,CAAC;QAChF,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAAqB,CAAC;QACxE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,4BAAoB,CAAC;QAEtE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,4BAAoB,CAAC;QACtE,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAAqB,CAAC;QAExE,YAAY,EAAE,4BAAoB;QAClC,IAAI,EAAE,oBAAY;QAClB,eAAe,EAAE,QAAQ;QAEzB,WAAW,EAAE,4BAAoB;QACjC,cAAc,EAAE,+BAAuB;QAEvC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kCAA0B,CAAC;KAClF,CAAC;IAEF,IAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,0BAAkB,CAAC,CAAC;IAC1E,IAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;QAClC,WAAW,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;YACjF,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAAoB,EAAE,iBAAiB,CAAC,CAAC;SACtF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAA4B,CAAC;AACtC,CAAC;AAnCD,4CAmCC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,2BAA6B;AAMhB,QAAA,uBAAuB,GAAG,UAAU,CAAC;AACrC,QAAA,uBAAuB,GAAG,UAAU,CAAC;AACrC,QAAA,yBAAyB,GAAG,YAAY,CAAC;AACzC,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AACjC,QAAA,oBAAoB,GAAG,OAAO,CAAC;AAC/B,QAAA,oBAAoB,GAAG,eAAe,CAAC;AACvC,QAAA,qBAAqB,GAAG,MAAM,CAAC;AAC/B,QAAA,0BAA0B,GAAG,KAAK,CAAC;AAEnC,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAEnC,QAAA,oBAAoB,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACjD,QAAA,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,2BAA2B,GAAG,QAAQ,CAAC;AAEvC,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAC7B,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAEhC,QAAA,cAAc,GAAW,KAAK,CAAC;AAE/B,QAAA,cAAc,GAAG,GAAG,CAAC;AAmBlC,6FAA6F;AAC7F,SAAgB,gBAAgB,CAAC,iBAAyB;IACxD,IAAM,UAAU,GAAkB;QAChC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAAuB,CAAC;QAC5E,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAAuB,CAAC;QAC5E,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,iCAAyB,CAAC;QAChF,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAAqB,CAAC;QACxE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,4BAAoB,CAAC;QAEtE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,4BAAoB,CAAC;QACtE,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAAqB,CAAC;QAExE,YAAY,EAAE,4BAAoB;QAClC,IAAI,EAAE,oBAAY;QAClB,eAAe,EAAE,QAAQ;QAEzB,MAAM,EAAE,sBAAc;QAEtB,WAAW,EAAE,4BAAoB;QACjC,cAAc,EAAE,+BAAuB;QAEvC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kCAA0B,CAAC;KAClF,CAAC;IAEF,IAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,0BAAkB,CAAC,CAAC;IAC1E,IAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;QAClC,WAAW,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;YACjF,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAAoB,EAAE,iBAAiB,CAAC,CAAC;SACtF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAA4B,CAAC;AACtC,CAAC;AArCD,4CAqCC"}
@@ -0,0 +1,32 @@
1
+ import { Tag, ParsedFeature, Segment, Attribute, Group, Spec } from "@featurevisor/types";
2
+ import { ProjectConfig } from "../config";
3
+ export type EntityType = "feature" | "group" | "segment" | "attribute" | "test";
4
+ export declare class Datasource {
5
+ private config;
6
+ private extension;
7
+ private parse;
8
+ constructor(config: ProjectConfig);
9
+ getExtension(): any;
10
+ /**
11
+ * Common methods
12
+ */
13
+ listEntities(entityType: EntityType): string[];
14
+ getEntityDirectoryPath(entityType: EntityType): string;
15
+ getEntityPath(entityType: EntityType, entityKey: string): string;
16
+ entityExists(entityType: EntityType, entityKey: string): boolean;
17
+ readEntity(entityType: EntityType, entityKey: string): string;
18
+ parseEntity<T>(entityType: EntityType, entityKey: string): T;
19
+ /**
20
+ * Entity specific methods
21
+ */
22
+ listFeatures(tag?: Tag): string[];
23
+ readFeature(featureKey: string): ParsedFeature;
24
+ listSegments(segmentsList?: string[]): string[];
25
+ readSegment(segmentKey: string): Segment;
26
+ listAttributes(attributesList?: string[]): string[];
27
+ readAttribute(attributeKey: string): Attribute;
28
+ listGroups(featuresList?: string[]): string[];
29
+ readGroup(groupKey: string): Group;
30
+ listTests(): string[];
31
+ readTest(testKey: string): Spec;
32
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Datasource = void 0;
4
+ var path = require("path");
5
+ var fs = require("fs");
6
+ var parsers_1 = require("./parsers");
7
+ var Datasource = /** @class */ (function () {
8
+ function Datasource(config) {
9
+ this.config = config;
10
+ if (typeof config.parser === "string") {
11
+ // built-in parsers
12
+ if (typeof parsers_1.parsers[config.parser] !== "function") {
13
+ throw new Error("Invalid parser: ".concat(config.parser));
14
+ }
15
+ this.extension = config.parser;
16
+ this.parse = parsers_1.parsers[config.parser];
17
+ }
18
+ else if (typeof config.parser === "object") {
19
+ // custom parser
20
+ if (typeof config.parser.extension !== "string") {
21
+ throw new Error("Invalid parser extension: ".concat(config.parser.extension));
22
+ }
23
+ if (typeof config.parser.parse !== "function") {
24
+ throw new Error("Invalid parser parse function: ".concat(config.parser.parse));
25
+ }
26
+ this.extension = config.parser.extension;
27
+ this.parse = config.parser.parse;
28
+ }
29
+ else {
30
+ throw new Error("Invalid parser: ".concat(config.parser));
31
+ }
32
+ }
33
+ Datasource.prototype.getExtension = function () {
34
+ return this.extension;
35
+ };
36
+ /**
37
+ * Common methods
38
+ */
39
+ Datasource.prototype.listEntities = function (entityType) {
40
+ var _this = this;
41
+ var directoryPath = this.getEntityDirectoryPath(entityType);
42
+ return fs
43
+ .readdirSync(directoryPath)
44
+ .filter(function (fileName) { return fileName.endsWith(".".concat(_this.extension)); })
45
+ .map(function (fileName) { return fileName.replace(".".concat(_this.extension), ""); });
46
+ };
47
+ Datasource.prototype.getEntityDirectoryPath = function (entityType) {
48
+ if (entityType === "feature") {
49
+ return this.config.featuresDirectoryPath;
50
+ }
51
+ else if (entityType === "group") {
52
+ return this.config.groupsDirectoryPath;
53
+ }
54
+ else if (entityType === "segment") {
55
+ return this.config.segmentsDirectoryPath;
56
+ }
57
+ else if (entityType === "test") {
58
+ return this.config.testsDirectoryPath;
59
+ }
60
+ return this.config.attributesDirectoryPath;
61
+ };
62
+ Datasource.prototype.getEntityPath = function (entityType, entityKey) {
63
+ var basePath = this.getEntityDirectoryPath(entityType);
64
+ return path.join(basePath, "".concat(entityKey, ".").concat(this.extension));
65
+ };
66
+ Datasource.prototype.entityExists = function (entityType, entityKey) {
67
+ var entityPath = this.getEntityPath(entityType, entityKey);
68
+ return fs.existsSync(entityPath);
69
+ };
70
+ Datasource.prototype.readEntity = function (entityType, entityKey) {
71
+ var filePath = this.getEntityPath(entityType, entityKey);
72
+ return fs.readFileSync(filePath, "utf8");
73
+ };
74
+ Datasource.prototype.parseEntity = function (entityType, entityKey) {
75
+ var entityContent = this.readEntity(entityType, entityKey);
76
+ return this.parse(entityContent);
77
+ };
78
+ /**
79
+ * Entity specific methods
80
+ */
81
+ // features
82
+ Datasource.prototype.listFeatures = function (tag) {
83
+ var _this = this;
84
+ var features = this.listEntities("feature");
85
+ if (tag) {
86
+ return features.filter(function (feature) {
87
+ var featureContent = _this.parseEntity("feature", feature);
88
+ return featureContent.tags.indexOf(tag) !== -1;
89
+ });
90
+ }
91
+ return features;
92
+ };
93
+ Datasource.prototype.readFeature = function (featureKey) {
94
+ return this.parseEntity("feature", featureKey);
95
+ };
96
+ // segments
97
+ Datasource.prototype.listSegments = function (segmentsList) {
98
+ var segments = this.listEntities("segment");
99
+ if (segmentsList) {
100
+ return segments.filter(function (segment) {
101
+ return segmentsList.indexOf(segment) !== -1;
102
+ });
103
+ }
104
+ return segments;
105
+ };
106
+ Datasource.prototype.readSegment = function (segmentKey) {
107
+ return this.parseEntity("segment", segmentKey);
108
+ };
109
+ // attributes
110
+ Datasource.prototype.listAttributes = function (attributesList) {
111
+ var attributes = this.listEntities("attribute");
112
+ if (attributesList) {
113
+ return attributes.filter(function (segment) {
114
+ return attributesList.indexOf(segment) !== -1;
115
+ });
116
+ }
117
+ return attributes;
118
+ };
119
+ Datasource.prototype.readAttribute = function (attributeKey) {
120
+ return this.parseEntity("attribute", attributeKey);
121
+ };
122
+ // groups
123
+ Datasource.prototype.listGroups = function (featuresList) {
124
+ var _this = this;
125
+ var groups = this.listEntities("group");
126
+ if (featuresList) {
127
+ return groups.filter(function (group) {
128
+ var groupContent = _this.parseEntity("group", group);
129
+ return groupContent.slots.some(function (slot) {
130
+ if (!slot.feature) {
131
+ return false;
132
+ }
133
+ return featuresList.indexOf(slot.feature) !== -1;
134
+ });
135
+ });
136
+ }
137
+ return groups;
138
+ };
139
+ Datasource.prototype.readGroup = function (groupKey) {
140
+ return this.parseEntity("group", groupKey);
141
+ };
142
+ // tests
143
+ Datasource.prototype.listTests = function () {
144
+ return this.listEntities("test");
145
+ };
146
+ Datasource.prototype.readTest = function (testKey) {
147
+ return this.parseEntity("test", testKey);
148
+ };
149
+ return Datasource;
150
+ }());
151
+ exports.Datasource = Datasource;
152
+ //# sourceMappingURL=datasource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/datasource/datasource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * If we want to add more built-in parsers,
3
+ * add them to this object with new file extension as the key,
4
+ * and a function that takes file content as string and returns parsed object as the value.
5
+ */
6
+ export declare const parsers: {
7
+ yml(content: string): unknown;
8
+ json(content: string): any;
9
+ };
10
+ export type BuiltInParser = keyof typeof parsers;
11
+ export interface CustomParser {
12
+ extension: string;
13
+ parse: (content: string) => any;
14
+ }
15
+ export type Parser = BuiltInParser | CustomParser;