Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jsops: migrate to ESM from CJM #228

Merged
merged 3 commits into from
Aug 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "codex.docs",
"license": "Apache-2.0",
"type": "module",
"browserslist": [
"last 2 versions",
"> 1%"
Expand All @@ -12,7 +13,7 @@
"build-frontend": "webpack --mode=production",
"build-frontend:dev": "webpack --mode=development --watch",
"test:js": "cross-env NODE_ENV=testing mocha --recursive ./dist/test --exit",
"test": "cross-env NODE_ENV=testing ts-mocha ./src/test/*.ts ./src/test/**/*.ts --exit",
"test": "cross-env NODE_ENV=testing ts-mocha -n loader=ts-node/esm ./src/test/*.ts ./src/test/**/*.ts --exit ",
"lint": "eslint --fix --ext .ts ./src/backend",
"editor-upgrade": "yarn add -D @editorjs/{editorjs,header,code,delimiter,list,link,image,table,inline-code,marker,warning,checklist,raw}@latest"
},
Expand All @@ -34,7 +35,7 @@
"multer": "^1.4.2",
"nedb": "^1.8.0",
"node-cache": "^5.1.2",
"node-fetch": "^2.6.1",
"node-fetch": "^3.2.10",
"open-graph-scraper": "^4.9.0",
"twig": "^1.15.4",
"uuid4": "^2.0.2"
Expand Down Expand Up @@ -98,7 +99,7 @@
"eslint-plugin-node": "^11.1.0",
"highlight.js": "^11.1.0",
"mini-css-extract-plugin": "^2.6.0",
"mocha": "^5.2.0",
"mocha": "^10.0.0",
"mocha-sinon": "^2.1.2",
"module-dispatcher": "^2.0.0",
"normalize.css": "^8.0.1",
Expand All @@ -118,10 +119,10 @@
"postcss-nesting": "^10.1.3",
"postcss-smart-import": "^0.7.6",
"rimraf": "^3.0.2",
"sinon": "^11.1.2",
"ts-mocha": "^8.0.0",
"ts-node": "^10.1.0",
"typescript": "^4.3.5",
"sinon": "^14.0.0",
"ts-mocha": "^10.0.0",
"ts-node": "^10.9.1",
"typescript": "^4.7.4",
"webpack": "^5.70.0",
"webpack-cli": "^4.9.2"
}
Expand Down
19 changes: 13 additions & 6 deletions src/backend/app.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
import express, { NextFunction, Request, Response } from 'express';
import path from 'path';
import { fileURLToPath } from 'url';
import cookieParser from 'cookie-parser';
import morgan from 'morgan';
import rcParser from './utils/rcparser';
import routes from './routes';
import HttpException from './exceptions/httpException';
import rcParser from './utils/rcparser.js';
import routes from './routes/index.js';
import HttpException from './exceptions/httpException.js';
import * as dotenv from 'dotenv';
import config from 'config';
import HawkCatcher from '@hawk.so/nodejs';
import { default as HawkCatcher } from '@hawk.so/nodejs';
import os from 'os';
import appConfig from 'config';
import { downloadFavicon, FaviconData } from './utils/downloadFavicon';
import { downloadFavicon, FaviconData } from './utils/downloadFavicon.js';

/**
* The __dirname CommonJS variables are not available in ES modules.
* https://nodejs.org/api/esm.html#no-__filename-or-__dirname
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
const __dirname = path.dirname(fileURLToPath(import.meta.url));

dotenv.config();
const app = express();
Expand All @@ -34,7 +41,7 @@ if (process.env.HAWK_TOKEN_CLIENT) {
// view engine setup
app.set('views', path.join(__dirname, './', 'views'));
app.set('view engine', 'twig');
require('./utils/twig');
import('./utils/twig.js');

const downloadedFaviconFolder = os.tmpdir();

Expand Down
2 changes: 1 addition & 1 deletion src/backend/controllers/aliases.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Alias from '../models/alias';
import Alias from '../models/alias.js';

/**
* @class Aliases
Expand Down
12 changes: 6 additions & 6 deletions src/backend/controllers/pages.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Page, { PageData } from '../models/page';
import Alias from '../models/alias';
import PagesOrder from './pagesOrder';
import PageOrder from '../models/pageOrder';
import HttpException from '../exceptions/httpException';
import PagesFlatArray from '../models/pagesFlatArray';
import Page, { PageData } from '../models/page.js';
import Alias from '../models/alias.js';
import PagesOrder from './pagesOrder.js';
import PageOrder from '../models/pageOrder.js';
import HttpException from '../exceptions/httpException.js';
import PagesFlatArray from '../models/pagesFlatArray.js';

type PageDataFields = keyof PageData;

Expand Down
6 changes: 3 additions & 3 deletions src/backend/controllers/pagesOrder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import PageOrder from '../models/pageOrder';
import Page from '../models/page';
import PagesFlatArray from '../models/pagesFlatArray';
import PageOrder from '../models/pageOrder.js';
import Page from '../models/page.js';
import PagesFlatArray from '../models/pagesFlatArray.js';

/**
* @class PagesOrder
Expand Down
6 changes: 3 additions & 3 deletions src/backend/controllers/transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import fetch from 'node-fetch';
import fs from 'fs';
import nodePath from 'path';
import config from 'config';
import File, { FileData } from '../models/file';
import crypto from '../utils/crypto';
import deepMerge from '../utils/objects';
import File, { FileData } from '../models/file.js';
import crypto from '../utils/crypto.js';
import deepMerge from '../utils/objects.js';

const random16 = crypto.random16;

Expand Down
4 changes: 2 additions & 2 deletions src/backend/models/alias.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import crypto from '../utils/crypto';
import database from '../utils/database/index';
import crypto from '../utils/crypto.js';
import database from '../utils/database/index.js';

const binaryMD5 = crypto.binaryMD5;
const aliasesDb = database['aliases'];
Expand Down
2 changes: 1 addition & 1 deletion src/backend/models/file.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import database from '../utils/database/index';
import database from '../utils/database/index.js';

const filesDb = database['files'];

Expand Down
4 changes: 2 additions & 2 deletions src/backend/models/page.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import urlify from '../utils/urlify';
import database from '../utils/database/index';
import urlify from '../utils/urlify.js';
import database from '../utils/database/index.js';

const pagesDb = database['pages'];

Expand Down
2 changes: 1 addition & 1 deletion src/backend/models/pageOrder.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import database from '../utils/database/index';
import database from '../utils/database/index.js';

const db = database['pagesOrder'];

Expand Down
4 changes: 2 additions & 2 deletions src/backend/models/pagesFlatArray.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Page from './page';
import PageOrder from './pageOrder';
import Page from './page.js';
import PageOrder from './pageOrder.js';
import NodeCache from 'node-cache';

// Create cache for flat array
Expand Down
10 changes: 5 additions & 5 deletions src/backend/routes/aliases.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import express, { Request, Response } from 'express';
import Aliases from '../controllers/aliases';
import Pages from '../controllers/pages';
import Alias from '../models/alias';
import verifyToken from './middlewares/token';
import PagesFlatArray from '../models/pagesFlatArray';
import Aliases from '../controllers/aliases.js';
import Pages from '../controllers/pages.js';
import Alias from '../models/alias.js';
import verifyToken from './middlewares/token.js';
import PagesFlatArray from '../models/pagesFlatArray.js';

const router = express.Router();

Expand Down
6 changes: 3 additions & 3 deletions src/backend/routes/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express from 'express';
import pagesAPI from './pages';
import transportAPI from './transport';
import linksAPI from './links';
import pagesAPI from './pages.js';
import transportAPI from './transport.js';
import linksAPI from './links.js';

const router = express.Router();

Expand Down
4 changes: 2 additions & 2 deletions src/backend/routes/api/pages.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express, { Request, Response } from 'express';
import multerFunc from 'multer';
import Pages from '../../controllers/pages';
import PagesOrder from '../../controllers/pagesOrder';
import Pages from '../../controllers/pages.js';
import PagesOrder from '../../controllers/pagesOrder.js';

const router = express.Router();
const multer = multerFunc();
Expand Down
4 changes: 2 additions & 2 deletions src/backend/routes/api/transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import multer, { StorageEngine } from 'multer';
import mime from 'mime';
import mkdirp from 'mkdirp';
import config from 'config';
import Transport from '../../controllers/transport';
import { random16 } from '../../utils/crypto';
import Transport from '../../controllers/transport.js';
import { random16 } from '../../utils/crypto.js';

const router = Router();

Expand Down
2 changes: 1 addition & 1 deletion src/backend/routes/home.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import express, { Request, Response } from 'express';
import verifyToken from './middlewares/token';
import verifyToken from './middlewares/token.js';

const router = express.Router();

Expand Down
12 changes: 6 additions & 6 deletions src/backend/routes/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import express from 'express';
import home from './home';
import pages from './pages';
import auth from './auth';
import aliases from './aliases';
import api from './api';
import pagesMiddleware from './middlewares/pages';
import home from './home.js';
import pages from './pages.js';
import auth from './auth.js';
import aliases from './aliases.js';
import api from './api/index.js';
import pagesMiddleware from './middlewares/pages.js';

const router = express.Router();

Expand Down
10 changes: 5 additions & 5 deletions src/backend/routes/middlewares/pages.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { NextFunction, Request, Response } from 'express';
import Pages from '../../controllers/pages';
import PagesOrder from '../../controllers/pagesOrder';
import Page from '../../models/page';
import asyncMiddleware from '../../utils/asyncMiddleware';
import PageOrder from '../../models/pageOrder';
import Pages from '../../controllers/pages.js';
import PagesOrder from '../../controllers/pagesOrder.js';
import Page from '../../models/page.js';
import asyncMiddleware from '../../utils/asyncMiddleware.js';
import PageOrder from '../../models/pageOrder.js';

/**
* Process one-level pages list to parent-children list
Expand Down
10 changes: 5 additions & 5 deletions src/backend/routes/pages.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import express, { NextFunction, Request, Response } from 'express';
import Pages from '../controllers/pages';
import PagesOrder from '../controllers/pagesOrder';
import verifyToken from './middlewares/token';
import allowEdit from './middlewares/locals';
import PagesFlatArray from '../models/pagesFlatArray';
import Pages from '../controllers/pages.js';
import PagesOrder from '../controllers/pagesOrder.js';
import verifyToken from './middlewares/token.js';
import allowEdit from './middlewares/locals.js';
import PagesFlatArray from '../models/pagesFlatArray.js';

const router = express.Router();

Expand Down
10 changes: 5 additions & 5 deletions src/backend/utils/database/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Datastore from 'nedb';
import { AliasData } from '../../models/alias';
import { FileData } from '../../models/file';
import { PageData } from '../../models/page';
import { PageOrderData } from '../../models/pageOrder';
import initDb from './initDb';
import { AliasData } from '../../models/alias.js';
import { FileData } from '../../models/file.js';
import { PageData } from '../../models/page.js';
import { PageOrderData } from '../../models/pageOrder.js';
import initDb from './initDb.js';

/**
* @typedef Options - optional params
Expand Down
4 changes: 2 additions & 2 deletions src/backend/utils/downloadFavicon.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import path from 'path';
import fs from 'fs';
import fetch from 'node-fetch';
import fetch, { RequestInit } from 'node-fetch';

/**
* Uploaded favicon data
Expand Down Expand Up @@ -61,7 +61,7 @@ export async function downloadFavicon(destination: string, faviconFolder: string
}, 5000);

// Make get request to url
const res = await fetch(destination, { signal: controller.signal });
const res = await fetch(destination, { signal: controller.signal as RequestInit['signal'] });
// Get buffer data from response
const fileData = await res.buffer();

Expand Down
8 changes: 8 additions & 0 deletions src/backend/utils/rcparser.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import fs from 'fs';
import path from 'path';
import config from 'config';
import { fileURLToPath } from 'url';

/**
* The __dirname CommonJS variables are not available in ES modules.
* https://nodejs.org/api/esm.html#no-__filename-or-__dirname
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
const __dirname = path.dirname(fileURLToPath(import.meta.url));

const rcPath = path.resolve(__dirname, '../../../', config.get('rcFile') || './.codexdocsrc');

Expand Down
10 changes: 9 additions & 1 deletion src/backend/utils/twig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@
*/
import twig from 'twig';
import fs from 'fs';
import urlify from './urlify';
import urlify from './urlify.js';
import path from 'path';
import { fileURLToPath } from 'url';

/**
* The __dirname CommonJS variables are not available in ES modules.
* https://nodejs.org/api/esm.html#no-__filename-or-__dirname
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
const __dirname = path.dirname(fileURLToPath(import.meta.url));

export default (function () {
'use strict';
Expand Down
2 changes: 1 addition & 1 deletion src/backend/utils/urlify.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import translateString from './translation';
import translateString from './translation.js';

/**
* Convert text to URL-like string
Expand Down
4 changes: 2 additions & 2 deletions src/bin/server.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* Module dependencies.
*/
import app from '../backend/app';
import app from '../backend/app.js';
import http from 'http';
import config from 'config';
import Debug from 'debug';
Expand Down Expand Up @@ -96,4 +96,4 @@ function onListening(): void {
export default {
server,
app,
};
};
2 changes: 1 addition & 1 deletion src/test/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import config from 'config';
import { expect } from 'chai';
import Datastore from 'nedb';

import { Database } from '../backend/utils/database';
import { Database } from '../backend/utils/database/index.js';

interface Document {
data?: any;
Expand Down
4 changes: 2 additions & 2 deletions src/test/express.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import chaiHTTP from 'chai-http';
import chai, { expect } from 'chai';

import server from '../bin/server';
import server from '../bin/server.js';

const app = server.app;

Expand All @@ -16,4 +16,4 @@ describe('Express app', () => {

expect(result).to.have.status(200);
});
});
});
Loading