Commit graph

3236 commits

Author SHA1 Message Date
Mikael Finstad
50e242098b
resolve folder inside shared drive (#6093)
also ignore shortcuts to folders
and simplify

closes #6089

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
2025-12-05 22:45:00 +07:00
Merlijn Vos
943ed7ad56
Upgrade playwright in all packages (#6086)
To resolve security advisories. Should be merged after #6085 

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Upgrades Playwright to 1.57.0 across examples and packages, updating
corresponding yarn.lock entries.
> 
> - **Dependencies**:
> - Bump `playwright` to `1.57.0` in `examples/react/package.json`,
`examples/sveltekit/package.json`, `examples/vue/package.json`,
`packages/@uppy/dashboard/package.json`, and
`packages/@uppy/url/package.json`.
> - Update `yarn.lock` to `playwright@1.57.0` and
`playwright-core@1.57.0`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
fa35f7b7ea. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-12-05 10:27:58 +01:00
Merlijn Vos
3c3034b408
Dedupe dependencies (#6085)
With `yarn dedupe`. New type error surfaced due to new types getting
loaded.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Dedupes dependencies and updates code: aligns S3 presign tests with
checksum behavior, narrows HMAC key type, tweaks AudioOscilloscope
buffer typing, and simplifies Tus success logging.
> 
> - **AWS S3**:
> - Tests: add `requestChecksumCalculation` (from
`@aws-sdk/middleware-flexible-checksums`) to `S3Client` options to match
presign behavior.
> - Impl: change `generateHmacKey` signature to accept `string |
ArrayBuffer` (remove `Uint8Array`).
> - **Audio**:
> - `AudioOscilloscope`: change `dataArray` type to
`Uint8Array<ArrayBuffer>`.
> - **Tus**:
> - Simplify success log to `Download <url>` (remove file name
extraction).
> - **Dependencies**:
>   - Deduplicate/upgrade various packages in lockfile.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5b95865a7c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-12-05 10:22:11 +01:00
github-actions[bot]
5c6337682e
[ci] release (#6087)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/image-generator@1.0.0

### Major Changes

- 5684efa: Introduce @uppy/image-generator to generate images based on a
prompt using Transloadit

### Patch Changes

-   Updated dependencies [5684efa]
-   Updated dependencies [5684efa]
    -   @uppy/provider-views@5.2.1
    -   @uppy/transloadit@5.4.0

## @uppy/locales@5.1.0

### Minor Changes

- 5684efa: Introduce @uppy/image-generator to generate images based on a
prompt using Transloadit

## @uppy/transloadit@5.4.0

### Minor Changes

-   5684efa: Export Assembly, AssemblyError, Client

## uppy@5.2.0

### Minor Changes

- 5684efa: Introduce @uppy/image-generator to generate images based on a
prompt using Transloadit

### Patch Changes

-   Updated dependencies [5684efa]
-   Updated dependencies [5684efa]
-   Updated dependencies [5684efa]
    -   @uppy/provider-views@5.2.1
    -   @uppy/webdav@1.1.1
    -   @uppy/transloadit@5.4.0
    -   @uppy/image-generator@1.0.0
    -   @uppy/locales@5.1.0

## @uppy/provider-views@5.2.1

### Patch Changes

-   5684efa: Refactor internal components

## @uppy/webdav@1.1.1

### Patch Changes

-   5684efa: Refactor internal components
-   Updated dependencies [5684efa]
    -   @uppy/provider-views@5.2.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-04 12:19:08 +01:00
Merlijn Vos
5684efa64e
Introduce @uppy/image-generator (#6056)
Closes #5378 

- Introduce `@uppy/image-generator`, a new plugin to generate images
based on a prompt via Transloadit
- until we have "golden templates" the idea is to just send
[steps](https://transloadit.com/docs/topics/templates/#overruling-templates-at-runtime)
- because we must send steps and since we must use signature
authentication for security, which is signed based on the params we
send, we can't reuse the `assemblyOptions` the consumers is already
passing to `@uppy/transloadit` (if they use that uploaders, not needed).
- Remove `SearchInput` (this component was trying to be too many things,
all with conditional boolean props, which is bad practise) in favor of
`useSearchForm` and reuse this hook in two new components `SearchView`
and `FilterInput`
- Reuse all the styles from `SearchProviderView`. This deviates from the
design in #5378. It felt too inconsistent to me to do another UI here
again. For the initial version, I think it's best to stay consistent and
then redesign with search providers taken into account too.
- Because the service is so slow, I went a bit further with the loading
state to show funny messages that rotate while loading mostly because
users will start thinking it is broken after 5 seconds while it fact we
are still loading. But open to ideas here.

This unfortunately means the integration for the consumer is not as lean
and pretty as you would hope. On the upside, it does give them complete
freedom.

```ts
.use(ImageGenerator, {
  assemblyOptions: async (prompt) => {
    const res = await fetch(`/assembly-options?prompt=${encodeURIComponent(prompt)}`)
    return res.json()
  }
})
```

on the consumer's server:

```ts
import crypto from 'node:crypto'

const utcDateString = (ms) => {
  return new Date(ms)
    .toISOString()
    .replace(/-/g, '/')
    .replace(/T/, ' ')
    .replace(/\.\d+Z$/, '+00:00')
}

// expire 1 hour from now (this must be milliseconds)
const expires = utcDateString(Date.now() + 1 * 60 * 60 * 1000)
const authKey = 'YOUR_TRANSLOADIT_KEY'
const authSecret = 'YOUR_TRANSLOADIT_SECRET'

const params = JSON.stringify({
  auth: {
    key: authKey,
    expires,
  },
  // can not contain any more steps, the only step must be /image/generate
  steps: {
    generated_image: { // can be named different
      robot: '/image/generate',
      result: true, // mandatory
      aspect_ratio: '2:3', // up to them
      model: 'flux-1.1-pro-ultra', // up to them
      prompt, // mandatory
      num_outputs: 2, // up to them
    },
  },
})
const signatureBytes = crypto.createHmac('sha384', authSecret).update(Buffer.from(params, 'utf-8'))
// The final signature needs the hash name in front, so
// the hashing algorithm can be updated in a backwards-compatible
// way when old algorithms become insecure.
const signature = `sha384:${signatureBytes.digest('hex')}`

// respond with { params, signature } JSON to the client
```


https://github.com/user-attachments/assets/9217e457-b38b-48ac-81f0-37a417309e98



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds AI image generation plugin using Transloadit, exports low-level
Transloadit APIs, and replaces SearchInput with new
FilterInput/SearchView + useSearchForm across provider views.
> 
> - **New plugin: `@uppy/image-generator`**
> - UI plugin to generate images from a prompt via Transloadit
(`src/index.tsx`, styles, locale, build configs).
> - Integrated into dev Dashboard and included in `uppy` bundle and
global styles.
> - **Provider Views refactor**
> - Remove `SearchInput`; introduce `useSearchForm`, `SearchView`, and
`FilterInput` components.
> - Update `ProviderView`, `SearchProviderView`, and `Webdav` to use new
components; export them from `@uppy/provider-views`.
> - **Transloadit updates**
> - Export `Assembly`, `AssemblyError`, and `Client` from
`@uppy/transloadit`.
>   - Minor internal change: normalize `assemblyOptions.fields`.
> - **Locales**
> - Add strings for image generation and minor additions (e.g.,
`chooseFiles`).
>   - Ensure locales build depends on `@uppy/image-generator`.
> - **Build config**
> - Turborepo: add `uppy#build:css` and hook `image-generator` into
locales build.
> - **Changesets**
> - `@uppy/image-generator` major; `@uppy/transloadit` minor;
`@uppy/locales` and `uppy` minor; `@uppy/provider-views` and
`@uppy/webdav` patch.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4b1b729069. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2025-12-03 11:59:52 +01:00
Merlijn Vos
93ef1ba0e7
Resolve all angular yarn warnings (#6080)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Aligns Angular dependencies (including compiler-cli and animations) to
^19.2.17 in examples/angular and packages/@uppy/angular.
> 
> - **Dependencies**:
>   - `examples/angular/package.json`:
> - Bump `@angular/common`, `core`, `forms`, `platform-browser`,
`platform-browser-dynamic`, `router`, and `@angular/compiler-cli` to
`^19.2.17`.
>   - `packages/@uppy/angular/package.json`:
> - Bump `@angular/animations`, `common`, `compiler`, `core`, `forms`,
`platform-browser`, `platform-browser-dynamic`, `router` to `^19.2.17`.
>     - Update dev dependency `@angular/compiler-cli` to `^19.2.17`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
1af50119f0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-12-03 10:54:21 +01:00
dependabot[bot]
28c27e875c
build(deps): bump validator from 13.15.20 to 13.15.22 (#6082)
Bumps [validator](https://github.com/validatorjs/validator.js) from
13.15.20 to 13.15.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/releases">validator's
releases</a>.</em></p>
<blockquote>
<h2>13.15.22</h2>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2622">#2622</a>
<code>isURL</code>: fix regression with hostnames with ports <a
href="https://github.com/mbtools"><code>@​mbtools</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2616">#2616</a>
<code>isLength</code>: improve handling Unicode variation selectors <a
href="https://github.com/koral"><code>@​koral</code></a>--</li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2621">#2621</a>
<a href="https://github.com/mbtools"><code>@​mbtools</code></a></li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mbtools"><code>@​mbtools</code></a> made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2622">validatorjs/validator.js#2622</a></li>
<li><a href="https://github.com/koral"><code>@​koral</code></a>-- made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2616">validatorjs/validator.js#2616</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/validatorjs/validator.js/compare/13.15.20...13.15.22">https://github.com/validatorjs/validator.js/compare/13.15.20...13.15.22</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md">validator's
changelog</a>.</em></p>
<blockquote>
<h1>13.15.22</h1>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2622">#2622</a>
<code>isURL</code>: fix regression with hostnames with ports <a
href="https://github.com/mbtools"><code>@​mbtools</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2616">#2616</a>
<code>isLength</code>: improve handling Unicode variation selectors <a
href="https://github.com/koral"><code>@​koral</code></a>--</li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2621">#2621</a>
<a href="https://github.com/mbtools"><code>@​mbtools</code></a></li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f2b5c17dbe"><code>f2b5c17</code></a>
maintenance: 2511 release (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2627">#2627</a>)</li>
<li><a
href="d457ecaf55"><code>d457eca</code></a>
fix(isLength): correctly handle Unicode variation selectors (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2616">#2616</a>)</li>
<li><a
href="f2e3633f22"><code>f2e3633</code></a>
docs: add install instructions to contibution guide (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2621">#2621</a>)</li>
<li><a
href="cf401458b8"><code>cf40145</code></a>
fix: URL validation for hostnames with ports (no protocol) (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2622">#2622</a>)</li>
<li><a
href="4af61243ba"><code>4af6124</code></a>
maintenance: 2510 release (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2585">#2585</a>)</li>
<li>See full diff in <a
href="https://github.com/validatorjs/validator.js/compare/13.15.20...13.15.22">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~wikirik">wikirik</a>, a new releaser for
validator since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=validator&package-manager=npm_and_yarn&previous-version=13.15.20&new-version=13.15.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/transloadit/uppy/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-03 10:50:49 +01:00
github-actions[bot]
556e36de4c
[ci] release (#6060)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/audio@3.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/aws-s3@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- ac12f35: Fix: Move completed uploads exclusion logic into uploaders.
This fixes the problem where postprocessors would not run for already
uploaded files.
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/box@4.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/compressor@3.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/core@5.2.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- ac12f35: Fix: Move completed uploads exclusion logic into uploaders.
This fixes the problem where postprocessors would not run for already
uploaded files.
- 4817585: added icon to webdav provider, add css to truncate large file
names
-   Updated dependencies [ac12f35]
    -   @uppy/utils@7.1.4

## @uppy/dashboard@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- cc3ff31: Move golden retriever clear files logic to the restore
function. This prevents race condition bugs when storing state.
-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/thumbnail-generator@5.1.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/drag-drop@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/drop-target@4.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/dropbox@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/facebook@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/form@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/golden-retriever@5.2.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- cc3ff31: Move golden retriever clear files logic to the restore
function. This prevents race condition bugs when storing state.
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/google-drive@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/google-drive-picker@1.1.0

### Minor Changes

- e661348: Allow selecting folders with Google Drive Picker. They will
be recursively resolved.
- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/google-photos-picker@1.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/image-editor@4.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/instagram@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/onedrive@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/provider-views@5.2.0

### Minor Changes

- e661348: Allow selecting folders with Google Drive Picker. They will
be recursively resolved.
- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- 4817585: added icon to webdav provider, add css to truncate large file
names
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/remote-sources@3.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [cc3ff31]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/dashboard@5.1.0
    -   @uppy/google-drive@5.1.0
    -   @uppy/instagram@5.1.0
    -   @uppy/facebook@5.1.0
    -   @uppy/onedrive@5.1.0
    -   @uppy/unsplash@5.1.0
    -   @uppy/dropbox@5.1.0
    -   @uppy/core@5.2.0
    -   @uppy/zoom@4.1.0
    -   @uppy/box@4.1.0
    -   @uppy/url@5.1.0

## @uppy/screen-capture@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/status-bar@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/thumbnail-generator@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/transloadit@5.3.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/tus@5.1.0
    -   @uppy/utils@7.1.4

## @uppy/tus@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- ac12f35: Fix: Move completed uploads exclusion logic into uploaders.
This fixes the problem where postprocessors would not run for already
uploaded files.
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/unsplash@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/url@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/webcam@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/webdav@1.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/xhr-upload@5.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

- ac12f35: Fix: Move completed uploads exclusion logic into uploaders.
This fixes the problem where postprocessors would not run for already
uploaded files.
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/zoom@4.1.0

### Minor Changes

- 79e6460: - Add PluginTypeRegistry and typed getPlugin overload in
@uppy/core
- Register plugin ids across packages so uppy.getPlugin('Dashboard' |
'Webcam') returns the concrete plugin type and removes the need to pass
generics in getPlugin()

### Patch Changes

-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/provider-views@5.2.0
    -   @uppy/core@5.2.0
    -   @uppy/utils@7.1.4

## @uppy/companion@6.2.1

### Patch Changes

- 4817585: added icon to webdav provider, add css to truncate large file
names

## @uppy/locales@5.0.1

### Patch Changes

-   c3c16ae: Improve zh-CN and zh-TW locale
-   8744c4d: Improve Dutch locale
-   Updated dependencies [ac12f35]
    -   @uppy/utils@7.1.4

## @uppy/utils@7.1.4

### Patch Changes

- ac12f35: Fix: Move completed uploads exclusion logic into uploaders.
This fixes the problem where postprocessors would not run for already
uploaded files.

## uppy@5.1.12

### Patch Changes

-   Updated dependencies [cc3ff31]
-   Updated dependencies [c3c16ae]
-   Updated dependencies [8744c4d]
-   Updated dependencies [e661348]
-   Updated dependencies [79e6460]
-   Updated dependencies [ac12f35]
-   Updated dependencies [4817585]
    -   @uppy/dashboard@5.1.0
    -   @uppy/golden-retriever@5.2.0
    -   @uppy/locales@5.0.1
    -   @uppy/provider-views@5.2.0
    -   @uppy/google-drive-picker@1.1.0
    -   @uppy/google-photos-picker@1.1.0
    -   @uppy/thumbnail-generator@5.1.0
    -   @uppy/remote-sources@3.1.0
    -   @uppy/screen-capture@5.1.0
    -   @uppy/google-drive@5.1.0
    -   @uppy/image-editor@4.1.0
    -   @uppy/drop-target@4.1.0
    -   @uppy/transloadit@5.3.0
    -   @uppy/compressor@3.1.0
    -   @uppy/status-bar@5.1.0
    -   @uppy/xhr-upload@5.1.0
    -   @uppy/drag-drop@5.1.0
    -   @uppy/instagram@5.1.0
    -   @uppy/facebook@5.1.0
    -   @uppy/onedrive@5.1.0
    -   @uppy/unsplash@5.1.0
    -   @uppy/dropbox@5.1.0
    -   @uppy/aws-s3@5.1.0
    -   @uppy/webcam@5.1.0
    -   @uppy/webdav@1.1.0
    -   @uppy/audio@3.1.0
    -   @uppy/core@5.2.0
    -   @uppy/form@5.1.0
    -   @uppy/zoom@4.1.0
    -   @uppy/box@4.1.0
    -   @uppy/tus@5.1.0
    -   @uppy/url@5.1.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-02 10:09:28 +01:00
dependabot[bot]
5b680f2f05
build(deps): bump body-parser from 1.20.3 to 1.20.4 (#6070)
Bumps [body-parser](https://github.com/expressjs/body-parser) from
1.20.3 to 1.20.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/body-parser/releases">body-parser's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.1</h2>
<h2>Important: Security</h2>
<ul>
<li>Security fix for <a
href="https://www.cve.org/CVERecord?id=CVE-2025-13466">CVE-2025-13466</a>
(<a
href="https://github.com/expressjs/body-parser/security/advisories/GHSA-wqch-xfxh-vrr4">GHSA-wqch-xfxh-vrr4</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>ci: add dependabot by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/593">expressjs/body-parser#593</a></li>
<li>ci: use full SHAs for github action versions by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/594">expressjs/body-parser#594</a></li>
<li>deps: type-is@^2.0.1 by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/599">expressjs/body-parser#599</a></li>
<li>build(deps): bump actions/setup-node from 4.3.0 to 4.4.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/609">expressjs/body-parser#609</a></li>
<li>build(deps): bump github/codeql-action from 3.28.13 to 3.28.15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/610">expressjs/body-parser#610</a></li>
<li>build(deps-dev): bump eslint-plugin-promise from 6.1.1 to 6.6.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/611">expressjs/body-parser#611</a></li>
<li>build(deps-dev): bump eslint-plugin-import from 2.27.5 to 2.31.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/613">expressjs/body-parser#613</a></li>
<li>build(deps-dev): bump eslint-plugin-markdown from 3.0.0 to 3.0.1 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/612">expressjs/body-parser#612</a></li>
<li>ci: add codeql github workflows scanning by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/614">expressjs/body-parser#614</a></li>
<li>ci: update CodeQL config to ignore the test directory by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/615">expressjs/body-parser#615</a></li>
<li>build(deps): bump actions/download-artifact from 4.2.1 to 4.3.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/620">expressjs/body-parser#620</a></li>
<li>build(deps): bump github/codeql-action from 3.28.15 to 3.28.16 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/619">expressjs/body-parser#619</a></li>
<li>chore(deps): unpin devDependencies by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/616">expressjs/body-parser#616</a></li>
<li>ci: add node.js 24 to test matrix by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/621">expressjs/body-parser#621</a></li>
<li>build(deps): bump github/codeql-action from 3.28.16 to 3.28.18 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/623">expressjs/body-parser#623</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/624">expressjs/body-parser#624</a></li>
<li>chore: add funding to package.json by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/617">expressjs/body-parser#617</a></li>
<li>build(deps): bump github/codeql-action from 3.28.18 to 3.29.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/625">expressjs/body-parser#625</a></li>
<li>build(deps): bump github/codeql-action from 3.29.2 to 3.29.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/630">expressjs/body-parser#630</a></li>
<li>refactor: move common request validation to read function by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/600">expressjs/body-parser#600</a></li>
<li>deps: bump iconv-lite by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/631">expressjs/body-parser#631</a></li>
<li>doc: pull beta changelog forward into 2.0.0 by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/body-parser/pull/629">expressjs/body-parser#629</a></li>
<li>refactor: optimize raw and text parsers with shared passthrough
function by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/634">expressjs/body-parser#634</a></li>
<li>build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/640">expressjs/body-parser#640</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/639">expressjs/body-parser#639</a></li>
<li>build(deps): bump actions/setup-node from 4.4.0 to 5.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/636">expressjs/body-parser#636</a></li>
<li>build(deps): bump actions/download-artifact from 4.3.0 to 5.0.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/637">expressjs/body-parser#637</a></li>
<li>build(deps): bump github/codeql-action from 3.29.7 to 3.30.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/638">expressjs/body-parser#638</a></li>
<li>deps: raw-body@^3.0.1 by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/641">expressjs/body-parser#641</a></li>
<li>deps: debug@^4.4.3 by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/642">expressjs/body-parser#642</a></li>
<li>docs: add iconv-lite 0.7.0 changes to history entry by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/645">expressjs/body-parser#645</a></li>
<li>ci: add node.js 25 to test matrix by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/650">expressjs/body-parser#650</a></li>
<li>perf: move read options outside parser middlewares by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/648">expressjs/body-parser#648</a></li>
<li>test(json): add RFC 7159 whitespace edge cases by <a
href="https://github.com/Ayoub-Mabrouk"><code>@​Ayoub-Mabrouk</code></a>
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/653">expressjs/body-parser#653</a></li>
<li>test: add test for urlencoded invalid defaultCharset by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/643">expressjs/body-parser#643</a></li>
<li>build(deps): bump actions/download-artifact from 5.0.0 to 6.0.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/657">expressjs/body-parser#657</a></li>
<li>build(deps): bump github/codeql-action from 3.30.5 to 4.31.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/656">expressjs/body-parser#656</a></li>
<li>build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/655">expressjs/body-parser#655</a></li>
<li>build(deps): bump actions/setup-node from 5.0.0 to 6.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/654">expressjs/body-parser#654</a></li>
<li>ci: also test on first supported node.js version by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/646">expressjs/body-parser#646</a></li>
<li>chore: switch badges from badgen.net to shields.io by <a
href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/661">expressjs/body-parser#661</a></li>
<li>Remove history.md from being packaged on publish by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/expressjs/body-parser/pull/660">expressjs/body-parser#660</a></li>
<li>Release: 2.2.1 by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/body-parser/pull/659">expressjs/body-parser#659</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/body-parser/blob/master/HISTORY.md">body-parser's
changelog</a>.</em></p>
<blockquote>
<h1>2.2.1 / 2025-11-24</h1>
<ul>
<li>Security fix for <a
href="https://github.com/expressjs/body-parser/security/advisories/GHSA-wqch-xfxh-vrr4">GHSA-wqch-xfxh-vrr4</a></li>
<li>deps:
<ul>
<li>type-is@^2.0.1</li>
<li>iconv-lite@^0.7.0
<ul>
<li>Handle split surrogate pairs when encoding UTF-8</li>
<li>Avoid false positives in <code>encodingExists</code> by using
prototype-less objects</li>
</ul>
</li>
<li>raw-body@^3.0.1</li>
<li>debug@^4.4.3</li>
</ul>
</li>
</ul>
<h1>2.2.0 / 2025-03-27</h1>
<ul>
<li>refactor: normalize common options for all parsers</li>
<li>deps:
<ul>
<li>iconv-lite@^0.6.3</li>
</ul>
</li>
</ul>
<h1>2.1.0 / 2025-02-10</h1>
<ul>
<li>deps:
<ul>
<li>type-is@^2.0.0</li>
<li>debug@^4.4.0</li>
<li>Removed destroy</li>
</ul>
</li>
<li>refactor: prefix built-in node module imports</li>
<li>use the node require cache instead of custom caching</li>
</ul>
<h1>2.0.2 / 2024-10-31</h1>
<ul>
<li>remove <code>unpipe</code> package and use native
<code>unpipe()</code> method</li>
</ul>
<h1>2.0.1 / 2024-09-10</h1>
<ul>
<li>Restore expected behavior <code>extended</code> to
<code>false</code></li>
</ul>
<h1>2.0.0 / 2024-09-10</h1>
<h2>Breaking Changes</h2>
<ul>
<li>Node.js 18 is the minimum supported version</li>
<li><code>req.body</code> is no longer always initialized to
<code>{}</code>
<ul>
<li>it is left <code>undefined</code> unless a body is parsed</li>
</ul>
</li>
<li>Remove deprecated <code>bodyParser()</code> combination
middleware</li>
<li><del><code>urlencoded</code> parser now defaults
<code>extended</code> to <code>false</code></del> as released, this is
not the case, fixed in 2.0.1</li>
<li><code>urlencoded</code> simple parser now uses <code>qs</code>
module instead of <code>querystring</code> module</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d96b63da8d"><code>d96b63d</code></a>
2.2.1 (<a
href="https://redirect.github.com/expressjs/body-parser/issues/659">#659</a>)</li>
<li><a
href="b204886a67"><code>b204886</code></a>
sec: security patch for CVE-2025-13466</li>
<li><a
href="e20e3512e0"><code>e20e351</code></a>
feat: remove <code>history.md</code> from being packaged on publish (<a
href="https://redirect.github.com/expressjs/body-parser/issues/660">#660</a>)</li>
<li><a
href="0d7ce71c84"><code>0d7ce71</code></a>
docs: switch badges from badgen.net to shields.io (<a
href="https://redirect.github.com/expressjs/body-parser/issues/661">#661</a>)</li>
<li><a
href="168afff347"><code>168afff</code></a>
ci: also test on first supported node.js version (<a
href="https://redirect.github.com/expressjs/body-parser/issues/646">#646</a>)</li>
<li><a
href="e539a7121d"><code>e539a71</code></a>
build(deps): bump actions/setup-node from 5.0.0 to 6.0.0 (<a
href="https://redirect.github.com/expressjs/body-parser/issues/654">#654</a>)</li>
<li><a
href="939161277a"><code>9391612</code></a>
build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 (<a
href="https://redirect.github.com/expressjs/body-parser/issues/655">#655</a>)</li>
<li><a
href="57baafb3bb"><code>57baafb</code></a>
build(deps): bump github/codeql-action from 3.30.5 to 4.31.2 (<a
href="https://redirect.github.com/expressjs/body-parser/issues/656">#656</a>)</li>
<li><a
href="a6a088e088"><code>a6a088e</code></a>
build(deps): bump actions/download-artifact from 5.0.0 to 6.0.0 (<a
href="https://redirect.github.com/expressjs/body-parser/issues/657">#657</a>)</li>
<li><a
href="10a114d55d"><code>10a114d</code></a>
test: add test for urlencoded invalid defaultCharset (<a
href="https://redirect.github.com/expressjs/body-parser/issues/643">#643</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/body-parser/compare/1.20.3...v2.2.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=body-parser&package-manager=npm_and_yarn&previous-version=1.20.3&new-version=2.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/transloadit/uppy/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 09:55:11 +01:00
dependabot[bot]
21a8f1a467
build(deps): bump @angular/common from 19.2.14 to 19.2.16 (#6072)
Bumps
[@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common)
from 19.2.14 to 19.2.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases"><code>@​angular/common</code>'s
releases</a>.</em></p>
<blockquote>
<h2>19.2.16</h2>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="05fe6686a9"><img
src="https://img.shields.io/badge/05fe6686a9-fix-green" alt="fix -
05fe6686a9" /></a></td>
<td>prevent XSRF token leakage to protocol-relative URLs</td>
</tr>
</tbody>
</table>
<h2>19.2.15</h2>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="70d0639bc1"><img
src="https://img.shields.io/badge/70d0639bc1-fix-green" alt="fix -
70d0639bc1" /></a></td>
<td>introduce <code>BootstrapContext</code> for improved server
bootstrapping (<a
href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/63639">#63639</a>)</td>
</tr>
</tbody>
</table>
<h2>Breaking Changes</h2>
<h3>core</h3>
<ul>
<li>
<p>The server-side bootstrapping process has been changed to eliminate
the reliance on a global platform injector.</p>
<p>Before:</p>
<pre lang="ts"><code>const bootstrap = () =&gt;
bootstrapApplication(AppComponent, config);
</code></pre>
<p>After:</p>
<pre lang="ts"><code>const bootstrap = (context: BootstrapContext) =&gt;
  bootstrapApplication(AppComponent, config, context);
</code></pre>
<p>A schematic is provided to automatically update
<code>main.server.ts</code> files to pass the
<code>BootstrapContext</code> to the <code>bootstrapApplication</code>
call.</p>
<p>In addition, <code>getPlatform()</code> and
<code>destroyPlatform()</code> will now return <code>null</code> and be
a no-op respectively when running in a server environment.</p>
</li>
</ul>
<p>For more information please see: <a
href="https://github.com/angular/angular/security/advisories/GHSA-68x2-mx4q-78m7">https://github.com/angular/angular/security/advisories/GHSA-68x2-mx4q-78m7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@​angular/common</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>19.2.16 (2025-11-26)</h1>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="05fe6686a9">05fe6686a9</a></td>
<td>fix</td>
<td>prevent XSRF token leakage to protocol-relative URLs</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>21.1.0-next.0 (2025-11-25)</h1>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a
href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="a03c82564d">a03c82564d</a></td>
<td>feat</td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a
href="c25d749d85">c25d749d85</a></td>
<td>feat</td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a
href="c84d372778">c84d372778</a></td>
<td>feat</td>
<td>Support wildcard params with segments trailing (<a
href="https://redirect.github.com/angular/angular/pull/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>20.3.14 (2025-11-25)</h1>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="0276479e7d">0276479e7d</a></td>
<td>fix</td>
<td>prevent XSRF token leakage to protocol-relative URLs</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>21.0.1 (2025-11-25)</h1>
<h3>compiler-cli</h3>
<p>| Commit | Type | Description |</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="05fe6686a9"><code>05fe668</code></a>
fix(http): prevent XSRF token leakage to protocol-relative URLs</li>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/19.2.16/packages/common">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/common&package-manager=npm_and_yarn&previous-version=19.2.14&new-version=19.2.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/transloadit/uppy/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 09:45:53 +01:00
dependabot[bot]
d2637e4d3b
build(deps): bump validator from 13.12.0 to 13.15.20 (#6041)
Bumps [validator](https://github.com/validatorjs/validator.js) from
13.12.0 to 13.15.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/releases">validator's
releases</a>.</em></p>
<blockquote>
<h2>13.15.20</h2>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556">#2556</a>
<code>isMobilePhone</code>: add <code>ar-QA</code> locale <a
href="https://github.com/WardKhaddour"><code>@​WardKhaddour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576">#2576</a>
<code>isAlpha</code>/<code>isAlphanuneric</code>: add Indic locales
(<code>ta-IN</code>, <code>te-IN</code>, <code>kn-IN</code>,
<code>ml-IN</code>, <code>gu-IN</code>, <code>pa-IN</code>,
<code>or-IN</code>) <a
href="https://github.com/avadootharajesh"><code>@​avadootharajesh</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574">#2574</a>
<code>isBase64</code>: improve padding regex <a
href="https://github.com/KrayzeeKev"><code>@​KrayzeeKev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584">#2584</a>
<code>isVAT</code>: improve <code>FR</code> locale <a
href="https://github.com/iamAmer"><code>@​iamAmer</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608">#2608</a>
<code>isURL</code>: improve protocol detection. Resolves CVE-2025-56200
<a href="https://github.com/theofidry"><code>@​theofidry</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563">#2563</a>
<a href="https://github.com/stoneLeaf"><code>@​stoneLeaf</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581">#2581</a>
<a
href="https://github.com/camillobruni"><code>@​camillobruni</code></a></li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/stoneLeaf"><code>@​stoneLeaf</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563">validatorjs/validator.js#2563</a></li>
<li><a
href="https://github.com/WardKhaddour"><code>@​WardKhaddour</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556">validatorjs/validator.js#2556</a></li>
<li><a
href="https://github.com/avadootharajesh"><code>@​avadootharajesh</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576">validatorjs/validator.js#2576</a></li>
<li><a
href="https://github.com/KrayzeeKev"><code>@​KrayzeeKev</code></a> made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574">validatorjs/validator.js#2574</a></li>
<li><a href="https://github.com/iamAmer"><code>@​iamAmer</code></a> made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584">validatorjs/validator.js#2584</a></li>
<li><a
href="https://github.com/camillobruni"><code>@​camillobruni</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581">validatorjs/validator.js#2581</a></li>
<li><a href="https://github.com/theofidry"><code>@​theofidry</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608">validatorjs/validator.js#2608</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/validatorjs/validator.js/compare/13.15.15...13.15.20">https://github.com/validatorjs/validator.js/compare/13.15.15...13.15.20</a></p>
<h2>13.15.15</h2>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><code>isMobilePhone</code>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2514">#2514</a>
improve <code>el-CY</code> locale <a
href="https://github.com/rezk2ll"><code>@​rezk2ll</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2512">#2512</a>
improve <code>pt-AO</code> locale <a
href="https://github.com/renaldodev"><code>@​renaldodev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2502">#2502</a>
improve <code>ar-OM</code> locale <a
href="https://github.com/tomcastro"><code>@​tomcastro</code></a></li>
</ul>
</li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2089">#2089</a>
<code>isIP</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev"><code>@​pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2526">#2526</a>
<code>isPassportNumber</code>: improve <code>CA</code> locale <a
href="https://github.com/evanbechtol"><code>@​evanbechtol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2491">#2491</a>
<code>isBase64</code>: improve validation based on RFC4648 <a
href="https://github.com/aseyfpour"><code>@​aseyfpour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2479">#2479</a>
<code>isPostalCode</code>: improve <code>FR</code> locale <a
href="https://github.com/Rajput-Balram"><code>@​Rajput-Balram</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2088">#2088</a>
<code>isBefore</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev"><code>@​pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2346">#2346</a>
<code>isRgbColor</code>: allow second digit in rgba alpha value <a
href="https://github.com/controlol"><code>@​controlol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2453">#2453</a>
<code>isIP</code>: improve IPv6 regex <a
href="https://github.com/ShreySinha02"><code>@​ShreySinha02</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2052">#2052</a>
<code>isPostalCode</code>: add <code>PK</code> locale <a
href="https://github.com/mateeni-dev"><code>@​mateeni-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2529">#2529</a>
<code>isPostalCode</code>: improve <code>TW</code> locale <a
href="https://github.com/Crocsx"><code>@​Crocsx</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2550">#2550</a>
<code>isPassportNumber</code>: improve <code>US</code> locale <a
href="https://github.com/yitzchak-schechter"><code>@​yitzchak-schechter</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2553">#2553</a>
<code>isUUID</code>: add <code>loose</code> option <a
href="https://github.com/bc-m"><code>@​bc-m</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2551">#2551</a>
<code>isPostalCode</code>: add <code>BD</code> locale <a
href="https://github.com/tanvirrb"><code>@​tanvirrb</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2555">#2555</a>
<code>isLicensePlate</code>: improve <code>pt-PT</code> locale <a
href="https://github.com/castrosu"><code>@​castrosu</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2372">#2372</a>
<a
href="https://github.com/EmersonRabelo"><code>@​EmersonRabelo</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2538">#2538</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2539">#2539</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2540">#2540</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2549">#2549</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2537">#2537</a>
<a href="https://github.com/sgress454"><code>@​sgress454</code></a></li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md">validator's
changelog</a>.</em></p>
<blockquote>
<h1>13.15.20</h1>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556">#2556</a>
<code>isMobilePhone</code>: add <code>ar-QA</code> locale <a
href="https://github.com/WardKhaddour"><code>@​WardKhaddour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576">#2576</a>
<code>isAlpha</code>/<code>isAlphanuneric</code>: add Indic locales
(<code>ta-IN</code>, <code>te-IN</code>, <code>kn-IN</code>,
<code>ml-IN</code>, <code>gu-IN</code>, <code>pa-IN</code>,
<code>or-IN</code>) <a
href="https://github.com/avadootharajesh"><code>@​avadootharajesh</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574">#2574</a>
<code>isBase64</code>: improve padding regex <a
href="https://github.com/KrayzeeKev"><code>@​KrayzeeKev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584">#2584</a>
<code>isVAT</code>: improve <code>FR</code> locale <a
href="https://github.com/iamAmer"><code>@​iamAmer</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608">#2608</a>
<code>isURL</code>: improve protocol detection. Resolves CVE-2025-56200
<a href="https://github.com/theofidry"><code>@​theofidry</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563">#2563</a>
<a href="https://github.com/stoneLeaf"><code>@​stoneLeaf</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581">#2581</a>
<a
href="https://github.com/camillobruni"><code>@​camillobruni</code></a></li>
</ul>
</li>
</ul>
<h1>13.15.15</h1>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><code>isMobilePhone</code>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2514">#2514</a>
improve <code>el-CY</code> locale <a
href="https://github.com/rezk2ll"><code>@​rezk2ll</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2512">#2512</a>
improve <code>pt-AO</code> locale <a
href="https://github.com/renaldodev"><code>@​renaldodev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2502">#2502</a>
improve <code>ar-OM</code> locale <a
href="https://github.com/tomcastro"><code>@​tomcastro</code></a></li>
</ul>
</li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2089">#2089</a>
<code>isIP</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev"><code>@​pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2526">#2526</a>
<code>isPassportNumber</code>: improve <code>CA</code> locale <a
href="https://github.com/evanbechtol"><code>@​evanbechtol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2491">#2491</a>
<code>isBase64</code>: improve validation based on RFC4648 <a
href="https://github.com/aseyfpour"><code>@​aseyfpour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2479">#2479</a>
<code>isPostalCode</code>: improve <code>FR</code> locale <a
href="https://github.com/Rajput-Balram"><code>@​Rajput-Balram</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2088">#2088</a>
<code>isBefore</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev"><code>@​pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2346">#2346</a>
<code>isRgbColor</code>: allow second digit in rgba alpha value <a
href="https://github.com/controlol"><code>@​controlol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2453">#2453</a>
<code>isIP</code>: improve IPv6 regex <a
href="https://github.com/ShreySinha02"><code>@​ShreySinha02</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2052">#2052</a>
<code>isPostalCode</code>: add <code>PK</code> locale <a
href="https://github.com/mateeni-dev"><code>@​mateeni-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2529">#2529</a>
<code>isPostalCode</code>: improve <code>TW</code> locale <a
href="https://github.com/Crocsx"><code>@​Crocsx</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2550">#2550</a>
<code>isPassportNumber</code>: improve <code>US</code> locale <a
href="https://github.com/yitzchak-schechter"><code>@​yitzchak-schechter</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2553">#2553</a>
<code>isUUID</code>: add <code>loose</code> option <a
href="https://github.com/bc-m"><code>@​bc-m</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2551">#2551</a>
<code>isPostalCode</code>: add <code>BD</code> locale <a
href="https://github.com/tanvirrb"><code>@​tanvirrb</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2555">#2555</a>
<code>isLicensePlate</code>: improve <code>pt-PT</code> locale <a
href="https://github.com/castrosu"><code>@​castrosu</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2372">#2372</a>
<a
href="https://github.com/EmersonRabelo"><code>@​EmersonRabelo</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2538">#2538</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2539">#2539</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2540">#2540</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2549">#2549</a>
<a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2537">#2537</a>
<a href="https://github.com/sgress454"><code>@​sgress454</code></a></li>
</ul>
</li>
</ul>
<h1>13.15.0</h1>
<h3>New Features / Validators</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2399">#2399</a>
<code>isISO31661Numeric</code> <a
href="https://github.com/RobinvanderVliet"><code>@​RobinvanderVliet</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2294">#2294</a>
<code>isULID</code> <a
href="https://github.com/arafatkn"><code>@​arafatkn</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2215">#2215</a>
<code>isISO15924</code> <a
href="https://github.com/xDivisionByZerox"><code>@​xDivisionByZerox</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="30d4fe02c1"><code>30d4fe0</code></a>
13.15.20</li>
<li><a
href="cbef5088f0"><code>cbef508</code></a>
fix(isURL): improve protocol detection. Resolves CVE-2025-56200 (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2608">#2608</a>)</li>
<li><a
href="6f436be369"><code>6f436be</code></a>
Fix typo in validators.test.js (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2581">#2581</a>)</li>
<li><a
href="3c857088d5"><code>3c85708</code></a>
Fix: correct French VAT (FR) validation regex and add tests (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2584">#2584</a>)</li>
<li><a
href="eee525cd11"><code>eee525c</code></a>
<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2491">#2491</a>
<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2573">#2573</a>
Simplify isBase64 to prevent stack overflow (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2574">#2574</a>)</li>
<li><a
href="abcc8ecb85"><code>abcc8ec</code></a>
feat(isAlpha, isAlphanumeric): add support for Indic locales (ta-IN,
te-IN, k...</li>
<li><a
href="72573b3d1d"><code>72573b3</code></a>
Add Qatar phone number validation (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2556">#2556</a>)</li>
<li><a
href="243f6c5fe4"><code>243f6c5</code></a>
docs(isMACAddress): improve ambiguous option description (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2563">#2563</a>)</li>
<li><a
href="3847c6f901"><code>3847c6f</code></a>
maintenance: 2505 release (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2560">#2560</a>)</li>
<li><a
href="9e503840d7"><code>9e50384</code></a>
feat(isLicensePlate): Updated isLicensePlate to accept real pt-PT
license pla...</li>
<li>Additional commits viewable in <a
href="https://github.com/validatorjs/validator.js/compare/13.12.0...13.15.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=validator&package-manager=npm_and_yarn&previous-version=13.12.0&new-version=13.15.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/transloadit/uppy/network/alerts).

</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 09:33:32 +01:00
Mikael Finstad
cc3ff31d59
move golden retriever clear files logic (#6076)
into #restore instead.
we currently clear files when state transitions to all files complete,
however there's an issue with that where if progress events come in
after all files are marked as completed, it will overwrite the
metadataStore, meaning the files that have been cleared will be re-added
after they were cleared. this causes files to be restored (when e.g.
refreshing the browser) when they should not (because they have already
completed). i managed to reproduce this with the google drive picker
plugin (but not with google drive non-picker)

**Tip for review:** hide whitespace changes
2025-12-02 11:29:48 +07:00
Mikael Finstad
e6613488fc
allow selecting folders (#6074)
for google drive #5532

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-02 10:34:03 +07:00
Prakash
4817585b66
@uppy/companion: fix broken icons for webdav provider (#6069)
This fixes #6063.

It should be merged after #6059. Icon issue was fixed but This still
doesn’t fix the thumbnail preview issue, because OwnCloud and Nextcloud
don’t provide enough information about their thumbnail preview
endpoints. The docs aren’t very helpful: they mention how to make a
`PROPFIND` request to get extra metadata (such as has_preview)
[doc_ref](https://docs.nextcloud.com/server/stable/developer_manual/client_apis/WebDAV/basic.html#requesting-properties),
but I couldn’t get it to work with our webdav client.

Even if we did manage to obtain the thumbnail preview URL, it would be a
complicated capability to add, since we’d have to handle each WebDAV
server separately. That would lead to the same problems discussed here:
https://github.com/transloadit/uppy/pull/6059#issuecomment-3564642795 ,
so I don't think we need to spend anymore time on this.

**Before** 
<img width="1238" height="1014" alt="image"
src="https://github.com/user-attachments/assets/378c8b4b-640f-4e5d-9fef-48d255f729f9"
/>


**After** 
<img width="982" height="708" alt="image"
src="https://github.com/user-attachments/assets/7e20b119-c5a9-45dd-a0bd-7ddf95672137"
/>
2025-11-29 01:25:12 +05:30
Mikael Finstad
ac12f35f5b
Move completed uploads exclusion logic (#6058)
into uploader plugins

fixes #6051

also [fix deprecated usage of done
callback](2511142276)
2025-11-24 19:47:45 +07:00
Ryan Wang
c3c16ae069
Update zh_CN and zh_TW locales with new and revised strings (#6064) 2025-11-24 10:16:30 +01:00
Kevin De Bruyn
8744c4dfbb
@uppy/locales: improve Dutch translations (#5979)
Fixed bug in Dutch where fileManagerSelectionType would not work anymore
because {browse} was used instead of {browseFiles} and {browseFolders} +
Reviewed translations

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Refines Dutch locale with corrected translations, adds/updates strings
(including proper `browseFiles`/`browseFolders` placeholders), and
prepares a patch release.
> 
> - **Locales (`packages/@uppy/locales/src/nl_NL.ts`)**:
> - Add and update numerous Dutch strings for uploads, errors,
recording, and UI actions (e.g., `addedNumFiles`,
`dataUploadedOfUnknown`, `uploadStalled`).
> - Replace generic `browse` placeholder with
`browseFiles`/`browseFolders` variants across drop/paste prompts to
align with selection behavior.
> - Improve phrasing/grammar and clarify labels (e.g., encoding, rotate
90°, plugin names, WebDAV input label).
> - **Release**:
> - Add changeset (`.changeset/every-wings-behave.md`) to publish
`@uppy/locales` patch.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
18995ec183. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: kevind <KevinD@infosupport.com>
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
2025-11-17 17:06:29 +01:00
Prakash
79e6460a6c
Make Generics Optional in uppy.getPlugin (#6057)
fixes #6024.

### Problem
- `getPlugin()` defaults to `UnknownPlugin`, so methods like `openModal`
are not visible , since core is not aware of that plugin type

### Proposed change
- Introduce a types-only registry in core:
- `export interface PluginTypeRegistry<M extends Meta, B extends Body>
{}`
- Overload `getPlugin` to return a precise type when the id is a known
key of the registry.
- add `Dashboard` to  PluginTypeRegistry through module augmentation:
  - `'Dashboard': Dashboard<M, B>`.
- When a project imports from `@uppy/dashboard`, its module augmentation
extends PluginTypeRegistry, adding the correct type into it
- I've added Tests , kept them in a separate file so it's easier to
review , once this approach gets approved I'll add them to
`Uppy.test.ts`

Once this PR gets a positive review I'll add this for other plugins ,
currently only added for `@uppy/dashboard`

**Build with Local tarball can be checked here** 


https://stackblitz.com/~/github.com/qxprakash/uppy-type-test?file=type_test.ts
2025-11-17 18:18:54 +05:30
Prakash
ec75d863ec
@uppy/provider-views: add e2e tests for Server side search (#6015)
Tests added as discussed in
[slack_discussion](https://transloadit.slack.com/archives/C0FMW9PSB/p1759931999124149?thread_ts=1759700542.941939&cid=C0FMW9PSB)

directory structure mocked : 

```
root/ 
├── first/
│   ├── second/
│   │   ├── third/
│   │   │   ├── nested-target.pdf
│   │   │   └── new-file.pdf
│   │   ├── deep-file.txt
│   │   ├── target.pdf
│   │   └── workspace.pdf
│   └── intermediate.doc
├── workspace/
│   └── project/
│       └── code.js
└── readme.md

```

Some of the mocked responses in CompanionHandler.ts aren’t used in the
tests, but I’ve kept them to preserve the legitimacy of the above
directory structure.
2025-11-07 16:50:57 +05:30
Copilot
46f81e2bae
Fix isNetworkError to match MDN spec: readyState === 4 && status === 0 (#6050)
closes #4253

The `isNetworkError` function incorrectly classified XHR states as
network errors. Per MDN, a network error occurs when a request completes
(`readyState === 4`) but has no HTTP status (`status === 0`), indicating
network/CORS/file access failures.

## Changes

- **Logic fix**: Changed from `(xhr.readyState !== 0 && xhr.readyState
!== 4) || xhr.status === 0` to `xhr.readyState === 4 && xhr.status ===
0`
- **Test update**: Removed invalid test expecting `readyState: 2` to be
a network error; added test verifying incomplete requests return `false`

## Example

```typescript
// Before: incorrectly treated in-progress requests as network errors
isNetworkError({ readyState: 2, status: 0 })  // true 

// After: only completed requests with no status are network errors  
isNetworkError({ readyState: 4, status: 0 })  // true ✓
isNetworkError({ readyState: 2, status: 0 })  // false ✓
```

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> Update the isNetworkError function in
packages/@uppy/utils/src/isNetworkError.ts to correctly detect network
errors according to MDN documentation. The new logic should return true
only if xhr.readyState === 4 and xhr.status === 0. The updated
implementation should be:
> 
> function isNetworkError(xhr?: XMLHttpRequest): boolean {
>   if (!xhr) return false
> // finished but status is 0 — usually indicates a network/CORS/file
error
>   return xhr.readyState === 4 && xhr.status === 0
> }
> 
> export default isNetworkError
> 
> No other logic changes are needed. If you find related commentary
(e.g., outdated comments), clarify as needed.


</details>

*This pull request was created as a result of the following prompt from
Copilot chat.*
> Update the isNetworkError function in
packages/@uppy/utils/src/isNetworkError.ts to correctly detect network
errors according to MDN documentation. The new logic should return true
only if xhr.readyState === 4 and xhr.status === 0. The updated
implementation should be:
> 
> function isNetworkError(xhr?: XMLHttpRequest): boolean {
>   if (!xhr) return false
> // finished but status is 0 — usually indicates a network/CORS/file
error
>   return xhr.readyState === 4 && xhr.status === 0
> }
> 
> export default isNetworkError
> 
> No other logic changes are needed. If you find related commentary
(e.g., outdated comments), clarify as needed.

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/transloadit/uppy/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mifi <402547+mifi@users.noreply.github.com>
2025-11-05 13:06:21 +08:00
github-actions[bot]
7551b4cc91
[ci] release (#6049)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/companion@6.2.0

### Minor Changes

- 0c8dd19: New Companion option `uploadHeaders` which can be used to
include a static set of headers with every request sent to all upload
destinations.

## @uppy/dashboard@5.0.4

### Patch Changes

-   5e166a1: Fix form appending for shadow dom
-   Updated dependencies [ad50314]
    -   @uppy/utils@7.1.3

## @uppy/utils@7.1.3

### Patch Changes

-   ad50314: Allow `getSafeFileId` to accept `UppyFile`

## uppy@5.1.11

### Patch Changes

-   Updated dependencies [5e166a1]
    -   @uppy/dashboard@5.0.4

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-03 14:26:07 +01:00
Mikael Finstad
ad50314c50
allow getSafeFileId to accept UppyFile (#6048)
fixes #6033
also convert InternalMetadata to interface (interface is preferred when
possible)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Broaden `getSafeFileId` to accept `UppyFile` and extend types by
converting `InternalMetadata` to an interface with optional
`relativePath`.
> 
> - **utils**:
> - **`getSafeFileId`**: Broadens parameter via new `SafeFileIdBasis` so
it can accept `UppyFile`; call site logic unchanged.
> - **Types**: Convert `InternalMetadata` to an interface and add
optional `relativePath`; propagate through `UppyFile`/`generateFileID`
typings.
> - **Changeset**: Adds patch entry for `@uppy/utils`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
133240fc0f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Merlijn Vos <merlijn@soverin.net>
2025-11-03 20:04:57 +08:00
Mikael Finstad
0c8dd19dc2
Companion option uploadHeaders (#5981)
closes #5921

also improve tests that currently depend on eachother

todo
- [x] docs https://github.com/transloadit/uppy.io/pull/394
2025-11-03 18:34:07 +08:00
Austin Jackson
5e166a101d
@uppy/dashboard: fix form appending for shadow dom (#6031)
Fixes #6028

I've also added `private/dev/dashboard_shadow.html` to more easily test
ShadowDOM-specific bugs.

I looked into writing a test case under
`packages/@uppy/dashboard/src/index.browser.test.ts` but couldn't get it
to work locally on Windows.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Ensure FileCard’s hidden form is appended/cleaned up in the correct
root (Document body or ShadowRoot) using a ref-derived root node, and
add a patch changeset.
> 
> - **@uppy/dashboard – FileCard**:
> - Append hidden `form` to the correct root using `getRootNode()`
(handles Light DOM/iframes via `Document.body`, and Shadow DOM via
`ShadowRoot`).
> - Add `domRef` to root element to detect rendering context; attach
`ref` and update effect accordingly.
>   - Clean up by removing the `form` from its actual `parentNode`.
> - **Release**:
>   - Add changeset for patch: `Fix form appending for shadow dom`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
edf81e871c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Murderlon <merlijn@soverin.net>
2025-11-03 11:16:33 +01:00
github-actions[bot]
b1e33bcef7
[ci] release (#6046)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/provider-views@5.1.2

### Patch Changes

-   46e339a: Add missing lodash dependency

## @uppy/react@5.1.1

### Patch Changes

-   16aa6fe: Add missing useUppyContext export

## uppy@5.1.10

### Patch Changes

-   Updated dependencies [46e339a]
    -   @uppy/provider-views@5.1.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-30 10:10:59 +01:00
Merlijn Vos
46e339a150
@uppy/provider-views: add missing lodash dependency (#6045)
Fixes #6039
2025-10-30 09:59:36 +01:00
Merlijn Vos
16aa6fe941
@uppy/react: export useUppyContext (#6044)
Fixes #6043
2025-10-30 09:59:13 +01:00
github-actions[bot]
76abdfb325
[ci] release (#6029)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/angular@1.1.0

### Minor Changes

- 72d2d68: Remove @uppy/utils and add @uppy/status-bar to
peerDependencies

## @uppy/components@1.1.0

### Minor Changes

- 72d2d68: Add @uppy/{screen-capture,status-bar,webcam} as optional peer
dependencies

### Patch Changes

-   26bf726: Dropzone and FileInput inherit restrictions from @uppy/core

## @uppy/react@5.1.0

### Minor Changes

- 72d2d68: Add @uppy/{screen-capture,status-bar,webcam} as optional peer
dependencies

### Patch Changes

-   86f353d: Remove dashboard export from index.ts
-   Updated dependencies [72d2d68]
-   Updated dependencies [26bf726]
    -   @uppy/components@1.1.0

## @uppy/svelte@5.1.0

### Minor Changes

- 72d2d68: Add @uppy/{screen-capture,status-bar,webcam} as optional peer
dependencies

### Patch Changes

-   Updated dependencies [72d2d68]
-   Updated dependencies [26bf726]
    -   @uppy/components@1.1.0

## @uppy/transloadit@5.2.0

### Minor Changes

- 72d2d68: Remove unused @uppy/{companion-client,provider-views}
dependencies

### Patch Changes

-   Updated dependencies [08b64f9]
    -   @uppy/utils@7.1.2

## @uppy/vue@3.1.0

### Minor Changes

- 72d2d68: Add @uppy/{screen-capture,status-bar,webcam} as optional peer
dependencies

### Patch Changes

-   Updated dependencies [72d2d68]
-   Updated dependencies [26bf726]
    -   @uppy/components@1.1.0

## @uppy/onedrive@5.0.2

### Patch Changes

-   5edcb2e: Fix: Enable `supportsRefreshToken` for OneDrive
-   Updated dependencies [08b64f9]
    -   @uppy/utils@7.1.2

## @uppy/utils@7.1.2

### Patch Changes

- 08b64f9: fix ts issue with generateFileID and
`exactOptionalPropertyTypes`

## uppy@5.1.9

### Patch Changes

-   Updated dependencies [72d2d68]
-   Updated dependencies [5edcb2e]
    -   @uppy/transloadit@5.2.0
    -   @uppy/onedrive@5.0.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-28 10:15:14 +01:00
Merlijn Vos
72d2d68ea3
Fix various deps and peer deps in packages (#6030)
**Fixes**

- `@uppy/components` incorrectly had a lot of packages in `dependencies`
while they should be `peerDependencies`. Also removed `remote-sources`
completely as this drags in a lot of plugins and we don't even need it
there.
- `@uppy/{react,vue,svelte}` now has to have the same `peerDependencies`
as `components` as the requirement has been moved up. We also mark them
as optional, they are only needed if you use a hook such as `useWebcam`
needing `@uppy/webcam`.
- Remove `companion-client` and `provider-views` from `transloadit`.
Those are never used by the package.
- Remove `@uppy/utils` from `@uppy/angular` and `@uppy/react`, we can
just use imports from `core`
- Place `@uppy/status-bar` back in peer deps. This is critical but
forgotten when status bar was put back inside frameworks.

**Implications**
- Moving peer deps to deps in `@uppy/components` now requires people to
install these dependencies. However, they kind of had to anyway before
as we require people to install the plugin on uppy (`.use(Webcam')`) if
you want to use `useWebcam` and if you try to import a dep you did not
install they would have gotten an error already.
- Note: this is not the same situation as with importing dashboard
component from @uppy/react which causes a runtime crash because
@uppy/dashboard is missing. In this case we only depend on _types_, so
we don't have this problem.
2025-10-28 09:55:21 +01:00
Mikael Finstad
08b64f93c3
@uppy/utils: fix type mismatch on getSafeFileId (#6034)
with `exactOptionalPropertyTypes`
fixes #6033
2025-10-27 09:36:17 +01:00
Mikael Finstad
5edcb2e885
enable supportsRefreshToken for onedrive (#6035)
fixes #5995
2025-10-27 09:33:57 +01:00
Prakash
86f353d2fe
@uppy/react: remove dashboard export (#6036)
No need to export it from index.ts, since it’s already exported through
the export maps. Also, it’s an optional peer dependency, we probably
missed this in #5830 , though this might count as a breaking change now
☹️
2025-10-27 09:33:29 +01:00
Merlijn Vos
26bf726412
@uppy/components: inherit restrictions from @uppy/core (#6014)
Closes #5970

AI disclosure: codex made the initial implementation

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2025-10-23 10:10:45 +02:00
github-actions[bot]
55e926c347
[ci] release (#6027)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/status-bar@5.0.2

### Patch Changes

-   8ac1654: Change internal type from `any` to `unknown`.

## @uppy/webcam@5.0.2

### Patch Changes

-   8ac1654: - Remove TagFile type - Use UppyFile instead.
- Split UppyFile into two interfaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile

## @uppy/xhr-upload@5.0.2

### Patch Changes

- 8ac1654: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two interfaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile

## uppy@5.1.8

### Patch Changes

-   Updated dependencies [8ac1654]
-   Updated dependencies [8ac1654]
-   Updated dependencies [8ac1654]
    -   @uppy/status-bar@5.0.2
    -   @uppy/webcam@5.0.2
    -   @uppy/xhr-upload@5.0.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-22 21:21:09 +02:00
github-actions[bot]
2c4727e5f4
[ci] release (#6011)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/aws-s3@5.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/companion-client@5.1.1
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/companion@6.1.1

### Patch Changes

- 6a60ee5: Reject request early instead of crashing on missing
`filename` for /s3/multipart and /s3/params endpoints

## @uppy/companion-client@5.1.1

### Patch Changes

- 0c16fe4: - Split UppyFile into two intefaces distinguished by the
`isRemote` boolean:
    -   LocalUppyFile
    -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/components@1.0.4

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Move `restore-confirmed` from `onUploadStart` event listener to
`startUpload`, else it would cause `restore-confirmed` to be triggered
even if there is no `recoveredState` to recover
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/image-editor@4.0.2

## @uppy/compressor@3.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/core@5.1.1

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`)
- Introduce new field `progress`.`complete`: if there is a
post-processing step, set it to `true` once post processing is complete.
If not, set it to `true` once upload has finished.
- Throw a proper `Nonexistent upload` error message if trying to upload
a non-existent upload, instead of TypeError
    -   Rewrite `Uppy.upload()` - this fixes two bugs:
1. No more duplicate emit call when
this.#restricter.validateMinNumberOfFiles throws (`#informAndEmit` and
`this.emit('error')`)
2. 'restriction-failed' now also gets correctly called when
`checkRequiredMetaFields` check errors.
    -   Don't re-upload completed files #5930
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
    -   Remove TagFile type - Use UppyFile instead.
    -   Make `name` required on UppyFile (it is in reality always set)
- Fix bug: `RestrictionError` sometimes thrown with a `file` property
that was _not_ a `UppyFile`, but a `File`. This would happen if someone
passed a `File` instead of a `MinimalRequiredUppyFile` into
`core.addFile` (which is valid to do according to our API)
    -   Improve some log messages
    -   Simplify Uppy `postprocess-complete` handler
-   Updated dependencies [0c16fe4]
    -   @uppy/utils@7.1.1

## @uppy/dashboard@5.0.3

### Patch Changes

-   0c16fe4: - Remove `restore-canceled` event as it was not being used.
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1
    -   @uppy/provider-views@5.1.1
    -   @uppy/thumbnail-generator@5.0.2

## @uppy/golden-retriever@5.1.1

### Patch Changes

- 0c16fe4: - **Internal inter-package breaking change:** Remove hacky
internal event `restore:get-data` that would send a function as its
event data (to golden retriever for it to call the function to receive
data from it). Add instead `restore:plugin-data-changed` that publishes
data when it changes. This means that **old versions of
`@uppy/transloadit` are not compatible with newest version of
`@uppy/golden-retriever` (and vice versa)**.
    -   Large internal refactor of Golden Retriever
- Use `state-update` handler to trigger save to local storage and blobs,
instead of doing it in various other event handlers (`complete`,
`upload-success`, `file-removed`, `file-editor:complete`, `file-added`).
this way we don't miss any state updates. also simplifies the code a
lot. this fixes:
- Always store blob when it changes - this fixes the bug when using the
compressor plugin, it would store the uncompressed original blob (like
when using image editor plugin)
- Add back throttle: but throttling must happen on the actual local
storage save calls inside MetaDataStore, _not_ the handleStateUpdate
function, so we don't miss any state updates (and end up with
inconsistent data). Note that there is still a race condition where if
the user removes a file (causing the blob to be deleted), then quickly
reloads the page before the throttled save has happened, the file will
be restored but the blob will be missing, so it will become a ghost.
this is probably not a big problem though. need to disable throttling
when running tests (add it as an option to the plugin)
    -   Fix implicit `any` types in #restore filesWithBlobs
- Don't error when saving indexedDB file that already exists (make it
idempotent)
- Fix bug: Golden Retriever was not deleting from IndexedDbStore if
ServiceWorkerStore exists, causing a storage leak
    -   Remove unused Golden Retriever cleanup.ts
- Clean up stored files on `complete` event _only_ if _all_ files
succeeded (no failed files). this allows the user to retry failed files
if they get interrupted - fixes #5927, closes #5955
- Only set `isGhost` for non-successful files - it doesn't make sense
for successfully uploaded files to be ghosted because they're already
done. #5930
- Add `upload-success` event handler `handleFileUploaded`: this handler
will remove blobs of files that have successfully uploaded. this
prevents leaking blobs when an upload with multiple files gets
interrupted (but some files have uploaded successfully), because
`#handleUploadComplete` (which normally does the cleanup) doesn't get
called untill _all_ files are complete.
- Fix `file-editor:complete` potential race condition: it would delete
and add at the same time (without first awaiting delete operation)
    -   Fix: Don't double `setState` when restoring
    -   Improve types in golden retriever and MetaDataStore
- MetaDataStore: move old state expiry to from `constructor` to `load()`
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/image-editor@4.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/provider-views@5.1.1

### Patch Changes

-   0c16fe4: - Rename `getTagFile` to `companionFileToUppyFile`
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/thumbnail-generator@5.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/transloadit@5.1.3

### Patch Changes

- 0c16fe4: - **Internal inter-package breaking change:** Remove hacky
internal event `restore:get-data` that would send a function as its
event data (to golden retriever for it to call the function to receive
data from it). Add instead `restore:plugin-data-changed` that publishes
data when it changes. This means that **old versions of
`@uppy/transloadit` are not compatible with newest version of
`@uppy/golden-retriever` (and vice versa)**.
- Minor internal refactoring in order to make sure that we will always
emit `restore:plugin-data-changed` whenever assembly state changes
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/companion-client@5.1.1
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1
    -   @uppy/provider-views@5.1.1
    -   @uppy/tus@5.0.2

## @uppy/tus@5.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/companion-client@5.1.1
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/url@5.0.2

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`). This means we have to add null checks in some packages
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/companion-client@5.1.1
    -   @uppy/core@5.1.1
    -   @uppy/utils@7.1.1

## @uppy/utils@7.1.1

### Patch Changes

- 0c16fe4: - Make `file.data` nullable - Because for ghosts it will be
`undefined` and we don't have any type to distinguish ghosts from other
(local) files. This caused a crash, because we didn't check for
`undefined` everywhere (when trying to store a blob that was
`undefined`)
- Introduce new field `progress`.`complete`: if there is a
post-processing step, set it to `true` once post processing is complete.
If not, set it to `true` once upload has finished.
- Throw a proper `Nonexistent upload` error message if trying to upload
a non-existent upload, instead of TypeError
    -   Rewrite `Uppy.upload()` - this fixes two bugs:
1. No more duplicate emit call when
this.#restricter.validateMinNumberOfFiles throws (`#informAndEmit` and
`this.emit('error')`)
2. 'restriction-failed' now also gets correctly called when
`checkRequiredMetaFields` check errors.
    -   Don't re-upload completed files #5930
- Split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
        -   LocalUppyFile
        -   RemoteUppyFile
    -   Remove TagFile type - Use UppyFile instead.
    -   Make `name` required on UppyFile (it is in reality always set)
- Fix bug: `RestrictionError` sometimes thrown with a `file` property
that was _not_ a `UppyFile`, but a `File`. This would happen if someone
passed a `File` instead of a `MinimalRequiredUppyFile` into
`core.addFile` (which is valid to do according to our API)
    -   Improve some log messages
    -   Simplify Uppy `postprocess-complete` handler

## uppy@5.1.7

### Patch Changes

-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
-   Updated dependencies [0c16fe4]
    -   @uppy/aws-s3@5.0.2
    -   @uppy/companion-client@5.1.1
    -   @uppy/compressor@3.0.2
    -   @uppy/core@5.1.1
    -   @uppy/dashboard@5.0.3
    -   @uppy/golden-retriever@5.1.1
    -   @uppy/image-editor@4.0.2
    -   @uppy/provider-views@5.1.1
    -   @uppy/thumbnail-generator@5.0.2
    -   @uppy/transloadit@5.1.3
    -   @uppy/tus@5.0.2
    -   @uppy/url@5.0.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-17 20:24:52 +02:00
Mikael Finstad
0c16fe44b9
Golden retriever refactor and UppyFile type improvements (#5978)
Probably best reviewed commit by commit.

I also split UppyFile into two intefaces distinguished by the `isRemote`
boolean:
- LocalUppyFile
- RemoteUppyFile

Also:
- Removed the TagFile type
- Don't re-upload completed files - fixes #5930
- Clean up stored files on `complete` event *only* if *all* files
succeeded (no failed files). this allows the user to retry failed files
if the browser & upload get interrupted - fixes #5927, closes #5955
- Only set `isGhost` for non-successful files. it doesn't make sense for
successfully uploaded files to be ghosted because they're already done.
#5930

fixes #6013

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2025-10-17 23:17:40 +08:00
Mikael Finstad
1fbb95da2b
improve test scripts (#6016)
1. don't run browser tests in `headless` mode by default when running
tests individually. because when writing/running tests, i usually want
to see/debug using the browser. if one still wants headless, it's as
easy as: `yarn workspace @uppy/xyz test --browser.headless`. instead
append the `headless` mode when running all tests together - it doesn't
make sense to run all projects' tests without headless mode.
2. don't always run browser tests with `watch`: watch doesn't make sense
when running multiple projects in turbo (one project just blocks the
rest watching for changes). if one still wants to run a single test with
watch mode, it's as easy as: `yarn workspace @uppy/xyz test --watch`
3. don't cache test runs: if I run the `test` command. most of the time
I want to actually run tests (not skip them if they already ran last
time)
4. output logs when running tests. it's nice to see that the tests have
actually run (also on CI)
5. when running all tests, use concurrency=1, because the tests also
includes e2e tests, running multiple browsers in parallel really just
makes the test fail on my computer (and uses a lot of memory)

current output is not very informative:

<img width="840" height="410" alt="Screenshot 2025-10-17 at 17 09 55"
src="https://github.com/user-attachments/assets/9ca8278c-f160-478c-87e2-2ef861ba4bb1"
/>

with this PR:

<img width="672" height="495" alt="Screenshot 2025-10-17 at 17 20 49"
src="https://github.com/user-attachments/assets/1339c96b-d0c1-42e1-8fa1-d5a4a36ea42a"
/>
2025-10-17 22:07:01 +08:00
Merlijn Vos
6a60ee517d
@uppy/companion: fix crash on missing filename (#6010)
Better to reject early than generating a filename when missing which
could break assumptions we don't foresee.
2025-10-14 18:47:03 +02:00
Nik Graf
9d2c7a997f
upgrade cookie-parser (#6005)
cookie-parser 1.4.7 uses a version cookie that fixed this security issue
https://github.com/advisories/GHSA-pxg6-pf52-xh8x
2025-10-09 19:27:29 +08:00
github-actions[bot]
91c6bfd7d7
[ci] release (#6008)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/companion@6.1.0

### Minor Changes

- 5ba2c1c: Introduce the concept of server-side search and add support
for it for the Dropbox provider. Previously, only client-side filtering
in the currently viewed folder was possible, which was limiting. Now
users using Companion with Dropbox can perform a search across their
entire account.

## @uppy/companion-client@5.1.0

### Minor Changes

- 5ba2c1c: Introduce the concept of server-side search and add support
for it for the Dropbox provider. Previously, only client-side filtering
in the currently viewed folder was possible, which was limiting. Now
users using Companion with Dropbox can perform a search across their
entire account.

### Patch Changes

-   Updated dependencies [5ba2c1c]
    -   @uppy/utils@7.1.0
    -   @uppy/core@5.1.0

## @uppy/core@5.1.0

### Minor Changes

- 5ba2c1c: Introduce the concept of server-side search and add support
for it for the Dropbox provider. Previously, only client-side filtering
in the currently viewed folder was possible, which was limiting. Now
users using Companion with Dropbox can perform a search across their
entire account.

### Patch Changes

-   Updated dependencies [5ba2c1c]
    -   @uppy/utils@7.1.0

## @uppy/provider-views@5.1.0

### Minor Changes

- 5ba2c1c: Introduce the concept of server-side search and add support
for it for the Dropbox provider. Previously, only client-side filtering
in the currently viewed folder was possible, which was limiting. Now
users using Companion with Dropbox can perform a search across their
entire account.

### Patch Changes

-   Updated dependencies [5ba2c1c]
    -   @uppy/utils@7.1.0
    -   @uppy/core@5.1.0

## @uppy/utils@7.1.0

### Minor Changes

- 5ba2c1c: Introduce the concept of server-side search and add support
for it for the Dropbox provider. Previously, only client-side filtering
in the currently viewed folder was possible, which was limiting. Now
users using Companion with Dropbox can perform a search across their
entire account.

## uppy@5.1.6

### Patch Changes

-   Updated dependencies [5ba2c1c]
    -   @uppy/companion-client@5.1.0
    -   @uppy/provider-views@5.1.0
    -   @uppy/core@5.1.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-08 22:01:27 +02:00
Prakash
5ba2c1c8d3
Server side search @uppy/Companion (#6003)
## High Level View

<img width="3367" height="1576" alt="Global Search (1)"
src="https://github.com/user-attachments/assets/134e8658-5cbd-4816-87a1-3bd42603089d"
/>


- Search View replicated , through minimal components `<GlobalSearchView
/>` and `<SearchResultItem />`
- Both components take only the minimal state needed to render the
search view no dependency on PartialTree. search response from companion
server is directly passed to GlobalSearchView for file state.
- `#buildPath` creates missing parent nodes in partialTree (if any) and
opens the folder in the normal way using a minimal wrapper over
openFolder function.
- Both interactions : "checking a file/folder" and "opening a folder"
use the same function `#buildPath` to build the path, then use the
already existing `openFolder` and `toggleCheckBox`.
- Max search results: 1000. Pagination removed for simplicity (can be
added later).
- From a UI/UX standpoint, all functionality works as expected.
- The only limitation is occasional inconsistent partial checked states
when the tree isn’t fully built — unavoidable since percolateUp and
percolateDown require the complete partialTree to sync state correctly.
This issue isn’t critical; even in other cases, we already mark folders
"checked" whereas they may be empty if not yet fetched.
- I figured out it's better to just derive the checkedState from
PartialTree , and then pass it to `GlobalSearchView` rather than keep it
separate and then worrying about checked state syncs across two views
for UI to look right.
- IMO this is the most simplest approach I could come up with. without
sacrificing any user functionality and it carefully reuses all the util
code.

---------

Co-authored-by: Merlijn Vos <merlijn@soverin.net>
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2025-10-08 21:18:17 +02:00
github-actions[bot]
b7605df940
[ci] release (#6002)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/transloadit@5.1.2

### Patch Changes

- 201c422: Move `transloadit` into `dependencies` so types are resolved
without users having to install it manually.

## uppy@5.1.5

### Patch Changes

-   Updated dependencies [201c422]
    -   @uppy/transloadit@5.1.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-03 10:28:20 +02:00
Merlijn Vos
201c42294d
@uppy/transloadit: move transloadit into dependencies (#6001)
Fixes #6000
2025-10-02 18:10:53 +02:00
github-actions[bot]
98d8d1d0a1
[ci] release (#5997)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/transloadit@5.1.1

### Patch Changes

- bc2d0ed: Ensure final assembly status fetch uses `assembly_ssl_url` so
Transloadit requests stay on HTTPS.

## uppy@5.1.4

### Patch Changes

-   Updated dependencies [bc2d0ed]
    -   @uppy/transloadit@5.1.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-02 12:27:42 +02:00
Kevin van Zonneveld
bc2d0ed235
Use assembly_ssl_url for final status fetch (#5996)
## Summary
- ensure the final Transloadit status fetch prefers `assembly_ssl_url`
- add a changeset preparing the patch release

## Testing
- yarn workspace @uppy/transloadit test
2025-10-02 12:23:07 +02:00
github-actions[bot]
5bf7520dfa
[ci] release (#5988)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/transloadit@5.1.0

### Minor Changes

- 6f76412: Use the `transloadit` Node.js SDK's exported Assembly types
instead of our inaccurate, hand-rolled ones.

    **Warning**

The names of our type exports here are unchanged, but they do pack
slightly different types. Overall you'll find they are both more
complete, but also more loose. Runtime wise there should be no breaking
changes, but it could mean you may need a couple of extra guards to make
TypeScript happy.

A cool benefit from the new types tho, is that Robot parameters will now
autocomplete for you.
More information on these types, and our approach rolling them out, can
be found here
<https://transloadit.com/blog/2025/09/nodejs-sdk-v4/#our-approach-to-type-retrofitting>

## @uppy/components@1.0.3

### Patch Changes

-   34639ba: add imageThumbnail prop to FilesList/FilesGrid

## @uppy/svelte@5.0.2

### Patch Changes

- da754b7: Fix props reactivity. Now when the value of a prop you pass
to a component changes, it is actually picked up.
-   Updated dependencies [34639ba]
    -   @uppy/components@1.0.3

## uppy@5.1.3

### Patch Changes

-   Updated dependencies [6f76412]
    -   @uppy/transloadit@5.1.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-01 16:22:05 +02:00
Merlijn Vos
da754b7fa4
@uppy/svelte: fix props reactivity (#5991)
The fix in #5872 was not enough

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Fix props reactivity in Svelte components by updating plugin options
reactively and add example + tests validating Dashboard/StatusBar prop
changes.
> 
> - **Svelte components (@uppy/svelte)**:
> - **Reactivity fix**: In `components/Dashboard.svelte`,
`DashboardModal.svelte`, and `StatusBar.svelte`, switch reactive updates
from `uppy.setOptions(...)` to `plugin?.setOptions(...)` to ensure
`props` changes are applied.
> - **Examples/Tests**:
> - Add `examples/sveltekit/src/components/test/props-reactivity.svelte`
demonstrating toggling `props` for `Dashboard` and `StatusBar`.
> - Extend `examples/sveltekit/test/index.test.ts` with tests verifying
Dashboard `ariaDisabled` toggles and StatusBar `hideUploadButton`
reactivity.
> - **Changeset**:
>   - Patch release for `"@uppy/svelte"` noting props reactivity fix.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5a9c4ef00f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-10-01 16:16:47 +02:00
Murderlon
b97e1a8593
Use workspace:* for all packages in packages/uppy 2025-10-01 11:55:38 +02:00
Kevin van Zonneveld
6f764122a9
Re-use types from the Transloadit node-sdk (#5992)
The schemas and types that we have in the Transloadit Node.js SDK v4 are
used in our API's system tests. We've also ran hundreds of thousands of
Assemblies through them, ever loosening them, until they all fit. This
means the schemas are fairly wide, but model the reality of our 15 year
old API. In the future we will make schema failures in the API fatal (as
already is the case with system tests), and we don't want to break
production traffic when we do. So we accept wider schemas than are
beautiful, and once the schemas control what is allowed in all places,
we gradually evolve the API and schemas towards being more pretty in
lockstep.

More on this in
https://transloadit.com/blog/2025/09/nodejs-sdk-v4/#our-approach-to-type-retrofitting

For uppy this means, we'll need a few more guards than we had with our
handrolled types, that actually assumed things that turned out to be not
true in all cases. Not all Assembly status responses have an id or a url
for one example. There are for instance particular errors (by Node,
Nginx, Haproxy) that would not return those. The added guards will
ensure we don't break deeply inside customer code.

This PR was completely written by gpt-5-codex, which means it was faster
and of higher quality than if I had handrolled it as a founder
unfamiliar with this codebase, but despite of that, please still review
my contribution with as much care as you would normally :)

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
2025-09-30 19:15:39 +02:00
Merlijn Vos
34639ba768
@uppy/components: add imageThumbnail prop to FilesList/FilesGrid (#5985)
Ref:
https://community.transloadit.com/t/is-it-possible-to-display-the-thumbnail-of-the-images-in-the-listbox/17711/3

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds an optional `imageThumbnail` prop to `FilesList` and `FilesGrid`
to control passing `images` to `Thumbnail` (default true in grid).
> 
> - **Components (@uppy/components)**
>   - **FilesGrid (`packages/@uppy/components/src/FilesGrid.tsx`)**
>     - Add `imageThumbnail?: boolean` prop (defaults to `true`).
> - Pass `images={imageThumbnail}` to `Thumbnail` instead of hardcoded
`images`.
>   - **FilesList (`packages/@uppy/components/src/FilesList.tsx`)**
>     - Add `imageThumbnail?: boolean` prop.
>     - Pass `images={imageThumbnail}` to `Thumbnail` (32px preview).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
a3ab18558e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2025-09-29 11:03:12 +02:00