@featurevisor/core 2.12.0 → 2.14.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 (92) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/coverage/clover.xml +1663 -596
  3. package/coverage/coverage-final.json +24 -6
  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 +38 -8
  9. package/coverage/lcov-report/builder/mutateVariables.ts.html +400 -0
  10. package/coverage/lcov-report/builder/mutator.ts.html +796 -0
  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 +116 -0
  14. package/coverage/lcov-report/config/projectConfig.ts.html +676 -0
  15. package/coverage/lcov-report/datasource/adapter.ts.html +235 -0
  16. package/coverage/lcov-report/datasource/datasource.ts.html +862 -0
  17. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +1354 -0
  18. package/coverage/lcov-report/datasource/index.html +161 -0
  19. package/coverage/lcov-report/datasource/index.ts.html +94 -0
  20. package/coverage/lcov-report/index.html +83 -38
  21. package/coverage/lcov-report/linter/attributeSchema.ts.html +175 -0
  22. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +220 -0
  23. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +268 -0
  24. package/coverage/lcov-report/linter/conditionSchema.ts.html +38 -38
  25. package/coverage/lcov-report/linter/featureSchema.ts.html +956 -485
  26. package/coverage/lcov-report/linter/groupSchema.ts.html +226 -0
  27. package/coverage/lcov-report/linter/index.html +139 -19
  28. package/coverage/lcov-report/linter/lintProject.ts.html +1840 -0
  29. package/coverage/lcov-report/linter/mutationNotation.ts.html +1309 -0
  30. package/coverage/lcov-report/linter/printError.ts.html +238 -0
  31. package/coverage/lcov-report/linter/schema.ts.html +116 -116
  32. package/coverage/lcov-report/linter/segmentSchema.ts.html +5 -5
  33. package/coverage/lcov-report/linter/testSchema.ts.html +550 -0
  34. package/coverage/lcov-report/list/index.html +1 -1
  35. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  36. package/coverage/lcov-report/parsers/index.html +20 -5
  37. package/coverage/lcov-report/parsers/index.ts.html +151 -0
  38. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  39. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  40. package/coverage/lcov-report/tester/cliFormat.ts.html +103 -0
  41. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  42. package/coverage/lcov-report/tester/index.html +20 -5
  43. package/coverage/lcov-report/utils/git.ts.html +481 -0
  44. package/coverage/lcov-report/utils/index.html +116 -0
  45. package/coverage/lcov.info +3253 -1214
  46. package/lib/builder/buildDatafile.js +8 -3
  47. package/lib/builder/buildDatafile.js.map +1 -1
  48. package/lib/builder/mutateVariables.d.ts +14 -0
  49. package/lib/builder/mutateVariables.js +90 -0
  50. package/lib/builder/mutateVariables.js.map +1 -0
  51. package/lib/builder/mutateVariables.spec.d.ts +1 -0
  52. package/lib/builder/mutateVariables.spec.js +1045 -0
  53. package/lib/builder/mutateVariables.spec.js.map +1 -0
  54. package/lib/builder/mutator.d.ts +20 -0
  55. package/lib/builder/mutator.js +223 -0
  56. package/lib/builder/mutator.js.map +1 -0
  57. package/lib/builder/mutator.spec.d.ts +1 -0
  58. package/lib/builder/mutator.spec.js +368 -0
  59. package/lib/builder/mutator.spec.js.map +1 -0
  60. package/lib/linter/featureSchema.d.ts +7 -7
  61. package/lib/linter/featureSchema.js +138 -62
  62. package/lib/linter/featureSchema.js.map +1 -1
  63. package/lib/linter/featureSchema.spec.js +150 -0
  64. package/lib/linter/featureSchema.spec.js.map +1 -1
  65. package/lib/linter/lintProject.d.ts +17 -1
  66. package/lib/linter/lintProject.js +191 -198
  67. package/lib/linter/lintProject.js.map +1 -1
  68. package/lib/linter/lintProject.spec.d.ts +1 -0
  69. package/lib/linter/lintProject.spec.js +86 -0
  70. package/lib/linter/lintProject.spec.js.map +1 -0
  71. package/lib/linter/mutationNotation.d.ts +47 -0
  72. package/lib/linter/mutationNotation.js +381 -0
  73. package/lib/linter/mutationNotation.js.map +1 -0
  74. package/lib/linter/mutationNotation.spec.d.ts +1 -0
  75. package/lib/linter/mutationNotation.spec.js +549 -0
  76. package/lib/linter/mutationNotation.spec.js.map +1 -0
  77. package/lib/linter/printError.d.ts +7 -0
  78. package/lib/linter/printError.js +30 -15
  79. package/lib/linter/printError.js.map +1 -1
  80. package/package.json +2 -2
  81. package/src/builder/buildDatafile.ts +29 -3
  82. package/src/builder/mutateVariables.spec.ts +1134 -0
  83. package/src/builder/mutateVariables.ts +105 -0
  84. package/src/builder/mutator.spec.ts +413 -0
  85. package/src/builder/mutator.ts +237 -0
  86. package/src/linter/featureSchema.spec.ts +182 -0
  87. package/src/linter/featureSchema.ts +254 -97
  88. package/src/linter/lintProject.spec.ts +115 -0
  89. package/src/linter/lintProject.ts +256 -254
  90. package/src/linter/mutationNotation.spec.ts +642 -0
  91. package/src/linter/mutationNotation.ts +408 -0
  92. package/src/linter/printError.ts +40 -16
@@ -0,0 +1,549 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mutationNotation_1 = require("./mutationNotation");
4
+ describe("mutationNotation.ts", () => {
5
+ describe("isMutationKey", () => {
6
+ it("returns false for empty string", () => {
7
+ expect((0, mutationNotation_1.isMutationKey)("")).toBe(false);
8
+ });
9
+ it("returns false for whitespace-only", () => {
10
+ expect((0, mutationNotation_1.isMutationKey)(" ")).toBe(false);
11
+ });
12
+ it("returns false for plain variable name (no path, no operation)", () => {
13
+ expect((0, mutationNotation_1.isMutationKey)("foo")).toBe(false);
14
+ expect((0, mutationNotation_1.isMutationKey)("title")).toBe(false);
15
+ expect((0, mutationNotation_1.isMutationKey)("config")).toBe(false);
16
+ });
17
+ it("returns true when key contains dot (path)", () => {
18
+ expect((0, mutationNotation_1.isMutationKey)("foo.bar")).toBe(true);
19
+ expect((0, mutationNotation_1.isMutationKey)("config.width")).toBe(true);
20
+ expect((0, mutationNotation_1.isMutationKey)("a.b.c")).toBe(true);
21
+ });
22
+ it("returns true when key contains bracket (array index or selector)", () => {
23
+ expect((0, mutationNotation_1.isMutationKey)("items[0]")).toBe(true);
24
+ expect((0, mutationNotation_1.isMutationKey)("tags[1]")).toBe(true);
25
+ expect((0, mutationNotation_1.isMutationKey)("items[id=1]")).toBe(true);
26
+ });
27
+ it("returns true when key ends with :append", () => {
28
+ expect((0, mutationNotation_1.isMutationKey)("tags:append")).toBe(true);
29
+ expect((0, mutationNotation_1.isMutationKey)("items:append")).toBe(true);
30
+ });
31
+ it("returns true when key ends with :prepend", () => {
32
+ expect((0, mutationNotation_1.isMutationKey)("tags:prepend")).toBe(true);
33
+ });
34
+ it("returns true when key ends with :after", () => {
35
+ expect((0, mutationNotation_1.isMutationKey)("items[id=1]:after")).toBe(true);
36
+ });
37
+ it("returns true when key ends with :before", () => {
38
+ expect((0, mutationNotation_1.isMutationKey)("items[id=1]:before")).toBe(true);
39
+ });
40
+ it("returns true when key ends with :remove", () => {
41
+ expect((0, mutationNotation_1.isMutationKey)("config.compact:remove")).toBe(true);
42
+ expect((0, mutationNotation_1.isMutationKey)("items[0]:remove")).toBe(true);
43
+ });
44
+ it("trims input before checking", () => {
45
+ expect((0, mutationNotation_1.isMutationKey)(" config.width ")).toBe(true);
46
+ expect((0, mutationNotation_1.isMutationKey)(" tags:append ")).toBe(true);
47
+ });
48
+ });
49
+ describe("parseMutationKey", () => {
50
+ it("returns null for empty string", () => {
51
+ expect((0, mutationNotation_1.parseMutationKey)("")).toBeNull();
52
+ });
53
+ it("returns null for whitespace-only", () => {
54
+ expect((0, mutationNotation_1.parseMutationKey)(" ")).toBeNull();
55
+ });
56
+ it("parses plain variable name as rootKey only, operation set", () => {
57
+ const r = (0, mutationNotation_1.parseMutationKey)("foo");
58
+ expect(r).not.toBeNull();
59
+ expect(r.rootKey).toBe("foo");
60
+ expect(r.pathSegments).toEqual([]);
61
+ expect(r.allSegments).toEqual([{ key: "foo" }]);
62
+ expect(r.operation).toBe("set");
63
+ });
64
+ it("parses dot path: rootKey and single path segment", () => {
65
+ const r = (0, mutationNotation_1.parseMutationKey)("config.width");
66
+ expect(r).not.toBeNull();
67
+ expect(r.rootKey).toBe("config");
68
+ expect(r.pathSegments).toEqual([{ key: "width" }]);
69
+ expect(r.allSegments).toEqual([{ key: "config" }, { key: "width" }]);
70
+ expect(r.operation).toBe("set");
71
+ });
72
+ it("parses deep dot path", () => {
73
+ const r = (0, mutationNotation_1.parseMutationKey)("settings.display.fontSize");
74
+ expect(r).not.toBeNull();
75
+ expect(r.rootKey).toBe("settings");
76
+ expect(r.pathSegments).toEqual([{ key: "display" }, { key: "fontSize" }]);
77
+ expect(r.allSegments).toEqual([
78
+ { key: "settings" },
79
+ { key: "display" },
80
+ { key: "fontSize" },
81
+ ]);
82
+ });
83
+ it("parses array index notation", () => {
84
+ const r = (0, mutationNotation_1.parseMutationKey)("items[0]");
85
+ expect(r).not.toBeNull();
86
+ expect(r.rootKey).toBe("items");
87
+ expect(r.pathSegments).toEqual([{ key: "", index: 0 }]);
88
+ expect(r.allSegments).toEqual([{ key: "items", index: 0 }]);
89
+ expect(r.operation).toBe("set");
90
+ });
91
+ it("parses array index then property", () => {
92
+ const r = (0, mutationNotation_1.parseMutationKey)("items[0].name");
93
+ expect(r).not.toBeNull();
94
+ expect(r.rootKey).toBe("items");
95
+ expect(r.pathSegments).toEqual([{ key: "", index: 0 }, { key: "name" }]);
96
+ expect(r.allSegments).toEqual([{ key: "items", index: 0 }, { key: "name" }]);
97
+ });
98
+ it("parses selector notation", () => {
99
+ const r = (0, mutationNotation_1.parseMutationKey)("items[id=1]");
100
+ expect(r).not.toBeNull();
101
+ expect(r.rootKey).toBe("items");
102
+ expect(r.pathSegments).toEqual([{ key: "", selector: { prop: "id", value: "1" } }]);
103
+ expect(r.allSegments).toEqual([{ key: "items", selector: { prop: "id", value: "1" } }]);
104
+ });
105
+ it("parses key starting with bracket (root-level array segment)", () => {
106
+ const r = (0, mutationNotation_1.parseMutationKey)("[0].name");
107
+ expect(r).not.toBeNull();
108
+ expect(r.rootKey).toBe("");
109
+ expect(r.pathSegments).toEqual([{ key: "", index: 0 }, { key: "name" }]);
110
+ expect(r.allSegments).toEqual([{ key: "", index: 0 }, { key: "name" }]);
111
+ });
112
+ it("parses :append operation", () => {
113
+ const r = (0, mutationNotation_1.parseMutationKey)("tags:append");
114
+ expect(r).not.toBeNull();
115
+ expect(r.rootKey).toBe("tags");
116
+ expect(r.pathSegments).toEqual([]);
117
+ expect(r.operation).toBe("append");
118
+ });
119
+ it("parses :prepend operation", () => {
120
+ const r = (0, mutationNotation_1.parseMutationKey)("tags:prepend");
121
+ expect(r).not.toBeNull();
122
+ expect(r.rootKey).toBe("tags");
123
+ expect(r.operation).toBe("prepend");
124
+ });
125
+ it("parses :remove on property", () => {
126
+ const r = (0, mutationNotation_1.parseMutationKey)("config.compact:remove");
127
+ expect(r).not.toBeNull();
128
+ expect(r.rootKey).toBe("config");
129
+ expect(r.pathSegments).toEqual([{ key: "compact" }]);
130
+ expect(r.operation).toBe("remove");
131
+ });
132
+ it("parses :remove on array index", () => {
133
+ const r = (0, mutationNotation_1.parseMutationKey)("items[2]:remove");
134
+ expect(r).not.toBeNull();
135
+ expect(r.rootKey).toBe("items");
136
+ expect(r.pathSegments).toEqual([{ key: "", index: 2 }]);
137
+ expect(r.operation).toBe("remove");
138
+ });
139
+ it("parses :after with selector", () => {
140
+ const r = (0, mutationNotation_1.parseMutationKey)("items[id=2]:after");
141
+ expect(r).not.toBeNull();
142
+ expect(r.rootKey).toBe("items");
143
+ expect(r.pathSegments).toEqual([{ key: "", selector: { prop: "id", value: "2" } }]);
144
+ expect(r.operation).toBe("after");
145
+ });
146
+ it("parses :before with selector", () => {
147
+ const r = (0, mutationNotation_1.parseMutationKey)("items[id=2]:before");
148
+ expect(r).not.toBeNull();
149
+ expect(r.operation).toBe("before");
150
+ });
151
+ it("trims input", () => {
152
+ const r = (0, mutationNotation_1.parseMutationKey)(" config.width ");
153
+ expect(r).not.toBeNull();
154
+ expect(r.rootKey).toBe("config");
155
+ expect(r.pathSegments).toEqual([{ key: "width" }]);
156
+ });
157
+ });
158
+ describe("resolveSchemaAtPath", () => {
159
+ const objectSchema = {
160
+ type: "object",
161
+ properties: {
162
+ width: { type: "integer" },
163
+ theme: { type: "string" },
164
+ nested: {
165
+ type: "object",
166
+ properties: {
167
+ deep: { type: "string" },
168
+ },
169
+ },
170
+ },
171
+ };
172
+ const arraySchema = {
173
+ type: "array",
174
+ items: {
175
+ type: "object",
176
+ properties: {
177
+ id: { type: "string" },
178
+ name: { type: "string" },
179
+ },
180
+ },
181
+ };
182
+ it("returns null when variableSchema is null", () => {
183
+ expect((0, mutationNotation_1.resolveSchemaAtPath)(null, [])).toBeNull();
184
+ expect((0, mutationNotation_1.resolveSchemaAtPath)(null, [{ key: "width" }])).toBeNull();
185
+ });
186
+ it("returns resolved schema for empty path (root)", () => {
187
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, []);
188
+ expect(result).toEqual(objectSchema);
189
+ });
190
+ it("resolves schema ref when variableSchema has schema key and schemasByKey provided", () => {
191
+ const refSchema = { type: "object", properties: { x: { type: "string" } } };
192
+ const variableSchema = { schema: "MyRef" };
193
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(variableSchema, [], { MyRef: refSchema });
194
+ expect(result).toEqual(refSchema);
195
+ });
196
+ it("returns unresolved ref object when schema ref is missing in schemasByKey (no resolution)", () => {
197
+ const variableSchema = { schema: "Missing" };
198
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(variableSchema, [], {});
199
+ expect(result).toEqual(variableSchema);
200
+ });
201
+ it("resolves one level of path (object property)", () => {
202
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, [{ key: "width" }]);
203
+ expect(result).toEqual({ type: "integer" });
204
+ });
205
+ it("resolves nested path", () => {
206
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, [{ key: "nested" }, { key: "deep" }]);
207
+ expect(result).toEqual({ type: "string" });
208
+ });
209
+ it("returns null when path property does not exist", () => {
210
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, [{ key: "unknown" }]);
211
+ expect(result).toBeNull();
212
+ });
213
+ it("returns null when stepping into non-object", () => {
214
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, [{ key: "width" }, { key: "foo" }]);
215
+ expect(result).toBeNull();
216
+ });
217
+ it("resolves array items schema for index segment", () => {
218
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(arraySchema, [{ key: "", index: 0 }]);
219
+ expect(result).toEqual({
220
+ type: "object",
221
+ properties: { id: { type: "string" }, name: { type: "string" } },
222
+ });
223
+ });
224
+ it("resolves array item then property", () => {
225
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(arraySchema, [{ key: "", index: 0 }, { key: "name" }]);
226
+ expect(result).toEqual({ type: "string" });
227
+ });
228
+ it("returns null when stepping into non-array with index segment", () => {
229
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(objectSchema, [{ key: "", index: 0 }]);
230
+ expect(result).toBeNull();
231
+ });
232
+ it("returns null when schema has oneOf (path through oneOf invalid)", () => {
233
+ const oneOfSchema = {
234
+ oneOf: [{ type: "string" }, { type: "integer" }],
235
+ };
236
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(oneOfSchema, [{ key: "any" }]);
237
+ expect(result).toBeNull();
238
+ });
239
+ it("resolves nested ref in properties when schemasByKey provided", () => {
240
+ const linkSchema = { type: "object", properties: { url: { type: "string" } } };
241
+ const root = {
242
+ type: "object",
243
+ properties: {
244
+ mainLink: { schema: "Link" },
245
+ },
246
+ };
247
+ const result = (0, mutationNotation_1.resolveSchemaAtPath)(root, [{ key: "mainLink" }], { Link: linkSchema });
248
+ expect(result).toEqual(linkSchema);
249
+ });
250
+ });
251
+ describe("parsePathMapKey", () => {
252
+ it("returns null for empty string", () => {
253
+ expect((0, mutationNotation_1.parsePathMapKey)("")).toBeNull();
254
+ });
255
+ it("returns null when parseMutationKey returns null", () => {
256
+ expect((0, mutationNotation_1.parsePathMapKey)(" ")).toBeNull();
257
+ });
258
+ it("parses dot path into segments", () => {
259
+ expect((0, mutationNotation_1.parsePathMapKey)("display.fontSize")).toEqual([
260
+ { key: "display" },
261
+ { key: "fontSize" },
262
+ ]);
263
+ });
264
+ it("parses bracket-first path", () => {
265
+ expect((0, mutationNotation_1.parsePathMapKey)("[0].name")).toEqual([{ key: "", index: 0 }, { key: "name" }]);
266
+ });
267
+ it("parses single key", () => {
268
+ expect((0, mutationNotation_1.parsePathMapKey)("label")).toEqual([{ key: "label" }]);
269
+ });
270
+ it("parses deep path", () => {
271
+ expect((0, mutationNotation_1.parsePathMapKey)("config.nested.deep")).toEqual([
272
+ { key: "config" },
273
+ { key: "nested" },
274
+ { key: "deep" },
275
+ ]);
276
+ });
277
+ it("parses path with array index in middle", () => {
278
+ expect((0, mutationNotation_1.parsePathMapKey)("rows[1].label")).toEqual([
279
+ { key: "rows", index: 1 },
280
+ { key: "label" },
281
+ ]);
282
+ });
283
+ });
284
+ describe("validateMutationKey", () => {
285
+ const objectSchema = {
286
+ type: "object",
287
+ properties: {
288
+ theme: { type: "string" },
289
+ compact: { type: "boolean" },
290
+ width: { type: "integer" },
291
+ },
292
+ required: ["compact"],
293
+ };
294
+ const arraySchema = {
295
+ type: "array",
296
+ items: { type: "string" },
297
+ };
298
+ const arrayOfObjectsSchema = {
299
+ type: "array",
300
+ items: {
301
+ type: "object",
302
+ properties: { id: { type: "string" }, name: { type: "string" } },
303
+ },
304
+ };
305
+ const nestedObjectSchema = {
306
+ type: "object",
307
+ properties: {
308
+ config: {
309
+ type: "object",
310
+ properties: {
311
+ width: { type: "integer" },
312
+ optionalKey: { type: "string" },
313
+ },
314
+ required: ["width"],
315
+ },
316
+ },
317
+ };
318
+ const variableSchemaByKey = {
319
+ config: objectSchema,
320
+ tags: arraySchema,
321
+ items: arrayOfObjectsSchema,
322
+ settings: nestedObjectSchema,
323
+ };
324
+ it("returns invalid when key is empty (parseMutationKey null)", () => {
325
+ const r = (0, mutationNotation_1.validateMutationKey)("", variableSchemaByKey);
326
+ expect(r.valid).toBe(false);
327
+ expect(r.error).toContain("Invalid mutation notation");
328
+ expect(r.operation).toBe("set");
329
+ });
330
+ it("returns invalid when key has no root (e.g. [0] only)", () => {
331
+ const r = (0, mutationNotation_1.validateMutationKey)("[0]", variableSchemaByKey);
332
+ expect(r.valid).toBe(false);
333
+ expect(r.error).toContain("must start with a variable name");
334
+ });
335
+ it("returns invalid when root variable is not in variablesSchema", () => {
336
+ const r = (0, mutationNotation_1.validateMutationKey)("unknownVar.foo", variableSchemaByKey);
337
+ expect(r.valid).toBe(false);
338
+ expect(r.error).toContain("not defined in");
339
+ expect(r.rootKey).toBe("unknownVar");
340
+ });
341
+ it("returns invalid when variable has schema ref but path fails (unresolved ref has no properties)", () => {
342
+ const schemas = {
343
+ myVar: { schema: "MissingRef" },
344
+ };
345
+ const r = (0, mutationNotation_1.validateMutationKey)("myVar.foo", schemas, {});
346
+ expect(r.valid).toBe(false);
347
+ expect(r.error).toMatch(/path does not exist|could not be loaded/);
348
+ expect(r.error).toContain("myVar");
349
+ });
350
+ it("returns invalid when root schema is oneOf and path has segments", () => {
351
+ const schemas = {
352
+ oneOfVar: { oneOf: [{ type: "string" }, { type: "integer" }] },
353
+ };
354
+ const r = (0, mutationNotation_1.validateMutationKey)("oneOfVar.foo", schemas);
355
+ expect(r.valid).toBe(false);
356
+ expect(r.error).toContain("oneOf");
357
+ expect(r.error).toContain("path resolution not defined");
358
+ });
359
+ describe("operation: set", () => {
360
+ it("valid when setting whole variable (no path)", () => {
361
+ const r = (0, mutationNotation_1.validateMutationKey)("config", variableSchemaByKey);
362
+ expect(r.valid).toBe(true);
363
+ expect(r.operation).toBe("set");
364
+ expect(r.valueSchema).toEqual(objectSchema);
365
+ });
366
+ it("valid when path exists in schema", () => {
367
+ const r = (0, mutationNotation_1.validateMutationKey)("config.width", variableSchemaByKey);
368
+ expect(r.valid).toBe(true);
369
+ expect(r.valueSchema).toEqual({ type: "integer" });
370
+ });
371
+ it("invalid when path does not exist", () => {
372
+ const r = (0, mutationNotation_1.validateMutationKey)("config.nonexistent", variableSchemaByKey);
373
+ expect(r.valid).toBe(false);
374
+ expect(r.error).toContain("path does not exist");
375
+ });
376
+ it("invalid when target schema is oneOf", () => {
377
+ const schemas = {
378
+ x: {
379
+ type: "object",
380
+ properties: {
381
+ choice: { oneOf: [{ type: "string" }, { type: "integer" }] },
382
+ },
383
+ },
384
+ };
385
+ const r = (0, mutationNotation_1.validateMutationKey)("x.choice", schemas);
386
+ expect(r.valid).toBe(false);
387
+ expect(r.error).toContain("oneOf");
388
+ expect(r.error).toContain("mutation target must be a single schema");
389
+ });
390
+ });
391
+ describe("operation: append / prepend", () => {
392
+ it("valid on root array variable", () => {
393
+ const rAppend = (0, mutationNotation_1.validateMutationKey)("tags:append", variableSchemaByKey);
394
+ expect(rAppend.valid).toBe(true);
395
+ expect(rAppend.operation).toBe("append");
396
+ expect(rAppend.valueSchema).toEqual({ type: "string" });
397
+ const rPrepend = (0, mutationNotation_1.validateMutationKey)("tags:prepend", variableSchemaByKey);
398
+ expect(rPrepend.valid).toBe(true);
399
+ expect(rPrepend.operation).toBe("prepend");
400
+ expect(rPrepend.valueSchema).toEqual({ type: "string" });
401
+ });
402
+ it("invalid when path does not exist", () => {
403
+ const r = (0, mutationNotation_1.validateMutationKey)("config.nested:append", variableSchemaByKey);
404
+ expect(r.valid).toBe(false);
405
+ expect(r.error).toContain("path does not exist");
406
+ });
407
+ it("invalid when path points to non-array", () => {
408
+ const r = (0, mutationNotation_1.validateMutationKey)("config.width:append", variableSchemaByKey);
409
+ expect(r.valid).toBe(false);
410
+ expect(r.error).toContain("only allowed on array");
411
+ expect(r.error).toContain("does not point to an array");
412
+ });
413
+ it("valid when array items is oneOf (valueSchema is the oneOf schema)", () => {
414
+ const oneOfItems = {
415
+ oneOf: [{ type: "string" }, { type: "integer" }],
416
+ };
417
+ const schemas = {
418
+ arr: {
419
+ type: "array",
420
+ items: oneOfItems,
421
+ },
422
+ };
423
+ const r = (0, mutationNotation_1.validateMutationKey)("arr:append", schemas);
424
+ expect(r.valid).toBe(true);
425
+ expect(r.valueSchema).toEqual(oneOfItems);
426
+ });
427
+ it("valid on nested array path when schema has array at that path", () => {
428
+ const schemas = {
429
+ root: {
430
+ type: "object",
431
+ properties: {
432
+ list: { type: "array", items: { type: "string" } },
433
+ },
434
+ },
435
+ };
436
+ const r = (0, mutationNotation_1.validateMutationKey)("root.list:append", schemas);
437
+ expect(r.valid).toBe(true);
438
+ expect(r.valueSchema).toEqual({ type: "string" });
439
+ });
440
+ });
441
+ describe("operation: after / before", () => {
442
+ it("valid on array with index segment", () => {
443
+ const r = (0, mutationNotation_1.validateMutationKey)("items[1]:after", variableSchemaByKey);
444
+ expect(r.valid).toBe(true);
445
+ expect(r.operation).toBe("after");
446
+ expect(r.valueSchema).toEqual({
447
+ type: "object",
448
+ properties: { id: { type: "string" }, name: { type: "string" } },
449
+ });
450
+ });
451
+ it("valid on array with selector segment", () => {
452
+ const r = (0, mutationNotation_1.validateMutationKey)("items[id=2]:before", variableSchemaByKey);
453
+ expect(r.valid).toBe(true);
454
+ expect(r.operation).toBe("before");
455
+ });
456
+ it("invalid when path does not exist or does not point to array element", () => {
457
+ const r = (0, mutationNotation_1.validateMutationKey)("config.fake[0]:after", variableSchemaByKey);
458
+ expect(r.valid).toBe(false);
459
+ expect(r.error).toMatch(/path does not exist|does not point to an array/);
460
+ });
461
+ it("invalid when array items is oneOf", () => {
462
+ const schemas = {
463
+ arr: {
464
+ type: "array",
465
+ items: { oneOf: [{ type: "string" }] },
466
+ },
467
+ };
468
+ const r = (0, mutationNotation_1.validateMutationKey)("arr[0]:after", schemas);
469
+ expect(r.valid).toBe(false);
470
+ expect(r.error).toContain("oneOf");
471
+ });
472
+ });
473
+ describe("operation: remove", () => {
474
+ it("valid when removing optional object property", () => {
475
+ const r = (0, mutationNotation_1.validateMutationKey)("settings.config.optionalKey:remove", variableSchemaByKey);
476
+ expect(r.valid).toBe(true);
477
+ expect(r.operation).toBe("remove");
478
+ expect(r.valueSchema).toBeNull();
479
+ });
480
+ it("invalid when removing required object property", () => {
481
+ const r = (0, mutationNotation_1.validateMutationKey)("config.compact:remove", variableSchemaByKey);
482
+ expect(r.valid).toBe(false);
483
+ expect(r.error).toContain("Cannot remove required property");
484
+ expect(r.error).toContain("compact");
485
+ expect(r.error).toContain("required");
486
+ });
487
+ it("invalid when removing required nested property", () => {
488
+ const r = (0, mutationNotation_1.validateMutationKey)("settings.config.width:remove", variableSchemaByKey);
489
+ expect(r.valid).toBe(false);
490
+ expect(r.error).toContain("Cannot remove required property");
491
+ expect(r.error).toContain("width");
492
+ });
493
+ it("valid when removing array element by index", () => {
494
+ const r = (0, mutationNotation_1.validateMutationKey)("items[0]:remove", variableSchemaByKey);
495
+ expect(r.valid).toBe(true);
496
+ expect(r.operation).toBe("remove");
497
+ expect(r.valueSchema).toBeNull();
498
+ });
499
+ it("valid when removing array element by selector", () => {
500
+ const r = (0, mutationNotation_1.validateMutationKey)("items[id=1]:remove", variableSchemaByKey);
501
+ expect(r.valid).toBe(true);
502
+ });
503
+ it("invalid when path does not exist", () => {
504
+ const r = (0, mutationNotation_1.validateMutationKey)("config.bad:remove", variableSchemaByKey);
505
+ expect(r.valid).toBe(false);
506
+ expect(r.error).toContain("path does not exist");
507
+ });
508
+ });
509
+ describe("with schema ref resolution", () => {
510
+ it("valid when variable schema is ref and schemasByKey resolves it", () => {
511
+ const resolvedSchema = {
512
+ type: "object",
513
+ properties: { title: { type: "string" }, url: { type: "string" } },
514
+ };
515
+ const schemas = {
516
+ link: { schema: "Link" },
517
+ };
518
+ const r = (0, mutationNotation_1.validateMutationKey)("link.title", schemas, { Link: resolvedSchema });
519
+ expect(r.valid).toBe(true);
520
+ expect(r.valueSchema).toEqual({ type: "string" });
521
+ });
522
+ it("valid set on resolved ref root", () => {
523
+ const resolvedSchema = { type: "object", properties: { x: { type: "string" } } };
524
+ const schemas = { v: { schema: "R" } };
525
+ const r = (0, mutationNotation_1.validateMutationKey)("v", schemas, { R: resolvedSchema });
526
+ expect(r.valid).toBe(true);
527
+ expect(r.valueSchema).toEqual(resolvedSchema);
528
+ });
529
+ });
530
+ describe("edge cases", () => {
531
+ it("valid for nested path set when all steps exist", () => {
532
+ const r = (0, mutationNotation_1.validateMutationKey)("settings.config.width", variableSchemaByKey);
533
+ expect(r.valid).toBe(true);
534
+ expect(r.valueSchema).toEqual({ type: "integer" });
535
+ });
536
+ it("invalid for path into primitive (no properties)", () => {
537
+ const r = (0, mutationNotation_1.validateMutationKey)("config.theme.foo", variableSchemaByKey);
538
+ expect(r.valid).toBe(false);
539
+ });
540
+ it("returns correct pathSegments and rootKey in result", () => {
541
+ const r = (0, mutationNotation_1.validateMutationKey)("config.theme", variableSchemaByKey);
542
+ expect(r.valid).toBe(true);
543
+ expect(r.rootKey).toBe("config");
544
+ expect(r.pathSegments).toEqual([{ key: "theme" }]);
545
+ });
546
+ });
547
+ });
548
+ });
549
+ //# sourceMappingURL=mutationNotation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationNotation.spec.js","sourceRoot":"","sources":["../../src/linter/mutationNotation.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
1
  import { ZodError } from "zod";
2
+ export interface LintIssueFromZod {
3
+ message: string;
4
+ path: (string | number)[];
5
+ code?: string;
6
+ value?: unknown;
7
+ }
8
+ export declare function getLintIssuesFromZodError(e: ZodError): LintIssueFromZod[];
2
9
  export declare function printZodError(e: ZodError): void;