Files
NapCatQQ/.pnpm-store/v3/files/71/36d0c69b5b5fe822f55db4e71739dcafbce6729fc7f280c1712b063cc2fdec2f1e3126a5e9332cc1b9245d0938c889d43dff41efaf158ea4dcc15d33c10169
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

53 lines
1.6 KiB
Plaintext

import { createRule, moduleVisitor } from '../utils/index.js';
export default createRule({
name: 'max-dependencies',
meta: {
type: 'suggestion',
docs: {
category: 'Style guide',
description: 'Enforce the maximum number of dependencies a module can have.',
},
schema: [
{
type: 'object',
properties: {
max: { type: 'number' },
ignoreTypeImports: { type: 'boolean' },
},
additionalProperties: false,
},
],
messages: {
max: 'Maximum number of dependencies ({{max}}) exceeded.',
},
},
defaultOptions: [],
create(context) {
const { ignoreTypeImports } = context.options[0] || {};
const dependencies = new Set();
let lastNode;
return {
'Program:exit'() {
const { max = 10 } = context.options[0] || {};
if (dependencies.size <= max) {
return;
}
context.report({
node: lastNode,
messageId: 'max',
data: {
max,
},
});
},
...moduleVisitor((source, node) => {
if (('importKind' in node && node.importKind !== 'type') ||
!ignoreTypeImports) {
dependencies.add(source.value);
}
lastNode = source;
}, { commonjs: true }),
};
},
});
//# sourceMappingURL=max-dependencies.js.map