57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
module.exports = {
|
|
|
|
plugins: [
|
|
{
|
|
rules: {
|
|
'core-lightning': ({ type }) => {
|
|
// Allow standard Core Lightning types
|
|
const standardTypes = [
|
|
// Daemons
|
|
'channeld', 'closingd', 'connectd', 'gossipd', 'hsmd', 'lightningd', 'onchaind',
|
|
'openingd',
|
|
// Related
|
|
'bitcoin', 'cli', 'cln-grpc', 'cln-rpc', 'db', 'wallet', 'wire',
|
|
// Others
|
|
'ci', 'common', 'contrib', 'devtools', 'docs', 'docker', 'github', 'global',
|
|
'meta', 'nit', 'nix', 'release', 'script', 'tests',
|
|
];
|
|
|
|
// Extensions
|
|
const extensions = ['plugin-', 'pyln-', 'tool-']
|
|
if (type) {
|
|
for (const prefix of extensions) {
|
|
if (type.startsWith(prefix)) {
|
|
return [true];
|
|
}
|
|
}
|
|
}
|
|
|
|
// Otherwise, must be a standard type
|
|
if (standardTypes.includes(type)) {
|
|
return [true];
|
|
}
|
|
|
|
return [
|
|
false,
|
|
`Type must be one of [${standardTypes.join(', ')}] or match patterns [${extensions.join(', ')}]`
|
|
];
|
|
},
|
|
},
|
|
},
|
|
],
|
|
|
|
rules: {
|
|
// Disable the default type-enum rule since we're using custom validation
|
|
'type-enum': [0],
|
|
|
|
// Enable our custom rule
|
|
'core-lightning': [2, 'always'],
|
|
|
|
// Keep other standard rules
|
|
'type-case': [2, 'always', 'lower-case'],
|
|
'type-empty': [2, 'never'],
|
|
'subject-empty': [2, 'never'],
|
|
'subject-case': [2, 'never', ['upper-case']],
|
|
},
|
|
};
|