[lint-refactor] simplify tslint and unify main tslint extension in sub folders (#4032)

* simplify tslint and unify main tslint extension  in sub folders

* remove autofix

* fix lint extension and process cloud
This commit is contained in:
Eugenio Romano
2018-11-29 15:04:12 +00:00
committed by GitHub
parent 49738ad555
commit 27b0ba897a
60 changed files with 141 additions and 497 deletions

View File

@@ -87,14 +87,14 @@ export class AppLayoutComponent implements OnInit {
this.expandedSidenav = expand; this.expandedSidenav = expand;
} }
this.headerService.hideMenu.subscribe(show => this.showMenu = show); this.headerService.hideMenu.subscribe((show) => this.showMenu = show);
this.headerService.color.subscribe(color => this.color = color); this.headerService.color.subscribe((color) => this.color = color);
this.headerService.title.subscribe(title => this.title = title); this.headerService.title.subscribe((title) => this.title = title);
this.headerService.logo.subscribe(path => this.logo = path); this.headerService.logo.subscribe((path) => this.logo = path);
this.headerService.redirectUrl.subscribe(redirectUrl => this.redirectUrl = redirectUrl); this.headerService.redirectUrl.subscribe((redirectUrl) => this.redirectUrl = redirectUrl);
this.headerService.tooltip.subscribe(tooltip => this.tooltip = tooltip); this.headerService.tooltip.subscribe((tooltip) => this.tooltip = tooltip);
this.headerService.position.subscribe(position => this.position = position); this.headerService.position.subscribe((position) => this.position = position);
this.headerService.hideSidenav.subscribe(hideSidenav => this.hideSidenav = hideSidenav); this.headerService.hideSidenav.subscribe((hideSidenav) => this.hideSidenav = hideSidenav);
} }
constructor( constructor(

View File

@@ -29,7 +29,7 @@ export class FilteredDataAdapter extends ObjectDataTableAdapter {
const filter = (this.filterValue || '').trim().toLowerCase(); const filter = (this.filterValue || '').trim().toLowerCase();
if (this.filterKey && filter) { if (this.filterKey && filter) {
rows = rows.filter(row => { rows = rows.filter((row) => {
const value = row.getValue(this.filterKey); const value = row.getValue(this.filterKey);
if (value !== undefined && value !== null) { if (value !== undefined && value !== null) {
const stringValue: string = value.toString().trim().toLowerCase(); const stringValue: string = value.toString().trim().toLowerCase();
@@ -162,7 +162,7 @@ export class DataTableComponent {
icon: this._imageUrl icon: this._imageUrl
} }
]; ];
const rows = objects.map(obj => new ObjectDataRow(obj)); const rows = objects.map((obj) => new ObjectDataRow(obj));
this.data.setRows(rows); this.data.setRows(rows);
} }
@@ -171,7 +171,7 @@ export class DataTableComponent {
{ type: 'text', key: 'id', title: 'Id', sortable: true }, { type: 'text', key: 'id', title: 'Id', sortable: true },
{ type: 'text', key: 'name', title: 'Name', sortable: true, cssClass: 'full-width name-column' } { type: 'text', key: 'name', title: 'Name', sortable: true, cssClass: 'full-width name-column' }
]; ];
const columns = schema.map(col => new ObjectDataColumn(col)); const columns = schema.map((col) => new ObjectDataColumn(col));
this.data.setColumns(columns); this.data.setColumns(columns);
} }

View File

@@ -62,7 +62,7 @@ export class FileViewComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.route.params.subscribe(params => { this.route.params.subscribe((params) => {
const id = params.nodeId; const id = params.nodeId;
if (id) { if (id) {
this.nodeApiService.getNode(id).subscribe( this.nodeApiService.getNode(id).subscribe(

View File

@@ -256,11 +256,11 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
// this.disableDragArea = false; // this.disableDragArea = false;
this.uploadService.fileUploadComplete.asObservable() this.uploadService.fileUploadComplete.asObservable()
.pipe(debounceTime(300)) .pipe(debounceTime(300))
.subscribe(value => this.onFileUploadEvent(value)); .subscribe((value) => this.onFileUploadEvent(value));
this.uploadService.fileUploadDeleted.subscribe((value) => this.onFileUploadEvent(value)); this.uploadService.fileUploadDeleted.subscribe((value) => this.onFileUploadEvent(value));
this.contentService.folderCreated.subscribe(value => this.onFolderCreated(value)); this.contentService.folderCreated.subscribe((value) => this.onFolderCreated(value));
this.onCreateFolder = this.contentService.folderCreate.subscribe(value => this.onFolderAction(value)); this.onCreateFolder = this.contentService.folderCreate.subscribe((value) => this.onFolderAction(value));
this.onEditFolder = this.contentService.folderEdit.subscribe(value => this.onFolderAction(value)); this.onEditFolder = this.contentService.folderEdit.subscribe((value) => this.onFolderAction(value));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__create', PermissionsEnum.CREATE)); // this.permissionsStyle.push(new PermissionStyleModel('document-list__create', PermissionsEnum.CREATE));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__disable', PermissionsEnum.NOT_CREATE, false, true)); // this.permissionsStyle.push(new PermissionStyleModel('document-list__disable', PermissionsEnum.NOT_CREATE, false, true));
@@ -483,7 +483,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
panelClass: 'adf-version-manager-dialog' panelClass: 'adf-version-manager-dialog'
}); });
dialogRef.afterClosed().subscribe(selectedProcess => { dialogRef.afterClosed().subscribe((selectedProcess) => {
this.processId = selectedProcess.id; this.processId = selectedProcess.id;
}); });
@@ -549,7 +549,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
minWidth: '250px' minWidth: '250px'
}); });
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe((result) => {
if (result === true) { if (result === true) {
event.resumeUpload(); event.resumeUpload();
} }

View File

@@ -17,6 +17,7 @@
import { Component, ViewChild } from '@angular/core'; import { Component, ViewChild } from '@angular/core';
import { FormComponent, FormModel, FormService, LogService } from '@alfresco/adf-core'; import { FormComponent, FormModel, FormService, LogService } from '@alfresco/adf-core';
import { FormOutcomeEvent } from '../../../../../lib/core/form/components/widgets/core';
@Component({ @Component({
selector: 'app-form-list', selector: 'app-form-list',
@@ -40,9 +41,9 @@ export class FormListComponent {
constructor(private formService: FormService, private logService: LogService) { constructor(private formService: FormService, private logService: LogService) {
// Prevent default outcome actions // Prevent default outcome actions
formService.executeOutcome.subscribe(e => { formService.executeOutcome.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
e.preventDefault(); formOutcomeEvent.preventDefault();
this.logService.log(e.outcome); this.logService.log(formOutcomeEvent.outcome);
}); });
} }

View File

@@ -68,7 +68,7 @@ export class FormComponent implements OnInit, OnDestroy {
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => subscription.unsubscribe()); this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = []; this.subscriptions = [];
} }

View File

@@ -69,7 +69,7 @@ export class NotificationsComponent implements OnInit {
}); });
this.configForm.valueChanges this.configForm.valueChanges
.subscribe(configFormValues => .subscribe((configFormValues) =>
this.setSnackBarConfig(configFormValues) this.setSnackBarConfig(configFormValues)
); );

View File

@@ -87,7 +87,7 @@ export class ProcessListDemoComponent implements OnInit {
.pipe( .pipe(
debounceTime(500) debounceTime(500)
) )
.subscribe(processFilter => { .subscribe((processFilter) => {
if (this.isFormValid()) { if (this.isFormValid()) {
this.filterProcesses(processFilter); this.filterProcesses(processFilter);
} }

View File

@@ -34,7 +34,7 @@ export class FormNodeViewerComponent implements OnInit, OnDestroy {
} }
ngOnInit() { ngOnInit() {
this.sub = this.route.params.subscribe(params => { this.sub = this.route.params.subscribe((params) => {
this.nodeId = params['id']; this.nodeId = params['id'];
}); });
} }

View File

@@ -18,6 +18,7 @@
import { Component, OnDestroy, OnInit } from '@angular/core'; import { Component, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { Params } from '@angular/router/src/shared';
@Component({ @Component({
selector: 'app-form-viewer', selector: 'app-form-viewer',
@@ -34,7 +35,7 @@ export class FormViewerComponent implements OnInit, OnDestroy {
} }
ngOnInit() { ngOnInit() {
this.sub = this.route.params.subscribe(params => { this.sub = this.route.params.subscribe((params: Params) => {
this.taskId = params['id']; this.taskId = params['id'];
}); });
} }

View File

@@ -62,7 +62,7 @@ export class ProcessAttachmentsComponent implements OnInit, OnChanges, OnDestroy
ngOnInit() { ngOnInit() {
this.subscriptions.push( this.subscriptions.push(
this.uploadService.fileUploadComplete.subscribe( this.uploadService.fileUploadComplete.subscribe(
value => this.onFileUploadComplete(value.data) (value) => this.onFileUploadComplete(value.data)
) )
); );
} }
@@ -77,7 +77,7 @@ export class ProcessAttachmentsComponent implements OnInit, OnChanges, OnDestroy
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => subscription.unsubscribe()); this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = []; this.subscriptions = [];
} }

View File

@@ -185,11 +185,11 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
formRenderingService.setComponentTypeResolver('custom_stencil_01', () => CustomStencil01, true); formRenderingService.setComponentTypeResolver('custom_stencil_01', () => CustomStencil01, true);
this.subscriptions.push( this.subscriptions.push(
formService.formLoaded.subscribe((e: FormEvent) => { formService.formLoaded.subscribe((formEvent: FormEvent) => {
this.logService.log(`Form loaded: ${e.form.id}`); this.logService.log(`Form loaded: ${formEvent.form.id}`);
}), }),
formService.formFieldValueChanged.subscribe((e: FormFieldEvent) => { formService.formFieldValueChanged.subscribe((formFieldEvent: FormFieldEvent) => {
this.logService.log(`Field value changed. Form: ${e.form.id}, Field: ${e.field.id}, Value: ${e.field.value}`); this.logService.log(`Field value changed. Form: ${formFieldEvent.form.id}, Field: ${formFieldEvent.field.id}, Value: ${formFieldEvent.field.value}`);
}), }),
this.preferenceService.select(UserPreferenceValues.PaginationSize).subscribe((pageSize) => { this.preferenceService.select(UserPreferenceValues.PaginationSize).subscribe((pageSize) => {
this.paginationPageSize = pageSize; this.paginationPageSize = pageSize;
@@ -205,7 +205,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
} }
), ),
formService.formContentClicked.subscribe(content => { formService.formContentClicked.subscribe((content) => {
this.showContentPreview(content); this.showContentPreview(content);
}), }),
@@ -229,7 +229,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
} }
this.showProcessTab = this.activeTab === this.tabs.processes; this.showProcessTab = this.activeTab === this.tabs.processes;
this.showTaskTab = this.activeTab === this.tabs.tasks; this.showTaskTab = this.activeTab === this.tabs.tasks;
this.route.params.subscribe(params => { this.route.params.subscribe((params) => {
const applicationId = params['appId']; const applicationId = params['appId'];
this.filterSelected = params['filterId'] ? { id: +params['filterId'] } : { index: 0 }; this.filterSelected = params['filterId'] ? { id: +params['filterId'] } : { index: 0 };
@@ -247,7 +247,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => subscription.unsubscribe()); this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = []; this.subscriptions = [];
} }
@@ -460,7 +460,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
} }
loadStencilScriptsInPageFromProcessService() { loadStencilScriptsInPageFromProcessService() {
this.apiService.getInstance().activiti.scriptFileApi.getControllers().then(response => { this.apiService.getInstance().activiti.scriptFileApi.getControllers().then((response) => {
if (response) { if (response) {
const stencilScript = document.createElement('script'); const stencilScript = document.createElement('script');
stencilScript.type = 'text/javascript'; stencilScript.type = 'text/javascript';

View File

@@ -17,6 +17,7 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Params } from '@angular/router/src/shared';
@Component({ @Component({
selector: 'app-show-diagram', selector: 'app-show-diagram',
@@ -30,7 +31,7 @@ export class ShowDiagramComponent {
constructor(private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private router: Router) { private router: Router) {
this.route.params.subscribe(params => { this.route.params.subscribe((params: Params) => {
this.processDefinitionId = params['processDefinitionId']; this.processDefinitionId = params['processDefinitionId'];
this.appId = params['appId']; this.appId = params['appId'];
}); });

View File

@@ -16,10 +16,16 @@
*/ */
import { Component, Input, OnChanges, OnInit, ViewChild, OnDestroy } from '@angular/core'; import { Component, Input, OnChanges, OnInit, ViewChild, OnDestroy } from '@angular/core';
import { TaskListService, TaskAttachmentListComponent, TaskDetailsModel, TaskUploadService } from '@alfresco/adf-process-services'; import {
TaskListService,
TaskAttachmentListComponent,
TaskDetailsModel,
TaskUploadService
} from '@alfresco/adf-process-services';
import { UploadService, AlfrescoApiService, AppConfigService } from '@alfresco/adf-core'; import { UploadService, AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
import { PreviewService } from '../../services/preview.service'; import { PreviewService } from '../../services/preview.service';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { FileUploadCompleteEvent } from '../../../../../lib/core/events/file.event';
export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) { export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
return new TaskUploadService(api, config); return new TaskUploadService(api, config);
@@ -53,12 +59,13 @@ export class TaskAttachmentsComponent implements OnInit, OnChanges, OnDestroy {
constructor( constructor(
private uploadService: UploadService, private uploadService: UploadService,
private activitiTaskList: TaskListService, private activitiTaskList: TaskListService,
private preview: PreviewService) {} private preview: PreviewService) {
}
ngOnInit() { ngOnInit() {
this.subscriptions.push( this.subscriptions.push(
this.uploadService.fileUploadComplete.subscribe( this.uploadService.fileUploadComplete.subscribe(
value => this.onFileUploadComplete(value.data) (fileUploadCompleteEvent: FileUploadCompleteEvent) => this.onFileUploadComplete(fileUploadCompleteEvent.data)
) )
); );
} }
@@ -73,7 +80,7 @@ export class TaskAttachmentsComponent implements OnInit, OnChanges, OnDestroy {
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => subscription.unsubscribe()); this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = []; this.subscriptions = [];
} }

View File

@@ -61,7 +61,7 @@ export class SearchResultComponent implements OnInit, OnDestroy {
this.isLoading = true; this.isLoading = true;
}), }),
this.queryBuilder.executed.subscribe(data => { this.queryBuilder.executed.subscribe((data) => {
this.queryBuilder.paging.skipCount = 0; this.queryBuilder.paging.skipCount = 0;
this.onSearchResultLoaded(data); this.onSearchResultLoaded(data);
@@ -91,13 +91,13 @@ export class SearchResultComponent implements OnInit, OnDestroy {
} }
const fields = this.config.get<string[]>('search.app:fields', ['cm:name']); const fields = this.config.get<string[]>('search.app:fields', ['cm:name']);
const query = fields.map(field => `${field}:"${userInput}*"`).join(' OR '); const query = fields.map((field) => `${field}:"${userInput}*"`).join(' OR ');
return query; return query;
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => subscription.unsubscribe()); this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = []; this.subscriptions = [];
} }

View File

@@ -33,7 +33,7 @@ export class SharedLinkViewComponent implements OnInit {
constructor(private route: ActivatedRoute, private router: Router) {} constructor(private route: ActivatedRoute, private router: Router) {}
ngOnInit() { ngOnInit() {
this.route.params.subscribe(params => { this.route.params.subscribe((params) => {
this.sharedLinkId = params.id; this.sharedLinkId = params.id;
}); });
} }

View File

@@ -65,7 +65,7 @@ export class TaskListCloudDemoComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.route.params.subscribe(params => { this.route.params.subscribe((params) => {
this.applicationName = params.applicationName; this.applicationName = params.applicationName;
}); });
@@ -95,7 +95,7 @@ export class TaskListCloudDemoComponent implements OnInit {
); );
this.route.queryParams this.route.queryParams
.subscribe(params => { .subscribe((params) => {
if (params.status) { if (params.status) {
this.status = params.status; this.status = params.status;
this.sort = params.sort; this.sort = params.sort;

View File

@@ -115,7 +115,7 @@ export class TaskListDemoComponent implements OnInit {
.pipe( .pipe(
debounceTime(500) debounceTime(500)
) )
.subscribe(taskFilter => { .subscribe((taskFilter) => {
if (this.isFormValid()) { if (this.isFormValid()) {
this.filterTasks(taskFilter); this.filterTasks(taskFilter);
} }

View File

@@ -129,7 +129,7 @@ export class ThemePickerComponent {
} }
private _getCurrentThemeFromHref(href: string): DocsSiteTheme { private _getCurrentThemeFromHref(href: string): DocsSiteTheme {
return this.themes.find(theme => theme.href === href); return this.themes.find((theme) => theme.href === href);
} }
} }

View File

@@ -38,7 +38,7 @@ export class TrashcanComponent {
) { ) {
this.preference this.preference
.select(UserPreferenceValues.Locale) .select(UserPreferenceValues.Locale)
.subscribe(locale => { .subscribe((locale) => {
this.currentLocale = locale; this.currentLocale = locale;
}); });
} }

View File

@@ -49,8 +49,8 @@ export class AppExtensionService {
console.log('loaded extension config', config); console.log('loaded extension config', config);
const references = (config.$references || []) const references = (config.$references || [])
.filter(entry => typeof entry === 'object') .filter((entry) => typeof entry === 'object')
.map(entry => <ExtensionRef> entry); .map((entry) => <ExtensionRef> entry);
this._references.next(references); this._references.next(references);
} }
} }

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -33,7 +33,7 @@ export class AuthBearerInterceptor implements HttpInterceptor {
private loadExcludedUrlsRegex(): void { private loadExcludedUrlsRegex(): void {
const excludedUrls: string[] = this.authService.getBearerExcludedUrls(); const excludedUrls: string[] = this.authService.getBearerExcludedUrls();
this.excludedUrlsRegex = excludedUrls.map(urlPattern => new RegExp(urlPattern, 'gi')) || []; this.excludedUrlsRegex = excludedUrls.map((urlPattern) => new RegExp(urlPattern, 'gi')) || [];
} }
@@ -51,11 +51,11 @@ export class AuthBearerInterceptor implements HttpInterceptor {
} }
const urlRequest = req.url; const urlRequest = req.url;
const shallPass: boolean = !!this.excludedUrlsRegex.find(regex => regex.test(urlRequest)); const shallPass: boolean = !!this.excludedUrlsRegex.find((regex) => regex.test(urlRequest));
if (shallPass) { if (shallPass) {
return next.handle(req) return next.handle(req)
.pipe( .pipe(
catchError(error => { catchError((error) => {
return observableThrowError(error); return observableThrowError(error);
}) })
); );
@@ -63,11 +63,11 @@ export class AuthBearerInterceptor implements HttpInterceptor {
return this.authService.addTokenToHeader(req.headers) return this.authService.addTokenToHeader(req.headers)
.pipe( .pipe(
mergeMap(headersWithBearer => { mergeMap((headersWithBearer) => {
const kcReq = req.clone({ headers: headersWithBearer }); const kcReq = req.clone({ headers: headersWithBearer });
return next.handle(kcReq) return next.handle(kcReq)
.pipe( .pipe(
catchError(error => { catchError((error) => {
return observableThrowError(error); return observableThrowError(error);
}) })
); );

View File

@@ -56,9 +56,9 @@ export class InMemoryFormService extends FormService {
// return super.getRestFieldValues(taskId, fieldId); // return super.getRestFieldValues(taskId, fieldId);
this.logService.log(`getRestFieldValues: ${taskId} => ${field}`); this.logService.log(`getRestFieldValues: ${taskId} => ${field}`);
return new Observable<FormFieldOption[]>(observer => { return new Observable<FormFieldOption[]>((observer) => {
const currentField = this.data.rest.fields.find( const currentField = this.data.rest.fields.find(
f => f.taskId === taskId && f.fieldId === field (f) => f.taskId === taskId && f.fieldId === field
); );
if ( currentField ) { if ( currentField ) {
const values: FormFieldOption[] = currentField.values || []; const values: FormFieldOption[] = currentField.values || [];
@@ -91,9 +91,9 @@ export class InMemoryFormService extends FormService {
// return super.getRestFieldValuesByProcessId(processDefinitionId, fieldId); // return super.getRestFieldValuesByProcessId(processDefinitionId, fieldId);
this.logService.log(`getRestFieldValuesByProcessId: ${processDefinitionId} => ${fieldId}`); this.logService.log(`getRestFieldValuesByProcessId: ${processDefinitionId} => ${fieldId}`);
return new Observable<FormFieldOption[]>(observer => { return new Observable<FormFieldOption[]>((observer) => {
const field = this.data.rest.fields.find( const field = this.data.rest.fields.find(
f => f.processId === processDefinitionId && f.fieldId === fieldId (currentField) => currentField.processId === processDefinitionId && currentField.fieldId === fieldId
); );
const values: FormFieldOption[] = field.values || []; const values: FormFieldOption[] = field.values || [];
this.logService.log(values); this.logService.log(values);

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,172 +1,10 @@
{ {
"rulesDirectory": [ "extends": "../tslint.json",
"../node_modules/codelyzer",
"../tools/tslint-rules/"
],
"rules": { "rules": {
"adf-license-banner": [
true,
"e2e/**/*.ts",
"./license-community.txt"
],
"align": [
true,
"parameters",
"statements"
],
"ban": [
true,
"eval",
"fdescribe"
],
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": true,
"eofline": true,
"forin": true,
"indent": [
true,
"spaces"
],
"interface-name": false,
"jsdoc-format": true,
"label-position": true,
"max-line-length": [
true,
180
],
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-any": false,
"no-arg": true,
"no-bitwise": false,
"no-conditional-assignment": true,
"no-consecutive-blank-lines": true,
"no-console": [
true,
"log",
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-constructor-vars": false,
"no-debugger": true,
"no-duplicate-super": true,
"no-duplicate-variable": true,
"no-empty": false,
"no-eval": true,
"no-inferrable-types": false,
"no-internal-module": true,
"no-require-imports": false,
"no-shadowed-variable": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": true,
"no-unused-expression": true,
"no-var-keyword": true,
"no-var-requires": true,
"object-literal-sort-keys": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"quotemark": [
true,
"single",
"avoid-escape"
],
"radix": true,
"semicolon": [
true,
"always"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": "never",
"singleline": "never"
}
],
"triple-equals": [
true,
"allow-null-check"
],
"typedef": false,
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"use-strict": false,
"variable-name": [
true,
"check-format",
"allow-leading-underscore",
"ban-keywords"
],
"callable-types": true,
"import-spacing": true,
"interface-over-type-literal": true,
"member-access": false,
"no-empty-interface": true,
"no-string-literal": false,
"no-string-throw": true,
"prefer-const": false,
"unified-signatures": true,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-typecast",
"check-type",
"check-typecast",
"check-module"
],
"directive-selector": [true, "attribute", "app", "camelCase"], "directive-selector": [true, "attribute", "app", "camelCase"],
"component-selector": [true, "element", "app", "kebab-case"], "component-selector": [true, "element", "app", "kebab-case"],
"naming-convention": [ "adf-license-banner": [true, "**/*.ts", "./license-community.txt"]
{
"type": "enumMember",
"format": "PascalCase"
}
],
"ordered-imports": false,
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-host-property-decorator": false,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true,
"adf-file-name": true,
"adf-class-name": true,
"adf-prefix-name": true,
"no-input-rename": true,
"no-output-rename": true
} }
} }

View File

@@ -56,7 +56,7 @@ export class ApiService {
return this.apiService.bpmClient.callCustomApi(uri, method, pathParams, queryParams, headerParams, formParams, postBody, return this.apiService.bpmClient.callCustomApi(uri, method, pathParams, queryParams, headerParams, formParams, postBody,
authNames, contentTypes, accepts, {}) authNames, contentTypes, accepts, {})
.catch(error => { .catch((error) => {
throw (error); throw (error);
}); });
} }

View File

@@ -112,7 +112,7 @@ describe('Unshare file', () => {
}); });
describe('with permission', () => { describe('with permission', () => {
afterAll(async done => { afterAll(async (done) => {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, nodeId); await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, nodeId);
done(); done();
}); });
@@ -160,7 +160,7 @@ describe('Unshare file', () => {
}); });
describe('without permission', () => { describe('without permission', () => {
afterAll(async done => { afterAll(async (done) => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.sitesApi.deleteSite(siteName, { permanent: true }); await this.alfrescoJsApi.core.sitesApi.deleteSite(siteName, { permanent: true });
done(); done();

View File

@@ -102,7 +102,7 @@ export class SearchCheckListPage {
this.clickShowMoreButtonUntilIsNotDisplayed(); this.clickShowMoreButtonUntilIsNotDisplayed();
} }
}, err => { }, (err) => {
}); });
return this; return this;
} }
@@ -114,7 +114,7 @@ export class SearchCheckListPage {
this.clickShowLessButtonUntilIsNotDisplayed(); this.clickShowLessButtonUntilIsNotDisplayed();
} }
}, err => { }, (err) => {
}); });
return this; return this;
} }

View File

@@ -200,7 +200,7 @@ export class TagPage {
this.clickShowMoreButtonUntilNotDisplayed(); this.clickShowMoreButtonUntilNotDisplayed();
} }
}, err => { }, (err) => {
}); });
} }
@@ -211,7 +211,7 @@ export class TagPage {
this.clickShowLessButtonUntilNotDisplayed(); this.clickShowLessButtonUntilNotDisplayed();
} }
}, err => { }, (err) => {
}); });
} }
} }

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,26 +1,18 @@
/*! /*!
* @license * @license
* Alfresco Example Content Application * Copyright 2016 Alfresco Software, Ltd.
* *
* Copyright (C) 2005 - 2018 Alfresco Software Limited * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* *
* This file is part of the Alfresco Example Content Application. * http://www.apache.org/licenses/LICENSE-2.0
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
* *
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify * Unless required by applicable law or agreed to in writing, software
* it under the terms of the GNU Lesser General Public License as published by * distributed under the License is distributed on an "AS IS" BASIS,
* the Free Software Foundation, either version 3 of the License, or * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* (at your option) any later version. * See the License for the specific language governing permissions and
* * limitations under the License.
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
import { import {

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
/*! /*!
* @license * @license
* Copyright 2016 - 2018 Alfresco Software, Ltd. * Copyright 2016 Alfresco Software, Ltd.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@@ -1,3 +1,20 @@
/*!
* @license
* Copyright 2016 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// This file is required by karma.conf.js and loads recursively all the .spec and framework files // This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'core-js/es7/reflect'; import 'core-js/es7/reflect';

View File

@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { AppListCloudModule } from './app-list-cloud.module'; import { AppListCloudModule } from './app-list-cloud.module';
describe('AppListCloudModule', () => { describe('AppListCloudModule', () => {

View File

@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { Component, ViewEncapsulation, OnChanges, AfterContentInit, ContentChild, Output, EventEmitter, SimpleChanges, SimpleChange, Input } from '@angular/core'; import { Component, ViewEncapsulation, OnChanges, AfterContentInit, ContentChild, Output, EventEmitter, SimpleChanges, SimpleChange, Input } from '@angular/core';
import { DataTableSchema, PaginatedComponent, import { DataTableSchema, PaginatedComponent,
EmptyCustomContentDirective, AppConfigService, EmptyCustomContentDirective, AppConfigService,

View File

@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { ProcessListCloudModule } from './process-list-cloud.module'; import { ProcessListCloudModule } from './process-list-cloud.module';
describe('ProcessListCloudModule', () => { describe('ProcessListCloudModule', () => {

View File

@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
// This file is required by karma.conf.js and loads recursively all the .spec and framework files // This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'core-js/es7/reflect'; import 'core-js/es7/reflect';

View File

@@ -1,224 +1,6 @@
{ {
"rulesDirectory": [ "extends": "../tslint.json",
"../node_modules/codelyzer",
"../tools/tslint-rules/"
],
"extends": [
"rxjs-tslint-rules"
],
"rules": { "rules": {
"adf-license-banner": [ "adf-license-banner": [true, "lib/+(core|content-services|process-services|process-services-cloud|insights|extensions)/**/*.ts", "./license-community.txt"]
true,
"lib/+(core|content-services|process-services-cloud|process-services|insights)/**/*.ts",
"./license-community.txt"
],
"align": [
true,
"parameters",
"statements"
],
"ban": [
true,
"eval",
"fdescribe"
],
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": true,
"eofline": true,
"forin": true,
"indent": [
true,
"spaces"
],
"interface-name": false,
"jsdoc-format": true,
"label-position": true,
"max-line-length": [
true,
180
],
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-any": false,
"no-arg": true,
"no-bitwise": false,
"no-conditional-assignment": true,
"no-consecutive-blank-lines": true,
"no-console": [
true,
"log",
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-constructor-vars": false,
"no-debugger": true,
"no-duplicate-super": true,
"no-duplicate-variable": true,
"no-empty": false,
"no-eval": true,
"no-inferrable-types": false,
"no-internal-module": true,
"no-require-imports": false,
"no-shadowed-variable": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": true,
"no-unused-expression": true,
"no-var-keyword": true,
"no-var-requires": true,
"object-literal-sort-keys": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"quotemark": [
true,
"single",
"avoid-escape"
],
"radix": true,
"semicolon": [
true,
"always"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": "never",
"singleline": "never"
}
],
"triple-equals": [
true,
"allow-null-check"
],
"typedef": false,
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"use-strict": false,
"variable-name": [
true,
"check-format",
"allow-leading-underscore",
"ban-keywords"
],
"callable-types": true,
"import-spacing": true,
"interface-over-type-literal": true,
"member-access": false,
"no-empty-interface": true,
"no-string-literal": false,
"no-string-throw": true,
"prefer-const": false,
"unified-signatures": true,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-typecast",
"check-type",
"check-typecast",
"check-module"
],
"component-selector": [
true,
"element",
"adf",
"kebab-case"
],
"naming-convention": [
{
"type": "enumMember",
"format": "PascalCase"
}
],
"arrow-parens": true,
"ordered-imports": false,
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-host-property-decorator": false,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true,
"adf-file-name": true,
"adf-class-name": true,
"adf-prefix-name": true,
"no-input-rename": true,
"no-output-rename": true,
"rxjs-ban-operators": {
"severity": "error"
},
"rxjs-no-unsafe-takeuntil": {
"severity": "error"
},
"rxjs-no-create": {
"severity": "error"
},
"rxjs-no-ignored-subscribe": {
"severity": "error"
},
"rxjs-no-subject-unsubscribe": {
"severity": "error"
},
"rxjs-no-subject-value": {
"severity": "error"
},
"rxjs-no-unsafe-catch": {
"options": [
{
"observable": "action(s|\\$)?"
}
],
"severity": "error"
},
"rxjs-no-unsafe-switchmap": {
"options": [
{
"disallow": [
"add",
"create",
"delete",
"post",
"put",
"remove",
"set",
"update"
],
"observable": "action(s|\\$)?"
}
],
"severity": "error"
}
} }
} }

View File

@@ -12,7 +12,7 @@
"build-lib": "./scripts/ng-packagr.sh", "build-lib": "./scripts/ng-packagr.sh",
"bundlesize-check": "bundlesize", "bundlesize-check": "bundlesize",
"lint-lib": "./node_modules/.bin/tslint -p ./lib/tsconfig.json -c ./lib/tslint.json", "lint-lib": "./node_modules/.bin/tslint -p ./lib/tsconfig.json -c ./lib/tslint.json",
"lint-e2e": "./node_modules/.bin/tslint -p ./e2e/tsconfig.e2e.json -c ./tslint.json", "lint-e2e": "./node_modules/.bin/tslint -p ./e2e/tsconfig.e2e.json -c ./tslint.json",
"test-export": "ts-node ./tools/export-check/exportCheck.ts ./lib/core/public-api.ts ./lib/process-services/public-api.ts ./lib/content-services/public-api.ts ./lib/insights/public-api.ts ./lib/process-services-cloud/public-api.ts", "test-export": "ts-node ./tools/export-check/exportCheck.ts ./lib/core/public-api.ts ./lib/process-services/public-api.ts ./lib/content-services/public-api.ts ./lib/insights/public-api.ts ./lib/process-services-cloud/public-api.ts",
"ng": "ng", "ng": "ng",
"affected:libs": "./node_modules/.bin/nx affected:libs", "affected:libs": "./node_modules/.bin/nx affected:libs",

View File

@@ -163,6 +163,7 @@
"format": "PascalCase" "format": "PascalCase"
} }
], ],
"arrow-parens": true,
"ordered-imports": false, "ordered-imports": false,
"use-input-property-decorator": true, "use-input-property-decorator": true,
"use-output-property-decorator": true, "use-output-property-decorator": true,