packages/awslint/lib/rules/public-static-properties.ts (22 lines of code) (raw):
import { Property } from 'jsii-reflect';
import { Linter } from '../linter';
const UPPER_SNAKE_CASE_ALLOWED_PATTERN = new RegExp('^[A-Z0-9][A-Z0-9_]*[A-Z0-9]+$');
export const publicStaticPropertiesLinter = new Linter(assembly => {
const result = new Array<Property>();
for (const c of assembly.allClasses) {
for (const property of c.allProperties) {
if (property.const && property.static) {
result.push(property);
}
}
}
return result;
});
publicStaticPropertiesLinter.add({
code: 'public-static-props-all-caps',
message: 'public static properties must be named using ALL_CAPS',
eval: e => {
const name = e.ctx.name;
e.assert(UPPER_SNAKE_CASE_ALLOWED_PATTERN.test(name), `${e.ctx.parentType.fqn}.${name}`);
},
});