From 86aa22a99db2cc158c4f28732aa8eba24efbfaac Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Tue, 23 Aug 2022 00:13:47 +0300 Subject: [PATCH 1/3] jsops: migrate to ESM from CJM --- package.json | 7 +- src/backend/app.ts | 19 +++- src/backend/controllers/aliases.ts | 2 +- src/backend/controllers/pages.ts | 12 +- src/backend/controllers/pagesOrder.ts | 6 +- src/backend/controllers/transport.ts | 6 +- src/backend/models/alias.ts | 4 +- src/backend/models/file.ts | 2 +- src/backend/models/page.ts | 4 +- src/backend/models/pageOrder.ts | 2 +- src/backend/models/pagesFlatArray.ts | 4 +- src/backend/routes/aliases.ts | 10 +- src/backend/routes/api/index.ts | 6 +- src/backend/routes/api/pages.ts | 4 +- src/backend/routes/api/transport.ts | 4 +- src/backend/routes/home.ts | 2 +- src/backend/routes/index.ts | 12 +- src/backend/routes/middlewares/pages.ts | 10 +- src/backend/routes/pages.ts | 10 +- src/backend/utils/database/index.ts | 10 +- src/backend/utils/downloadFavicon.ts | 4 +- src/backend/utils/rcparser.ts | 8 ++ src/backend/utils/twig.ts | 10 +- src/backend/utils/urlify.ts | 2 +- src/bin/server.ts | 4 +- src/test/models/alias.ts | 14 ++- src/test/models/file.ts | 20 +++- src/test/models/page.ts | 14 ++- src/test/models/pageOrder.ts | 12 +- src/test/rest/aliases.ts | 10 +- src/test/rest/pages.ts | 21 +++- src/test/rest/transport.ts | 17 ++- tsconfig.json | 25 +++-- webpack.config.js | 37 ++++++- yarn.lock | 140 ++++++++++-------------- 35 files changed, 287 insertions(+), 187 deletions(-) diff --git a/package.json b/package.json index f71eb53b..6f964f86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "codex.docs", "license": "Apache-2.0", + "type": "module", "browserslist": [ "last 2 versions", "> 1%" @@ -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" @@ -120,8 +121,8 @@ "rimraf": "^3.0.2", "sinon": "^11.1.2", "ts-mocha": "^8.0.0", - "ts-node": "^10.1.0", - "typescript": "^4.3.5", + "ts-node": "^10.9.1", + "typescript": "^4.7.4", "webpack": "^5.70.0", "webpack-cli": "^4.9.2" } diff --git a/src/backend/app.ts b/src/backend/app.ts index 6bbbbcba..049ec81b 100644 --- a/src/backend/app.ts +++ b/src/backend/app.ts @@ -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(); @@ -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(); diff --git a/src/backend/controllers/aliases.ts b/src/backend/controllers/aliases.ts index 06283025..4416fcee 100644 --- a/src/backend/controllers/aliases.ts +++ b/src/backend/controllers/aliases.ts @@ -1,4 +1,4 @@ -import Alias from '../models/alias'; +import Alias from '../models/alias.js'; /** * @class Aliases diff --git a/src/backend/controllers/pages.ts b/src/backend/controllers/pages.ts index 5329552a..f5d70df9 100644 --- a/src/backend/controllers/pages.ts +++ b/src/backend/controllers/pages.ts @@ -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; diff --git a/src/backend/controllers/pagesOrder.ts b/src/backend/controllers/pagesOrder.ts index 02278784..f0a287cd 100644 --- a/src/backend/controllers/pagesOrder.ts +++ b/src/backend/controllers/pagesOrder.ts @@ -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 diff --git a/src/backend/controllers/transport.ts b/src/backend/controllers/transport.ts index 1ebd9279..4bd5918d 100644 --- a/src/backend/controllers/transport.ts +++ b/src/backend/controllers/transport.ts @@ -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; diff --git a/src/backend/models/alias.ts b/src/backend/models/alias.ts index 58d8142e..5853004e 100644 --- a/src/backend/models/alias.ts +++ b/src/backend/models/alias.ts @@ -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']; diff --git a/src/backend/models/file.ts b/src/backend/models/file.ts index 794ce0a3..e70d849e 100644 --- a/src/backend/models/file.ts +++ b/src/backend/models/file.ts @@ -1,4 +1,4 @@ -import database from '../utils/database/index'; +import database from '../utils/database/index.js'; const filesDb = database['files']; diff --git a/src/backend/models/page.ts b/src/backend/models/page.ts index d90b1869..cc99baf4 100644 --- a/src/backend/models/page.ts +++ b/src/backend/models/page.ts @@ -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']; diff --git a/src/backend/models/pageOrder.ts b/src/backend/models/pageOrder.ts index e66fb9e4..24ffc17b 100644 --- a/src/backend/models/pageOrder.ts +++ b/src/backend/models/pageOrder.ts @@ -1,4 +1,4 @@ -import database from '../utils/database/index'; +import database from '../utils/database/index.js'; const db = database['pagesOrder']; diff --git a/src/backend/models/pagesFlatArray.ts b/src/backend/models/pagesFlatArray.ts index 8388cd23..c0b5366e 100644 --- a/src/backend/models/pagesFlatArray.ts +++ b/src/backend/models/pagesFlatArray.ts @@ -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 diff --git a/src/backend/routes/aliases.ts b/src/backend/routes/aliases.ts index 826d2da4..df467e86 100644 --- a/src/backend/routes/aliases.ts +++ b/src/backend/routes/aliases.ts @@ -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(); diff --git a/src/backend/routes/api/index.ts b/src/backend/routes/api/index.ts index be225d83..7cb23289 100644 --- a/src/backend/routes/api/index.ts +++ b/src/backend/routes/api/index.ts @@ -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(); diff --git a/src/backend/routes/api/pages.ts b/src/backend/routes/api/pages.ts index 7aef3358..f4b16737 100644 --- a/src/backend/routes/api/pages.ts +++ b/src/backend/routes/api/pages.ts @@ -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(); diff --git a/src/backend/routes/api/transport.ts b/src/backend/routes/api/transport.ts index 0f99bdd0..f4925062 100644 --- a/src/backend/routes/api/transport.ts +++ b/src/backend/routes/api/transport.ts @@ -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(); diff --git a/src/backend/routes/home.ts b/src/backend/routes/home.ts index ffe01487..3f82940d 100644 --- a/src/backend/routes/home.ts +++ b/src/backend/routes/home.ts @@ -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(); diff --git a/src/backend/routes/index.ts b/src/backend/routes/index.ts index 2057c44d..b65d6539 100644 --- a/src/backend/routes/index.ts +++ b/src/backend/routes/index.ts @@ -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(); diff --git a/src/backend/routes/middlewares/pages.ts b/src/backend/routes/middlewares/pages.ts index 523b7cc3..528ee634 100644 --- a/src/backend/routes/middlewares/pages.ts +++ b/src/backend/routes/middlewares/pages.ts @@ -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 diff --git a/src/backend/routes/pages.ts b/src/backend/routes/pages.ts index 37908b04..b4c64242 100644 --- a/src/backend/routes/pages.ts +++ b/src/backend/routes/pages.ts @@ -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(); diff --git a/src/backend/utils/database/index.ts b/src/backend/utils/database/index.ts index 1f1f60bc..caf23d84 100644 --- a/src/backend/utils/database/index.ts +++ b/src/backend/utils/database/index.ts @@ -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 diff --git a/src/backend/utils/downloadFavicon.ts b/src/backend/utils/downloadFavicon.ts index ffecfb79..73aa2c00 100644 --- a/src/backend/utils/downloadFavicon.ts +++ b/src/backend/utils/downloadFavicon.ts @@ -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 @@ -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(); diff --git a/src/backend/utils/rcparser.ts b/src/backend/utils/rcparser.ts index 85a274d8..1b1befd9 100644 --- a/src/backend/utils/rcparser.ts +++ b/src/backend/utils/rcparser.ts @@ -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'); diff --git a/src/backend/utils/twig.ts b/src/backend/utils/twig.ts index 0c66ad9e..0cf2925d 100644 --- a/src/backend/utils/twig.ts +++ b/src/backend/utils/twig.ts @@ -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'; diff --git a/src/backend/utils/urlify.ts b/src/backend/utils/urlify.ts index 9716a10f..8ce67785 100644 --- a/src/backend/utils/urlify.ts +++ b/src/backend/utils/urlify.ts @@ -1,4 +1,4 @@ -import translateString from './translation'; +import translateString from './translation.js'; /** * Convert text to URL-like string diff --git a/src/bin/server.ts b/src/bin/server.ts index 5ea477ba..3b671356 100644 --- a/src/bin/server.ts +++ b/src/bin/server.ts @@ -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'; @@ -96,4 +96,4 @@ function onListening(): void { export default { server, app, -}; \ No newline at end of file +}; diff --git a/src/test/models/alias.ts b/src/test/models/alias.ts index 453457e8..32e2ad24 100644 --- a/src/test/models/alias.ts +++ b/src/test/models/alias.ts @@ -2,12 +2,20 @@ import { expect } from 'chai'; import fs from 'fs'; import path from 'path'; import config from 'config'; -import Alias from '../../backend/models/alias'; -import { binaryMD5 } from '../../backend/utils/crypto'; -import database from '../../backend/utils/database'; +import Alias from '../../backend/models/alias.js'; +import { binaryMD5 } from '../../backend/utils/crypto.js'; +import database from '../../backend/utils/database/index.js'; +import { fileURLToPath } from 'url'; const aliases = database['aliases']; +/** + * 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)); + describe('Alias model', () => { after(() => { const pathToDB = path.resolve(__dirname, '../../../', config.get('database'), './aliases.db'); diff --git a/src/test/models/file.ts b/src/test/models/file.ts index f1d54a4a..434aacce 100644 --- a/src/test/models/file.ts +++ b/src/test/models/file.ts @@ -2,8 +2,16 @@ import { expect } from 'chai'; import fs from 'fs'; import path from 'path'; import config from 'config'; -import File from '../../backend/models/file'; -import database from '../../backend/utils/database'; +import File from '../../backend/models/file.js'; +import database from '../../backend/utils/database/index.js'; +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 files = database['files']; @@ -159,9 +167,9 @@ describe('File model', () => { if (savedFile._id !== undefined){ const foundFile = await File.get(savedFile._id); - + const { data } = foundFile; - + expect(data._id).to.equal(savedFile._id); expect(data.name).to.equal(savedFile.name); expect(data.filename).to.equal(savedFile.filename); @@ -188,9 +196,9 @@ describe('File model', () => { if (savedFile.filename !== undefined){ const foundFile = await File.getByFilename(savedFile.filename); - + const { data } = foundFile; - + expect(data._id).to.equal(savedFile._id); expect(data.name).to.equal(savedFile.name); expect(data.filename).to.equal(savedFile.filename); diff --git a/src/test/models/page.ts b/src/test/models/page.ts index bd9d61d1..d94e14e0 100644 --- a/src/test/models/page.ts +++ b/src/test/models/page.ts @@ -2,9 +2,17 @@ import { expect } from 'chai'; import fs from 'fs'; import path from 'path'; import config from 'config'; -import Page from '../../backend/models/page'; -import translateString from '../../backend/utils/translation'; -import database from '../../backend/utils/database'; +import Page from '../../backend/models/page.js'; +import translateString from '../../backend/utils/translation.js'; +import database from '../../backend/utils/database/index.js'; +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 pages = database['pages']; diff --git a/src/test/models/pageOrder.ts b/src/test/models/pageOrder.ts index 7a3bbe39..574e357e 100644 --- a/src/test/models/pageOrder.ts +++ b/src/test/models/pageOrder.ts @@ -2,8 +2,16 @@ import { expect } from 'chai'; import fs from 'fs'; import path from 'path'; import config from 'config'; -import PageOrder from '../../backend/models/pageOrder'; -import database from '../../backend/utils/database'; +import PageOrder from '../../backend/models/pageOrder.js'; +import database from '../../backend/utils/database/index.js'; +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 pagesOrder = database['pagesOrder']; diff --git a/src/test/rest/aliases.ts b/src/test/rest/aliases.ts index fe9ec3ea..620989e1 100644 --- a/src/test/rest/aliases.ts +++ b/src/test/rest/aliases.ts @@ -3,7 +3,15 @@ import path from 'path'; import config from 'config'; import chai from 'chai'; import chaiHTTP from 'chai-http'; -import server from '../../bin/server'; +import server from '../../bin/server.js'; +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 {expect} = chai; const app = server.app; diff --git a/src/test/rest/pages.ts b/src/test/rest/pages.ts index ca73eb63..6c36b29e 100644 --- a/src/test/rest/pages.ts +++ b/src/test/rest/pages.ts @@ -3,11 +3,20 @@ import path from 'path'; import config from 'config'; import chai from 'chai'; import chaiHTTP from 'chai-http'; -import server from '../../bin/server'; -import model from '../../backend/models/page'; -import Page from '../../backend/models/page'; -import PageOrder from '../../backend/models/pageOrder'; -import translateString from '../../backend/utils/translation'; +import server from '../../bin/server.js'; +import model from '../../backend/models/page.js'; +import Page from '../../backend/models/page.js'; +import PageOrder from '../../backend/models/pageOrder.js'; +import translateString from '../../backend/utils/translation.js'; +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 {expect} = chai; const app = server.app; @@ -516,7 +525,7 @@ describe('Pages REST: ', () => { page6 = await Page.get(pages[6]); expect(page6.data._id).to.be.undefined; - + page7 = await Page.get(pages[7]); expect(page7.data._id).to.be.undefined; diff --git a/src/test/rest/transport.ts b/src/test/rest/transport.ts index ccee0620..882943e8 100644 --- a/src/test/rest/transport.ts +++ b/src/test/rest/transport.ts @@ -5,8 +5,17 @@ import chai from 'chai'; import chaiHTTP from 'chai-http'; import rimraf from 'rimraf'; import config from 'config'; -import server from '../../bin/server'; -import model from '../../backend/models/file'; +import server from '../../bin/server.js'; +import model from '../../backend/models/file.js'; +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 {expect} = chai; const app = server.app; @@ -119,7 +128,7 @@ describe('Transport routes: ', () => { if (file.path !== undefined){ const getRes = await agent .get(file.path); - + expect(getRes).to.have.status(200); expect(getRes).to.have.header('content-type', new RegExp(`^${file.mimetype}`)); } @@ -170,7 +179,7 @@ describe('Transport routes: ', () => { if (file.path !== undefined){ const getRes = await agent .get(file.path); - + expect(getRes).to.have.status(200); expect(getRes).to.have.header('content-type', file.mimetype); } diff --git a/tsconfig.json b/tsconfig.json index c92b512a..69ddde1a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,9 +4,11 @@ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ - "target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ + "target": "ES2021", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ + "module": "Node16", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": [ /* Specify library files to be included in the compilation. */ + "ESNext" /* ESNext includes new Level-4 features that were recently added to the ECMA-262 JS spec */ + ], // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ @@ -44,13 +46,15 @@ // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + "moduleResolution": "NodeNext", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "types": [ /* Type declaration files to be included in compilation. */ + "node" + ], + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ @@ -69,5 +73,12 @@ "skipLibCheck": true, /* Skip type checking of declaration files. */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, - "include": ["src/**/*"] + "include": ["src/**/*"], + "ts-node": { + /** + * Tell ts-node CLI to install the --loader automatically, explained below + * https://typestrong.org/ts-node/docs/imports/ + */ + "esm": true + } } diff --git a/webpack.config.js b/webpack.config.js index 997726a7..90fa76f2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,5 +1,12 @@ -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const path = require('path'); +import MiniCssExtractPlugin from 'mini-css-extract-plugin'; +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 + */ +const __dirname = path.dirname(fileURLToPath(import.meta.url)); /** * Options for the Babel @@ -22,7 +29,7 @@ const babelLoader = { }, }; -module.exports = () => { +export default () => { return { entry: './src/frontend/js/app.js', output: { @@ -53,9 +60,31 @@ module.exports = () => { loader: 'postcss-loader', }, ], - }, { + }, + /** + * https://github.com/webpack/webpack/issues/11467#issuecomment-691873586 + */ + // { + // test: /\.m?js/, + // type: "javascript/auto", + // }, + // { + // test: /\.m?js/, + // resolve: { + // fullySpecified: false, + // }, + // }, + { test: /\.js$/, exclude: /(node_modules|bower_components)/, + resolve: { + /** + * Disable mandatory to specify full paths with extensions using '"type": "module"' in package.json + * @see https://github.com/webpack/webpack/issues/11467#issuecomment-691873586 + * @see https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten + */ + fullySpecified: false, + }, use: [ babelLoader, ], diff --git a/yarn.lock b/yarn.lock index f25e47b1..aec25318 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,7 +11,6 @@ "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" @@ -805,15 +804,11 @@ version "1.0.0" resolved "https://registry.yarnpkg.com/@codexteam/misprints/-/misprints-1.0.0.tgz#e5a7dec7389fe0f176cd51a040d6dc9bdc252086" -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" dependencies: - "@cspotcode/source-map-consumer" "0.8.0" + "@jridgewell/trace-mapping" "0.3.9" "@csstools/convert-colors@^1.4.0": version "1.4.0" @@ -902,7 +897,6 @@ "@hawk.so/javascript@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@hawk.so/javascript/-/javascript-3.0.1.tgz#364a646dce1448a805ec1b475a729b731820a8c8" - integrity sha512-c8YzhxDzginwzavhW9uwYT8FkYl8beUbr5bpuzcTTX+KKR1ryntogBIaYvTSbdr/ZMP9aS6yJQ9vKglJON3f/Q== dependencies: "@hawk.so/types" "^0.1.13" error-stack-parser "^2.0.6" @@ -910,7 +904,6 @@ "@hawk.so/nodejs@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@hawk.so/nodejs/-/nodejs-3.1.2.tgz#b06229f0c8a0d8676412329511f9f2b01e492211" - integrity sha512-FqZtJDEc3G/VdirsEEfA4BodA3OGXCSy2188aPSeaLkLWswaKAnkaJNTGHQL59dtOeSbvipMJVgtoqihHkpGBQ== dependencies: "@hawk.so/types" "^0.1.15" axios "^0.21.1" @@ -919,7 +912,6 @@ "@hawk.so/types@^0.1.13", "@hawk.so/types@^0.1.15": version "0.1.18" resolved "https://registry.yarnpkg.com/@hawk.so/types/-/types-0.1.18.tgz#746537634756825f066182737429d11ea124d5c5" - integrity sha512-SvECLGmLb5t90OSpk3n8DCjJsUoyjrq/Z6Ioil80tVkbMXRdGjaHZpn/0w1gBqtgNWBfW2cSbsQPqmyDj1NsqQ== dependencies: "@types/mongodb" "^3.5.34" @@ -962,6 +954,13 @@ version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.0": version "0.3.4" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" @@ -1074,7 +1073,6 @@ "@types/bson@*": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.2.0.tgz#a2f71e933ff54b2c3bf267b67fa221e295a33337" - integrity sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg== dependencies: bson "*" @@ -1224,7 +1222,6 @@ "@types/mongodb@^3.5.34": version "3.6.20" resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.20.tgz#b7c5c580644f6364002b649af1c06c3c0454e1d2" - integrity sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ== dependencies: "@types/bson" "*" "@types/node" "*" @@ -1694,7 +1691,6 @@ autoprefixer@^10.4.2: axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: follow-redirects "^1.14.0" @@ -1763,7 +1759,6 @@ balanced-match@^1.0.0: base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== basic-auth@~2.0.1: version "2.0.1" @@ -1830,7 +1825,6 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4 bson@*: version "4.6.4" resolved "https://registry.yarnpkg.com/bson/-/bson-4.6.4.tgz#e66d4a334f1ab230dfcfb9ec4ea9091476dd372e" - integrity sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ== dependencies: buffer "^5.6.0" @@ -1845,7 +1839,6 @@ buffer-from@^1.0.0, buffer-from@^1.1.0: buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" @@ -2020,7 +2013,6 @@ clone-response@^1.0.2: clone@2.x: version "2.1.2" resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== code-point-at@^1.0.0: version "1.1.0" @@ -2361,6 +2353,10 @@ csurf@^1.11.0: csrf "3.1.0" http-errors "~1.7.3" +data-uri-to-buffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" + date-fns@^2.16.1: version "2.28.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" @@ -2577,7 +2573,6 @@ error-ex@^1.2.0, error-ex@^1.3.1: error-stack-parser@^2.0.6: version "2.1.4" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: stackframe "^1.3.4" @@ -2966,6 +2961,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2983,7 +2985,6 @@ file-type@*: file-type@^16.5.4: version "16.5.4" resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" - integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== dependencies: readable-web-to-node-stream "^3.0.0" strtok3 "^6.2.4" @@ -3060,7 +3061,6 @@ flatten@^1.0.2: follow-redirects@^1.14.0: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== foreachasync@^3.0.0: version "3.0.0" @@ -3089,6 +3089,12 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + dependencies: + fetch-blob "^3.1.2" + formidable@^1.2.0: version "1.2.6" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" @@ -3247,18 +3253,6 @@ growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" -handlebars@^4.1.0: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -3305,6 +3299,10 @@ hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" @@ -3920,7 +3918,7 @@ make-dir@^1.3.0: dependencies: pify "^3.0.0" -make-dir@^2.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" dependencies: @@ -4147,10 +4145,9 @@ negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nice-try@^1.0.4: version "1.0.5" @@ -4169,15 +4166,20 @@ nise@^5.1.0: node-cache@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== dependencies: clone "2.x" -node-fetch@^2.6.1: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + +node-fetch@^3.2.10: + version "3.2.10" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" dependencies: - whatwg-url "^5.0.0" + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" node-releases@^2.0.2: version "2.0.3" @@ -5437,12 +5439,10 @@ stable@^0.1.8: stack-trace@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== stackframe@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== statuses@2.0.1: version "2.0.1" @@ -5597,10 +5597,9 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" -supports-color@^6.0.0: +supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" @@ -5717,10 +5716,6 @@ token-types@^5.0.0-alpha.2: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -5746,11 +5741,11 @@ ts-node@7.0.1: source-map-support "^0.5.6" yn "^2.0.0" -ts-node@^10.1.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" dependencies: - "@cspotcode/source-map-support" "0.7.0" + "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" @@ -5761,7 +5756,7 @@ ts-node@^10.1.0: create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" - v8-compile-cache-lib "^3.0.0" + v8-compile-cache-lib "^3.0.1" yn "3.1.1" tsconfig-paths@^3.14.1, tsconfig-paths@^3.5.0, tsconfig-paths@^3.9.0: @@ -5825,14 +5820,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^4.3.5: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - -uglify-js@^3.1.4: - version "3.16.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.3.tgz#94c7a63337ee31227a18d03b8a3041c210fd1f1d" - integrity sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw== +typescript@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" uid-safe@2.1.5: version "2.1.5" @@ -5906,9 +5896,9 @@ uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" -v8-compile-cache-lib@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" v8-compile-cache@^2.0.3: version "2.3.0" @@ -5942,9 +5932,9 @@ watchpack@^2.3.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" webpack-cli@^4.9.2: version "4.9.2" @@ -6003,13 +5993,6 @@ webpack@^5.70.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -6044,11 +6027,6 @@ word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" From b9bd03929b4fb93591ac7eae0bc02d3a18ebb639 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Tue, 23 Aug 2022 00:29:04 +0300 Subject: [PATCH 2/3] rm unused code --- webpack.config.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 90fa76f2..811aa0fa 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -61,19 +61,6 @@ export default () => { }, ], }, - /** - * https://github.com/webpack/webpack/issues/11467#issuecomment-691873586 - */ - // { - // test: /\.m?js/, - // type: "javascript/auto", - // }, - // { - // test: /\.m?js/, - // resolve: { - // fullySpecified: false, - // }, - // }, { test: /\.js$/, exclude: /(node_modules|bower_components)/, From 8eec0fd8c051cbaf951168d2efcfc4366186ddf7 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Tue, 23 Aug 2022 23:22:08 +0300 Subject: [PATCH 3/3] fix ci --- package.json | 8 +- src/test/database.ts | 2 +- src/test/express.ts | 4 +- src/test/rcparser.ts | 2 +- tsconfig.json | 3 +- yarn.lock | 342 ++++++++++++++++++++++++++++--------------- 6 files changed, 237 insertions(+), 124 deletions(-) diff --git a/package.json b/package.json index 6f964f86..b84b0a76 100644 --- a/package.json +++ b/package.json @@ -13,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" }, @@ -99,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", @@ -119,8 +119,8 @@ "postcss-nesting": "^10.1.3", "postcss-smart-import": "^0.7.6", "rimraf": "^3.0.2", - "sinon": "^11.1.2", - "ts-mocha": "^8.0.0", + "sinon": "^14.0.0", + "ts-mocha": "^10.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "^5.70.0", diff --git a/src/test/database.ts b/src/test/database.ts index a0732238..5305a897 100644 --- a/src/test/database.ts +++ b/src/test/database.ts @@ -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; diff --git a/src/test/express.ts b/src/test/express.ts index c74dbed8..e7c15637 100644 --- a/src/test/express.ts +++ b/src/test/express.ts @@ -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; @@ -16,4 +16,4 @@ describe('Express app', () => { expect(result).to.have.status(200); }); -}); \ No newline at end of file +}); diff --git a/src/test/rcparser.ts b/src/test/rcparser.ts index 41722178..0f45a54f 100644 --- a/src/test/rcparser.ts +++ b/src/test/rcparser.ts @@ -4,7 +4,7 @@ import path from 'path'; import config from 'config'; import sinon = require('sinon'); -import rcParser from '../backend/utils/rcparser'; +import rcParser from '../backend/utils/rcparser.js'; const rcPath = path.resolve(process.cwd(), config.get('rcFile')); diff --git a/tsconfig.json b/tsconfig.json index 69ddde1a..7421f9c5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -52,7 +52,8 @@ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ "types": [ /* Type declaration files to be included in compilation. */ - "node" + "node", + "mocha" ], "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ diff --git a/yarn.lock b/yarn.lock index aec25318..3b5f44fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1009,13 +1009,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/samsam@^6.0.2": +"@sinonjs/samsam@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" dependencies: @@ -1385,6 +1385,10 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -1574,7 +1578,7 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@^4.1.1: +ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1606,6 +1610,13 @@ any-promise@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + append-field@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" @@ -1630,6 +1641,10 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1770,6 +1785,10 @@ big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + binary-search-tree@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" @@ -1802,7 +1821,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" dependencies: @@ -1894,6 +1919,10 @@ camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -1976,6 +2005,20 @@ cheerio@^1.0.0-rc.10: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -2060,10 +2103,6 @@ combined-stream@^1.0.6, combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2367,11 +2406,11 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" dependencies: - ms "2.0.0" + ms "2.1.2" debug@^3.1.0, debug@^3.2.7: version "3.2.7" @@ -2379,16 +2418,14 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - dependencies: - ms "2.1.2" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -2444,7 +2481,11 @@ dicer@0.2.5: readable-stream "1.1.x" streamsearch "0.1.2" -diff@3.5.0, diff@^3.1.0: +diff@5.0.0, diff@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + +diff@^3.1.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2452,10 +2493,6 @@ diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" -diff@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2631,14 +2668,14 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escape-string-regexp@^4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + eslint-config-codex@^1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/eslint-config-codex/-/eslint-config-codex-1.6.4.tgz#41e55d0b27a09f9d2101cf853509b317e9b09383" @@ -3024,6 +3061,13 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -3050,6 +3094,10 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + flatted@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" @@ -3115,6 +3163,10 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3170,7 +3222,7 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" dependencies: @@ -3180,18 +3232,7 @@ glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.5, glob@^7.1.3: +glob@7.2.0, glob@^7.0.5, glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" dependencies: @@ -3249,10 +3290,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4 version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -3287,9 +3324,9 @@ hasha@^3.0.0: dependencies: is-stream "^1.0.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" highlight.js@^11.1.0: version "11.5.1" @@ -3456,6 +3493,12 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -3497,7 +3540,7 @@ is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" dependencies: @@ -3523,6 +3566,10 @@ is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -3562,6 +3609,10 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -3642,6 +3693,12 @@ js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3827,6 +3884,12 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + dependencies: + p-locate "^5.0.0" + locutus@^2.0.11: version "2.0.16" resolved "https://registry.yarnpkg.com/locutus/-/locutus-2.0.16.tgz#1da15532f1d735712a27e35a1caf0ccb7041f6b3" @@ -3891,6 +3954,13 @@ lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + loupe@^2.3.1: version "2.3.4" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" @@ -4022,38 +4092,28 @@ mini-css-extract-plugin@^2.6.0: dependencies: schema-utils "^4.0.0" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - minimatch@3.0.x: version "3.0.8" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" dependencies: brace-expansion "^1.1.7" +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -4068,21 +4128,32 @@ mocha-sinon@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/mocha-sinon/-/mocha-sinon-2.1.2.tgz#8db30195fa45611e565a9f1743ffd0cb4bf1eb9d" -mocha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" +mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.5" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" module-dispatcher@^2.0.0: version "2.0.0" @@ -4123,6 +4194,10 @@ multer@^1.4.2: type-is "^1.6.4" xtend "^4.0.0" +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + nanoid@^3.1.22, nanoid@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" @@ -4153,7 +4228,7 @@ nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" -nise@^5.1.0: +nise@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" dependencies: @@ -4201,6 +4276,10 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" @@ -4382,6 +4461,12 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -4400,6 +4485,12 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + dependencies: + p-limit "^3.0.2" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -4529,7 +4620,7 @@ picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -5066,6 +5157,12 @@ readable-web-to-node-stream@^3.0.0, readable-web-to-node-stream@^3.0.2: dependencies: readable-stream "^3.6.0" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + dependencies: + picomatch "^2.2.1" + rechoir@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" @@ -5284,7 +5381,7 @@ send@0.17.2: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^6.0.0: +serialize-javascript@6.0.0, serialize-javascript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" dependencies: @@ -5349,15 +5446,15 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" -sinon@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" +sinon@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-14.0.0.tgz#203731c116d3a2d58dc4e3cbe1f443ba9382a031" dependencies: "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.2" - "@sinonjs/samsam" "^6.0.2" + "@sinonjs/fake-timers" "^9.1.2" + "@sinonjs/samsam" "^6.1.1" diff "^5.0.0" - nise "^5.1.0" + nise "^5.1.1" supports-color "^7.2.0" slash@^3.0.0: @@ -5539,7 +5636,7 @@ strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -5585,11 +5682,11 @@ superagent@^3.7.0: qs "^6.5.1" readable-stream "^2.3.5" -supports-color@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" +supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" @@ -5609,12 +5706,6 @@ supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -5720,9 +5811,9 @@ tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" -ts-mocha@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-8.0.0.tgz#962d0fa12eeb6468aa1a6b594bb3bbc818da3ef0" +ts-mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" dependencies: ts-node "7.0.1" optionalDependencies: @@ -6027,6 +6118,10 @@ word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -6074,6 +6169,10 @@ yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -6085,6 +6184,27 @@ yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -6102,18 +6222,6 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" -yargs@^16.1.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" @@ -6121,3 +6229,7 @@ yn@3.1.1: yn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"