Skip to content

Commit e48cbb8

Browse files
authored
ci: add oxlint, refactor code, add oxlint to github actions (#67)
* ci: add oxlint, refactor code, add oxlint to github actions * fix: yarn lint * test: oxlint in CI * Another fix for oxlint * Final fix for oxlint
1 parent da469a2 commit e48cbb8

13 files changed

+125
-28
lines changed

Diff for: .github/workflows/pr-check.yml

+35-8
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,54 @@ on:
66
- master
77

88
jobs:
9-
pr_check:
9+
oxlint:
10+
name: Lint JS
1011
runs-on: ubuntu-latest
1112
steps:
12-
- uses: actions/checkout@v2
13+
- name: Checkout repository
14+
uses: actions/checkout@v4
15+
16+
- name: Cache dependencies
17+
uses: actions/cache@v2
1318
with:
14-
node-version: '16.x'
19+
path: '**/node_modules'
20+
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
21+
restore-keys: |
22+
${{ runner.os }}-node-
23+
24+
- name: Install dependencies
25+
run: yarn
1526

16-
- name: Setup Node
27+
- name: Run Linter
28+
run: yarn lint
29+
30+
pr_check:
31+
name: Build and export
32+
runs-on: ubuntu-latest
33+
steps:
34+
- name: Checkout repository
35+
uses: actions/checkout@v4
36+
37+
- name: Setup Node.js
1738
uses: actions/setup-node@v2
1839
with:
1940
node-version: '16.x'
41+
cache: 'yarn'
2042

2143
- name: Cache dependencies
2244
uses: actions/cache@v2
2345
with:
24-
node-version: '16.x'
2546
path: '**/node_modules'
2647
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
2748
restore-keys: |
2849
${{ runner.os }}-node-
2950
30-
- run: yarn
31-
- run: yarn build
32-
- run: yarn export
51+
- name: Install dependencies
52+
run: yarn
53+
54+
- name: Build project
55+
run: yarn build
56+
57+
- name: Export project
58+
run: yarn export
59+

Diff for: .oxlintrc.json

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"$schema": "./node_modules/oxlint/configuration_schema.json",
3+
"plugins": [
4+
"import",
5+
"typescript",
6+
"unicorn"
7+
],
8+
"env": {
9+
"browser": true
10+
},
11+
"settings": {},
12+
"rules": {}
13+
}

Diff for: models/TransferFeed.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Feed, SiteFeed } from "./SiteFeed";
1+
import { Feed } from "./SiteFeed";
22

33
export interface TransferData {
44
db: number;

Diff for: package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"build": "next build",
1212
"export": "next export",
1313
"start": "next start",
14-
"format": "prettier --write ."
14+
"format": "prettier --write .",
15+
"lint": "oxlint --deny-warnings"
1516
},
1617
"dependencies": {
1718
"favecon": "^1.0.2",
@@ -27,6 +28,7 @@
2728
"cssnano": "^5.1.14",
2829
"eslint": "8.12.0",
2930
"eslint-config-next": "12.1.1",
31+
"oxlint": "^0.15.7",
3032
"postcss-nested": "^6.0.0",
3133
"postcss-sorting": "^8.0.1",
3234
"prettier": "^3.4.2",

Diff for: pages/index.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
VisitedItemsList,
1313
FavoritePin,
1414
} from "../components";
15-
import { Feed, SiteFeed } from "../models";
15+
import { Feed } from "../models";
1616
import {
1717
deleteSiteFeed,
1818
getSiteFeed,
@@ -88,7 +88,7 @@ export default function Home() {
8888
}
8989

9090
storage[feedUrl] = feedToUpdate;
91-
} catch (_e) {
91+
} catch {
9292
console.error(`Could not update feed for ${feedUrl}`);
9393
}
9494

@@ -111,7 +111,7 @@ export default function Home() {
111111
let feed;
112112
try {
113113
feed = await rssParser.parseURL(feedUrl);
114-
} catch (_e) {
114+
} catch {
115115
errors.push(feedUrl);
116116
}
117117
if (feed && !(await getSiteFeed(feedUrl))) {

Diff for: services/exportService.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { getSiteFeeds, insertSiteFeed } from "../services/indexeddbService";
2-
import { Feed, SiteFeed, TransferData, TransferFeed } from "../models";
2+
import { Feed, TransferData, TransferFeed } from "../models";
33
import { databaseVersion } from "../constants";
44
import { compress, decompress } from "./compressService";
55
import { siteDomain } from "../constants";
@@ -89,13 +89,11 @@ export async function importFeedFromFile(jsonFromFile: string) {
8989
}
9090

9191
function refactorExportToFeed(feed: TransferFeed): Feed {
92-
const { domain, priority } = feed;
92+
const { priority } = feed;
9393
const url = feed.url;
9494

9595
const visited =
96-
feed.visited?.reduce<Record<string, boolean>>((acc, path) => {
97-
const link = domain + path;
98-
96+
feed.visited?.reduce<Record<string, boolean>>((acc) => {
9997
acc[feed.url] = true;
10098

10199
return acc;
@@ -107,16 +105,14 @@ function refactorFeedToExport(feed: Feed): TransferFeed {
107105
const { url, priority } = feed;
108106

109107
let domain: string = "";
110-
let urlPath: string = "";
111108

112109
// regex pattern to extract domain extensions as "com", "md", "org"
113110
const pattern = /(?<=\.).*?(?=\/)/;
114111
const domainExtension = pattern.exec(feed.url)?.[0];
115112

116113
if (domainExtension) {
117-
const [feedDomain, path] = url.split(`.${domainExtension}/`);
114+
const [feedDomain] = url.split(`.${domainExtension}/`);
118115
domain = `${feedDomain}${domainExtension}/`;
119-
urlPath = path;
120116
} else {
121117
domain = `${url}/`;
122118
}

Diff for: services/indexeddbService.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { databaseName, databaseVersion, SiteFeedTable } from "../constants";
2-
import { Feed, SiteFeed } from "../models";
2+
import { Feed } from "../models";
33
import { deleteByName, getAll, getOne, insert, update } from "./indexeddbCRUD";
44
import { executeMigrations } from "./migrations";
55

Diff for: services/migrations/V1_init_database.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { SiteFeedTable } from "../../constants";
2-
import { Feed, SiteFeed } from "../../models";
2+
import { Feed } from "../../models";
33
import { createTable } from "../indexeddbCRUD";
44
import { insertSiteFeed } from "../indexeddbService";
55

Diff for: services/migrations/V2_migration.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export async function V2_migration(db: IDBDatabase) {
1+
export async function V2_migration() {
22
await new Promise((resolve) => setTimeout(resolve, 2000));
33
console.log("Second Migration");
44
}

Diff for: services/migrations/V3_migration.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export async function V3_migration(db: IDBDatabase) {
1+
export async function V3_migration() {
22
console.log("Third Migration");
33
}

Diff for: services/migrations/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { V1_init_database } from "./V1_init_database";
2-
import { V2_migration } from "./V2_migration";
3-
import { V3_migration } from "./V3_migration";
2+
// import { V2_migration } from "./V2_migration";
3+
// import { V3_migration } from "./V3_migration";
44

55
const migrations: ((db: IDBDatabase) => Promise<void>)[] = [
66
V1_init_database,

Diff for: utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export async function getFavicon(link?: string): Promise<string | undefined> {
2525
));
2626

2727
return feedFavicon;
28-
} catch (e) {
28+
} catch {
2929
return undefined;
3030
}
3131
}

Diff for: yarn.lock

+59
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,46 @@
124124
"@nodelib/fs.scandir" "2.1.5"
125125
fastq "^1.6.0"
126126

127+
128+
version "0.15.7"
129+
resolved "https://registry.yarnpkg.com/@oxlint/darwin-arm64/-/darwin-arm64-0.15.7.tgz#ab8aca3b94db4b49baa5823975d22d62092e54a0"
130+
integrity sha512-+8jOC9MfzIhbRdmNYl+gLlGZe8dhl2hrQRLJ+mriPRXxtpfBmT5aOmEQrs9BX5GPnh6hy4ArMvjDbCCXD+bl+w==
131+
132+
133+
version "0.15.7"
134+
resolved "https://registry.yarnpkg.com/@oxlint/darwin-x64/-/darwin-x64-0.15.7.tgz#6af64ddb895a9532bef21672fead5ef6676dfc34"
135+
integrity sha512-4y1v3zCtQU0dv5SxwBZqtYiqtQTUSvEdK3XzWg/JxN8qEleHonQrbSvGKmlkzraEouKTIm1bXjmnrX26MX22cQ==
136+
137+
138+
version "0.15.7"
139+
resolved "https://registry.yarnpkg.com/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.15.7.tgz#564050c34a871cee0752ef2ff3242c54f5c91606"
140+
integrity sha512-g01PWQl1+HLlMGK3lwH8G+A/5vA6H7tcKUHnx/qGz4+LM1zKfp1w2d2aoXxPqpIgtBPn19JRcBiEMv+nr40fiw==
141+
142+
143+
version "0.15.7"
144+
resolved "https://registry.yarnpkg.com/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.15.7.tgz#73895ac7277054bbd3b8c32001c8ed43ed0f67f4"
145+
integrity sha512-8Dg7qaHXNgiZgP3TxQU8k/5fpzGfcxYVLK58Sj/vSZ3vMrI68ipkq+rkNBjAXT1Aq2/eM6L/9CLH8pex+I1Nkw==
146+
147+
148+
version "0.15.7"
149+
resolved "https://registry.yarnpkg.com/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.15.7.tgz#68be61b8bd9cabfbbd578678ad2138cbd2b294dc"
150+
integrity sha512-hLsfcOgoky/FUGF2s3v7+wd0xGGuyE7EBPSTV7BPQYEm5+P5ZeWXPlUg8uTPee6bIxHa6lZLqunRl8Jn44b/ig==
151+
152+
153+
version "0.15.7"
154+
resolved "https://registry.yarnpkg.com/@oxlint/linux-x64-musl/-/linux-x64-musl-0.15.7.tgz#f569f04c205459aa74de530704f1e0184113f9c3"
155+
integrity sha512-BW9dACxzLRZq67lPFis/NCiitQucZbbrONeK0mReBWPSM3MaegLY82kZU7sMq3fpBbzGaKFoNLp2EcsNfS5IVw==
156+
157+
158+
version "0.15.7"
159+
resolved "https://registry.yarnpkg.com/@oxlint/win32-arm64/-/win32-arm64-0.15.7.tgz#897f6d420f3b483fc92d6c5588ca0d244da7ac33"
160+
integrity sha512-VvIaIdfCjcYy8cj3yAjHwj2dDFIFxdUS7G+KeDK/iH7O3uXW8wOec2wFYcd8xmVYHEcnw8fgNAXy04gXpB6KnQ==
161+
162+
163+
version "0.15.7"
164+
resolved "https://registry.yarnpkg.com/@oxlint/win32-x64/-/win32-x64-0.15.7.tgz#20eec700fa3e12b2d0f58e07faff3dd0c4bd8f40"
165+
integrity sha512-1WKZTgtJswATA8NYeUfMnN4ei7AUVyomrWBiPwYGMRMOo4jeGkOlOr2/iYq/vbtOCyOuqAo2JjfzN5sBOPfI/A==
166+
127167
"@rushstack/[email protected]":
128168
version "1.0.8"
129169
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64"
@@ -1873,6 +1913,20 @@ own-keys@^1.0.1:
18731913
object-keys "^1.1.1"
18741914
safe-push-apply "^1.0.0"
18751915

1916+
oxlint@^0.15.7:
1917+
version "0.15.7"
1918+
resolved "https://registry.yarnpkg.com/oxlint/-/oxlint-0.15.7.tgz#74a0a8dbb71f934727d5046e4c0589d23ca9de7f"
1919+
integrity sha512-ECx9retPd7Rvq62TasGODyQ4mrMtqBCCB18xOYGiAf8PP61snHaokLeTWQFf+pTURWpJZ9pIi2pMIDKh2P2SpQ==
1920+
optionalDependencies:
1921+
"@oxlint/darwin-arm64" "0.15.7"
1922+
"@oxlint/darwin-x64" "0.15.7"
1923+
"@oxlint/linux-arm64-gnu" "0.15.7"
1924+
"@oxlint/linux-arm64-musl" "0.15.7"
1925+
"@oxlint/linux-x64-gnu" "0.15.7"
1926+
"@oxlint/linux-x64-musl" "0.15.7"
1927+
"@oxlint/win32-arm64" "0.15.7"
1928+
"@oxlint/win32-x64" "0.15.7"
1929+
18761930
parent-module@^1.0.0:
18771931
version "1.0.1"
18781932
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -2151,6 +2205,11 @@ prelude-ls@^1.2.1:
21512205
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
21522206
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
21532207

2208+
prettier@^3.4.2:
2209+
version "3.4.2"
2210+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
2211+
integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
2212+
21542213
prop-types@^15.8.1:
21552214
version "15.8.1"
21562215
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"

0 commit comments

Comments
 (0)