@featurevisor/core 2.20.0 → 2.22.1

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 (87) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/coverage/clover.xml +1286 -515
  3. package/coverage/coverage-final.json +17 -16
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +1 -1
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +1 -1
  11. package/coverage/lcov-report/builder/hashes.ts.html +1 -1
  12. package/coverage/lcov-report/builder/index.html +1 -1
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  14. package/coverage/lcov-report/builder/mutator.ts.html +1 -1
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +1 -1
  19. package/coverage/lcov-report/config/projectConfig.ts.html +42 -42
  20. package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
  21. package/coverage/lcov-report/datasource/datasource.ts.html +43 -43
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +48 -48
  23. package/coverage/lcov-report/datasource/index.html +19 -19
  24. package/coverage/lcov-report/datasource/index.ts.html +4 -4
  25. package/coverage/lcov-report/generate-code/index.html +116 -0
  26. package/coverage/lcov-report/generate-code/typescript.ts.html +3004 -0
  27. package/coverage/lcov-report/index.html +44 -29
  28. package/coverage/lcov-report/linter/attributeSchema.ts.html +1815 -30
  29. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
  30. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
  31. package/coverage/lcov-report/linter/conditionSchema.ts.html +1606 -157
  32. package/coverage/lcov-report/linter/featureSchema.ts.html +56 -56
  33. package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
  34. package/coverage/lcov-report/linter/index.html +39 -39
  35. package/coverage/lcov-report/linter/lintProject.ts.html +189 -78
  36. package/coverage/lcov-report/linter/mutationNotation.ts.html +1 -1
  37. package/coverage/lcov-report/linter/printError.ts.html +1 -1
  38. package/coverage/lcov-report/linter/schema.ts.html +59 -59
  39. package/coverage/lcov-report/linter/segmentSchema.ts.html +3 -3
  40. package/coverage/lcov-report/linter/testSchema.ts.html +6 -6
  41. package/coverage/lcov-report/list/index.html +1 -1
  42. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  43. package/coverage/lcov-report/parsers/index.html +1 -1
  44. package/coverage/lcov-report/parsers/index.ts.html +4 -4
  45. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  46. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  47. package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
  48. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  49. package/coverage/lcov-report/tester/index.html +1 -1
  50. package/coverage/lcov-report/utils/extractKeys.ts.html +1 -1
  51. package/coverage/lcov-report/utils/git.ts.html +3 -3
  52. package/coverage/lcov-report/utils/index.html +1 -1
  53. package/coverage/lcov-report/utils/index.ts.html +1 -1
  54. package/coverage/lcov-report/utils/pretty.ts.html +1 -1
  55. package/coverage/lcov.info +2624 -926
  56. package/lib/generate-code/typescript.js +57 -29
  57. package/lib/generate-code/typescript.js.map +1 -1
  58. package/lib/generate-code/typescript.spec.d.ts +1 -0
  59. package/lib/generate-code/typescript.spec.js +78 -0
  60. package/lib/generate-code/typescript.spec.js.map +1 -0
  61. package/lib/linter/attributeSchema.d.ts +352 -20
  62. package/lib/linter/attributeSchema.js +426 -16
  63. package/lib/linter/attributeSchema.js.map +1 -1
  64. package/lib/linter/attributeSchema.spec.d.ts +1 -0
  65. package/lib/linter/attributeSchema.spec.js +266 -0
  66. package/lib/linter/attributeSchema.spec.js.map +1 -0
  67. package/lib/linter/conditionSchema.d.ts +2 -1
  68. package/lib/linter/conditionSchema.js +370 -100
  69. package/lib/linter/conditionSchema.js.map +1 -1
  70. package/lib/linter/conditionSchema.spec.js +200 -153
  71. package/lib/linter/conditionSchema.spec.js.map +1 -1
  72. package/lib/linter/featureSchema.spec.js +114 -3
  73. package/lib/linter/featureSchema.spec.js.map +1 -1
  74. package/lib/linter/lintProject.js +45 -14
  75. package/lib/linter/lintProject.js.map +1 -1
  76. package/lib/linter/segmentSchema.spec.js +71 -1
  77. package/lib/linter/segmentSchema.spec.js.map +1 -1
  78. package/package.json +5 -5
  79. package/src/generate-code/typescript.spec.ts +108 -0
  80. package/src/generate-code/typescript.ts +80 -34
  81. package/src/linter/attributeSchema.spec.ts +342 -0
  82. package/src/linter/attributeSchema.ts +613 -18
  83. package/src/linter/conditionSchema.spec.ts +231 -189
  84. package/src/linter/conditionSchema.ts +582 -99
  85. package/src/linter/featureSchema.spec.ts +129 -4
  86. package/src/linter/lintProject.ts +55 -18
  87. package/src/linter/segmentSchema.spec.ts +82 -1
@@ -1,32 +1,364 @@
1
+ import type { AttributeProperty } from "@featurevisor/types";
1
2
  import { z } from "zod";
2
- export declare function getAttributeZodSchema(): z.ZodObject<{
3
+ export declare function getAttributeZodSchema(): z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
3
4
  archived: z.ZodOptional<z.ZodBoolean>;
4
- type: z.ZodEnum<["boolean", "string", "integer", "double", "date", "semver", "object", "array"]>;
5
+ type: z.ZodOptional<z.ZodEnum<["boolean", "string", "integer", "double", "date", "semver", "object", "array"]>>;
5
6
  description: z.ZodString;
6
- properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
7
- type: z.ZodEnum<["boolean", "string", "integer", "double", "date", "semver", "array"]>;
8
- description: z.ZodOptional<z.ZodString>;
9
- }, "strip", z.ZodTypeAny, {
10
- type?: "string" | "boolean" | "integer" | "double" | "date" | "semver" | "array";
11
- description?: string;
12
- }, {
13
- type?: "string" | "boolean" | "integer" | "double" | "date" | "semver" | "array";
14
- description?: string;
15
- }>>>;
7
+ enum: z.ZodOptional<z.ZodArray<z.ZodType<import("@featurevisor/types").Value, z.ZodTypeDef, import("@featurevisor/types").Value>, "many">>;
8
+ const: z.ZodOptional<z.ZodType<import("@featurevisor/types").Value, z.ZodTypeDef, import("@featurevisor/types").Value>>;
9
+ minimum: z.ZodOptional<z.ZodNumber>;
10
+ maximum: z.ZodOptional<z.ZodNumber>;
11
+ minLength: z.ZodOptional<z.ZodNumber>;
12
+ maxLength: z.ZodOptional<z.ZodNumber>;
13
+ pattern: z.ZodOptional<z.ZodString>;
14
+ items: z.ZodOptional<z.ZodType<AttributeProperty, z.ZodTypeDef, AttributeProperty>>;
15
+ minItems: z.ZodOptional<z.ZodNumber>;
16
+ maxItems: z.ZodOptional<z.ZodNumber>;
17
+ uniqueItems: z.ZodOptional<z.ZodBoolean>;
18
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
19
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<AttributeProperty, z.ZodTypeDef, AttributeProperty>>>;
20
+ additionalProperties: z.ZodOptional<z.ZodType<AttributeProperty, z.ZodTypeDef, AttributeProperty>>;
21
+ oneOf: z.ZodOptional<z.ZodArray<z.ZodType<AttributeProperty, z.ZodTypeDef, AttributeProperty>, "many">>;
16
22
  }, "strict", z.ZodTypeAny, {
17
23
  archived?: boolean;
18
24
  type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
19
25
  description?: string;
20
- properties?: Record<string, {
21
- type?: "string" | "boolean" | "integer" | "double" | "date" | "semver" | "array";
22
- description?: string;
23
- }>;
26
+ enum?: import("@featurevisor/types").Value[];
27
+ const?: import("@featurevisor/types").Value;
28
+ minimum?: number;
29
+ maximum?: number;
30
+ minLength?: number;
31
+ maxLength?: number;
32
+ pattern?: string;
33
+ items?: AttributeProperty;
34
+ minItems?: number;
35
+ maxItems?: number;
36
+ uniqueItems?: boolean;
37
+ required?: string[];
38
+ properties?: Record<string, AttributeProperty>;
39
+ additionalProperties?: AttributeProperty;
40
+ oneOf?: AttributeProperty[];
24
41
  }, {
25
42
  archived?: boolean;
26
43
  type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
27
44
  description?: string;
28
- properties?: Record<string, {
29
- type?: "string" | "boolean" | "integer" | "double" | "date" | "semver" | "array";
30
- description?: string;
31
- }>;
45
+ enum?: import("@featurevisor/types").Value[];
46
+ const?: import("@featurevisor/types").Value;
47
+ minimum?: number;
48
+ maximum?: number;
49
+ minLength?: number;
50
+ maxLength?: number;
51
+ pattern?: string;
52
+ items?: AttributeProperty;
53
+ minItems?: number;
54
+ maxItems?: number;
55
+ uniqueItems?: boolean;
56
+ required?: string[];
57
+ properties?: Record<string, AttributeProperty>;
58
+ additionalProperties?: AttributeProperty;
59
+ oneOf?: AttributeProperty[];
60
+ }>, {
61
+ archived?: boolean;
62
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
63
+ description?: string;
64
+ enum?: import("@featurevisor/types").Value[];
65
+ const?: import("@featurevisor/types").Value;
66
+ minimum?: number;
67
+ maximum?: number;
68
+ minLength?: number;
69
+ maxLength?: number;
70
+ pattern?: string;
71
+ items?: AttributeProperty;
72
+ minItems?: number;
73
+ maxItems?: number;
74
+ uniqueItems?: boolean;
75
+ required?: string[];
76
+ properties?: Record<string, AttributeProperty>;
77
+ additionalProperties?: AttributeProperty;
78
+ oneOf?: AttributeProperty[];
79
+ }, {
80
+ archived?: boolean;
81
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
82
+ description?: string;
83
+ enum?: import("@featurevisor/types").Value[];
84
+ const?: import("@featurevisor/types").Value;
85
+ minimum?: number;
86
+ maximum?: number;
87
+ minLength?: number;
88
+ maxLength?: number;
89
+ pattern?: string;
90
+ items?: AttributeProperty;
91
+ minItems?: number;
92
+ maxItems?: number;
93
+ uniqueItems?: boolean;
94
+ required?: string[];
95
+ properties?: Record<string, AttributeProperty>;
96
+ additionalProperties?: AttributeProperty;
97
+ oneOf?: AttributeProperty[];
98
+ }>, {
99
+ archived?: boolean;
100
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
101
+ description?: string;
102
+ enum?: import("@featurevisor/types").Value[];
103
+ const?: import("@featurevisor/types").Value;
104
+ minimum?: number;
105
+ maximum?: number;
106
+ minLength?: number;
107
+ maxLength?: number;
108
+ pattern?: string;
109
+ items?: AttributeProperty;
110
+ minItems?: number;
111
+ maxItems?: number;
112
+ uniqueItems?: boolean;
113
+ required?: string[];
114
+ properties?: Record<string, AttributeProperty>;
115
+ additionalProperties?: AttributeProperty;
116
+ oneOf?: AttributeProperty[];
117
+ }, {
118
+ archived?: boolean;
119
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
120
+ description?: string;
121
+ enum?: import("@featurevisor/types").Value[];
122
+ const?: import("@featurevisor/types").Value;
123
+ minimum?: number;
124
+ maximum?: number;
125
+ minLength?: number;
126
+ maxLength?: number;
127
+ pattern?: string;
128
+ items?: AttributeProperty;
129
+ minItems?: number;
130
+ maxItems?: number;
131
+ uniqueItems?: boolean;
132
+ required?: string[];
133
+ properties?: Record<string, AttributeProperty>;
134
+ additionalProperties?: AttributeProperty;
135
+ oneOf?: AttributeProperty[];
136
+ }>, {
137
+ archived?: boolean;
138
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
139
+ description?: string;
140
+ enum?: import("@featurevisor/types").Value[];
141
+ const?: import("@featurevisor/types").Value;
142
+ minimum?: number;
143
+ maximum?: number;
144
+ minLength?: number;
145
+ maxLength?: number;
146
+ pattern?: string;
147
+ items?: AttributeProperty;
148
+ minItems?: number;
149
+ maxItems?: number;
150
+ uniqueItems?: boolean;
151
+ required?: string[];
152
+ properties?: Record<string, AttributeProperty>;
153
+ additionalProperties?: AttributeProperty;
154
+ oneOf?: AttributeProperty[];
155
+ }, {
156
+ archived?: boolean;
157
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
158
+ description?: string;
159
+ enum?: import("@featurevisor/types").Value[];
160
+ const?: import("@featurevisor/types").Value;
161
+ minimum?: number;
162
+ maximum?: number;
163
+ minLength?: number;
164
+ maxLength?: number;
165
+ pattern?: string;
166
+ items?: AttributeProperty;
167
+ minItems?: number;
168
+ maxItems?: number;
169
+ uniqueItems?: boolean;
170
+ required?: string[];
171
+ properties?: Record<string, AttributeProperty>;
172
+ additionalProperties?: AttributeProperty;
173
+ oneOf?: AttributeProperty[];
174
+ }>, {
175
+ archived?: boolean;
176
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
177
+ description?: string;
178
+ enum?: import("@featurevisor/types").Value[];
179
+ const?: import("@featurevisor/types").Value;
180
+ minimum?: number;
181
+ maximum?: number;
182
+ minLength?: number;
183
+ maxLength?: number;
184
+ pattern?: string;
185
+ items?: AttributeProperty;
186
+ minItems?: number;
187
+ maxItems?: number;
188
+ uniqueItems?: boolean;
189
+ required?: string[];
190
+ properties?: Record<string, AttributeProperty>;
191
+ additionalProperties?: AttributeProperty;
192
+ oneOf?: AttributeProperty[];
193
+ }, {
194
+ archived?: boolean;
195
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
196
+ description?: string;
197
+ enum?: import("@featurevisor/types").Value[];
198
+ const?: import("@featurevisor/types").Value;
199
+ minimum?: number;
200
+ maximum?: number;
201
+ minLength?: number;
202
+ maxLength?: number;
203
+ pattern?: string;
204
+ items?: AttributeProperty;
205
+ minItems?: number;
206
+ maxItems?: number;
207
+ uniqueItems?: boolean;
208
+ required?: string[];
209
+ properties?: Record<string, AttributeProperty>;
210
+ additionalProperties?: AttributeProperty;
211
+ oneOf?: AttributeProperty[];
212
+ }>, {
213
+ archived?: boolean;
214
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
215
+ description?: string;
216
+ enum?: import("@featurevisor/types").Value[];
217
+ const?: import("@featurevisor/types").Value;
218
+ minimum?: number;
219
+ maximum?: number;
220
+ minLength?: number;
221
+ maxLength?: number;
222
+ pattern?: string;
223
+ items?: AttributeProperty;
224
+ minItems?: number;
225
+ maxItems?: number;
226
+ uniqueItems?: boolean;
227
+ required?: string[];
228
+ properties?: Record<string, AttributeProperty>;
229
+ additionalProperties?: AttributeProperty;
230
+ oneOf?: AttributeProperty[];
231
+ }, {
232
+ archived?: boolean;
233
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
234
+ description?: string;
235
+ enum?: import("@featurevisor/types").Value[];
236
+ const?: import("@featurevisor/types").Value;
237
+ minimum?: number;
238
+ maximum?: number;
239
+ minLength?: number;
240
+ maxLength?: number;
241
+ pattern?: string;
242
+ items?: AttributeProperty;
243
+ minItems?: number;
244
+ maxItems?: number;
245
+ uniqueItems?: boolean;
246
+ required?: string[];
247
+ properties?: Record<string, AttributeProperty>;
248
+ additionalProperties?: AttributeProperty;
249
+ oneOf?: AttributeProperty[];
250
+ }>, {
251
+ archived?: boolean;
252
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
253
+ description?: string;
254
+ enum?: import("@featurevisor/types").Value[];
255
+ const?: import("@featurevisor/types").Value;
256
+ minimum?: number;
257
+ maximum?: number;
258
+ minLength?: number;
259
+ maxLength?: number;
260
+ pattern?: string;
261
+ items?: AttributeProperty;
262
+ minItems?: number;
263
+ maxItems?: number;
264
+ uniqueItems?: boolean;
265
+ required?: string[];
266
+ properties?: Record<string, AttributeProperty>;
267
+ additionalProperties?: AttributeProperty;
268
+ oneOf?: AttributeProperty[];
269
+ }, {
270
+ archived?: boolean;
271
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
272
+ description?: string;
273
+ enum?: import("@featurevisor/types").Value[];
274
+ const?: import("@featurevisor/types").Value;
275
+ minimum?: number;
276
+ maximum?: number;
277
+ minLength?: number;
278
+ maxLength?: number;
279
+ pattern?: string;
280
+ items?: AttributeProperty;
281
+ minItems?: number;
282
+ maxItems?: number;
283
+ uniqueItems?: boolean;
284
+ required?: string[];
285
+ properties?: Record<string, AttributeProperty>;
286
+ additionalProperties?: AttributeProperty;
287
+ oneOf?: AttributeProperty[];
288
+ }>, {
289
+ archived?: boolean;
290
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
291
+ description?: string;
292
+ enum?: import("@featurevisor/types").Value[];
293
+ const?: import("@featurevisor/types").Value;
294
+ minimum?: number;
295
+ maximum?: number;
296
+ minLength?: number;
297
+ maxLength?: number;
298
+ pattern?: string;
299
+ items?: AttributeProperty;
300
+ minItems?: number;
301
+ maxItems?: number;
302
+ uniqueItems?: boolean;
303
+ required?: string[];
304
+ properties?: Record<string, AttributeProperty>;
305
+ additionalProperties?: AttributeProperty;
306
+ oneOf?: AttributeProperty[];
307
+ }, {
308
+ archived?: boolean;
309
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
310
+ description?: string;
311
+ enum?: import("@featurevisor/types").Value[];
312
+ const?: import("@featurevisor/types").Value;
313
+ minimum?: number;
314
+ maximum?: number;
315
+ minLength?: number;
316
+ maxLength?: number;
317
+ pattern?: string;
318
+ items?: AttributeProperty;
319
+ minItems?: number;
320
+ maxItems?: number;
321
+ uniqueItems?: boolean;
322
+ required?: string[];
323
+ properties?: Record<string, AttributeProperty>;
324
+ additionalProperties?: AttributeProperty;
325
+ oneOf?: AttributeProperty[];
326
+ }>, {
327
+ archived?: boolean;
328
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
329
+ description?: string;
330
+ enum?: import("@featurevisor/types").Value[];
331
+ const?: import("@featurevisor/types").Value;
332
+ minimum?: number;
333
+ maximum?: number;
334
+ minLength?: number;
335
+ maxLength?: number;
336
+ pattern?: string;
337
+ items?: AttributeProperty;
338
+ minItems?: number;
339
+ maxItems?: number;
340
+ uniqueItems?: boolean;
341
+ required?: string[];
342
+ properties?: Record<string, AttributeProperty>;
343
+ additionalProperties?: AttributeProperty;
344
+ oneOf?: AttributeProperty[];
345
+ }, {
346
+ archived?: boolean;
347
+ type?: "string" | "boolean" | "object" | "integer" | "double" | "date" | "semver" | "array";
348
+ description?: string;
349
+ enum?: import("@featurevisor/types").Value[];
350
+ const?: import("@featurevisor/types").Value;
351
+ minimum?: number;
352
+ maximum?: number;
353
+ minLength?: number;
354
+ maxLength?: number;
355
+ pattern?: string;
356
+ items?: AttributeProperty;
357
+ minItems?: number;
358
+ maxItems?: number;
359
+ uniqueItems?: boolean;
360
+ required?: string[];
361
+ properties?: Record<string, AttributeProperty>;
362
+ additionalProperties?: AttributeProperty;
363
+ oneOf?: AttributeProperty[];
32
364
  }>;