@featurevisor/core 0.49.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintcache 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/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":1696103831029,"results":"18","hashOfConfig":"19"},{"size":1014,"mtime":1696103831029,"results":"20","hashOfConfig":"19"},{"size":12226,"mtime":1696103831029,"results":"21","hashOfConfig":"19"},{"size":2966,"mtime":1696103831029,"results":"22","hashOfConfig":"19"},{"size":4829,"mtime":1696103831029,"results":"23","hashOfConfig":"19"},{"size":646,"mtime":1696103831029,"results":"24","hashOfConfig":"19"},{"size":1630,"mtime":1696103831029,"results":"25","hashOfConfig":"19"},{"size":5886,"mtime":1696103831029,"results":"26","hashOfConfig":"19"},{"size":213,"mtime":1696103831029,"results":"27","hashOfConfig":"19"},{"size":1308,"mtime":1696103831029,"results":"28","hashOfConfig":"19"},{"size":17487,"mtime":1696103831029,"results":"29","hashOfConfig":"19"},{"size":604,"mtime":1696103831029,"results":"30","hashOfConfig":"19"},{"size":14680,"mtime":1696103831029,"results":"31","hashOfConfig":"19"},{"size":6584,"mtime":1696103831029,"results":"32","hashOfConfig":"19"},{"size":12889,"mtime":1696103831029,"results":"33","hashOfConfig":"19"},{"size":4799,"mtime":1696103831029,"results":"34","hashOfConfig":"19"},{"size":2108,"mtime":1696103831029,"results":"35","hashOfConfig":"19"},{"filePath":"36","messages":"37","suppressedMessages":"38","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"u5hm5o",{"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",""]
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":1696523288968,"results":"18","hashOfConfig":"19"},{"size":1014,"mtime":1696523288968,"results":"20","hashOfConfig":"19"},{"size":12373,"mtime":1696523288968,"results":"21","hashOfConfig":"19"},{"size":2966,"mtime":1696523288968,"results":"22","hashOfConfig":"19"},{"size":5523,"mtime":1696523288968,"results":"23","hashOfConfig":"19"},{"size":646,"mtime":1696523288968,"results":"24","hashOfConfig":"19"},{"size":1630,"mtime":1696523288968,"results":"25","hashOfConfig":"19"},{"size":5886,"mtime":1696523288968,"results":"26","hashOfConfig":"19"},{"size":213,"mtime":1696523288968,"results":"27","hashOfConfig":"19"},{"size":1308,"mtime":1696523288968,"results":"28","hashOfConfig":"19"},{"size":16908,"mtime":1696523288968,"results":"29","hashOfConfig":"19"},{"size":604,"mtime":1696523288968,"results":"30","hashOfConfig":"19"},{"size":14680,"mtime":1696523288968,"results":"31","hashOfConfig":"19"},{"size":6423,"mtime":1696523288968,"results":"32","hashOfConfig":"19"},{"size":12889,"mtime":1696523288968,"results":"33","hashOfConfig":"19"},{"size":4799,"mtime":1696523288968,"results":"34","hashOfConfig":"19"},{"size":2108,"mtime":1696523288968,"results":"35","hashOfConfig":"19"},{"filePath":"36","messages":"37","suppressedMessages":"38","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"u5hm5o",{"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,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.51.0](https://github.com/featurevisor/featurevisor/compare/v0.50.0...v0.51.0) (2023-10-05)
7
+
8
+
9
+ ### Features
10
+
11
+ * let variables have descriptions ([#165](https://github.com/featurevisor/featurevisor/issues/165)) ([2a1b73d](https://github.com/featurevisor/featurevisor/commit/2a1b73d274ae10184db024ca41aa73011b8e8532))
12
+
13
+
14
+
15
+
16
+
17
+ # [0.50.0](https://github.com/featurevisor/featurevisor/compare/v0.49.0...v0.50.0) (2023-10-01)
18
+
19
+
20
+ ### Features
21
+
22
+ * test specs improvements ([#160](https://github.com/featurevisor/featurevisor/issues/160)) ([fd8fa01](https://github.com/featurevisor/featurevisor/commit/fd8fa01f517bcfd5dfde80f311a9c546dd481ff1))
23
+
24
+
25
+
26
+
27
+
6
28
  # [0.49.0](https://github.com/featurevisor/featurevisor/compare/v0.48.0...v0.49.0) (2023-09-30)
7
29
 
8
30
  **Note:** Version bump only for package @featurevisor/core
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1696104001921" clover="3.2.0">
3
- <project timestamp="1696104001921" name="All files">
2
+ <coverage generated="1696523488605" clover="3.2.0">
3
+ <project timestamp="1696523488605" 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-30T20:00:01.911Z
119
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
178
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
119
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
445
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
196
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
119
+ at 2023-10-05T16:31:28.583Z
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-30T20:00:01.911Z
556
+ at 2023-10-05T16:31:28.583Z
557
557
  </div>
558
558
  <script src="../prettify.js"></script>
559
559
  <script>
package/lib/builder.d.ts CHANGED
@@ -5,7 +5,8 @@ export interface BuildOptions {
5
5
  schemaVersion: string;
6
6
  revision: string;
7
7
  environment: string;
8
- tag: string;
8
+ tag?: string;
9
+ features?: FeatureKey[];
9
10
  }
10
11
  export declare function getDatafilePath(projectConfig: ProjectConfig, environment: EnvironmentKey, tag: string): string;
11
12
  export declare function getExistingStateFilePath(projectConfig: ProjectConfig, environment: EnvironmentKey): string;
package/lib/builder.js CHANGED
@@ -84,7 +84,10 @@ function buildDatafile(projectConfig, datasource, options, existingState) {
84
84
  if (parsedFeature.archived === true) {
85
85
  continue;
86
86
  }
87
- if (parsedFeature.tags.indexOf(options.tag) === -1) {
87
+ if (options.tag && parsedFeature.tags.indexOf(options.tag) === -1) {
88
+ continue;
89
+ }
90
+ if (options.features && options.features.indexOf(featureKey) === -1) {
88
91
  continue;
89
92
  }
90
93
  if (parsedFeature.environments[options.environment].expose === false) {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uBAAyB;AACzB,2BAA6B;AAE7B,+BAAiC;AAuBjC,mCAAyD;AACzD,sDAAqD;AACrD,qCAAuC;AACvC,iCAAkG;AASlG,SAAgB,eAAe,CAC7B,aAA4B,EAC5B,WAA2B,EAC3B,GAAW;IAEX,IAAM,QAAQ,GAAG,uBAAgB,GAAG,UAAO,CAAC;IAE5C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC;AARD,0CAQC;AAED,SAAgB,wBAAwB,CACtC,aAA4B,EAC5B,WAA2B;IAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,yBAAkB,WAAW,UAAO,CAAC,CAAC;AAC3F,CAAC;AALD,4DAKC;AASD,SAAgB,gBAAgB,CAC9B,aAA4B,EAC5B,UAAsB;IAEtB,IAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,IAAM,gBAAgB,GAAG,EAAE,CAAC,CAAC,wBAAwB;IAErD,IAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE;QACpD,IAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;gCAEhC,QAAQ;YACjB,IAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEnD,MAAM,CAAC,IAAI,uBACN,WAAW,KACd,GAAG,EAAE,QAAQ,IACb,CAAC;YAEH,IAAI,qBAAqB,GAAG,CAAC,CAAC;YAC9B,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,SAAS;gBACjD,IAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC;gBAEpC,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;oBAEhC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;wBAClC,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;qBACrC;oBAED,IAAM,uBAAuB,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBAEpE,IAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC;oBAC9E,IAAM,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAE3D,uBAAuB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;oBAE3C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;iBAC1D;gBAED,qBAAqB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAClD,CAAC,CAAC,CAAC;;QA9BL,KAAuB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;YAA5B,IAAM,QAAQ,mBAAA;oBAAR,QAAQ;SA+BlB;KACF;IAED,OAAO,EAAE,aAAa,eAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AAC7C,CAAC;AA9CD,4CA8CC;AAED,SAAgB,aAAa,CAC3B,aAA4B,EAC5B,UAAsB,EACtB,OAAqB,EACrB,aAA4B;IAE5B,IAAM,eAAe,GAAoB;QACvC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAM,oBAAoB,GAAG,IAAI,GAAG,EAAc,CAAC;IACnD,IAAM,sBAAsB,GAAG,IAAI,GAAG,EAAgB,CAAC;IACjD,IAAA,KAAsC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,EAA/E,aAAa,mBAAA,EAAE,gBAAgB,sBAAgD,CAAC;IAExF,WAAW;IACX,IAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,CAAC;IAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;QACpC,IAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAE/C,KAAyB,UAAY,EAAZ,6BAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE;YAAlC,IAAM,UAAU,qBAAA;YACnB,IAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEzD,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE;gBACnC,SAAS;aACV;YAED,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClD,SAAS;aACV;YAED,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE;gBACpE,SAAS;aACV;YAED,KAAyB,UAAqD,EAArD,KAAA,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAArD,cAAqD,EAArD,IAAqD,EAAE;gBAA3E,IAAM,UAAU,SAAA;gBACnB,IAAM,oBAAoB,GAAG,IAAA,2CAAmC,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACtF,oBAAoB,CAAC,OAAO,CAAC,UAAC,UAAU,IAAK,OAAA,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAApC,CAAoC,CAAC,CAAC;aACpF;YAED,IAAM,OAAO,GAAY;gBACvB,GAAG,EAAE,UAAU;gBACf,UAAU,EAAE,aAAa,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAChE,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,eAAe;gBACjE,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;oBACjD,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,SAAoB;wBAChD,IAAM,eAAe,GAAQ;4BAC3B,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,oIAAoI;yBAC/J,CAAC;wBAEF,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;4BACxB,OAAO,eAAe,CAAC;yBACxB;wBAED,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB;4BACrE,IAAM,cAAc,GAAQ;gCAC1B,GAAG,EAAE,QAAQ,CAAC,GAAG;gCACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;6BACtB,CAAC;4BAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;gCACvB,OAAO,cAAc,CAAC;6BACvB;4BAED,cAAc,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAA0B;gCAC3E,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE;oCAC9C,IAAM,sBAAsB,GAAG,IAAA,0CAAkC,EAC/D,QAAQ,CAAC,UAAU,CACpB,CAAC;oCACF,sBAAsB,CAAC,OAAO,CAAC,UAAC,YAAY;wCAC1C,OAAA,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC;oCAAxC,CAAwC,CACzC,CAAC;oCAEF,OAAO;wCACL,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;wCAC/C,KAAK,EAAE,QAAQ,CAAC,KAAK;qCACtB,CAAC;iCACH;gCAED,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE;oCAC5C,IAAM,oBAAoB,GAAG,IAAA,2CAAmC,EAC9D,QAAQ,CAAC,QAAyC,CACnD,CAAC;oCACF,oBAAoB,CAAC,OAAO,CAAC,UAAC,UAAU;wCACtC,OAAA,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC;oCAApC,CAAoC,CACrC,CAAC;oCAEF,OAAO;wCACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;wCAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK;qCACtB,CAAC;iCACH;gCAED,OAAO,QAAQ,CAAC;4BAClB,CAAC,CAAC,CAAC;4BAEH,OAAO,cAAc,CAAC;wBACxB,CAAC,CAAC,CAAC;wBAEH,OAAO,eAAe,CAAC;oBACzB,CAAC,CAAC;oBACJ,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,IAAA,oBAAU,EACjB,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EACrD,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAClC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CACpC;gBACD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS;aACnD,CAAC;YAEF,wGAAwG;YACxG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;gBACnC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;oBAC3C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,CAAY;wBAClC,OAAO;4BACL,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC;yBACtB,CAAC;oBACJ,CAAC,CAAC;oBACJ,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,CAAU;oBACtC,OAAO;wBACL,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,UAAU,EAAE,CAAC,CAAC,UAAU;wBACxB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,CAAa;4BACzC,OAAO;gCACL,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,KAAK,EAAE,CAAC,CAAC,KAAK;6BACf,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;YAEF,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACzC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACjD;YAED,IAAI,aAAa,CAAC,eAAe,EAAE;gBACjC,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;aACzD;YAED,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;gBACzD,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;aACvE;YAED,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;KACF;IAED,WAAW;IACX,IAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,CAAC;IAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;QACpC,IAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAE/C,KAAyB,UAAY,EAAZ,6BAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE;YAAlC,IAAM,UAAU,qBAAA;YACnB,IAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEzD,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE;gBACnC,SAAS;aACV;YAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE;gBAClD,SAAS;aACV;YAED,IAAM,sBAAsB,GAAG,IAAA,0CAAkC,EAC/D,aAAa,CAAC,UAAqC,CACpD,CAAC;YACF,sBAAsB,CAAC,OAAO,CAAC,UAAC,YAAY,IAAK,OAAA,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAxC,CAAwC,CAAC,CAAC;YAE3F,IAAM,OAAO,GAAY;gBACvB,GAAG,EAAE,UAAU;gBACf,UAAU,EACR,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ;oBAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC1C,CAAC,CAAC,aAAa,CAAC,UAAU;aAC/B,CAAC;YAEF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;KACF;IAED,aAAa;IACb,IAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAM,mBAAmB,GAAG,aAAa,CAAC,uBAAuB,CAAC;IAElE,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;QACtC,IAAM,cAAc,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAEnD,KAA2B,UAAc,EAAd,iCAAc,EAAd,4BAAc,EAAd,IAAc,EAAE;YAAtC,IAAM,YAAY,uBAAA;YACrB,IAAM,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAE/D,IAAI,eAAe,CAAC,QAAQ,KAAK,IAAI,EAAE;gBACrC,SAAS;aACV;YAED,IAAI,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;gBAClF,SAAS;aACV;YAED,IAAM,SAAS,GAAc;gBAC3B,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,eAAe,CAAC,IAAI;aAC3B,CAAC;YAEF,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE;gBACpC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;aAC1B;YAED,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC5B;KACF;IAED,eAAe,CAAC,UAAU,GAAG,UAAU,CAAC;IACxC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEpC,OAAO,eAAe,CAAC;AACzB,CAAC;AArOD,sCAqOC;AAMD,SAAgB,YAAY,CAC1B,iBAAiB,EACjB,aAA4B,EAC5B,UAAgC;IAAhC,2BAAA,EAAA,eAAgC;IAEhC,IAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IAChC,IAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAEhD,IAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;IAClE,IAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,aAAa,CAAC,CAAC;IAEjD,KAA0B,UAAY,EAAZ,6BAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE;QAAnC,IAAM,WAAW,qBAAA;QACpB,OAAO,CAAC,GAAG,CAAC,gDAAyC,WAAW,CAAE,CAAC,CAAC;QAEpE,IAAM,qBAAqB,GAAG,wBAAwB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACnF,IAAM,aAAa,GAAkB,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC;YACvE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAChC,CAAC,CAAC;gBACE,QAAQ,EAAE,EAAE;aACb,CAAC;QAEN,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAAnB,IAAM,GAAG,aAAA;YACZ,OAAO,CAAC,GAAG,CAAC,sBAAe,GAAG,CAAE,CAAC,CAAC;YAClC,IAAM,eAAe,GAAG,aAAa,CACnC,aAAa,EACb,UAAU,EACV;gBACE,aAAa,EAAE,uBAAc;gBAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO;gBAC5C,WAAW,EAAE,WAAW;gBACxB,GAAG,EAAE,GAAG;aACT,EACD,aAAa,CACd,CAAC;YAEF,qCAAqC;YACrC,IAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAEtC,IAAM,cAAc,GAAG,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YACxE,EAAE,CAAC,aAAa,CACd,cAAc,EACd,aAAa,CAAC,cAAc;gBAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACpC,CAAC;YACF,IAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,mCAA4B,SAAS,CAAE,CAAC,CAAC;SACtD;QAED,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;YACpD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;SAC/C;QACD,EAAE,CAAC,aAAa,CACd,qBAAqB,EACrB,aAAa,CAAC,WAAW;YACvB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAClC,CAAC;KACH;AACH,CAAC;AA7DD,oCA6DC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Tag, ParsedFeature, Segment, Attribute, Group, Spec } from "@featurevisor/types";
1
+ import { Tag, ParsedFeature, Segment, Attribute, Group, FeatureKey, Test } from "@featurevisor/types";
2
2
  import { ProjectConfig } from "../config";
3
3
  export type EntityType = "feature" | "group" | "segment" | "attribute" | "test";
4
4
  export declare class Datasource {
@@ -21,6 +21,7 @@ export declare class Datasource {
21
21
  */
22
22
  listFeatures(tag?: Tag): string[];
23
23
  readFeature(featureKey: string): ParsedFeature;
24
+ getRequiredFeaturesChain(featureKey: FeatureKey, chain?: Set<string>): Set<FeatureKey>;
24
25
  listSegments(segmentsList?: string[]): string[];
25
26
  readSegment(segmentKey: string): Segment;
26
27
  listAttributes(attributesList?: string[]): string[];
@@ -28,5 +29,5 @@ export declare class Datasource {
28
29
  listGroups(featuresList?: string[]): string[];
29
30
  readGroup(groupKey: string): Group;
30
31
  listTests(): string[];
31
- readTest(testKey: string): Spec;
32
+ readTest(testKey: string): Test;
32
33
  }
@@ -93,6 +93,26 @@ var Datasource = /** @class */ (function () {
93
93
  Datasource.prototype.readFeature = function (featureKey) {
94
94
  return this.parseEntity("feature", featureKey);
95
95
  };
96
+ Datasource.prototype.getRequiredFeaturesChain = function (featureKey, chain) {
97
+ var _this = this;
98
+ if (chain === void 0) { chain = new Set(); }
99
+ chain.add(featureKey);
100
+ if (!this.entityExists("feature", featureKey)) {
101
+ throw new Error("Feature not found: ".concat(featureKey));
102
+ }
103
+ var feature = this.readFeature(featureKey);
104
+ if (!feature.required) {
105
+ return chain;
106
+ }
107
+ feature.required.forEach(function (r) {
108
+ var requiredKey = typeof r === "string" ? r : r.key;
109
+ if (chain.has(requiredKey)) {
110
+ throw new Error("Circular dependency detected: ".concat(chain.toString()));
111
+ }
112
+ _this.getRequiredFeaturesChain(requiredKey, chain);
113
+ });
114
+ return chain;
115
+ };
96
116
  // segments
97
117
  Datasource.prototype.listSegments = function (segmentsList) {
98
118
  var segments = this.listEntities("segment");
@@ -1 +1 @@
1
- {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/datasource/datasource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/datasource/datasource.ts"],"names":[],"mappings":"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"}
package/lib/linter.d.ts CHANGED
@@ -6,6 +6,6 @@ export declare function getConditionsJoiSchema(projectConfig: ProjectConfig, ava
6
6
  export declare function getSegmentJoiSchema(projectConfig: ProjectConfig, conditionsJoiSchema: any): Joi.ObjectSchema<any>;
7
7
  export declare function getGroupJoiSchema(projectConfig: ProjectConfig, datasource: Datasource, availableFeatureKeys: string[]): Joi.ObjectSchema<any>;
8
8
  export declare function getFeatureJoiSchema(projectConfig: ProjectConfig, conditionsJoiSchema: any, availableSegmentKeys: string[], availableFeatureKeys: string[]): Joi.ObjectSchema<any>;
9
- export declare function getTestsJoiSchema(projectConfig: ProjectConfig, availableFeatureKeys: string[], availableSegmentKeys: string[]): Joi.ObjectSchema<any>;
9
+ export declare function getTestsJoiSchema(projectConfig: ProjectConfig, availableFeatureKeys: string[], availableSegmentKeys: string[]): Joi.AlternativesSchema<any>;
10
10
  export declare function printJoiError(e: Joi.ValidationError): void;
11
11
  export declare function lintProject(projectConfig: ProjectConfig): Promise<boolean>;
package/lib/linter.js CHANGED
@@ -251,6 +251,7 @@ function getFeatureJoiSchema(projectConfig, conditionsJoiSchema, availableSegmen
251
251
  .items(Joi.object({
252
252
  key: Joi.string().disallow("variation"),
253
253
  type: Joi.string().valid("string", "integer", "boolean", "double", "array", "object", "json"),
254
+ description: Joi.string().optional(),
254
255
  defaultValue: variableValueJoiSchema, // @TODO: make it stricter based on `type`
255
256
  }))
256
257
  .unique("key"),
@@ -287,41 +288,31 @@ function getFeatureJoiSchema(projectConfig, conditionsJoiSchema, availableSegmen
287
288
  }
288
289
  exports.getFeatureJoiSchema = getFeatureJoiSchema;
289
290
  function getTestsJoiSchema(projectConfig, availableFeatureKeys, availableSegmentKeys) {
290
- var _a, _b, _c, _d;
291
- var testsJoiSchema = Joi.object({
292
- tests: Joi.array().items(Joi.object({
291
+ var _a, _b, _c;
292
+ var segmentTestJoiSchema = Joi.object({
293
+ segment: (_a = Joi.string())
294
+ .valid.apply(_a, availableSegmentKeys).required(),
295
+ assertions: Joi.array().items(Joi.object({
293
296
  description: Joi.string().optional(),
294
- tag: (_a = Joi.string())
295
- .valid.apply(_a, projectConfig.tags).optional(),
296
- environment: (_b = Joi.string())
297
- .valid.apply(_b, projectConfig.environments).optional(),
298
- features: Joi.array()
299
- .items(Joi.object({
300
- key: (_c = Joi.string())
301
- .valid.apply(_c, availableFeatureKeys).required(),
302
- assertions: Joi.array().items(Joi.object({
303
- description: Joi.string().optional(),
304
- at: Joi.number().precision(3).min(0).max(100),
305
- context: Joi.object(),
306
- // @TODO: one or all below
307
- expectedToBeEnabled: Joi.boolean().required(),
308
- expectedVariation: Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()),
309
- expectedVariables: Joi.object(),
310
- })),
311
- }))
312
- .optional(),
313
- segments: Joi.array().items(Joi.object({
314
- key: (_d = Joi.string())
315
- .valid.apply(_d, availableSegmentKeys).required(),
316
- assertions: Joi.array().items(Joi.object({
317
- description: Joi.string().optional(),
318
- context: Joi.object(),
319
- expectedToMatch: Joi.boolean(),
320
- })),
321
- })),
297
+ context: Joi.object(),
298
+ expectedToMatch: Joi.boolean(),
299
+ })),
300
+ });
301
+ var featureTestJoiSchema = Joi.object({
302
+ feature: (_b = Joi.string())
303
+ .valid.apply(_b, availableFeatureKeys).required(),
304
+ assertions: Joi.array().items(Joi.object({
305
+ description: Joi.string().optional(),
306
+ at: Joi.number().precision(3).min(0).max(100),
307
+ environment: (_c = Joi.string()).valid.apply(_c, projectConfig.environments),
308
+ context: Joi.object(),
309
+ // @TODO: one or all below
310
+ expectedToBeEnabled: Joi.boolean().required(),
311
+ expectedVariation: Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()),
312
+ expectedVariables: Joi.object(),
322
313
  })),
323
314
  });
324
- return testsJoiSchema;
315
+ return Joi.alternatives().try(segmentTestJoiSchema, featureTestJoiSchema);
325
316
  }
326
317
  exports.getTestsJoiSchema = getTestsJoiSchema;
327
318
  function printJoiError(e) {
package/lib/linter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../src/linter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../src/linter.ts"],"names":[],"mappings":"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"}
package/lib/tester.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.testProject = exports.checkIfObjectsAreEqual = exports.checkIfArraysAreEqual = void 0;
4
4
  var fs = require("fs");
5
5
  var sdk_1 = require("@featurevisor/sdk");
6
+ var config_1 = require("./config");
6
7
  var builder_1 = require("./builder");
7
8
  var datasource_1 = require("./datasource/datasource");
8
9
  // @TODO: make it better
@@ -52,108 +53,105 @@ function testProject(rootDirectoryPath, projectConfig) {
52
53
  hasError = true;
53
54
  return hasError;
54
55
  }
55
- for (var _i = 0, testFiles_1 = testFiles; _i < testFiles_1.length; _i++) {
56
- var testFile = testFiles_1[_i];
56
+ var _loop_1 = function (testFile) {
57
57
  var testFilePath = datasource.getEntityPath("test", testFile);
58
58
  console.log(" => Testing: ".concat(testFilePath.replace(rootDirectoryPath, "")));
59
- var parsed = datasource.readTest(testFile);
60
- parsed.tests.forEach(function (test) {
61
- if (test.segments) {
62
- // segment testing
63
- test.segments.forEach(function (segment) {
64
- var segmentKey = segment.key;
65
- console.log(" => Segment \"".concat(segmentKey, "\":"));
66
- var segmentExists = datasource.entityExists("segment", segmentKey);
67
- if (!segmentExists) {
68
- console.error(" => Segment does not exist: ".concat(segmentKey));
69
- hasError = true;
70
- return;
71
- }
72
- var parsedSegment = datasource.readSegment(segmentKey);
73
- var conditions = parsedSegment.conditions;
74
- segment.assertions.forEach(function (assertion, aIndex) {
75
- var description = assertion.description || "#".concat(aIndex + 1);
76
- console.log(" => Assertion #".concat(aIndex + 1, ": ").concat(description));
77
- var expected = assertion.expectedToMatch;
78
- var actual = (0, sdk_1.allConditionsAreMatched)(conditions, assertion.context);
79
- if (actual !== expected) {
80
- hasError = true;
81
- console.error(" Segment failed: expected \"".concat(expected, "\", got \"").concat(actual, "\""));
82
- }
83
- });
84
- });
59
+ var test_1 = datasource.readTest(testFile);
60
+ if (test_1.segment) {
61
+ // segment testing
62
+ var testSegment = test_1;
63
+ var segmentKey = testSegment.segment;
64
+ console.log(" => Segment \"".concat(segmentKey, "\":"));
65
+ var segmentExists = datasource.entityExists("segment", segmentKey);
66
+ if (!segmentExists) {
67
+ console.error(" => Segment does not exist: ".concat(segmentKey));
68
+ hasError = true;
69
+ return "continue";
85
70
  }
86
- else if (test.environment && test.tag && test.features) {
87
- // feature testing
88
- var datafilePath = (0, builder_1.getDatafilePath)(projectConfig, test.environment, test.tag);
89
- if (!fs.existsSync(datafilePath)) {
90
- console.error(" => Datafile does not exist: ".concat(datafilePath));
71
+ var parsedSegment = datasource.readSegment(segmentKey);
72
+ var conditions_1 = parsedSegment.conditions;
73
+ testSegment.assertions.forEach(function (assertion, aIndex) {
74
+ var description = assertion.description || "#".concat(aIndex + 1);
75
+ console.log(" => Assertion #".concat(aIndex + 1, ": ").concat(description));
76
+ var expected = assertion.expectedToMatch;
77
+ var actual = (0, sdk_1.allConditionsAreMatched)(conditions_1, assertion.context);
78
+ if (actual !== expected) {
91
79
  hasError = true;
92
- return;
80
+ console.error(" Segment failed: expected \"".concat(expected, "\", got \"").concat(actual, "\""));
93
81
  }
94
- var datafileContent = JSON.parse(fs.readFileSync(datafilePath, "utf8"));
95
- var currentAt_1 = 0;
96
- var sdk_2 = (0, sdk_1.createInstance)({
82
+ });
83
+ }
84
+ else if (test_1.feature) {
85
+ // feature testing
86
+ var testFeature_1 = test_1;
87
+ var featureKey_1 = testFeature_1.feature;
88
+ console.log(" => Feature \"".concat(featureKey_1, "\":"));
89
+ testFeature_1.assertions.forEach(function (assertion, aIndex) {
90
+ var description = assertion.description || "at ".concat(assertion.at, "%");
91
+ console.log(" => Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(description));
92
+ var featuresToInclude = Array.from(datasource.getRequiredFeaturesChain(testFeature_1.feature));
93
+ var datafileContent = (0, builder_1.buildDatafile)(projectConfig, datasource, {
94
+ schemaVersion: config_1.SCHEMA_VERSION,
95
+ revision: "testing",
96
+ environment: assertion.environment,
97
+ features: featuresToInclude,
98
+ }, JSON.parse(fs.readFileSync((0, builder_1.getExistingStateFilePath)(projectConfig, assertion.environment), "utf8")));
99
+ var sdk = (0, sdk_1.createInstance)({
97
100
  datafile: datafileContent,
98
101
  configureBucketValue: function () {
99
- return currentAt_1;
102
+ return assertion.at * (sdk_1.MAX_BUCKETED_NUMBER / 100);
100
103
  },
101
104
  // logger: createLogger({
102
105
  // levels: ["debug", "info", "warn", "error"],
103
106
  // }),
104
107
  });
105
- test.features.forEach(function (feature) {
106
- var featureKey = feature.key;
107
- console.log(" => Feature \"".concat(featureKey, "\" in environment \"").concat(test.environment, "\":"));
108
- feature.assertions.forEach(function (assertion, aIndex) {
109
- var description = assertion.description || "at ".concat(assertion.at, "%");
110
- console.log(" => Assertion #".concat(aIndex + 1, ": ").concat(description));
111
- currentAt_1 = assertion.at * (sdk_1.MAX_BUCKETED_NUMBER / 100);
112
- // isEnabled
113
- if ("expectedToBeEnabled" in assertion) {
114
- var isEnabled = sdk_2.isEnabled(featureKey, assertion.context);
115
- if (isEnabled !== assertion.expectedToBeEnabled) {
116
- hasError = true;
117
- console.error(" isEnabled failed: expected \"".concat(assertion.expectedToBeEnabled, "\", got \"").concat(isEnabled, "\""));
118
- }
108
+ // isEnabled
109
+ if ("expectedToBeEnabled" in assertion) {
110
+ var isEnabled = sdk.isEnabled(featureKey_1, assertion.context);
111
+ if (isEnabled !== assertion.expectedToBeEnabled) {
112
+ hasError = true;
113
+ console.error(" isEnabled failed: expected \"".concat(assertion.expectedToBeEnabled, "\", got \"").concat(isEnabled, "\""));
114
+ }
115
+ }
116
+ // variation
117
+ if ("expectedVariation" in assertion) {
118
+ var variation = sdk.getVariation(featureKey_1, assertion.context);
119
+ if (variation !== assertion.expectedVariation) {
120
+ hasError = true;
121
+ console.error(" Variation failed: expected \"".concat(assertion.expectedVariation, "\", got \"").concat(variation, "\""));
122
+ }
123
+ }
124
+ // variables
125
+ if (typeof assertion.expectedVariables === "object") {
126
+ Object.keys(assertion.expectedVariables).forEach(function (variableKey) {
127
+ var expectedValue = assertion.expectedVariables && assertion.expectedVariables[variableKey];
128
+ var actualValue = sdk.getVariable(featureKey_1, variableKey, assertion.context);
129
+ var passed;
130
+ if (typeof expectedValue === "object") {
131
+ passed = checkIfObjectsAreEqual(expectedValue, actualValue);
119
132
  }
120
- // variation
121
- if ("expectedVariation" in assertion) {
122
- var variation = sdk_2.getVariation(featureKey, assertion.context);
123
- if (variation !== assertion.expectedVariation) {
124
- hasError = true;
125
- console.error(" Variation failed: expected \"".concat(assertion.expectedVariation, "\", got \"").concat(variation, "\""));
126
- }
133
+ else if (Array.isArray(expectedValue)) {
134
+ passed = checkIfArraysAreEqual(expectedValue, actualValue);
127
135
  }
128
- // variables
129
- if (typeof assertion.expectedVariables === "object") {
130
- Object.keys(assertion.expectedVariables).forEach(function (variableKey) {
131
- var expectedValue = assertion.expectedVariables && assertion.expectedVariables[variableKey];
132
- var actualValue = sdk_2.getVariable(featureKey, variableKey, assertion.context);
133
- var passed;
134
- if (typeof expectedValue === "object") {
135
- passed = checkIfObjectsAreEqual(expectedValue, actualValue);
136
- }
137
- else if (Array.isArray(expectedValue)) {
138
- passed = checkIfArraysAreEqual(expectedValue, actualValue);
139
- }
140
- else {
141
- passed = expectedValue === actualValue;
142
- }
143
- if (!passed) {
144
- hasError = true;
145
- console.error(" Variable \"".concat(variableKey, "\" failed: expected ").concat(JSON.stringify(expectedValue), ", got \"").concat(JSON.stringify(actualValue), "\""));
146
- }
147
- });
136
+ else {
137
+ passed = expectedValue === actualValue;
138
+ }
139
+ if (!passed) {
140
+ hasError = true;
141
+ console.error(" Variable \"".concat(variableKey, "\" failed: expected ").concat(JSON.stringify(expectedValue), ", got \"").concat(JSON.stringify(actualValue), "\""));
148
142
  }
149
143
  });
150
- });
151
- }
152
- else {
153
- console.error(" => Invalid test: ".concat(JSON.stringify(test)));
154
- hasError = true;
155
- }
156
- });
144
+ }
145
+ });
146
+ }
147
+ else {
148
+ console.error(" => Invalid test: ".concat(JSON.stringify(test_1)));
149
+ hasError = true;
150
+ }
151
+ };
152
+ for (var _i = 0, testFiles_1 = testFiles; _i < testFiles_1.length; _i++) {
153
+ var testFile = testFiles_1[_i];
154
+ _loop_1(testFile);
157
155
  }
158
156
  return hasError;
159
157
  }
package/lib/tester.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tester.js","sourceRoot":"","sources":["../src/tester.ts"],"names":[],"mappings":";;;AAAA,uBAAyB;AAGzB,yCAAiG;AAGjG,qCAA4C;AAC5C,sDAAqD;AAErD,wBAAwB;AACxB,SAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC1C,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,sDAcC;AAED,SAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAClD,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;QAC5B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACnD,OAAO,KAAK,CAAC;KACd;IAED,KAAK,IAAM,GAAG,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AApBD,wDAoBC;AAED,SAAgB,WAAW,CAAC,iBAAyB,EAAE,aAA4B;IACjF,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,aAAa,CAAC,CAAC;IAEjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,0CAAmC,aAAa,CAAC,kBAAkB,CAAE,CAAC,CAAC;QACrF,QAAQ,GAAG,IAAI,CAAC;QAEhB,OAAO,QAAQ,CAAC;KACjB;IAED,IAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;IAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,6BAAsB,aAAa,CAAC,kBAAkB,CAAE,CAAC,CAAC;QACxE,QAAQ,GAAG,IAAI,CAAC;QAEhB,OAAO,QAAQ,CAAC;KACjB;IAED,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;QAA7B,IAAM,QAAQ,kBAAA;QACjB,IAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,wBAAiB,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC;QAE5E,IAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,kBAAkB;gBAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;oBACrC,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBAE/B,OAAO,CAAC,GAAG,CAAC,4BAAoB,UAAU,QAAI,CAAC,CAAC;oBAEhD,IAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBAErE,IAAI,CAAC,aAAa,EAAE;wBAClB,OAAO,CAAC,KAAK,CAAC,6CAAsC,UAAU,CAAE,CAAC,CAAC;wBAClE,QAAQ,GAAG,IAAI,CAAC;wBAEhB,OAAO;qBACR;oBAED,IAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBACzD,IAAM,UAAU,GAAG,aAAa,CAAC,UAAqC,CAAC;oBAEvE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE,MAAM;wBACpD,IAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,WAAI,MAAM,GAAG,CAAC,CAAE,CAAC;wBAE9D,OAAO,CAAC,GAAG,CAAC,gCAAyB,MAAM,GAAG,CAAC,eAAK,WAAW,CAAE,CAAC,CAAC;wBAEnE,IAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC;wBAC3C,IAAM,MAAM,GAAG,IAAA,6BAAuB,EAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;wBAEtE,IAAI,MAAM,KAAK,QAAQ,EAAE;4BACvB,QAAQ,GAAG,IAAI,CAAC;4BAEhB,OAAO,CAAC,KAAK,CAAC,gDAAwC,QAAQ,uBAAW,MAAM,OAAG,CAAC,CAAC;yBACrF;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACxD,kBAAkB;gBAClB,IAAM,YAAY,GAAG,IAAA,yBAAe,EAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEhF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,2CAAoC,YAAY,CAAE,CAAC,CAAC;oBAClE,QAAQ,GAAG,IAAI,CAAC;oBAEhB,OAAO;iBACR;gBAED,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CACnB,CAAC;gBAErB,IAAI,WAAS,GAAG,CAAC,CAAC;gBAElB,IAAM,KAAG,GAAG,IAAA,oBAAc,EAAC;oBACzB,QAAQ,EAAE,eAAe;oBACzB,oBAAoB,EAAE;wBACpB,OAAO,WAAS,CAAC;oBACnB,CAAC;oBACD,yBAAyB;oBACzB,gDAAgD;oBAChD,MAAM;iBACP,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,OAAO;oBACrC,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBAE/B,OAAO,CAAC,GAAG,CAAC,4BAAoB,UAAU,iCAAqB,IAAI,CAAC,WAAW,QAAI,CAAC,CAAC;oBAErF,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE,MAAM;wBACpD,IAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,aAAM,SAAS,CAAC,EAAE,MAAG,CAAC;wBAEnE,OAAO,CAAC,GAAG,CAAC,gCAAyB,MAAM,GAAG,CAAC,eAAK,WAAW,CAAE,CAAC,CAAC;wBAEnE,WAAS,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,yBAAmB,GAAG,GAAG,CAAC,CAAC;wBAEvD,YAAY;wBACZ,IAAI,qBAAqB,IAAI,SAAS,EAAE;4BACtC,IAAM,SAAS,GAAG,KAAG,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;4BAE/D,IAAI,SAAS,KAAK,SAAS,CAAC,mBAAmB,EAAE;gCAC/C,QAAQ,GAAG,IAAI,CAAC;gCAEhB,OAAO,CAAC,KAAK,CACX,kDAA0C,SAAS,CAAC,mBAAmB,uBAAW,SAAS,OAAG,CAC/F,CAAC;6BACH;yBACF;wBAED,YAAY;wBACZ,IAAI,mBAAmB,IAAI,SAAS,EAAE;4BACpC,IAAM,SAAS,GAAG,KAAG,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;4BAElE,IAAI,SAAS,KAAK,SAAS,CAAC,iBAAiB,EAAE;gCAC7C,QAAQ,GAAG,IAAI,CAAC;gCAEhB,OAAO,CAAC,KAAK,CACX,kDAA0C,SAAS,CAAC,iBAAiB,uBAAW,SAAS,OAAG,CAC7F,CAAC;6BACH;yBACF;wBAED,YAAY;wBACZ,IAAI,OAAO,SAAS,CAAC,iBAAiB,KAAK,QAAQ,EAAE;4BACnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW;gCACpE,IAAM,aAAa,GACjB,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gCAC1E,IAAM,WAAW,GAAG,KAAG,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gCAEhF,IAAI,MAAM,CAAC;gCAEX,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;oCACrC,MAAM,GAAG,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;iCAC7D;qCAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;oCACvC,MAAM,GAAG,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;iCAC5D;qCAAM;oCACL,MAAM,GAAG,aAAa,KAAK,WAAW,CAAC;iCACxC;gCAED,IAAI,CAAC,MAAM,EAAE;oCACX,QAAQ,GAAG,IAAI,CAAC;oCAEhB,OAAO,CAAC,KAAK,CACX,gCAAwB,WAAW,iCAAsB,IAAI,CAAC,SAAS,CACrE,aAAa,CACd,qBAAU,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAG,CAC1C,CAAC;iCACH;4BACH,CAAC,CAAC,CAAC;yBACJ;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,gCAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;gBAC/D,QAAQ,GAAG,IAAI,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AArKD,kCAqKC"}
1
+ {"version":3,"file":"tester.js","sourceRoot":"","sources":["../src/tester.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@featurevisor/core",
3
- "version": "0.49.0",
3
+ "version": "0.51.0",
4
4
  "description": "Core package of Featurevisor for Node.js usage",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -44,9 +44,9 @@
44
44
  },
45
45
  "license": "MIT",
46
46
  "dependencies": {
47
- "@featurevisor/sdk": "^0.49.0",
48
- "@featurevisor/site": "^0.49.0",
49
- "@featurevisor/types": "^0.49.0",
47
+ "@featurevisor/sdk": "^0.51.0",
48
+ "@featurevisor/site": "^0.51.0",
49
+ "@featurevisor/types": "^0.51.0",
50
50
  "axios": "^1.3.4",
51
51
  "joi": "^17.8.3",
52
52
  "js-yaml": "^4.1.0",
@@ -57,5 +57,5 @@
57
57
  "@types/js-yaml": "^4.0.5",
58
58
  "@types/tar": "^6.1.4"
59
59
  },
60
- "gitHead": "85a73383e4efea6415af82360d51e884a64cf370"
60
+ "gitHead": "6b1026df520761e2b7dd39e8414e222f0ab0f24d"
61
61
  }
package/src/builder.ts CHANGED
@@ -33,7 +33,8 @@ export interface BuildOptions {
33
33
  schemaVersion: string;
34
34
  revision: string;
35
35
  environment: string;
36
- tag: string;
36
+ tag?: string;
37
+ features?: FeatureKey[];
37
38
  }
38
39
 
39
40
  export function getDatafilePath(
@@ -140,7 +141,11 @@ export function buildDatafile(
140
141
  continue;
141
142
  }
142
143
 
143
- if (parsedFeature.tags.indexOf(options.tag) === -1) {
144
+ if (options.tag && parsedFeature.tags.indexOf(options.tag) === -1) {
145
+ continue;
146
+ }
147
+
148
+ if (options.features && options.features.indexOf(featureKey) === -1) {
144
149
  continue;
145
150
  }
146
151
 
@@ -1,7 +1,15 @@
1
1
  import * as path from "path";
2
2
  import * as fs from "fs";
3
3
 
4
- import { Tag, ParsedFeature, Segment, Attribute, Group, Spec } from "@featurevisor/types";
4
+ import {
5
+ Tag,
6
+ ParsedFeature,
7
+ Segment,
8
+ Attribute,
9
+ Group,
10
+ FeatureKey,
11
+ Test,
12
+ } from "@featurevisor/types";
5
13
 
6
14
  import { ProjectConfig } from "../config";
7
15
  import { parsers } from "./parsers";
@@ -115,6 +123,32 @@ export class Datasource {
115
123
  return this.parseEntity<ParsedFeature>("feature", featureKey);
116
124
  }
117
125
 
126
+ getRequiredFeaturesChain(featureKey: FeatureKey, chain = new Set<FeatureKey>()): Set<FeatureKey> {
127
+ chain.add(featureKey);
128
+
129
+ if (!this.entityExists("feature", featureKey)) {
130
+ throw new Error(`Feature not found: ${featureKey}`);
131
+ }
132
+
133
+ const feature = this.readFeature(featureKey);
134
+
135
+ if (!feature.required) {
136
+ return chain;
137
+ }
138
+
139
+ feature.required.forEach((r) => {
140
+ const requiredKey = typeof r === "string" ? r : r.key;
141
+
142
+ if (chain.has(requiredKey)) {
143
+ throw new Error(`Circular dependency detected: ${chain.toString()}`);
144
+ }
145
+
146
+ this.getRequiredFeaturesChain(requiredKey, chain);
147
+ });
148
+
149
+ return chain;
150
+ }
151
+
118
152
  // segments
119
153
  listSegments(segmentsList?: string[]) {
120
154
  const segments = this.listEntities("segment");
@@ -180,6 +214,6 @@ export class Datasource {
180
214
  }
181
215
 
182
216
  readTest(testKey: string) {
183
- return this.parseEntity<Spec>("test", testKey);
217
+ return this.parseEntity<Test>("test", testKey);
184
218
  }
185
219
  }
package/src/linter.ts CHANGED
@@ -323,6 +323,7 @@ export function getFeatureJoiSchema(
323
323
  "object",
324
324
  "json",
325
325
  ),
326
+ description: Joi.string().optional(),
326
327
  defaultValue: variableValueJoiSchema, // @TODO: make it stricter based on `type`
327
328
  }),
328
329
  )
@@ -376,60 +377,39 @@ export function getTestsJoiSchema(
376
377
  availableFeatureKeys: string[],
377
378
  availableSegmentKeys: string[],
378
379
  ) {
379
- const testsJoiSchema = Joi.object({
380
- tests: Joi.array().items(
380
+ const segmentTestJoiSchema = Joi.object({
381
+ segment: Joi.string()
382
+ .valid(...availableSegmentKeys)
383
+ .required(),
384
+ assertions: Joi.array().items(
381
385
  Joi.object({
382
386
  description: Joi.string().optional(),
383
- tag: Joi.string()
384
- .valid(...projectConfig.tags)
385
- .optional(),
386
- environment: Joi.string()
387
- .valid(...projectConfig.environments)
388
- .optional(),
389
- features: Joi.array()
390
- .items(
391
- Joi.object({
392
- key: Joi.string()
393
- .valid(...availableFeatureKeys)
394
- .required(),
395
- assertions: Joi.array().items(
396
- Joi.object({
397
- description: Joi.string().optional(),
398
- at: Joi.number().precision(3).min(0).max(100),
399
- context: Joi.object(),
400
-
401
- // @TODO: one or all below
402
- expectedToBeEnabled: Joi.boolean().required(),
403
- expectedVariation: Joi.alternatives().try(
404
- Joi.string(),
405
- Joi.number(),
406
- Joi.boolean(),
407
- ),
408
- expectedVariables: Joi.object(),
409
- }),
410
- ),
411
- }),
412
- )
413
- .optional(),
414
- segments: Joi.array().items(
415
- Joi.object({
416
- key: Joi.string()
417
- .valid(...availableSegmentKeys)
418
- .required(),
419
- assertions: Joi.array().items(
420
- Joi.object({
421
- description: Joi.string().optional(),
422
- context: Joi.object(),
423
- expectedToMatch: Joi.boolean(),
424
- }),
425
- ),
426
- }),
427
- ),
387
+ context: Joi.object(),
388
+ expectedToMatch: Joi.boolean(),
389
+ }),
390
+ ),
391
+ });
392
+
393
+ const featureTestJoiSchema = Joi.object({
394
+ feature: Joi.string()
395
+ .valid(...availableFeatureKeys)
396
+ .required(),
397
+ assertions: Joi.array().items(
398
+ Joi.object({
399
+ description: Joi.string().optional(),
400
+ at: Joi.number().precision(3).min(0).max(100),
401
+ environment: Joi.string().valid(...projectConfig.environments),
402
+ context: Joi.object(),
403
+
404
+ // @TODO: one or all below
405
+ expectedToBeEnabled: Joi.boolean().required(),
406
+ expectedVariation: Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()),
407
+ expectedVariables: Joi.object(),
428
408
  }),
429
409
  ),
430
410
  });
431
411
 
432
- return testsJoiSchema;
412
+ return Joi.alternatives().try(segmentTestJoiSchema, featureTestJoiSchema);
433
413
  }
434
414
 
435
415
  export function printJoiError(e: Joi.ValidationError) {
package/src/tester.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as fs from "fs";
2
2
 
3
- import { DatafileContent, Condition } from "@featurevisor/types";
3
+ import { Condition, ExistingState, TestSegment, TestFeature } from "@featurevisor/types";
4
4
  import { createInstance, allConditionsAreMatched, MAX_BUCKETED_NUMBER } from "@featurevisor/sdk";
5
5
 
6
- import { ProjectConfig } from "./config";
7
- import { getDatafilePath } from "./builder";
6
+ import { ProjectConfig, SCHEMA_VERSION } from "./config";
7
+ import { getExistingStateFilePath, buildDatafile } from "./builder";
8
8
  import { Datasource } from "./datasource/datasource";
9
9
 
10
10
  // @TODO: make it better
@@ -71,143 +71,142 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
71
71
 
72
72
  console.log(` => Testing: ${testFilePath.replace(rootDirectoryPath, "")}`);
73
73
 
74
- const parsed = datasource.readTest(testFile);
74
+ const test = datasource.readTest(testFile);
75
75
 
76
- parsed.tests.forEach(function (test) {
77
- if (test.segments) {
78
- // segment testing
79
- test.segments.forEach(function (segment) {
80
- const segmentKey = segment.key;
76
+ if ((test as TestSegment).segment) {
77
+ // segment testing
78
+ const testSegment = test as TestSegment;
79
+ const segmentKey = testSegment.segment;
81
80
 
82
- console.log(` => Segment "${segmentKey}":`);
81
+ console.log(` => Segment "${segmentKey}":`);
83
82
 
84
- const segmentExists = datasource.entityExists("segment", segmentKey);
83
+ const segmentExists = datasource.entityExists("segment", segmentKey);
85
84
 
86
- if (!segmentExists) {
87
- console.error(` => Segment does not exist: ${segmentKey}`);
88
- hasError = true;
89
-
90
- return;
91
- }
85
+ if (!segmentExists) {
86
+ console.error(` => Segment does not exist: ${segmentKey}`);
87
+ hasError = true;
92
88
 
93
- const parsedSegment = datasource.readSegment(segmentKey);
94
- const conditions = parsedSegment.conditions as Condition | Condition[];
89
+ continue;
90
+ }
95
91
 
96
- segment.assertions.forEach(function (assertion, aIndex) {
97
- const description = assertion.description || `#${aIndex + 1}`;
92
+ const parsedSegment = datasource.readSegment(segmentKey);
93
+ const conditions = parsedSegment.conditions as Condition | Condition[];
98
94
 
99
- console.log(` => Assertion #${aIndex + 1}: ${description}`);
95
+ testSegment.assertions.forEach(function (assertion, aIndex) {
96
+ const description = assertion.description || `#${aIndex + 1}`;
100
97
 
101
- const expected = assertion.expectedToMatch;
102
- const actual = allConditionsAreMatched(conditions, assertion.context);
98
+ console.log(` => Assertion #${aIndex + 1}: ${description}`);
103
99
 
104
- if (actual !== expected) {
105
- hasError = true;
100
+ const expected = assertion.expectedToMatch;
101
+ const actual = allConditionsAreMatched(conditions, assertion.context);
106
102
 
107
- console.error(` Segment failed: expected "${expected}", got "${actual}"`);
108
- }
109
- });
110
- });
111
- } else if (test.environment && test.tag && test.features) {
112
- // feature testing
113
- const datafilePath = getDatafilePath(projectConfig, test.environment, test.tag);
114
-
115
- if (!fs.existsSync(datafilePath)) {
116
- console.error(` => Datafile does not exist: ${datafilePath}`);
103
+ if (actual !== expected) {
117
104
  hasError = true;
118
105
 
119
- return;
106
+ console.error(` Segment failed: expected "${expected}", got "${actual}"`);
120
107
  }
121
-
122
- const datafileContent = JSON.parse(
123
- fs.readFileSync(datafilePath, "utf8"),
124
- ) as DatafileContent;
125
-
126
- let currentAt = 0;
108
+ });
109
+ } else if ((test as TestFeature).feature) {
110
+ // feature testing
111
+ const testFeature = test as TestFeature;
112
+ const featureKey = testFeature.feature;
113
+
114
+ console.log(` => Feature "${featureKey}":`);
115
+
116
+ testFeature.assertions.forEach(function (assertion, aIndex) {
117
+ const description = assertion.description || `at ${assertion.at}%`;
118
+
119
+ console.log(
120
+ ` => Assertion #${aIndex + 1}: (${assertion.environment}) ${description}`,
121
+ );
122
+
123
+ const featuresToInclude = Array.from(
124
+ datasource.getRequiredFeaturesChain(testFeature.feature),
125
+ );
126
+
127
+ const datafileContent = buildDatafile(
128
+ projectConfig,
129
+ datasource,
130
+ {
131
+ schemaVersion: SCHEMA_VERSION,
132
+ revision: "testing",
133
+ environment: assertion.environment,
134
+ features: featuresToInclude,
135
+ },
136
+ JSON.parse(
137
+ fs.readFileSync(getExistingStateFilePath(projectConfig, assertion.environment), "utf8"),
138
+ ) as ExistingState,
139
+ );
127
140
 
128
141
  const sdk = createInstance({
129
142
  datafile: datafileContent,
130
143
  configureBucketValue: () => {
131
- return currentAt;
144
+ return assertion.at * (MAX_BUCKETED_NUMBER / 100);
132
145
  },
133
146
  // logger: createLogger({
134
147
  // levels: ["debug", "info", "warn", "error"],
135
148
  // }),
136
149
  });
137
150
 
138
- test.features.forEach(function (feature) {
139
- const featureKey = feature.key;
140
-
141
- console.log(` => Feature "${featureKey}" in environment "${test.environment}":`);
151
+ // isEnabled
152
+ if ("expectedToBeEnabled" in assertion) {
153
+ const isEnabled = sdk.isEnabled(featureKey, assertion.context);
142
154
 
143
- feature.assertions.forEach(function (assertion, aIndex) {
144
- const description = assertion.description || `at ${assertion.at}%`;
155
+ if (isEnabled !== assertion.expectedToBeEnabled) {
156
+ hasError = true;
145
157
 
146
- console.log(` => Assertion #${aIndex + 1}: ${description}`);
158
+ console.error(
159
+ ` isEnabled failed: expected "${assertion.expectedToBeEnabled}", got "${isEnabled}"`,
160
+ );
161
+ }
162
+ }
147
163
 
148
- currentAt = assertion.at * (MAX_BUCKETED_NUMBER / 100);
164
+ // variation
165
+ if ("expectedVariation" in assertion) {
166
+ const variation = sdk.getVariation(featureKey, assertion.context);
149
167
 
150
- // isEnabled
151
- if ("expectedToBeEnabled" in assertion) {
152
- const isEnabled = sdk.isEnabled(featureKey, assertion.context);
168
+ if (variation !== assertion.expectedVariation) {
169
+ hasError = true;
153
170
 
154
- if (isEnabled !== assertion.expectedToBeEnabled) {
155
- hasError = true;
171
+ console.error(
172
+ ` Variation failed: expected "${assertion.expectedVariation}", got "${variation}"`,
173
+ );
174
+ }
175
+ }
156
176
 
157
- console.error(
158
- ` isEnabled failed: expected "${assertion.expectedToBeEnabled}", got "${isEnabled}"`,
159
- );
160
- }
177
+ // variables
178
+ if (typeof assertion.expectedVariables === "object") {
179
+ Object.keys(assertion.expectedVariables).forEach(function (variableKey) {
180
+ const expectedValue =
181
+ assertion.expectedVariables && assertion.expectedVariables[variableKey];
182
+ const actualValue = sdk.getVariable(featureKey, variableKey, assertion.context);
183
+
184
+ let passed;
185
+
186
+ if (typeof expectedValue === "object") {
187
+ passed = checkIfObjectsAreEqual(expectedValue, actualValue);
188
+ } else if (Array.isArray(expectedValue)) {
189
+ passed = checkIfArraysAreEqual(expectedValue, actualValue);
190
+ } else {
191
+ passed = expectedValue === actualValue;
161
192
  }
162
193
 
163
- // variation
164
- if ("expectedVariation" in assertion) {
165
- const variation = sdk.getVariation(featureKey, assertion.context);
166
-
167
- if (variation !== assertion.expectedVariation) {
168
- hasError = true;
169
-
170
- console.error(
171
- ` Variation failed: expected "${assertion.expectedVariation}", got "${variation}"`,
172
- );
173
- }
174
- }
194
+ if (!passed) {
195
+ hasError = true;
175
196
 
176
- // variables
177
- if (typeof assertion.expectedVariables === "object") {
178
- Object.keys(assertion.expectedVariables).forEach(function (variableKey) {
179
- const expectedValue =
180
- assertion.expectedVariables && assertion.expectedVariables[variableKey];
181
- const actualValue = sdk.getVariable(featureKey, variableKey, assertion.context);
182
-
183
- let passed;
184
-
185
- if (typeof expectedValue === "object") {
186
- passed = checkIfObjectsAreEqual(expectedValue, actualValue);
187
- } else if (Array.isArray(expectedValue)) {
188
- passed = checkIfArraysAreEqual(expectedValue, actualValue);
189
- } else {
190
- passed = expectedValue === actualValue;
191
- }
192
-
193
- if (!passed) {
194
- hasError = true;
195
-
196
- console.error(
197
- ` Variable "${variableKey}" failed: expected ${JSON.stringify(
198
- expectedValue,
199
- )}, got "${JSON.stringify(actualValue)}"`,
200
- );
201
- }
202
- });
197
+ console.error(
198
+ ` Variable "${variableKey}" failed: expected ${JSON.stringify(
199
+ expectedValue,
200
+ )}, got "${JSON.stringify(actualValue)}"`,
201
+ );
203
202
  }
204
203
  });
205
- });
206
- } else {
207
- console.error(` => Invalid test: ${JSON.stringify(test)}`);
208
- hasError = true;
209
- }
210
- });
204
+ }
205
+ });
206
+ } else {
207
+ console.error(` => Invalid test: ${JSON.stringify(test)}`);
208
+ hasError = true;
209
+ }
211
210
  }
212
211
 
213
212
  return hasError;