mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
move adf-tslin-rules in a separate repo https://github.com/Alfresco/adf-tslint-rules (#2528)
This commit is contained in:
parent
2ec059f53a
commit
b66a9bfe0d
@ -1,44 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const Lint = require("tslint");
|
|
||||||
const sprintf_js_1 = require("sprintf-js");
|
|
||||||
const walkerFactory_1 = require("codelyzer/walkerFactory/walkerFactory");
|
|
||||||
const walkerFn_1 = require("codelyzer/walkerFactory/walkerFn");
|
|
||||||
const function_1 = require("codelyzer/util/function");
|
|
||||||
class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
static invalidName(className) {
|
|
||||||
var whiteList = ['ActivitiContentComponent', 'ActivitiForm'];
|
|
||||||
var classNameReg = /^(alfresco|activiti|adf|activity)/ig;
|
|
||||||
var classNameMatch = classNameReg.exec(className);
|
|
||||||
var isWhiteListName = whiteList.find((currentWhiteListName) => {
|
|
||||||
return currentWhiteListName === className;
|
|
||||||
});
|
|
||||||
if (classNameMatch && !isWhiteListName) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
apply(sourceFile) {
|
|
||||||
return this.applyWithWalker(Rule.walkerBuilder(sourceFile, this.getOptions()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Rule.metadata = {
|
|
||||||
ruleName: 'adf-class-name',
|
|
||||||
type: 'maintainability',
|
|
||||||
description: `Enforce consistent name avoid prefix`,
|
|
||||||
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
|
|
||||||
rationale: `Consistent conventions make it easy to quickly identify class when you search with autocomplete.`,
|
|
||||||
options: null,
|
|
||||||
optionsDescription: "Not configurable.",
|
|
||||||
typescriptOnly: true,
|
|
||||||
};
|
|
||||||
Rule.FAILURE_STRING = 'The name of the class should not start with ADF Alfresco or Activiti prefix ';
|
|
||||||
Rule.walkerBuilder = walkerFn_1.all(walkerFn_1.validateComponent((meta, suffixList) => function_1.Maybe.lift(meta.controller)
|
|
||||||
.fmap(controller => controller.name)
|
|
||||||
.fmap(name => {
|
|
||||||
const className = name.text;
|
|
||||||
if (Rule.invalidName(className)) {
|
|
||||||
return [new walkerFactory_1.Failure(name, sprintf_js_1.sprintf(Rule.FAILURE_STRING + className, className, suffixList))];
|
|
||||||
}
|
|
||||||
})));
|
|
||||||
exports.Rule = Rule;
|
|
@ -1,61 +0,0 @@
|
|||||||
import * as Lint from 'tslint';
|
|
||||||
import * as ts from 'typescript';
|
|
||||||
import {sprintf} from 'sprintf-js';
|
|
||||||
import {ComponentMetadata} from 'codelyzer/angular/metadata';
|
|
||||||
import {Failure} from 'codelyzer/walkerFactory/walkerFactory';
|
|
||||||
import {all, validateComponent} from 'codelyzer/walkerFactory/walkerFn';
|
|
||||||
import {Maybe, F2} from 'codelyzer/util/function';
|
|
||||||
import {IOptions} from 'tslint';
|
|
||||||
import {NgWalker} from 'codelyzer/angular/ngWalker';
|
|
||||||
|
|
||||||
export class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
|
|
||||||
public static metadata: Lint.IRuleMetadata = {
|
|
||||||
ruleName: 'adf-class-name',
|
|
||||||
type: 'maintainability',
|
|
||||||
description: `Enforce consistent name avoid prefix`,
|
|
||||||
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
|
|
||||||
rationale: `Consistent conventions make it easy to quickly identify class when you search with autocomplete.`,
|
|
||||||
options: null,
|
|
||||||
optionsDescription: "Not configurable.",
|
|
||||||
typescriptOnly: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
public static FAILURE_STRING = 'The name of the class should not start with ADF Alfresco or Activiti prefix ';
|
|
||||||
|
|
||||||
static walkerBuilder: F2<ts.SourceFile, IOptions, NgWalker> =
|
|
||||||
all(
|
|
||||||
validateComponent((meta: ComponentMetadata, suffixList?: string[]) =>
|
|
||||||
Maybe.lift(meta.controller)
|
|
||||||
.fmap(controller => controller.name)
|
|
||||||
.fmap(name => {
|
|
||||||
const className = name.text;
|
|
||||||
if (Rule.invalidName(className)) {
|
|
||||||
return [new Failure(name, sprintf(Rule.FAILURE_STRING + className , className, suffixList))];
|
|
||||||
}
|
|
||||||
})
|
|
||||||
));
|
|
||||||
|
|
||||||
static invalidName(className: string): boolean {
|
|
||||||
var whiteList = ['ActivitiContentComponent', 'ActivitiForm'];
|
|
||||||
|
|
||||||
var classNameReg = /^(alfresco|activiti|adf|activity)/ig;
|
|
||||||
var classNameMatch = classNameReg.exec(className);
|
|
||||||
|
|
||||||
var isWhiteListName = whiteList.find((currentWhiteListName)=>{
|
|
||||||
return currentWhiteListName === className;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (classNameMatch && !isWhiteListName) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
|
|
||||||
return this.applyWithWalker(
|
|
||||||
Rule.walkerBuilder(sourceFile, this.getOptions())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const Lint = require("tslint");
|
|
||||||
class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
apply(sourceFile) {
|
|
||||||
return this.applyWithWalker(new AdfFileName(sourceFile, this.getOptions()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Rule.metadata = {
|
|
||||||
ruleName: 'adf-file-name',
|
|
||||||
type: 'maintainability',
|
|
||||||
description: `Enforce consistent name avoid prefix`,
|
|
||||||
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
|
|
||||||
rationale: `Consistent conventions make it easy to quickly identify files when you search with autocomplete.`,
|
|
||||||
options: null,
|
|
||||||
optionsDescription: "Not configurable.",
|
|
||||||
typescriptOnly: true,
|
|
||||||
};
|
|
||||||
Rule.FAILURE_STRING = 'The name of the File should not start with ADF Alfresco or Activiti prefix ';
|
|
||||||
exports.Rule = Rule;
|
|
||||||
class AdfFileName extends Lint.RuleWalker {
|
|
||||||
visitSourceFile(node) {
|
|
||||||
var whiteList = ['activiti-content.component.ts', 'activiti-alfresco.service.ts',
|
|
||||||
'alfresco-api.service.ts', 'alfresco-settings.service.ts', 'alfresco-content.service.ts',
|
|
||||||
'activiti-content.component.spec.ts', 'activiti-alfresco.service.spec.ts', 'activiti-content-service.spec.ts',
|
|
||||||
'alfresco-api.service.spec.ts', 'alfresco-settings.service.spec.ts', 'alfresco-content.service.spec.ts',
|
|
||||||
'activiti-content.service.spec.ts', 'activiti-content.service.ts'];
|
|
||||||
var fileName = this.getFilename();
|
|
||||||
var fileNameReg = /^(alfresco|activiti|adf|activity)/ig;
|
|
||||||
var filenameMatch = fileNameReg.exec(fileName);
|
|
||||||
var isWhiteListName = whiteList.find((currentWhiteListName) => {
|
|
||||||
return currentWhiteListName === fileName;
|
|
||||||
});
|
|
||||||
if (filenameMatch && !isWhiteListName) {
|
|
||||||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING + fileName));
|
|
||||||
super.visitSourceFile(node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getFilename() {
|
|
||||||
const filename = this.getSourceFile().fileName;
|
|
||||||
const lastSlash = filename.lastIndexOf('/');
|
|
||||||
if (lastSlash > -1) {
|
|
||||||
return filename.substring(lastSlash + 1);
|
|
||||||
}
|
|
||||||
return filename;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
import * as ts from "typescript";
|
|
||||||
import * as Lint from "tslint";
|
|
||||||
|
|
||||||
|
|
||||||
export class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
public static metadata: Lint.IRuleMetadata = {
|
|
||||||
ruleName: 'adf-file-name',
|
|
||||||
type: 'maintainability',
|
|
||||||
description: `Enforce consistent name avoid prefix`,
|
|
||||||
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
|
|
||||||
rationale: `Consistent conventions make it easy to quickly identify files when you search with autocomplete.`,
|
|
||||||
options: null,
|
|
||||||
optionsDescription: "Not configurable.",
|
|
||||||
typescriptOnly: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
public static FAILURE_STRING = 'The name of the File should not start with ADF Alfresco or Activiti prefix ';
|
|
||||||
|
|
||||||
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
|
|
||||||
return this.applyWithWalker(new AdfFileName(sourceFile, this.getOptions()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The walker takes care of all the work.
|
|
||||||
class AdfFileName extends Lint.RuleWalker {
|
|
||||||
public visitSourceFile(node: ts.SourceFile) {
|
|
||||||
var whiteList = ['activiti-content.component.ts', 'activiti-alfresco.service.ts', 'activiti-content-service.ts',
|
|
||||||
'alfresco-api.service.ts', 'alfresco-settings.service.ts', 'alfresco-content.service.ts',
|
|
||||||
'activiti-content.component.spec.ts', 'activiti-alfresco.service.spec.ts', 'activiti-content-service.spec.ts',
|
|
||||||
'alfresco-api.service.spec.ts', 'alfresco-settings.service.spec.ts', 'alfresco-content.service.spec.ts',
|
|
||||||
'activiti-content.service.spec.ts', 'activiti-content.service.ts'];
|
|
||||||
|
|
||||||
var fileName = this.getFilename();
|
|
||||||
|
|
||||||
var fileNameReg = /^(alfresco|activiti|adf|activity)/ig;
|
|
||||||
var filenameMatch = fileNameReg.exec(fileName);
|
|
||||||
|
|
||||||
var isWhiteListName = whiteList.find((currentWhiteListName)=>{
|
|
||||||
return currentWhiteListName === fileName;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (filenameMatch && !isWhiteListName) {
|
|
||||||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING + fileName));
|
|
||||||
super.visitSourceFile(node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private getFilename(): string {
|
|
||||||
const filename = this.getSourceFile().fileName;
|
|
||||||
const lastSlash = filename.lastIndexOf('/');
|
|
||||||
if (lastSlash > -1) {
|
|
||||||
return filename.substring(lastSlash + 1);
|
|
||||||
}
|
|
||||||
return filename;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
var adfClassNameRule_1 = require("./adfClassNameRule");
|
|
||||||
exports.ADFClassNameRule = adfClassNameRule_1.Rule;
|
|
||||||
var adfFileNameRule_1 = require("./adfFileNameRule");
|
|
||||||
exports.ComponentSelectorRule = adfFileNameRule_1.Rule;
|
|
@ -1,2 +0,0 @@
|
|||||||
export { Rule as ADFClassNameRule } from './adfClassNameRule';
|
|
||||||
export { Rule as ComponentSelectorRule } from './adfFileNameRule';
|
|
2141
adf-rules/package-lock.json
generated
2141
adf-rules/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "adf-tslint-rules",
|
|
||||||
"description": "Custom Rules for the ADF project",
|
|
||||||
"version": "0.0.3",
|
|
||||||
"author": "Alfresco Software, Ltd.",
|
|
||||||
"scripts": {
|
|
||||||
"build": "tsc",
|
|
||||||
"tscv": "tsc --version",
|
|
||||||
"tsc": "tsc",
|
|
||||||
"tsc:watch": "tsc --w"
|
|
||||||
},
|
|
||||||
"contributors": [
|
|
||||||
{
|
|
||||||
"name": "Eugenio Romano",
|
|
||||||
"email": "eugenio.romano@alfresco.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"devDependencies": {
|
|
||||||
"@angular/compiler": "^4.2.3",
|
|
||||||
"@angular/core": "^4.2.3",
|
|
||||||
"@types/chai": "^3.4.33",
|
|
||||||
"@types/less": "0.0.31",
|
|
||||||
"@types/mocha": "^2.2.32",
|
|
||||||
"@types/node": "^6.0.41",
|
|
||||||
"@types/node-sass": "^3.10.31",
|
|
||||||
"@types/source-map": "^0.5.0",
|
|
||||||
"@types/sprintf-js": "0.0.27",
|
|
||||||
"chai": "^3.5.0",
|
|
||||||
"chai-spies": "^0.7.1",
|
|
||||||
"minimalist": "1.0.0",
|
|
||||||
"mocha": "3.0.2",
|
|
||||||
"node-sass": "^3.13.0",
|
|
||||||
"rimraf": "^2.5.2",
|
|
||||||
"rxjs": "5.4.1",
|
|
||||||
"ts-node": "1.2.2",
|
|
||||||
"tslint": "^5.0.0",
|
|
||||||
"typescript": "2.4.0",
|
|
||||||
"zone.js": "^0.8.4",
|
|
||||||
"js-yaml": "^3.8.4",
|
|
||||||
"json-stringify-pretty-compact": "^1.0.4",
|
|
||||||
"@types/js-yaml": "^3.5.31"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"tslint": "^5.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"app-root-path": "^2.0.1",
|
|
||||||
"css-selector-tokenizer": "^0.7.0",
|
|
||||||
"cssauron": "^1.4.0",
|
|
||||||
"semver-dsl": "^1.0.1",
|
|
||||||
"source-map": "^0.5.6",
|
|
||||||
"sprintf-js": "^1.0.3",
|
|
||||||
"codelyzer": "3.1.2"
|
|
||||||
},
|
|
||||||
"license": "Apache-2.0"
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"target": "es6",
|
|
||||||
"module": "commonjs",
|
|
||||||
"declaration": false,
|
|
||||||
"noImplicitAny": false,
|
|
||||||
"removeComments": true,
|
|
||||||
"lib": ["es6", "es2015", "dom"],
|
|
||||||
"noLib": false,
|
|
||||||
"typeRoots": [
|
|
||||||
"./node_modules/@types",
|
|
||||||
"./node_modules"
|
|
||||||
],
|
|
||||||
"types": [
|
|
||||||
"mocha",
|
|
||||||
"chai",
|
|
||||||
"node",
|
|
||||||
"sprintf-js"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"rules": {
|
|
||||||
"adf-file-naming": true
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user