
* chore: bump Node.js to v22.9.0
* build: drop base64 dep in GN build
https://github.com/nodejs/node/pull/52856
* build,tools: make addons tests work with GN
https://github.com/nodejs/node/pull/50737
* fs: add fast api for InternalModuleStat
https://github.com/nodejs/node/pull/51344
* src: move package_json_reader cache to c++
https://github.com/nodejs/node/pull/50322
* crypto: disable PKCS#1 padding for privateDecrypt
https://github.com/nodejs-private/node-private/pull/525
* src: move more crypto code to ncrypto
https://github.com/nodejs/node/pull/54320
* crypto: ensure valid point on elliptic curve in SubtleCrypto.importKey
https://github.com/nodejs/node/pull/50234
* src: shift more crypto impl details to ncrypto
https://github.com/nodejs/node/pull/54028
* src: switch crypto APIs to use Maybe<void>
https://github.com/nodejs/node/pull/54775
* crypto: remove DEFAULT_ENCODING
https://github.com/nodejs/node/pull/47182
* deps: update libuv to 1.47.0
https://github.com/nodejs/node/pull/50650
* build: fix conflict gyp configs
https://github.com/nodejs/node/pull/53605
* lib,src: drop --experimental-network-imports
https://github.com/nodejs/node/pull/53822
* esm: align sync and async load implementations
https://github.com/nodejs/node/pull/49152
* esm: remove unnecessary toNamespacedPath calls
https://github.com/nodejs/node/pull/53656
* module: detect ESM syntax by trying to recompile as SourceTextModule
https://github.com/nodejs/node/pull/52413
* test: adapt debugger tests to V8 11.4
https://github.com/nodejs/node/pull/49639
* lib: update usage of always on Atomics API
https://github.com/nodejs/node/pull/49639
* test: adapt test-fs-write to V8 internal changes
https://github.com/nodejs/node/pull/49639
* test: adapt to new V8 trusted memory spaces
https://github.com/nodejs/node/pull/50115
* deps: update libuv to 1.47.0
https://github.com/nodejs/node/pull/50650
* src: use non-deprecated v8::Uint8Array::kMaxLength
https://github.com/nodejs/node/pull/50115
* src: update default V8 platform to override functions with location
https://github.com/nodejs/node/pull/51362
* src: add missing TryCatch
https://github.com/nodejs/node/pull/51362
* lib,test: handle new Iterator global
https://github.com/nodejs/node/pull/51362
* src: use non-deprecated version of CreateSyntheticModule
https://github.com/nodejs/node/pull/50115
* src: remove calls to recently deprecated V8 APIs
https://github.com/nodejs/node/pull/52996
* src: use new V8 API to define stream accessor
https://github.com/nodejs/node/pull/53084
* src: do not use deprecated V8 API
https://github.com/nodejs/node/pull/53084
* src: do not use soon-to-be-deprecated V8 API
https://github.com/nodejs/node/pull/53174
* src: migrate to new V8 interceptors API
https://github.com/nodejs/node/pull/52745
* src: use supported API to get stalled TLA messages
https://github.com/nodejs/node/pull/51362
* module: print location of unsettled top-level await in entry points
https://github.com/nodejs/node/pull/51999
* test: make snapshot comparison more flexible
https://github.com/nodejs/node/pull/54375
* test: do not set concurrency on parallelized runs
https://github.com/nodejs/node/pull/52177
* src: move FromNamespacedPath to path.cc
https://github.com/nodejs/node/pull/53540
* test: adapt to new V8 trusted memory spaces
https://github.com/nodejs/node/pull/50115
* build: add option to enable clang-cl on Windows
https://github.com/nodejs/node/pull/52870
* chore: fixup patch indices
* chore: add/remove changed files
* esm: drop support for import assertions
https://github.com/nodejs/node/pull/54890
* build: compile with C++20 support
https://github.com/nodejs/node/pull/52838
* deps: update nghttp2 to 1.62.1
https://github.com/nodejs/node/pull/52966
* src: parse inspector profiles with simdjson
https://github.com/nodejs/node/pull/51783
* build: add GN build files
https://github.com/nodejs/node/pull/47637
* deps,lib,src: add experimental web storage
https://github.com/nodejs/node/pull/52435
* build: add missing BoringSSL dep
* src: rewrite task runner in c++
https://github.com/nodejs/node/pull/52609
* fixup! build: add GN build files
* src: stop using deprecated fields of v8::FastApiCallbackOptions
https://github.com/nodejs/node/pull/54077
* fix: shadow variable
* build: add back incorrectly removed SetAccessor patch
* fixup! fixup! build: add GN build files
* crypto: fix integer comparison in crypto for BoringSSL
* src,lib: reducing C++ calls of esm legacy main resolve
https://github.com/nodejs/node/pull/48325
* src: move more crypto_dh.cc code to ncrypto
https://github.com/nodejs/node/pull/54459
* chore: fixup GN files for previous commit
* src: move more crypto code to ncrypto
https://github.com/nodejs/node/pull/54320
* Fixup Perfetto ifdef guards
* fix: missing electron_natives dep
* fix: node_use_node_platform = false
* fix: include src/node_snapshot_stub.cc in libnode
* 5507047: [import-attributes] Remove support for import assertions
5507047
* fix: restore v8-sandbox.h in filenames.json
* fix: re-add original-fs generation logic
* fix: ngtcp2 openssl dep
* test: try removing NAPI_VERSION undef
* chore(deps): bump @types/node
* src: move more crypto_dh.cc code to ncrypto
https://github.com/nodejs/node/pull/54459
* esm: remove unnecessary toNamespacedPath calls
https://github.com/nodejs/node/pull/53656
* buffer: fix out of range for toString
https://github.com/nodejs/node/pull/54553
* lib: rewrite AsyncLocalStorage without async_hooks
https://github.com/nodejs/node/pull/48528
* module: print amount of load time of a cjs module
https://github.com/nodejs/node/pull/52213
* test: skip reproducible snapshot test on 32-bit
https://github.com/nodejs/node/pull/53592
* fixup! src: move more crypto_dh.cc code to ncrypto
* test: adjust emittedUntil return type
* chore: remove redundant wpt streams patch
* fixup! chore(deps): bump @types/node
* fix: gn executable name on Windows
* fix: build on Windows
* fix: rename conflicting win32 symbols in //third_party/sqlite
On Windows otherwise we get:
lld-link: error: duplicate symbol: sqlite3_win32_write_debug
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:47987
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_sleep
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48042
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_is_nt
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48113
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_utf8_to_unicode
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48470
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_unicode_to_utf8
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48486
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_mbcs_to_utf8
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48502
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_mbcs_to_utf8_v2
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48518
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_utf8_to_mbcs
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48534
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
lld-link: error: duplicate symbol: sqlite3_win32_utf8_to_mbcs_v2
>>> defined at .\..\..\third_party\electron_node\deps\sqlite\sqlite3.c:48550
>>> obj/third_party/electron_node/deps/sqlite/sqlite/sqlite3.obj
>>> defined at obj/third_party/sqlite\chromium_sqlite3/sqlite3_shim.obj
* docs: remove unnecessary ts-expect-error after types bump
* src: move package resolver to c++
https://github.com/nodejs/node/pull/50322
* build: set ASAN detect_container_overflow=0
https://github.com/nodejs/node/issues/55584
* chore: fixup rebase
* test: disable failing ASAN test
* win: almost fix race detecting ESRCH in uv_kill
https://github.com/libuv/libuv/pull/4341
74 lines
3 KiB
Diff
74 lines
3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Attard <marshallofsound@electronjs.org>
|
|
Date: Wed, 26 Jul 2023 17:03:15 -0700
|
|
Subject: fix: do not resolve electron entrypoints
|
|
|
|
This wastes fs cycles and can result in strange behavior if this path actually exists on disk
|
|
|
|
diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js
|
|
index 463e76cb1abc0c2fdddba4db2ca2e00f7c591e12..d7bc3c35c77b5bf9ec122b38248d0cf1f4d2a548 100644
|
|
--- a/lib/internal/modules/esm/load.js
|
|
+++ b/lib/internal/modules/esm/load.js
|
|
@@ -111,7 +111,7 @@ async function defaultLoad(url, context = kEmptyObject) {
|
|
source = null;
|
|
format ??= 'builtin';
|
|
} else if (format !== 'commonjs' || defaultType === 'module') {
|
|
- if (source == null) {
|
|
+ if (format !== 'electron' && source == null) {
|
|
({ responseURL, source } = await getSource(urlInstance, context));
|
|
context = { __proto__: context, source };
|
|
}
|
|
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
|
|
index 06b31af80ebbfbf35ec787a94f345775eb512ebf..deca5aa4b8829ba9921440fcb5c285a10e40c8f0 100644
|
|
--- a/lib/internal/modules/esm/translators.js
|
|
+++ b/lib/internal/modules/esm/translators.js
|
|
@@ -354,6 +354,9 @@ function cjsPreparseModuleExports(filename, source) {
|
|
if (module && module[kModuleExportNames] !== undefined) {
|
|
return { module, exportNames: module[kModuleExportNames] };
|
|
}
|
|
+ if (filename === 'electron') {
|
|
+ return { module, exportNames: new SafeSet(['default', ...Object.keys(module.exports)]) };
|
|
+ }
|
|
const loaded = Boolean(module);
|
|
if (!loaded) {
|
|
module = new CJSModule(filename);
|
|
diff --git a/lib/internal/modules/run_main.js b/lib/internal/modules/run_main.js
|
|
index 1e1a1ea46fc6c1b43cad4038ab0d9cdf21d6ba3d..95e2fa5479ea31559fdb5a2e03515f243b231b75 100644
|
|
--- a/lib/internal/modules/run_main.js
|
|
+++ b/lib/internal/modules/run_main.js
|
|
@@ -2,6 +2,7 @@
|
|
|
|
const {
|
|
StringPrototypeEndsWith,
|
|
+ StringPrototypeStartsWith,
|
|
globalThis,
|
|
} = primordials;
|
|
|
|
@@ -26,6 +27,13 @@ const {
|
|
* @param {string} main - Entry point path
|
|
*/
|
|
function resolveMainPath(main) {
|
|
+ // For built-in modules used as the main entry point we _never_
|
|
+ // want to waste cycles resolving them to file paths on disk
|
|
+ // that actually might exist
|
|
+ if (typeof main === 'string' && StringPrototypeStartsWith(main, 'electron/js2c')) {
|
|
+ return main;
|
|
+ }
|
|
+
|
|
const defaultType = getOptionValue('--experimental-default-type');
|
|
/** @type {string} */
|
|
let mainPath;
|
|
@@ -63,6 +71,13 @@ function resolveMainPath(main) {
|
|
* @param {string} mainPath - Absolute path to the main entry point
|
|
*/
|
|
function shouldUseESMLoader(mainPath) {
|
|
+ // For built-in modules used as the main entry point we _never_
|
|
+ // want to waste cycles resolving them to file paths on disk
|
|
+ // that actually might exist
|
|
+ if (typeof mainPath === 'string' && StringPrototypeStartsWith(mainPath, 'electron/js2c')) {
|
|
+ return false;
|
|
+ }
|
|
+
|
|
if (getOptionValue('--experimental-default-type') === 'module') { return true; }
|
|
|
|
/**
|