126 Commits

Author SHA1 Message Date
Emrik Östling
7389e0a059 Merge pull request #68 from C4illin/release-please--branches--main--components--convertx-frontend 2024-07-09 20:31:46 +02:00
Emrik Östling
c512b45f91 chore(main): release 0.3.2 2024-07-09 20:27:52 +02:00
C4illin
3ae2db5d9b fix: increase max request body to support large uploads
issue #64
2024-07-09 20:26:48 +02:00
Emrik Östling
0945b40a9c Merge pull request #67 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.16.0
build(deps-dev): update @typescript-eslint/parser requirement from ^7.15.0 to ^7.16.0
2024-07-09 11:31:38 +02:00
dependabot[bot]
20b958e547 build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.16.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 09:18:34 +00:00
Emrik Östling
e7e146c6c9 Merge pull request #66 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.16.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.15.0 to ^7.16.0
2024-07-09 11:16:59 +02:00
dependabot[bot]
005ad2d66b build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.16.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 08:15:05 +00:00
Emrik Östling
e5c3a8acc4 Merge pull request #65 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.10
build(deps-dev): update @types/node requirement from ^20.14.9 to ^20.14.10
2024-07-08 10:16:29 +02:00
dependabot[bot]
87ecbabd1f build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 08:12:13 +00:00
Emrik Östling
991c4e4ba8 Merge pull request #63 from C4illin/dependabot/npm_and_yarn/elysia-tw-1.0.27
build(deps): update elysia requirement from ^1.0.26 to ^1.0.27
2024-07-03 13:41:16 +02:00
dependabot[bot]
87ccd8b44c build(deps): update elysia requirement from ^1.0.26 to ^1.0.27
---
updated-dependencies:
- dependency-name: elysia
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 08:45:48 +00:00
Emrik Östling
83e6699ca6 chore: update README.md 2024-07-03 00:31:54 +02:00
Emrik Östling
c91523c038 Merge pull request #61 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.15.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.14.1 to ^7.15.0
2024-07-02 11:17:19 +02:00
dependabot[bot]
1f73f036b2 build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.15.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 09:12:46 +00:00
Emrik Östling
1223fabfca Merge pull request #62 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.15.0
build(deps-dev): update @typescript-eslint/parser requirement from ^7.14.1 to ^7.15.0
2024-07-02 11:10:32 +02:00
dependabot[bot]
8a42a39e69 build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.15.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 09:09:12 +00:00
Emrik Östling
22023bad25 Merge pull request #60 from C4illin/dependabot/npm_and_yarn/typescript-tw-5.5.3
build(deps-dev): update typescript requirement from ^5.5.2 to ^5.5.3
2024-07-02 11:04:04 +02:00
dependabot[bot]
db2f2d8f0a build(deps-dev): update typescript requirement from ^5.5.2 to ^5.5.3
Updates the requirements on [typescript](https://github.com/Microsoft/TypeScript) to permit the latest version.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.2...v5.5.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 09:02:37 +00:00
Emrik Östling
d0fa9ac408 Merge pull request #59 from C4illin/dependabot/npm_and_yarn/elysia-tw-1.0.26
build(deps): update elysia requirement from ^1.0.25 to ^1.0.26
2024-07-01 13:47:44 +02:00
dependabot[bot]
776a97289b build(deps): update elysia requirement from ^1.0.25 to ^1.0.26
---
updated-dependencies:
- dependency-name: elysia
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 08:35:55 +00:00
Emrik Östling
95340dd0eb Merge pull request #58 from C4illin/dependabot/npm_and_yarn/biomejs/biome-1.8.3
build(deps-dev): bump @biomejs/biome from 1.8.2 to 1.8.3
2024-06-28 13:29:20 +02:00
dependabot[bot]
7dcd74cc5f build(deps-dev): bump @biomejs/biome from 1.8.2 to 1.8.3
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/cli/v1.8.3/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-28 08:25:31 +00:00
Emrik Östling
c5efac9423 Merge pull request #57 from C4illin/release-please--branches--main--components--convertx-frontend
chore(main): release 0.3.1
2024-06-28 02:00:49 +02:00
Emrik Östling
cceca9a924 chore(main): release 0.3.1 2024-06-28 01:32:05 +02:00
Emrik Östling
4d4c13a8d8 fix: release releases 2024-06-28 01:31:46 +02:00
Emrik Östling
f8f90ebd69 Merge pull request #55 from C4illin/release-please--branches--main--components--convertx-frontend 2024-06-28 00:23:46 +02:00
github-actions[bot]
648d5070e2 chore(main): release 0.3.0 2024-06-27 22:05:48 +00:00
C4illin
801cf28d1e feat: print version of installed converters to log 2024-06-28 00:05:21 +02:00
C4illin
fae2ba9c54 feat: change to xelatex 2024-06-27 23:26:46 +02:00
Emrik Östling
10d20a8786 Merge pull request #56 from C4illin/dependabot/npm_and_yarn/types/bun-tw-1.1.6
build(deps-dev): update @types/bun requirement from ^1.1.5 to ^1.1.6
2024-06-27 11:00:55 +02:00
dependabot[bot]
c9bc1e237e build(deps-dev): update @types/bun requirement from ^1.1.5 to ^1.1.6
---
updated-dependencies:
- dependency-name: "@types/bun"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-27 08:14:49 +00:00
C4illin
48a76a46b3 refactor: fix typescript 2024-06-27 01:05:36 +02:00
C4illin
4dcb796e1b feat: add version number to log
issue #44
2024-06-27 00:59:06 +02:00
C4illin
5952103bcd build(deps-dev): update @ianvs/prettier-plugin-sort-imports requirement 2024-06-27 00:58:07 +02:00
Emrik Östling
fd05ee5cd5 Merge pull request #54 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.9
build(deps-dev): update @types/node requirement from ^20.14.8 to ^20.14.9
2024-06-26 16:27:25 +02:00
dependabot[bot]
7e7d238c7a build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-26 08:52:48 +00:00
Emrik Östling
755a4170f2 Merge pull request #52 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.14.1
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.13.1 to ^7.14.1
2024-06-25 11:34:25 +02:00
dependabot[bot]
263ba415f5 build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.14.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 09:16:20 +00:00
Emrik Östling
317260098a Merge pull request #51 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.14.1
build(deps-dev): update @typescript-eslint/parser requirement from ^7.13.1 to ^7.14.1
2024-06-25 11:14:48 +02:00
dependabot[bot]
5304e94b4e build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.14.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 08:28:04 +00:00
Emrik Östling
aab2b311cf Merge pull request #48 from C4illin/dependabot/github_actions/docker/build-push-action-6
build(deps): bump docker/build-push-action from 5 to 6
2024-06-24 11:44:13 +02:00
Emrik Östling
baa7ea40e6 Merge pull request #49 from C4illin/dependabot/github_actions/oven-sh/setup-bun-2
build(deps): bump oven-sh/setup-bun from 1 to 2
2024-06-24 11:44:01 +02:00
Emrik Östling
481a11b610 Merge pull request #50 from C4illin/dependabot/npm_and_yarn/elysia-tw-1.0.25
build(deps): update elysia requirement from ^1.0.24 to ^1.0.25
2024-06-24 11:43:51 +02:00
dependabot[bot]
c09fe296b1 build(deps): update elysia requirement from ^1.0.24 to ^1.0.25
---
updated-dependencies:
- dependency-name: elysia
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 08:48:40 +00:00
dependabot[bot]
f023aae753 build(deps): bump oven-sh/setup-bun from 1 to 2
Bumps [oven-sh/setup-bun](https://github.com/oven-sh/setup-bun) from 1 to 2.
- [Release notes](https://github.com/oven-sh/setup-bun/releases)
- [Commits](https://github.com/oven-sh/setup-bun/compare/v1...v2)

---
updated-dependencies:
- dependency-name: oven-sh/setup-bun
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 08:38:19 +00:00
dependabot[bot]
5cd9544b55 build(deps): bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 08:38:17 +00:00
Emrik Östling
97c23ba65c Merge pull request #47 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.8
build(deps-dev): update @types/node requirement from ^20.14.6 to ^20.14.8
2024-06-22 15:49:14 +02:00
dependabot[bot]
0ffda40ac8 build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-22 12:55:07 +00:00
Emrik Östling
cb639907ee Merge pull request #43 from C4illin/dependabot/npm_and_yarn/biomejs/biome-1.8.2
build(deps-dev): bump @biomejs/biome from 1.8.1 to 1.8.2
2024-06-22 14:53:36 +02:00
dependabot[bot]
0166842b78 build(deps-dev): bump @biomejs/biome from 1.8.1 to 1.8.2
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/cli/v1.8.2/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-21 08:47:40 +00:00
Emrik Östling
277a35b5df Merge pull request #32 from C4illin/release-please--branches--main--components--convertx-frontend 2024-06-20 20:27:26 +02:00
github-actions[bot]
42124e08b2 chore(main): release 0.2.0 2024-06-20 18:24:09 +00:00
C4illin
13169574f0 feat: change from debian to alpine
issue #34
2024-06-20 20:23:34 +02:00
C4illin
6fb07f0d13 build(deps-dev): update typescroipt 2024-06-20 20:10:02 +02:00
Emrik Östling
8121114ccb Merge pull request #40 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.6
build(deps-dev): update @types/node requirement from ^20.14.5 to ^20.14.6
2024-06-20 11:20:37 +02:00
dependabot[bot]
81881af1c1 build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 08:58:16 +00:00
Emrik Östling
bbb4117e9d Merge pull request #41 from C4illin/dependabot/npm_and_yarn/types/bun-tw-1.1.5
build(deps-dev): update @types/bun requirement from ^1.1.4 to ^1.1.5
2024-06-20 10:56:48 +02:00
dependabot[bot]
d7ec8179d8 build(deps-dev): update @types/bun requirement from ^1.1.4 to ^1.1.5
---
updated-dependencies:
- dependency-name: "@types/bun"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 08:51:56 +00:00
Emrik Östling
cef60afee3 Merge pull request #37 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.13.1
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.13.0 to ^7.13.1
2024-06-19 00:40:57 +02:00
dependabot[bot]
ccf116acde build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.13.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 09:44:48 +00:00
Emrik Östling
f609984c90 Merge pull request #38 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.5
build(deps-dev): update @types/node requirement from ^20.14.2 to ^20.14.5
2024-06-18 11:44:10 +02:00
dependabot[bot]
663e654c80 build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 09:43:46 +00:00
Emrik Östling
31050dbf66 Merge pull request #36 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.13.1
build(deps-dev): update @typescript-eslint/parser requirement from ^7.13.0 to ^7.13.1
2024-06-18 11:42:16 +02:00
dependabot[bot]
8918c418f4 build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.13.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 08:30:14 +00:00
Emrik Östling
56266e0da8 Merge pull request #35 from C4illin/dependabot/npm_and_yarn/elysia-tw-1.0.24
build(deps): update elysia requirement from ^1.0.23 to ^1.0.24
2024-06-18 10:28:46 +02:00
dependabot[bot]
a3f5b5153a build(deps): update elysia requirement from ^1.0.23 to ^1.0.24
---
updated-dependencies:
- dependency-name: elysia
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 08:16:34 +00:00
Emrik Östling
6b4c7a16e0 Merge pull request #33 from C4illin/dependabot/npm_and_yarn/types/bun-tw-1.1.4
build(deps-dev): update @types/bun requirement from ^1.1.3 to ^1.1.4
2024-06-13 12:43:00 +02:00
dependabot[bot]
7c7756713b build(deps-dev): update @types/bun requirement from ^1.1.3 to ^1.1.4
---
updated-dependencies:
- dependency-name: "@types/bun"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 08:22:51 +00:00
Emrik Östling
15d4233a82 Merge pull request #31 from C4illin/feature-libjxl 2024-06-11 19:36:52 +02:00
C4illin
a1411a7559 chore: update readme with libjxl 2024-06-11 19:36:19 +02:00
C4illin
853a4c4f32 chore: format 2024-06-11 19:32:23 +02:00
C4illin
b05b0a14b0 build(deps-dev): update trustedDependencies in package.json 2024-06-11 19:31:40 +02:00
C4illin
ff680cb295 feat: add libjxl for jpegxl conversion 2024-06-11 19:30:06 +02:00
Emrik Östling
31e1a3124c Merge pull request #30 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.13.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.12.0 to ^7.13.0
2024-06-11 15:52:39 +02:00
dependabot[bot]
70278ef0b6 build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.13.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 10:28:16 +00:00
Emrik Östling
0a33fb32e7 Merge pull request #29 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.13.0
build(deps-dev): update @typescript-eslint/parser requirement from ^7.12.0 to ^7.13.0
2024-06-11 12:26:48 +02:00
dependabot[bot]
26f52a5122 build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.13.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 10:24:09 +00:00
Emrik Östling
8f8de4295a Merge pull request #28 from C4illin/dependabot/npm_and_yarn/biomejs/biome-1.8.1
build(deps-dev): bump @biomejs/biome from 1.8.0 to 1.8.1
2024-06-11 12:22:41 +02:00
dependabot[bot]
660b342f2e build(deps-dev): bump @biomejs/biome from 1.8.0 to 1.8.1
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/cli/v1.8.1/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 10:08:39 +00:00
Emrik Östling
6306a99740 Merge pull request #27 from C4illin/dependabot/npm_and_yarn/prettier-tw-3.3.2
build(deps-dev): update prettier requirement from ^3.3.1 to ^3.3.2
2024-06-11 12:07:08 +02:00
dependabot[bot]
5ca6f45809 build(deps-dev): update prettier requirement from ^3.3.1 to ^3.3.2
Updates the requirements on [prettier](https://github.com/prettier/prettier) to permit the latest version.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 09:03:10 +00:00
Emrik Östling
3ea3e1dd01 Merge pull request #26 from C4illin/release-please--branches--main--components--convertx-frontend 2024-06-10 23:09:12 +02:00
github-actions[bot]
2fddfbe24a chore(main): release 0.1.2 2024-06-10 21:07:51 +00:00
C4illin
25df58ba82 fix: fix incorrect redirect
issue #23
2024-06-10 23:06:26 +02:00
Emrik Östling
249bccdc7d Merge pull request #25 from C4illin/dependabot/npm_and_yarn/elysia-tw-1.0.23
build(deps): update elysia requirement from ^1.0.22 to ^1.0.23
2024-06-10 17:22:00 +02:00
dependabot[bot]
ec0e2db0e9 build(deps): update elysia requirement from ^1.0.22 to ^1.0.23
---
updated-dependencies:
- dependency-name: elysia
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-10 08:26:45 +00:00
Emrik Östling
ef9b68e0da Merge pull request #22 from C4illin/dependabot/npm_and_yarn/prettier-tw-3.3.1
build(deps-dev): update prettier requirement from ^3.3.0 to ^3.3.1
2024-06-06 10:46:58 +02:00
dependabot[bot]
31789738fc build(deps-dev): update prettier requirement from ^3.3.0 to ^3.3.1
Updates the requirements on [prettier](https://github.com/prettier/prettier) to permit the latest version.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-06 08:24:30 +00:00
Emrik Östling
5fa349a80e Merge pull request #21 from C4illin/dependabot/npm_and_yarn/biomejs/biome-1.8.0
build(deps-dev): bump @biomejs/biome from 1.7.3 to 1.8.0
2024-06-05 16:01:20 +02:00
dependabot[bot]
5dfd0f6f44 build(deps-dev): bump @biomejs/biome from 1.7.3 to 1.8.0
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 1.7.3 to 1.8.0.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/cli/v1.8.0/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 14:01:06 +00:00
Emrik Östling
bfa6301570 Merge pull request #20 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.2
build(deps-dev): update @types/node requirement from ^20.14.1 to ^20.14.2
2024-06-05 15:59:36 +02:00
dependabot[bot]
3ea52c4faf build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 08:22:45 +00:00
Emrik Östling
391e62bfee Merge pull request #17 from C4illin/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-7.12.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^7.11.0 to ^7.12.0
2024-06-04 10:42:36 +02:00
dependabot[bot]
4d1da58f74 build(deps-dev): update @typescript-eslint/eslint-plugin requirement
Updates the requirements on [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-04 08:39:26 +00:00
Emrik Östling
6dec9ae93b Merge pull request #18 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.1
build(deps-dev): update @types/node requirement from ^20.14.0 to ^20.14.1
2024-06-04 10:38:11 +02:00
dependabot[bot]
b466a6de99 build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-04 08:37:29 +00:00
Emrik Östling
186681ef44 Merge pull request #19 from C4illin/dependabot/npm_and_yarn/typescript-eslint/parser-tw-7.12.0
build(deps-dev): update @typescript-eslint/parser requirement from ^7.11.0 to ^7.12.0
2024-06-04 10:35:57 +02:00
dependabot[bot]
1e2273b7c4 build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-04 08:15:31 +00:00
Emrik Östling
8d17f59a58 Merge pull request #16 from C4illin/dependabot/npm_and_yarn/types/node-tw-20.14.0 2024-06-03 10:44:35 +02:00
dependabot[bot]
d8fcd15aeb build(deps-dev): update @types/node requirement
---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 08:44:25 +00:00
Emrik Östling
8cc0eee254 Merge pull request #15 from C4illin/dependabot/npm_and_yarn/prettier-tw-3.3.0 2024-06-03 10:42:55 +02:00
dependabot[bot]
e4b69023d9 build(deps-dev): update prettier requirement from ^3.2.5 to ^3.3.0
Updates the requirements on [prettier](https://github.com/prettier/prettier) to permit the latest version.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.5...3.3.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 08:28:22 +00:00
Emrik Östling
7d40890636 chore: add image size to readme 2024-06-01 13:07:22 +02:00
Emrik Östling
3ecd2c62ae chore: add to todo 2024-06-01 13:02:31 +02:00
Emrik Östling
16cabab0d0 chore: add link to packages 2024-06-01 00:18:48 +02:00
Emrik Östling
3e1c9e147f chore: add badges 2024-05-31 16:42:15 +02:00
Emrik Östling
5e7a0f5634 chore: add links to converters 2024-05-31 16:27:24 +02:00
Emrik Östling
61b02206c0 Update release-please.yml 2024-05-31 16:15:15 +02:00
Emrik Östling
e19a32fc6b Merge pull request #14 from C4illin/release-please--branches--main--components--convertx-frontend
chore(main): release 0.1.1
2024-05-31 11:56:02 +02:00
Emrik Östling
1712fea1d3 Merge branch 'main' into release-please--branches--main--components--convertx-frontend 2024-05-30 16:45:23 +02:00
C4illin
1ac4808a64 chore: remove maintain PR workflow
This commit removes the maintain PR workflow file, `.github/workflows/maintain-pr.yml`. The workflow was no longer needed and has been deleted.
2024-05-30 16:18:51 +02:00
C4illin
84fd5367ce chore: update actions/checkout to v4 in maintain PR workflow 2024-05-30 16:18:07 +02:00
C4illin
337cfdc15b chore: add maintain PR workflow
This commit adds a new workflow file, `.github/workflows/maintain-pr.yml`, which sets up a workflow to maintain release merge pull requests. The workflow is triggered on pushes to the `main` branch. It includes steps to check for an existing PR, create/update a PR if it doesn't exist, and reset the release branch if needed.
2024-05-30 16:16:30 +02:00
Emrik Östling
b979bd4f13 chore: update badges 2024-05-30 16:13:59 +02:00
Emrik Östling
3cab902752 chore: make use latest image instead of main 2024-05-30 14:36:05 +02:00
Emrik Östling
1d0dd2a69f chore(main): release 0.1.1 2024-05-30 14:34:56 +02:00
C4illin
17f439210a chore: remove unused and fix spelling 2024-05-30 14:34:32 +02:00
C4illin
9970fd3f89 fix: 🐛 make sure all redirects are 302
issue: #12
2024-05-30 14:33:57 +02:00
C4illin
8b7bcceb7b chore: remove docker tag master 2024-05-30 14:21:13 +02:00
C4illin
93ebdabf6f chore: 🔥 remove old master tag from containers 2024-05-30 14:15:31 +02:00
C4illin
0b278c989b Merge branch 'main' of https://github.com/C4illin/ConvertX 2024-05-30 13:31:38 +02:00
C4illin
518e771afe build: dependabot follow conventional commits 2024-05-30 13:31:36 +02:00
Emrik Östling
6578a02478 Merge pull request #13 from C4illin/release-please--branches--main--components--convertx-frontend 2024-05-30 13:17:23 +02:00
Emrik Östling
e76b8a97f0 chore(main): release 0.1.0 2024-05-30 13:16:48 +02:00
C4illin
54d9aecbf9 chore: release 0.1.0
Release-As: 0.1.0
2024-05-30 13:16:09 +02:00
C4illin
f2befc5edb add release please 2024-05-30 12:40:55 +02:00
20 changed files with 457 additions and 110 deletions

View File

@@ -5,19 +5,19 @@
version: 2
updates:
# Maintain dependencies for npm
- package-ecosystem: "npm" # See documentation for possible values
versioning-strategy: increase
directory: "/" # Location of package manifests
schedule:
interval: "daily"
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for Docker
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: npm
versioning-strategy: increase
directory: "/"
schedule:
interval: daily
commit-message:
prefix: "build"
include: "scope"
open-pull-requests-limit: 10
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
commit-message:
prefix: "build"
include: "scope"

View File

@@ -14,7 +14,7 @@ jobs:
if: github.actor == 'dependabot[bot]'
runs-on: ubuntu-latest
steps:
- uses: oven-sh/setup-bun@v1
- uses: oven-sh/setup-bun@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0

View File

@@ -58,7 +58,7 @@ jobs:
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}

25
.github/workflows/release-please.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
name: release-please
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
# this assumes that you have created a personal access token
# (PAT) and configured it as a GitHub action secret named
# `MY_RELEASE_PLEASE_TOKEN` (this secret name is not important).
token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }}
# token: ${{ secrets.GITHUB_TOKEN }}
# this is a built-in strategy in release-please, see "Action Inputs"
# for more options
release-type: node

21
.github/workflows/remove-docker-tag.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Remove Docker Tag
on:
workflow_dispatch:
jobs:
remove-docker-tag:
runs-on: ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
# (required)
permissions:
contents: read
packages: write
steps:
- name: Remove Docker Tag
uses: ArchieAtkinson/remove-dockertag-action@v0.0
with:
tag_name: master
github_token: ${{ secrets.GITHUB_TOKEN }}

58
CHANGELOG.md Normal file
View File

@@ -0,0 +1,58 @@
# Changelog
## [0.3.2](https://github.com/C4illin/ConvertX/compare/v0.3.1...v0.3.2) (2024-07-09)
### Bug Fixes
* increase max request body to support large uploads ([3ae2db5](https://github.com/C4illin/ConvertX/commit/3ae2db5d9b36fe3dcd4372ddcd32aa573ea59aa6)), closes [#64](https://github.com/C4illin/ConvertX/issues/64)
## [0.3.1](https://github.com/C4illin/ConvertX/compare/v0.3.0...v0.3.1) (2024-06-27)
### Bug Fixes
* release releases ([4d4c13a](https://github.com/C4illin/ConvertX/commit/4d4c13a8d85ec7c9209ad41cdbea7d4380b0edbf))
## [0.3.0](https://github.com/C4illin/ConvertX/compare/v0.2.0...v0.3.0) (2024-06-27)
### Features
* add version number to log ([4dcb796](https://github.com/C4illin/ConvertX/commit/4dcb796e1bd27badc078d0638076cd9f1e81c4a4)), closes [#44](https://github.com/C4illin/ConvertX/issues/44)
* change to xelatex ([fae2ba9](https://github.com/C4illin/ConvertX/commit/fae2ba9c54461dccdccd1bfb5e76398540d11d0b))
* print version of installed converters to log ([801cf28](https://github.com/C4illin/ConvertX/commit/801cf28d1e5edac9353b0b16be75a4fb48470b8a))
## [0.2.0](https://github.com/C4illin/ConvertX/compare/v0.1.2...v0.2.0) (2024-06-20)
### Features
* add libjxl for jpegxl conversion ([ff680cb](https://github.com/C4illin/ConvertX/commit/ff680cb29534a25c3148a90fd064bb86c71fb482))
* change from debian to alpine ([1316957](https://github.com/C4illin/ConvertX/commit/13169574f0134ae236f8d41287bb73930b575e82)), closes [#34](https://github.com/C4illin/ConvertX/issues/34)
## [0.1.2](https://github.com/C4illin/ConvertX/compare/v0.1.1...v0.1.2) (2024-06-10)
### Bug Fixes
* fix incorrect redirect ([25df58b](https://github.com/C4illin/ConvertX/commit/25df58ba82321aaa6617811a6995cb96c2a00a40)), closes [#23](https://github.com/C4illin/ConvertX/issues/23)
## [0.1.1](https://github.com/C4illin/ConvertX/compare/v0.1.0...v0.1.1) (2024-05-30)
### Bug Fixes
* :bug: make sure all redirects are 302 ([9970fd3](https://github.com/C4illin/ConvertX/commit/9970fd3f89190af96f8762edc3817d1e03082b3a)), closes [#12](https://github.com/C4illin/ConvertX/issues/12)
## 0.1.0 (2024-05-30)
### Features
* remove file from file list in index.html ([787ff97](https://github.com/C4illin/ConvertX/commit/787ff9741ecbbf4fb4c02b43bd22a214a173fd7b))
### Miscellaneous Chores
* release 0.1.0 ([54d9aec](https://github.com/C4illin/ConvertX/commit/54d9aecbf949689b12aa7e5e8e9be7b9032f4431))

63
Debian.Dockerfile Normal file
View File

@@ -0,0 +1,63 @@
FROM oven/bun:1-debian as base
WORKDIR /app
# install dependencies into temp directory
# this will cache them and speed up future builds
FROM base AS install
RUN mkdir -p /temp/dev
COPY package.json bun.lockb /temp/dev/
RUN cd /temp/dev && bun install --frozen-lockfile
# install with --production (exclude devDependencies)
RUN mkdir -p /temp/prod
COPY package.json bun.lockb /temp/prod/
RUN cd /temp/prod && bun install --frozen-lockfile --production
# FROM base AS install-libjxl-tools
# download
# copy node_modules from temp directory
# then copy all (non-ignored) project files into the image
# FROM base AS prerelease
# COPY --from=install /temp/dev/node_modules node_modules
# COPY . .
# # [optional] tests & build
# ENV NODE_ENV=production
# RUN bun test
# RUN bun run build
# copy production dependencies and source code into final image
FROM base AS release
LABEL maintainer="Emrik Östling (C4illin)"
LABEL description="ConvertX: self-hosted online file converter supporting 700+ file formats."
LABEL repo="https://github.com/C4illin/ConvertX"
# install additional dependencies
RUN rm -rf /var/lib/apt/lists/partial && apt-get update -o Acquire::CompressionTypes::Order::=gz \
&& apt-get install -y \
pandoc \
texlive-latex-recommended \
texlive-fonts-recommended \
texlive-latex-extra \
ffmpeg \
graphicsmagick \
ghostscript \
libvips-tools
# # libjxl is not available in the official debian repositories
# RUN wget https://github.com/libjxl/libjxl/releases/download/v0.10.2/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz -O /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz \
# && mkdir -p /tmp/libjxl \
# && tar -xvf /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz -C /tmp/libjxl \
# && dpkg -i /tmp/libjxl/libjxl_0.10.2_amd64.deb /tmp/libjxl/jxl_0.10.2_amd64.deb \
# && rm -rf /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz /tmp/libjxl
COPY --from=install /temp/prod/node_modules node_modules
# COPY --from=prerelease /app/src/index.tsx /app/src/
# COPY --from=prerelease /app/package.json .
COPY . .
EXPOSE 3000/tcp
ENTRYPOINT [ "bun", "run", "./src/index.tsx" ]

View File

@@ -1,4 +1,4 @@
FROM oven/bun:1-debian as base
FROM oven/bun:1-alpine as base
WORKDIR /app
# install dependencies into temp directory
@@ -31,16 +31,19 @@ LABEL description="ConvertX: self-hosted online file converter supporting 700+ f
LABEL repo="https://github.com/C4illin/ConvertX"
# install additional dependencies
RUN rm -rf /var/lib/apt/lists/partial && apt-get update -o Acquire::CompressionTypes::Order::=gz \
&& apt-get install -y \
RUN apk --no-cache add \
pandoc \
texlive-latex-recommended \
texlive-fonts-recommended \
texlive-latex-extra \
texlive \
texlive-xetex \
texmf-dist-latexextra \
ffmpeg \
graphicsmagick \
ghostscript \
libvips-tools
vips-tools \
libjxl-tools
# this might be needed for some latex use cases, will add it if needed.
# texmf-dist-fontsextra \
COPY --from=install /temp/prod/node_modules node_modules
# COPY --from=prerelease /app/src/index.tsx /app/src/
@@ -48,4 +51,5 @@ COPY --from=install /temp/prod/node_modules node_modules
COPY . .
EXPOSE 3000/tcp
ENV NODE_ENV=production
ENTRYPOINT [ "bun", "run", "./src/index.tsx" ]

View File

@@ -1,8 +1,13 @@
![ConvertX](images/logo.png)
# ConvertX
[![Docker](https://github.com/C4illin/ConvertX/actions/workflows/docker-publish.yml/badge.svg?branch=main)](https://github.com/C4illin/ConvertX/actions/workflows/docker-publish.yml)
[![GitHub Release](https://img.shields.io/github/v/release/C4illin/ConvertX)](https://github.com/C4illin/ConvertX/pkgs/container/convertx)
![GitHub commits since latest release](https://img.shields.io/github/commits-since/C4illin/ConvertX/latest)
![GitHub repo size](https://img.shields.io/github/repo-size/C4illin/ConvertX)
![Docker container size](https://ghcr-badge.egpl.dev/c4illin/convertx/size?color=%230375b6&tag=latest&label=image+size&trim=)
![GitHub top language](https://img.shields.io/github/languages/top/C4illin/ConvertX)
A self-hosted online file converter. Supports 831 different formats. Written with Typescript, Bun and Elysia.
A self-hosted online file converter. Supports 831 different formats. Written with TypeScript, Bun and Elysia.
## Features
@@ -12,23 +17,26 @@ A self-hosted online file converter. Supports 831 different formats. Written wit
## Converters supported
| Converter | Use case | Converts from | Converts to |
|----------------|---------------|---------------|-------------|
| Vips | Images (fast) | 45 | 23 |
| PDFLaTeX | Documents | 1 | 1 |
| Pandoc | Documents | 43 | 65 |
| GraphicsMagick | Images | 166 | 133 |
| FFmpeg | Video | ~473 | ~280 |
| Converter | Use case | Converts from | Converts to |
|------------------------------------------------------------------------------|---------------|---------------|-------------|
| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 |
| [Vips](https://github.com/libvips/libvips) | Images | 45 | 23 |
| [XeLaTeX](https://tug.org/xetex/) | Documents | 1 | 1 |
| [Pandoc](https://pandoc.org/) | Documents | 43 | 65 |
| [GraphicsMagick](http://www.graphicsmagick.org/) | Images | 166 | 133 |
| [FFmpeg](https://ffmpeg.org/) | Video | ~473 | ~280 |
<!-- many ffmpeg fileformats are duplicates -->
Any missing converter? Open an issue or pull request!
## Deployment
```yml
# docker-compose.yml
services:
convertx:
image: ghcr.io/c4illin/convertx:main
image: ghcr.io/c4illin/convertx
ports:
- "3000:3000"
environment: # Defaults are listed below. All are optional.
@@ -60,6 +68,7 @@ Tutorial in french: https://belginux.com/installer-convertx-avec-docker/
- [ ] Divide index.tsx into smaller components
- [ ] Add tests
- [ ] Add searchable list of formats
- [ ] Make the upload button nicer and more easy to drop files on. Support copy paste as well if possible.
## Contributors

BIN
bun.lockb

Binary file not shown.

View File

@@ -2,6 +2,7 @@ services:
convertx:
build:
context: .
# dockerfile: Debian.Dockerfile
volumes:
- ./data:/app/data
environment:

View File

@@ -1,6 +1,6 @@
{
"name": "convertx-frontend",
"version": "1.0.50",
"version": "0.3.2",
"scripts": {
"dev": "bun run --watch src/index.tsx",
"hot": "bun run --hot src/index.tsx",
@@ -12,28 +12,31 @@
"@elysiajs/html": "^1.0.2",
"@elysiajs/jwt": "^1.0.2",
"@elysiajs/static": "^1.0.3",
"elysia": "^1.0.22"
"elysia": "^1.0.27"
},
"module": "src/index.tsx",
"bun-create": {
"start": "bun run src/index.tsx"
},
"devDependencies": {
"@biomejs/biome": "1.7.3",
"@ianvs/prettier-plugin-sort-imports": "^4.2.1",
"@biomejs/biome": "1.8.3",
"@ianvs/prettier-plugin-sort-imports": "^4.3.0",
"@kitajs/ts-html-plugin": "^4.0.1",
"@picocss/pico": "^2.0.6",
"@total-typescript/ts-reset": "^0.5.1",
"@types/bun": "^1.1.3",
"@types/bun": "^1.1.6",
"@types/eslint": "^8.56.10",
"@types/node": "^20.12.13",
"@types/node": "^20.14.10",
"@types/ws": "^8.5.10",
"@typescript-eslint/eslint-plugin": "^7.11.0",
"@typescript-eslint/parser": "^7.11.0",
"@typescript-eslint/eslint-plugin": "^7.16.0",
"@typescript-eslint/parser": "^7.16.0",
"cpy-cli": "^5.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"prettier": "^3.2.5",
"typescript": "^5.4.5"
}
"prettier": "^3.3.2",
"typescript": "^5.5.3"
},
"trustedDependencies": [
"@biomejs/biome"
]
}

View File

@@ -50,4 +50,4 @@ export const Header = ({
</nav>
</header>
);
};
};

71
src/converters/libjxl.ts Normal file
View File

@@ -0,0 +1,71 @@
import { exec } from "node:child_process";
// declare possible conversions
export const properties = {
from: {
jxl: ["jxl"],
images: [
"apng",
"exr",
"gif",
"jpeg",
"pam",
"pfm",
"pgm",
"pgx",
"png",
"ppm",
],
},
to: {
jxl: [
"apng",
"exr",
"gif",
"jpeg",
"pam",
"pfm",
"pgm",
"pgx",
"png",
"ppm",
],
images: ["jxl"],
},
};
export function convert(
filePath: string,
fileType: string,
convertTo: string,
targetPath: string,
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
options?: any,
): Promise<string> {
let tool = "";
if (fileType === "jxl") {
tool = "djxl";
}
if (convertTo === "jxl") {
tool = "cjxl";
}
return new Promise((resolve, reject) => {
exec(`${tool} "${filePath}" "${targetPath}"`, (error, stdout, stderr) => {
if (error) {
reject(`error: ${error}`);
}
if (stdout) {
console.log(`stdout: ${stdout}`);
}
if (stderr) {
console.error(`stderr: ${stderr}`);
}
resolve("success");
});
});
}

View File

@@ -16,9 +16,14 @@ import {
} from "./graphicsmagick";
import {
convert as convertPdflatex,
properties as propertiesPdflatex,
} from "./pdflatex";
convert as convertxelatex,
properties as propertiesxelatex,
} from "./xelatex";
import {
convert as convertLibjxl,
properties as propertiesLibjxl,
} from "./libjxl";
import { normalizeFiletype } from "../helpers/normalizeFiletype";
@@ -50,13 +55,17 @@ const properties: {
) => any;
};
} = {
libjxl: {
properties: propertiesLibjxl,
converter: convertLibjxl,
},
vips: {
properties: propertiesImage,
converter: convertImage,
},
pdflatex: {
properties: propertiesPdflatex,
converter: convertPdflatex,
xelatex: {
properties: propertiesxelatex,
converter: convertxelatex,
},
pandoc: {
properties: propertiesPandoc,
@@ -102,9 +111,8 @@ export async function mainConverter(
for (const key in converterObj.properties.from) {
if (
// HOW??
converterObj.properties.from[key].includes(fileType) &&
converterObj.properties.to[key].includes(convertTo)
converterObj?.properties?.from[key]?.includes(fileType) &&
converterObj?.properties?.to[key]?.includes(convertTo)
) {
converterFunc = converterObj.converter;
break;
@@ -208,9 +216,9 @@ for (const converterName in properties) {
for (const key in converterProperties.to) {
if (allTargets[converterName]) {
allTargets[converterName].push(...converterProperties.to[key]);
allTargets[converterName].push(...(converterProperties.to[key] || []));
} else {
allTargets[converterName] = converterProperties.to[key];
allTargets[converterName] = converterProperties.to[key] || [];
}
}
}
@@ -229,9 +237,9 @@ for (const converterName in properties) {
for (const key in converterProperties.from) {
if (allInputs[converterName]) {
allInputs[converterName].push(...converterProperties.from[key]);
allInputs[converterName].push(...(converterProperties.from[key] || []));
} else {
allInputs[converterName] = converterProperties.from[key];
allInputs[converterName] = converterProperties.from[key] || [];
}
}
}

View File

@@ -127,9 +127,15 @@ export function convert(
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
options?: any,
): Promise<string> {
// set xelatex here
const xelatex = ["pdf", "latex"];
let option = "";
if (xelatex.includes(convertTo)) {
option = "--pdf-engine=xelatex";
}
return new Promise((resolve, reject) => {
exec(
`pandoc "${filePath}" -f ${fileType} -t ${convertTo} -o "${targetPath}"`,
`pandoc ${option} "${filePath}" -f ${fileType} -t ${convertTo} -o "${targetPath}"`,
(error, stdout, stderr) => {
if (error) {
reject(`error: ${error}`);

View File

@@ -19,9 +19,13 @@ export function convert(
): Promise<string> {
return new Promise((resolve, reject) => {
// const fileName: string = (targetPath.split("/").pop() as string).replace(".pdf", "")
const outputPath = targetPath.split("/").slice(0, -1).join("/").replace("./", "")
const outputPath = targetPath
.split("/")
.slice(0, -1)
.join("/")
.replace("./", "");
exec(
`pdflatex -interaction=nonstopmode -output-directory="${outputPath}" "${filePath}"`,
`latexmk -xelatex -interaction=nonstopmode -output-directory="${outputPath}" "${filePath}"`,
(error, stdout, stderr) => {
if (error) {
reject(`error: ${error}`);

View File

@@ -0,0 +1,75 @@
import { exec } from "node:child_process";
import { version } from "../../package.json";
console.log(`ConvertX v${version}`);
if (process.env.NODE_ENV === "production") {
exec("cat /etc/os-release", (error, stdout) => {
if (error) {
console.error("Not running on docker, this is not supported.");
}
if (stdout) {
console.log(stdout.split('PRETTY_NAME="')[1]?.split('"')[0]);
}
});
exec("pandoc -v", (error, stdout) => {
if (error) {
console.error("Pandoc is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
exec("ffmpeg -version", (error, stdout) => {
if (error) {
console.error("FFmpeg is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
exec("vips -v", (error, stdout) => {
if (error) {
console.error("Vips is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
exec("gm version", (error, stdout) => {
if (error) {
console.error("GraphicsMagick is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
exec("djxl --version", (error, stdout) => {
if (error) {
console.error("libjxl-tools is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
exec("xelatex -version", (error, stdout) => {
if (error) {
console.error("Tex Live with XeTeX is not installed.");
}
if (stdout) {
console.log(stdout.split("\n")[0]);
}
});
}

View File

@@ -19,6 +19,7 @@ import {
normalizeFiletype,
normalizeOutputFiletype,
} from "./helpers/normalizeFiletype";
import "./helpers/printVersions";
const db = new Database("./data/mydb.sqlite", { create: true });
const uploadsDir = "./data/uploads/";
@@ -100,7 +101,11 @@ interface IJobs {
// enable WAL mode
db.exec("PRAGMA journal_mode = WAL;");
const app = new Elysia()
const app = new Elysia({
serve: {
maxRequestBodySize: Number.MAX_SAFE_INTEGER,
},
})
.use(cookie())
.use(html())
.use(
@@ -121,7 +126,7 @@ const app = new Elysia()
)
.get("/setup", ({ redirect }) => {
if (!FIRST_RUN) {
return redirect("/login");
return redirect("/login", 302);
}
return (
@@ -164,7 +169,7 @@ const app = new Elysia()
})
.get("/register", ({ redirect }) => {
if (!ACCOUNT_REGISTRATION) {
return redirect("/login");
return redirect("/login", 302);
}
return (
@@ -206,7 +211,7 @@ const app = new Elysia()
"/register",
async ({ body, set, redirect, jwt, cookie: { auth } }) => {
if (!ACCOUNT_REGISTRATION && !FIRST_RUN) {
return redirect("/login");
return redirect("/login", 302);
}
if (FIRST_RUN) {
@@ -253,13 +258,13 @@ const app = new Elysia()
sameSite: "strict",
});
return redirect("/");
return redirect("/", 302);
},
{ body: t.Object({ email: t.String(), password: t.String() }) },
)
.get("/login", async ({ jwt, redirect, cookie: { auth } }) => {
if (FIRST_RUN) {
return redirect("/setup");
return redirect("/setup", 302);
}
// if already logged in, redirect to home
@@ -267,7 +272,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value);
if (user) {
return redirect("/");
return redirect("/", 302);
}
auth.remove();
@@ -361,7 +366,7 @@ const app = new Elysia()
sameSite: "strict",
});
return redirect("/");
return redirect("/", 302);
},
{ body: t.Object({ email: t.String(), password: t.String() }) },
)
@@ -370,27 +375,27 @@ const app = new Elysia()
auth.remove();
}
return redirect("/login");
return redirect("/login", 302);
})
.post("/logoff", ({ redirect, cookie: { auth } }) => {
if (auth?.value) {
auth.remove();
}
return redirect("/login");
return redirect("/login", 302);
})
.get("/", async ({ jwt, redirect, cookie: { auth, jobId } }) => {
if (FIRST_RUN) {
return redirect("/setup");
return redirect("/setup", 302);
}
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
// validate jwt
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
// make sure user exists in db
@@ -402,7 +407,7 @@ const app = new Elysia()
if (auth?.value) {
auth.remove();
}
return redirect("/login");
return redirect("/login", 302);
}
// create a new job
@@ -509,16 +514,16 @@ const app = new Elysia()
"/upload",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
if (!jobId?.value) {
return redirect("/");
return redirect("/", 302);
}
const existingJob = await db
@@ -526,7 +531,7 @@ const app = new Elysia()
.get(jobId.value, user.id);
if (!existingJob) {
return redirect("/");
return redirect("/", 302);
}
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -557,16 +562,16 @@ const app = new Elysia()
"/delete",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
if (!jobId?.value) {
return redirect("/");
return redirect("/", 302);
}
const existingJob = await db
@@ -574,7 +579,7 @@ const app = new Elysia()
.get(jobId.value, user.id);
if (!existingJob) {
return redirect("/");
return redirect("/", 302);
}
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -587,16 +592,16 @@ const app = new Elysia()
"/convert",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
if (!jobId?.value) {
return redirect("/");
return redirect("/", 302);
}
const existingJob = (await db
@@ -604,7 +609,7 @@ const app = new Elysia()
.get(jobId.value, user.id)) as IJobs;
if (!existingJob) {
return redirect("/");
return redirect("/", 302);
}
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -627,7 +632,7 @@ const app = new Elysia()
const fileNames = JSON.parse(body.file_names) as string[];
if (!Array.isArray(fileNames) || fileNames.length === 0) {
return redirect("/");
return redirect("/", 302);
}
db.run(
@@ -677,7 +682,7 @@ const app = new Elysia()
});
// Redirect the client immediately
return redirect(`/results/${jobId.value}`);
return redirect(`/results/${jobId.value}`, 302);
},
{
body: t.Object({
@@ -688,12 +693,12 @@ const app = new Elysia()
)
.get("/history", async ({ jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
let userJobs = db
@@ -751,7 +756,7 @@ const app = new Elysia()
"/results/:jobId",
async ({ params, jwt, set, redirect, cookie: { auth, job_id } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
if (job_id?.value) {
@@ -761,7 +766,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
const job = (await db
@@ -846,7 +851,7 @@ const app = new Elysia()
"/progress/:jobId",
async ({ jwt, set, params, redirect, cookie: { auth, job_id } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
if (job_id?.value) {
@@ -856,7 +861,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
const job = (await db
@@ -934,12 +939,12 @@ const app = new Elysia()
"/download/:userId/:jobId/:fileName",
async ({ params, jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
const job = await db
@@ -947,7 +952,7 @@ const app = new Elysia()
.get(user.id, params.jobId);
if (!job) {
return redirect("/results");
return redirect("/results", 302);
}
// parse from url encoded string
const userId = decodeURIComponent(params.userId);
@@ -960,12 +965,12 @@ const app = new Elysia()
)
.get("/converters", async ({ jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
return (
@@ -1022,12 +1027,12 @@ const app = new Elysia()
async ({ params, jwt, redirect, cookie: { auth } }) => {
// TODO: Implement zip download
if (!auth?.value) {
return redirect("/login");
return redirect("/login", 302);
}
const user = await jwt.verify(auth.value);
if (!user) {
return redirect("/login");
return redirect("/login", 302);
}
const job = await db
@@ -1035,7 +1040,7 @@ const app = new Elysia()
.get(user.id, params.jobId);
if (!job) {
return redirect("/results");
return redirect("/results", 302);
}
const userId = decodeURIComponent(params.userId);

View File

@@ -1,9 +1,3 @@
article {
/* height: 300px; */
/* width: 300px; */
}
div.icon {
height: 100px;
width: 100px;