diff --git a/run/markdown-preview/editor/app.js b/run/markdown-preview/editor/app.js index 4edda65360..6d44ce5b77 100644 --- a/run/markdown-preview/editor/app.js +++ b/run/markdown-preview/editor/app.js @@ -12,24 +12,30 @@ // 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()); 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; } catch (err) { throw Error('Error loading template: ', err); @@ -64,7 +70,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..51d2cea609 100644 --- a/run/markdown-preview/editor/index.js +++ b/run/markdown-preview/editor/index.js @@ -12,8 +12,11 @@ // 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/editor/package.json b/run/markdown-preview/editor/package.json index 09a8682d5d..6adbef7285 100644 --- a/run/markdown-preview/editor/package.json +++ b/run/markdown-preview/editor/package.json @@ -9,6 +9,7 @@ "type": "git", "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, + "type": "module", "engines": { "node": ">=16.0.0" }, @@ -21,8 +22,8 @@ "dependencies": { "express": "^4.17.1", "google-auth-library": "^9.0.0", - "got": "^11.8.0", - "handlebars": "^4.7.6" + "got": "^14.0.0", + "handlebars": "^4.7.8" }, "devDependencies": { "c8": "^8.0.0", diff --git a/run/markdown-preview/editor/render.js b/run/markdown-preview/editor/render.js index 9a35f6c3b5..0240480e89 100644 --- a/run/markdown-preview/editor/render.js +++ b/run/markdown-preview/editor/render.js @@ -14,8 +14,10 @@ // [START cloudrun_secure_request] // [START run_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; @@ -34,7 +36,9 @@ const renderRequest = async markdown => { 'Content-Type': 'text/plain', }, body: markdown, - timeout: 3000, + timeout: { + request: 10000, + }, }; try { @@ -61,4 +65,4 @@ const renderRequest = async markdown => { // [END run_secure_request] // [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 b9741edc9e..e8f14e4fe1 100644 --- a/run/markdown-preview/editor/test/app.test.js +++ b/run/markdown-preview/editor/test/app.test.js @@ -12,16 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -'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 +28,6 @@ describe('Editor unit tests', () => { let template; before(async () => { - const {buildRenderedHtml} = require(path.join(__dirname, '..', 'app')); template = await buildRenderedHtml(); }); @@ -48,7 +44,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 da5f55e622..4049de6452 100644 --- a/run/markdown-preview/editor/test/system.test.js +++ b/run/markdown-preview/editor/test/system.test.js @@ -12,10 +12,11 @@ // 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'); -const {GoogleAuth} = require('google-auth-library'); +import assert from 'assert'; +import got from 'got'; +import {execSync} from 'child_process'; +import {GoogleAuth} from 'google-auth-library'; + const auth = new GoogleAuth(); describe('End-to-End Tests', () => { 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..51d2cea609 100644 --- a/run/markdown-preview/renderer/index.js +++ b/run/markdown-preview/renderer/index.js @@ -12,8 +12,11 @@ // 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 e8c67c56f9..ae9132aed8 100644 --- a/run/markdown-preview/renderer/package.json +++ b/run/markdown-preview/renderer/package.json @@ -8,6 +8,7 @@ "type": "git", "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, + "type": "module", "engines": { "node": ">=16.0.0" }, @@ -18,13 +19,13 @@ "system-test": "c8 mocha -p -j 2 test/system.test.js --timeout=360000 --exit" }, "dependencies": { - "express": "^4.17.1", - "markdown-it": "^13.0.0" + "express": "^4.18.2", + "markdown-it": "^14.0.0" }, "devDependencies": { "c8": "^8.0.0", "google-auth-library": "^9.0.0", - "got": "^11.5.0", + "got": "^14.0.0", "mocha": "^10.0.0", "sinon": "^16.0.0", "supertest": "^6.0.0" diff --git a/run/markdown-preview/renderer/test/app.test.js b/run/markdown-preview/renderer/test/app.test.js index e8770795a5..b86ce9769d 100644 --- a/run/markdown-preview/renderer/test/app.test.js +++ b/run/markdown-preview/renderer/test/app.test.js @@ -12,18 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -'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 f1ac45557c..0a86e132aa 100644 --- a/run/markdown-preview/renderer/test/system.test.js +++ b/run/markdown-preview/renderer/test/system.test.js @@ -12,10 +12,11 @@ // 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'); -const {GoogleAuth} = require('google-auth-library'); +import assert from 'assert'; +import got from 'got'; +import {execSync} from 'child_process'; +import {GoogleAuth} from 'google-auth-library'; + const auth = new GoogleAuth(); describe('End-to-End Tests', () => {