From 2ed11cc4889c2c10da919a3a52f46f5712382340 Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Mon, 8 Dec 2025 21:33:33 +0000 Subject: [PATCH 1/3] fix(deps): Upgrade 'got' and refactor modules to ES imports --- run/markdown-preview/editor/app.js | 22 +++++++++---------- run/markdown-preview/editor/index.js | 7 +++--- run/markdown-preview/editor/package.json | 9 ++++---- run/markdown-preview/editor/render.js | 10 +++++---- run/markdown-preview/editor/test/app.test.js | 9 +++----- .../editor/test/system.test.js | 6 ++--- run/markdown-preview/renderer/app.js | 6 ++--- run/markdown-preview/renderer/index.js | 6 +++-- run/markdown-preview/renderer/package.json | 7 +++--- .../renderer/test/app.test.js | 9 ++++---- .../renderer/test/system.test.js | 6 ++--- 11 files changed, 50 insertions(+), 47 deletions(-) diff --git a/run/markdown-preview/editor/app.js b/run/markdown-preview/editor/app.js index 3cd0f38714..3873d9166f 100644 --- a/run/markdown-preview/editor/app.js +++ b/run/markdown-preview/editor/app.js @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -const express = require('express'); -const handlebars = require('handlebars'); -const {readFile} = require('fs').promises; -const renderRequest = require('./render.js'); +import express from 'express'; +import handlebars from 'handlebars'; +import fs from 'fs'; +import renderRequest from './render.js'; const app = express(); app.use(express.json()); @@ -23,11 +23,14 @@ app.use(express.json()); let markdownDefault, compiledTemplate, renderedHtml; // Load the template files and serve them with the Editor service. -const buildRenderedHtml = async () => { +export const buildRenderedHtml = async () => { + const dirname = process.cwd(); try { - markdownDefault = await readFile(__dirname + '/templates/markdown.md'); + markdownDefault = await fs.promises.readFile( + dirname + '/templates/markdown.md' + ); compiledTemplate = handlebars.compile( - await readFile(__dirname + '/templates/index.html', 'utf8') + await fs.promises.readFile(dirname + '/templates/index.html', 'utf8') ); renderedHtml = compiledTemplate({default: markdownDefault}); return renderedHtml; @@ -62,7 +65,4 @@ app.post('/render', async (req, res) => { // [END cloudrun_secure_request_do] // Exports for testing purposes. -module.exports = { - app, - buildRenderedHtml, -}; +export default app; diff --git a/run/markdown-preview/editor/index.js b/run/markdown-preview/editor/index.js index 831ee1db01..8631e1de62 100644 --- a/run/markdown-preview/editor/index.js +++ b/run/markdown-preview/editor/index.js @@ -12,8 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -const {app} = require('./app'); -const pkg = require('./package.json'); -const PORT = parseInt(process.env.PORT) || 8080; +import app from './app.js'; +import fs from 'fs'; +const pkg = JSON.parse(fs.readFileSync('./package.json')); +const PORT = parseInt(process.env.PORT) || 8080; app.listen(PORT, () => console.log(`${pkg.name} listening on port ${PORT}`)); diff --git a/run/markdown-preview/editor/package.json b/run/markdown-preview/editor/package.json index 5ffa5dd772..61179d8b08 100644 --- a/run/markdown-preview/editor/package.json +++ b/run/markdown-preview/editor/package.json @@ -9,8 +9,9 @@ "type": "git", "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, + "type": "module", "engines": { - "node": ">=16.0.0" + "node": ">=20.0.0" }, "main": "main.js", "scripts": { @@ -23,12 +24,12 @@ "dependencies": { "express": "^4.17.1", "google-auth-library": "^9.0.0", - "got": "^11.5.0", - "handlebars": "^4.7.6" + "got": "^14.6.5", + "handlebars": "^4.7.8" }, "devDependencies": { "c8": "^10.0.0", - "mocha": "^10.0.0", + "mocha": "^11.0.0", "supertest": "^7.0.0" } } diff --git a/run/markdown-preview/editor/render.js b/run/markdown-preview/editor/render.js index cc75c4c533..bb31074787 100644 --- a/run/markdown-preview/editor/render.js +++ b/run/markdown-preview/editor/render.js @@ -13,8 +13,8 @@ // limitations under the License. // [START cloudrun_secure_request] -const {GoogleAuth} = require('google-auth-library'); -const got = require('got'); +import {GoogleAuth} from 'google-auth-library'; +import got from 'got'; const auth = new GoogleAuth(); let client, serviceUrl; @@ -33,7 +33,9 @@ const renderRequest = async markdown => { 'Content-Type': 'text/plain', }, body: markdown, - timeout: 3000, + timeout: { + request:3000, + }, }; try { @@ -69,4 +71,4 @@ const renderRequest = async markdown => { // [END cloudrun_secure_request] -module.exports = renderRequest; +export default renderRequest; diff --git a/run/markdown-preview/editor/test/app.test.js b/run/markdown-preview/editor/test/app.test.js index a2c92d5502..f89cb3f169 100644 --- a/run/markdown-preview/editor/test/app.test.js +++ b/run/markdown-preview/editor/test/app.test.js @@ -14,14 +14,13 @@ 'use strict'; -const assert = require('assert'); -const path = require('path'); -const supertest = require('supertest'); +import assert from 'assert'; +import supertest from 'supertest'; +import app, {buildRenderedHtml} from '../app.js'; describe('Editor unit tests', () => { describe('Initialize app', () => { it('should successfully load the index page', async () => { - const {app} = require(path.join(__dirname, '..', 'app')); const request = supertest(app); await request.get('/').retry(3).expect(200); }); @@ -31,7 +30,6 @@ describe('Editor unit tests', () => { let template; before(async () => { - const {buildRenderedHtml} = require(path.join(__dirname, '..', 'app')); template = await buildRenderedHtml(); }); @@ -48,7 +46,6 @@ describe('Integration tests', () => { before(async () => { process.env.EDITOR_UPSTREAM_RENDER_URL = 'https://www.example.com/'; - const {app} = require(path.join(__dirname, '..', 'app')); request = supertest(app); }); diff --git a/run/markdown-preview/editor/test/system.test.js b/run/markdown-preview/editor/test/system.test.js index f4a9971531..42ecf0c31e 100644 --- a/run/markdown-preview/editor/test/system.test.js +++ b/run/markdown-preview/editor/test/system.test.js @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -const assert = require('assert'); -const got = require('got'); -const {execSync} = require('child_process'); +import assert from 'assert'; +import got from 'got'; +import {execSync} from 'child_process'; describe('End-to-End Tests', () => { // Retrieve Cloud Run service test config diff --git a/run/markdown-preview/renderer/app.js b/run/markdown-preview/renderer/app.js index a984b37045..8a7b7de408 100644 --- a/run/markdown-preview/renderer/app.js +++ b/run/markdown-preview/renderer/app.js @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -const express = require('express'); -const MarkdownIt = require('markdown-it'); +import express from 'express'; +import MarkdownIt from 'markdown-it'; const app = express(); app.use(express.text()); @@ -40,4 +40,4 @@ app.post('/', (req, res) => { }); // Export for testing purposes. -module.exports = app; +export default app; diff --git a/run/markdown-preview/renderer/index.js b/run/markdown-preview/renderer/index.js index 43782b14ea..e5ee725a5e 100644 --- a/run/markdown-preview/renderer/index.js +++ b/run/markdown-preview/renderer/index.js @@ -12,8 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -const app = require('./app'); -const pkg = require('./package.json'); +import app from './app.js'; +import fs from 'fs'; + +const pkg = JSON.parse(fs.readFileSync('./package.json')); const PORT = parseInt(process.env.PORT) || 8080; app.listen(PORT, () => console.log(`${pkg.name} listening on port ${PORT}`)); diff --git a/run/markdown-preview/renderer/package.json b/run/markdown-preview/renderer/package.json index d947efe077..6f7b5cf0bb 100644 --- a/run/markdown-preview/renderer/package.json +++ b/run/markdown-preview/renderer/package.json @@ -8,8 +8,9 @@ "type": "git", "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, + "type": "module", "engines": { - "node": ">=16.0.0" + "node": ">=20.0.0" }, "main": "index.js", "scripts": { @@ -26,8 +27,8 @@ "devDependencies": { "c8": "^10.0.0", "google-auth-library": "^9.0.0", - "got": "^11.5.0", - "mocha": "^10.0.0", + "got": "^14.6.5", + "mocha": "^11.0.0", "sinon": "^18.0.0", "supertest": "^7.0.0" } diff --git a/run/markdown-preview/renderer/test/app.test.js b/run/markdown-preview/renderer/test/app.test.js index e8770795a5..84d225d1ba 100644 --- a/run/markdown-preview/renderer/test/app.test.js +++ b/run/markdown-preview/renderer/test/app.test.js @@ -14,16 +14,15 @@ 'use strict'; -const assert = require('assert'); -const path = require('path'); -const sinon = require('sinon'); -const supertest = require('supertest'); +import assert from 'assert'; +import sinon from 'sinon'; +import supertest from 'supertest'; +import app from '../app.js'; let request; describe('Unit Tests', () => { before(() => { - const app = require(path.join(__dirname, '..', 'app')); request = supertest(app); }); diff --git a/run/markdown-preview/renderer/test/system.test.js b/run/markdown-preview/renderer/test/system.test.js index 4b8213b129..97d8c9daf3 100644 --- a/run/markdown-preview/renderer/test/system.test.js +++ b/run/markdown-preview/renderer/test/system.test.js @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -const assert = require('assert'); -const got = require('got'); -const {execSync} = require('child_process'); +import assert from 'assert'; +import got from 'got'; +import {execSync} from 'child_process'; describe('End-to-End Tests', () => { // Retrieve Cloud Run service test config From c1ab262bd50a64ec7bc526c5d23192f721120ad1 Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Mon, 8 Dec 2025 21:59:18 +0000 Subject: [PATCH 2/3] style: Apply lint fixes and code formatting --- run/markdown-preview/editor/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/markdown-preview/editor/render.js b/run/markdown-preview/editor/render.js index bb31074787..cd68f1a219 100644 --- a/run/markdown-preview/editor/render.js +++ b/run/markdown-preview/editor/render.js @@ -34,7 +34,7 @@ const renderRequest = async markdown => { }, body: markdown, timeout: { - request:3000, + request: 3000, }, }; From 2f6f7abe3272260d71ab017ec52e944c5ee445cf Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Mon, 8 Dec 2025 21:59:18 +0000 Subject: [PATCH 3/3] style: Apply lint fixes and code formatting --- run/markdown-preview/editor/test/system.test.js | 4 +++- run/markdown-preview/renderer/test/system.test.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/run/markdown-preview/editor/test/system.test.js b/run/markdown-preview/editor/test/system.test.js index 42ecf0c31e..710ded7372 100644 --- a/run/markdown-preview/editor/test/system.test.js +++ b/run/markdown-preview/editor/test/system.test.js @@ -88,7 +88,9 @@ describe('End-to-End Tests', () => { headers: { Authorization: `Bearer ${ID_TOKEN.trim()}`, }, - retry: 3, + retry: { + limit: 3, + }, }; const response = await got('', options); assert.strictEqual(response.statusCode, 200); diff --git a/run/markdown-preview/renderer/test/system.test.js b/run/markdown-preview/renderer/test/system.test.js index 97d8c9daf3..19485f2b9e 100644 --- a/run/markdown-preview/renderer/test/system.test.js +++ b/run/markdown-preview/renderer/test/system.test.js @@ -74,7 +74,9 @@ describe('End-to-End Tests', () => { Authorization: `Bearer ${ID_TOKEN.trim()}`, }, method: 'POST', - retry: 3, + retry: { + limit: 3, + }, throwHttpErrors: false, }; const response = await got('', options);