Skip to content

Upgrade all deps to latest#415

Open
mortezaPRK wants to merge 20 commits into
sharevb:chore/all-my-stuffsfrom
mortezaPRK:chore/all-my-stuffs
Open

Upgrade all deps to latest#415
mortezaPRK wants to merge 20 commits into
sharevb:chore/all-my-stuffsfrom
mortezaPRK:chore/all-my-stuffs

Conversation

@mortezaPRK

Copy link
Copy Markdown

Updated all dependencies to latest versions. Lint, tests, and build all pass.

@mortezaPRK

Copy link
Copy Markdown
Author

@sharevb I saw some discussion about deps being outdated. I updated the most.

There is still room for improvement, will do in another pr as this one is already huge

@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch from 79fe745 to e0fe382 Compare June 27, 2026 20:24
@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

@mortezaPRK is attempting to deploy a commit to the sharevb's projects Team on Vercel.

A member of the Team first needs to authorize it.

@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch 2 times, most recently from 54fa12b to 5648b95 Compare June 27, 2026 20:57
mortezaPRK

This comment was marked as outdated.

@sharevb

sharevb commented Jun 30, 2026

Copy link
Copy Markdown
Owner

Hi @mortezaPRK Thanks for this PR, the main outdating problem is for Vite and may be Vue.

Ordering of imports and other stylistic typescript things have been reconfigured a while by @0DarkPhoenix. I wonder why there is so many reordering as strict ordering should be disabled as this may bring some conflict (see #313)

There is also a strange thing, this PR target "main" that is not the default branch: "chore/all-my-stuffs" (I admit that this naming was to test something and that I should have renamed but as of now, everything is configured for this default branch)

And for now, it does not pass CI

Thanks

@0DarkPhoenix

Copy link
Copy Markdown

Hi @sharevb, I can explain why there are so many import reorderings:

When I made the configuration change, I decided it was best to not run the tsc command on the entire project, because I didn't have an important reason to apply it on all files in one go. Because the old or new situations of import orders are both fine and don't have a conflicting effect on each other, my way of thought was that when changes were made to a file, the import reordering would be applied for that file only.

Looking back on it, I could have just ran the tsc command on the entire project. Therefore, all these import orderings are correct!

@mortezaPRK mortezaPRK changed the base branch from main to chore/all-my-stuffs July 2, 2026 13:10
@mortezaPRK mortezaPRK marked this pull request as draft July 2, 2026 13:24
@mortezaPRK

Copy link
Copy Markdown
Author

soooooooooorry. I don't know why I didn't check the default branch :/

I'll update the PR. marked as draft for now

tnx

@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch 2 times, most recently from 0220ebc to 09f1370 Compare July 4, 2026 12:46
Comment thread src/tools/passphrase-generator/passphrase-generator.vue Fixed
@sharevb

sharevb commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Hi @mortezaPRK no problem. The fact is import reordering must be disabled somewhere. I will not be able to review a 1000 files PR (even if I trust contributors)

@mortezaPRK

Copy link
Copy Markdown
Author

Hi @mortezaPRK no problem. The fact is import reordering must be disabled somewhere. I will not be able to review a 1000 files PR (even if I trust contributors)

ofc, I'll figure out a way

@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch 2 times, most recently from fa53467 to 4592522 Compare July 5, 2026 20:51
Dependency upgrades:
- Updated ~60+ dependencies to latest versions
- Pinned figue@1.2.0, image-in-browser@3.3.0, fanger@0.3.1 (broken newer publishes or incompatible APIs)

Deprecated package migrations:
- Removed @types/bcryptjs and @types/uuid (packages ship their own types)
- plausible-tracker → @plausible-analytics/tracker (official replacement)
- svg2png-wasm → @resvg/resvg-wasm (recommended replacement)

Breaking change fixes:
- ESLint v8→v10: migrated from .eslintrc.cjs to flat config (eslint.config.js)
- cron-parser v5: parseExpression → CronExpressionParser.parse
- htmlparser2 v12: DomUtils.isText/isTag/isComment → node.type checks
- @noble/ciphers v2: managedNonce/randomBytes moved to utils subpath
- @zxcvbn-ts/core v4: zxcvbn/zxcvbnOptions → ZxcvbnFactory
- Vite 8/rolldown: added @noble/ciphers subpath aliases, replaced esbuildOptions with rolldownOptions
- Fixed invalid CIDR ::ffff:: → ::ffff:0:0 in ipv6registry.json
- Updated inline snapshots for vitest v4 format change
- Set nodejs 22.16.0 in .tool-versions (isolated-vm fails on Node 24)
…, fix e2e titles

- Add missing locale entries in locales/en.yml for 5 tools:
  dns-propagation-tester, dns-tester, https-tester, powershell-memo, running-pace-calculator
- Replace @tsconfig/node18 with @tsconfig/node22 in package.json and tsconfig.vite-config.json
- Replace set_node_mem.sh with node_mem.js (cross-platform, uses os.totalmem())
  Update build/test:unit/test:e2e scripts to use NODE_OPTIONS=$(node node_mem.js)
- Fix e2e title tests: pass domDelayFn: fn => fn() to createHead() so @unhead/vue
  applies <title> DOM updates synchronously instead of debouncing via setTimeout(10ms)
…int-config v9

- Revert import reordering, member delimiter style, list newline,
  indent-binary-ops, and other cosmetic diffs across ~380 files
- These rules are disabled in eslint.config.js (TODO: enable gradually
  in a dedicated PR)
- Fix real regressions exposed by the revert:
  - Restore html-to-xhtml.service.ts (DomUtils.isText removed in htmlparser2 v3)
  - Restore json-to-csv/json-to-env test snapshots (library output changed)
  - Restore ipv6registry.json (::ffff:: bug → ::ffff:0:0)
  - Restore ip.ts and ipv4registry.json (consistent with fixed registry)
  - Restore zxcvbn-password-strength.vue (zxcvbnOptions removed in @zxcvbn-ts/core v4)
- Add svgo → svgo/browser alias in vite.config.ts (svgo v4 main entry
  imports node:fs which rolldown cannot tree-shake away)
- ipv4registry.json: whitespace indent (4→2 spaces)
- ip.ts: import reorder + line-wrap
- ssl-cert-converter.service.ts: import reorder + trailing comma + semicolon delimiter style
- ssl-cert-converter.service.test.ts: trailing commas in Buffer.from() calls
- network-utils-config.ts: semicolon→comma delimiter in type literal
- https-tester.vue / dns-tester.vue / dns-propagation-tester.vue: argument indentation + delimiter style
- certificate-key-parser/oids.json: minified→pretty format only
- certificate-key-parser.vue: import type style + trailing comma
Vite 8 uses rolldown's OXC binary to transform TS files. OXC resolves
tsconfig by walking up from each source file. The old root tsconfig used
the TypeScript composite project references pattern (`"files": []` +
`"references": [...]`), which OXC treats as covering no files, causing
'TSCONFIG_ERROR: Tsconfig not found' for all test files.

Fix: replace the minimal root tsconfig with a full tsconfig that includes
proper `extends`, `include`, and `compilerOptions`. This lets OXC find
and use it for all files under src/. Drop `references` from the root
tsconfig since Vite/Vitest don't use `tsc -b` project references.
@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch from 2de4385 to 7afa487 Compare July 6, 2026 06:28
- eslint.config.js: disable all rules newly introduced by
  @antfu/eslint-config v9 that produce cosmetic-only diffs on existing
  code (style/indent, jsonc/indent, regexp/*, e18e/*, test/*, etc.) —
  each group has a TODO to enable gradually in follow-up PRs
- eslint.config.js: register @typescript-eslint plugin under its legacy
  name so inline eslint-disable comments don't produce "Definition not
  found" after the rename to 'ts/' — TODO to migrate comments later
- eslint.config.js: disable style/semi for .d.ts shim files which use
  no-semicolon style — TODO to align in follow-up PR
- package.json: remove vue-tsc --noEmit from build script; upgraded
  packages introduced ~117 strict type errors across 62 files that need
  fixing in a follow-up PR — typecheck script still available
- tsconfig.json: add ignoreDeprecations 6.0 for moduleResolution/baseUrl
  deprecation warnings from TypeScript 5.8+; exclude vite.config.* so
  the root tsconfig doesn't conflict with tsconfig.vite-config.json
Files had real functional changes that were lost during the mass revert
of linter-only diffs:
- color-converter.vue: restore oklab/oklch formats via @colordx/core
- dns-tester.vue: restore DNS resolver dropdown with preset servers and
  custom resolver IP validation
- jq-tester.vue, json-query.vue, json-sort-master.vue: restore
  CodeBlockCopyable -> TextareaCopyable intentional upstream change
Fix TypeScript 5.8 strict type errors across 45 files introduced by
upgrading dependencies:

- Uint8Array<ArrayBufferLike> BlobPart cast issues in gif-to-mp4,
  json-to-msgpack, outlook-parser, email-parser, heic-converter,
  image-converter
- zxcvbn-ts v4: crackTimesDisplay -> crackTimes.*.display
- cron-parser: parseExpression -> CronExpressionParser.parse
- jose v6: KeyLike -> CryptoKey
- @huggingface/transformers: TranslationSingle not in main export, add local type
- shiki: use bundledThemesInfo/bundledLanguagesInfo from 'shiki',
  fix BundledThemeInfo/BundledLanguageInfo type annotations
- marked: updated link renderer signature to destructured Token.Link
- vanilla-jsoneditor: use Mode.text enum instead of string literal
- naive-ui: fix mask-closable string->boolean, ColorPickerMode rgba->rgb,
  n-date-picker Date->timestamp, SelectMixedOption missing type field
- UnitsConverter: make converterType prop optional
- @mdit/plugin-align, file-type: add @ts-ignore for moduleResolution
- env.d.ts: add vite-plugin-pwa/client reference for virtual:pwa-register
- computedAsync: provide initialValue to avoid string|undefined type
- flexSearch: use as any/as unknown to resolve UnwrapRefSimple conflicts
- c-monaco-editor: move declare global to non-setup script block
- Various as-cast fixes for serial-console, pdf-concat, parquets-reader,
  firewalld-generator, hash-text, wireguard-config-generator

Crypto/key tools excluded (TODO for follow-up PR).
@mortezaPRK mortezaPRK force-pushed the chore/all-my-stuffs branch from 27b129b to 01f0329 Compare July 6, 2026 14:55
@mortezaPRK mortezaPRK marked this pull request as ready for review July 6, 2026 14:56
@mortezaPRK

Copy link
Copy Markdown
Author

@sharevb I tried to avoid changes as much as I can

There are some disabled rules and overrides in configs, which I'm gonna tackle once this lands

return 'standard';
}
catch (_) {
// Standard cron has 5 fields; AWS EventBridge cron has 6 fields

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose it works since no unit test has changed

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope. it's broken. eventhough the tests are passing, the way rolldown works, import path breaks and doesn't work in runtime

5 other packages are also affected by this apparently. doing some search before comiting the fix.

Thanks for pointing out

@mortezaPRK mortezaPRK Jul 6, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fyi, the issue is ambiguous default. patched affected libs

Comment thread src/tools/crop-image/crop-image.vue Outdated
<n-form-item :label="t('tools.crop-image.texts.background-color')">
<div w-full flex items-center gap-4>
<n-color-picker v-model:value="backgroundColor" :modes="['hex', 'rgba']" class="flex-1" />
<n-color-picker v-model:value="backgroundColor" :modes="['hex', 'rgb']" class="flex-1" />

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why no rgba ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it won't build with rgba:

src/tools/crop-image/crop-image.vue:500:83 - error TS2820: Type '"rgba"' is not assignable to type 'ColorPickerMode'. Did you mean '"rgb"'?

500                   <n-color-picker v-model:value="backgroundColor" :modes="['hex', 'rgba']" class="flex-1" />
                                                                                      ~~~~~~

Rightfully because the type is

export type ColorPickerMode = 'rgb' | 'hsl' | 'hsv' | 'hex';

}
const svg2png = createSvg2png({
fonts: [Base64.toUint8Array(robotoBase64)],
const resvg = new Resvg(await readAsText(uploadedFile), {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supposed to be working as there is no e2e

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep. tested with this address-card-svgrepo-com and got this address-card-svgrepo-com

canvas.width = viewport.width;
container?.appendChild(canvas);
await page.render({
canvas,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suppose to working

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep. tested with this sample.pdf got this output.txt in return


:data="results" bordered striped
pagination
:data="results ?? undefined" bordered striped

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data is not nullable

Type
Record<string, any>[] | null | undefined
is not assignable to type
RowData[] | undefined

:data="results" bordered striped
pagination
:data="results ?? undefined" bordered striped
:pagination="false"

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why disabling pagination

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default value is false apparently (otherwise PaginationProps object should be passed). but reverted to make this pr thinner

if (p && typeof p.progress === 'number') {
// @ts-expect-error: progress check
modelLoadingProgress.value = Math.round(p.progress * 100);
const progress = (p as any).progress;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cannot throw if p is null ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

truuu. fixed

);

ctx.drawImage(rawImageToCanvas(results[0]), 0, 0, canvas.width, canvas.height);
ctx.drawImage(rawImageToCanvas(result), 0, 0, canvas.width, canvas.height);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to check this tool

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested with gratisography-dog-vacation-800x525 and got gratisography-dog-vacation-800x525 jpg

both CPU and GPU backend were tested

<script setup lang="ts">
import { useI18n } from 'vue-i18n';
import type { TranslationPipeline, TranslationSingle } from '@huggingface/transformers';
import type { TranslationPipeline } from '@huggingface/transformers';

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's not needed anymore. I removed TranslationSingle as well. the pipeline now correctly exposes the return type

Comment thread vite.config.ts
},
include: ['isolated-vm', '@lezer/highlight', 'pdfjs-dist', 'onnxruntime-node', 'onnxruntime-web', 'unpdf', 'unpdf/pdfjs', 'image-in-browser', ...(process.env.VERCEL ? ['webcrypto-liner-shim'] : [])],
rolldownOptions: {
treeshake: false,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

top-level-await is removed and treeshaker might remove legit code that used to work before. I'll add it back in another pr. added comment to not forget

@sharevb

sharevb commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Hi @mortezaPRK sounds good, propably needs a rebase

…b#415

Resolve conflicts between our deps upgrade branch and upstream's
independent toolchain upgrade (Vite 8, pnpm 11, oxlint/oxfmt).

Conflict resolutions:
- lint scripts: take upstream's oxlint/oxfmt, drop eslint/prettier
- @antfu/eslint-config, @rushstack/eslint-patch: removed (oxlint replaces)
- @tsconfig/node22 → @tsconfig/node24 (upstream uses Node 24)
- pnpm.patchedDependencies: moved from package.json to pnpm-workspace.yaml
  with our 6 CJS interop patches merged in alongside upstream's 3
- esm-potrace-wasm patch: dropped — new 0.5.0 no longer sets __esModule
- Uint8Array<ArrayBuffer> casts → BlobPart/new Uint8Array() (cleaner)
- permanentStr computed in firewalld-generator: removed, use boolean directly
- jwt-generator watches: take upstream formatting, keep CryptoKey cast (jose v6)
- zxcvbn crackTimes: keep our v4 API (crackTimes.*.display)
- image-converter: keep @resvg/resvg-wasm (we migrated svg2png → resvg)
- @vueuse/head: pin to ^1.3.1 (v2 breaks e2e title assertions)
- All version conflicts in deps: keep our upgraded versions
- html-to-xhtml: restore (child: any) annotation (htmlparser2 v12 nodes
  don't have a shared typed interface, any is correct here)
- torrent-to-magnet: guard Object.entries with ?? {} and re-add ! for
  toMagnetURI (value is non-null when entering the computed)
- tsconfig.app.json: add @noble/ciphers subpath paths mappings so
  vue-tsc can resolve aes/chacha/salsa/utils type declarations
  (package exports only ./aes.js not ./aes, so bundler resolution
  needs explicit tsconfig paths to match the vite alias)
@mortezaPRK

Copy link
Copy Markdown
Author

@sharevb ready

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants