@schema-hub/stryker-zod-mutator 0.0.16 → 0.0.18

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 (41) hide show
  1. package/package.json +4 -1
  2. package/readme.md +5 -0
  3. package/sbom.cdx.json +5 -5
  4. package/stryker-zod-mutator/ast.js +88 -1
  5. package/stryker-zod-mutator/ast.js.map +1 -1
  6. package/stryker-zod-mutator/behavior-mutations.js +70 -6
  7. package/stryker-zod-mutator/behavior-mutations.js.map +1 -1
  8. package/stryker-zod-mutator/binding-resolution.js +289 -3
  9. package/stryker-zod-mutator/binding-resolution.js.map +1 -1
  10. package/stryker-zod-mutator/check-mutations.js +153 -5
  11. package/stryker-zod-mutator/check-mutations.js.map +1 -1
  12. package/stryker-zod-mutator/collection-mutations.js +159 -5
  13. package/stryker-zod-mutator/collection-mutations.js.map +1 -1
  14. package/stryker-zod-mutator/declarator-init-id.js +12 -2
  15. package/stryker-zod-mutator/declarator-init-id.js.map +1 -1
  16. package/stryker-zod-mutator/filesystem-module-loader.js +61 -2
  17. package/stryker-zod-mutator/filesystem-module-loader.js.map +1 -1
  18. package/stryker-zod-mutator/masked-schema-references.js +114 -4
  19. package/stryker-zod-mutator/masked-schema-references.js.map +1 -1
  20. package/stryker-zod-mutator/mutation-catalog.js +16 -7
  21. package/stryker-zod-mutator/mutation-catalog.js.map +1 -1
  22. package/stryker-zod-mutator/mutation-definition.js +16 -2
  23. package/stryker-zod-mutator/mutation-definition.js.map +1 -1
  24. package/stryker-zod-mutator/mutations.js +16 -3
  25. package/stryker-zod-mutator/mutations.js.map +1 -1
  26. package/stryker-zod-mutator/object-mutations.js +114 -6
  27. package/stryker-zod-mutator/object-mutations.js.map +1 -1
  28. package/stryker-zod-mutator/operator.js +95 -0
  29. package/stryker-zod-mutator/operator.js.map +1 -1
  30. package/stryker-zod-mutator/presence-mutations.js +83 -6
  31. package/stryker-zod-mutator/presence-mutations.js.map +1 -1
  32. package/stryker-zod-mutator/primitive-mutations.js +33 -2
  33. package/stryker-zod-mutator/primitive-mutations.js.map +1 -1
  34. package/stryker-zod-mutator/reference-mutations.js +58 -4
  35. package/stryker-zod-mutator/reference-mutations.js.map +1 -1
  36. package/stryker-zod-mutator/registry.js +50 -2
  37. package/stryker-zod-mutator/registry.js.map +1 -1
  38. package/stryker-zod-mutator/schema-call-mutations.js +93 -6
  39. package/stryker-zod-mutator/schema-call-mutations.js.map +1 -1
  40. package/stryker-zod-mutator/zod-bindings.js +221 -3
  41. package/stryker-zod-mutator/zod-bindings.js.map +1 -1
@@ -1,7 +1,94 @@
1
- import '@babel/types';
2
- import "./ast.js";
3
- import "./mutation-definition.js";
4
- import "./masked-schema-references.js";
5
- import "./zod-bindings.js";
6
- import "./binding-resolution.js";
1
+ import * as babel from '@babel/types';
2
+ import { cloneExpression, getCallName, getMemberName, isExpressionNode, memberCall } from "./ast.js";
3
+ import { callNode } from "./mutation-definition.js";
4
+ import { presenceWrapperMaskedByEveryUse } from "./masked-schema-references.js";
5
+ import { buildZodCall, expressionStyle, firstExpressionArgument, getZodCallName, isSchemaValueChainRoot, isStringTemplateLiteralPart, isZodSchemaExpression } from "./zod-bindings.js";
6
+ import { addingWrapperHasNoEffect, isZodSchemaOrReference } from "./binding-resolution.js";
7
+ export function removeMethod(call, bindings, methodNames) {
8
+ if (!babel.isMemberExpression(call.callee)) {
9
+ return [];
10
+ }
11
+ const methodName = getMemberName(call.callee);
12
+ const { object } = call.callee;
13
+ if (methodName === null || !methodNames.has(methodName) || !isExpressionNode(object)) {
14
+ return [];
15
+ }
16
+ return isZodSchemaOrReference(bindings, object) ? [cloneExpression(object)] : [];
17
+ }
18
+ function removeWrapper(call, bindings, wrapperNames) {
19
+ const callName = getZodCallName(bindings, call);
20
+ const schema = firstExpressionArgument(call);
21
+ if (callName === null || schema === null || !wrapperNames.has(callName)) {
22
+ return [];
23
+ }
24
+ return isZodSchemaOrReference(bindings, schema) ? [cloneExpression(schema)] : [];
25
+ }
26
+ export function removeMethodOrWrapper(path, bindings, names) {
27
+ const call = callNode(path);
28
+ if (call === null) {
29
+ return [];
30
+ }
31
+ return [...removeMethod(call, bindings, names), ...removeWrapper(call, bindings, names)];
32
+ }
33
+ function zodSchemaExpression(path, bindings) {
34
+ return isExpressionNode(path.node) && isZodSchemaExpression(bindings, path.node)
35
+ ? path.node
36
+ : null;
37
+ }
38
+ function buildWrapperMutation(bindings, expression, style, name) {
39
+ if (style === 'classic') {
40
+ return [memberCall(cloneExpression(expression), name, [])];
41
+ }
42
+ const wrapped = buildZodCall(bindings, style, name, [cloneExpression(expression)]);
43
+ return wrapped === null ? [] : [wrapped];
44
+ }
45
+ function wrapperAlreadyApplied(expression, name) {
46
+ return babel.isCallExpression(expression) && getCallName(expression.callee) === name;
47
+ }
48
+ function shouldSkipWrapping(path, bindings, expression, name) {
49
+ return !isSchemaValueChainRoot(path, bindings) ||
50
+ wrapperAlreadyApplied(expression, name) ||
51
+ addingWrapperHasNoEffect(bindings, expression, name) ||
52
+ isStringTemplateLiteralPart(path, bindings) ||
53
+ presenceWrapperMaskedByEveryUse(path, bindings, name);
54
+ }
55
+ export function addWrapperOrMethod(path, bindings, name) {
56
+ const expression = zodSchemaExpression(path, bindings);
57
+ const style = expression === null ? null : expressionStyle(bindings, expression);
58
+ if (expression === null || style === null) {
59
+ return [];
60
+ }
61
+ if (shouldSkipWrapping(path, bindings, expression, name)) {
62
+ return [];
63
+ }
64
+ return buildWrapperMutation(bindings, expression, style, name);
65
+ }
66
+ function replaceNullishMethod(call, bindings, replacementName) {
67
+ if (!babel.isMemberExpression(call.callee) || getMemberName(call.callee) !== 'nullish') {
68
+ return [];
69
+ }
70
+ const { object } = call.callee;
71
+ return isExpressionNode(object) && isZodSchemaExpression(bindings, object)
72
+ ? [memberCall(cloneExpression(object), replacementName, [])]
73
+ : [];
74
+ }
75
+ function replaceNullishWrapper(call, bindings, replacementName) {
76
+ const schema = firstExpressionArgument(call);
77
+ const style = expressionStyle(bindings, call);
78
+ if (schema === null || style === null || getZodCallName(bindings, call) !== 'nullish') {
79
+ return [];
80
+ }
81
+ const replacement = buildZodCall(bindings, style, replacementName, [cloneExpression(schema)]);
82
+ return replacement === null ? [] : [replacement];
83
+ }
84
+ export function replaceNullish(path, bindings, replacementName) {
85
+ const call = callNode(path);
86
+ if (call === null) {
87
+ return [];
88
+ }
89
+ const methodMutations = replaceNullishMethod(call, bindings, replacementName);
90
+ return methodMutations.length > 0
91
+ ? methodMutations
92
+ : replaceNullishWrapper(call, bindings, replacementName);
93
+ }
7
94
  //# sourceMappingURL=schema-call-mutations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-call-mutations.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/schema-call-mutations.ts"],"names":[],"mappings":"AAAA,OAAuB,cAAc,CAAC;AAEtC,OASO,UAAU,CAAC;AAClB,OAAyB,0BAA0B,CAAC;AACpD,OAAgD,+BAA+B,CAAC;AAChF,OAUO,mBAAmB,CAAC;AAC3B,OAAiE,yBAAyB,CAAC"}
1
+ {"version":3,"file":"schema-call-mutations.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/schema-call-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import '@babel/types';
2
- import "./ast.js";
1
+ import * as babel from '@babel/types';
2
+ import { fileNameOf, findProgram, getMemberName, isExpressionNode } from "./ast.js";
3
3
  const zodSourceStyles = new Map([
4
4
  ['zod', 'classic'],
5
5
  ['zod/v4', 'classic'],
@@ -39,7 +39,10 @@ const schemaFactoryNames = new Set([
39
39
  'nullable',
40
40
  'nullish',
41
41
  'nonoptional',
42
+ 'deepPartial',
43
+ 'exactPartial',
42
44
  'readonly',
45
+ 'compile',
43
46
  '_default',
44
47
  'prefault',
45
48
  'catch',
@@ -55,15 +58,230 @@ const schemaFactoryNames = new Set([
55
58
  'ipv6',
56
59
  'iso'
57
60
  ]);
61
+ function getImportedName(specifier) {
62
+ return babel.isIdentifier(specifier.imported)
63
+ ? specifier.imported.name
64
+ : specifier.imported.value;
65
+ }
66
+ function readZodImportSpecifier(style, specifier) {
67
+ if (specifier.type === 'ImportNamespaceSpecifier' || specifier.type === 'ImportDefaultSpecifier') {
68
+ return { namespaces: [{ name: specifier.local.name, style }], directBindings: [] };
69
+ }
70
+ const importedName = getImportedName(specifier);
71
+ return importedName === 'z'
72
+ ? { namespaces: [{ name: specifier.local.name, style }], directBindings: [] }
73
+ : {
74
+ namespaces: [],
75
+ directBindings: [{ localName: specifier.local.name, importedName, style }]
76
+ };
77
+ }
78
+ function readZodImport(statement) {
79
+ const style = babel.isImportDeclaration(statement)
80
+ ? zodSourceStyles.get(statement.source.value)
81
+ : undefined;
82
+ if (style === undefined || !babel.isImportDeclaration(statement)) {
83
+ return { namespaces: [], directBindings: [] };
84
+ }
85
+ const bindings = statement.specifiers.map(function (specifier) {
86
+ return readZodImportSpecifier(style, specifier);
87
+ });
88
+ return {
89
+ namespaces: bindings.flatMap(function (binding) {
90
+ return binding.namespaces;
91
+ }),
92
+ directBindings: bindings.flatMap(function (binding) {
93
+ return binding.directBindings;
94
+ })
95
+ };
96
+ }
97
+ export function buildZodBindings(program, fileName, env) {
98
+ const imports = program.body.map(readZodImport);
99
+ return {
100
+ namespaces: imports.flatMap(function (binding) {
101
+ return binding.namespaces;
102
+ }),
103
+ directBindings: imports.flatMap(function (binding) {
104
+ return binding.directBindings;
105
+ }),
106
+ program,
107
+ fileName,
108
+ env
109
+ };
110
+ }
111
+ export function readZodBindings(path, env) {
112
+ return buildZodBindings(findProgram(path) ?? babel.program([]), fileNameOf(path), env);
113
+ }
114
+ export function getDirectBinding(bindings, localName) {
115
+ return bindings.directBindings.find(function (binding) {
116
+ return binding.localName === localName;
117
+ }) ?? null;
118
+ }
119
+ export function getNamespaceStyle(bindings, localName) {
120
+ return bindings
121
+ .namespaces
122
+ .find(function (binding) {
123
+ return binding.name === localName;
124
+ })
125
+ ?.style ?? null;
126
+ }
127
+ export function isZodNamespaceMember(bindings, expression) {
128
+ if (!babel.isMemberExpression(expression) || !babel.isIdentifier(expression.object)) {
129
+ return false;
130
+ }
131
+ return getNamespaceStyle(bindings, expression.object.name) !== null;
132
+ }
133
+ function getCoerceNamespaceName(call) {
134
+ if (!babel.isMemberExpression(call.callee) || !babel.isMemberExpression(call.callee.object)) {
135
+ return null;
136
+ }
137
+ const { object } = call.callee;
138
+ return getMemberName(object) === 'coerce' && babel.isIdentifier(object.object)
139
+ ? object.object.name
140
+ : null;
141
+ }
142
+ export function isCoerceCall(bindings, call) {
143
+ const namespaceName = getCoerceNamespaceName(call);
144
+ return namespaceName !== null && getNamespaceStyle(bindings, namespaceName) !== null;
145
+ }
146
+ export function getZodCallName(bindings, call) {
147
+ if (babel.isIdentifier(call.callee)) {
148
+ return getDirectBinding(bindings, call.callee.name)?.importedName ?? null;
149
+ }
150
+ if (isZodNamespaceMember(bindings, call.callee)) {
151
+ return getMemberName(call.callee);
152
+ }
153
+ if (isCoerceCall(bindings, call)) {
154
+ return getMemberName(call.callee);
155
+ }
156
+ return null;
157
+ }
158
+ function getCoerceCallStyle(bindings, call) {
159
+ const namespaceName = getCoerceNamespaceName(call);
160
+ return namespaceName === null ? null : getNamespaceStyle(bindings, namespaceName);
161
+ }
162
+ export function getZodCallStyle(bindings, call) {
163
+ if (babel.isIdentifier(call.callee)) {
164
+ return getDirectBinding(bindings, call.callee.name)?.style ?? null;
165
+ }
166
+ if (babel.isMemberExpression(call.callee) && babel.isIdentifier(call.callee.object)) {
167
+ return getNamespaceStyle(bindings, call.callee.object.name);
168
+ }
169
+ return getCoerceCallStyle(bindings, call);
170
+ }
171
+ export function isZodSchemaExpression(bindings, expression) {
172
+ if (!babel.isCallExpression(expression)) {
173
+ return false;
174
+ }
175
+ const callName = getZodCallName(bindings, expression);
176
+ if (callName !== null) {
177
+ return schemaFactoryNames.has(callName);
178
+ }
179
+ if (!babel.isMemberExpression(expression.callee)) {
180
+ return false;
181
+ }
182
+ const { object } = expression.callee;
183
+ return isExpressionNode(object) && isZodSchemaExpression(bindings, object);
184
+ }
185
+ export function expressionStyle(bindings, expression) {
186
+ let currentExpression = expression;
187
+ for (;;) {
188
+ if (!babel.isCallExpression(currentExpression)) {
189
+ return null;
190
+ }
191
+ const directStyle = getZodCallStyle(bindings, currentExpression);
192
+ if (directStyle !== null) {
193
+ return directStyle;
194
+ }
195
+ if (!babel.isMemberExpression(currentExpression.callee) || !isExpressionNode(currentExpression.callee.object)) {
196
+ return null;
197
+ }
198
+ currentExpression = currentExpression.callee.object;
199
+ }
200
+ }
201
+ export function moduleStyle(bindings) {
202
+ return bindings.namespaces[0]?.style ?? bindings.directBindings[0]?.style ?? 'classic';
203
+ }
204
+ export function buildZodCall(bindings, style, name, args) {
205
+ const namespace = bindings.namespaces.find(function (binding) {
206
+ return binding.style === style;
207
+ });
208
+ if (namespace !== undefined) {
209
+ return babel.callExpression(babel.memberExpression(babel.identifier(namespace.name), babel.identifier(name)), Array.from(args));
210
+ }
211
+ const direct = bindings.directBindings.find(function (binding) {
212
+ return binding.style === style && binding.importedName === name;
213
+ });
214
+ if (direct !== undefined) {
215
+ return babel.callExpression(babel.identifier(direct.localName), Array.from(args));
216
+ }
217
+ return null;
218
+ }
219
+ export function replaceZodCallee(bindings, call, replacementName) {
220
+ const style = getZodCallStyle(bindings, call);
221
+ if (style === null) {
222
+ return null;
223
+ }
224
+ return buildZodCall(bindings, style, replacementName, call.arguments.filter(isExpressionNode));
225
+ }
226
+ export function firstExpressionArgument(call) {
227
+ const argument = call.arguments[0];
228
+ return argument !== undefined && isExpressionNode(argument) ? argument : null;
229
+ }
230
+ export function isObjectLikeFactory(name) {
231
+ return ['object', 'strictObject', 'looseObject'].includes(name);
232
+ }
58
233
  export const valuePreservingWrapperNames = new Set([
59
234
  'optional',
60
235
  'nullable',
61
236
  'nullish',
62
237
  'nonoptional',
238
+ 'deepPartial',
239
+ 'exactPartial',
63
240
  '_default',
64
241
  'prefault',
65
242
  'catch',
66
- 'readonly'
243
+ 'readonly',
244
+ 'compile'
67
245
  ]);
246
+ function isReceiverOfMethodCall(path) {
247
+ const enclosingMember = path.parentPath?.node;
248
+ return babel.isMemberExpression(enclosingMember) && enclosingMember.object === path.node;
249
+ }
250
+ function isFirstArgumentOfCallNamed(path, bindings, callNames) {
251
+ const enclosingCall = path.parentPath?.node;
252
+ if (!babel.isCallExpression(enclosingCall)) {
253
+ return false;
254
+ }
255
+ const firstArgument = enclosingCall.arguments[0];
256
+ if (!isExpressionNode(firstArgument)) {
257
+ return false;
258
+ }
259
+ const isFirstArgument = firstArgument === path.node;
260
+ return isFirstArgument && callNames.has(getZodCallName(bindings, enclosingCall) ?? '');
261
+ }
262
+ export function isSchemaValueChainRoot(path, bindings) {
263
+ return !isReceiverOfMethodCall(path) && !isFirstArgumentOfCallNamed(path, bindings, valuePreservingWrapperNames);
264
+ }
68
265
  const recordFactoryNames = new Set(['record', 'partialRecord', 'looseRecord']);
266
+ export function isRecordKeyPosition(path, bindings) {
267
+ return isFirstArgumentOfCallNamed(path, bindings, recordFactoryNames);
268
+ }
269
+ function grandparentNode(path) {
270
+ return path.parentPath?.parentPath?.node ?? null;
271
+ }
272
+ function isElementOfTemplateLiteralParts(path, bindings) {
273
+ const partsArray = path.parentPath?.node;
274
+ const templateCall = grandparentNode(path);
275
+ if (!babel.isArrayExpression(partsArray) || !babel.isCallExpression(templateCall)) {
276
+ return false;
277
+ }
278
+ const firstArgument = templateCall.arguments[0];
279
+ const arrayIsFirstArgument = isExpressionNode(firstArgument) && firstArgument === partsArray;
280
+ return arrayIsFirstArgument && getZodCallName(bindings, templateCall) === 'templateLiteral';
281
+ }
282
+ export function isStringTemplateLiteralPart(path, bindings) {
283
+ return babel.isCallExpression(path.node) &&
284
+ getZodCallName(bindings, path.node) === 'string' &&
285
+ isElementOfTemplateLiteralParts(path, bindings);
286
+ }
69
287
  //# sourceMappingURL=zod-bindings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-bindings.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/zod-bindings.ts"],"names":[],"mappings":"AAAA,OAAuB,cAAc,CAAC;AAEtC,OAQO,UAAU,CAAC;AAkClB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAsB;IACjD,CAAE,KAAK,EAAE,SAAS,CAAE;IACpB,CAAE,QAAQ,EAAE,SAAS,CAAE;IACvB,CAAE,UAAU,EAAE,MAAM,CAAE;IACtB,CAAE,aAAa,EAAE,MAAM,CAAE;IACzB,CAAE,aAAa,EAAE,MAAM,CAAE;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;CACH,CAAC;AAEX,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,GAAG,qBAAqB;IACxB,QAAQ;IACR,cAAc;IACd,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,eAAe;IACf,aAAa;IACb,OAAO;IACP,oBAAoB;IACpB,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,UAAU;IACV,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;CACR,CAAC,CAAC;MAiDG,kCAiMkC,GAAG,IAAI,GAAG,CAAC;IAC/C,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,UAAU;IACV,UAAU;IACV,OAAO;IACP,UAAU;CACb,CAAC,CAAC;cAWC,UAuBoB,GAAG,IAAI,GAAG,CAAC,CAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"zod-bindings.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/zod-bindings.ts"],"names":[],"mappings":"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"}