Unverified Commit 1123178b authored by dish's avatar dish Committed by GitHub
Browse files

send: use nodejs_22 (#515607)

parents 3a6c4098 ff4cd7e1
Loading
Loading
Loading
Loading
+130 −0
Original line number Diff line number Diff line
From 4e1e354d17b558954c8e006bb432bb746922ec81 Mon Sep 17 00:00:00 2001
From: Moraxyc <i@qaq.li>
Date: Sat, 2 May 2026 04:26:09 +0800
Subject: [PATCH] express-ws: convert ESM sources to CommonJS for Node.js 22

---
 express-ws/index.js               |  4 +---
 express-ws/src/add-ws-method.js   |  8 +++++---
 express-ws/src/index.js           | 14 ++++++++------
 express-ws/src/trailing-slash.js  |  4 +++-
 express-ws/src/websocket-url.js   |  6 ++++--
 express-ws/src/wrap-middleware.js |  4 +++-
 6 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/express-ws/index.js b/express-ws/index.js
index b0df682..bada276 100644
--- a/express-ws/index.js
+++ b/express-ws/index.js
@@ -1,4 +1,2 @@
 /* eslint-disable-next-line no-underscore-dangle */
-const _require = require('esm')(module);
-
-module.exports = _require('./src/index').default;
+module.exports = require("./src/index");
diff --git a/express-ws/src/add-ws-method.js b/express-ws/src/add-ws-method.js
index 8c3a279..633ff86 100644
--- a/express-ws/src/add-ws-method.js
+++ b/express-ws/src/add-ws-method.js
@@ -1,7 +1,7 @@
-import wrapMiddleware from './wrap-middleware';
-import websocketUrl from './websocket-url';
+const wrapMiddleware = require('./wrap-middleware');
+const websocketUrl = require('./websocket-url');
 
-export default function addWsMethod(target) {
+function addWsMethod(target) {
   /* This prevents conflict with other things setting `.ws`. */
   if (target.ws === null || target.ws === undefined) {
     target.ws = function addWsRoute(route, ...middlewares) {
@@ -28,3 +28,5 @@ export default function addWsMethod(target) {
     };
   }
 }
+
+module.exports = addWsMethod;
diff --git a/express-ws/src/index.js b/express-ws/src/index.js
index dab6c66..16f3a2b 100644
--- a/express-ws/src/index.js
+++ b/express-ws/src/index.js
@@ -3,14 +3,14 @@
  *
  * Here be dragons. */
 
-import http from 'http';
-import express from 'express';
-import ws from 'ws';
+const http = require('http');
+const express = require('express');
+const ws = require('ws');
 
-import websocketUrl from './websocket-url';
-import addWsMethod from './add-ws-method';
+const websocketUrl = require('./websocket-url');
+const addWsMethod = require('./add-ws-method');
 
-export default function expressWs(app, httpServer, options = {}) {
+function expressWs(app, httpServer, options = {}) {
   let server = httpServer;
 
   if (server === null || server === undefined) {
@@ -84,3 +84,5 @@ export default function expressWs(app, httpServer, options = {}) {
     }
   };
 }
+
+module.exports = expressWs;
diff --git a/express-ws/src/trailing-slash.js b/express-ws/src/trailing-slash.js
index c7cba79..791c43c 100644
--- a/express-ws/src/trailing-slash.js
+++ b/express-ws/src/trailing-slash.js
@@ -1,7 +1,9 @@
-export default function addTrailingSlash(string) {
+function addTrailingSlash(string) {
   let suffixed = string;
   if (suffixed.charAt(suffixed.length - 1) !== '/') {
     suffixed = `${suffixed}/`;
   }
   return suffixed;
 }
+
+module.exports = addTrailingSlash;
diff --git a/express-ws/src/websocket-url.js b/express-ws/src/websocket-url.js
index 64b845f..d2f35eb 100644
--- a/express-ws/src/websocket-url.js
+++ b/express-ws/src/websocket-url.js
@@ -1,7 +1,7 @@
-import trailingSlash from './trailing-slash';
+const trailingSlash = require('./trailing-slash');
 
 /* The following fixes HenningM/express-ws#17, correctly. */
-export default function websocketUrl(url) {
+function websocketUrl(url) {
   if (url.indexOf('?') !== -1) {
     const [baseUrl, query] = url.split('?');
 
@@ -9,3 +9,5 @@ export default function websocketUrl(url) {
   }
   return `${trailingSlash(url)}.websocket`;
 }
+
+module.exports = websocketUrl;
diff --git a/express-ws/src/wrap-middleware.js b/express-ws/src/wrap-middleware.js
index 09b0dbf..c8586d7 100644
--- a/express-ws/src/wrap-middleware.js
+++ b/express-ws/src/wrap-middleware.js
@@ -1,4 +1,4 @@
-export default function wrapMiddleware(middleware) {
+function wrapMiddleware(middleware) {
   return (req, res, next) => {
     if (req.ws !== null && req.ws !== undefined) {
       req.wsHandled = true;
@@ -15,3 +15,5 @@ export default function wrapMiddleware(middleware) {
     }
   };
 }
+
+module.exports = wrapMiddleware;
-- 
2.53.0
+16 −11
Original line number Diff line number Diff line
@@ -3,24 +3,32 @@
  buildNpmPackage,
  fetchFromGitHub,
  makeBinaryWrapper,
  nodejs_20,
  nodejs_22,
  nix-update-script,
  nixosTests,
}:
buildNpmPackage rec {
buildNpmPackage (finalAttrs: {
  pname = "send";
  version = "3.4.27";

  src = fetchFromGitHub {
    owner = "timvisee";
    repo = "send";
    tag = "v${version}";
    tag = "v${finalAttrs.version}";
    hash = "sha256-tfntox8Sw3xzlCOJgY/LThThm+mptYY5BquYDjzHonQ=";
  };

  nodejs = nodejs_20;
  # @dannycoates/express-ws uses the unmaintained esm loader, which fails on nodejs_22.
  postConfigure = ''
    patch -p1 \
      --directory=node_modules/@dannycoates \
      < ${./dannycoates-express-ws-drop-esm-loader.patch}
  '';

  nodejs = nodejs_22;

  npmDepsHash = "sha256-ZVegUECrwkn/DlAwqx5VDmcwEIJV/jAAV99Dq29Tm2w=";
  npmDepsFetcherVersion = 2;
  npmDepsHash = "sha256-QInXcYpZcAOJMS6QFtIapftyWsqA80ef+OiKJ9XEs98=";

  nativeBuildInputs = [
    makeBinaryWrapper
@@ -28,19 +36,16 @@ buildNpmPackage rec {

  env = {
    PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "true";

    NODE_OPTIONS = "--openssl-legacy-provider";
  };

  makeCacheWritable = true;

  npmPackFlags = [ "--ignore-scripts" ];

  postInstall = ''
    cp -r dist $out/lib/node_modules/send/
    ln -s $out/lib/node_modules/send/dist/version.json $out/lib/node_modules/send/version.json

    makeWrapper ${lib.getExe nodejs} $out/bin/send \
    makeWrapper ${lib.getExe finalAttrs.nodejs} $out/bin/send \
      --add-flags $out/lib/node_modules/send/server/bin/prod.js \
      --set "NODE_ENV" "production"
  '';
@@ -54,7 +59,7 @@ buildNpmPackage rec {

  meta = {
    description = "File Sharing Experiment";
    changelog = "https://github.com/timvisee/send/releases/tag/v${version}";
    changelog = "https://github.com/timvisee/send/releases/tag/v${finalAttrs.version}";
    homepage = "https://github.com/timvisee/send";
    license = lib.licenses.mpl20;
    maintainers = with lib.maintainers; [
@@ -63,4 +68,4 @@ buildNpmPackage rec {
    ];
    mainProgram = "send";
  };
}
})