From cd3f9930ef7b36cc04d3f567734b49e767687781 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 12:44:57 +0100 Subject: [PATCH 1/8] [ECMAScript6BestPractices] prerequisite fix `common-serve.js` Signed-off-by: Vincent Potucek --- .../com/diffplug/spotless/npm/common-serve.js | 93 ++++++++----------- .../diffplug/spotless/npm/prettier-serve.js | 9 +- .../com/diffplug/spotless/npm/tsfmt-serve.js | 18 +--- ...namicallyInstalledNpmInstallationTest.java | 16 ++-- testlib/src/main/resources/clang/example.js | 6 +- 5 files changed, 53 insertions(+), 89 deletions(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index edce61465a..ced5c6559e 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -1,65 +1,50 @@ -// this file will be glued to the top of the specific xy-serve.js file -const debug_serve = false; // set to true for debug log output in node process -const shutdownServer = require("http-graceful-shutdown"); const express = require("express"); const app = express(); - -app.use(express.json({limit: "50mb"})); - const fs = require("fs"); +const shutdownServer = require("http-graceful-shutdown"); -function debugLog() { - if (debug_serve) { - console.log.apply(this, arguments) - } -} +// this file will be glued to the top of the specific xy-serve.js file -function getInstanceId() { - const args = process.argv.slice(2); +app.use(express.json({ limit: "50mb" })); - // Look for the --node-server-instance-id option - let instanceId; +const server = app.listen(0, "127.0.0.1", () => streamOutput(server, getInstanceId())); - args.forEach(arg => { - if (arg.startsWith('--node-server-instance-id=')) { - instanceId = arg.split('=')[1]; - } - }); +app.post("/shutdown", (req, res) => { + res.status(200).send("Graceful shutdown."); + setTimeout(async () => { + try { + await shutdownServer(server, { + forceExit: false, // let the event loop clear + finally: () => debugLog("graceful shutdown finished."), + })(); + } catch (err) { + console.error("Error during shutdown:", err); + } + }, 200); +}); - // throw if instanceId is not set - if (!instanceId) { - throw new Error("Missing --node-server-instance-id argument"); - } - return instanceId; +function getInstanceId() { + return process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] + || (() => { throw new Error("Missing --node-server-instance-id argument"); })(); } -var listener = app.listen(0, "127.0.0.1", () => { - const instanceId = getInstanceId(); - debugLog("Server running on port " + listener.address().port + " for instance " + instanceId); - fs.writeFile("server.port.tmp", "" + listener.address().port, function (err) { - if (err) { - return console.log(err); - } else { - fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { - if (err) { - return console.log(err); - } - }); // try to be as atomic as possible - } - }); -}); -const shutdown = shutdownServer(listener, { - forceExit: false, // let the event loop clear - finally: () => debugLog("graceful shutdown finished."), -}); +function streamOutput(server, instanceId) { + debugLog("Server running on port " + server.address().port + " for instance " + instanceId); + fs.writeFile("server.port.tmp", "" + server.address().port, function (err) { + if (err) { + return console.log(err); + } else { + fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { + if (err) { + return console.log(err); + } + }); + } + }); +} -app.post("/shutdown", (req, res) => { - res.status(200).send("Shutting down"); - setTimeout(async () => { - try { - await shutdown(); - } catch (err) { - console.error("Error during shutdown:", err); - } - }, 200); -}); +function debugLog() { + if (false) { // set to true for debug log output in node process + console.log.apply(this, arguments); + } +} diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js index ac1f26790d..da3121d72f 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js @@ -22,16 +22,13 @@ app.post("/prettier/config-options", (req, res) => { app.post("/prettier/format", async (req, res) => { const format_data = req.body; - - let formatted_file_content = ""; try { - formatted_file_content = await prettierFormat(format_data.file_content, format_data.config_options); + res.set("Content-Type", "text/plain"); + res.send(await prettierFormat(format_data.file_content, format_data.config_options)); } catch(err) { res.status(500).send("Error while formatting: " + err); return; } - res.set("Content-Type", "text/plain"); - res.send(formatted_file_content); }); const prettierFormat = async function(file_content, config_options) { @@ -62,7 +59,7 @@ const mergeConfigOptions = function(resolved_config_options, config_options) { const extend = function() { // Variables const extended = {}; - let i = 0; + const i = 0; const length = arguments.length; // Merge the object into the extended object diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js index ffbb36c8a4..9c3c4f29b0 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js @@ -1,23 +1,7 @@ const tsfmt = require("typescript-formatter"); app.post("/tsfmt/format", (req, res) => { - var format_data = req.body; - tsfmt.processString("spotless-format-string.ts", format_data.file_content, format_data.config_options).then(resultMap => { - /* - export interface ResultMap { - [fileName: string]: Result; - } - - export interface Result { - fileName: string; - settings: ts.FormatCodeSettings | null; - message: string; - error: boolean; - src: string; - dest: string; - } - */ - // result contains 'message' (String), 'error' (boolean), 'dest' (String) => formatted + tsfmt.processString("spotless-format-string.ts", req.body.file_content, req.body.config_options).then(resultMap => { if (resultMap.error !== undefined && resultMap.error) { res.status(400).send(resultMap.message); return; diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java index 78830bf09d..eeb6929f3b 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 DiffPlug + * Copyright 2023-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ public class NpmTestsWithDynamicallyInstalledNpmInstallationTest extends MavenIntegrationHarness { + public static final String TS = "typescript"; + @Test void useDownloadedNpmInstallation() throws Exception { writePomWithPrettierSteps( @@ -34,15 +36,11 @@ void useDownloadedNpmInstallation() throws Exception { " " + installedNpmPath() + "", ""); - String kind = "typescript"; - String suffix = "ts"; - String configPath = ".prettierrc.yml"; - setFile(configPath).toResource("npm/prettier/filetypes/" + kind + "/" + ".prettierrc.yml"); - String path = "src/main/" + kind + "/test." + suffix; - setFile(path).toResource("npm/prettier/filetypes/" + kind + "/" + kind + ".dirty"); - + String path = "src/main/" + TS + "/test.ts"; + setFile(path).toResource("npm/prettier/filetypes/" + TS + "/" + TS + ".dirty"); + setFile(".prettierrc.yml").toResource("npm/prettier/filetypes/" + TS + "/" + ".prettierrc.yml"); mavenRunner().withArguments(installNpmMavenGoal(), "spotless:apply").runNoError(); - assertFile(path).sameAsResource("npm/prettier/filetypes/" + kind + "/" + kind + ".clean"); + assertFile(path).sameAsResource("npm/prettier/filetypes/" + TS + "/" + TS + ".clean"); } } diff --git a/testlib/src/main/resources/clang/example.js b/testlib/src/main/resources/clang/example.js index 08ebafc1a2..99b023d78c 100644 --- a/testlib/src/main/resources/clang/example.js +++ b/testlib/src/main/resources/clang/example.js @@ -1,4 +1,4 @@ -var numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, +const numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, ]; const p = { @@ -10,9 +10,9 @@ const p = { const str = "Hello, world!" ; -var str2=str.charAt(3)+str[0]; +const str2=str.charAt(3)+str[0]; -var multilinestr = "Hello \ +const multilinestr = "Hello \ World" ; From 7d1eb76acf80ae6aab579e77beb3f463a86bc56e Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:00:55 +0100 Subject: [PATCH 2/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../com/diffplug/spotless/npm/common-serve.js | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index ced5c6559e..56b004927f 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -1,21 +1,28 @@ const express = require("express"); -const app = express(); const fs = require("fs"); const shutdownServer = require("http-graceful-shutdown"); // this file will be glued to the top of the specific xy-serve.js file +const app = express(); + app.use(express.json({ limit: "50mb" })); -const server = app.listen(0, "127.0.0.1", () => streamOutput(server, getInstanceId())); +const server = app.listen(0,"127.0.0.1", () => + streamOutput( + server, + process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] + || (() => { throw new Error("Missing --node-server-instance-id argument"); })() + ) +); app.post("/shutdown", (req, res) => { res.status(200).send("Graceful shutdown."); setTimeout(async () => { try { await shutdownServer(server, { - forceExit: false, // let the event loop clear - finally: () => debugLog("graceful shutdown finished."), + forceExit: false, + finally: () => debugLog("graceful shutdown finished.") })(); } catch (err) { console.error("Error during shutdown:", err); @@ -23,28 +30,18 @@ app.post("/shutdown", (req, res) => { }, 200); }); -function getInstanceId() { - return process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] - || (() => { throw new Error("Missing --node-server-instance-id argument"); })(); -} - function streamOutput(server, instanceId) { - debugLog("Server running on port " + server.address().port + " for instance " + instanceId); - fs.writeFile("server.port.tmp", "" + server.address().port, function (err) { - if (err) { - return console.log(err); - } else { - fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { - if (err) { - return console.log(err); - } - }); - } + const port = server.address().port; + debugLog(`Server running on port ${port} for instance ${instanceId}`); + + fs.writeFile("server.port.tmp", String(port), err => { + if (err) return console.log(err); + fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { + if (err) console.log(err); + }); }); } function debugLog() { - if (false) { // set to true for debug log output in node process - console.log.apply(this, arguments); - } + if (false) console.log.apply(this, arguments); } From 6cc4dcc71fe071d213ebb327b4c0e4d9655061be Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:02:05 +0100 Subject: [PATCH 3/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../resources/com/diffplug/spotless/npm/common-serve.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index 56b004927f..bd5bb651f6 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -10,9 +10,9 @@ app.use(express.json({ limit: "50mb" })); const server = app.listen(0,"127.0.0.1", () => streamOutput( - server, process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] - || (() => { throw new Error("Missing --node-server-instance-id argument"); })() + || (() => { throw new Error("Missing --node-server-instance-id argument"); })(), + server.address().port ) ); @@ -30,10 +30,8 @@ app.post("/shutdown", (req, res) => { }, 200); }); -function streamOutput(server, instanceId) { - const port = server.address().port; +function streamOutput(instanceId, port) { debugLog(`Server running on port ${port} for instance ${instanceId}`); - fs.writeFile("server.port.tmp", String(port), err => { if (err) return console.log(err); fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { From b48205f1c03515a973fa768212bc212f56bb012e Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:05:07 +0100 Subject: [PATCH 4/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../main/resources/com/diffplug/spotless/npm/common-serve.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index bd5bb651f6..f1defe2b90 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -32,7 +32,7 @@ app.post("/shutdown", (req, res) => { function streamOutput(instanceId, port) { debugLog(`Server running on port ${port} for instance ${instanceId}`); - fs.writeFile("server.port.tmp", String(port), err => { + fs.writeFile("server.port.tmp", port, err => { if (err) return console.log(err); fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { if (err) console.log(err); From eb979964f0a44f3c970b1a90437ee06a87596234 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:06:29 +0100 Subject: [PATCH 5/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../com/diffplug/spotless/npm/common-serve.js | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index f1defe2b90..ca440d635d 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -4,12 +4,26 @@ const shutdownServer = require("http-graceful-shutdown"); // this file will be glued to the top of the specific xy-serve.js file +function streamServerOutput(instanceId, port) { + debugLog(`Server running on port ${port} for instance ${instanceId}`); + fs.writeFile("server.port.tmp", port, err => { + if (err) return console.log(err); + fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { + if (err) console.log(err); + }); + }); +} + +function debugLog() { + if (false) console.log.apply(this, arguments); +} + const app = express(); app.use(express.json({ limit: "50mb" })); const server = app.listen(0,"127.0.0.1", () => - streamOutput( + streamServerOutput( process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] || (() => { throw new Error("Missing --node-server-instance-id argument"); })(), server.address().port @@ -17,7 +31,6 @@ const server = app.listen(0,"127.0.0.1", () => ); app.post("/shutdown", (req, res) => { - res.status(200).send("Graceful shutdown."); setTimeout(async () => { try { await shutdownServer(server, { @@ -28,18 +41,5 @@ app.post("/shutdown", (req, res) => { console.error("Error during shutdown:", err); } }, 200); + res.status(200).send("Graceful shutdown."); }); - -function streamOutput(instanceId, port) { - debugLog(`Server running on port ${port} for instance ${instanceId}`); - fs.writeFile("server.port.tmp", port, err => { - if (err) return console.log(err); - fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { - if (err) console.log(err); - }); - }); -} - -function debugLog() { - if (false) console.log.apply(this, arguments); -} From 15fd4030f96217dd52e23ad49c692a0dc13f8e6f Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:07:17 +0100 Subject: [PATCH 6/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../main/resources/com/diffplug/spotless/npm/common-serve.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index ca440d635d..4cb4f97732 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -41,5 +41,5 @@ app.post("/shutdown", (req, res) => { console.error("Error during shutdown:", err); } }, 200); - res.status(200).send("Graceful shutdown."); + res.ok().send("Graceful shutdown."); }); From e2dfdc4807eac82d6f03a64dd4ad356399553f93 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:37:27 +0100 Subject: [PATCH 7/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- .../com/diffplug/spotless/npm/common-serve.js | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index 4cb4f97732..1af902c2c5 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -4,42 +4,48 @@ const shutdownServer = require("http-graceful-shutdown"); // this file will be glued to the top of the specific xy-serve.js file -function streamServerOutput(instanceId, port) { - debugLog(`Server running on port ${port} for instance ${instanceId}`); - fs.writeFile("server.port.tmp", port, err => { - if (err) return console.log(err); - fs.rename("server.port.tmp", `server-${instanceId}.port`, err => { - if (err) console.log(err); - }); +function getInstanceId() { + return process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] + || (() => { throw new Error("Missing --node-server-instance-id argument"); })(); +} + +function streamOutput(port, instanceId) { + debugLog("Server running on port " + port + " for instance " + instanceId); + fs.writeFile("server.port.tmp", "" + port, function (err) { + if (err) { + return console.log(err); + } else { + fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { + if (err) { + return console.log(err); + } + }); + } }); } function debugLog() { - if (false) console.log.apply(this, arguments); + if (false) { // set to true for debug log output in node process + console.log.apply(this, arguments); + } } const app = express(); app.use(express.json({ limit: "50mb" })); -const server = app.listen(0,"127.0.0.1", () => - streamServerOutput( - process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] - || (() => { throw new Error("Missing --node-server-instance-id argument"); })(), - server.address().port - ) -); +const server = app.listen(0, "127.0.0.1", () => streamOutput(server.address().port, getInstanceId())); app.post("/shutdown", (req, res) => { setTimeout(async () => { try { await shutdownServer(server, { - forceExit: false, - finally: () => debugLog("graceful shutdown finished.") + forceExit: false, // let the event loop clear + finally: () => debugLog("graceful shutdown finished."), })(); } catch (err) { console.error("Error during shutdown:", err); } }, 200); - res.ok().send("Graceful shutdown."); + res.ok(200).send("Graceful shutdown."); }); From e5d81a3eca1b8101c0ef62ed72be27f7b6aa1981 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Sun, 30 Nov 2025 14:53:22 +0100 Subject: [PATCH 8/8] [rewrite] apply `ECMAScript6BestPractices` Signed-off-by: Vincent Potucek --- gradle/error-prone.gradle | 1 - .../com/diffplug/spotless/npm/common-serve.js | 92 ++++++++----------- .../diffplug/spotless/npm/prettier-serve.js | 9 +- .../com/diffplug/spotless/npm/tsfmt-serve.js | 18 +--- ...namicallyInstalledNpmInstallationTest.java | 16 ++-- testlib/src/main/resources/clang/example.js | 6 +- 6 files changed, 53 insertions(+), 89 deletions(-) diff --git a/gradle/error-prone.gradle b/gradle/error-prone.gradle index b834bac630..377b91e3de 100644 --- a/gradle/error-prone.gradle +++ b/gradle/error-prone.gradle @@ -17,7 +17,6 @@ tasks.withType(JavaCompile).configureEach { 'ReturnValueIgnored', // We don`t want to use ErrorProne's annotations. ) error( - 'ReturnValueIgnored', 'SelfAssignment', 'StringJoin', 'UnnecessarilyFullyQualified', diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js index edce61465a..1d1409697f 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/common-serve.js @@ -1,65 +1,51 @@ -// this file will be glued to the top of the specific xy-serve.js file -const debug_serve = false; // set to true for debug log output in node process -const shutdownServer = require("http-graceful-shutdown"); const express = require("express"); -const app = express(); - -app.use(express.json({limit: "50mb"})); - const fs = require("fs"); +const shutdownServer = require("http-graceful-shutdown"); -function debugLog() { - if (debug_serve) { - console.log.apply(this, arguments) - } -} +// this file will be glued to the top of the specific xy-serve.js file function getInstanceId() { - const args = process.argv.slice(2); - - // Look for the --node-server-instance-id option - let instanceId; + return process.argv.slice(2).find(arg => arg.startsWith("--node-server-instance-id="))?.split("=")[1] + || (() => { throw new Error("Missing --node-server-instance-id argument"); })(); +} - args.forEach(arg => { - if (arg.startsWith('--node-server-instance-id=')) { - instanceId = arg.split('=')[1]; - } - }); +function streamOutput(port, instanceId) { + debugLog("Server running on port " + port + " for instance " + instanceId); + fs.writeFile("server.port.tmp", "" + port, function (err) { + if (err) { + return console.log(err); + } else { + fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { + if (err) { + return console.log(err); + } + }); + } + }); +} - // throw if instanceId is not set - if (!instanceId) { - throw new Error("Missing --node-server-instance-id argument"); - } - return instanceId; +function debugLog() { + if (false) { // set to true for debug log output in node process + console.log.apply(this, arguments); + } } -var listener = app.listen(0, "127.0.0.1", () => { - const instanceId = getInstanceId(); - debugLog("Server running on port " + listener.address().port + " for instance " + instanceId); - fs.writeFile("server.port.tmp", "" + listener.address().port, function (err) { - if (err) { - return console.log(err); - } else { - fs.rename("server.port.tmp", `server-${instanceId}.port`, function (err) { - if (err) { - return console.log(err); - } - }); // try to be as atomic as possible - } - }); -}); -const shutdown = shutdownServer(listener, { - forceExit: false, // let the event loop clear - finally: () => debugLog("graceful shutdown finished."), -}); +const app = express(); + +app.use(express.json({ limit: "50mb" })); + +const server = app.listen(0, "127.0.0.1", () => streamOutput(server.address().port, getInstanceId())); app.post("/shutdown", (req, res) => { - res.status(200).send("Shutting down"); - setTimeout(async () => { - try { - await shutdown(); - } catch (err) { - console.error("Error during shutdown:", err); - } - }, 200); + setTimeout(async () => { + try { + await shutdownServer(server, { + forceExit: false, // let the event loop clear + finally: () => debugLog("graceful shutdown finished."), + })(); + } catch (err) { + console.error("Error during shutdown:", err); + } + }, 200); + res.ok().send("Graceful shutdown."); }); diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js index ac1f26790d..da3121d72f 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js @@ -22,16 +22,13 @@ app.post("/prettier/config-options", (req, res) => { app.post("/prettier/format", async (req, res) => { const format_data = req.body; - - let formatted_file_content = ""; try { - formatted_file_content = await prettierFormat(format_data.file_content, format_data.config_options); + res.set("Content-Type", "text/plain"); + res.send(await prettierFormat(format_data.file_content, format_data.config_options)); } catch(err) { res.status(500).send("Error while formatting: " + err); return; } - res.set("Content-Type", "text/plain"); - res.send(formatted_file_content); }); const prettierFormat = async function(file_content, config_options) { @@ -62,7 +59,7 @@ const mergeConfigOptions = function(resolved_config_options, config_options) { const extend = function() { // Variables const extended = {}; - let i = 0; + const i = 0; const length = arguments.length; // Merge the object into the extended object diff --git a/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js b/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js index ffbb36c8a4..9c3c4f29b0 100644 --- a/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js +++ b/lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js @@ -1,23 +1,7 @@ const tsfmt = require("typescript-formatter"); app.post("/tsfmt/format", (req, res) => { - var format_data = req.body; - tsfmt.processString("spotless-format-string.ts", format_data.file_content, format_data.config_options).then(resultMap => { - /* - export interface ResultMap { - [fileName: string]: Result; - } - - export interface Result { - fileName: string; - settings: ts.FormatCodeSettings | null; - message: string; - error: boolean; - src: string; - dest: string; - } - */ - // result contains 'message' (String), 'error' (boolean), 'dest' (String) => formatted + tsfmt.processString("spotless-format-string.ts", req.body.file_content, req.body.config_options).then(resultMap => { if (resultMap.error !== undefined && resultMap.error) { res.status(400).send(resultMap.message); return; diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java index 78830bf09d..eeb6929f3b 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/npm/NpmTestsWithDynamicallyInstalledNpmInstallationTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 DiffPlug + * Copyright 2023-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ public class NpmTestsWithDynamicallyInstalledNpmInstallationTest extends MavenIntegrationHarness { + public static final String TS = "typescript"; + @Test void useDownloadedNpmInstallation() throws Exception { writePomWithPrettierSteps( @@ -34,15 +36,11 @@ void useDownloadedNpmInstallation() throws Exception { " " + installedNpmPath() + "", ""); - String kind = "typescript"; - String suffix = "ts"; - String configPath = ".prettierrc.yml"; - setFile(configPath).toResource("npm/prettier/filetypes/" + kind + "/" + ".prettierrc.yml"); - String path = "src/main/" + kind + "/test." + suffix; - setFile(path).toResource("npm/prettier/filetypes/" + kind + "/" + kind + ".dirty"); - + String path = "src/main/" + TS + "/test.ts"; + setFile(path).toResource("npm/prettier/filetypes/" + TS + "/" + TS + ".dirty"); + setFile(".prettierrc.yml").toResource("npm/prettier/filetypes/" + TS + "/" + ".prettierrc.yml"); mavenRunner().withArguments(installNpmMavenGoal(), "spotless:apply").runNoError(); - assertFile(path).sameAsResource("npm/prettier/filetypes/" + kind + "/" + kind + ".clean"); + assertFile(path).sameAsResource("npm/prettier/filetypes/" + TS + "/" + TS + ".clean"); } } diff --git a/testlib/src/main/resources/clang/example.js b/testlib/src/main/resources/clang/example.js index 08ebafc1a2..99b023d78c 100644 --- a/testlib/src/main/resources/clang/example.js +++ b/testlib/src/main/resources/clang/example.js @@ -1,4 +1,4 @@ -var numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, +const numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, ]; const p = { @@ -10,9 +10,9 @@ const p = { const str = "Hello, world!" ; -var str2=str.charAt(3)+str[0]; +const str2=str.charAt(3)+str[0]; -var multilinestr = "Hello \ +const multilinestr = "Hello \ World" ;