add eslint rule to ban .delete({}) and .update({}, {...})

This commit is contained in:
Hazelnoot 2025-10-03 12:58:43 -04:00
parent 86a8614ef8
commit 4e7b2be730
4 changed files with 45 additions and 0 deletions

View file

@ -117,6 +117,14 @@ export default [
"selector": "NewExpression[callee.name='QuantumKVCache']",
"message": "Cache constructor will produce an unmanaged instance. Use CacheManagementService.createQuantumKVCache() instead."
},
{
"selector": "CallExpression[callee.property.name='delete'][arguments.length=1] > ObjectExpression[properties.length=0]",
"message": "repository.delete({}) will produce a runtime error. Use repository.deleteAll() instead."
},
{
"selector": "CallExpression[callee.property.name='update'][arguments.length>=1] > ObjectExpression[properties.length=0]",
"message": "repository.update({}, {...}) will produce a runtime error. Use repository.updateAll({...}) instead."
},
],
},
},

View file

@ -27,5 +27,18 @@ export default [
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
'no-restricted-syntax': [
'error',
{
"selector": "CallExpression[callee.property.name='delete'][arguments.length=1] > ObjectExpression[properties.length=0]",
"message": "repository.delete({}) will produce a runtime error. Use repository.deleteAll() instead."
},
{
"selector": "CallExpression[callee.property.name='update'][arguments.length>=1] > ObjectExpression[properties.length=0]",
"message": "repository.update({}, {...}) will produce a runtime error. Use repository.updateAll({...}) instead."
},
],
}
},
];

View file

@ -38,6 +38,17 @@ export default [
name: '__filename',
message: 'Not in ESModule. Use `import.meta.url` instead.',
}],
'no-restricted-syntax': [
'error',
{
"selector": "CallExpression[callee.property.name='delete'][arguments.length=1] > ObjectExpression[properties.length=0]",
"message": "repository.delete({}) will produce a runtime error. Use repository.deleteAll() instead."
},
{
"selector": "CallExpression[callee.property.name='update'][arguments.length>=1] > ObjectExpression[properties.length=0]",
"message": "repository.update({}, {...}) will produce a runtime error. Use repository.updateAll({...}) instead."
},
],
},
},
{

View file

@ -18,6 +18,19 @@ export default [
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
'no-restricted-syntax': [
'error',
{
"selector": "CallExpression[callee.property.name='delete'][arguments.length=1] > ObjectExpression[properties.length=0]",
"message": "repository.deleteAll() will produce a runtime error. Use repository.deleteAll() instead."
},
{
"selector": "CallExpression[callee.property.name='update'][arguments.length>=1] > ObjectExpression[properties.length=0]",
"message": "repository.update({}, {...}) will produce a runtime error. Use repository.updateAll({...}) instead."
},
],
}
},
{
ignores: [