Skip to content

Commit 1891829

Browse files
committed
eslint integration
1 parent fcdd473 commit 1891829

18 files changed

Lines changed: 399 additions & 309 deletions

eslint.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// @ts-check
22

33
import eslint from '@eslint/js'
4+
import furystack from '@furystack/eslint-plugin'
45
import prettierConfig from 'eslint-config-prettier'
56
import jsdoc from 'eslint-plugin-jsdoc'
67
import tseslint from 'typescript-eslint'
@@ -21,6 +22,7 @@ export default tseslint.config(
2122
eslint.configs.recommended,
2223
...tseslint.configs.recommendedTypeChecked,
2324
prettierConfig,
25+
2426
{
2527
linterOptions: {
2628
reportUnusedDisableDirectives: true,
@@ -33,6 +35,7 @@ export default tseslint.config(
3335
},
3436
plugins: {
3537
jsdoc,
38+
furystack,
3639
},
3740
rules: {
3841
'@typescript-eslint/no-unused-vars': 'off', // Use Typescript own check for this
@@ -76,6 +79,11 @@ export default tseslint.config(
7679
'default-case': 'error',
7780
},
7881
},
82+
furystack.configs.recommendedStrict,
83+
{
84+
files: ['frontend/src/**/*.ts', 'frontend/src/**/*.tsx'],
85+
...furystack.configs.shadesStrict,
86+
},
7987
{
8088
files: ['**/*.spec.ts', '**/*.spec.tsx'],
8189
rules: {

frontend/src/components/prerequisite-table.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ export const PrerequisiteTable = Shade<PrerequisiteTableProps>({
4545
)
4646

4747
const findOptions = useDisposable(
48-
'findOptions',
48+
'findOptionsObservable',
4949
() => new ObservableValue<FindOptions<Prerequisite, Array<keyof Prerequisite>>>({ top: 25 }),
5050
)
5151

52-
const [currentFindOptions] = useObservable('findOptions', findOptions)
52+
const [currentFindOptions] = useObservable('currentFindOptions', findOptions)
5353

5454
const prereqsState = useCollectionSync(options, PrerequisiteModel, {
5555
filter: { stackName: { $eq: props.stackName } },

frontend/src/components/repository-table.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,18 @@ export const RepositoryTable = Shade<RepositoryTableProps>({
3030
)
3131

3232
const findOptions = useDisposable(
33-
'findOptions',
33+
'findOptionsObservable',
3434
() => new ObservableValue<FindOptions<GitHubRepository, Array<keyof GitHubRepository>>>({ top: 25 }),
3535
)
3636

37-
const [currentFindOptions] = useObservable('findOptions', findOptions)
37+
const [currentFindOptions] = useObservable('currentFindOptions', findOptions)
3838

3939
const reposState = useCollectionSync(options, GitHubRepository, {
4040
filter: { stackName: { $eq: props.stackName } },
4141
})
4242

4343
const isLoading = reposState.status === 'connecting'
44-
const allEntries =
45-
reposState.status === 'synced' || reposState.status === 'cached' ? reposState.data.entries : []
44+
const allEntries = reposState.status === 'synced' || reposState.status === 'cached' ? reposState.data.entries : []
4645

4746
const { entries, count } = applyClientFindOptions(allEntries, currentFindOptions)
4847
collectionService.data.setValue({ entries, count })

frontend/src/components/service-table.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ export const ServiceTable = Shade<ServiceTableProps>({
5353
)
5454

5555
const findOptions = useDisposable(
56-
'findOptions',
56+
'findOptionsObservable',
5757
() => new ObservableValue<FindOptions<ServiceView, Array<keyof ServiceView>>>({ top: 25 }),
5858
)
5959

60-
const [currentFindOptions] = useObservable('findOptions', findOptions)
60+
const [currentFindOptions] = useObservable('currentFindOptions', findOptions)
6161
const { entries, count } = applyClientFindOptions(props.services, currentFindOptions)
6262
collectionService.data.setValue({ entries, count })
6363

frontend/src/pages/offline.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Shade, createComponent } from '@furystack/shades'
1+
import { Shade, createComponent, NestedRouteLink } from '@furystack/shades'
22
import { environmentOptions } from '../environment-options.js'
33

44
export const Offline = Shade({
@@ -43,7 +43,7 @@ export const Offline = Shade({
4343
</li>
4444
<li>You have started the service :)</li>
4545
</ul>
46-
<a href="/">Reload page</a>
46+
<NestedRouteLink href="/">Reload page</NestedRouteLink>
4747
</div>
4848
)
4949
},

frontend/src/pages/services/service-detail.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -709,15 +709,15 @@ const ServiceHistory = Shade<ServiceHistoryProps>({
709709
)
710710

711711
const findOptions = useDisposable(
712-
'findOptions',
712+
'findOptionsObservable',
713713
() =>
714714
new ObservableValue<FindOptions<ServiceStateHistory, Array<keyof ServiceStateHistory>>>({
715715
top: 25,
716716
order: { id: 'DESC' },
717717
}),
718718
)
719719

720-
const [currentFindOptions] = useObservable('findOptions', findOptions)
720+
const [currentFindOptions] = useObservable('currentFindOptions', findOptions)
721721

722722
const historyState = useCollectionSync(options, ServiceStateHistory, {
723723
filter: { serviceId: { $eq: props.serviceId }, ...currentFindOptions.filter },

frontend/src/pages/settings/api-tokens-section.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ export const ApiTokensSection = Shade({
5555
)
5656

5757
const findOptions = useDisposable(
58-
'findOptions',
58+
'findOptionsObservable',
5959
() => new ObservableValue<FindOptions<PublicApiToken, Array<keyof PublicApiToken>>>({ top: 25 }),
6060
)
6161

62-
const [currentFindOptions] = useObservable('findOptions', findOptions)
62+
const [currentFindOptions] = useObservable('currentFindOptions', findOptions)
6363

6464
const tokensState = useCollectionSync(options, PublicApiToken, {
6565
filter: currentUser

frontend/src/services/install-service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,8 @@ export class InstallService {
1919

2020
public getServiceStatus = this.cache.get.bind(this.cache)
2121
public getServiceStatusAsObservable = this.cache.getObservable.bind(this.cache)
22+
23+
public [Symbol.dispose]() {
24+
this.cache[Symbol.dispose]()
25+
}
2226
}

frontend/src/services/session.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,11 @@ export class SessionService implements IdentityContext {
112112

113113
@Injected(NotyService)
114114
declare private readonly notys: NotyService
115+
116+
public [Symbol.dispose]() {
117+
this.state[Symbol.dispose]()
118+
this.currentUser[Symbol.dispose]()
119+
this.isOperationInProgress[Symbol.dispose]()
120+
this.loginError[Symbol.dispose]()
121+
}
115122
}

frontend/src/services/websocket-service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,6 @@ export class WebSocketService {
7777

7878
public [Symbol.dispose]() {
7979
this.disconnect()
80+
this.connectionState[Symbol.dispose]()
8081
}
8182
}

0 commit comments

Comments
 (0)