Skip to content

Commit 437feda

Browse files
lucas-koehlersdirix
authored andcommitted
Fix ESLint issues
Fix remaining ESLint issues with these exceptions that will be handled in a follow up - import/no-named-as-default in vanilla-renderers, material-renderers - no-prototype-builtins - @typescript-eslint/no-explicit-any - typescript-eslint/ban-types Part of eclipsesource#1551
1 parent 1f124e8 commit 437feda

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+880
-811
lines changed

packages/angular-material/src/controls/autocomplete.renderer.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@
2222
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2323
THE SOFTWARE.
2424
*/
25-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
25+
import {
26+
ChangeDetectionStrategy,
27+
Component,
28+
Input,
29+
OnInit,
30+
} from '@angular/core';
2631
import type { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
2732
import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular';
2833
import {
@@ -96,7 +101,10 @@ import { map, startWith } from 'rxjs/operators';
96101
`,
97102
changeDetection: ChangeDetectionStrategy.OnPush,
98103
})
99-
export class AutocompleteControlRenderer extends JsonFormsControl {
104+
export class AutocompleteControlRenderer
105+
extends JsonFormsControl
106+
implements OnInit
107+
{
100108
@Input() options: string[];
101109
filteredOptions: Observable<string[]>;
102110
shouldFilter: boolean;

packages/angular-material/src/other/label.renderer.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2323
THE SOFTWARE.
2424
*/
25-
import { Component } from '@angular/core';
25+
import { Component, OnDestroy, OnInit } from '@angular/core';
2626
import {
2727
JsonFormsAngularService,
2828
JsonFormsBaseRenderer,
@@ -42,7 +42,10 @@ import { Subscription } from 'rxjs';
4242
selector: 'LabelRenderer',
4343
template: ` <label class="mat-title" fxFlex> {{ label }} </label> `,
4444
})
45-
export class LabelRenderer extends JsonFormsBaseRenderer<LabelElement> {
45+
export class LabelRenderer
46+
extends JsonFormsBaseRenderer<LabelElement>
47+
implements OnDestroy, OnInit
48+
{
4649
label: string;
4750
visible: boolean;
4851

packages/angular-material/src/other/master-detail/master.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
ChangeDetectionStrategy,
2929
ChangeDetectorRef,
3030
Component,
31+
OnInit,
3132
} from '@angular/core';
3233
import {
3334
JsonFormsAngularService,
@@ -146,7 +147,10 @@ export const removeSchemaKeywords = (path: string) => {
146147
],
147148
changeDetection: ChangeDetectionStrategy.OnPush,
148149
})
149-
export class MasterListComponent extends JsonFormsArrayControl {
150+
export class MasterListComponent
151+
extends JsonFormsArrayControl
152+
implements OnInit
153+
{
150154
masterItems: any[];
151155
selectedItem: any;
152156
selectedItemIdx: number;

packages/angular-material/src/other/table.renderer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
THE SOFTWARE.
2424
*/
2525
import startCase from 'lodash/startCase';
26-
import { Component } from '@angular/core';
26+
import { Component, OnInit } from '@angular/core';
2727
import {
2828
JsonFormsAngularService,
2929
JsonFormsArrayControl,
@@ -137,7 +137,7 @@ import {
137137
`,
138138
styles: ['table {width: 100%;}', '.cdk-column-action { width: 15%}'],
139139
})
140-
export class TableRenderer extends JsonFormsArrayControl {
140+
export class TableRenderer extends JsonFormsArrayControl implements OnInit {
141141
detailUiSchema: UISchemaElement;
142142
displayedColumns: string[];
143143
items: ColumnDescription[];

packages/angular-material/test/autocomplete-control.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ describe('AutoComplete control Input Event Tests', () => {
233233
fixture = TestBed.createComponent(componentUT);
234234
component = fixture.componentInstance;
235235
zone = TestBed.inject(NgZone);
236-
spyOn(zone, 'runOutsideAngular').and.callFake((fn: Function) => fn());
236+
spyOn(zone, 'runOutsideAngular').and.callFake((fn: () => any) => fn());
237237
inputElement = fixture.debugElement.query(By.css('input')).nativeElement;
238238
});
239239

packages/angular/src/abstract-control.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ export abstract class JsonFormsAbstractControl<
140140
return this.error ? { error: this.error } : null;
141141
};
142142

143-
// @ts-ignore
144-
mapAdditionalProps(props: Props) {
143+
mapAdditionalProps(_props: Props) {
145144
// do nothing by default
146145
}
147146

packages/angular/src/jsonforms-root.component.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
*/
2525
import {
2626
Component,
27+
DoCheck,
2728
EventEmitter,
2829
Input,
2930
OnChanges,
@@ -42,12 +43,15 @@ import {
4243
} from '@jsonforms/core';
4344
import Ajv, { ErrorObject } from 'ajv';
4445
import { JsonFormsAngularService, USE_STATE_VALUE } from './jsonforms.service';
46+
47+
// TODO Can this be rewritten to not use DoCheck and OnChanges?
48+
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
4549
@Component({
4650
selector: 'jsonforms',
4751
template: '<jsonforms-outlet></jsonforms-outlet>',
4852
providers: [JsonFormsAngularService],
4953
})
50-
export class JsonForms implements OnChanges, OnInit {
54+
export class JsonForms implements DoCheck, OnChanges, OnInit {
5155
@Input() uischema: UISchemaElement;
5256
@Input() schema: JsonSchema;
5357
@Input() data: any;

packages/core/src/actions/actions.ts

+23-27
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,29 @@ import type { RankedTester } from '../testers';
3232
import type { UISchemaTester, ValidationMode } from '../reducers';
3333
import type { ErrorTranslator, Translator } from '../i18n';
3434

35-
export const INIT: 'jsonforms/INIT' = 'jsonforms/INIT';
36-
export const UPDATE_CORE: 'jsonforms/UPDATE_CORE' = `jsonforms/UPDATE_CORE`;
37-
export const SET_AJV: 'jsonforms/SET_AJV' = 'jsonforms/SET_AJV';
38-
export const UPDATE_DATA: 'jsonforms/UPDATE' = 'jsonforms/UPDATE';
39-
export const UPDATE_ERRORS: 'jsonforms/UPDATE_ERRORS' =
40-
'jsonforms/UPDATE_ERRORS';
41-
export const VALIDATE: 'jsonforms/VALIDATE' = 'jsonforms/VALIDATE';
42-
export const ADD_RENDERER: 'jsonforms/ADD_RENDERER' = 'jsonforms/ADD_RENDERER';
43-
export const REMOVE_RENDERER: 'jsonforms/REMOVE_RENDERER' =
44-
'jsonforms/REMOVE_RENDERER';
45-
export const ADD_CELL: 'jsonforms/ADD_CELL' = 'jsonforms/ADD_CELL';
46-
export const REMOVE_CELL: 'jsonforms/REMOVE_CELL' = 'jsonforms/REMOVE_CELL';
47-
export const SET_CONFIG: 'jsonforms/SET_CONFIG' = 'jsonforms/SET_CONFIG';
48-
export const ADD_UI_SCHEMA: 'jsonforms/ADD_UI_SCHEMA' = `jsonforms/ADD_UI_SCHEMA`;
49-
export const REMOVE_UI_SCHEMA: 'jsonforms/REMOVE_UI_SCHEMA' = `jsonforms/REMOVE_UI_SCHEMA`;
50-
export const SET_SCHEMA: 'jsonforms/SET_SCHEMA' = `jsonforms/SET_SCHEMA`;
51-
export const SET_UISCHEMA: 'jsonforms/SET_UISCHEMA' = `jsonforms/SET_UISCHEMA`;
52-
export const SET_VALIDATION_MODE: 'jsonforms/SET_VALIDATION_MODE' =
53-
'jsonforms/SET_VALIDATION_MODE';
54-
55-
export const SET_LOCALE: 'jsonforms/SET_LOCALE' = `jsonforms/SET_LOCALE`;
56-
export const SET_TRANSLATOR: 'jsonforms/SET_TRANSLATOR' =
57-
'jsonforms/SET_TRANSLATOR';
58-
export const UPDATE_I18N: 'jsonforms/UPDATE_I18N' = 'jsonforms/UPDATE_I18N';
59-
60-
export const ADD_DEFAULT_DATA: 'jsonforms/ADD_DEFAULT_DATA' = `jsonforms/ADD_DEFAULT_DATA`;
61-
export const REMOVE_DEFAULT_DATA: 'jsonforms/REMOVE_DEFAULT_DATA' = `jsonforms/REMOVE_DEFAULT_DATA`;
35+
export const INIT = 'jsonforms/INIT' as const;
36+
export const UPDATE_CORE = 'jsonforms/UPDATE_CORE' as const;
37+
export const SET_AJV = 'jsonforms/SET_AJV' as const;
38+
export const UPDATE_DATA = 'jsonforms/UPDATE' as const;
39+
export const UPDATE_ERRORS = 'jsonforms/UPDATE_ERRORS' as const;
40+
export const VALIDATE = 'jsonforms/VALIDATE' as const;
41+
export const ADD_RENDERER = 'jsonforms/ADD_RENDERER' as const;
42+
export const REMOVE_RENDERER = 'jsonforms/REMOVE_RENDERER' as const;
43+
export const ADD_CELL = 'jsonforms/ADD_CELL' as const;
44+
export const REMOVE_CELL = 'jsonforms/REMOVE_CELL' as const;
45+
export const SET_CONFIG = 'jsonforms/SET_CONFIG' as const;
46+
export const ADD_UI_SCHEMA = 'jsonforms/ADD_UI_SCHEMA' as const;
47+
export const REMOVE_UI_SCHEMA = 'jsonforms/REMOVE_UI_SCHEMA' as const;
48+
export const SET_SCHEMA = 'jsonforms/SET_SCHEMA' as const;
49+
export const SET_UISCHEMA = 'jsonforms/SET_UISCHEMA' as const;
50+
export const SET_VALIDATION_MODE = 'jsonforms/SET_VALIDATION_MODE' as const;
51+
52+
export const SET_LOCALE = 'jsonforms/SET_LOCALE' as const;
53+
export const SET_TRANSLATOR = 'jsonforms/SET_TRANSLATOR' as const;
54+
export const UPDATE_I18N = 'jsonforms/UPDATE_I18N' as const;
55+
56+
export const ADD_DEFAULT_DATA = 'jsonforms/ADD_DEFAULT_DATA' as const;
57+
export const REMOVE_DEFAULT_DATA = 'jsonforms/REMOVE_DEFAULT_DATA' as const;
6258

6359
export type CoreActions =
6460
| InitAction

packages/core/src/generators/Generate.ts

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import { createControlElement, generateDefaultUISchema } from './uischema';
2828
import type { ControlElement, JsonSchema, UISchemaElement } from '../';
2929

3030
export const Generate: {
31+
// TODO fix @typescript-eslint/ban-types
32+
// eslint-disable-next-line @typescript-eslint/ban-types
3133
jsonSchema(instance: Object, options?: any): JsonSchema;
3234
uiSchema(
3335
jsonSchema: JsonSchema,

packages/core/src/generators/schema.ts

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class Gen {
5252
private findOption: (props: Properties) => (optionName: string) => any
5353
) {}
5454

55+
// TODO fix @typescript-eslint/ban-types
56+
// eslint-disable-next-line @typescript-eslint/ban-types
5557
schemaObject = (data: Object): JsonSchema4 => {
5658
const props: Properties = this.properties(data);
5759
const schema: JsonSchema4 = {
@@ -143,6 +145,8 @@ class Gen {
143145
* @returns {JsonSchema} the generated schema
144146
*/
145147
export const generateJsonSchema = (
148+
// TODO fix @typescript-eslint/ban-types
149+
// eslint-disable-next-line @typescript-eslint/ban-types
146150
instance: Object,
147151
options: any = {}
148152
): JsonSchema4 => {

packages/core/src/generators/uischema.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,12 @@ const generateUISchema = (
191191
/* falls through */
192192
case 'integer':
193193
/* falls through */
194-
case 'boolean':
194+
case 'boolean': {
195195
const controlObject: ControlElement = createControlElement(currentRef);
196196
schemaElements.push(controlObject);
197197

198198
return controlObject;
199+
}
199200
default:
200201
throw new Error('Unknown type: ' + JSON.stringify(jsonSchema));
201202
}

packages/core/src/reducers/uischemas.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,11 @@ export const uischemaRegistryReducer: Reducer<
5050
return state
5151
.slice()
5252
.concat({ tester: action.tester, uischema: action.uischema });
53-
case REMOVE_UI_SCHEMA:
53+
case REMOVE_UI_SCHEMA: {
5454
const copy = state.slice();
5555
remove(copy, (entry) => entry.tester === action.tester);
5656
return copy;
57+
}
5758
default:
5859
return state;
5960
}

packages/core/src/util/cell.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
import isEmpty from 'lodash/isEmpty';
2727
import {
2828
getErrorTranslator,
29-
JsonFormsCellRendererRegistryEntry,
3029
getAjv,
3130
getConfig,
3231
getData,
3332
getErrorAt,
3433
getSchema,
3534
getTranslator,
3635
} from '../reducers';
36+
import type { JsonFormsCellRendererRegistryEntry } from '../reducers';
3737
import type { AnyAction, Dispatch } from './type';
3838
import { Resolve } from './util';
3939
import { isInherentlyEnabled, isVisible } from './runtime';
@@ -51,8 +51,6 @@ import { getCombinedErrorMessage, getI18nKeyPrefix } from '../i18n';
5151
import type { JsonFormsState } from '../store';
5252
import type { JsonSchema } from '../models';
5353

54-
export type { JsonFormsCellRendererRegistryEntry };
55-
5654
export interface OwnPropsOfCell extends OwnPropsOfControl {
5755
data?: any;
5856
}
@@ -176,7 +174,7 @@ export const mapStateToDispatchCellProps = (
176174
ownProps: OwnPropsOfCell
177175
): DispatchCellStateProps => {
178176
const props: StatePropsOfCell = mapStateToCellProps(state, ownProps);
179-
const { renderers, cells, ...otherOwnProps } = ownProps;
177+
const { renderers: _renderers, cells, ...otherOwnProps } = ownProps;
180178
return {
181179
...props,
182180
...otherOwnProps,

packages/core/src/util/renderer.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ import {
3434
import find from 'lodash/find';
3535
import {
3636
getUISchemas,
37-
JsonFormsCellRendererRegistryEntry,
38-
JsonFormsRendererRegistryEntry,
3937
getAjv,
4038
getCells,
4139
getConfig,
@@ -47,6 +45,10 @@ import {
4745
getSubErrorsAt,
4846
getTranslator,
4947
getUiSchema,
48+
} from '../reducers';
49+
import type {
50+
JsonFormsCellRendererRegistryEntry,
51+
JsonFormsRendererRegistryEntry,
5052
JsonFormsUISchemaRegistryEntry,
5153
} from '../reducers';
5254
import type { RankedTester } from '../testers';

packages/core/test/util/cell.test.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -282,14 +282,17 @@ test('mapStateToCellProps - translated error', (t) => {
282282
path: 'firstName',
283283
};
284284
const state = createState(coreUISchema);
285+
if (state.jsonforms.core === undefined) {
286+
fail('Failed to create jsonforms core state');
287+
}
285288
const schema = state.jsonforms.core?.schema as JsonSchema;
286289
const data = state.jsonforms.core?.data as any;
287290
// mark firstName as required, delete the value from data, then get errors from ajv from the compiled schema
288291
schema.required = ['firstName'];
289292
delete data.firstName;
290293
const ajv = createAjv();
291294
const v = ajv.compile(schema);
292-
state.jsonforms.core!.errors = validate(v, data);
295+
state.jsonforms.core.errors = validate(v, data);
293296
// add a mock i18n state to verify that the error gets translated
294297
state.jsonforms.i18n = {
295298
translateError: (error) => `i18n-error:${error.keyword}`,

packages/examples-react/src/App.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,17 @@ const App = ({ examples, cells, renderers }: AppProps) => {
7575
);
7676
const [currentIndex, setIndex] = useState<number>(0);
7777
const [dataAsString, setDataAsString] = useState<any>('');
78-
const [props, setProps] = useState<any>(
78+
const [exampleProps, setExampleProps] = useState(
7979
getProps(currentExample, cells, renderers)
8080
);
8181
const [showPanel, setShowPanel] = useState<boolean>(true);
8282
const schemaAsString = useMemo(
83-
() => JSON.stringify(props.schema, null, 2),
84-
[props.schema]
83+
() => JSON.stringify(exampleProps.schema, null, 2),
84+
[exampleProps.schema]
8585
);
8686
const uiSchemaAsString = useMemo(
87-
() => JSON.stringify(props.uischema, null, 2),
88-
[props.uischema]
87+
() => JSON.stringify(exampleProps.uischema, null, 2),
88+
[exampleProps.uischema]
8989
);
9090

9191
const actions: Action[] = currentExample.actions;
@@ -104,7 +104,7 @@ const App = ({ examples, cells, renderers }: AppProps) => {
104104
const example = examples[exampleID];
105105
setIndex(exampleID);
106106
setExample(example);
107-
setProps(getProps(example, cells, renderers));
107+
setExampleProps(getProps(example, cells, renderers));
108108
window.location.hash = example.name;
109109
if (example.name == 'huge') {
110110
setShowPanel(false);
@@ -181,7 +181,7 @@ const App = ({ examples, cells, renderers }: AppProps) => {
181181
<button
182182
className='action-button'
183183
onClick={() =>
184-
setProps((oldProps: JsonFormsInitStateProps) =>
184+
setExampleProps((oldProps: JsonFormsInitStateProps) =>
185185
action.apply(oldProps)
186186
)
187187
}
@@ -194,7 +194,7 @@ const App = ({ examples, cells, renderers }: AppProps) => {
194194
<div className='demo'>
195195
<JsonForms
196196
key={currentIndex}
197-
{...props}
197+
{...exampleProps}
198198
onChange={({ data }) => changeData(data)}
199199
/>
200200
</div>

packages/examples/src/examples/additional-errors.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ import { StateProps } from '../example';
2727
import { registerExamples } from '../register';
2828
import { schema, uischema, data } from './person';
2929

30-
const additionalErrors: ErrorObject[] = [];
30+
export const additionalErrors: ErrorObject[] = [];
3131

32-
const actions = [
32+
export const actions = [
3333
{
3434
label: 'Add additional error',
3535
apply: (props: StateProps) => {

0 commit comments

Comments
 (0)