@featurevisor/core 0.47.7 → 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 +11 -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/lib/site.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"site.js","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"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"}
package/lib/tester.js CHANGED
@@ -2,10 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.testProject = exports.checkIfObjectsAreEqual = exports.checkIfArraysAreEqual = void 0;
4
4
  var fs = require("fs");
5
- var path = require("path");
6
5
  var sdk_1 = require("@featurevisor/sdk");
7
- var utils_1 = require("./utils");
8
6
  var builder_1 = require("./builder");
7
+ var datasource_1 = require("./datasource/datasource");
9
8
  // @TODO: make it better
10
9
  function checkIfArraysAreEqual(a, b) {
11
10
  if (!Array.isArray(a) || !Array.isArray(b)) {
@@ -41,14 +40,13 @@ function checkIfObjectsAreEqual(a, b) {
41
40
  exports.checkIfObjectsAreEqual = checkIfObjectsAreEqual;
42
41
  function testProject(rootDirectoryPath, projectConfig) {
43
42
  var hasError = false;
43
+ var datasource = new datasource_1.Datasource(projectConfig);
44
44
  if (!fs.existsSync(projectConfig.testsDirectoryPath)) {
45
45
  console.error("Tests directory does not exist: ".concat(projectConfig.testsDirectoryPath));
46
46
  hasError = true;
47
47
  return hasError;
48
48
  }
49
- var testFiles = fs
50
- .readdirSync(projectConfig.testsDirectoryPath)
51
- .filter(function (f) { return f.endsWith(".yml"); });
49
+ var testFiles = datasource.listTests();
52
50
  if (testFiles.length === 0) {
53
51
  console.error("No tests found in: ".concat(projectConfig.testsDirectoryPath));
54
52
  hasError = true;
@@ -56,22 +54,22 @@ function testProject(rootDirectoryPath, projectConfig) {
56
54
  }
57
55
  for (var _i = 0, testFiles_1 = testFiles; _i < testFiles_1.length; _i++) {
58
56
  var testFile = testFiles_1[_i];
59
- var testFilePath = path.join(projectConfig.testsDirectoryPath, testFile);
57
+ var testFilePath = datasource.getEntityPath("test", testFile);
60
58
  console.log(" => Testing: ".concat(testFilePath.replace(rootDirectoryPath, "")));
61
- var parsed = (0, utils_1.parseYaml)(fs.readFileSync(testFilePath, "utf8"));
59
+ var parsed = datasource.readTest(testFile);
62
60
  parsed.tests.forEach(function (test) {
63
61
  if (test.segments) {
64
62
  // segment testing
65
63
  test.segments.forEach(function (segment) {
66
64
  var segmentKey = segment.key;
67
65
  console.log(" => Segment \"".concat(segmentKey, "\":"));
68
- var segmentPath = path.join(projectConfig.segmentsDirectoryPath, "".concat(segmentKey, ".yml"));
69
- if (!fs.existsSync(segmentPath)) {
70
- console.error(" => Segment does not exist: ".concat(segmentPath));
66
+ var segmentExists = datasource.entityExists("segment", segmentKey);
67
+ if (!segmentExists) {
68
+ console.error(" => Segment does not exist: ".concat(segmentKey));
71
69
  hasError = true;
72
70
  return;
73
71
  }
74
- var parsedSegment = (0, utils_1.parseYaml)(fs.readFileSync(segmentPath, "utf8"));
72
+ var parsedSegment = datasource.readSegment(segmentKey);
75
73
  var conditions = parsedSegment.conditions;
76
74
  segment.assertions.forEach(function (assertion, aIndex) {
77
75
  var description = assertion.description || "#".concat(aIndex + 1);
package/lib/tester.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tester.js","sourceRoot":"","sources":["../src/tester.ts"],"names":[],"mappings":"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"}
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.47.7",
3
+ "version": "0.48.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.47.7",
48
- "@featurevisor/site": "^0.47.1",
49
- "@featurevisor/types": "^0.47.1",
47
+ "@featurevisor/sdk": "^0.48.0",
48
+ "@featurevisor/site": "^0.48.0",
49
+ "@featurevisor/types": "^0.48.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": "0995af7e2bea55f101f3b4a6606e471e02ecb021"
60
+ "gitHead": "2dd57c60edbdc00ddf418be4877d19f3f45b929e"
61
61
  }
package/src/builder.ts CHANGED
@@ -17,7 +17,6 @@ import {
17
17
  GroupSegment,
18
18
  Condition,
19
19
  ExistingState,
20
- ParsedFeature,
21
20
  FeatureKey,
22
21
  Allocation,
23
22
  EnvironmentKey,
@@ -26,12 +25,9 @@ import {
26
25
  } from "@featurevisor/types";
27
26
 
28
27
  import { SCHEMA_VERSION, ProjectConfig } from "./config";
28
+ import { Datasource } from "./datasource/datasource";
29
29
  import { getTraffic } from "./traffic";
30
- import {
31
- parseYaml,
32
- extractAttributeKeysFromConditions,
33
- extractSegmentKeysFromGroupSegments,
34
- } from "./utils";
30
+ import { extractAttributeKeysFromConditions, extractSegmentKeysFromGroupSegments } from "./utils";
35
31
 
36
32
  export interface BuildOptions {
37
33
  schemaVersion: string;
@@ -64,20 +60,19 @@ interface FeatureRangesResult {
64
60
  featureIsInGroup: { [key: string]: boolean };
65
61
  }
66
62
 
67
- export function getFeatureRanges(projectConfig: ProjectConfig): FeatureRangesResult {
63
+ export function getFeatureRanges(
64
+ projectConfig: ProjectConfig,
65
+ datasource: Datasource,
66
+ ): FeatureRangesResult {
68
67
  const featureRanges = new Map<FeatureKey, Range[]>();
69
68
  const featureIsInGroup = {}; // featureKey => boolean
70
69
 
71
70
  const groups: Group[] = [];
72
71
  if (fs.existsSync(projectConfig.groupsDirectoryPath)) {
73
- const groupFiles = fs
74
- .readdirSync(projectConfig.groupsDirectoryPath)
75
- .filter((f) => f.endsWith(".yml"));
72
+ const groupFiles = datasource.listGroups();
76
73
 
77
- for (const groupFile of groupFiles) {
78
- const groupKey = path.basename(groupFile, ".yml");
79
- const groupFilePath = path.join(projectConfig.groupsDirectoryPath, groupFile);
80
- const parsedGroup = parseYaml(fs.readFileSync(groupFilePath, "utf8")) as Group;
74
+ for (const groupKey of groupFiles) {
75
+ const parsedGroup = datasource.readGroup(groupKey);
81
76
 
82
77
  groups.push({
83
78
  ...parsedGroup,
@@ -115,6 +110,7 @@ export function getFeatureRanges(projectConfig: ProjectConfig): FeatureRangesRes
115
110
 
116
111
  export function buildDatafile(
117
112
  projectConfig: ProjectConfig,
113
+ datasource: Datasource,
118
114
  options: BuildOptions,
119
115
  existingState: ExistingState,
120
116
  ): DatafileContent {
@@ -128,19 +124,17 @@ export function buildDatafile(
128
124
 
129
125
  const segmentKeysUsedByTag = new Set<SegmentKey>();
130
126
  const attributeKeysUsedByTag = new Set<AttributeKey>();
131
- const { featureRanges, featureIsInGroup } = getFeatureRanges(projectConfig);
127
+ const { featureRanges, featureIsInGroup } = getFeatureRanges(projectConfig, datasource);
132
128
 
133
129
  // features
134
130
  const features: Feature[] = [];
135
131
  const featuresDirectory = projectConfig.featuresDirectoryPath;
136
132
 
137
133
  if (fs.existsSync(featuresDirectory)) {
138
- const featureFiles = fs.readdirSync(featuresDirectory).filter((f) => f.endsWith(".yml"));
134
+ const featureFiles = datasource.listFeatures();
139
135
 
140
- for (const featureFile of featureFiles) {
141
- const featureKey = path.basename(featureFile, ".yml") as FeatureKey;
142
- const featureFilePath = path.join(featuresDirectory, featureFile);
143
- const parsedFeature = parseYaml(fs.readFileSync(featureFilePath, "utf8")) as ParsedFeature;
136
+ for (const featureKey of featureFiles) {
137
+ const parsedFeature = datasource.readFeature(featureKey);
144
138
 
145
139
  if (parsedFeature.archived === true) {
146
140
  continue;
@@ -277,12 +271,10 @@ export function buildDatafile(
277
271
  const segmentsDirectory = projectConfig.segmentsDirectoryPath;
278
272
 
279
273
  if (fs.existsSync(segmentsDirectory)) {
280
- const segmentFiles = fs.readdirSync(segmentsDirectory).filter((f) => f.endsWith(".yml"));
274
+ const segmentFiles = datasource.listSegments();
281
275
 
282
- for (const segmentFile of segmentFiles) {
283
- const segmentKey = path.basename(segmentFile, ".yml");
284
- const segmentFilePath = path.join(segmentsDirectory, segmentFile);
285
- const parsedSegment = parseYaml(fs.readFileSync(segmentFilePath, "utf8")) as Segment;
276
+ for (const segmentKey of segmentFiles) {
277
+ const parsedSegment = datasource.readSegment(segmentKey);
286
278
 
287
279
  if (parsedSegment.archived === true) {
288
280
  continue;
@@ -314,12 +306,10 @@ export function buildDatafile(
314
306
  const attributesDirectory = projectConfig.attributesDirectoryPath;
315
307
 
316
308
  if (fs.existsSync(attributesDirectory)) {
317
- const attributeFiles = fs.readdirSync(attributesDirectory).filter((f) => f.endsWith(".yml"));
309
+ const attributeFiles = datasource.listAttributes();
318
310
 
319
- for (const attributeFile of attributeFiles) {
320
- const attributeKey = path.basename(attributeFile, ".yml");
321
- const attributeFilePath = path.join(attributesDirectory, attributeFile);
322
- const parsedAttribute = parseYaml(fs.readFileSync(attributeFilePath, "utf8")) as Attribute;
311
+ for (const attributeKey of attributeFiles) {
312
+ const parsedAttribute = datasource.readAttribute(attributeKey);
323
313
 
324
314
  if (parsedAttribute.archived === true) {
325
315
  continue;
@@ -362,6 +352,7 @@ export function buildProject(
362
352
  const environments = projectConfig.environments;
363
353
 
364
354
  const pkg = require(path.join(rootDirectoryPath, "package.json"));
355
+ const datasource = new Datasource(projectConfig);
365
356
 
366
357
  for (const environment of environments) {
367
358
  console.log(`\nBuilding datafiles for environment: ${environment}`);
@@ -377,6 +368,7 @@ export function buildProject(
377
368
  console.log(`\n => Tag: ${tag}`);
378
369
  const datafileContent = buildDatafile(
379
370
  projectConfig,
371
+ datasource,
380
372
  {
381
373
  schemaVersion: SCHEMA_VERSION,
382
374
  revision: cliOptions.revision || pkg.version,
package/src/config.ts CHANGED
@@ -2,6 +2,8 @@ import * as path from "path";
2
2
 
3
3
  import { BucketBy } from "@featurevisor/types";
4
4
 
5
+ import { Parser } from "./datasource/parsers";
6
+
5
7
  export const FEATURES_DIRECTORY_NAME = "features";
6
8
  export const SEGMENTS_DIRECTORY_NAME = "segments";
7
9
  export const ATTRIBUTES_DIRECTORY_NAME = "attributes";
@@ -21,6 +23,8 @@ export const DEFAULT_BUCKET_BY_ATTRIBUTE = "userId";
21
23
  export const DEFAULT_PRETTY_STATE = false;
22
24
  export const DEFAULT_PRETTY_DATAFILE = false;
23
25
 
26
+ export const DEFAULT_PARSER: Parser = "yml";
27
+
24
28
  export const SCHEMA_VERSION = "1";
25
29
 
26
30
  export interface ProjectConfig {
@@ -34,6 +38,7 @@ export interface ProjectConfig {
34
38
  environments: string[];
35
39
  tags: string[];
36
40
  defaultBucketBy: BucketBy;
41
+ parser: Parser;
37
42
  prettyState: boolean;
38
43
  prettyDatafile: boolean;
39
44
  siteExportDirectoryPath: string;
@@ -55,6 +60,8 @@ export function getProjectConfig(rootDirectoryPath: string): ProjectConfig {
55
60
  tags: DEFAULT_TAGS,
56
61
  defaultBucketBy: "userId",
57
62
 
63
+ parser: DEFAULT_PARSER,
64
+
58
65
  prettyState: DEFAULT_PRETTY_STATE,
59
66
  prettyDatafile: DEFAULT_PRETTY_DATAFILE,
60
67
 
@@ -0,0 +1,185 @@
1
+ import * as path from "path";
2
+ import * as fs from "fs";
3
+
4
+ import { Tag, ParsedFeature, Segment, Attribute, Group, Spec } from "@featurevisor/types";
5
+
6
+ import { ProjectConfig } from "../config";
7
+ import { parsers } from "./parsers";
8
+
9
+ export type EntityType = "feature" | "group" | "segment" | "attribute" | "test";
10
+
11
+ export class Datasource {
12
+ private extension;
13
+ private parse;
14
+
15
+ constructor(private config: ProjectConfig) {
16
+ if (typeof config.parser === "string") {
17
+ // built-in parsers
18
+ if (typeof parsers[config.parser] !== "function") {
19
+ throw new Error(`Invalid parser: ${config.parser}`);
20
+ }
21
+
22
+ this.extension = config.parser;
23
+ this.parse = parsers[config.parser];
24
+ } else if (typeof config.parser === "object") {
25
+ // custom parser
26
+ if (typeof config.parser.extension !== "string") {
27
+ throw new Error(`Invalid parser extension: ${config.parser.extension}`);
28
+ }
29
+
30
+ if (typeof config.parser.parse !== "function") {
31
+ throw new Error(`Invalid parser parse function: ${config.parser.parse}`);
32
+ }
33
+
34
+ this.extension = config.parser.extension;
35
+ this.parse = config.parser.parse;
36
+ } else {
37
+ throw new Error(`Invalid parser: ${config.parser}`);
38
+ }
39
+ }
40
+
41
+ getExtension() {
42
+ return this.extension;
43
+ }
44
+
45
+ /**
46
+ * Common methods
47
+ */
48
+ listEntities(entityType: EntityType): string[] {
49
+ const directoryPath = this.getEntityDirectoryPath(entityType);
50
+
51
+ return fs
52
+ .readdirSync(directoryPath)
53
+ .filter((fileName) => fileName.endsWith(`.${this.extension}`))
54
+ .map((fileName) => fileName.replace(`.${this.extension}`, ""));
55
+ }
56
+
57
+ getEntityDirectoryPath(entityType: EntityType): string {
58
+ if (entityType === "feature") {
59
+ return this.config.featuresDirectoryPath;
60
+ } else if (entityType === "group") {
61
+ return this.config.groupsDirectoryPath;
62
+ } else if (entityType === "segment") {
63
+ return this.config.segmentsDirectoryPath;
64
+ } else if (entityType === "test") {
65
+ return this.config.testsDirectoryPath;
66
+ }
67
+
68
+ return this.config.attributesDirectoryPath;
69
+ }
70
+
71
+ getEntityPath(entityType: EntityType, entityKey: string): string {
72
+ const basePath = this.getEntityDirectoryPath(entityType);
73
+
74
+ return path.join(basePath, `${entityKey}.${this.extension}`);
75
+ }
76
+
77
+ entityExists(entityType: EntityType, entityKey: string): boolean {
78
+ const entityPath = this.getEntityPath(entityType, entityKey);
79
+
80
+ return fs.existsSync(entityPath);
81
+ }
82
+
83
+ readEntity(entityType: EntityType, entityKey: string): string {
84
+ const filePath = this.getEntityPath(entityType, entityKey);
85
+
86
+ return fs.readFileSync(filePath, "utf8");
87
+ }
88
+
89
+ parseEntity<T>(entityType: EntityType, entityKey: string): T {
90
+ const entityContent = this.readEntity(entityType, entityKey);
91
+
92
+ return this.parse(entityContent) as T;
93
+ }
94
+
95
+ /**
96
+ * Entity specific methods
97
+ */
98
+
99
+ // features
100
+ listFeatures(tag?: Tag) {
101
+ const features = this.listEntities("feature");
102
+
103
+ if (tag) {
104
+ return features.filter((feature) => {
105
+ const featureContent = this.parseEntity<ParsedFeature>("feature", feature);
106
+
107
+ return featureContent.tags.indexOf(tag) !== -1;
108
+ });
109
+ }
110
+
111
+ return features;
112
+ }
113
+
114
+ readFeature(featureKey: string) {
115
+ return this.parseEntity<ParsedFeature>("feature", featureKey);
116
+ }
117
+
118
+ // segments
119
+ listSegments(segmentsList?: string[]) {
120
+ const segments = this.listEntities("segment");
121
+
122
+ if (segmentsList) {
123
+ return segments.filter((segment) => {
124
+ return segmentsList.indexOf(segment) !== -1;
125
+ });
126
+ }
127
+
128
+ return segments;
129
+ }
130
+
131
+ readSegment(segmentKey: string) {
132
+ return this.parseEntity<Segment>("segment", segmentKey);
133
+ }
134
+
135
+ // attributes
136
+ listAttributes(attributesList?: string[]) {
137
+ const attributes = this.listEntities("attribute");
138
+
139
+ if (attributesList) {
140
+ return attributes.filter((segment) => {
141
+ return attributesList.indexOf(segment) !== -1;
142
+ });
143
+ }
144
+
145
+ return attributes;
146
+ }
147
+
148
+ readAttribute(attributeKey: string) {
149
+ return this.parseEntity<Attribute>("attribute", attributeKey);
150
+ }
151
+
152
+ // groups
153
+ listGroups(featuresList?: string[]) {
154
+ const groups = this.listEntities("group");
155
+
156
+ if (featuresList) {
157
+ return groups.filter((group) => {
158
+ const groupContent = this.parseEntity<Group>("group", group);
159
+
160
+ return groupContent.slots.some((slot) => {
161
+ if (!slot.feature) {
162
+ return false;
163
+ }
164
+
165
+ return featuresList.indexOf(slot.feature) !== -1;
166
+ });
167
+ });
168
+ }
169
+
170
+ return groups;
171
+ }
172
+
173
+ readGroup(groupKey: string) {
174
+ return this.parseEntity<Group>("group", groupKey);
175
+ }
176
+
177
+ // tests
178
+ listTests() {
179
+ return this.listEntities("test");
180
+ }
181
+
182
+ readTest(testKey: string) {
183
+ return this.parseEntity<Spec>("test", testKey);
184
+ }
185
+ }
@@ -0,0 +1,26 @@
1
+ import { parseYaml } from "../utils";
2
+
3
+ /**
4
+ * If we want to add more built-in parsers,
5
+ * add them to this object with new file extension as the key,
6
+ * and a function that takes file content as string and returns parsed object as the value.
7
+ */
8
+ export const parsers = {
9
+ // extension => function
10
+ yml(content: string) {
11
+ return parseYaml(content);
12
+ },
13
+
14
+ json(content: string) {
15
+ return JSON.parse(content);
16
+ },
17
+ };
18
+
19
+ export type BuiltInParser = keyof typeof parsers; // keys of parsers object
20
+
21
+ export interface CustomParser {
22
+ extension: string;
23
+ parse: (content: string) => any;
24
+ }
25
+
26
+ export type Parser = BuiltInParser | CustomParser;
@@ -4,6 +4,7 @@ import * as path from "path";
4
4
  import * as mkdirp from "mkdirp";
5
5
 
6
6
  import { ProjectConfig } from "../config";
7
+ import { Datasource } from "../datasource/datasource";
7
8
  import { generateTypeScriptCodeForProject } from "./typescript";
8
9
 
9
10
  export const ALLOWED_LANGUAGES_FOR_CODE_GENERATION = ["typescript"];
@@ -26,6 +27,8 @@ export function generateCodeForProject(
26
27
  throw new Error("Option `--out-dir` is required");
27
28
  }
28
29
 
30
+ const datasource = new Datasource(projectConfig);
31
+
29
32
  const absolutePath = path.resolve(rootDirectoryPath, cliOptions.outDir);
30
33
 
31
34
  if (!fs.existsSync(absolutePath)) {
@@ -44,7 +47,12 @@ export function generateCodeForProject(
44
47
  }
45
48
 
46
49
  if (cliOptions.language === "typescript") {
47
- return generateTypeScriptCodeForProject(rootDirectoryPath, projectConfig, absolutePath);
50
+ return generateTypeScriptCodeForProject(
51
+ rootDirectoryPath,
52
+ projectConfig,
53
+ datasource,
54
+ absolutePath,
55
+ );
48
56
  }
49
57
 
50
58
  throw new Error(`Language ${cliOptions.language} is not supported`);
@@ -1,10 +1,8 @@
1
1
  import * as fs from "fs";
2
2
  import * as path from "path";
3
3
 
4
- import { Attribute, ParsedFeature } from "@featurevisor/types";
5
-
6
4
  import { ProjectConfig } from "../config";
7
- import { getYAMLFiles, parseYaml } from "../utils";
5
+ import { Datasource } from "../datasource/datasource";
8
6
 
9
7
  function convertFeaturevisorTypeToTypeScriptType(featurevisorType: string) {
10
8
  switch (featurevisorType) {
@@ -81,6 +79,7 @@ export function getInstance(): FeaturevisorInstance {
81
79
  export function generateTypeScriptCodeForProject(
82
80
  rootDirectoryPath: string,
83
81
  projectConfig: ProjectConfig,
82
+ datasource: Datasource,
84
83
  outputPath: string,
85
84
  ) {
86
85
  console.log("Generating TypeScript code...");
@@ -91,12 +90,10 @@ export function generateTypeScriptCodeForProject(
91
90
  console.log(`Instance file written at: ${instanceFilePath}`);
92
91
 
93
92
  // attributes
94
- const attributeFiles = getYAMLFiles(projectConfig.attributesDirectoryPath);
93
+ const attributeFiles = datasource.listAttributes();
95
94
  const attributes = attributeFiles
96
- .map((attributeFile) => {
97
- const parsedAttribute = parseYaml(fs.readFileSync(attributeFile, "utf8")) as Attribute;
98
-
99
- const attributeKey = path.basename(attributeFile, ".yml");
95
+ .map((attributeKey) => {
96
+ const parsedAttribute = datasource.readAttribute(attributeKey);
100
97
 
101
98
  return {
102
99
  archived: parsedAttribute.archived,
@@ -134,10 +131,9 @@ ${attributeProperties}
134
131
 
135
132
  // features
136
133
  const featureNamespaces: string[] = [];
137
- const featureFiles = getYAMLFiles(projectConfig.featuresDirectoryPath);
138
- for (const featureFile of featureFiles) {
139
- const featureKey = path.basename(featureFile, ".yml");
140
- const parsedFeature = parseYaml(fs.readFileSync(featureFile, "utf8")) as ParsedFeature;
134
+ const featureFiles = datasource.listFeatures();
135
+ for (const featureKey of featureFiles) {
136
+ const parsedFeature = datasource.readFeature(featureKey);
141
137
 
142
138
  if (typeof parsedFeature.archived !== "undefined" && parsedFeature.archived) {
143
139
  continue;
package/src/init.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import axios from "axios";
2
2
  import * as tar from "tar";
3
3
 
4
- export const DEFAULT_EXAMPLE = "example-1";
4
+ export const DEFAULT_EXAMPLE = "example-yml";
5
5
 
6
6
  export const EXAMPLES_ORG_NAME = "fahad19";
7
7
  export const EXAMPLES_REPO_NAME = "featurevisor";