@featurevisor/core 2.14.0 → 2.16.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 (101) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/coverage/clover.xml +774 -652
  3. package/coverage/coverage-final.json +19 -18
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  8. package/coverage/lcov-report/builder/index.html +1 -1
  9. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  10. package/coverage/lcov-report/builder/mutator.ts.html +1 -1
  11. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  12. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  13. package/coverage/lcov-report/config/index.html +30 -15
  14. package/coverage/lcov-report/config/index.ts.html +88 -0
  15. package/coverage/lcov-report/config/projectConfig.ts.html +79 -46
  16. package/coverage/lcov-report/datasource/adapter.ts.html +74 -11
  17. package/coverage/lcov-report/datasource/datasource.ts.html +76 -25
  18. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +690 -66
  19. package/coverage/lcov-report/datasource/index.html +35 -35
  20. package/coverage/lcov-report/datasource/index.ts.html +1 -1
  21. package/coverage/lcov-report/index.html +43 -43
  22. package/coverage/lcov-report/linter/attributeSchema.ts.html +4 -4
  23. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
  24. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
  25. package/coverage/lcov-report/linter/conditionSchema.ts.html +7 -7
  26. package/coverage/lcov-report/linter/featureSchema.ts.html +152 -164
  27. package/coverage/lcov-report/linter/groupSchema.ts.html +3 -3
  28. package/coverage/lcov-report/linter/index.html +34 -34
  29. package/coverage/lcov-report/linter/lintProject.ts.html +428 -83
  30. package/coverage/lcov-report/linter/mutationNotation.ts.html +3 -3
  31. package/coverage/lcov-report/linter/printError.ts.html +9 -9
  32. package/coverage/lcov-report/linter/schema.ts.html +4 -4
  33. package/coverage/lcov-report/linter/segmentSchema.ts.html +3 -3
  34. package/coverage/lcov-report/linter/testSchema.ts.html +6 -6
  35. package/coverage/lcov-report/list/index.html +1 -1
  36. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  37. package/coverage/lcov-report/parsers/index.html +1 -1
  38. package/coverage/lcov-report/parsers/index.ts.html +4 -4
  39. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  40. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  41. package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
  42. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  43. package/coverage/lcov-report/tester/index.html +1 -1
  44. package/coverage/lcov-report/utils/git.ts.html +118 -16
  45. package/coverage/lcov-report/utils/index.html +14 -14
  46. package/coverage/lcov.info +1374 -1107
  47. package/lib/config/projectConfig.d.ts +3 -0
  48. package/lib/config/projectConfig.js +7 -1
  49. package/lib/config/projectConfig.js.map +1 -1
  50. package/lib/config/projectConfig.spec.d.ts +1 -0
  51. package/lib/config/projectConfig.spec.js +24 -0
  52. package/lib/config/projectConfig.spec.js.map +1 -0
  53. package/lib/datasource/adapter.d.ts +7 -0
  54. package/lib/datasource/adapter.js +7 -0
  55. package/lib/datasource/adapter.js.map +1 -1
  56. package/lib/datasource/datasource.d.ts +3 -1
  57. package/lib/datasource/datasource.js +6 -0
  58. package/lib/datasource/datasource.js.map +1 -1
  59. package/lib/datasource/filesystemAdapter.d.ts +8 -0
  60. package/lib/datasource/filesystemAdapter.js +134 -7
  61. package/lib/datasource/filesystemAdapter.js.map +1 -1
  62. package/lib/datasource/filesystemAdapter.spec.d.ts +1 -0
  63. package/lib/datasource/filesystemAdapter.spec.js +88 -0
  64. package/lib/datasource/filesystemAdapter.spec.js.map +1 -0
  65. package/lib/generate-code/index.d.ts +3 -0
  66. package/lib/generate-code/index.js +16 -1
  67. package/lib/generate-code/index.js.map +1 -1
  68. package/lib/generate-code/typescript.d.ts +6 -1
  69. package/lib/generate-code/typescript.js +193 -42
  70. package/lib/generate-code/typescript.js.map +1 -1
  71. package/lib/linter/conditionSchema.spec.js +2 -0
  72. package/lib/linter/conditionSchema.spec.js.map +1 -1
  73. package/lib/linter/featureSchema.js +46 -49
  74. package/lib/linter/featureSchema.js.map +1 -1
  75. package/lib/linter/featureSchema.spec.js +17 -0
  76. package/lib/linter/featureSchema.spec.js.map +1 -1
  77. package/lib/linter/lintProject.d.ts +2 -0
  78. package/lib/linter/lintProject.js +85 -8
  79. package/lib/linter/lintProject.js.map +1 -1
  80. package/lib/linter/lintProject.spec.js +37 -0
  81. package/lib/linter/lintProject.spec.js.map +1 -1
  82. package/lib/linter/segmentSchema.spec.js +2 -0
  83. package/lib/linter/segmentSchema.spec.js.map +1 -1
  84. package/lib/utils/git.js +32 -7
  85. package/lib/utils/git.js.map +1 -1
  86. package/package.json +2 -2
  87. package/src/config/projectConfig.spec.ts +31 -0
  88. package/src/config/projectConfig.ts +11 -0
  89. package/src/datasource/adapter.ts +21 -0
  90. package/src/datasource/datasource.ts +18 -1
  91. package/src/datasource/filesystemAdapter.spec.ts +153 -0
  92. package/src/datasource/filesystemAdapter.ts +216 -8
  93. package/src/generate-code/index.ts +20 -1
  94. package/src/generate-code/typescript.ts +266 -64
  95. package/src/linter/conditionSchema.spec.ts +2 -0
  96. package/src/linter/featureSchema.spec.ts +21 -0
  97. package/src/linter/featureSchema.ts +84 -88
  98. package/src/linter/lintProject.spec.ts +74 -0
  99. package/src/linter/lintProject.ts +123 -8
  100. package/src/linter/segmentSchema.spec.ts +2 -0
  101. package/src/utils/git.ts +41 -7
@@ -13,6 +13,7 @@ export declare const DATAFILES_DIRECTORY_NAME = "datafiles";
13
13
  export declare const DATAFILE_NAME_PATTERN = "featurevisor-%s.json";
14
14
  export declare const REVISION_FILE_NAME = "REVISION";
15
15
  export declare const SITE_EXPORT_DIRECTORY_NAME = "out";
16
+ export declare const ENVIRONMENTS_DIRECTORY_NAME = "environments";
16
17
  export declare const CONFIG_MODULE_NAME = "featurevisor.config.js";
17
18
  export declare const ROOT_DIR_PLACEHOLDER = "<rootDir>";
18
19
  export declare const DEFAULT_ENVIRONMENTS: string[];
@@ -40,7 +41,9 @@ export interface ProjectConfig {
40
41
  datafileNamePattern: string;
41
42
  revisionFileName: string;
42
43
  siteExportDirectoryPath: string;
44
+ environmentsDirectoryPath: string;
43
45
  environments: string[] | false;
46
+ splitByEnvironment: boolean;
44
47
  tags: string[];
45
48
  scopes?: Scope[];
46
49
  adapter: any;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configPlugin = 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.REVISION_FILE_NAME = exports.DATAFILE_NAME_PATTERN = exports.DATAFILES_DIRECTORY_NAME = exports.STATE_DIRECTORY_NAME = exports.TESTS_DIRECTORY_NAME = exports.SCHEMAS_DIRECTORY_NAME = exports.GROUPS_DIRECTORY_NAME = exports.ATTRIBUTES_DIRECTORY_NAME = exports.SEGMENTS_DIRECTORY_NAME = exports.FEATURES_DIRECTORY_NAME = void 0;
3
+ exports.configPlugin = 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.ENVIRONMENTS_DIRECTORY_NAME = exports.SITE_EXPORT_DIRECTORY_NAME = exports.REVISION_FILE_NAME = exports.DATAFILE_NAME_PATTERN = exports.DATAFILES_DIRECTORY_NAME = exports.STATE_DIRECTORY_NAME = exports.TESTS_DIRECTORY_NAME = exports.SCHEMAS_DIRECTORY_NAME = exports.GROUPS_DIRECTORY_NAME = exports.ATTRIBUTES_DIRECTORY_NAME = exports.SEGMENTS_DIRECTORY_NAME = exports.FEATURES_DIRECTORY_NAME = void 0;
4
4
  exports.getProjectConfig = getProjectConfig;
5
5
  exports.showProjectConfig = showProjectConfig;
6
6
  const path = require("path");
@@ -17,6 +17,7 @@ exports.DATAFILES_DIRECTORY_NAME = "datafiles";
17
17
  exports.DATAFILE_NAME_PATTERN = "featurevisor-%s.json";
18
18
  exports.REVISION_FILE_NAME = "REVISION";
19
19
  exports.SITE_EXPORT_DIRECTORY_NAME = "out";
20
+ exports.ENVIRONMENTS_DIRECTORY_NAME = "environments";
20
21
  exports.CONFIG_MODULE_NAME = "featurevisor.config.js";
21
22
  exports.ROOT_DIR_PLACEHOLDER = "<rootDir>";
22
23
  exports.DEFAULT_ENVIRONMENTS = ["staging", "production"];
@@ -39,6 +40,7 @@ function getProjectConfig(rootDirectoryPath) {
39
40
  stringify: true,
40
41
  adapter: filesystemAdapter_1.FilesystemAdapter,
41
42
  featuresDirectoryPath: path.join(rootDirectoryPath, exports.FEATURES_DIRECTORY_NAME),
43
+ environmentsDirectoryPath: path.join(rootDirectoryPath, exports.ENVIRONMENTS_DIRECTORY_NAME),
42
44
  segmentsDirectoryPath: path.join(rootDirectoryPath, exports.SEGMENTS_DIRECTORY_NAME),
43
45
  attributesDirectoryPath: path.join(rootDirectoryPath, exports.ATTRIBUTES_DIRECTORY_NAME),
44
46
  groupsDirectoryPath: path.join(rootDirectoryPath, exports.GROUPS_DIRECTORY_NAME),
@@ -51,6 +53,7 @@ function getProjectConfig(rootDirectoryPath) {
51
53
  siteExportDirectoryPath: path.join(rootDirectoryPath, exports.SITE_EXPORT_DIRECTORY_NAME),
52
54
  enforceCatchAllRule: false,
53
55
  plugins: [],
56
+ splitByEnvironment: false,
54
57
  maxVariableStringLength: undefined,
55
58
  maxVariableArrayStringifiedLength: undefined,
56
59
  maxVariableObjectStringifiedLength: undefined,
@@ -74,6 +77,9 @@ function getProjectConfig(rootDirectoryPath) {
74
77
  }
75
78
  finalConfig.parser = parsers_1.parsers[finalConfig.parser];
76
79
  }
80
+ if (finalConfig.splitByEnvironment && finalConfig.environments === false) {
81
+ throw new Error("Invalid configuration: splitByEnvironment=true requires environments to be an array");
82
+ }
77
83
  return finalConfig;
78
84
  }
79
85
  function showProjectConfig(projectConfig, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/config/projectConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/config/projectConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const os = require("os");
5
+ const path = require("path");
6
+ const projectConfig_1 = require("./projectConfig");
7
+ function createTempProject(configBody) {
8
+ const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "featurevisor-project-config-"));
9
+ fs.writeFileSync(path.join(tempRoot, "featurevisor.config.js"), configBody, "utf8");
10
+ return tempRoot;
11
+ }
12
+ describe("core: projectConfig", () => {
13
+ it("sets splitByEnvironment=false and environmentsDirectoryPath by default", () => {
14
+ const root = createTempProject("module.exports = {};");
15
+ const config = (0, projectConfig_1.getProjectConfig)(root);
16
+ expect(config.splitByEnvironment).toBe(false);
17
+ expect(config.environmentsDirectoryPath).toBe(path.join(root, projectConfig_1.ENVIRONMENTS_DIRECTORY_NAME));
18
+ });
19
+ it("throws when splitByEnvironment=true and environments=false", () => {
20
+ const root = createTempProject("module.exports = { splitByEnvironment: true, environments: false };");
21
+ expect(() => (0, projectConfig_1.getProjectConfig)(root)).toThrow("Invalid configuration: splitByEnvironment=true requires environments to be an array");
22
+ });
23
+ });
24
+ //# sourceMappingURL=projectConfig.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectConfig.spec.js","sourceRoot":"","sources":["../../src/config/projectConfig.spec.ts"],"names":[],"mappings":";;AAAA,yBAAyB;AACzB,yBAAyB;AACzB,6BAA6B;AAE7B,mDAAgF;AAEhF,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC;IACxF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,2CAA2B,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,IAAI,GAAG,iBAAiB,CAC5B,qEAAqE,CACtE,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAC1C,qFAAqF,CACtF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -6,6 +6,11 @@ export interface DatafileOptions {
6
6
  scope?: Scope;
7
7
  datafilesDir?: string;
8
8
  }
9
+ export type FeatureEnvironmentProperty = "rules" | "force" | "expose";
10
+ export interface FeatureSourcePaths {
11
+ baseFilePath: string;
12
+ environmentFilePaths: Record<string, string>;
13
+ }
9
14
  export declare abstract class Adapter {
10
15
  abstract listEntities(entityType: EntityType): Promise<string[]>;
11
16
  abstract entityExists(entityType: EntityType, entityKey: string): Promise<boolean>;
@@ -20,4 +25,6 @@ export declare abstract class Adapter {
20
25
  abstract writeRevision(revision: string): Promise<void>;
21
26
  abstract listHistoryEntries(entityType?: EntityType, entityKey?: string): Promise<HistoryEntry[]>;
22
27
  abstract readCommit(commit: CommitHash, entityType?: EntityType, entityKey?: string): Promise<Commit>;
28
+ getFeatureSourcePaths(_featureKey: string): Promise<FeatureSourcePaths | undefined>;
29
+ getFeaturePropertySourcePath(_featureKey: string, _property: FeatureEnvironmentProperty, _environment?: string): Promise<string | undefined>;
23
30
  }
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Adapter = void 0;
4
4
  class Adapter {
5
+ // feature source helpers (used by lint/history attribution)
6
+ async getFeatureSourcePaths(_featureKey) {
7
+ return undefined;
8
+ }
9
+ async getFeaturePropertySourcePath(_featureKey, _property, _environment) {
10
+ return undefined;
11
+ }
5
12
  }
6
13
  exports.Adapter = Adapter;
7
14
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/datasource/adapter.ts"],"names":[],"mappings":";;;AAmBA,MAAsB,OAAO;CA8B5B;AA9BD,0BA8BC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/datasource/adapter.ts"],"names":[],"mappings":";;;AA2BA,MAAsB,OAAO;IA+B3B,4DAA4D;IAC5D,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,WAAmB,EACnB,SAAqC,EACrC,YAAqB;QAErB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA3CD,0BA2CC"}
@@ -1,6 +1,6 @@
1
1
  import type { ParsedFeature, Segment, Attribute, Group, FeatureKey, Test, EnvironmentKey, ExistingState, SegmentKey, AttributeKey, DatafileContent, EntityType, SchemaKey, Schema } from "@featurevisor/types";
2
2
  import { ProjectConfig } from "../config";
3
- import { DatafileOptions } from "./adapter";
3
+ import { DatafileOptions, FeatureEnvironmentProperty, FeatureSourcePaths } from "./adapter";
4
4
  export declare class Datasource {
5
5
  private config;
6
6
  private rootDirectoryPath?;
@@ -30,6 +30,8 @@ export declare class Datasource {
30
30
  readFeature(featureKey: FeatureKey): Promise<ParsedFeature>;
31
31
  writeFeature(featureKey: FeatureKey, feature: ParsedFeature): Promise<ParsedFeature>;
32
32
  deleteFeature(featureKey: FeatureKey): Promise<void>;
33
+ getFeatureSourcePaths(featureKey: FeatureKey): Promise<FeatureSourcePaths | undefined>;
34
+ getFeaturePropertySourcePath(featureKey: FeatureKey, property: FeatureEnvironmentProperty, environment?: string): Promise<string | undefined>;
33
35
  getRequiredFeaturesChain(featureKey: FeatureKey, chain?: Set<string>): Promise<Set<FeatureKey>>;
34
36
  listSegments(): Promise<string[]>;
35
37
  segmentExists(segmentKey: SegmentKey): Promise<boolean>;
@@ -57,6 +57,12 @@ class Datasource {
57
57
  deleteFeature(featureKey) {
58
58
  return this.adapter.deleteEntity("feature", featureKey);
59
59
  }
60
+ getFeatureSourcePaths(featureKey) {
61
+ return this.adapter.getFeatureSourcePaths(featureKey);
62
+ }
63
+ getFeaturePropertySourcePath(featureKey, property, environment) {
64
+ return this.adapter.getFeaturePropertySourcePath(featureKey, property, environment);
65
+ }
60
66
  async getRequiredFeaturesChain(featureKey, chain = new Set()) {
61
67
  chain.add(featureKey);
62
68
  if (!this.adapter.entityExists("feature", featureKey)) {
@@ -1 +1 @@
1
- {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/datasource/datasource.ts"],"names":[],"mappings":";;;AAsBA,MAAa,UAAU;IAGrB,YACU,MAAqB,EACrB,iBAA0B;QAD1B,WAAM,GAAN,MAAM,CAAe;QACrB,sBAAiB,GAAjB,iBAAiB,CAAS;QAElC,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED,8EAA8E;IAC9E,YAAY;QACV,OAAQ,IAAI,CAAC,MAAM,CAAC,MAAuB,CAAC,SAAS,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,WAAmC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,WAAmC,EAAE,aAA4B;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAwB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,eAAgC,EAAE,OAAwB;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IAEH,WAAW;IACX,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,UAAsB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAgB,SAAS,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,YAAY,CAAC,UAAsB,EAAE,OAAsB;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAgB,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,UAAsB,EACtB,QAAQ,IAAI,GAAG,EAAc;QAE7B,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAEtD,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;IACX,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,UAAsB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAU,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,YAAY,CAAC,UAAsB,EAAE,OAAgB;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAU,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,aAAa;IACb,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAEhD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEjB,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;gBAC7D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,YAA0B;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CAAC,YAA0B;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAY,WAAW,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,YAA0B,EAAE,SAAoB;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAY,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACnF,CAAC;IAED,eAAe,CAAC,YAA0B;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;IACT,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,QAAgB,EAAE,KAAY;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,UAAU;IACV,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,SAAoB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAS,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,SAAoB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAS,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;IACR,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAO,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,IAAU;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAO,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU;IACV,kBAAkB,CAAC,UAAuB,EAAE,SAAkB;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,UAAuB,EAAE,SAAkB;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACF;AA5OD,gCA4OC"}
1
+ {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/datasource/datasource.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,9 @@ export declare class FilesystemAdapter extends Adapter {
11
11
  constructor(config: ProjectConfig, rootDirectoryPath?: string);
12
12
  getEntityDirectoryPath(entityType: EntityType): string;
13
13
  getEntityPath(entityType: EntityType, entityKey: string): string;
14
+ getFeatureEnvironmentPath(featureKey: string, environment: string): string;
15
+ private assertSplitByEnvironmentIsValidFeatureBase;
16
+ private readFeatureEnvironmentEntity;
14
17
  listEntities(entityType: EntityType): Promise<string[]>;
15
18
  entityExists(entityType: EntityType, entityKey: string): Promise<boolean>;
16
19
  readEntity<T>(entityType: EntityType, entityKey: string): Promise<T>;
@@ -37,6 +40,11 @@ export declare class FilesystemAdapter extends Adapter {
37
40
  */
38
41
  getRawHistory(pathPatterns: string[]): Promise<string>;
39
42
  getPathPatterns(entityType?: EntityType, entityKey?: string): string[];
43
+ getFeatureSourcePaths(featureKey: string): Promise<{
44
+ baseFilePath: string;
45
+ environmentFilePaths: Record<string, string>;
46
+ }>;
47
+ getFeaturePropertySourcePath(featureKey: string, _property: "rules" | "force" | "expose", environment?: string): Promise<string>;
40
48
  listHistoryEntries(entityType?: EntityType, entityKey?: string): Promise<HistoryEntry[]>;
41
49
  readCommit(commitHash: CommitHash, entityType?: EntityType, entityKey?: string): Promise<Commit>;
42
50
  }
@@ -9,6 +9,14 @@ const path = require("path");
9
9
  const child_process_1 = require("child_process");
10
10
  const adapter_1 = require("./adapter");
11
11
  const git_1 = require("../utils/git");
12
+ const FEATURE_ENVIRONMENT_ALLOWED_KEYS = ["rules", "force", "expose"];
13
+ class FeatureSplitConfigError extends Error {
14
+ constructor(filePath, message) {
15
+ super(message);
16
+ this.featurevisorFilePath = filePath;
17
+ this.name = "FeatureSplitConfigError";
18
+ }
19
+ }
12
20
  function getExistingStateFilePath(projectConfig, environment) {
13
21
  const fileName = environment ? `existing-state-${environment}.json` : `existing-state.json`;
14
22
  return path.join(projectConfig.stateDirectoryPath, fileName);
@@ -34,6 +42,9 @@ function getAllEntityFilePathsRecursively(directoryPath, extension) {
34
42
  }
35
43
  return entities;
36
44
  }
45
+ function isWithinDirectory(directoryPath, fileDirectoryPath) {
46
+ return (fileDirectoryPath === directoryPath || fileDirectoryPath.startsWith(directoryPath + path.sep));
47
+ }
37
48
  class FilesystemAdapter extends adapter_1.Adapter {
38
49
  constructor(config, rootDirectoryPath) {
39
50
  super();
@@ -65,6 +76,31 @@ class FilesystemAdapter extends adapter_1.Adapter {
65
76
  const relativeEntityPath = entityKey.replace(/\//g, path.sep);
66
77
  return path.join(basePath, `${relativeEntityPath}.${this.parser.extension}`);
67
78
  }
79
+ getFeatureEnvironmentPath(featureKey, environment) {
80
+ const relativeEntityPath = featureKey.replace(/\//g, path.sep);
81
+ return path.join(this.config.environmentsDirectoryPath, environment, `${relativeEntityPath}.${this.parser.extension}`);
82
+ }
83
+ assertSplitByEnvironmentIsValidFeatureBase(baseFeature, featurePath) {
84
+ if (typeof baseFeature.rules !== "undefined" ||
85
+ typeof baseFeature.force !== "undefined" ||
86
+ typeof baseFeature.expose !== "undefined") {
87
+ throw new FeatureSplitConfigError(featurePath, `Feature "${baseFeature.key}" base file must not define rules, force, or expose when splitByEnvironment=true`);
88
+ }
89
+ }
90
+ readFeatureEnvironmentEntity(featureKey, environment) {
91
+ const featureEnvironmentPath = this.getFeatureEnvironmentPath(featureKey, environment);
92
+ if (!fs.existsSync(featureEnvironmentPath)) {
93
+ throw new FeatureSplitConfigError(featureEnvironmentPath, `Missing environment feature file: environments/${environment}/${featureKey}.${this.parser.extension}`);
94
+ }
95
+ const content = fs.readFileSync(featureEnvironmentPath, "utf8");
96
+ const parsed = this.parser.parse(content, featureEnvironmentPath);
97
+ const keys = Object.keys(parsed);
98
+ const unknownKeys = keys.filter((key) => FEATURE_ENVIRONMENT_ALLOWED_KEYS.indexOf(key) === -1);
99
+ if (unknownKeys.length > 0) {
100
+ throw new FeatureSplitConfigError(featureEnvironmentPath, `Unknown key(s) in environment feature file: ${unknownKeys.join(", ")}`);
101
+ }
102
+ return parsed;
103
+ }
68
104
  async listEntities(entityType) {
69
105
  const directoryPath = this.getEntityDirectoryPath(entityType);
70
106
  const filePaths = getAllEntityFilePathsRecursively(directoryPath, this.parser.extension);
@@ -83,6 +119,37 @@ class FilesystemAdapter extends adapter_1.Adapter {
83
119
  return fs.existsSync(entityPath);
84
120
  }
85
121
  async readEntity(entityType, entityKey) {
122
+ if (entityType === "feature" && this.config.splitByEnvironment) {
123
+ const featurePath = this.getEntityPath(entityType, entityKey);
124
+ const featureContent = fs.readFileSync(featurePath, "utf8");
125
+ const baseFeature = this.parser.parse(featureContent, featurePath);
126
+ this.assertSplitByEnvironmentIsValidFeatureBase(baseFeature, featurePath);
127
+ if (!Array.isArray(this.config.environments)) {
128
+ throw new FeatureSplitConfigError(featurePath, "splitByEnvironment=true requires environments to be configured as an array");
129
+ }
130
+ const rulesByEnvironment = {};
131
+ const forceByEnvironment = {};
132
+ const exposeByEnvironment = {};
133
+ for (const environment of this.config.environments) {
134
+ const envFeature = this.readFeatureEnvironmentEntity(entityKey, environment);
135
+ if (typeof envFeature.rules !== "undefined") {
136
+ rulesByEnvironment[environment] = envFeature.rules;
137
+ }
138
+ if (typeof envFeature.force !== "undefined") {
139
+ forceByEnvironment[environment] = envFeature.force;
140
+ }
141
+ if (typeof envFeature.expose !== "undefined") {
142
+ exposeByEnvironment[environment] = envFeature.expose;
143
+ }
144
+ }
145
+ const mergedFeature = {
146
+ ...baseFeature,
147
+ rules: Object.keys(rulesByEnvironment).length > 0 ? rulesByEnvironment : undefined,
148
+ force: Object.keys(forceByEnvironment).length > 0 ? forceByEnvironment : undefined,
149
+ expose: Object.keys(exposeByEnvironment).length > 0 ? exposeByEnvironment : undefined,
150
+ };
151
+ return mergedFeature;
152
+ }
86
153
  const filePath = this.getEntityPath(entityType, entityKey);
87
154
  const entityContent = fs.readFileSync(filePath, "utf8");
88
155
  return this.parser.parse(entityContent, filePath);
@@ -220,6 +287,13 @@ class FilesystemAdapter extends adapter_1.Adapter {
220
287
  let pathPatterns = [];
221
288
  if (entityType && entityKey) {
222
289
  pathPatterns = [this.getEntityPath(entityType, entityKey)];
290
+ if (entityType === "feature" &&
291
+ this.config.splitByEnvironment &&
292
+ Array.isArray(this.config.environments)) {
293
+ for (const environment of this.config.environments) {
294
+ pathPatterns.push(this.getFeatureEnvironmentPath(entityKey, environment));
295
+ }
296
+ }
223
297
  }
224
298
  else if (entityType) {
225
299
  if (entityType === "attribute") {
@@ -230,6 +304,9 @@ class FilesystemAdapter extends adapter_1.Adapter {
230
304
  }
231
305
  else if (entityType === "feature") {
232
306
  pathPatterns = [this.config.featuresDirectoryPath];
307
+ if (this.config.splitByEnvironment) {
308
+ pathPatterns.push(this.config.environmentsDirectoryPath);
309
+ }
233
310
  }
234
311
  else if (entityType === "group") {
235
312
  pathPatterns = [this.config.groupsDirectoryPath];
@@ -244,6 +321,7 @@ class FilesystemAdapter extends adapter_1.Adapter {
244
321
  else {
245
322
  pathPatterns = [
246
323
  this.config.featuresDirectoryPath,
324
+ ...(this.config.splitByEnvironment ? [this.config.environmentsDirectoryPath] : []),
247
325
  this.config.attributesDirectoryPath,
248
326
  this.config.segmentsDirectoryPath,
249
327
  this.config.groupsDirectoryPath,
@@ -253,6 +331,25 @@ class FilesystemAdapter extends adapter_1.Adapter {
253
331
  }
254
332
  return pathPatterns.map((p) => p.replace(this.rootDirectoryPath + path.sep, ""));
255
333
  }
334
+ async getFeatureSourcePaths(featureKey) {
335
+ const baseFilePath = this.getEntityPath("feature", featureKey);
336
+ const environmentFilePaths = {};
337
+ if (this.config.splitByEnvironment && Array.isArray(this.config.environments)) {
338
+ for (const environment of this.config.environments) {
339
+ environmentFilePaths[environment] = this.getFeatureEnvironmentPath(featureKey, environment);
340
+ }
341
+ }
342
+ return {
343
+ baseFilePath,
344
+ environmentFilePaths,
345
+ };
346
+ }
347
+ async getFeaturePropertySourcePath(featureKey, _property, environment) {
348
+ if (this.config.splitByEnvironment && environment) {
349
+ return this.getFeatureEnvironmentPath(featureKey, environment);
350
+ }
351
+ return this.getEntityPath("feature", featureKey);
352
+ }
256
353
  async listHistoryEntries(entityType, entityKey) {
257
354
  const pathPatterns = this.getPathPatterns(entityType, entityKey);
258
355
  const rawHistory = await this.getRawHistory(pathPatterns);
@@ -273,29 +370,59 @@ class FilesystemAdapter extends adapter_1.Adapter {
273
370
  const absolutePath = path.join(this.rootDirectoryPath, relativePath);
274
371
  const fileName = absolutePath.split(path.sep).pop();
275
372
  const relativeDir = path.dirname(absolutePath);
276
- const key = fileName.replace("." + this.parser.extension, "");
373
+ const extensionWithDot = "." + this.parser.extension;
374
+ const key = fileName.replace(extensionWithDot, "");
277
375
  let type = "attribute";
278
- if (relativeDir === this.config.attributesDirectoryPath) {
376
+ if (isWithinDirectory(this.config.attributesDirectoryPath, relativeDir)) {
279
377
  type = "attribute";
280
378
  }
281
- else if (relativeDir === this.config.segmentsDirectoryPath) {
379
+ else if (isWithinDirectory(this.config.segmentsDirectoryPath, relativeDir)) {
282
380
  type = "segment";
283
381
  }
284
- else if (relativeDir === this.config.featuresDirectoryPath) {
382
+ else if (isWithinDirectory(this.config.featuresDirectoryPath, relativeDir)) {
285
383
  type = "feature";
286
384
  }
287
- else if (relativeDir === this.config.groupsDirectoryPath) {
385
+ else if (this.config.splitByEnvironment &&
386
+ isWithinDirectory(this.config.environmentsDirectoryPath, relativeDir)) {
387
+ type = "feature";
388
+ }
389
+ else if (isWithinDirectory(this.config.groupsDirectoryPath, relativeDir)) {
288
390
  type = "group";
289
391
  }
290
- else if (relativeDir === this.config.schemasDirectoryPath) {
392
+ else if (isWithinDirectory(this.config.schemasDirectoryPath, relativeDir)) {
291
393
  type = "schema";
292
394
  }
293
- else if (relativeDir === this.config.testsDirectoryPath) {
395
+ else if (isWithinDirectory(this.config.testsDirectoryPath, relativeDir)) {
294
396
  type = "test";
295
397
  }
296
398
  else {
297
399
  continue;
298
400
  }
401
+ if (type === "feature") {
402
+ if (this.config.splitByEnvironment &&
403
+ relativePath.startsWith(this.config.environmentsDirectoryPath.replace(this.rootDirectoryPath + path.sep, "") + path.sep)) {
404
+ const featureRelativePath = relativePath
405
+ .replace(this.config.environmentsDirectoryPath.replace(this.rootDirectoryPath + path.sep, "") + path.sep, "")
406
+ .split(path.sep)
407
+ .slice(1)
408
+ .join(path.sep)
409
+ .replace(extensionWithDot, "");
410
+ entities.push({
411
+ type,
412
+ key: featureRelativePath.replace(/\\/g, "/"),
413
+ });
414
+ continue;
415
+ }
416
+ const baseRelativePath = absolutePath
417
+ .replace(this.config.featuresDirectoryPath + path.sep, "")
418
+ .replace(extensionWithDot, "")
419
+ .replace(/\\/g, "/");
420
+ entities.push({
421
+ type,
422
+ key: baseRelativePath,
423
+ });
424
+ continue;
425
+ }
299
426
  entities.push({
300
427
  type,
301
428
  key,
@@ -1 +1 @@
1
- {"version":3,"file":"filesystemAdapter.js","sourceRoot":"","sources":["../../src/datasource/filesystemAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystemAdapter.js","sourceRoot":"","sources":["../../src/datasource/filesystemAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const os = require("os");
5
+ const path = require("path");
6
+ const config_1 = require("../config");
7
+ const datasource_1 = require("./datasource");
8
+ function writeFile(filePath, content) {
9
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
10
+ fs.writeFileSync(filePath, content, "utf8");
11
+ }
12
+ function createSplitProject(configBody) {
13
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "featurevisor-fs-adapter-"));
14
+ writeFile(path.join(root, "featurevisor.config.js"), configBody);
15
+ return root;
16
+ }
17
+ describe("core: filesystemAdapter (splitByEnvironment)", () => {
18
+ it("merges environment files into readFeature output", async () => {
19
+ const root = createSplitProject("module.exports = { environments: ['staging', 'production'], splitByEnvironment: true };");
20
+ writeFile(path.join(root, "features", "checkout.yml"), [
21
+ "key: checkout",
22
+ "description: Checkout feature",
23
+ "tags:",
24
+ " - all",
25
+ "bucketBy: userId",
26
+ ].join("\n"));
27
+ writeFile(path.join(root, "environments", "staging", "checkout.yml"), ["rules:", " - key: everyone", " segments: '*'", " percentage: 100"].join("\n"));
28
+ writeFile(path.join(root, "environments", "production", "checkout.yml"), [
29
+ "rules:",
30
+ " - key: everyone",
31
+ " segments: '*'",
32
+ " percentage: 0",
33
+ "expose: false",
34
+ ].join("\n"));
35
+ const config = (0, config_1.getProjectConfig)(root);
36
+ const datasource = new datasource_1.Datasource(config, root);
37
+ const feature = await datasource.readFeature("checkout");
38
+ const rulesByEnvironment = feature.rules;
39
+ const exposeByEnvironment = feature.expose;
40
+ expect(rulesByEnvironment?.staging?.[0]?.percentage).toBe(100);
41
+ expect(rulesByEnvironment?.production?.[0]?.percentage).toBe(0);
42
+ expect(exposeByEnvironment?.production).toBe(false);
43
+ });
44
+ it("throws when any environment feature file is missing", async () => {
45
+ const root = createSplitProject("module.exports = { environments: ['staging', 'production'], splitByEnvironment: true };");
46
+ writeFile(path.join(root, "features", "myFeature.yml"), ["key: myFeature", "description: My feature", "tags:", " - all", "bucketBy: userId"].join("\n"));
47
+ writeFile(path.join(root, "environments", "staging", "myFeature.yml"), ["rules:", " - key: everyone", " segments: '*'", " percentage: 100"].join("\n"));
48
+ const config = (0, config_1.getProjectConfig)(root);
49
+ const datasource = new datasource_1.Datasource(config, root);
50
+ await expect(datasource.readFeature("myFeature")).rejects.toMatchObject({
51
+ featurevisorFilePath: expect.stringContaining(path.join("environments", "production", "myFeature.yml")),
52
+ });
53
+ });
54
+ it("throws when base feature file still defines rules in split mode", async () => {
55
+ const root = createSplitProject("module.exports = { environments: ['staging'], splitByEnvironment: true };");
56
+ writeFile(path.join(root, "features", "foo.yml"), [
57
+ "key: foo",
58
+ "description: Foo",
59
+ "tags:",
60
+ " - all",
61
+ "bucketBy: userId",
62
+ "rules:",
63
+ " staging:",
64
+ " - key: everyone",
65
+ " segments: '*'",
66
+ " percentage: 100",
67
+ ].join("\n"));
68
+ writeFile(path.join(root, "environments", "staging", "foo.yml"), ["rules:", " - key: everyone", " segments: '*'", " percentage: 100"].join("\n"));
69
+ const config = (0, config_1.getProjectConfig)(root);
70
+ const datasource = new datasource_1.Datasource(config, root);
71
+ await expect(datasource.readFeature("foo")).rejects.toThrow("base file must not define rules, force, or expose when splitByEnvironment=true");
72
+ });
73
+ it("throws when environment file has unknown keys", async () => {
74
+ const root = createSplitProject("module.exports = { environments: ['staging'], splitByEnvironment: true };");
75
+ writeFile(path.join(root, "features", "foo.yml"), ["key: foo", "description: Foo", "tags:", " - all", "bucketBy: userId"].join("\n"));
76
+ writeFile(path.join(root, "environments", "staging", "foo.yml"), [
77
+ "rules:",
78
+ " - key: everyone",
79
+ " segments: '*'",
80
+ " percentage: 100",
81
+ "extraKey: not allowed",
82
+ ].join("\n"));
83
+ const config = (0, config_1.getProjectConfig)(root);
84
+ const datasource = new datasource_1.Datasource(config, root);
85
+ await expect(datasource.readFeature("foo")).rejects.toThrow("Unknown key(s) in environment feature file: extraKey");
86
+ });
87
+ });
88
+ //# sourceMappingURL=filesystemAdapter.spec.js.map