Skip to content

Commit 5dd33a2

Browse files
authored
Merge branch 'master' into add-static-text-parser
2 parents 9b78fe1 + 2a9c7fc commit 5dd33a2

File tree

223 files changed

+14906
-8863
lines changed

Some content is hidden

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

223 files changed

+14906
-8863
lines changed

.eslintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": ["prettier", "eslint:recommended", "plugin:markdown/recommended"],
2+
"extends": ["prettier", "eslint:recommended", "plugin:markdown/recommended-legacy"],
33
"parserOptions": {
44
"ecmaVersion": "latest"
55
},

.github/workflows/benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
node-version: [20.x]
21+
node-version: [22]
2222
mysql-version: ["mysql:8.0.18"]
2323
use-compression: [0]
2424
use-tls: [0]

.github/workflows/canary.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: 'Canary Publishing'
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: write
11+
pull-requests: write
12+
id-token: write
13+
14+
jobs:
15+
canary:
16+
runs-on: ubuntu-latest
17+
timeout-minutes: 15
18+
name: Canary
19+
steps:
20+
- name: Actions - Checkout
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
25+
- name: Check Commit Message
26+
id: check_commit
27+
run: |
28+
MESSAGE=$(git log -1 --pretty=%s --no-merges)
29+
echo "Commit message: $MESSAGE"
30+
31+
if [[ "$MESSAGE" =~ build\(deps-dev\) ]] ||
32+
[[ "$MESSAGE" =~ build\(deps\) ]] ||
33+
[[ "$MESSAGE" =~ chore\(master\) ]] ||
34+
[[ "$MESSAGE" =~ chore\(deps\) ]] ||
35+
[[ "$MESSAGE" =~ chore:\ update\ dependencies ]] ||
36+
[[ "$MESSAGE" =~ docs: ]] ||
37+
[[ "$MESSAGE" =~ ci: ]] ||
38+
[[ "$MESSAGE" =~ cd: ]] ||
39+
[[ "$MESSAGE" =~ docs\(.*\): ]] ||
40+
[[ "$MESSAGE" =~ ci\(.*\): ]] ||
41+
[[ "$MESSAGE" =~ cd\(.*\): ]] ||
42+
[[ "$MESSAGE" =~ chore\(website\) ]]; then
43+
echo "publish=false" >> $GITHUB_OUTPUT
44+
echo "Skip publish"
45+
else
46+
echo "publish=true" >> $GITHUB_OUTPUT
47+
fi
48+
49+
- name: Actions - Setup Node.js
50+
if: steps.check_commit.outputs.publish == 'true'
51+
uses: actions/setup-node@v4
52+
with:
53+
node-version: 22
54+
registry-url: 'https://registry.npmjs.org'
55+
56+
- name: Cache dependencies
57+
if: steps.check_commit.outputs.publish == 'true'
58+
uses: actions/cache@v4
59+
with:
60+
path: ~/.npm
61+
key: npm-linux-${{ hashFiles('package-lock.json') }}
62+
restore-keys: npm-linux-
63+
64+
- name: Installing Dependencies
65+
if: steps.check_commit.outputs.publish == 'true'
66+
run: npm ci
67+
68+
- name: Git Hash
69+
if: steps.check_commit.outputs.publish == 'true'
70+
run: |
71+
npm version patch --no-git-tag-version
72+
VERSION=$(node -p "require('./package.json').version")
73+
SHORT_SHA=$(git rev-parse --short HEAD)
74+
echo "VERSION=${VERSION}-canary.${SHORT_SHA}" >> $GITHUB_ENV
75+
76+
- name: Increment Canary Version
77+
if: steps.check_commit.outputs.publish == 'true'
78+
run: npm version $VERSION --no-git-tag-version
79+
80+
- name: Publishing Package
81+
if: steps.check_commit.outputs.publish == 'true'
82+
env:
83+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
84+
run: npm publish --tag canary --provenance

.github/workflows/ci-coverage.yml

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: CI - Coverage
33
on:
44
pull_request:
55
push:
6-
branches: [ main ]
6+
branches: [master]
77

88
workflow_dispatch:
99

@@ -19,26 +19,21 @@ jobs:
1919
strategy:
2020
fail-fast: false
2121
matrix:
22-
node-version: [20.x]
23-
mysql-version: ["mysql:8.0.33"]
24-
use-compression: [0]
25-
use-tls: [0]
26-
mysql_connection_url_key: [""]
22+
node-version: [22]
23+
mysql-version: ['mysql:5.7', 'mysql:8.0', 'mysql:9.0']
24+
use-compression: [0, 1]
25+
use-tls: [0, 1]
26+
static-parser: [0, 1]
27+
mysql_connection_url_key: ['']
2728
env:
2829
MYSQL_CONNECTION_URL: ${{ secrets[matrix.mysql_connection_url_key] }}
30+
STATIC_PARSER: ${{ matrix.static-parser }}
2931

30-
name: Coverage ${{ matrix.node-version }} - DB ${{ matrix.mysql-version }}${{ matrix.mysql_connection_url_key }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
32+
name: Coverage ${{ matrix.node-version }} - DB ${{ matrix.mysql-version }}${{ matrix.mysql_connection_url_key }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}} Static Parser=${{matrix.static-parser}}
3133

3234
steps:
3335
- uses: actions/checkout@v4
3436

35-
- name: Delete artifacts
36-
uses: jimschubert/delete-artifacts-action@v1
37-
with:
38-
log_level: 'debug'
39-
min_bytes: '0'
40-
pattern: '\.xml'
41-
4237
- name: Set up MySQL
4338
if: ${{ matrix.mysql-version }}
4439
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/test/fixtures/custom-conf:/etc/mysql/conf.d -v $PWD/test/fixtures/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
@@ -65,22 +60,9 @@ jobs:
6560
- name: Run tests
6661
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run coverage-test
6762

68-
- name: get list of coverage files
69-
run: echo "coverage-files=`find coverage | grep xml | paste -s -d\; -`" >> $GITHUB_ENV
70-
71-
- name: ReportGenerator
72-
uses: danielpalme/[email protected]
73-
with:
74-
reports: "${{ env.coverage-files }}"
75-
targetdir: '.'
76-
reporttypes: 'Cobertura'
77-
78-
- name: Debug
79-
run: cat Cobertura.xml
80-
81-
- name: Display coverage
82-
uses: ewjoachim/coverage-comment-action@v1
83-
continue-on-error: true
63+
- name: Upload coverage reports to Codecov
64+
uses: codecov/codecov-action@v4
8465
with:
85-
COVERAGE_FILE: "Cobertura.xml"
86-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
token: ${{ secrets.CODECOV_TOKEN }}
67+
flags: compression-${{ matrix.use-compression }},tls-${{ matrix.use-tls }},static-parser-${{ matrix.static-parser }}
68+
name: codecov-umbrella-${{ matrix.node-version }}-${{ matrix.mysql-version }}-compression-${{ matrix.use-compression }}-tls-${{ matrix.use-tls }}-static-parser-${{ matrix.static-parser }}

.github/workflows/ci-linux.yml

Lines changed: 131 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: CI - Linux
33
on:
44
pull_request:
55
push:
6-
branches: [ main ]
6+
branches: [main]
77

88
workflow_dispatch:
99

@@ -18,12 +18,14 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
node-version: [14.x, 16.x, 18.x, 20.x, "21.x"]
22-
mysql-version: ["mysql:8.0.33"]
21+
node-version: [18, 20, 22, 23]
22+
mysql-version: ['mysql:8.3']
2323
use-compression: [0, 1]
2424
use-tls: [0, 1]
25-
mysql_connection_url_key: [""]
25+
mysql_connection_url_key: ['']
26+
# static-parser: [0, 1] # Already tested in "ci-coverage"
2627
# TODO - add mariadb to the matrix. currently few tests are broken due to mariadb incompatibilities
28+
2729
env:
2830
MYSQL_CONNECTION_URL: ${{ secrets[matrix.mysql_connection_url_key] }}
2931

@@ -57,18 +59,23 @@ jobs:
5759

5860
- name: Run tests
5961
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run test
62+
timeout-minutes: 10
6063

6164
tests-linux-bun:
6265
runs-on: ubuntu-latest
6366
strategy:
6467
fail-fast: false
6568
matrix:
6669
bun-version: [latest, canary]
67-
mysql-version: ["mysql:8.0.33"]
70+
mysql-version: ['mysql:8.3']
6871
use-compression: [0, 1]
69-
use-tls: [0,1]
72+
use-tls: [0, 1]
73+
static-parser: [0, 1]
74+
75+
env:
76+
STATIC_PARSER: ${{ matrix.static-parser }}
7077

71-
name: Bun ${{ matrix.bun-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
78+
name: Bun ${{ matrix.bun-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}} Static Parser=${{matrix.static-parser}}
7279

7380
steps:
7481
- uses: actions/checkout@v4
@@ -107,4 +114,120 @@ jobs:
107114
MYSQL_USE_TLS: ${{ matrix.use-tls }}
108115
FILTER: test-select-1|test-select-ssl
109116
run: bun run test:bun
110-
timeout-minutes: 1
117+
timeout-minutes: 10
118+
119+
tests-linux-deno-v1:
120+
runs-on: ubuntu-latest
121+
strategy:
122+
fail-fast: false
123+
matrix:
124+
deno-version: [v1.x]
125+
mysql-version: ['mysql:8.3']
126+
use-compression: [0, 1]
127+
static-parser: [0, 1]
128+
# TODO: investigate error when using SSL (1)
129+
#
130+
# errno: -4094
131+
# code: "UNKNOWN"
132+
# syscall: "read"
133+
use-tls: [0]
134+
135+
env:
136+
STATIC_PARSER: ${{ matrix.static-parser }}
137+
138+
name: Deno ${{ matrix.deno-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}} Static Parser=${{matrix.static-parser}}
139+
140+
steps:
141+
- uses: actions/checkout@v4
142+
- name: Set up MySQL
143+
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/test/fixtures/custom-conf:/etc/mysql/conf.d -v $PWD/test/fixtures/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
144+
145+
- name: Set up Deno ${{ matrix.deno-version }}
146+
uses: denoland/setup-deno@v1
147+
with:
148+
deno-version: ${{ matrix.deno-version }}
149+
150+
- name: Set up Node.js
151+
uses: actions/setup-node@v4
152+
with:
153+
node-version: 20
154+
- name: Cache dependencies
155+
uses: actions/cache@v4
156+
with:
157+
path: ~/.npm
158+
key: npm-linux-${{ hashFiles('package-lock.json') }}
159+
restore-keys: npm-linux-
160+
161+
- name: Install npm dependencies
162+
run: npm ci
163+
164+
- name: Wait mysql server is ready
165+
run: node tools/wait-up.js
166+
167+
- name: run tests
168+
env:
169+
MYSQL_USER: ${{ env.MYSQL_USER }}
170+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
171+
MYSQL_PORT: ${{ env.MYSQL_PORT }}
172+
MYSQL_USE_COMPRESSION: ${{ matrix.use-compression }}
173+
MYSQL_USE_TLS: ${{ matrix.use-tls }}
174+
run: deno task test:deno -- --denoCjs='.js,.cjs'
175+
timeout-minutes: 10
176+
177+
tests-linux-deno-v2:
178+
runs-on: ubuntu-latest
179+
strategy:
180+
fail-fast: false
181+
matrix:
182+
deno-version: [v2.x, canary]
183+
mysql-version: ['mysql:8.3']
184+
use-compression: [0, 1]
185+
static-parser: [0, 1]
186+
# TODO: investigate error when using SSL (1)
187+
#
188+
# errno: -4094
189+
# code: "UNKNOWN"
190+
# syscall: "read"
191+
use-tls: [0]
192+
193+
env:
194+
STATIC_PARSER: ${{ matrix.static-parser }}
195+
196+
name: Deno ${{ matrix.deno-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}} Static Parser=${{matrix.static-parser}}
197+
198+
steps:
199+
- uses: actions/checkout@v4
200+
- name: Set up MySQL
201+
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/test/fixtures/custom-conf:/etc/mysql/conf.d -v $PWD/test/fixtures/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
202+
203+
- name: Set up Deno ${{ matrix.deno-version }}
204+
uses: denoland/setup-deno@v1
205+
with:
206+
deno-version: ${{ matrix.deno-version }}
207+
208+
- name: Set up Node.js
209+
uses: actions/setup-node@v4
210+
with:
211+
node-version: 22
212+
- name: Cache dependencies
213+
uses: actions/cache@v4
214+
with:
215+
path: ~/.npm
216+
key: npm-linux-${{ hashFiles('package-lock.json') }}
217+
restore-keys: npm-linux-
218+
219+
- name: Install npm dependencies
220+
run: npm ci
221+
222+
- name: Wait mysql server is ready
223+
run: node tools/wait-up.js
224+
225+
- name: run tests
226+
env:
227+
MYSQL_USER: ${{ env.MYSQL_USER }}
228+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
229+
MYSQL_PORT: ${{ env.MYSQL_PORT }}
230+
MYSQL_USE_COMPRESSION: ${{ matrix.use-compression }}
231+
MYSQL_USE_TLS: ${{ matrix.use-tls }}
232+
run: deno task test:deno
233+
timeout-minutes: 10

.github/workflows/ci-mysql.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@ jobs:
1717
strategy:
1818
fail-fast: false
1919
matrix:
20-
node-version: [20.x] # LTS
20+
node-version: [22]
2121
mysql-version:
2222
[
23-
'mysql:5.7',
24-
'mysql:8.0.18',
25-
'mysql:8.0.22',
26-
'mysql:8.0.33',
27-
'mysql:latest',
23+
# 'mysql:5.7', # Already tested in "ci-coverage"
24+
# 'mysql:8.0', # Already tested in "ci-coverage"
25+
'mysql:8.1',
26+
'mysql:8.2',
27+
# 'mysql:8.3', # Already tested in "ci-linux"
28+
# 'mysql:8.4', # TODO: Tests never end
29+
# 'mysql:9.0', # Already tested in "ci-coverage"
30+
'mysql:9.1',
31+
'mysql:9.2',
2832
]
2933
use-compression: [0, 1]
3034
use-tls: [0, 1]
@@ -35,6 +39,7 @@ jobs:
3539
mysql-version: 'datagrip/mysql:5.1'
3640
use-compression: 0
3741
use-tls: 0
42+
3843
env:
3944
MYSQL_CONNECTION_URL: ${{ secrets[matrix.mysql_connection_url_key] }}
4045

@@ -67,4 +72,4 @@ jobs:
6772
run: node tools/wait-up.js
6873

6974
- name: Run tests
70-
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run test
75+
run: FILTER=${{matrix.filter}} npm run test

0 commit comments

Comments
 (0)