SHA256
1
0
forked from nodejs/nodejs22

Compare commits

...

3 Commits

Author SHA256 Message Date
9b135d3fd8 enable test on TW 2025-04-11 13:43:57 +02:00
5c1896eb1e Fix unit tests with hardcoded node executable name 2025-04-10 17:54:52 +02:00
1a101b54bc update to v22.14.0 2025-04-10 12:19:15 +02:00
8 changed files with 106 additions and 84 deletions

View File

@@ -1,41 +1,41 @@
ed52239294ad517fbe91a268146d5d2aa8a17d2d62d64873e43219078ba71c4e node-v22.13.1-aix-ppc64.tar.gz
be127be1d98cad94c56f46245d0f2de89934d300028694456861a6d5ac558bf3 node-v22.13.1-arm64.msi
97483ff4361d239a56d038c6335767a56a291e78c10f07446f463f05d9d19b89 node-v22.13.1-darwin-arm64.tar.gz
9c169a9369f6c667a4de6b14c7492065adbae0fa830ef4c666bea2c53ac7b576 node-v22.13.1-darwin-arm64.tar.xz
6fdcc8412d434664238b0651ebd5ad55d15a08598ff42dcb6d9cf1d434a6c4be node-v22.13.1-darwin-x64.tar.gz
cbc49a2f179ec51f3a7d49f91b05e16db2ea8ea4ca586e1e370d19661becf0eb node-v22.13.1-darwin-x64.tar.xz
f9cde9ace585c3979f1b4ee247914f35fae6e7b7eabc6a40961f89ad39e78964 node-v22.13.1-headers.tar.gz
2722236564df6d33b1d953f23e21bf5247b62b38ea9000b47c655ee3a9a440e7 node-v22.13.1-headers.tar.xz
911d9c07af38c82be22cd0a3db613aabc578ba940b35380aeedadd6d48070bc1 node-v22.13.1-linux-arm64.tar.gz
0a237c413ccbab920640438bf6e1a32edb19845bdc21f0e1cd5b91545ce1c126 node-v22.13.1-linux-arm64.tar.xz
82be9fa5e74ee29d7342d38306dbee19d3e2239b5b753870c04fd03768916a7e node-v22.13.1-linux-armv7l.tar.gz
f2be8dca2a7a518f6d187aa4b18abbeeafd71096a6d95f73f4d8bc0f8d2394ea node-v22.13.1-linux-armv7l.tar.xz
e4d34550d791cc809cfbfe8d0e3082634796add404169484b0849fbae0714576 node-v22.13.1-linux-ppc64le.tar.gz
377a7a1ea66f39251e1657f419e9404d526fcca9910620d0ecf0a870c6308f6b node-v22.13.1-linux-ppc64le.tar.xz
56375cf2c827a425d708bd0322fd635b6f2038e272468395f4e160e1ea4ae91e node-v22.13.1-linux-s390x.tar.gz
22da01dbcead3ef7e69de6c1310a1c5c485039631f731a6ff0c35530cf5c811b node-v22.13.1-linux-s390x.tar.xz
666148b9fe0c7e1301cc1b029e33a45e9e4a893f68d2d2bb1cc88a931a88a004 node-v22.13.1-linux-x64.tar.gz
0d2a5af33c7deab5555c8309cd3f373446fe1526c1b95833935ab3f019733b3b node-v22.13.1-linux-x64.tar.xz
620a7b4008aa0406678987ce2dd22458a38bae163fe7c69fd243f1204725e6c2 node-v22.13.1.pkg
e7d5b1e84e7f3c3cebda81e2b138469eef41ba4ecf16a87fd15fc3f7afa3f701 node-v22.13.1.tar.gz
cfce282119390f7e0c2220410924428e90dadcb2df1744c0c4a0e7baae387cc2 node-v22.13.1.tar.xz
b2c537f24a725d7e6058d23b1b89bbf31e6c7299b51ac31e9c25dc3c6a61e2d9 node-v22.13.1-win-arm64.7z
db6d3d28e1b34acdbd9db7bac5ec37980e07e48a6a2edcd3747d605fc8a5468e node-v22.13.1-win-arm64.zip
d495abe2ae53962065fad979814259735fd90a4e03c6b94ccd3e32bc933aeda5 node-v22.13.1-win-x64.7z
398a61e250a5584a62a5959e2f69f5d597fc83f1a5ebe3ed8fff29ba39d55f14 node-v22.13.1-win-x64.zip
3c87ddd4aac7f980ed11caf97942bd87a647ce61d644ca08321508836b3d1899 node-v22.13.1-win-x86.7z
504ed03c8596dfeabddfcd0736f987be93e3330a5c690306dedacef8880b592c node-v22.13.1-win-x86.zip
821566022dc3b262ac2f76598ee4f46003a6edafe5dadb84e5fbc7daaa1a78c7 node-v22.13.1-x64.msi
79c36ea6aa2ede10b416bdae55b568ab31798ede2697440b266312bba95ef580 node-v22.13.1-x86.msi
afb7dcd60c7557843e5c2777205564950544297ba0588faa2aae573ccb735767 win-arm64/node.exe
ddec69aded8f826efbef8b4af09baa451f5ed8b057e84d836accf33de04d2d7a node-v22.14.0-aix-ppc64.tar.gz
d733bc14c2da6b69af4d89117b39d33cc1a7c7a75a21cf9fa4bfe81884db70e5 node-v22.14.0-arm64.msi
e9404633bc02a5162c5c573b1e2490f5fb44648345d64a958b17e325729a5e42 node-v22.14.0-darwin-arm64.tar.gz
4e845cb71b4e897289312743b2e31c405a8a48720655404d82a4dce23fc43527 node-v22.14.0-darwin-arm64.tar.xz
6698587713ab565a94a360e091df9f6d91c8fadda6d00f0cf6526e9b40bed250 node-v22.14.0-darwin-x64.tar.gz
deb5b211c25f3f803cd49c1c3fc3964e6c3725546d7d9608d994270388dcbf02 node-v22.14.0-darwin-x64.tar.xz
715aedf641a024efdeeccd545ce4acdc4759155e08c32efdfe9069921fcfa86b node-v22.14.0-headers.tar.gz
63406b4329c080a8ff3e5c8794cae82ad9ef1ebb8b8d8c73f82d2077810e0eaf node-v22.14.0-headers.tar.xz
8cf30ff7250f9463b53c18f89c6c606dfda70378215b2c905d0a9a8b08bd45e0 node-v22.14.0-linux-arm64.tar.gz
08bfbf538bad0e8cbb0269f0173cca28d705874a67a22f60b57d99dc99e30050 node-v22.14.0-linux-arm64.tar.xz
1cadf5aee7d71b6f0921235faec05e42d908ba5e8a76959f0697968fe0741204 node-v22.14.0-linux-armv7l.tar.gz
32804b6d7fca03e668765e91ea892dd329ff928d02e6c61d4b3b3c4afac178c6 node-v22.14.0-linux-armv7l.tar.xz
a0818ece898175db71a1df81dc4fdc3794a14b03a3901894a88e465e745ea429 node-v22.14.0-linux-ppc64le.tar.gz
70aeb7b16dabce5395b1ed383f60416c8d8ed693927003f948c0b5390a35ce5f node-v22.14.0-linux-ppc64le.tar.xz
0e4232e4b3c0312a391bb9c0c36524623b3b616cac5d0338d743ae4228f984d1 node-v22.14.0-linux-s390x.tar.gz
a666b8ce5e442dbdbb5a2280f29caad603a723017aac5acf5baff5b16e648981 node-v22.14.0-linux-s390x.tar.xz
9d942932535988091034dc94cc5f42b6dc8784d6366df3a36c4c9ccb3996f0c2 node-v22.14.0-linux-x64.tar.gz
69b09dba5c8dcb05c4e4273a4340db1005abeafe3927efda2bc5b249e80437ec node-v22.14.0-linux-x64.tar.xz
06113f553199227be915d80c191031283622d6363c57c83aad137ff33f9ac9e4 node-v22.14.0-win-arm64.7z
2d71f5f9b2fffa33baa108c07d74b0d24e0c3dd8f441d567772ae0e3dd4b1a22 node-v22.14.0-win-arm64.zip
4c6018bd170ca46bfc7112bc4ca0f43cf55759a0c2bb9fccd50d8f8c3f7bdb14 node-v22.14.0-win-x64.7z
55b639295920b219bb2acbcfa00f90393a2789095b7323f79475c9f34795f217 node-v22.14.0-win-x64.zip
5f7514392d0330c1b0c76e0dd299ac44786139b59231bf3d115f85c9c763bd4f node-v22.14.0-win-x86.7z
4bf00caba7b0f3c7a4e8ee6a5b73049db19b5ee5510473219ae5fb649c2017b6 node-v22.14.0-win-x86.zip
2c0cc97ec64c1e4111362e1e32e0547fd870e4d9c79ec844c117da583f21b386 node-v22.14.0-x64.msi
5e91ec1da6c7de32406f3f7fdd2b8de163e871ecd2ebb466bf1b526e6379755c node-v22.14.0-x86.msi
3931585e6af0785f01af897d31d67b7318e724af07845ffb04d432ab1a4532b4 node-v22.14.0.pkg
6c4e31ed5702dc45cfd8c435af56a36a474427e1bd7afe74c346136060beba8a node-v22.14.0.tar.gz
c609946bf793b55c7954c26582760808d54c16185d79cb2fb88065e52de21914 node-v22.14.0.tar.xz
b37c6950508f266d066deb91abe2050fcd3f19e34c86ca89eed72efb40090b57 win-arm64/node.exe
988eb8c60a5ade17e652dbdb60d56d3c6ad5e599a99ce04932b8c4c86583cdaf win-arm64/node.lib
b19efd6f54283a2c01027f0e74e54563d06495b87efe08d111e1a176afd14d02 win-arm64/node_pdb.7z
0bb490f44fc575dd570326fae9f0a5fca1187bfc342f57a50084ef86aa2e6679 win-arm64/node_pdb.zip
8f6945c55a51c893691534e7163372e4cedb62c8ad80a2a975df3f14a19fba16 win-x64/node.exe
37bf09d40005ba618a49aec998c275c56e390df501c824ed73c87520834de4b3 win-arm64/node_pdb.7z
6d51bdae6ec86490338d22eb133ae34c00be9052455f94cb44d08062097ed02c win-arm64/node_pdb.zip
33b1bc1a8aca11fd5a4f2699e51019c63c0af30cf437701d07af69be7706771b win-x64/node.exe
65e45757c026c93a170743a811ef1b921ae12d6d9dd62d258bbbca0626687626 win-x64/node.lib
2ad1af26e2f78247473e1e05f78fff3be7401f47c327f45602c84dce5d552cc0 win-x64/node_pdb.7z
31099d09933aad429c36071503cd200eb66c41529524ac159873f97d9f097c83 win-x64/node_pdb.zip
0b7071f0a7d90d4e1567d94a37c5d94441a3ca71a4eaa9596bc06e992c06e9c8 win-x86/node.exe
652acb96f8c81f6fb27517f729465a5644c02efd27d60925389323b11cb44ee8 win-x64/node_pdb.7z
b4722c573f3a387de9e259b116cefd36870516947c1048fda425f1641d72a7b9 win-x64/node_pdb.zip
d52f9f1b03eca305dbaa23e251fe612efbb48a99aaeab6ffa073ee1c111b28e0 win-x86/node.exe
79bae10059e833ce7fa4de05e5601034461327e2e7cb75c2144b87d4ab5ac547 win-x86/node.lib
c3fb150e58d16dadd95c24c8a0a4c020a18b3c852b63e36df39587a301512ca4 win-x86/node_pdb.7z
97890935271fe117a745584ca710f0fcd38bbf24b8c920800411df87a3e22dc3 win-x86/node_pdb.zip
2f2313b969b715af1c59aa7d7a84c36f7d09cc5e0c6c6dc9365bad6341e06ae2 win-x86/node_pdb.7z
45edff3492d39ffee520881ab1050afc2b515cb6817285a153291af04af2c668 win-x86/node_pdb.zip

Binary file not shown.

View File

@@ -2,10 +2,10 @@ Author: Adam Majer <amajer@suse.de>
Date: Dec 20 09:18:49 UTC 2017
Summary: Fix CI unit tests framework for OBS building
Index: node-v22.12.0/test/parallel/test-module-loading-globalpaths.js
Index: node-v22.14.0/test/parallel/test-module-loading-globalpaths.js
===================================================================
--- node-v22.12.0.orig/test/parallel/test-module-loading-globalpaths.js
+++ node-v22.12.0/test/parallel/test-module-loading-globalpaths.js
--- node-v22.14.0.orig/test/parallel/test-module-loading-globalpaths.js
+++ node-v22.14.0/test/parallel/test-module-loading-globalpaths.js
@@ -11,6 +11,9 @@ const { addLibraryPath } = require('../c
addLibraryPath(process.env);
@@ -16,10 +16,10 @@ Index: node-v22.12.0/test/parallel/test-module-loading-globalpaths.js
if (process.argv[2] === 'child') {
console.log(require(pkgName).string);
} else {
Index: node-v22.12.0/test/parallel/test-tls-passphrase.js
Index: node-v22.14.0/test/parallel/test-tls-passphrase.js
===================================================================
--- node-v22.12.0.orig/test/parallel/test-tls-passphrase.js
+++ node-v22.12.0/test/parallel/test-tls-passphrase.js
--- node-v22.14.0.orig/test/parallel/test-tls-passphrase.js
+++ node-v22.14.0/test/parallel/test-tls-passphrase.js
@@ -223,7 +223,7 @@ server.listen(0, common.mustCall(functio
}, onSecureConnect());
})).unref();
@@ -29,10 +29,10 @@ Index: node-v22.12.0/test/parallel/test-tls-passphrase.js
// Missing passphrase
assert.throws(function() {
Index: node-v22.12.0/test/parallel/test-repl-envvars.js
Index: node-v22.14.0/test/parallel/test-repl-envvars.js
===================================================================
--- node-v22.12.0.orig/test/parallel/test-repl-envvars.js
+++ node-v22.12.0/test/parallel/test-repl-envvars.js
--- node-v22.14.0.orig/test/parallel/test-repl-envvars.js
+++ node-v22.14.0/test/parallel/test-repl-envvars.js
@@ -2,7 +2,9 @@
// Flags: --expose-internals
@@ -44,11 +44,11 @@ Index: node-v22.12.0/test/parallel/test-repl-envvars.js
const stream = require('stream');
const { describe, test } = require('node:test');
const REPL = require('internal/repl');
Index: node-v22.12.0/Makefile
Index: node-v22.14.0/Makefile
===================================================================
--- node-v22.12.0.orig/Makefile
+++ node-v22.12.0/Makefile
@@ -397,7 +397,6 @@ ADDONS_HEADERS_PREREQS := tools/install.
--- node-v22.14.0.orig/Makefile
+++ node-v22.14.0/Makefile
@@ -399,7 +399,6 @@ ADDONS_HEADERS_PREREQS := tools/install.
$(wildcard deps/uv/include/*/*.h) \
$(wildcard deps/v8/include/*.h) \
$(wildcard deps/v8/include/*/*.h) \
@@ -56,15 +56,15 @@ Index: node-v22.12.0/Makefile
src/node.h src/node_api.h src/js_native_api.h src/js_native_api_types.h \
src/node_api_types.h src/node_buffer.h src/node_object_wrap.h \
src/node_version.h
@@ -570,6 +569,7 @@ test-ci-js: | clear-stalled ## Build and
@@ -593,6 +592,7 @@ test-ci-js: | clear-stalled ## Build and
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
test-ci: LOGLEVEL := info ## Build and test everything (CI).
test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests doc-only
test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests doc-only
+ strip $(NODE_EXE)
out/Release/cctest --gtest_output=xml:out/junit/cctest.xml
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
@@ -750,7 +750,8 @@ apidocs_json = $(addprefix out/,$(apidoc
@@ -787,7 +787,8 @@ apidocs_json = $(addprefix out/,$(apidoc
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
tools/doc/node_modules: tools/doc/package.json
@@ -74,10 +74,10 @@ Index: node-v22.12.0/Makefile
echo "Skipping tools/doc/node_modules (no crypto)"; \
else \
cd tools/doc && $(call available-node,$(run-npm-ci)) \
Index: node-v22.12.0/tools/test.py
Index: node-v22.14.0/tools/test.py
===================================================================
--- node-v22.12.0.orig/tools/test.py
+++ node-v22.12.0/tools/test.py
--- node-v22.14.0.orig/tools/test.py
+++ node-v22.14.0/tools/test.py
@@ -1386,7 +1386,7 @@ def BuildOptions():
result.add_option("-s", "--suite", help="A test suite",
default=[], action="append")
@@ -87,23 +87,23 @@ Index: node-v22.12.0/tools/test.py
result.add_option("--arch", help='The architecture to run tests for',
default='none')
result.add_option("--snapshot", help="Run the tests with snapshot turned on",
Index: node-v22.12.0/test/parallel/test-crypto-dh.js
Index: node-v22.14.0/test/parallel/test-crypto-dh.js
===================================================================
--- node-v22.12.0.orig/test/parallel/test-crypto-dh.js
+++ node-v22.12.0/test/parallel/test-crypto-dh.js
@@ -93,7 +93,7 @@ const crypto = require('crypto');
--- node-v22.14.0.orig/test/parallel/test-crypto-dh.js
+++ node-v22.14.0/test/parallel/test-crypto-dh.js
@@ -98,7 +98,7 @@ const {
dh3.computeSecret('');
}, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ?
}, { message: hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ?
'Unspecified validation error' :
- 'Supplied key is too small' });
+ /(Supplied key is too small|invalid public key)/ });
}
}
Index: node-v22.12.0/test/parallel/test-dns.js
Index: node-v22.14.0/test/parallel/test-dns.js
===================================================================
--- node-v22.12.0.orig/test/parallel/test-dns.js
+++ node-v22.12.0/test/parallel/test-dns.js
--- node-v22.14.0.orig/test/parallel/test-dns.js
+++ node-v22.14.0/test/parallel/test-dns.js
@@ -403,7 +403,7 @@ assert.throws(() => {
const server = dgram.createSocket('udp4');
@@ -113,10 +113,10 @@ Index: node-v22.12.0/test/parallel/test-dns.js
const parsed = dnstools.parseDNSPacket(msg);
const domain = parsed.questions[0].domain;
assert.strictEqual(domain, 'example.org');
Index: node-v22.12.0/test/wpt/test-webcrypto.js
Index: node-v22.14.0/test/wpt/test-webcrypto.js
===================================================================
--- node-v22.12.0.orig/test/wpt/test-webcrypto.js
+++ node-v22.12.0/test/wpt/test-webcrypto.js
--- node-v22.14.0.orig/test/wpt/test-webcrypto.js
+++ node-v22.14.0/test/wpt/test-webcrypto.js
@@ -1,7 +1,8 @@
'use strict';

BIN
node-v22.13.1.tar.xz (Stored with Git LFS)

Binary file not shown.

BIN
node-v22.14.0.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,3 +1,23 @@
-------------------------------------------------------------------
Thu Apr 10 09:47:03 UTC 2025 - Adam Majer <adam.majer@suse.de>
- Update to 22.14.0
* fs: allow exclude option in globs to accept glob patterns
* lib: add typescript support to STDIN eval
* module: add ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX
* module: add findPackageJSON util
* process: add process.ref() and process.unref() methods
* sqlite: support TypedArray and DataView in StatementSync
* src: add --disable-sigusr1 to prevent signal i/o thread
* src,worker: add isInternalWorker
* test_runner: add TestContext.prototype.waitFor()
* test_runner: add t.assert.fileSnapshot()
* test_runner: add assert.register() API
* worker: add eval ts input
- openssl_binary_detection.patch fix_ci_tests.patch: refreshed
- Build with PIE (bsc#1239949)
-------------------------------------------------------------------
Wed Jan 22 10:10:36 UTC 2025 - Adam Majer <adam.majer@suse.de>

View File

@@ -31,7 +31,7 @@
%endif
Name: nodejs22
Version: 22.13.1
Version: 22.14.0
Release: 0
# Double DWZ memory limits
@@ -209,6 +209,7 @@ BuildRequires: gcc48-c++
%if 0%{?suse_version} == 1315
%if %node_version_number >= 17
BuildRequires: gcc12-c++
BuildRequires: gcc12-PIE
%define forced_gcc_version 12
%else
%if %node_version_number >= 14
@@ -226,6 +227,7 @@ BuildRequires: gcc7-c++
%if 0%{?suse_version} == 1500
%if %node_version_number >= 17
BuildRequires: gcc12-c++
BuildRequires: gcc12-PIE
%define forced_gcc_version 12
%endif
%endif
@@ -397,9 +399,9 @@ Provides: bundled(ada) = 2.9.2
Provides: bundled(node-acorn) = 8.14.0
Provides: bundled(node-acorn-walk) = 8.3.4
Provides: bundled(node-amaro) = 0.2.0
Provides: bundled(node-amaro) = 0.3.0
Provides: bundled(node-cjs-module-lexer) = 1.4.1
Provides: bundled(node-corepack) = 0.30.0
Provides: bundled(node-corepack) = 0.31.0
Provides: bundled(node-minimatch) = 10.0.1
Provides: bundled(node-undici) = 6.21.1
@@ -930,7 +932,7 @@ export CI_JS_SUITES=default
export NODE_TEST_NO_INTERNET=1
%if %{node_version_number} >= 12
find test \( -name \*.out -or -name \*.js \) -exec sed -i 's,Use `node ,Use `node%{node_version_number} ,' {} \;
find test \( -name \*.out -or -name \*.js -or -name \*.snapshot \) -exec sed -i 's,Use `node ,Use `node%{node_version_number} ,' {} \;
%endif
%if %{node_version_number} >= 20
@@ -957,10 +959,8 @@ rm test/parallel/test-dns-cancel-reverse-lookup.js \
test/parallel/test-dns-resolveany.js
# multicast test fail since no socket?
rm test/parallel/test-dgram-membership.js
%if %{node_version_number} >= 22
# ::1 not defined in OBS on TW - https://github.com/openSUSE/obs-build/issues/848
rm test/report/test-report-exclude-network.js
# missing ICU test data for 15.6/15.7
%if %{node_version_number} >= 20
# missing ICU test data for 15.6/15.7/SLFO
ln test/fixtures/icu/localizationData-v74.2.json test/fixtures/icu/localizationData-v73.2.json
%endif

View File

@@ -1,26 +1,27 @@
Allow non-standard openssl binary names
Index: node-v14.15.1/test/common/index.js
Index: node-v22.14.0/test/common/crypto.js
===================================================================
--- node-v14.15.1.orig/test/common/index.js
+++ node-v14.15.1/test/common/index.js
@@ -797,20 +797,28 @@ const common = {
--- node-v22.14.0.orig/test/common/crypto.js
+++ node-v22.14.0/test/common/crypto.js
@@ -141,23 +141,29 @@ module.exports = {
get opensslCli() {
if (opensslCli !== null) return opensslCli;
+ let cli_candidates = [];
+
if (process.config.variables.node_shared_openssl) {
// Use external command
- opensslCli = 'openssl';
+ cli_candidates = cli_candidates.concat(['openssl-1_1', 'openssl']);
} else {
const path = require('path');
// Use command built from sources included in Node.js repository
- opensslCli = path.join(path.dirname(process.execPath), 'openssl-cli');
+ cli_candidates.push(path.join(path.dirname(process.execPath), 'openssl-cli'));
}
- if (exports.isWindows) opensslCli += '.exe';
-
+ let checkOpensslCli = function(opensslCli) {
+ if (exports.isWindows) opensslCli += '.exe';
+ const opensslCmd = spawnSync(opensslCli, ['version']);
@@ -30,6 +31,7 @@ Index: node-v14.15.1/test/common/index.js
+ }
+ return opensslCli;
+ };
const { spawnSync } = require('child_process');
- const opensslCmd = spawnSync(opensslCli, ['version']);
- if (opensslCmd.status !== 0 || opensslCmd.error !== undefined) {