2023-02-14 11:38:45 -05:00
|
|
|
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
refactor(core): include_js_files! 'dir' option doesn't change specifiers (#18019)
This commit changes "include_js_files!" macro from "deno_core"
in a way that "dir" option doesn't cause specifiers to be rewritten
to include it.
Example:
```
include_js_files! {
dir "js",
"hello.js",
}
```
The above definition required embedders to use:
`import ... from "internal:<ext_name>/js/hello.js"`.
But with this change, the "js" directory in which the files are stored
is an implementation detail, which for embedders results in:
`import ... from "internal:<ext_name>/hello.js"`.
The directory the files are stored in, is an implementation detail and
in some cases might result in a significant size difference for the
snapshot. As an example, in "deno_node" extension, we store the
source code in "polyfills" directory; which resulted in each specifier
to look like "internal:deno_node/polyfills/<module_name>", but with
this change it's "internal:deno_node/<module_name>".
Given that "deno_node" has over 100 files, many of them having
several import specifiers to the same extension, this change removes
10 characters from each import specifier.
2023-03-04 21:31:38 -05:00
|
|
|
import * as asyncWrap from "internal:deno_node/internal_binding/async_wrap.ts";
|
|
|
|
import * as buffer from "internal:deno_node/internal_binding/buffer.ts";
|
|
|
|
import * as caresWrap from "internal:deno_node/internal_binding/cares_wrap.ts";
|
|
|
|
import * as constants from "internal:deno_node/internal_binding/constants.ts";
|
|
|
|
import * as crypto from "internal:deno_node/internal_binding/crypto.ts";
|
|
|
|
import * as pipeWrap from "internal:deno_node/internal_binding/pipe_wrap.ts";
|
|
|
|
import * as streamWrap from "internal:deno_node/internal_binding/stream_wrap.ts";
|
|
|
|
import * as stringDecoder from "internal:deno_node/internal_binding/string_decoder.ts";
|
|
|
|
import * as symbols from "internal:deno_node/internal_binding/symbols.ts";
|
|
|
|
import * as tcpWrap from "internal:deno_node/internal_binding/tcp_wrap.ts";
|
|
|
|
import * as types from "internal:deno_node/internal_binding/types.ts";
|
|
|
|
import * as udpWrap from "internal:deno_node/internal_binding/udp_wrap.ts";
|
|
|
|
import * as util from "internal:deno_node/internal_binding/util.ts";
|
|
|
|
import * as uv from "internal:deno_node/internal_binding/uv.ts";
|
2023-02-14 11:38:45 -05:00
|
|
|
|
|
|
|
const modules = {
|
|
|
|
"async_wrap": asyncWrap,
|
|
|
|
buffer,
|
|
|
|
"cares_wrap": caresWrap,
|
2023-03-05 09:53:42 -05:00
|
|
|
config: {},
|
2023-02-14 11:38:45 -05:00
|
|
|
constants,
|
2023-03-05 09:53:42 -05:00
|
|
|
contextify: {},
|
|
|
|
credentials: {},
|
2023-02-14 11:38:45 -05:00
|
|
|
crypto,
|
2023-03-05 09:53:42 -05:00
|
|
|
errors: {},
|
|
|
|
fs: {},
|
|
|
|
"fs_dir": {},
|
|
|
|
"fs_event_wrap": {},
|
|
|
|
"heap_utils": {},
|
|
|
|
"http_parser": {},
|
|
|
|
icu: {},
|
|
|
|
inspector: {},
|
|
|
|
"js_stream": {},
|
|
|
|
messaging: {},
|
|
|
|
"module_wrap": {},
|
|
|
|
"native_module": {},
|
|
|
|
natives: {},
|
|
|
|
options: {},
|
|
|
|
os: {},
|
|
|
|
performance: {},
|
2023-02-14 11:38:45 -05:00
|
|
|
"pipe_wrap": pipeWrap,
|
2023-03-05 09:53:42 -05:00
|
|
|
"process_methods": {},
|
|
|
|
report: {},
|
|
|
|
serdes: {},
|
|
|
|
"signal_wrap": {},
|
|
|
|
"spawn_sync": {},
|
2023-02-14 11:38:45 -05:00
|
|
|
"stream_wrap": streamWrap,
|
|
|
|
"string_decoder": stringDecoder,
|
|
|
|
symbols,
|
2023-03-05 09:53:42 -05:00
|
|
|
"task_queue": {},
|
2023-02-14 11:38:45 -05:00
|
|
|
"tcp_wrap": tcpWrap,
|
2023-03-05 09:53:42 -05:00
|
|
|
timers: {},
|
|
|
|
"tls_wrap": {},
|
|
|
|
"trace_events": {},
|
|
|
|
"tty_wrap": {},
|
2023-02-14 11:38:45 -05:00
|
|
|
types,
|
|
|
|
"udp_wrap": udpWrap,
|
2023-03-05 09:53:42 -05:00
|
|
|
url: {},
|
2023-02-14 11:38:45 -05:00
|
|
|
util,
|
|
|
|
uv,
|
2023-03-05 09:53:42 -05:00
|
|
|
v8: {},
|
|
|
|
worker: {},
|
|
|
|
zlib: {},
|
2023-02-14 11:38:45 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
export type BindingName = keyof typeof modules;
|
|
|
|
|
|
|
|
export function getBinding(name: BindingName) {
|
|
|
|
const mod = modules[name];
|
|
|
|
if (!mod) {
|
|
|
|
throw new Error(`No such module: ${name}`);
|
|
|
|
}
|
|
|
|
return mod;
|
|
|
|
}
|