Skip to content
This repository was archived by the owner on Jan 29, 2024. It is now read-only.

Commit a9f35d1

Browse files
committed
refactor!: Use ESM module & Node.js 18
feat: Replace winston with pino feat!: Update config schema feat!: Change environment variables naming chore: Update GitHub action fix: Update dependencies
1 parent f476260 commit a9f35d1

Some content is hidden

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

87 files changed

+3211
-18676
lines changed

.eslintignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

.eslintrc.yaml

Lines changed: 179 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,187 @@
1+
root: true
2+
parser: "@typescript-eslint/parser"
13
extends:
2-
- "@joshuaavalon/eslint-config-typescript"
4+
- eslint:recommended
5+
- plugin:@typescript-eslint/recommended
6+
- plugin:prettier/recommended
7+
plugins:
8+
- "@typescript-eslint"
9+
- prettier
310
env:
411
es6: true
512
node: true
13+
ignorePatterns:
14+
- node_modules
15+
- "**/lib"
16+
- "**/*.generated.ts"
17+
- "**/generated/index.ts"
18+
- "**/*.d.ts"
19+
rules:
20+
array-callback-return: error
21+
arrow-body-style:
22+
- error
23+
- as-needed
24+
arrow-parens:
25+
- error
26+
- as-needed
27+
block-scoped-var: error
28+
comma-dangle:
29+
- error
30+
- never
31+
complexity: error
32+
consistent-return: error
33+
curly: error
34+
default-case-last: error
35+
default-param-last: error
36+
dot-location:
37+
- error
38+
- property
39+
eol-last:
40+
- error
41+
- always
42+
eqeqeq: error
43+
guard-for-in: error
44+
linebreak-style:
45+
- error
46+
- unix
47+
lines-between-class-members:
48+
- error
49+
- always
50+
- exceptAfterSingleLine: true
51+
no-alert: error
52+
no-caller: error
53+
no-console: "off"
54+
no-constructor-return: error
55+
no-else-return: error
56+
no-empty-function: error
57+
no-eq-null: error
58+
no-eval: error
59+
no-extend-native: error
60+
no-extra-bind: error
61+
no-extra-label: error
62+
no-floating-decimal: error
63+
no-implicit-coercion: error
64+
no-implied-eval: error
65+
no-invalid-this: error
66+
no-iterator: error
67+
no-label-var: error
68+
no-labels: error
69+
no-lone-blocks: error
70+
no-lonely-if: error
71+
no-loop-func: error
72+
no-multi-spaces: error
73+
no-multi-str: error
74+
no-new: error
75+
no-new-func: error
76+
no-new-wrappers: error
77+
no-octal-escape: error
78+
no-param-reassign: error
79+
no-promise-executor-return: error
80+
no-proto: error
81+
no-redeclare: "off"
82+
no-return-assign: error
83+
no-script-url: error
84+
no-self-assign: error
85+
no-self-compare: error
86+
no-sequences: error
87+
no-template-curly-in-string: error
88+
no-throw-literal: error
89+
no-unmodified-loop-condition: error
90+
no-unreachable-loop: error
91+
no-unused-expressions: "off"
92+
no-unused-vars: "off"
93+
no-use-before-define: "off"
94+
no-useless-backreference: error
95+
no-useless-call: error
96+
no-useless-concat: error
97+
no-useless-return: error
98+
no-void: error
99+
prefer-arrow-callback: error
100+
prefer-named-capture-group: error
101+
prefer-promise-reject-errors: error
102+
prefer-regex-literals: error
103+
prettier/prettier:
104+
- error
105+
- arrowParens: avoid
106+
trailingComma: none
107+
quotes: "off"
108+
require-unicode-regexp: error
109+
semi-style:
110+
- error
111+
- last
112+
sort-imports:
113+
- error
114+
- ignoreCase: true
115+
ignoreDeclarationSort: true
116+
vars-on-top: error
117+
wrap-iife: error
118+
yoda: error
6119
overrides:
120+
- files:
121+
- "**/*.js"
122+
- "**/*.cjs"
123+
- "**/*.mjs"
124+
- "**/*.jsx"
125+
rules:
126+
"@typescript-eslint/no-var-requires": "off"
127+
- files:
128+
- "**/*.ts"
129+
- "**/*.cts"
130+
- "**/*.mts"
131+
- "**/*.tsx"
132+
rules:
133+
no-dupe-class-members: "off"
134+
"@typescript-eslint/explicit-member-accessibility": error
135+
"@typescript-eslint/array-type": error
136+
"@typescript-eslint/explicit-function-return-type":
137+
- error
138+
- allowExpressions: true
139+
allowHigherOrderFunctions: true
140+
allowTypedFunctionExpressions: true
141+
allowDirectConstAssertionInArrowFunctions: true
142+
"@typescript-eslint/naming-convention":
143+
- error
144+
- selector: default
145+
format:
146+
- camelCase
147+
leadingUnderscore: allowSingleOrDouble
148+
- selector: variable
149+
format:
150+
- camelCase
151+
- UPPER_CASE
152+
- PascalCase
153+
leadingUnderscore: allowSingleOrDouble
154+
- selector: typeLike
155+
format:
156+
- PascalCase
157+
- selector: variable
158+
modifiers:
159+
- destructured
160+
format:
161+
- selector: objectLiteralProperty
162+
format:
163+
"@typescript-eslint/no-empty-interface": "off"
164+
"@typescript-eslint/no-explicit-any": "off"
165+
"@typescript-eslint/no-unused-expressions":
166+
- error
167+
"@typescript-eslint/no-unused-vars":
168+
- error
169+
- args: after-used
170+
argsIgnorePattern: "^_"
171+
ignoreRestSiblings: true
172+
"@typescript-eslint/no-use-before-define":
173+
- error
174+
- typedefs: false
175+
"@typescript-eslint/quotes":
176+
- error
177+
- double
178+
- avoidEscape: true
179+
"@typescript-eslint/no-redeclare":
180+
- error
181+
- ignoreDeclarationMerge: true
182+
"@typescript-eslint/consistent-type-imports": error
183+
"@typescript-eslint/method-signature-style": error
184+
"@typescript-eslint/no-useless-empty-export": error
7185
- files:
8186
- packages/api/src/*.ts
9187
rules:

.github/workflows/cron.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: cron
2+
on:
3+
schedule:
4+
- cron: "0 0 * * *"
5+
workflow_dispatch:
6+
jobs:
7+
stale:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
issues: write
11+
pull-requests: write
12+
steps:
13+
- uses: actions/stale@v7
14+
with:
15+
stale-issue-message: "Issues are closed after 30 days of inactivity. It’s been at least 20 days since the last update here."
16+
stale-pr-message: "Pull requests are closed after 30 days of inactivity. It’s been at least 20 days since the last update here."
17+
days-before-stale: 20
18+
days-before-close: 10
19+
exempt-issue-labels: not stale
20+
exempt-pr-labels: not stale
21+
stale-issue-label: stale
22+
cleanup:
23+
runs-on: ubuntu-latest
24+
permissions:
25+
packages: write
26+
steps:
27+
- uses: actions/delete-package-versions@v4
28+
with:
29+
owner: joshuaavalon
30+
package-name: cloudflare-ddns
31+
package-type: container
32+
ignore-versions: "(^\\d+\\.\\d+\\.\\d+$|^\\w+$)"

.github/workflows/main.yml

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,54 @@
1-
name: Main
1+
name: main
22
on:
33
- push
44
- pull_request
55
jobs:
6-
test:
7-
name: Build script
6+
unit-test:
87
runs-on: ubuntu-latest
98
steps:
10-
- uses: actions/checkout@v2
11-
- uses: actions/setup-node@v2
9+
- uses: actions/checkout@v3
10+
- uses: actions/setup-node@v3
1211
with:
13-
node-version: 16.x
14-
- name: Install script dependencies
15-
run: npm ci
16-
- name: Build
17-
run: npm run build --workspaces
18-
- name: Run unit tests
19-
run: npm run test
12+
node-version: 18
13+
cache: npm
14+
cache-dependency-path: package-lock.json
15+
- run: npm ci
16+
- run: npm run build
17+
- run: npm run test
2018
lint:
21-
name: Lint
2219
runs-on: ubuntu-latest
2320
steps:
24-
- uses: actions/checkout@v2
25-
- uses: actions/setup-node@v2
21+
- uses: actions/checkout@v3
22+
- uses: actions/setup-node@v3
2623
with:
27-
node-version: 16.x
28-
- name: Install script dependencies
29-
run: npm ci
30-
- name: Lint
31-
run: npm run lint
24+
node-version: 18
25+
cache: npm
26+
cache-dependency-path: package-lock.json
27+
- run: npm ci
28+
- run: npm run lint
3229
docker:
33-
name: Build Docker image
3430
runs-on: ubuntu-latest
31+
permissions:
32+
contents: read
33+
packages: write
3534
steps:
36-
- uses: actions/checkout@v2
37-
- name: Docker meta
35+
- uses: actions/checkout@v3
36+
- uses: docker/metadata-action@v4
3837
id: meta
39-
uses: docker/metadata-action@v3
4038
with:
4139
images: ghcr.io/joshuaavalon/cloudflare-ddns
4240
tags: |
4341
type=sha
4442
type=ref,event=branch
45-
- name: Setup QEMU
46-
uses: docker/setup-qemu-action@v1
47-
- name: Setup Docker Buildx
48-
uses: docker/setup-buildx-action@v1
49-
- name: Login Docker
43+
- uses: docker/setup-qemu-action@v2
44+
- uses: docker/setup-buildx-action@v2
45+
- uses: docker/login-action@v2
5046
if: github.event_name != 'pull_request'
51-
uses: docker/login-action@v1
5247
with:
5348
registry: ghcr.io
54-
username: ${{ github.repository_owner }}
55-
password: ${{ secrets.PERSONAL_TOKEN }}
56-
- name: Build and push
57-
uses: docker/build-push-action@v2
49+
username: ${{ github.actor }}
50+
password: ${{ secrets.GITHUB_TOKEN }}
51+
- uses: docker/build-push-action@v4
5852
with:
5953
push: ${{ github.event_name != 'pull_request' }}
6054
tags: ${{ steps.meta.outputs.tags }}

.github/workflows/release.yml

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,30 @@
1-
name: Release
1+
name: release
22
on:
33
push:
44
branches:
55
- master
66
jobs:
7-
release:
8-
name: Release
7+
release-please:
98
runs-on: ubuntu-latest
9+
permissions:
10+
contents: write
11+
pull-requests: write
1012
steps:
11-
- uses: actions/checkout@v2
12-
- uses: actions/setup-node@v2
13+
- uses: google-github-actions/release-please-action@v3
14+
id: release
1315
with:
14-
node-version: 14.x
15-
- name: Install npm@7
16-
run: npm install -g npm@latest
17-
- name: Install script dependencies
18-
run: npm install
19-
- name: Release to GitHub
20-
run: npm run release
21-
env:
22-
GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
23-
GIT_AUTHOR_NAME: ${{ secrets.GIT_COMMITTER_NAME }}
24-
GIT_AUTHOR_EMAIL: ${{ secrets.GIT_COMMITTER_EMAIL }}
25-
GIT_COMMITTER_NAME: ${{ secrets.GIT_COMMITTER_NAME }}
26-
GIT_COMMITTER_EMAIL: ${{ secrets.GIT_COMMITTER_EMAIL }}
16+
release-type: node
2717
page:
28-
name: GitHub Page
2918
runs-on: ubuntu-latest
19+
permissions:
20+
contents: write
3021
steps:
31-
- uses: actions/checkout@v2
22+
- uses: actions/checkout@v3
3223
- run: mkdir ./public
33-
- run: cp ./packages/config/src/config.schema.json ./public
24+
- run: npm ci
25+
- run: npm run build
26+
- run: npm run --workspace @cloudflare-ddns/config generate
27+
- run: cp ./packages/config/lib/config.schema.json ./public
3428
- uses: peaceiris/actions-gh-pages@v3
3529
with:
3630
github_token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/stale.yml

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)