git: 983665ac3e7f - main - editors/vscode: update to 1.101.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Sat, 14 Jun 2025 06:20:25 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=983665ac3e7fa5b887d9a973fe5958d584dc2182

commit 983665ac3e7fa5b887d9a973fe5958d584dc2182
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-06-14 06:18:01 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-06-14 06:20:19 +0000

    editors/vscode: update to 1.101.0
    
    While here, switch to USES=gssapi instead of directly specifying
    LIB_DEPENDS regarding Kerberos dependency.
    
    Changelog: https://code.visualstudio.com/updates/v1_101
    
    Reported by:    GitHub (watch releases)
---
 editors/vscode/Makefile                             | 14 ++++++--------
 editors/vscode/distinfo                             | 14 +++++++-------
 .../vscode/files/patch-build_lib_layersChecker.ts   |  4 ++--
 .../patch-build_lib_propertyInitOrderChecker.ts     |  4 ++--
 .../files/patch-node__modules_kerberos_binding.gyp  | 21 +++++++++++++++++++--
 .../patch-remote_node__modules_kerberos_binding.gyp | 21 +++++++++++++++++++--
 editors/vscode/files/patch-src_vs_base_node_ps.ts   |  6 +++---
 ...src_vs_platform_environment_node_userDataPath.ts |  8 ++++----
 editors/vscode/pkg-plist                            | 21 ++++++++++++++-------
 9 files changed, 76 insertions(+), 37 deletions(-)

diff --git a/editors/vscode/Makefile b/editors/vscode/Makefile
index 2c2be68e853b..681c385255dd 100644
--- a/editors/vscode/Makefile
+++ b/editors/vscode/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	vscode
-DISTVERSION=	1.100.3
-PORTREVISION=	1
+DISTVERSION=	1.101.0
 CATEGORIES=	editors
 MASTER_SITES=	https://github.com/tagattie/FreeBSD-VSCode/releases/download/${DISTVERSION}/:node_modules
 DISTFILES=	vscode-node-modules-${DISTVERSION}${EXTRACT_SUFX}:node_modules \
@@ -51,7 +50,6 @@ LIB_DEPENDS=	libatk-bridge-2.0.so:accessibility/at-spi2-core \
 		libcups.so:print/cups \
 		libfreetype.so:print/freetype2 \
 		libharfbuzz.so:print/harfbuzz \
-		libkrb5.so.3:security/krb5 \
 		libsecret-1.so:security/libsecret \
 		libnss3.so:security/nss \
 		libexpat.so:textproc/expat2 \
@@ -63,14 +61,14 @@ RUN_DEPENDS=	xdg-open:devel/xdg-utils \
 TEST_DEPENDS=	electron${ELECTRON_VER_MAJOR}:devel/electron${ELECTRON_VER_MAJOR} \
 		bash:shells/bash
 
-USES=		desktop-file-utils gl gmake gnome iconv:wchar_t jpeg \
-		localbase:ldflags nodejs:20,build pkgconfig python:build \
+USES=		desktop-file-utils gl gmake gnome gssapi:mit iconv:wchar_t \
+		jpeg localbase:ldflags nodejs:22,build pkgconfig python:build \
 		shebangfix xorg
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	microsoft
 
-SOURCE_COMMIT_HASH=	258e40fedc6cb8edf399a463ce3a9d32e7e1f6f3
+SOURCE_COMMIT_HASH=	dfaf44141ea9deb3b4096f7cd6d24e00c147a4b1
 
 BINARY_ALIAS=	python=${PYTHON_CMD}
 
@@ -97,9 +95,9 @@ MAKE_ENV+=	PLAYWRIGHT_BROWSERS_PATH=${WRKDIR}/pw-browsers \
 MAKE_ENV+=	PYTHONDONTWRITEBYTECODE=1
 TEST_ENV=	${MAKE_ENV:C/TMPDIR=.*//}
 
-NODEJS_DIR=	${.CURDIR:H:H}/www/node20
+NODEJS_DIR=	${.CURDIR:H:H}/www/node22
 .include "${NODEJS_DIR}/Makefile.version"
-ELECTRON_DIR=	${.CURDIR:H:H}/devel/electron34
+ELECTRON_DIR=	${.CURDIR:H:H}/devel/electron35
 .include "${ELECTRON_DIR}/Makefile.version"
 
 ELECTRON_DOWNLOAD_URL=	https://github.com/electron/electron/releases/download/v${ELECTRON_VER}
diff --git a/editors/vscode/distinfo b/editors/vscode/distinfo
index 9672d2957332..35e567e31b67 100644
--- a/editors/vscode/distinfo
+++ b/editors/vscode/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1748980691
-SHA256 (vscode/vscode-node-modules-1.100.3.tar.gz) = 0ab57762fc7a8a29b5de697abe751ac21c236766f8ce486ebc0e0b2a70b03c29
-SIZE (vscode/vscode-node-modules-1.100.3.tar.gz) = 400176311
-SHA256 (vscode/vscode-marketplace-exts-1.100.3.tar.gz) = d3dbc9faf6c188f510114b4614cbf19cd2a44e3af88d3ee679f5db405c4ae38c
-SIZE (vscode/vscode-marketplace-exts-1.100.3.tar.gz) = 1709597
-SHA256 (vscode/microsoft-vscode-1.100.3_GH0.tar.gz) = 41aea581620e48f7ba33e29ab6a9b43d25632ce11d06480cdfe0e8f904fe3637
-SIZE (vscode/microsoft-vscode-1.100.3_GH0.tar.gz) = 22647591
+TIMESTAMP = 1749769265
+SHA256 (vscode/vscode-node-modules-1.101.0.tar.gz) = 19b88e65696f4c30b688e78baacfd4041c56bd047bef153afb81d741357bf358
+SIZE (vscode/vscode-node-modules-1.101.0.tar.gz) = 395032316
+SHA256 (vscode/vscode-marketplace-exts-1.101.0.tar.gz) = 10333830c690095bd4d8e802846a991ec42c72718495b0517e236e6bc2ddf324
+SIZE (vscode/vscode-marketplace-exts-1.101.0.tar.gz) = 1708375
+SHA256 (vscode/microsoft-vscode-1.101.0_GH0.tar.gz) = f0890a88193722c201406f9738f483b3348c414b8dbabc079934a6073d069409
+SIZE (vscode/microsoft-vscode-1.101.0_GH0.tar.gz) = 22853199
diff --git a/editors/vscode/files/patch-build_lib_layersChecker.ts b/editors/vscode/files/patch-build_lib_layersChecker.ts
index 55aa891b281f..5f572328ac0a 100644
--- a/editors/vscode/files/patch-build_lib_layersChecker.ts
+++ b/editors/vscode/files/patch-build_lib_layersChecker.ts
@@ -1,6 +1,6 @@
---- build/lib/layersChecker.ts.orig	2025-05-07 12:32:30 UTC
+--- build/lib/layersChecker.ts.orig	2025-06-11 13:47:56 UTC
 +++ build/lib/layersChecker.ts
-@@ -419,7 +419,7 @@ function createProgram(tsconfigPath: string): ts.Progr
+@@ -363,7 +363,7 @@ function createProgram(tsconfigPath: string): ts.Progr
  function createProgram(tsconfigPath: string): ts.Program {
  	const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
  
diff --git a/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts b/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts
index 24851b7064a4..1d3e446974f1 100644
--- a/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts
+++ b/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts
@@ -1,6 +1,6 @@
---- build/lib/propertyInitOrderChecker.ts.orig	2025-05-07 12:32:30 UTC
+--- build/lib/propertyInitOrderChecker.ts.orig	2025-06-11 13:47:56 UTC
 +++ build/lib/propertyInitOrderChecker.ts
-@@ -109,7 +109,7 @@ function createProgram(tsconfigPath: string): ts.Progr
+@@ -36,7 +36,7 @@ function createProgram(tsconfigPath: string): ts.Progr
  function createProgram(tsconfigPath: string): ts.Program {
  	const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
  
diff --git a/editors/vscode/files/patch-node__modules_kerberos_binding.gyp b/editors/vscode/files/patch-node__modules_kerberos_binding.gyp
index df3fa94b1c68..8d5f1b08f7db 100644
--- a/editors/vscode/files/patch-node__modules_kerberos_binding.gyp
+++ b/editors/vscode/files/patch-node__modules_kerberos_binding.gyp
@@ -1,6 +1,6 @@
---- node_modules/kerberos/binding.gyp.orig	2024-09-09 06:45:52 UTC
+--- node_modules/kerberos/binding.gyp.orig	2025-06-12 22:34:24 UTC
 +++ node_modules/kerberos/binding.gyp
-@@ -54,7 +54,7 @@
+@@ -54,14 +54,14 @@
              ]
            }
          }],
@@ -9,3 +9,20 @@
            'sources': [
              'src/unix/base64.cc',
              'src/unix/kerberos_gss.cc',
+             'src/unix/kerberos_unix.cc'
+           ]
+         }],
+-        ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld!="true")', {
++        ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld!="true")', {
+           'link_settings': {
+             'libraries': [
+               '-lkrb5',
+@@ -78,7 +78,7 @@
+             }]
+           ]
+         }],
+-        ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld=="true")', {
++        ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld=="true")', {
+           'defines': ['KERBEROS_USE_RTLD=1'],
+           'link_settings': {
+             'libraries': [
diff --git a/editors/vscode/files/patch-remote_node__modules_kerberos_binding.gyp b/editors/vscode/files/patch-remote_node__modules_kerberos_binding.gyp
index aded5c65fd71..6f7857f33b31 100644
--- a/editors/vscode/files/patch-remote_node__modules_kerberos_binding.gyp
+++ b/editors/vscode/files/patch-remote_node__modules_kerberos_binding.gyp
@@ -1,6 +1,6 @@
---- remote/node_modules/kerberos/binding.gyp.orig	2024-09-09 06:45:52 UTC
+--- remote/node_modules/kerberos/binding.gyp.orig	2025-06-12 22:38:39 UTC
 +++ remote/node_modules/kerberos/binding.gyp
-@@ -54,7 +54,7 @@
+@@ -54,14 +54,14 @@
              ]
            }
          }],
@@ -9,3 +9,20 @@
            'sources': [
              'src/unix/base64.cc',
              'src/unix/kerberos_gss.cc',
+             'src/unix/kerberos_unix.cc'
+           ]
+         }],
+-        ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld!="true")', {
++        ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld!="true")', {
+           'link_settings': {
+             'libraries': [
+               '-lkrb5',
+@@ -78,7 +78,7 @@
+             }]
+           ]
+         }],
+-        ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld=="true")', {
++        ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld=="true")', {
+           'defines': ['KERBEROS_USE_RTLD=1'],
+           'link_settings': {
+             'libraries': [
diff --git a/editors/vscode/files/patch-src_vs_base_node_ps.ts b/editors/vscode/files/patch-src_vs_base_node_ps.ts
index 253ffa966084..3608d03c2d1c 100644
--- a/editors/vscode/files/patch-src_vs_base_node_ps.ts
+++ b/editors/vscode/files/patch-src_vs_base_node_ps.ts
@@ -1,6 +1,6 @@
---- src/vs/base/node/ps.ts.orig	2024-01-31 22:36:21 UTC
+--- src/vs/base/node/ps.ts.orig	2025-06-11 13:47:56 UTC
 +++ src/vs/base/node/ps.ts
-@@ -208,7 +208,7 @@ export function listProcesses(rootPid: number): Promis
+@@ -210,7 +210,7 @@ export function listProcesses(rootPid: number): Promis
  
  			exec('which ps', {}, (err, stdout, stderr) => {
  				if (err || stderr) {
@@ -9,7 +9,7 @@
  						reject(err || new Error(stderr.toString()));
  					} else {
  						const cmd = JSON.stringify(FileAccess.asFileUri('vs/base/node/ps.sh').fsPath);
-@@ -223,7 +223,8 @@ export function listProcesses(rootPid: number): Promis
+@@ -225,7 +225,8 @@ export function listProcesses(rootPid: number): Promis
  					}
  				} else {
  					const ps = stdout.toString().trim();
diff --git a/editors/vscode/files/patch-src_vs_platform_environment_node_userDataPath.ts b/editors/vscode/files/patch-src_vs_platform_environment_node_userDataPath.ts
index 32e1d5fc0f4e..2dd62b78597e 100644
--- a/editors/vscode/files/patch-src_vs_platform_environment_node_userDataPath.ts
+++ b/editors/vscode/files/patch-src_vs_platform_environment_node_userDataPath.ts
@@ -1,11 +1,11 @@
---- src/vs/platform/environment/node/userDataPath.ts.orig	2024-11-05 12:18:19 UTC
+--- src/vs/platform/environment/node/userDataPath.ts.orig	2025-06-11 13:47:56 UTC
 +++ src/vs/platform/environment/node/userDataPath.ts
-@@ -76,7 +76,7 @@ function doGetUserDataPath(cliArgs: NativeParsedArgs, 
+@@ -86,7 +86,7 @@ function doGetUserDataPath(cliArgs: NativeParsedArgs, 
  		case 'darwin':
- 			appDataPath = path.join(os.homedir(), 'Library', 'Application Support');
+ 			appDataPath = join(homedir(), 'Library', 'Application Support');
  			break;
 -		case 'linux':
 +		case 'linux': case 'freebsd':
- 			appDataPath = process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config');
+ 			appDataPath = process.env['XDG_CONFIG_HOME'] || join(homedir(), '.config');
  			break;
  		default:
diff --git a/editors/vscode/pkg-plist b/editors/vscode/pkg-plist
index 0f9ea7a6e59b..dfc2df095ca2 100644
--- a/editors/vscode/pkg-plist
+++ b/editors/vscode/pkg-plist
@@ -211,8 +211,12 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/extensions/github-authentication/package.json
 %%DATADIR%%/resources/app/extensions/github-authentication/package.nls.json
 %%DATADIR%%/resources/app/extensions/github/README.md
+%%DATADIR%%/resources/app/extensions/github/dist/430.js
+%%DATADIR%%/resources/app/extensions/github/dist/555.js
+%%DATADIR%%/resources/app/extensions/github/dist/698.js
 %%DATADIR%%/resources/app/extensions/github/dist/extension.js
 %%DATADIR%%/resources/app/extensions/github/dist/extension.js.LICENSE.txt
+%%DATADIR%%/resources/app/extensions/github/extension.webpack.config.cjs
 %%DATADIR%%/resources/app/extensions/github/images/icon.png
 %%DATADIR%%/resources/app/extensions/github/markdown.css
 %%DATADIR%%/resources/app/extensions/github/package.json
@@ -689,6 +693,7 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/extensions/prompt-basics/language-configuration.json
 %%DATADIR%%/resources/app/extensions/prompt-basics/package.json
 %%DATADIR%%/resources/app/extensions/prompt-basics/package.nls.json
+%%DATADIR%%/resources/app/extensions/prompt-basics/snippets/chatmode.code-snippets
 %%DATADIR%%/resources/app/extensions/prompt-basics/snippets/instructions.code-snippets
 %%DATADIR%%/resources/app/extensions/prompt-basics/snippets/prompt.code-snippets
 %%DATADIR%%/resources/app/extensions/prompt-basics/syntaxes/prompt.tmLanguage.json
@@ -1850,8 +1855,8 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/dispatcher.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/fixed-queue.js
+%%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/h2c-client.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/pool-base.js
-%%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/pool-stats.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/pool.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/proxy-agent.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/dispatcher/retry-agent.js
@@ -1874,6 +1879,7 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/llhttp/utils.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/mock/mock-agent.js
+%%DATADIR%%/resources/app/node_modules/undici/lib/mock/mock-call-history.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/mock/mock-client.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/mock/mock-errors.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/mock/mock-interceptor.js
@@ -1883,6 +1889,7 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/node_modules/undici/lib/mock/pending-interceptors-formatter.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/util/cache.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/util/date.js
+%%DATADIR%%/resources/app/node_modules/undici/lib/util/stats.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/util/timers.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/web/cache/cache.js
 %%DATADIR%%/resources/app/node_modules/undici/lib/web/cache/cachestorage.js
@@ -2039,6 +2046,8 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/out/main.js
 %%DATADIR%%/resources/app/out/media/code-icon.svg
 %%DATADIR%%/resources/app/out/media/codicon.ttf
+%%DATADIR%%/resources/app/out/media/github.svg
+%%DATADIR%%/resources/app/out/media/google.svg
 %%DATADIR%%/resources/app/out/media/letterpress-dark.svg
 %%DATADIR%%/resources/app/out/media/letterpress-hcDark.svg
 %%DATADIR%%/resources/app/out/media/letterpress-hcLight.svg
@@ -2054,10 +2063,6 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/out/vs/base/node/terminateProcess.sh
 %%DATADIR%%/resources/app/out/vs/base/parts/sandbox/electron-sandbox/preload-aux.js
 %%DATADIR%%/resources/app/out/vs/base/parts/sandbox/electron-sandbox/preload.js
-%%DATADIR%%/resources/app/out/vs/code/electron-sandbox/processExplorer/processExplorer.html
-%%DATADIR%%/resources/app/out/vs/code/electron-sandbox/processExplorer/processExplorer.js
-%%DATADIR%%/resources/app/out/vs/code/electron-sandbox/processExplorer/processExplorerMain.css
-%%DATADIR%%/resources/app/out/vs/code/electron-sandbox/processExplorer/processExplorerMain.js
 %%DATADIR%%/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html
 %%DATADIR%%/resources/app/out/vs/code/electron-sandbox/workbench/workbench.js
 %%DATADIR%%/resources/app/out/vs/code/electron-utility/sharedProcess/sharedProcessMain.js
@@ -2070,7 +2075,10 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/out/vs/editor/common/services/editorWebWorkerMain.js
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/break.mp3
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/chatEditModifiedFile.mp3
+%%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/chatUserActionRequired.mp3
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/clear.mp3
+%%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/codeActionApplied.mp3
+%%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/codeActionTriggered.mp3
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/diffLineDeleted.mp3
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/diffLineInserted.mp3
 %%DATADIR%%/resources/app/out/vs/platform/accessibilitySignal/browser/media/diffLineModified.mp3
@@ -2126,11 +2134,11 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration.fish
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration.ps1
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/webview/browser/pre/fake.html
-%%DATADIR%%/resources/app/out/vs/workbench/contrib/webview/browser/pre/index-no-csp.html
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/webview/browser/pre/index.html
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/webview/browser/pre/service-worker.js
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/ai-powered-suggestions.svg
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/commandPalette.svg
+%%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/customize-ai.svg
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/dark-hc.png
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/dark.png
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/debug.svg
@@ -2155,7 +2163,6 @@ share/applications/code-oss.desktop
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/shortcuts.svg
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/terminal.svg
 %%DATADIR%%/resources/app/out/vs/workbench/contrib/welcomeGettingStarted/common/media/workspaceTrust.svg
-%%DATADIR%%/resources/app/out/vs/workbench/services/extensionManagement/common/media/defaultIcon.png
 %%DATADIR%%/resources/app/out/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html
 %%DATADIR%%/resources/app/out/vs/workbench/services/languageDetection/browser/languageDetectionWebWorkerMain.js
 %%DATADIR%%/resources/app/out/vs/workbench/services/search/worker/localFileSearchMain.js