镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

More robust type checking - #578

Merged
jonkoops merged 2 commits into
Stuk:mainfrom
siefkenj:patch-1
Sep 8, 2026
Merged

jonkoops merged 2 commits into
Stuk:mainfrom
siefkenj:patch-1

Conversation

@siefkenj

@siefkenj siefkenj commented Jan 13, 2019 •

Copy link
Copy Markdown
Contributor

If input comes from a different context, it might not be an instance of window.Uint8Array or window.ArrayBuffer. In particular, when reading a file in a Firefox extension using OS.File.read, a Uint8Array is returned that does not pass the x instanceof Uint8Array test.

See https://stackoverflow.com/questions/15251879/how-to-check-if-a-variable-is-a-typed-array-in-javascript for more details.

Fixes #759

@jimmywarting

Copy link
Copy Markdown
Contributor
  • Think we should handle any typed array
  • treat Buffer as a Uint8Array (since it's inherited and has everything Uint8Array has)
  • and use ArrayBuffer.isView(obj) to handle any typed array not just Uint8Array

I think Buffer is just an garbage wrapper and I'm not the only who think that

I think all Buffer related stuff should go away since this is both a node and a web thingy and i wrote a best practises on how to write good cross platform stuff https://github.com/cross-js/cross-js#dont-use-buffer

siefkenj and others added 2 commits September 8, 2026 19:07
If `input` comes from a different context, it might not be an instance of `window.Uint8Array` or `window.ArrayBuffer`. In particular, when reading a file in a Firefox extension using `OS.File.read`, a `Uint8Array` is returned that does not pass the `x instanceof Uint8Array` test.

See https://stackoverflow.com/questions/15251879/how-to-check-if-a-variable-is-a-typed-array-in-javascript for more details.
Node tests use vm.runInNewContext to simulate sandboxed environments.
Browser tests use an iframe realm for the same instanceof failure mode.

Fixes Stuk#759

Signed-off-by: Jon Koops <jonkoops@gmail.com>

@jonkoops jonkoops left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thanks for the fix! I added cross-realm regression tests and confirmed this resolves the issue. LGTM

@jonkoops
jonkoops merged commit d38fda5 into Stuk:main Sep 8, 2026
23 checks passed
jonkoops added a commit that referenced this pull request Sep 8, 2026
Release preparation for 3.10.2

- Fix cross-realm binary type detection in `getTypeOf`. Fixes
[#759](#759) (see
[#578](#578))
- Add missing types for `JSZip.defaults`. Fixes
[#690](#690) (see
[#927](#927))
- Fix Blob support in Node.js 18 and up. Fixes
[#941](#941) (see
[#955](#955))
- Fix grunt build rebundling existing dist via browser field (see
[#971](#971))
- Move all continuous integration to GitHub Actions (see
[#942](#942))
- Upgrade Playwright to the latest version (see
[#940](#940))
- Create FUNDING.yml

Signed-off-by: Jon Koops <jonkoops@gmail.com>
renovate Bot added a commit to cigaleapp/cigale that referenced this pull request Sep 24, 2026
##### [v3.10.2](https://github.com/Stuk/jszip/blob/HEAD/CHANGES.md#v3102-2026-09-09)

- Fix cross-realm binary type detection in `getTypeOf`. Fixes [#759](Stuk/jszip#759) (see [#578](Stuk/jszip#578))
- Add missing types for `JSZip.defaults`. Fixes [#690](Stuk/jszip#690) (see [#927](Stuk/jszip#927))
- Fix Blob support in Node.js 18 and up. Fixes [#941](Stuk/jszip#941) (see [#955](Stuk/jszip#955))
renovate Bot added a commit to cigaleapp/cigale that referenced this pull request Sep 27, 2026
##### [v3.10.2](https://github.com/Stuk/jszip/blob/HEAD/CHANGES.md#v3102-2026-09-09)

- Fix cross-realm binary type detection in `getTypeOf`. Fixes [#759](Stuk/jszip#759) (see [#578](Stuk/jszip#578))
- Add missing types for `JSZip.defaults`. Fixes [#690](Stuk/jszip#690) (see [#927](Stuk/jszip#927))
- Fix Blob support in Node.js 18 and up. Fixes [#941](Stuk/jszip#941) (see [#955](Stuk/jszip#955))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

getTypeOf() Can't infer datatype in Firefox Addon context

3 participants