0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 17:34:47 -05:00
deno/runtime/js
Bartek Iwańczuk 930ce20870
feat: deprecate window global (#22057)
This commit deprecates `window` global and adds deprecation
notice on each use of `window`.

We decided to proceed with removal of `window` global variable in Deno
2.0. There's a lot of code
in the wild that uses pattern like this:
```
if (typeof window !== "undefined) {
  ...
}
```
to check if the code is being run in browser. However, this check passes
fine in Deno and
most often libraries that do this check try to access some browser API
that is not available
in Deno, or use DOM APIs (which are also not available in Deno).

This situation has occurred multiple times already
and it's unfeasible to expect the whole ecosystem to migrate to new
check (and even if that
happened there's a ton of code that's already shipped and won't change).

The migration is straightfoward - replace all usages of `window` with
`globalThis` or `self`.
When Deno encounters use of `window` global it will now issue a warning,
steering users
towards required changes:

```
Warning
├ Use of deprecated "window" API.
│
├ This API will be removed in Deno 2.0. Make sure to upgrade to a stable API before then.
│
├ Suggestion: Use `globalThis` or `self` instead.
│
├ Suggestion: You can provide `window` in the current scope with: `const window = globalThis`.
│
└ Stack trace:
  └─ at file:///Users/ib/dev/deno/foo.js:7:1
```

Ref https://github.com/denoland/deno/issues/13367.
2024-01-24 14:20:51 +01:00
..
01_errors.js chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
01_version.ts refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
06_util.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
10_permissions.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
11_workers.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
13_buffer.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
30_os.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
40_fs_events.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
40_http.js refactor: set removal version for Deno.RequestEvent, Deno.HttpConn and Deno.serveHttp() (#22034) 2024-01-23 03:24:03 +00:00
40_process.js feat: Start warning on each use of a deprecated API (#21939) 2024-01-18 23:30:49 +00:00
40_signals.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
40_tty.js feat: Deno.{stdin,stdout,stderr}.isTerminal(), deprecate Deno.isatty() (#22011) 2024-01-24 00:01:56 +01:00
41_prompt.js feat: Deno.{stdin,stdout,stderr}.isTerminal(), deprecate Deno.isatty() (#22011) 2024-01-24 00:01:56 +01:00
90_deno_ns.js feat: deprecate Deno.FsFile constructor and Deno.FsFile.rid (#22072) 2024-01-24 13:36:35 +01:00
98_global_scope_shared.js feat(web): ImageBitmap (#21898) 2024-01-22 12:08:01 +01:00
98_global_scope_window.js feat: deprecate window global (#22057) 2024-01-24 14:20:51 +01:00
98_global_scope_worker.js refactor: use core.ensureFastOps() (#21888) 2024-01-10 15:37:25 -07:00
99_main.js feat: deprecate window global (#22057) 2024-01-24 14:20:51 +01:00
README.md feat: add --location=<href> and globalThis.location (#7369) 2021-01-07 19:06:08 +01:00

Runtime JavaScript Code

This directory contains Deno runtime code written in plain JavaScript.

Each file is a plain, old script, not ES modules. The reason is that snapshotting ES modules is much harder, especially if one needs to manipulate global scope (like in case of Deno).

Each file is prefixed with a number, telling in which order scripts should be loaded into V8 isolate. This is temporary solution and we're striving not to require specific order (though it's not 100% obvious if that's feasible).

Deno Web APIs

This directory facilities Web APIs that are available in Deno.

Please note, that some implementations might not be completely aligned with specification.

Some Web APIs are using ops under the hood, eg. console, performance.

Implemented Web APIs