Add svelte as a view engine to swaf #33
@ -3,13 +3,16 @@ module.exports = {
|
|||||||
parser: '@typescript-eslint/parser',
|
parser: '@typescript-eslint/parser',
|
||||||
plugins: [
|
plugins: [
|
||||||
'svelte3',
|
'svelte3',
|
||||||
'@typescript-eslint'
|
'@typescript-eslint',
|
||||||
|
'import',
|
||||||
|
'simple-import-sort',
|
||||||
],
|
],
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
tsconfigRootDir: __dirname,
|
tsconfigRootDir: __dirname,
|
||||||
project: [
|
project: [
|
||||||
'./tsconfig.json',
|
'./tsconfig.json',
|
||||||
'./tsconfig.test.json'
|
'./tsconfig.test.json',
|
||||||
|
'./tsconfig.frontend.json',
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
extends: [
|
extends: [
|
||||||
@ -40,6 +43,13 @@ module.exports = {
|
|||||||
'no-extra-semi': 'error',
|
'no-extra-semi': 'error',
|
||||||
'eol-last': 'error',
|
'eol-last': 'error',
|
||||||
'comma-dangle': 'off',
|
'comma-dangle': 'off',
|
||||||
|
'simple-import-sort/imports': 'error',
|
||||||
|
'no-extra-parens': 'off',
|
||||||
|
'no-nested-ternary': 'error',
|
||||||
|
'no-return-await': 'off',
|
||||||
|
'no-useless-return': 'error',
|
||||||
|
'no-useless-constructor': 'off',
|
||||||
|
'import/extensions': ['error', 'ignorePackages'],
|
||||||
'@typescript-eslint/comma-dangle': [
|
'@typescript-eslint/comma-dangle': [
|
||||||
'error',
|
'error',
|
||||||
{
|
{
|
||||||
@ -53,11 +63,9 @@ module.exports = {
|
|||||||
tuples: 'always-multiline'
|
tuples: 'always-multiline'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'no-extra-parens': 'off',
|
|
||||||
'@typescript-eslint/no-extra-parens': [
|
'@typescript-eslint/no-extra-parens': [
|
||||||
'error'
|
'error'
|
||||||
],
|
],
|
||||||
'no-nested-ternary': 'error',
|
|
||||||
'@typescript-eslint/no-inferrable-types': 'off',
|
'@typescript-eslint/no-inferrable-types': 'off',
|
||||||
'@typescript-eslint/explicit-module-boundary-types': 'error',
|
'@typescript-eslint/explicit-module-boundary-types': 'error',
|
||||||
'@typescript-eslint/no-unnecessary-condition': 'error',
|
'@typescript-eslint/no-unnecessary-condition': 'error',
|
||||||
@ -68,12 +76,9 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
'@typescript-eslint/no-non-null-assertion': 'error',
|
'@typescript-eslint/no-non-null-assertion': 'error',
|
||||||
'no-useless-return': 'error',
|
|
||||||
'no-useless-constructor': 'off',
|
|
||||||
'@typescript-eslint/no-useless-constructor': [
|
'@typescript-eslint/no-useless-constructor': [
|
||||||
'error'
|
'error'
|
||||||
],
|
],
|
||||||
'no-return-await': 'off',
|
|
||||||
'@typescript-eslint/return-await': [
|
'@typescript-eslint/return-await': [
|
||||||
'error',
|
'error',
|
||||||
'always'
|
'always'
|
||||||
@ -84,7 +89,7 @@ module.exports = {
|
|||||||
accessibility: 'explicit'
|
accessibility: 'explicit'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'@typescript-eslint/no-floating-promises': 'error'
|
'@typescript-eslint/no-floating-promises': 'error',
|
||||||
},
|
},
|
||||||
ignorePatterns: [
|
ignorePatterns: [
|
||||||
'.eslintrc.js',
|
'.eslintrc.js',
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,5 +5,4 @@ dist
|
|||||||
public
|
public
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
|
||||||
src/package.json
|
|
||||||
config/local.*
|
config/local.*
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
"access": "public"
|
"access": "public"
|
||||||
},
|
},
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "jest --verbose --runInBand",
|
"test": "jest --verbose --runInBand",
|
||||||
@ -57,6 +58,7 @@
|
|||||||
"eslint": "^7.9.0",
|
"eslint": "^7.9.0",
|
||||||
"eslint-plugin-import": "^2.22.1",
|
"eslint-plugin-import": "^2.22.1",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
|
"eslint-plugin-simple-import-sort": "^7.0.0",
|
||||||
"eslint-plugin-svelte3": "^3.1.2",
|
"eslint-plugin-svelte3": "^3.1.2",
|
||||||
"jest": "^26.1.0",
|
"jest": "^26.1.0",
|
||||||
"maildev": "^1.1.0",
|
"maildev": "^1.1.0",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const fs = require('fs');
|
import fs from "fs";
|
||||||
|
|
||||||
[
|
[
|
||||||
'build',
|
'build',
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const fs = require('fs');
|
import fs from "fs";
|
||||||
const path = require('path');
|
import path from "path";
|
||||||
|
|
||||||
function copyRecursively(file, destination) {
|
function copyRecursively(file, destination) {
|
||||||
const target = path.join(destination, path.basename(file));
|
const target = path.join(destination, path.basename(file));
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
const fs = require('fs');
|
import fs from "fs";
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
fs.copyFileSync('package.json', path.join('src', 'package.json'));
|
|
||||||
|
|
||||||
// These folders must exist for nodemon not to loop indefinitely.
|
// These folders must exist for nodemon not to loop indefinitely.
|
||||||
[
|
[
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
import express, {NextFunction, Request, Response, Router} from 'express';
|
|
||||||
import {BadRequestError, HttpError, NotFoundHttpError, ServerError, ServiceUnavailableHttpError} from "./HttpError";
|
|
||||||
import {lib} from "nunjucks";
|
|
||||||
import WebSocketListener from "./WebSocketListener";
|
|
||||||
import ApplicationComponent from "./ApplicationComponent";
|
|
||||||
import Controller from "./Controller";
|
|
||||||
import MysqlConnectionManager from "./db/MysqlConnectionManager";
|
|
||||||
import Migration, {MigrationType} from "./db/Migration";
|
|
||||||
import {Type} from "./Utils";
|
|
||||||
import LogRequestsComponent from "./components/LogRequestsComponent";
|
|
||||||
import {ValidationBag, ValidationError} from "./db/Validator";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
import express, {NextFunction, Request, Response, Router} from 'express';
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import SecurityError from "./SecurityError";
|
import nunjucks from "nunjucks";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import CacheProvider from "./CacheProvider";
|
import url from "url";
|
||||||
import RedisComponent from "./components/RedisComponent";
|
|
||||||
import Extendable from "./Extendable";
|
import ApplicationComponent from "./ApplicationComponent.js";
|
||||||
import {logger, loggingContextMiddleware} from "./Logger";
|
import CacheProvider from "./CacheProvider.js";
|
||||||
import FrontendToolsComponent from "./components/FrontendToolsComponent";
|
import FrontendToolsComponent from "./components/FrontendToolsComponent.js";
|
||||||
import TemplateError = lib.TemplateError;
|
import LogRequestsComponent from "./components/LogRequestsComponent.js";
|
||||||
|
import RedisComponent from "./components/RedisComponent.js";
|
||||||
|
import Controller from "./Controller.js";
|
||||||
|
import Migration, {MigrationType} from "./db/Migration.js";
|
||||||
|
import MysqlConnectionManager from "./db/MysqlConnectionManager.js";
|
||||||
|
import {ValidationBag, ValidationError} from "./db/Validator.js";
|
||||||
|
import Extendable from "./Extendable.js";
|
||||||
|
import {BadRequestError, HttpError, NotFoundHttpError, ServerError, ServiceUnavailableHttpError} from "./HttpError.js";
|
||||||
|
import {logger, loggingContextMiddleware} from "./Logger.js";
|
||||||
|
import SecurityError from "./SecurityError.js";
|
||||||
|
import {Type} from "./Utils.js";
|
||||||
|
import WebSocketListener from "./WebSocketListener.js";
|
||||||
|
import TemplateError = nunjucks.lib.TemplateError;
|
||||||
|
|
||||||
export default abstract class Application implements Extendable<ApplicationComponent | WebSocketListener<Application>> {
|
export default abstract class Application implements Extendable<ApplicationComponent | WebSocketListener<Application>> {
|
||||||
private readonly version: string;
|
private readonly version: string;
|
||||||
@ -68,8 +70,8 @@ export default abstract class Application implements Extendable<ApplicationCompo
|
|||||||
|
|
||||||
// Load core version
|
// Load core version
|
||||||
const file = this.isInNodeModules() ?
|
const file = this.isInNodeModules() ?
|
||||||
path.join(__dirname, '../../package.json') :
|
'node_modules/swaf/package.json' :
|
||||||
path.join(__dirname, '../package.json');
|
'package.json';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.coreVersion = JSON.parse(fs.readFileSync(file).toString()).version;
|
this.coreVersion = JSON.parse(fs.readFileSync(file).toString()).version;
|
||||||
@ -367,7 +369,7 @@ export default abstract class Application implements Extendable<ApplicationCompo
|
|||||||
}
|
}
|
||||||
|
|
||||||
public isInNodeModules(): boolean {
|
public isInNodeModules(): boolean {
|
||||||
return fs.existsSync(path.join(__dirname, '../../package.json'));
|
return path.dirname(url.fileURLToPath(import.meta.url)).endsWith('/node_modules/swaf');
|
||||||
}
|
}
|
||||||
|
|
||||||
public isReady(): boolean {
|
public isReady(): boolean {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import {Express, Router} from "express";
|
|
||||||
import {logger} from "./Logger";
|
|
||||||
import {sleep} from "./Utils";
|
|
||||||
import Application from "./Application";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import SecurityError from "./SecurityError";
|
import {Express, Router} from "express";
|
||||||
import Middleware, {MiddlewareType} from "./Middleware";
|
|
||||||
|
import Application from "./Application.js";
|
||||||
|
import {logger} from "./Logger.js";
|
||||||
|
import Middleware, {MiddlewareType} from "./Middleware.js";
|
||||||
|
import SecurityError from "./SecurityError.js";
|
||||||
|
import {sleep} from "./Utils.js";
|
||||||
|
|
||||||
export default abstract class ApplicationComponent {
|
export default abstract class ApplicationComponent {
|
||||||
private currentRouter?: Router;
|
private currentRouter?: Router;
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
|
import config from "config";
|
||||||
import express, {IRouter, RequestHandler, Router} from "express";
|
import express, {IRouter, RequestHandler, Router} from "express";
|
||||||
import {PathParams} from "express-serve-static-core";
|
import {PathParams} from "express-serve-static-core";
|
||||||
import config from "config";
|
|
||||||
import {logger} from "./Logger";
|
|
||||||
import FileUploadMiddleware from "./FileUploadMiddleware";
|
|
||||||
import * as querystring from "querystring";
|
import * as querystring from "querystring";
|
||||||
import {ParsedUrlQueryInput} from "querystring";
|
import {ParsedUrlQueryInput} from "querystring";
|
||||||
import Middleware, {MiddlewareType} from "./Middleware";
|
|
||||||
import Application from "./Application";
|
import Application from "./Application.js";
|
||||||
|
import FileUploadMiddleware from "./FileUploadMiddleware.js";
|
||||||
|
import {logger} from "./Logger.js";
|
||||||
|
import Middleware, {MiddlewareType} from "./Middleware.js";
|
||||||
|
|
||||||
export default abstract class Controller {
|
export default abstract class Controller {
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {Type} from "./Utils";
|
import {Type} from "./Utils.js";
|
||||||
|
|
||||||
export default interface Extendable<ComponentClass> {
|
export default interface Extendable<ComponentClass> {
|
||||||
as<C extends ComponentClass>(type: Type<C>): C;
|
as<C extends ComponentClass>(type: Type<C>): C;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import Formidable from "formidable";
|
|
||||||
import Middleware from "./Middleware";
|
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import {FileError, ValidationBag} from "./db/Validator";
|
import Formidable from "formidable";
|
||||||
|
|
||||||
|
import {FileError, ValidationBag} from "./db/Validator.js";
|
||||||
|
import Middleware from "./Middleware.js";
|
||||||
|
|
||||||
export default abstract class FileUploadMiddleware extends Middleware {
|
export default abstract class FileUploadMiddleware extends Middleware {
|
||||||
protected abstract makeForm(): Formidable;
|
protected abstract makeForm(): Formidable;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {WrappingError} from "./Utils";
|
import {WrappingError} from "./Utils.js";
|
||||||
|
|
||||||
export abstract class HttpError extends WrappingError {
|
export abstract class HttpError extends WrappingError {
|
||||||
public readonly instructions: string;
|
public readonly instructions: string;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {Logger as TsLogger} from "tslog";
|
|
||||||
import {AsyncLocalStorage} from "async_hooks";
|
import {AsyncLocalStorage} from "async_hooks";
|
||||||
import {RequestHandler} from "express";
|
import {RequestHandler} from "express";
|
||||||
import {nanoid} from "nanoid";
|
import {nanoid} from "nanoid";
|
||||||
|
import {Logger as TsLogger} from "tslog";
|
||||||
|
|
||||||
const requestIdStorage: AsyncLocalStorage<string> = new AsyncLocalStorage();
|
const requestIdStorage: AsyncLocalStorage<string> = new AsyncLocalStorage();
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import config from "config";
|
import config from "config";
|
||||||
import MailTemplate from "./mail/MailTemplate";
|
|
||||||
|
import MailTemplate from "./mail/MailTemplate.js";
|
||||||
|
|
||||||
export const MAGIC_LINK_MAIL = new MailTemplate(
|
export const MAGIC_LINK_MAIL = new MailTemplate(
|
||||||
'magic_link',
|
'magic_link',
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import {RequestHandler} from "express";
|
import {RequestHandler} from "express";
|
||||||
import {NextFunction, Request, Response} from "express-serve-static-core";
|
import {NextFunction, Request, Response} from "express-serve-static-core";
|
||||||
import Application from "./Application";
|
|
||||||
import {Type} from "./Utils";
|
import Application from "./Application.js";
|
||||||
|
import {Type} from "./Utils.js";
|
||||||
|
|
||||||
export default abstract class Middleware {
|
export default abstract class Middleware {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {WrappingError} from "./Utils";
|
import {WrappingError} from "./Utils.js";
|
||||||
|
|
||||||
export default class Pagination {
|
export default class Pagination {
|
||||||
public readonly page: number;
|
public readonly page: number;
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
import Application from "./Application";
|
|
||||||
import Migration, {MigrationType} from "./db/Migration";
|
|
||||||
import ExpressAppComponent from "./components/ExpressAppComponent";
|
|
||||||
import RedisComponent from "./components/RedisComponent";
|
|
||||||
import MysqlComponent from "./components/MysqlComponent";
|
|
||||||
import LogRequestsComponent from "./components/LogRequestsComponent";
|
|
||||||
import MailComponent from "./components/MailComponent";
|
|
||||||
import SessionComponent from "./components/SessionComponent";
|
|
||||||
import AuthComponent from "./auth/AuthComponent";
|
|
||||||
import FormHelperComponent from "./components/FormHelperComponent";
|
|
||||||
import ServeStaticDirectoryComponent from "./components/ServeStaticDirectoryComponent";
|
|
||||||
import {Express} from "express";
|
import {Express} from "express";
|
||||||
import MagicLinkAuthMethod from "./auth/magic_link/MagicLinkAuthMethod";
|
|
||||||
import PasswordAuthMethod from "./auth/password/PasswordAuthMethod";
|
import Application from "./Application.js";
|
||||||
import {MAGIC_LINK_MAIL} from "./Mails";
|
import AccountController from "./auth/AccountController.js";
|
||||||
import CreateMigrationsTable from "./migrations/CreateMigrationsTable";
|
import AuthComponent from "./auth/AuthComponent.js";
|
||||||
import CreateUsersAndUserEmailsTableMigration from "./auth/migrations/CreateUsersAndUserEmailsTableMigration";
|
import AuthController from "./auth/AuthController.js";
|
||||||
import CreateMagicLinksTableMigration from "./auth/magic_link/CreateMagicLinksTableMigration";
|
import AddUsedToMagicLinksMigration from "./auth/magic_link/AddUsedToMagicLinksMigration.js";
|
||||||
import AuthController from "./auth/AuthController";
|
import CreateMagicLinksTableMigration from "./auth/magic_link/CreateMagicLinksTableMigration.js";
|
||||||
import MagicLinkWebSocketListener from "./auth/magic_link/MagicLinkWebSocketListener";
|
import MagicLinkAuthMethod from "./auth/magic_link/MagicLinkAuthMethod.js";
|
||||||
import MagicLinkController from "./auth/magic_link/MagicLinkController";
|
import MagicLinkController from "./auth/magic_link/MagicLinkController.js";
|
||||||
import AddPasswordToUsersMigration from "./auth/password/AddPasswordToUsersMigration";
|
import MagicLinkWebSocketListener from "./auth/magic_link/MagicLinkWebSocketListener.js";
|
||||||
import AddNameToUsersMigration from "./auth/migrations/AddNameToUsersMigration";
|
import MakeMagicLinksSessionNotUniqueMigration from "./auth/magic_link/MakeMagicLinksSessionNotUniqueMigration.js";
|
||||||
import CsrfProtectionComponent from "./components/CsrfProtectionComponent";
|
import AddNameChangedAtToUsersMigration from "./auth/migrations/AddNameChangedAtToUsersMigration.js";
|
||||||
import MailController from "./mail/MailController";
|
import AddNameToUsersMigration from "./auth/migrations/AddNameToUsersMigration.js";
|
||||||
import WebSocketServerComponent from "./components/WebSocketServerComponent";
|
import CreateUsersAndUserEmailsTableMigration from "./auth/migrations/CreateUsersAndUserEmailsTableMigration.js";
|
||||||
import Controller from "./Controller";
|
import AddPasswordToUsersMigration from "./auth/password/AddPasswordToUsersMigration.js";
|
||||||
import AccountController from "./auth/AccountController";
|
import PasswordAuthMethod from "./auth/password/PasswordAuthMethod.js";
|
||||||
import MakeMagicLinksSessionNotUniqueMigration from "./auth/magic_link/MakeMagicLinksSessionNotUniqueMigration";
|
import CsrfProtectionComponent from "./components/CsrfProtectionComponent.js";
|
||||||
import AddUsedToMagicLinksMigration from "./auth/magic_link/AddUsedToMagicLinksMigration";
|
import ExpressAppComponent from "./components/ExpressAppComponent.js";
|
||||||
import PreviousUrlComponent from "./components/PreviousUrlComponent";
|
import FormHelperComponent from "./components/FormHelperComponent.js";
|
||||||
import AddNameChangedAtToUsersMigration from "./auth/migrations/AddNameChangedAtToUsersMigration";
|
import FrontendToolsComponent from "./components/FrontendToolsComponent.js";
|
||||||
import BackendController from "./helpers/BackendController";
|
import LogRequestsComponent from "./components/LogRequestsComponent.js";
|
||||||
import FrontendToolsComponent from "./components/FrontendToolsComponent";
|
import MailComponent from "./components/MailComponent.js";
|
||||||
import SvelteViewEngine from "./frontend/SvelteViewEngine";
|
import MysqlComponent from "./components/MysqlComponent.js";
|
||||||
import MailViewEngine from "./frontend/MailViewEngine";
|
import PreviousUrlComponent from "./components/PreviousUrlComponent.js";
|
||||||
import NunjucksViewEngine from "./frontend/NunjucksViewEngine";
|
import RedisComponent from "./components/RedisComponent.js";
|
||||||
import packageJson = require('./package.json');
|
import ServeStaticDirectoryComponent from "./components/ServeStaticDirectoryComponent.js";
|
||||||
|
import SessionComponent from "./components/SessionComponent.js";
|
||||||
|
import WebSocketServerComponent from "./components/WebSocketServerComponent.js";
|
||||||
|
import Controller from "./Controller.js";
|
||||||
|
import Migration, {MigrationType} from "./db/Migration.js";
|
||||||
|
import MailViewEngine from "./frontend/MailViewEngine.js";
|
||||||
|
import NunjucksViewEngine from "./frontend/NunjucksViewEngine.js";
|
||||||
|
import SvelteViewEngine from "./frontend/SvelteViewEngine.js";
|
||||||
|
import BackendController from "./helpers/BackendController.js";
|
||||||
|
import MailController from "./mail/MailController.js";
|
||||||
|
import {MAGIC_LINK_MAIL} from "./Mails.js";
|
||||||
|
import CreateMigrationsTable from "./migrations/CreateMigrationsTable.js";
|
||||||
|
|
||||||
export const MIGRATIONS = [
|
export const MIGRATIONS = [
|
||||||
CreateMigrationsTable,
|
CreateMigrationsTable,
|
||||||
@ -52,8 +52,8 @@ export default class TestApp extends Application {
|
|||||||
private readonly addr: string;
|
private readonly addr: string;
|
||||||
private readonly port: number;
|
private readonly port: number;
|
||||||
|
|
||||||
public constructor(addr: string, port: number, ignoreCommandLine: boolean = false) {
|
public constructor(version: string, addr: string, port: number, ignoreCommandLine: boolean = false) {
|
||||||
super(packageJson.version, ignoreCommandLine);
|
super(version, ignoreCommandLine);
|
||||||
this.addr = addr;
|
this.addr = addr;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {TooManyRequestsHttpError} from "./HttpError";
|
import {TooManyRequestsHttpError} from "./HttpError.js";
|
||||||
import {logger} from "./Logger";
|
import {logger} from "./Logger.js";
|
||||||
|
|
||||||
export default class Throttler {
|
export default class Throttler {
|
||||||
private static readonly throttles: Record<string, Throttle | undefined> = {};
|
private static readonly throttles: Record<string, Throttle | undefined> = {};
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import WebSocket from "ws";
|
|
||||||
import {IncomingMessage} from "http";
|
|
||||||
import Application from "./Application";
|
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
|
import {IncomingMessage} from "http";
|
||||||
|
import WebSocket from "ws";
|
||||||
|
|
||||||
|
import Application from "./Application.js";
|
||||||
|
|
||||||
export default abstract class WebSocketListener<T extends Application> {
|
export default abstract class WebSocketListener<T extends Application> {
|
||||||
private app!: T;
|
private app!: T;
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
import Controller from "../Controller";
|
|
||||||
import {RequireAuthMiddleware} from "./AuthComponent";
|
|
||||||
import {Request, Response} from "express";
|
|
||||||
import {BadRequestError, ForbiddenHttpError, NotFoundHttpError} from "../HttpError";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import Validator, {EMAIL_REGEX, InvalidFormatValidationError} from "../db/Validator";
|
import {Request, Response} from "express";
|
||||||
import UserPasswordComponent from "./password/UserPasswordComponent";
|
|
||||||
import User from "./models/User";
|
import Controller from "../Controller.js";
|
||||||
import ModelFactory from "../db/ModelFactory";
|
import ModelFactory from "../db/ModelFactory.js";
|
||||||
import UserEmail from "./models/UserEmail";
|
import Validator, {EMAIL_REGEX, InvalidFormatValidationError} from "../db/Validator.js";
|
||||||
import MagicLinkController from "./magic_link/MagicLinkController";
|
import {BadRequestError, ForbiddenHttpError, NotFoundHttpError} from "../HttpError.js";
|
||||||
import {ADD_EMAIL_MAIL_TEMPLATE, REMOVE_PASSWORD_MAIL_TEMPLATE} from "../Mails";
|
import MailTemplate from "../mail/MailTemplate.js";
|
||||||
import AuthMagicLinkActionType from "./magic_link/AuthMagicLinkActionType";
|
import {ADD_EMAIL_MAIL_TEMPLATE, REMOVE_PASSWORD_MAIL_TEMPLATE} from "../Mails.js";
|
||||||
import UserNameComponent from "./models/UserNameComponent";
|
import Time from "../Time.js";
|
||||||
import Time from "../Time";
|
import {RequireAuthMiddleware} from "./AuthComponent.js";
|
||||||
import MailTemplate from "../mail/MailTemplate";
|
import AuthMagicLinkActionType from "./magic_link/AuthMagicLinkActionType.js";
|
||||||
|
import MagicLinkController from "./magic_link/MagicLinkController.js";
|
||||||
|
import User from "./models/User.js";
|
||||||
|
import UserEmail from "./models/UserEmail.js";
|
||||||
|
import UserNameComponent from "./models/UserNameComponent.js";
|
||||||
|
import UserPasswordComponent from "./password/UserPasswordComponent.js";
|
||||||
|
|
||||||
export default class AccountController extends Controller {
|
export default class AccountController extends Controller {
|
||||||
|
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import AuthGuard from "./AuthGuard";
|
|
||||||
import Controller from "../Controller";
|
import Application from "../Application.js";
|
||||||
import {ForbiddenHttpError} from "../HttpError";
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
import Middleware from "../Middleware";
|
import Controller from "../Controller.js";
|
||||||
import User from "./models/User";
|
import {ForbiddenHttpError} from "../HttpError.js";
|
||||||
import Application from "../Application";
|
import Middleware from "../Middleware.js";
|
||||||
import AuthMethod from "./AuthMethod";
|
import AuthGuard from "./AuthGuard.js";
|
||||||
import AuthProof from "./AuthProof";
|
import AuthMethod from "./AuthMethod.js";
|
||||||
|
import AuthProof from "./AuthProof.js";
|
||||||
|
import User from "./models/User.js";
|
||||||
|
|
||||||
export default class AuthComponent extends ApplicationComponent {
|
export default class AuthComponent extends ApplicationComponent {
|
||||||
private readonly authGuard: AuthGuard;
|
private readonly authGuard: AuthGuard;
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
import Controller from "../Controller";
|
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import AuthComponent, {AuthMiddleware, RequireAuthMiddleware, RequireGuestMiddleware} from "./AuthComponent";
|
|
||||||
import {BadRequestError} from "../HttpError";
|
import Controller from "../Controller.js";
|
||||||
import ModelFactory from "../db/ModelFactory";
|
import ModelFactory from "../db/ModelFactory.js";
|
||||||
import User from "./models/User";
|
import {UnknownRelationValidationError} from "../db/Validator.js";
|
||||||
import UserPasswordComponent from "./password/UserPasswordComponent";
|
import {BadRequestError} from "../HttpError.js";
|
||||||
import UserNameComponent from "./models/UserNameComponent";
|
import AuthComponent, {AuthMiddleware, RequireAuthMiddleware, RequireGuestMiddleware} from "./AuthComponent.js";
|
||||||
import {UnknownRelationValidationError} from "../db/Validator";
|
import AuthMethod from "./AuthMethod.js";
|
||||||
import AuthMethod from "./AuthMethod";
|
import AuthProof from "./AuthProof.js";
|
||||||
import AuthProof from "./AuthProof";
|
import User from "./models/User.js";
|
||||||
|
import UserNameComponent from "./models/UserNameComponent.js";
|
||||||
|
import UserPasswordComponent from "./password/UserPasswordComponent.js";
|
||||||
|
|
||||||
export default class AuthController extends Controller {
|
export default class AuthController extends Controller {
|
||||||
public getRoutesPrefix(): string {
|
public getRoutesPrefix(): string {
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
import AuthProof from "./AuthProof";
|
|
||||||
import MysqlConnectionManager from "../db/MysqlConnectionManager";
|
|
||||||
import User from "./models/User";
|
|
||||||
import {Connection} from "mysql";
|
|
||||||
import {Request, Response} from "express";
|
|
||||||
import {PENDING_ACCOUNT_REVIEW_MAIL_TEMPLATE} from "../Mails";
|
|
||||||
import Mail from "../mail/Mail";
|
|
||||||
import Controller from "../Controller";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import Application from "../Application";
|
import {Request, Response} from "express";
|
||||||
import AuthMethod from "./AuthMethod";
|
|
||||||
import {Session, SessionData} from "express-session";
|
import {Session, SessionData} from "express-session";
|
||||||
import UserNameComponent from "./models/UserNameComponent";
|
import {Connection} from "mysql";
|
||||||
import MailComponent from "../components/MailComponent";
|
|
||||||
|
import Application from "../Application.js";
|
||||||
|
import MailComponent from "../components/MailComponent.js";
|
||||||
|
import Controller from "../Controller.js";
|
||||||
|
import MysqlConnectionManager from "../db/MysqlConnectionManager.js";
|
||||||
|
import Mail from "../mail/Mail.js";
|
||||||
|
import {PENDING_ACCOUNT_REVIEW_MAIL_TEMPLATE} from "../Mails.js";
|
||||||
|
import AuthMethod from "./AuthMethod.js";
|
||||||
|
import AuthProof from "./AuthProof.js";
|
||||||
|
import User from "./models/User.js";
|
||||||
|
import UserNameComponent from "./models/UserNameComponent.js";
|
||||||
|
|
||||||
export default class AuthGuard {
|
export default class AuthGuard {
|
||||||
private readonly authMethods: AuthMethod<AuthProof<User>>[];
|
private readonly authMethods: AuthMethod<AuthProof<User>>[];
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import User from "./models/User";
|
|
||||||
import AuthProof from "./AuthProof";
|
|
||||||
import {Request, Response} from "express";
|
import {Request, Response} from "express";
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
|
|
||||||
|
import AuthProof from "./AuthProof.js";
|
||||||
|
import User from "./models/User.js";
|
||||||
|
|
||||||
|
|
||||||
export default interface AuthMethod<P extends AuthProof<User>> {
|
export default interface AuthMethod<P extends AuthProof<User>> {
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
|
|
||||||
export default class AddUsedToMagicLinksMigration extends Migration {
|
export default class AddUsedToMagicLinksMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
import MagicLink from "../models/MagicLink";
|
import MagicLink from "../models/MagicLink.js";
|
||||||
|
|
||||||
export default class CreateMagicLinksTableMigration extends Migration {
|
export default class CreateMagicLinksTableMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
import AuthMethod from "../AuthMethod";
|
|
||||||
import {Request, Response} from "express";
|
import {Request, Response} from "express";
|
||||||
import User from "../models/User";
|
|
||||||
import UserEmail from "../models/UserEmail";
|
|
||||||
import MagicLink from "../models/MagicLink";
|
|
||||||
import {WhereTest} from "../../db/ModelQuery";
|
|
||||||
import Controller from "../../Controller";
|
|
||||||
import geoip from "geoip-lite";
|
|
||||||
import MagicLinkController from "./MagicLinkController";
|
|
||||||
import Application from "../../Application";
|
|
||||||
import AuthMagicLinkActionType from "./AuthMagicLinkActionType";
|
|
||||||
import Validator, {EMAIL_REGEX} from "../../db/Validator";
|
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
|
||||||
import UserNameComponent from "../models/UserNameComponent";
|
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
import MailTemplate from "../../mail/MailTemplate";
|
import geoip from "geoip-lite";
|
||||||
|
|
||||||
|
import Application from "../../Application.js";
|
||||||
|
import Controller from "../../Controller.js";
|
||||||
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
|
import {WhereTest} from "../../db/ModelQuery.js";
|
||||||
|
import Validator, {EMAIL_REGEX} from "../../db/Validator.js";
|
||||||
|
import MailTemplate from "../../mail/MailTemplate.js";
|
||||||
|
import AuthMethod from "../AuthMethod.js";
|
||||||
|
import MagicLink from "../models/MagicLink.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
import UserEmail from "../models/UserEmail.js";
|
||||||
|
import UserNameComponent from "../models/UserNameComponent.js";
|
||||||
|
import AuthMagicLinkActionType from "./AuthMagicLinkActionType.js";
|
||||||
|
import MagicLinkController from "./MagicLinkController.js";
|
||||||
|
|
||||||
export default class MagicLinkAuthMethod implements AuthMethod<MagicLink> {
|
export default class MagicLinkAuthMethod implements AuthMethod<MagicLink> {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
@ -1,25 +1,26 @@
|
|||||||
import Controller from "../../Controller";
|
|
||||||
import {Request, Response} from "express";
|
|
||||||
import MagicLinkWebSocketListener from "./MagicLinkWebSocketListener";
|
|
||||||
import {BadRequestError, NotFoundHttpError} from "../../HttpError";
|
|
||||||
import Throttler from "../../Throttler";
|
|
||||||
import Mail from "../../mail/Mail";
|
|
||||||
import MagicLink from "../models/MagicLink";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import Application from "../../Application";
|
import {Request, Response} from "express";
|
||||||
import {ParsedUrlQueryInput} from "querystring";
|
import {ParsedUrlQueryInput} from "querystring";
|
||||||
import User from "../models/User";
|
|
||||||
import AuthComponent, {AuthMiddleware} from "../AuthComponent";
|
import Application from "../../Application.js";
|
||||||
import {AuthError, PendingApprovalAuthError, RegisterCallback} from "../AuthGuard";
|
import MailComponent from "../../components/MailComponent.js";
|
||||||
import UserEmail from "../models/UserEmail";
|
import Controller from "../../Controller.js";
|
||||||
import AuthMagicLinkActionType from "./AuthMagicLinkActionType";
|
import {QueryVariable} from "../../db/MysqlConnectionManager.js";
|
||||||
import {QueryVariable} from "../../db/MysqlConnectionManager";
|
import {BadRequestError, NotFoundHttpError} from "../../HttpError.js";
|
||||||
import UserNameComponent from "../models/UserNameComponent";
|
import {logger} from "../../Logger.js";
|
||||||
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent";
|
import Mail from "../../mail/Mail.js";
|
||||||
import {logger} from "../../Logger";
|
import MailTemplate from "../../mail/MailTemplate.js";
|
||||||
import UserPasswordComponent from "../password/UserPasswordComponent";
|
import Throttler from "../../Throttler.js";
|
||||||
import MailTemplate from "../../mail/MailTemplate";
|
import AuthComponent, {AuthMiddleware} from "../AuthComponent.js";
|
||||||
import MailComponent from "../../components/MailComponent";
|
import {AuthError, PendingApprovalAuthError, RegisterCallback} from "../AuthGuard.js";
|
||||||
|
import MagicLink from "../models/MagicLink.js";
|
||||||
|
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
import UserEmail from "../models/UserEmail.js";
|
||||||
|
import UserNameComponent from "../models/UserNameComponent.js";
|
||||||
|
import UserPasswordComponent from "../password/UserPasswordComponent.js";
|
||||||
|
import AuthMagicLinkActionType from "./AuthMagicLinkActionType.js";
|
||||||
|
import MagicLinkWebSocketListener from "./MagicLinkWebSocketListener.js";
|
||||||
|
|
||||||
export default class MagicLinkController<A extends Application> extends Controller {
|
export default class MagicLinkController<A extends Application> extends Controller {
|
||||||
public static async sendMagicLink(
|
public static async sendMagicLink(
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import WebSocket from "ws";
|
|
||||||
import {IncomingMessage} from "http";
|
|
||||||
import WebSocketListener from "../../WebSocketListener";
|
|
||||||
import MagicLink from "../models/MagicLink";
|
|
||||||
import Application from "../../Application";
|
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
|
import {IncomingMessage} from "http";
|
||||||
|
import WebSocket from "ws";
|
||||||
|
|
||||||
|
import Application from "../../Application.js";
|
||||||
|
import WebSocketListener from "../../WebSocketListener.js";
|
||||||
|
import MagicLink from "../models/MagicLink.js";
|
||||||
|
|
||||||
export default class MagicLinkWebSocketListener<A extends Application> extends WebSocketListener<A> {
|
export default class MagicLinkWebSocketListener<A extends Application> extends WebSocketListener<A> {
|
||||||
private readonly connections: { [p: string]: (() => void)[] | undefined } = {};
|
private readonly connections: { [p: string]: (() => void)[] | undefined } = {};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
|
|
||||||
export default class MakeMagicLinksSessionNotUniqueMigration extends Migration {
|
export default class MakeMagicLinksSessionNotUniqueMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
import User from "../models/User";
|
import User from "../models/User.js";
|
||||||
import UserApprovedComponent from "../models/UserApprovedComponent";
|
import UserApprovedComponent from "../models/UserApprovedComponent.js";
|
||||||
|
|
||||||
export default class AddApprovedFieldToUsersTableMigration extends Migration {
|
export default class AddApprovedFieldToUsersTableMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
|
|
||||||
export default class AddNameChangedAtToUsersMigration extends Migration {
|
export default class AddNameChangedAtToUsersMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import Migration from "../../db/Migration";
|
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
|
||||||
import User from "../models/User";
|
|
||||||
import UserNameComponent from "../models/UserNameComponent";
|
|
||||||
import MagicLink from "../models/MagicLink";
|
|
||||||
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent";
|
|
||||||
import {nanoid} from "nanoid";
|
import {nanoid} from "nanoid";
|
||||||
|
|
||||||
|
import Migration from "../../db/Migration.js";
|
||||||
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
|
import MagicLink from "../models/MagicLink.js";
|
||||||
|
import MagicLinkUserNameComponent from "../models/MagicLinkUserNameComponent.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
import UserNameComponent from "../models/UserNameComponent.js";
|
||||||
|
|
||||||
export default class AddNameToUsersMigration extends Migration {
|
export default class AddNameToUsersMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
await this.query(`ALTER TABLE users
|
await this.query(`ALTER TABLE users
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
import User from "../models/User";
|
import User from "../models/User.js";
|
||||||
import UserEmail from "../models/UserEmail";
|
import UserEmail from "../models/UserEmail.js";
|
||||||
|
|
||||||
export default class CreateUsersAndUserEmailsTableMigration extends Migration {
|
export default class CreateUsersAndUserEmailsTableMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated - TODO may be remove at next major version >= 0.24, replace with DummyMigration.
|
* @deprecated - TODO may be remove at next major version >= 0.24, replace with DummyMigration.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated - TODO may be remove at next major version >= 0.24, replace with DummyMigration.
|
* @deprecated - TODO may be remove at next major version >= 0.24, replace with DummyMigration.
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import crypto from "crypto";
|
|
||||||
import config from "config";
|
|
||||||
import Model from "../../db/Model";
|
|
||||||
import AuthProof from "../AuthProof";
|
|
||||||
import User from "./User";
|
|
||||||
import argon2 from "argon2";
|
import argon2 from "argon2";
|
||||||
import UserEmail from "./UserEmail";
|
import config from "config";
|
||||||
import {EMAIL_REGEX} from "../../db/Validator";
|
import crypto from "crypto";
|
||||||
|
|
||||||
|
import Model from "../../db/Model.js";
|
||||||
|
import {EMAIL_REGEX} from "../../db/Validator.js";
|
||||||
|
import AuthProof from "../AuthProof.js";
|
||||||
|
import User from "./User.js";
|
||||||
|
import UserEmail from "./UserEmail.js";
|
||||||
|
|
||||||
export default class MagicLink extends Model implements AuthProof<User> {
|
export default class MagicLink extends Model implements AuthProof<User> {
|
||||||
public static validityPeriod(): number {
|
public static validityPeriod(): number {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import ModelComponent from "../../db/ModelComponent";
|
import ModelComponent from "../../db/ModelComponent.js";
|
||||||
import MagicLink from "./MagicLink";
|
import MagicLink from "./MagicLink.js";
|
||||||
import {USERNAME_REGEXP} from "./UserNameComponent";
|
import User from "./User.js";
|
||||||
import User from "./User";
|
import {USERNAME_REGEXP} from "./UserNameComponent.js";
|
||||||
|
|
||||||
export default class MagicLinkUserNameComponent extends ModelComponent<MagicLink> {
|
export default class MagicLinkUserNameComponent extends ModelComponent<MagicLink> {
|
||||||
public readonly username?: string = undefined;
|
public readonly username?: string = undefined;
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import Model from "../../db/Model";
|
|
||||||
import MysqlConnectionManager from "../../db/MysqlConnectionManager";
|
|
||||||
import AddApprovedFieldToUsersTableMigration from "../migrations/AddApprovedFieldToUsersTableMigration";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import {ManyModelRelation} from "../../db/ModelRelation";
|
|
||||||
import UserEmail from "./UserEmail";
|
import Model from "../../db/Model.js";
|
||||||
import UserApprovedComponent from "./UserApprovedComponent";
|
import {ManyModelRelation} from "../../db/ModelRelation.js";
|
||||||
import UserNameComponent from "./UserNameComponent";
|
import MysqlConnectionManager from "../../db/MysqlConnectionManager.js";
|
||||||
|
import AddApprovedFieldToUsersTableMigration from "../migrations/AddApprovedFieldToUsersTableMigration.js";
|
||||||
|
import UserApprovedComponent from "./UserApprovedComponent.js";
|
||||||
|
import UserEmail from "./UserEmail.js";
|
||||||
|
import UserNameComponent from "./UserNameComponent.js";
|
||||||
|
|
||||||
export default class User extends Model {
|
export default class User extends Model {
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import ModelComponent from "../../db/ModelComponent";
|
import ModelComponent from "../../db/ModelComponent.js";
|
||||||
import User from "./User";
|
import User from "./User.js";
|
||||||
|
|
||||||
export default class UserApprovedComponent extends ModelComponent<User> {
|
export default class UserApprovedComponent extends ModelComponent<User> {
|
||||||
public approved: boolean = false;
|
public approved: boolean = false;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import User from "./User";
|
import Model from "../../db/Model.js";
|
||||||
import Model from "../../db/Model";
|
import {OneModelRelation} from "../../db/ModelRelation.js";
|
||||||
import {OneModelRelation} from "../../db/ModelRelation";
|
import {EMAIL_REGEX} from "../../db/Validator.js";
|
||||||
import {EMAIL_REGEX} from "../../db/Validator";
|
import User from "./User.js";
|
||||||
|
|
||||||
export default class UserEmail extends Model {
|
export default class UserEmail extends Model {
|
||||||
public readonly id?: number = undefined;
|
public readonly id?: number = undefined;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import ModelComponent from "../../db/ModelComponent";
|
|
||||||
import User from "../models/User";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
|
||||||
|
import ModelComponent from "../../db/ModelComponent.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
|
||||||
export const USERNAME_REGEXP = /^[0-9a-z_-]+$/;
|
export const USERNAME_REGEXP = /^[0-9a-z_-]+$/;
|
||||||
|
|
||||||
export default class UserNameComponent extends ModelComponent<User> {
|
export default class UserNameComponent extends ModelComponent<User> {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Migration from "../../db/Migration";
|
import Migration from "../../db/Migration.js";
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
import User from "../models/User";
|
import User from "../models/User.js";
|
||||||
import UserPasswordComponent from "./UserPasswordComponent";
|
import UserPasswordComponent from "./UserPasswordComponent.js";
|
||||||
|
|
||||||
export default class AddPasswordToUsersMigration extends Migration {
|
export default class AddPasswordToUsersMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
import AuthMethod from "../AuthMethod";
|
|
||||||
import PasswordAuthProof from "./PasswordAuthProof";
|
|
||||||
import User from "../models/User";
|
|
||||||
import {Request, Response} from "express";
|
import {Request, Response} from "express";
|
||||||
import UserEmail from "../models/UserEmail";
|
|
||||||
import AuthComponent from "../AuthComponent";
|
|
||||||
import Application from "../../Application";
|
|
||||||
import Throttler from "../../Throttler";
|
|
||||||
import {AuthError, PendingApprovalAuthError, RegisterCallback} from "../AuthGuard";
|
|
||||||
import Validator, {InvalidFormatValidationError} from "../../db/Validator";
|
|
||||||
import Controller from "../../Controller";
|
|
||||||
import UserPasswordComponent from "./UserPasswordComponent";
|
|
||||||
import UserNameComponent, {USERNAME_REGEXP} from "../models/UserNameComponent";
|
|
||||||
import ModelFactory from "../../db/ModelFactory";
|
|
||||||
import {ServerError} from "../../HttpError";
|
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
|
|
||||||
|
import Application from "../../Application.js";
|
||||||
|
import Controller from "../../Controller.js";
|
||||||
|
import ModelFactory from "../../db/ModelFactory.js";
|
||||||
|
import Validator, {InvalidFormatValidationError} from "../../db/Validator.js";
|
||||||
|
import {ServerError} from "../../HttpError.js";
|
||||||
|
import Throttler from "../../Throttler.js";
|
||||||
|
import AuthComponent from "../AuthComponent.js";
|
||||||
|
import {AuthError, PendingApprovalAuthError, RegisterCallback} from "../AuthGuard.js";
|
||||||
|
import AuthMethod from "../AuthMethod.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
import UserEmail from "../models/UserEmail.js";
|
||||||
|
import UserNameComponent, {USERNAME_REGEXP} from "../models/UserNameComponent.js";
|
||||||
|
import PasswordAuthProof from "./PasswordAuthProof.js";
|
||||||
|
import UserPasswordComponent from "./UserPasswordComponent.js";
|
||||||
|
|
||||||
export default class PasswordAuthMethod implements AuthMethod<PasswordAuthProof> {
|
export default class PasswordAuthMethod implements AuthMethod<PasswordAuthProof> {
|
||||||
public constructor(
|
public constructor(
|
||||||
protected readonly app: Application,
|
protected readonly app: Application,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import AuthProof from "../AuthProof";
|
|
||||||
import User from "../models/User";
|
|
||||||
import UserPasswordComponent from "./UserPasswordComponent";
|
|
||||||
import {Session, SessionData} from "express-session";
|
import {Session, SessionData} from "express-session";
|
||||||
|
|
||||||
|
import AuthProof from "../AuthProof.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
import UserPasswordComponent from "./UserPasswordComponent.js";
|
||||||
|
|
||||||
|
|
||||||
export default class PasswordAuthProof implements AuthProof<User> {
|
export default class PasswordAuthProof implements AuthProof<User> {
|
||||||
public static getProofForSession(session: Session & Partial<SessionData>): PasswordAuthProof | null {
|
public static getProofForSession(session: Session & Partial<SessionData>): PasswordAuthProof | null {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import argon2, {argon2id} from "argon2";
|
import argon2 from "argon2";
|
||||||
import ModelComponent from "../../db/ModelComponent";
|
|
||||||
import User from "../models/User";
|
import ModelComponent from "../../db/ModelComponent.js";
|
||||||
import Validator from "../../db/Validator";
|
import Validator from "../../db/Validator.js";
|
||||||
|
import User from "../models/User.js";
|
||||||
|
|
||||||
export default class UserPasswordComponent extends ModelComponent<User> {
|
export default class UserPasswordComponent extends ModelComponent<User> {
|
||||||
public static readonly PASSWORD_MIN_LENGTH = 12;
|
public static readonly PASSWORD_MIN_LENGTH = 12;
|
||||||
@ -22,7 +23,7 @@ export default class UserPasswordComponent extends ModelComponent<User> {
|
|||||||
timeCost: 10,
|
timeCost: 10,
|
||||||
memoryCost: 65536,
|
memoryCost: 65536,
|
||||||
parallelism: 4,
|
parallelism: 4,
|
||||||
type: argon2id,
|
type: argon2.argon2id,
|
||||||
hashLength: 32,
|
hashLength: 32,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import {Router} from "express";
|
|
||||||
import config from "config";
|
|
||||||
import * as child_process from "child_process";
|
import * as child_process from "child_process";
|
||||||
import ApplicationComponent from "../ApplicationComponent";
|
import config from "config";
|
||||||
import {ForbiddenHttpError} from "../HttpError";
|
import {Router} from "express";
|
||||||
import {logger} from "../Logger";
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {ForbiddenHttpError} from "../HttpError.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
|
||||||
export default class AutoUpdateComponent extends ApplicationComponent {
|
export default class AutoUpdateComponent extends ApplicationComponent {
|
||||||
private static async runCommand(command: string): Promise<void> {
|
private static async runCommand(command: string): Promise<void> {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Request, Router} from "express";
|
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import {BadRequestError} from "../HttpError";
|
import {Request, Router} from "express";
|
||||||
import {AuthMiddleware} from "../auth/AuthComponent";
|
|
||||||
import {Session, SessionData} from "express-session";
|
import {Session, SessionData} from "express-session";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {AuthMiddleware} from "../auth/AuthComponent.js";
|
||||||
|
import {BadRequestError} from "../HttpError.js";
|
||||||
|
|
||||||
export default class CsrfProtectionComponent extends ApplicationComponent {
|
export default class CsrfProtectionComponent extends ApplicationComponent {
|
||||||
private static readonly excluders: ((req: Request) => boolean)[] = [];
|
private static readonly excluders: ((req: Request) => boolean)[] = [];
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import express, {Express, Router} from "express";
|
|
||||||
import {logger, preventContextCorruptionMiddleware} from "../Logger";
|
|
||||||
import {Server} from "http";
|
|
||||||
import compression from "compression";
|
import compression from "compression";
|
||||||
import Middleware from "../Middleware";
|
import express, {Express, Router} from "express";
|
||||||
import {Type} from "../Utils";
|
import {Server} from "http";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {logger, preventContextCorruptionMiddleware} from "../Logger.js";
|
||||||
|
import Middleware from "../Middleware.js";
|
||||||
|
import {Type} from "../Utils.js";
|
||||||
|
|
||||||
export default class ExpressAppComponent extends ApplicationComponent {
|
export default class ExpressAppComponent extends ApplicationComponent {
|
||||||
private readonly addr: string;
|
private readonly addr: string;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Router} from "express";
|
import {Router} from "express";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
|
||||||
export default class FormHelperComponent extends ApplicationComponent {
|
export default class FormHelperComponent extends ApplicationComponent {
|
||||||
public async init(router: Router): Promise<void> {
|
public async init(router: Router): Promise<void> {
|
||||||
router.use((req, res, next) => {
|
router.use((req, res, next) => {
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
|
import "../../node_modules/svelte/register.js";
|
||||||
|
|
||||||
|
import config from "config";
|
||||||
import {Express, Router} from "express";
|
import {Express, Router} from "express";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import config from "config";
|
|
||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {logger} from "../Logger";
|
|
||||||
import "svelte/register";
|
|
||||||
import ViewEngine from "../frontend/ViewEngine";
|
|
||||||
import {readdirRecursively} from "../Utils";
|
|
||||||
import FileCache from "../utils/FileCache";
|
|
||||||
import Controller, {RouteParams} from "../Controller";
|
|
||||||
import * as querystring from "querystring";
|
import * as querystring from "querystring";
|
||||||
import {ParsedUrlQueryInput} from "querystring";
|
import {ParsedUrlQueryInput} from "querystring";
|
||||||
import util from "util";
|
import util from "util";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import Controller, {RouteParams} from "../Controller.js";
|
||||||
|
import ViewEngine from "../frontend/ViewEngine.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import {readdirRecursively} from "../Utils.js";
|
||||||
|
import FileCache from "../utils/FileCache.js";
|
||||||
|
|
||||||
export default class FrontendToolsComponent extends ApplicationComponent {
|
export default class FrontendToolsComponent extends ApplicationComponent {
|
||||||
private readonly publicAssetsCache: FileCache = new FileCache();
|
private readonly publicAssetsCache: FileCache = new FileCache();
|
||||||
private readonly viewEngines: ViewEngine[];
|
private readonly viewEngines: ViewEngine[];
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import onFinished from "on-finished";
|
|
||||||
import {logger} from "../Logger";
|
|
||||||
import {Request, Response, Router} from "express";
|
import {Request, Response, Router} from "express";
|
||||||
import {HttpError} from "../HttpError";
|
import onFinished from "on-finished";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {HttpError} from "../HttpError.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
|
||||||
export default class LogRequestsComponent extends ApplicationComponent {
|
export default class LogRequestsComponent extends ApplicationComponent {
|
||||||
private static fullRequests: boolean = false;
|
private static fullRequests: boolean = false;
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Express} from "express";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import SecurityError from "../SecurityError";
|
import {Express} from "express";
|
||||||
import nodemailer, {SentMessageInfo, Transporter} from "nodemailer";
|
import nodemailer, {SentMessageInfo, Transporter} from "nodemailer";
|
||||||
import MailError from "../mail/MailError";
|
|
||||||
import util from "util";
|
import util from "util";
|
||||||
import {logger} from "../Logger";
|
|
||||||
import Controller from "../Controller";
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
import Mail from "../mail/Mail";
|
import Controller from "../Controller.js";
|
||||||
import MailViewEngine from "../frontend/MailViewEngine";
|
import MailViewEngine from "../frontend/MailViewEngine.js";
|
||||||
import ViewEngine from "../frontend/ViewEngine";
|
import ViewEngine from "../frontend/ViewEngine.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import Mail from "../mail/Mail.js";
|
||||||
|
import MailError from "../mail/MailError.js";
|
||||||
|
import SecurityError from "../SecurityError.js";
|
||||||
|
|
||||||
export default class MailComponent extends ApplicationComponent {
|
export default class MailComponent extends ApplicationComponent {
|
||||||
private transporter?: Transporter;
|
private transporter?: Transporter;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {NextFunction, Request, Response, Router} from "express";
|
|
||||||
import {ServiceUnavailableHttpError} from "../HttpError";
|
|
||||||
import Application from "../Application";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
import {NextFunction, Request, Response, Router} from "express";
|
||||||
|
|
||||||
|
import Application from "../Application.js";
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {ServiceUnavailableHttpError} from "../HttpError.js";
|
||||||
|
|
||||||
export default class MaintenanceComponent extends ApplicationComponent {
|
export default class MaintenanceComponent extends ApplicationComponent {
|
||||||
private readonly application: Application;
|
private readonly application: Application;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Express} from "express";
|
import {Express} from "express";
|
||||||
import MysqlConnectionManager from "../db/MysqlConnectionManager";
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import MysqlConnectionManager from "../db/MysqlConnectionManager.js";
|
||||||
|
|
||||||
export default class MysqlComponent extends ApplicationComponent {
|
export default class MysqlComponent extends ApplicationComponent {
|
||||||
public async start(_app: Express): Promise<void> {
|
public async start(_app: Express): Promise<void> {
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Router} from "express";
|
import {Router} from "express";
|
||||||
import onFinished from "on-finished";
|
import onFinished from "on-finished";
|
||||||
import {logger} from "../Logger";
|
|
||||||
import SessionComponent from "./SessionComponent";
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import SessionComponent from "./SessionComponent.js";
|
||||||
|
|
||||||
export default class PreviousUrlComponent extends ApplicationComponent {
|
export default class PreviousUrlComponent extends ApplicationComponent {
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import {Express} from "express";
|
|
||||||
import redis, {RedisClient} from "redis";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import {logger} from "../Logger";
|
import {Express} from "express";
|
||||||
import session, {Store} from "express-session";
|
import session, {Store} from "express-session";
|
||||||
import CacheProvider from "../CacheProvider";
|
import redis, {RedisClient} from "redis";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import CacheProvider from "../CacheProvider.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
|
||||||
export default class RedisComponent extends ApplicationComponent implements CacheProvider {
|
export default class RedisComponent extends ApplicationComponent implements CacheProvider {
|
||||||
private redisClient?: RedisClient;
|
private redisClient?: RedisClient;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import express, {Router} from "express";
|
import express, {Router} from "express";
|
||||||
import {PathParams} from "express-serve-static-core";
|
import {PathParams} from "express-serve-static-core";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import {logger} from "../Logger";
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
|
||||||
export default class ServeStaticDirectoryComponent extends ApplicationComponent {
|
export default class ServeStaticDirectoryComponent extends ApplicationComponent {
|
||||||
private readonly root: string;
|
private readonly root: string;
|
||||||
@ -15,7 +16,7 @@ export default class ServeStaticDirectoryComponent extends ApplicationComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async init(router: Router): Promise<void> {
|
public async init(router: Router): Promise<void> {
|
||||||
const resolvedRoot = path.join(__dirname, this.getApp().isInNodeModules() ? '../../../' : '../../', this.root);
|
const resolvedRoot = path.resolve(this.root);
|
||||||
|
|
||||||
if (this.path) {
|
if (this.path) {
|
||||||
router.use(this.path, express.static(resolvedRoot, {maxAge: 1000 * 3600 * 72}));
|
router.use(this.path, express.static(resolvedRoot, {maxAge: 1000 * 3600 * 72}));
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
|
||||||
import session from "express-session";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import RedisComponent from "./RedisComponent";
|
|
||||||
import flash from "connect-flash";
|
import flash from "connect-flash";
|
||||||
import {Router} from "express";
|
import {Router} from "express";
|
||||||
import SecurityError from "../SecurityError";
|
import session from "express-session";
|
||||||
|
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import SecurityError from "../SecurityError.js";
|
||||||
|
import RedisComponent from "./RedisComponent.js";
|
||||||
|
|
||||||
export default class SessionComponent extends ApplicationComponent {
|
export default class SessionComponent extends ApplicationComponent {
|
||||||
private readonly storeComponent: RedisComponent;
|
private readonly storeComponent: RedisComponent;
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
import ApplicationComponent from "../ApplicationComponent";
|
import config from "config";
|
||||||
import {Express, Request} from "express";
|
|
||||||
import WebSocket, {Server as WebSocketServer} from "ws";
|
|
||||||
import {logger} from "../Logger";
|
|
||||||
import cookie from "cookie";
|
import cookie from "cookie";
|
||||||
import cookieParser from "cookie-parser";
|
import cookieParser from "cookie-parser";
|
||||||
import config from "config";
|
import {Express, Request} from "express";
|
||||||
import ExpressAppComponent from "./ExpressAppComponent";
|
|
||||||
import Application from "../Application";
|
|
||||||
import RedisComponent from "./RedisComponent";
|
|
||||||
import WebSocketListener from "../WebSocketListener";
|
|
||||||
import {Session} from "express-session";
|
import {Session} from "express-session";
|
||||||
import ViewEngine from "../frontend/ViewEngine";
|
import WebSocket from "ws";
|
||||||
|
|
||||||
|
import Application from "../Application.js";
|
||||||
|
import ApplicationComponent from "../ApplicationComponent.js";
|
||||||
|
import ViewEngine from "../frontend/ViewEngine.js";
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import WebSocketListener from "../WebSocketListener.js";
|
||||||
|
import ExpressAppComponent from "./ExpressAppComponent.js";
|
||||||
|
import RedisComponent from "./RedisComponent.js";
|
||||||
|
|
||||||
export default class WebSocketServerComponent extends ApplicationComponent {
|
export default class WebSocketServerComponent extends ApplicationComponent {
|
||||||
private wss?: WebSocket.Server;
|
private wss?: WebSocket.Server;
|
||||||
@ -27,7 +28,7 @@ export default class WebSocketServerComponent extends ApplicationComponent {
|
|||||||
|
|
||||||
public async start(_app: Express): Promise<void> {
|
public async start(_app: Express): Promise<void> {
|
||||||
const listeners: { [p: string]: WebSocketListener<Application> } = this.application.getWebSocketListeners();
|
const listeners: { [p: string]: WebSocketListener<Application> } = this.application.getWebSocketListeners();
|
||||||
this.wss = new WebSocketServer({
|
this.wss = new WebSocket.Server({
|
||||||
server: this.expressAppComponent.getServer(),
|
server: this.expressAppComponent.getServer(),
|
||||||
}, () => {
|
}, () => {
|
||||||
logger.info(`Websocket server started over webserver.`);
|
logger.info(`Websocket server started over webserver.`);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import {Connection} from "mysql";
|
import {Connection} from "mysql";
|
||||||
import MysqlConnectionManager from "./MysqlConnectionManager";
|
|
||||||
import {Type} from "../Utils";
|
import {Type} from "../Utils.js";
|
||||||
|
import MysqlConnectionManager from "./MysqlConnectionManager.js";
|
||||||
|
|
||||||
export default abstract class Migration {
|
export default abstract class Migration {
|
||||||
public readonly version: number;
|
public readonly version: number;
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
import MysqlConnectionManager from "./MysqlConnectionManager";
|
|
||||||
import Validator from "./Validator";
|
|
||||||
import {Connection} from "mysql";
|
|
||||||
import ModelComponent from "./ModelComponent";
|
|
||||||
import {Type} from "../Utils";
|
|
||||||
import ModelFactory, {PrimaryKeyValue} from "./ModelFactory";
|
|
||||||
import ModelRelation from "./ModelRelation";
|
|
||||||
import ModelQuery, {ModelFieldData, ModelQueryResult, QueryFields} from "./ModelQuery";
|
|
||||||
import {Request} from "express";
|
import {Request} from "express";
|
||||||
import Extendable from "../Extendable";
|
import {Connection} from "mysql";
|
||||||
|
|
||||||
|
import Extendable from "../Extendable.js";
|
||||||
|
import {Type} from "../Utils.js";
|
||||||
|
import ModelComponent from "./ModelComponent.js";
|
||||||
|
import ModelFactory, {PrimaryKeyValue} from "./ModelFactory.js";
|
||||||
|
import ModelQuery, {ModelFieldData, ModelQueryResult, QueryFields} from "./ModelQuery.js";
|
||||||
|
import ModelRelation from "./ModelRelation.js";
|
||||||
|
import MysqlConnectionManager from "./MysqlConnectionManager.js";
|
||||||
|
import Validator from "./Validator.js";
|
||||||
|
|
||||||
export default abstract class Model implements Extendable<ModelComponent<Model>> {
|
export default abstract class Model implements Extendable<ModelComponent<Model>> {
|
||||||
public static get table(): string {
|
public static get table(): string {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Model from "./Model";
|
import {getMethods} from "../Utils.js";
|
||||||
import Validator from "./Validator";
|
import Model from "./Model.js";
|
||||||
import {getMethods} from "../Utils";
|
import {ModelFieldData} from "./ModelQuery.js";
|
||||||
import {ModelFieldData} from "./ModelQuery";
|
import Validator from "./Validator.js";
|
||||||
|
|
||||||
export default abstract class ModelComponent<M extends Model> {
|
export default abstract class ModelComponent<M extends Model> {
|
||||||
protected readonly _model: M;
|
protected readonly _model: M;
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import ModelComponent from "./ModelComponent";
|
|
||||||
import Model, {ModelType} from "./Model";
|
|
||||||
import ModelQuery, {ModelQueryResult, QueryFields} from "./ModelQuery";
|
|
||||||
import {Request} from "express";
|
import {Request} from "express";
|
||||||
import {PageNotFoundError} from "../Pagination";
|
|
||||||
import {NotFoundHttpError} from "../HttpError";
|
import {NotFoundHttpError} from "../HttpError.js";
|
||||||
|
import {PageNotFoundError} from "../Pagination.js";
|
||||||
|
import Model, {ModelType} from "./Model.js";
|
||||||
|
import ModelComponent from "./ModelComponent.js";
|
||||||
|
import ModelQuery, {ModelQueryResult, QueryFields} from "./ModelQuery.js";
|
||||||
|
|
||||||
export default class ModelFactory<M extends Model> {
|
export default class ModelFactory<M extends Model> {
|
||||||
private static readonly factories: { [modelType: string]: ModelFactory<Model> | undefined } = {};
|
private static readonly factories: { [modelType: string]: ModelFactory<Model> | undefined } = {};
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import {isQueryVariable, query, QueryResult, QueryVariable} from "./MysqlConnectionManager";
|
|
||||||
import {Connection} from "mysql";
|
import {Connection} from "mysql";
|
||||||
import Model from "./Model";
|
|
||||||
import Pagination from "../Pagination";
|
import Pagination from "../Pagination.js";
|
||||||
import ModelRelation, {RelationDatabaseProperties} from "./ModelRelation";
|
import Model from "./Model.js";
|
||||||
import ModelFactory from "./ModelFactory";
|
import ModelFactory from "./ModelFactory.js";
|
||||||
|
import ModelRelation, {RelationDatabaseProperties} from "./ModelRelation.js";
|
||||||
|
import {isQueryVariable, query, QueryResult, QueryVariable} from "./MysqlConnectionManager.js";
|
||||||
|
|
||||||
|
|
||||||
export default class ModelQuery<M extends Model> implements WhereFieldConsumer<M> {
|
export default class ModelQuery<M extends Model> implements WhereFieldConsumer<M> {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import ModelQuery, {ModelFieldData, ModelQueryResult, WhereTest} from "./ModelQuery";
|
import Model, {ModelType} from "./Model.js";
|
||||||
import Model, {ModelType} from "./Model";
|
import ModelFactory from "./ModelFactory.js";
|
||||||
import ModelFactory from "./ModelFactory";
|
import ModelQuery, {ModelFieldData, ModelQueryResult, WhereTest} from "./ModelQuery.js";
|
||||||
|
|
||||||
export default abstract class ModelRelation<S extends Model, O extends Model, R extends O | O[] | null> {
|
export default abstract class ModelRelation<S extends Model, O extends Model, R extends O | O[] | null> {
|
||||||
protected readonly model: S;
|
protected readonly model: S;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import mysql, {Connection, FieldInfo, MysqlError, Pool, PoolConnection} from 'mysql';
|
|
||||||
import config from 'config';
|
import config from 'config';
|
||||||
import Migration, {MigrationType} from "./Migration";
|
import mysql, {Connection, FieldInfo, MysqlError, Pool, PoolConnection} from 'mysql';
|
||||||
import {logger} from "../Logger";
|
|
||||||
import {Type} from "../Utils";
|
import {logger} from "../Logger.js";
|
||||||
|
import {Type} from "../Utils.js";
|
||||||
|
import Migration, {MigrationType} from "./Migration.js";
|
||||||
|
|
||||||
export interface QueryResult {
|
export interface QueryResult {
|
||||||
readonly results: Record<string, unknown>[];
|
readonly results: Record<string, unknown>[];
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import Model, {ModelType} from "./Model";
|
|
||||||
import ModelQuery, {WhereTest} from "./ModelQuery";
|
|
||||||
import {Connection} from "mysql";
|
import {Connection} from "mysql";
|
||||||
import {ServerError} from "../HttpError";
|
|
||||||
|
import {ServerError} from "../HttpError.js";
|
||||||
|
import Model, {ModelType} from "./Model.js";
|
||||||
|
import ModelQuery, {WhereTest} from "./ModelQuery.js";
|
||||||
|
|
||||||
export const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;
|
export const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import mjml2html from "mjml";
|
import mjml2html from "mjml";
|
||||||
import MailError from "../mail/MailError";
|
|
||||||
import NunjucksViewEngine from "./NunjucksViewEngine";
|
import MailError from "../mail/MailError.js";
|
||||||
|
import NunjucksViewEngine from "./NunjucksViewEngine.js";
|
||||||
|
|
||||||
export default class MailViewEngine extends NunjucksViewEngine {
|
export default class MailViewEngine extends NunjucksViewEngine {
|
||||||
public getExtension(): string {
|
public getExtension(): string {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import ViewEngine from "./ViewEngine";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import nunjucks, {Environment} from "nunjucks";
|
import nunjucks, {Environment} from "nunjucks";
|
||||||
|
|
||||||
|
import ViewEngine from "./ViewEngine.js";
|
||||||
|
|
||||||
export default class NunjucksViewEngine extends ViewEngine {
|
export default class NunjucksViewEngine extends ViewEngine {
|
||||||
private readonly environment: Environment;
|
private readonly environment: Environment;
|
||||||
|
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
import crypto from "crypto";
|
import child_process from "child_process";
|
||||||
import path from "path";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
import ViewEngine from "./ViewEngine";
|
import crypto from "crypto";
|
||||||
import {logger} from "../Logger";
|
|
||||||
import FileCache from "../utils/FileCache";
|
|
||||||
import {afs} from "../Utils";
|
|
||||||
import {compile, preprocess} from "svelte/compiler";
|
|
||||||
import {sveltePreprocess} from "svelte-preprocess/dist/autoProcess";
|
|
||||||
import requireFromString from "require-from-string";
|
|
||||||
import {CssResult} from "svelte/types/compiler/interfaces";
|
|
||||||
import * as child_process from "child_process";
|
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
import {nanoid} from "nanoid";
|
||||||
|
import path from "path";
|
||||||
|
import requireFromString from "require-from-string";
|
||||||
|
import {compile, preprocess} from "svelte/compiler";
|
||||||
|
import {CssResult} from "svelte/types/compiler/interfaces";
|
||||||
|
import {sveltePreprocess} from "svelte-preprocess/dist/autoProcess.js";
|
||||||
|
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import {afs} from "../Utils.js";
|
||||||
|
import FileCache from "../utils/FileCache.js";
|
||||||
|
import ViewEngine from "./ViewEngine.js";
|
||||||
|
|
||||||
const BACKEND_CODE_PREFIX = 'locals.';
|
const BACKEND_CODE_PREFIX = 'locals.';
|
||||||
const BACKEND_CODE_PREFIX_TEMPORARY_HOLDER = '$$locals$$';
|
const BACKEND_CODE_PREFIX_TEMPORARY_HOLDER = '$$locals$$';
|
||||||
@ -321,7 +323,6 @@ export default class SvelteViewEngine extends ViewEngine {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const globals = ViewEngine.getGlobals();
|
const globals = ViewEngine.getGlobals();
|
||||||
delete require.cache[path.resolve(file)];
|
|
||||||
const localsFunction = (key: string, rawArgs?: string) => {
|
const localsFunction = (key: string, rawArgs?: string) => {
|
||||||
if (!rawArgs) return globals[key];
|
if (!rawArgs) return globals[key];
|
||||||
const args = Function(`"use strict";const locals = Object.assign(arguments[0], arguments[1]);return (${rawArgs});`)(localsFunction, globals) as string[];
|
const args = Function(`"use strict";const locals = Object.assign(arguments[0], arguments[1]);return (${rawArgs});`)(localsFunction, globals) as string[];
|
||||||
@ -330,7 +331,7 @@ export default class SvelteViewEngine extends ViewEngine {
|
|||||||
if (typeof f !== 'function') throw new Error(key + ' is not a function.');
|
if (typeof f !== 'function') throw new Error(key + ' is not a function.');
|
||||||
return f.call(globals, ...args);
|
return f.call(globals, ...args);
|
||||||
};
|
};
|
||||||
return requireFromString(svelteSsr.js.code, file).default.render({
|
return requireFromString(svelteSsr.js.code, file + nanoid()).default.render({
|
||||||
locals: localsFunction,
|
locals: localsFunction,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import path from "path";
|
|
||||||
import fs from "fs";
|
|
||||||
import chokidar, {FSWatcher} from "chokidar";
|
import chokidar, {FSWatcher} from "chokidar";
|
||||||
import {logger} from "../Logger";
|
|
||||||
import {afs, readdirRecursively} from "../Utils";
|
|
||||||
import {Express} from "express";
|
import {Express} from "express";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
import {logger} from "../Logger.js";
|
||||||
|
import {afs, readdirRecursively} from "../Utils.js";
|
||||||
|
|
||||||
export default abstract class ViewEngine {
|
export default abstract class ViewEngine {
|
||||||
private static readonly globals: Record<string, unknown> = {};
|
private static readonly globals: Record<string, unknown> = {};
|
||||||
@ -31,11 +32,11 @@ export default abstract class ViewEngine {
|
|||||||
...additionalViewPaths: string[]
|
...additionalViewPaths: string[]
|
||||||
) {
|
) {
|
||||||
this.viewPaths = [
|
this.viewPaths = [
|
||||||
...additionalViewPaths.map(p => path.resolve(p)),
|
...additionalViewPaths,
|
||||||
path.resolve(__dirname, '../../../views'),
|
'views',
|
||||||
path.resolve(__dirname, '../../views'),
|
'node_modules/swaf/views',
|
||||||
path.resolve(__dirname, '../views'),
|
].map(p => path.resolve(p))
|
||||||
].filter(dir => fs.existsSync(dir));
|
.filter(dir => fs.existsSync(dir));
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract getExtension(): string;
|
public abstract getExtension(): string;
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
import config from "config";
|
import config from "config";
|
||||||
import Controller from "../Controller";
|
|
||||||
import User from "../auth/models/User";
|
|
||||||
import {Request, Response} from "express";
|
import {Request, Response} from "express";
|
||||||
import {BadRequestError, NotFoundHttpError} from "../HttpError";
|
|
||||||
import Mail from "../mail/Mail";
|
import {RequireAdminMiddleware, RequireAuthMiddleware} from "../auth/AuthComponent.js";
|
||||||
import {ACCOUNT_REVIEW_NOTICE_MAIL_TEMPLATE} from "../Mails";
|
import User from "../auth/models/User.js";
|
||||||
import UserEmail from "../auth/models/UserEmail";
|
import UserApprovedComponent from "../auth/models/UserApprovedComponent.js";
|
||||||
import UserApprovedComponent from "../auth/models/UserApprovedComponent";
|
import UserEmail from "../auth/models/UserEmail.js";
|
||||||
import {RequireAdminMiddleware, RequireAuthMiddleware} from "../auth/AuthComponent";
|
import UserNameComponent from "../auth/models/UserNameComponent.js";
|
||||||
import ModelFactory from "../db/ModelFactory";
|
import MailComponent from "../components/MailComponent.js";
|
||||||
import UserNameComponent from "../auth/models/UserNameComponent";
|
import Controller from "../Controller.js";
|
||||||
import MailComponent from "../components/MailComponent";
|
import ModelFactory from "../db/ModelFactory.js";
|
||||||
|
import {BadRequestError, NotFoundHttpError} from "../HttpError.js";
|
||||||
|
import Mail from "../mail/Mail.js";
|
||||||
|
import {ACCOUNT_REVIEW_NOTICE_MAIL_TEMPLATE} from "../Mails.js";
|
||||||
|
|
||||||
export default class BackendController extends Controller {
|
export default class BackendController extends Controller {
|
||||||
private static readonly menu: BackendMenuElement[] = [];
|
private static readonly menu: BackendMenuElement[] = [];
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import {Options} from "nodemailer/lib/mailer";
|
import {Options} from "nodemailer/lib/mailer";
|
||||||
import {ParsedUrlQueryInput} from "querystring";
|
import {ParsedUrlQueryInput} from "querystring";
|
||||||
import MailError from "./MailError";
|
|
||||||
import MailTemplate from "./MailTemplate";
|
import MailError from "./MailError.js";
|
||||||
|
import MailTemplate from "./MailTemplate.js";
|
||||||
|
|
||||||
export default class Mail {
|
export default class Mail {
|
||||||
private readonly options: Options = {};
|
private readonly options: Options = {};
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import {Request, Response} from "express";
|
import {Request, Response} from "express";
|
||||||
import Controller from "../Controller";
|
|
||||||
|
import Controller from "../Controller.js";
|
||||||
|
|
||||||
export default class MailController extends Controller {
|
export default class MailController extends Controller {
|
||||||
public routes(): void {
|
public routes(): void {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {WrappingError} from "../Utils";
|
import {WrappingError} from "../Utils.js";
|
||||||
|
|
||||||
export default class MailError extends WrappingError {
|
export default class MailError extends WrappingError {
|
||||||
public constructor(message: string = 'An error occurred while sending mail.', cause?: Error) {
|
public constructor(message: string = 'An error occurred while sending mail.', cause?: Error) {
|
||||||
|
18
src/main.ts
18
src/main.ts
@ -1,19 +1,23 @@
|
|||||||
import {delimiter} from "path";
|
import path from "path";
|
||||||
|
|
||||||
// Load config from specified path or default + swaf/config (default defaults)
|
// Load config from specified path or default + swaf/config (default defaults)
|
||||||
process.env['NODE_CONFIG_DIR'] =
|
process.env['NODE_CONFIG_DIR'] =
|
||||||
__dirname + '/../node_modules/swaf/config/'
|
path.resolve('node_modules/swaf/config')
|
||||||
+ delimiter
|
+ path.delimiter
|
||||||
+ (process.env['NODE_CONFIG_DIR'] || __dirname + '/../config/');
|
+ (process.env['NODE_CONFIG_DIR'] || path.resolve('config'));
|
||||||
|
|
||||||
import {logger} from "./Logger";
|
|
||||||
import TestApp from "./TestApp";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
|
||||||
|
import {logger} from "./Logger.js";
|
||||||
|
import TestApp from "./TestApp.js";
|
||||||
|
import {afs} from "./Utils.js";
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
logger.debug('Config path:', process.env['NODE_CONFIG_DIR']);
|
logger.debug('Config path:', process.env['NODE_CONFIG_DIR']);
|
||||||
|
|
||||||
const app = new TestApp(config.get<string>('listen_addr'), config.get<number>('port'));
|
const packageJson = JSON.parse((await afs.readFile('package.json')).toString());
|
||||||
|
|
||||||
|
const app = new TestApp(packageJson.version, config.get<string>('listen_addr'), config.get<number>('port'));
|
||||||
await app.start();
|
await app.start();
|
||||||
})().catch(err => {
|
})().catch(err => {
|
||||||
logger.error(err);
|
logger.error(err);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Migration from "../db/Migration";
|
import Migration from "../db/Migration.js";
|
||||||
import {query} from "../db/MysqlConnectionManager";
|
import {query} from "../db/MysqlConnectionManager.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Must be the first migration
|
* Must be the first migration
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../db/Migration";
|
import Migration from "../db/Migration.js";
|
||||||
|
|
||||||
export default class DropLegacyLogsTable extends Migration {
|
export default class DropLegacyLogsTable extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Migration from "../db/Migration";
|
import Migration from "../db/Migration.js";
|
||||||
|
|
||||||
export default class DummyMigration extends Migration {
|
export default class DummyMigration extends Migration {
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
|
11
src/types/Express.d.ts
vendored
11
src/types/Express.d.ts
vendored
@ -1,9 +1,10 @@
|
|||||||
import {Files} from "formidable";
|
|
||||||
import {Type} from "../Utils";
|
|
||||||
import Middleware from "../Middleware";
|
|
||||||
import {FlashMessages} from "../components/SessionComponent";
|
|
||||||
import {Session, SessionData} from "express-session";
|
import {Session, SessionData} from "express-session";
|
||||||
import {PasswordAuthProofSessionData} from "../auth/password/PasswordAuthProof";
|
import {Files} from "formidable";
|
||||||
|
|
||||||
|
import {PasswordAuthProofSessionData} from "../auth/password/PasswordAuthProof.js";
|
||||||
|
import {FlashMessages} from "../components/SessionComponent.js";
|
||||||
|
import Middleware from "../Middleware.js";
|
||||||
|
import {Type} from "../Utils.js";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace Express {
|
namespace Express {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import {afs} from "../Utils";
|
|
||||||
|
import {afs} from "../Utils.js";
|
||||||
|
|
||||||
export default class FileCache {
|
export default class FileCache {
|
||||||
private readonly cache: Record<string, string> = {};
|
private readonly cache: Record<string, string> = {};
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import useApp from "./_app";
|
|
||||||
import supertest from "supertest";
|
|
||||||
import User from "../src/auth/models/User";
|
|
||||||
import UserNameComponent from "../src/auth/models/UserNameComponent";
|
|
||||||
import UserPasswordComponent from "../src/auth/password/UserPasswordComponent";
|
|
||||||
import {popEmail} from "./_mail_server";
|
|
||||||
import {authAppProvider, followMagicLinkFromMail, testLogout} from "./_authentication_common";
|
|
||||||
import UserEmail from "../src/auth/models/UserEmail";
|
|
||||||
import * as querystring from "querystring";
|
import * as querystring from "querystring";
|
||||||
|
import supertest from "supertest";
|
||||||
|
|
||||||
|
import User from "../src/auth/models/User.js";
|
||||||
|
import UserEmail from "../src/auth/models/UserEmail.js";
|
||||||
|
import UserNameComponent from "../src/auth/models/UserNameComponent.js";
|
||||||
|
import UserPasswordComponent from "../src/auth/password/UserPasswordComponent.js";
|
||||||
|
import useApp from "./_app.js";
|
||||||
|
import {authAppProvider, followMagicLinkFromMail, testLogout} from "./_authentication_common.js";
|
||||||
|
import {popEmail} from "./_mail_server.js";
|
||||||
|
|
||||||
const app = useApp(authAppProvider());
|
const app = useApp(authAppProvider());
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import useApp from "./_app";
|
|
||||||
import supertest from "supertest";
|
|
||||||
import {authAppProvider, followMagicLinkFromMail} from "./_authentication_common";
|
|
||||||
import User from "../src/auth/models/User";
|
|
||||||
import querystring from "querystring";
|
import querystring from "querystring";
|
||||||
import UserApprovedComponent from "../src/auth/models/UserApprovedComponent";
|
import supertest from "supertest";
|
||||||
import {popEmail} from "./_mail_server";
|
|
||||||
|
import User from "../src/auth/models/User.js";
|
||||||
|
import UserApprovedComponent from "../src/auth/models/UserApprovedComponent.js";
|
||||||
|
import useApp from "./_app.js";
|
||||||
|
import {authAppProvider, followMagicLinkFromMail} from "./_authentication_common.js";
|
||||||
|
import {popEmail} from "./_mail_server.js";
|
||||||
|
|
||||||
const app = useApp(authAppProvider(true, true));
|
const app = useApp(authAppProvider(true, true));
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import useApp from "./_app";
|
|
||||||
import supertest from "supertest";
|
import supertest from "supertest";
|
||||||
import UserPasswordComponent from "../src/auth/password/UserPasswordComponent";
|
|
||||||
import {popEmail} from "./_mail_server";
|
import User from "../src/auth/models/User.js";
|
||||||
import {authAppProvider, followMagicLinkFromMail, testLogout} from "./_authentication_common";
|
import UserEmail from "../src/auth/models/UserEmail.js";
|
||||||
import UserEmail from "../src/auth/models/UserEmail";
|
import UserPasswordComponent from "../src/auth/password/UserPasswordComponent.js";
|
||||||
import User from "../src/auth/models/User";
|
import useApp from "./_app.js";
|
||||||
|
import {authAppProvider, followMagicLinkFromMail, testLogout} from "./_authentication_common.js";
|
||||||
|
import {popEmail} from "./_mail_server.js";
|
||||||
|
|
||||||
const app = useApp(authAppProvider(false));
|
const app = useApp(authAppProvider(false));
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Controller from "../src/Controller";
|
import Controller from "../src/Controller.js";
|
||||||
|
|
||||||
describe('Controller.route()', () => {
|
describe('Controller.route()', () => {
|
||||||
new class extends Controller {
|
new class extends Controller {
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import useApp from "./_app";
|
|
||||||
import Controller from "../src/Controller";
|
|
||||||
import supertest from "supertest";
|
import supertest from "supertest";
|
||||||
import TestApp from "../src/TestApp";
|
|
||||||
import CsrfProtectionComponent from "../src/components/CsrfProtectionComponent";
|
import CsrfProtectionComponent from "../src/components/CsrfProtectionComponent.js";
|
||||||
|
import Controller from "../src/Controller.js";
|
||||||
|
import TestApp from "../src/TestApp.js";
|
||||||
|
import useApp from "./_app.js";
|
||||||
|
|
||||||
let app: TestApp;
|
let app: TestApp;
|
||||||
useApp(async (addr, port) => {
|
useApp(async (addr, port) => {
|
||||||
@ -24,7 +25,7 @@ useApp(async (addr, port) => {
|
|||||||
|
|
||||||
await super.init();
|
await super.init();
|
||||||
}
|
}
|
||||||
}(addr, port, true);
|
}('test', addr, port, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Test CSRF protection', () => {
|
describe('Test CSRF protection', () => {
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import MysqlConnectionManager from "../src/db/MysqlConnectionManager";
|
|
||||||
import Model from "../src/db/Model";
|
|
||||||
import ModelFactory from "../src/db/ModelFactory";
|
|
||||||
import {ValidationBag} from "../src/db/Validator";
|
|
||||||
import {logger} from "../src/Logger";
|
|
||||||
import {ManyThroughModelRelation, OneModelRelation} from "../src/db/ModelRelation";
|
|
||||||
import {MIGRATIONS} from "../src/TestApp";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
|
||||||
|
import Model from "../src/db/Model.js";
|
||||||
|
import ModelFactory from "../src/db/ModelFactory.js";
|
||||||
|
import {ManyThroughModelRelation, OneModelRelation} from "../src/db/ModelRelation.js";
|
||||||
|
import MysqlConnectionManager from "../src/db/MysqlConnectionManager.js";
|
||||||
|
import {ValidationBag} from "../src/db/Validator.js";
|
||||||
|
import {logger} from "../src/Logger.js";
|
||||||
|
import {MIGRATIONS} from "../src/TestApp.js";
|
||||||
|
|
||||||
class FakeDummyModel extends Model {
|
class FakeDummyModel extends Model {
|
||||||
public id?: number = undefined;
|
public id?: number = undefined;
|
||||||
public name?: string = undefined;
|
public name?: string = undefined;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import ModelQuery, {SelectFieldValue, WhereOperator} from "../src/db/ModelQuery";
|
import Model from "../src/db/Model.js";
|
||||||
import ModelFactory from "../src/db/ModelFactory";
|
import ModelFactory from "../src/db/ModelFactory.js";
|
||||||
import Model from "../src/db/Model";
|
import ModelQuery, {SelectFieldValue, WhereOperator} from "../src/db/ModelQuery.js";
|
||||||
|
|
||||||
describe('Test ModelQuery', () => {
|
describe('Test ModelQuery', () => {
|
||||||
test('select', () => {
|
test('select', () => {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Pagination from "../src/Pagination";
|
import Pagination from "../src/Pagination.js";
|
||||||
|
|
||||||
describe('Pagination', () => {
|
describe('Pagination', () => {
|
||||||
const pagination = new Pagination(3, 5, 31);
|
const pagination = new Pagination(3, 5, 31);
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import {setupMailServer, teardownMailServer} from "./_mail_server";
|
|
||||||
import TestApp from "../src/TestApp";
|
|
||||||
import MysqlConnectionManager from "../src/db/MysqlConnectionManager";
|
|
||||||
import config from "config";
|
import config from "config";
|
||||||
|
|
||||||
|
import MysqlConnectionManager from "../src/db/MysqlConnectionManager.js";
|
||||||
|
import TestApp from "../src/TestApp.js";
|
||||||
|
import {setupMailServer, teardownMailServer} from "./_mail_server.js";
|
||||||
|
|
||||||
|
|
||||||
export default function useApp<T extends TestApp>(appSupplier: AppSupplier<T>): () => T {
|
export default function useApp<T extends TestApp>(appSupplier: AppSupplier<T>): () => T {
|
||||||
let app: T;
|
let app: T;
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
import {popEmail} from "./_mail_server";
|
|
||||||
import supertest from "supertest";
|
import supertest from "supertest";
|
||||||
import {AppSupplier} from "./_app";
|
|
||||||
import TestApp from "../src/TestApp";
|
import AuthComponent from "../src/auth/AuthComponent.js";
|
||||||
import Controller from "../src/Controller";
|
import AddApprovedFieldToUsersTableMigration from "../src/auth/migrations/AddApprovedFieldToUsersTableMigration.js";
|
||||||
import CsrfProtectionComponent from "../src/components/CsrfProtectionComponent";
|
import AddNameToUsersMigration from "../src/auth/migrations/AddNameToUsersMigration.js";
|
||||||
import AuthComponent from "../src/auth/AuthComponent";
|
import MagicLink from "../src/auth/models/MagicLink.js";
|
||||||
import Migration, {MigrationType} from "../src/db/Migration";
|
import PasswordAuthProof from "../src/auth/password/PasswordAuthProof.js";
|
||||||
import AddNameToUsersMigration from "../src/auth/migrations/AddNameToUsersMigration";
|
import CsrfProtectionComponent from "../src/components/CsrfProtectionComponent.js";
|
||||||
import AddApprovedFieldToUsersTableMigration from "../src/auth/migrations/AddApprovedFieldToUsersTableMigration";
|
import Controller from "../src/Controller.js";
|
||||||
import PasswordAuthProof from "../src/auth/password/PasswordAuthProof";
|
import Migration, {MigrationType} from "../src/db/Migration.js";
|
||||||
import MagicLink from "../src/auth/models/MagicLink";
|
import TestApp from "../src/TestApp.js";
|
||||||
|
import {AppSupplier} from "./_app.js";
|
||||||
|
import {popEmail} from "./_mail_server.js";
|
||||||
|
|
||||||
export async function followMagicLinkFromMail(
|
export async function followMagicLinkFromMail(
|
||||||
agent: supertest.SuperTest<supertest.Test>,
|
agent: supertest.SuperTest<supertest.Test>,
|
||||||
@ -94,6 +95,6 @@ export function authAppProvider(withUsername: boolean = true, approvalMode: bool
|
|||||||
|
|
||||||
return migrations;
|
return migrations;
|
||||||
}
|
}
|
||||||
}(addr, port, true);
|
}('test', addr, port, true);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ES6",
|
"target": "ESNext",
|
||||||
"module": "CommonJS",
|
"module": "ESNext",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"stripInternal": true,
|
"stripInternal": true,
|
||||||
|
|
||||||
|
626
yarn.lock
626
yarn.lock
@ -17,24 +17,24 @@
|
|||||||
"@babel/highlight" "^7.12.13"
|
"@babel/highlight" "^7.12.13"
|
||||||
|
|
||||||
"@babel/compat-data@^7.13.15":
|
"@babel/compat-data@^7.13.15":
|
||||||
version "7.13.15"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919"
|
||||||
integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==
|
integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==
|
||||||
|
|
||||||
"@babel/core@^7.1.0", "@babel/core@^7.7.5":
|
"@babel/core@^7.1.0", "@babel/core@^7.7.5":
|
||||||
version "7.13.16"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.0.tgz#47299ff3ec8d111b493f1a9d04bf88c04e728d88"
|
||||||
integrity sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q==
|
integrity sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "^7.12.13"
|
"@babel/code-frame" "^7.12.13"
|
||||||
"@babel/generator" "^7.13.16"
|
"@babel/generator" "^7.14.0"
|
||||||
"@babel/helper-compilation-targets" "^7.13.16"
|
"@babel/helper-compilation-targets" "^7.13.16"
|
||||||
"@babel/helper-module-transforms" "^7.13.14"
|
"@babel/helper-module-transforms" "^7.14.0"
|
||||||
"@babel/helpers" "^7.13.16"
|
"@babel/helpers" "^7.14.0"
|
||||||
"@babel/parser" "^7.13.16"
|
"@babel/parser" "^7.14.0"
|
||||||
"@babel/template" "^7.12.13"
|
"@babel/template" "^7.12.13"
|
||||||
"@babel/traverse" "^7.13.15"
|
"@babel/traverse" "^7.14.0"
|
||||||
"@babel/types" "^7.13.16"
|
"@babel/types" "^7.14.0"
|
||||||
convert-source-map "^1.7.0"
|
convert-source-map "^1.7.0"
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
gensync "^1.0.0-beta.2"
|
gensync "^1.0.0-beta.2"
|
||||||
@ -42,12 +42,12 @@
|
|||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
"@babel/generator@^7.13.16":
|
"@babel/generator@^7.14.0":
|
||||||
version "7.13.16"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14"
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.0.tgz#0f35d663506c43e4f10898fbda0d752ec75494be"
|
||||||
integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg==
|
integrity sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.13.16"
|
"@babel/types" "^7.14.0"
|
||||||
jsesc "^2.5.1"
|
jsesc "^2.5.1"
|
||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
@ -91,19 +91,19 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.13.12"
|
"@babel/types" "^7.13.12"
|
||||||
|
|
||||||
"@babel/helper-module-transforms@^7.13.14":
|
"@babel/helper-module-transforms@^7.14.0":
|
||||||
version "7.13.14"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef"
|
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz#8fcf78be220156f22633ee204ea81f73f826a8ad"
|
||||||
integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==
|
integrity sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-module-imports" "^7.13.12"
|
"@babel/helper-module-imports" "^7.13.12"
|
||||||
"@babel/helper-replace-supers" "^7.13.12"
|
"@babel/helper-replace-supers" "^7.13.12"
|
||||||
"@babel/helper-simple-access" "^7.13.12"
|
"@babel/helper-simple-access" "^7.13.12"
|
||||||
"@babel/helper-split-export-declaration" "^7.12.13"
|
"@babel/helper-split-export-declaration" "^7.12.13"
|
||||||
"@babel/helper-validator-identifier" "^7.12.11"
|
"@babel/helper-validator-identifier" "^7.14.0"
|
||||||
"@babel/template" "^7.12.13"
|
"@babel/template" "^7.12.13"
|
||||||
"@babel/traverse" "^7.13.13"
|
"@babel/traverse" "^7.14.0"
|
||||||
"@babel/types" "^7.13.14"
|
"@babel/types" "^7.14.0"
|
||||||
|
|
||||||
"@babel/helper-optimise-call-expression@^7.12.13":
|
"@babel/helper-optimise-call-expression@^7.12.13":
|
||||||
version "7.12.13"
|
version "7.12.13"
|
||||||
@ -141,38 +141,38 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.12.13"
|
"@babel/types" "^7.12.13"
|
||||||
|
|
||||||
"@babel/helper-validator-identifier@^7.12.11":
|
"@babel/helper-validator-identifier@^7.14.0":
|
||||||
version "7.12.11"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288"
|
||||||
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
|
integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==
|
||||||
|
|
||||||
"@babel/helper-validator-option@^7.12.17":
|
"@babel/helper-validator-option@^7.12.17":
|
||||||
version "7.12.17"
|
version "7.12.17"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
|
||||||
integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
|
integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
|
||||||
|
|
||||||
"@babel/helpers@^7.13.16":
|
"@babel/helpers@^7.14.0":
|
||||||
version "7.13.17"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.17.tgz#b497c7a00e9719d5b613b8982bda6ed3ee94caf6"
|
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62"
|
||||||
integrity sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg==
|
integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/template" "^7.12.13"
|
"@babel/template" "^7.12.13"
|
||||||
"@babel/traverse" "^7.13.17"
|
"@babel/traverse" "^7.14.0"
|
||||||
"@babel/types" "^7.13.17"
|
"@babel/types" "^7.14.0"
|
||||||
|
|
||||||
"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
|
"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
|
||||||
version "7.13.10"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
|
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf"
|
||||||
integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
|
integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-validator-identifier" "^7.12.11"
|
"@babel/helper-validator-identifier" "^7.14.0"
|
||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.16":
|
"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.0":
|
||||||
version "7.13.16"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37"
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.0.tgz#2f0ebfed92bcddcc8395b91f1895191ce2760380"
|
||||||
integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw==
|
integrity sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==
|
||||||
|
|
||||||
"@babel/plugin-syntax-async-generators@^7.8.4":
|
"@babel/plugin-syntax-async-generators@^7.8.4":
|
||||||
version "7.8.4"
|
version "7.8.4"
|
||||||
@ -259,9 +259,9 @@
|
|||||||
"@babel/helper-plugin-utils" "^7.12.13"
|
"@babel/helper-plugin-utils" "^7.12.13"
|
||||||
|
|
||||||
"@babel/runtime@^7.8.7":
|
"@babel/runtime@^7.8.7":
|
||||||
version "7.13.17"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.17.tgz#8966d1fc9593bf848602f0662d6b4d0069e3a7ec"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6"
|
||||||
integrity sha512-NCdgJEelPTSh+FEFylhnP1ylq848l1z9t9N0j1Lfbcw0+KXGjsTvUmkxy+voLLXB5SOKMbLLx4jxYliGrYQseA==
|
integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.13.4"
|
regenerator-runtime "^0.13.4"
|
||||||
|
|
||||||
@ -274,26 +274,26 @@
|
|||||||
"@babel/parser" "^7.12.13"
|
"@babel/parser" "^7.12.13"
|
||||||
"@babel/types" "^7.12.13"
|
"@babel/types" "^7.12.13"
|
||||||
|
|
||||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.13.17":
|
"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0":
|
||||||
version "7.13.17"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3"
|
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.0.tgz#cea0dc8ae7e2b1dec65f512f39f3483e8cc95aef"
|
||||||
integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg==
|
integrity sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "^7.12.13"
|
"@babel/code-frame" "^7.12.13"
|
||||||
"@babel/generator" "^7.13.16"
|
"@babel/generator" "^7.14.0"
|
||||||
"@babel/helper-function-name" "^7.12.13"
|
"@babel/helper-function-name" "^7.12.13"
|
||||||
"@babel/helper-split-export-declaration" "^7.12.13"
|
"@babel/helper-split-export-declaration" "^7.12.13"
|
||||||
"@babel/parser" "^7.13.16"
|
"@babel/parser" "^7.14.0"
|
||||||
"@babel/types" "^7.13.17"
|
"@babel/types" "^7.14.0"
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
|
||||||
"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
|
"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
|
||||||
version "7.13.17"
|
version "7.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4"
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.0.tgz#3fc3fc74e0cdad878182e5f66cc6bcab1915a802"
|
||||||
integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA==
|
integrity sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-validator-identifier" "^7.12.11"
|
"@babel/helper-validator-identifier" "^7.14.0"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@bcoe/v8-coverage@^0.2.3":
|
"@bcoe/v8-coverage@^0.2.3":
|
||||||
@ -788,9 +788,9 @@
|
|||||||
"@types/istanbul-lib-report" "*"
|
"@types/istanbul-lib-report" "*"
|
||||||
|
|
||||||
"@types/jest@^26.0.4":
|
"@types/jest@^26.0.4":
|
||||||
version "26.0.22"
|
version "26.0.23"
|
||||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6"
|
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7"
|
||||||
integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw==
|
integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==
|
||||||
dependencies:
|
dependencies:
|
||||||
jest-diff "^26.0.0"
|
jest-diff "^26.0.0"
|
||||||
pretty-format "^26.0.0"
|
pretty-format "^26.0.0"
|
||||||
@ -845,9 +845,9 @@
|
|||||||
form-data "^3.0.0"
|
form-data "^3.0.0"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "14.14.41"
|
version "15.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a"
|
||||||
integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==
|
integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA==
|
||||||
|
|
||||||
"@types/nodemailer@^6.4.0":
|
"@types/nodemailer@^6.4.0":
|
||||||
version "6.4.1"
|
version "6.4.1"
|
||||||
@ -953,9 +953,9 @@
|
|||||||
integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==
|
integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==
|
||||||
|
|
||||||
"@types/ws@^7.2.4":
|
"@types/ws@^7.2.4":
|
||||||
version "7.4.1"
|
version "7.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.1.tgz#49eacb15a0534663d53a36fbf5b4d98f5ae9a73a"
|
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.2.tgz#bfe739b5f8b3a39742605fbe415ae7e88ee614c8"
|
||||||
integrity sha512-ISCK1iFnR+jYv7+jLNX0wDqesZ/5RAeY3wUx6QaphmocphU61h+b+PHjS18TF4WIPTu/MMzxIq2PHr32o2TS5Q==
|
integrity sha512-PbeN0Eydl7LQl4OIav29YmkO2LxbVuz3nZD/kb19lOS+wLgIkRbWMNmU/QQR7ABpOJ7D7xDOU8co7iohObewrw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
@ -1088,9 +1088,9 @@ acorn@^7.1.1, acorn@^7.4.0:
|
|||||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||||
|
|
||||||
acorn@^8.1.0:
|
acorn@^8.1.0:
|
||||||
version "8.1.1"
|
version "8.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.1.tgz#fb0026885b9ac9f48bac1e185e4af472971149ff"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.2.tgz#c4574e4fea298d6e6ed4b85ab844b06dd59f26d6"
|
||||||
integrity sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==
|
integrity sha512-VrMS8kxT0e7J1EX0p6rI/E0FbfOVcvBpbIqHThFv+f8YrZIlMfVotYcXKVPmTvPW8sW5miJzfUFrrvthUZg8VQ==
|
||||||
|
|
||||||
addressparser@^1.0.1:
|
addressparser@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@ -1120,9 +1120,9 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4:
|
|||||||
uri-js "^4.2.2"
|
uri-js "^4.2.2"
|
||||||
|
|
||||||
ajv@^8.0.1:
|
ajv@^8.0.1:
|
||||||
version "8.1.0"
|
version "8.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602"
|
||||||
integrity sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==
|
integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-deep-equal "^3.1.1"
|
fast-deep-equal "^3.1.1"
|
||||||
json-schema-traverse "^1.0.0"
|
json-schema-traverse "^1.0.0"
|
||||||
@ -1552,13 +1552,13 @@ browser-process-hrtime@^1.0.0:
|
|||||||
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
||||||
|
|
||||||
browserslist@^4.14.5:
|
browserslist@^4.14.5:
|
||||||
version "4.16.5"
|
version "4.16.6"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.5.tgz#952825440bca8913c62d0021334cbe928ef062ae"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2"
|
||||||
integrity sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A==
|
integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001214"
|
caniuse-lite "^1.0.30001219"
|
||||||
colorette "^1.2.2"
|
colorette "^1.2.2"
|
||||||
electron-to-chromium "^1.3.719"
|
electron-to-chromium "^1.3.723"
|
||||||
escalade "^3.1.1"
|
escalade "^3.1.1"
|
||||||
node-releases "^1.1.71"
|
node-releases "^1.1.71"
|
||||||
|
|
||||||
@ -1665,10 +1665,10 @@ camelcase@^6.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
|
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
|
||||||
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
|
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30001214:
|
caniuse-lite@^1.0.30001219:
|
||||||
version "1.0.30001214"
|
version "1.0.30001220"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001214.tgz#70f153c78223515c6d37a9fde6cd69250da9d872"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001220.tgz#c080e1c8eefb99f6cc9685da6313840bdbaf4c36"
|
||||||
integrity sha512-O2/SCpuaU3eASWVaesQirZv1MSjUNOvmugaD8zNSJqw6Vv5SGwoOpA9LJs3pNPfM745nxqPvfZY3MQKY4AKHYg==
|
integrity sha512-pjC2T4DIDyGAKTL4dMvGUQaMUHRmhvPpAgNNTa14jaBWHu+bLQgvpFqElxh9L4829Fdx0PlKiMp3wnYldRtECA==
|
||||||
|
|
||||||
capture-exit@^2.0.0:
|
capture-exit@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
@ -2485,10 +2485,10 @@ ee-first@1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||||
|
|
||||||
electron-to-chromium@^1.3.719:
|
electron-to-chromium@^1.3.723:
|
||||||
version "1.3.720"
|
version "1.3.725"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.720.tgz#f5d66df8754d993006b7b2ded15ff7738c58bd94"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.725.tgz#04fc83f9189169aff50f0a00c6b4090b910cba85"
|
||||||
integrity sha512-B6zLTxxaOFP4WZm6DrvgRk8kLFYWNhQ5TrHMC0l5WtkMXhU5UbnvWoTfeEwqOruUSlNMhVLfYak7REX6oC5Yfw==
|
integrity sha512-2BbeAESz7kc6KBzs7WVrMc1BY5waUphk4D4DX5dSQXJhsc3tP5ZFaiyuL0AB7vUKzDYpIeYwTYlEfxyjsGUrhw==
|
||||||
|
|
||||||
emittery@^0.7.1:
|
emittery@^0.7.1:
|
||||||
version "0.7.2"
|
version "0.7.2"
|
||||||
@ -2709,10 +2709,15 @@ eslint-plugin-node@^11.1.0:
|
|||||||
resolve "^1.10.1"
|
resolve "^1.10.1"
|
||||||
semver "^6.1.0"
|
semver "^6.1.0"
|
||||||
|
|
||||||
|
eslint-plugin-simple-import-sort@^7.0.0:
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8"
|
||||||
|
integrity sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==
|
||||||
|
|
||||||
eslint-plugin-svelte3@^3.1.2:
|
eslint-plugin-svelte3@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.1.2.tgz#3fb394a0f368ad7a77b76c0de2d68f1e4db8d407"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.2.0.tgz#a6deb4ead4b31a647ea88a3823d7c96578f74683"
|
||||||
integrity sha512-+aGgYFC/yjhGXmBevzwICFVif8tu++C9/lRg8cE6TTS45Hw8qZ6t5wItSXVNPqnxJ212ik+bad1F0Y9A3Swo0Q==
|
integrity sha512-qdWB1QN21dEozsJFdR8XlEhMnsS6aKHjsXWuNmchYwxoet5I6QdCr1Xcq62++IzRBMCNCeH4waXqSOAdqrZzgA==
|
||||||
|
|
||||||
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
|
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
@ -2740,9 +2745,9 @@ eslint-visitor-keys@^2.0.0:
|
|||||||
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
|
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
|
||||||
|
|
||||||
eslint@^7.9.0:
|
eslint@^7.9.0:
|
||||||
version "7.24.0"
|
version "7.25.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67"
|
||||||
integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==
|
integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "7.12.11"
|
"@babel/code-frame" "7.12.11"
|
||||||
"@eslint/eslintrc" "^0.4.0"
|
"@eslint/eslintrc" "^0.4.0"
|
||||||
@ -3723,9 +3728,9 @@ is-ci@^2.0.0:
|
|||||||
ci-info "^2.0.0"
|
ci-info "^2.0.0"
|
||||||
|
|
||||||
is-core-module@^2.2.0:
|
is-core-module@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
|
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887"
|
||||||
integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
|
integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==
|
||||||
dependencies:
|
dependencies:
|
||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
|
|
||||||
@ -4888,46 +4893,46 @@ mixin-deep@^1.2.0:
|
|||||||
for-in "^1.0.2"
|
for-in "^1.0.2"
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
mjml-accordion@4.9.1:
|
mjml-accordion@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.9.1.tgz#d3ef75d52c9ad8f90cdc7a69da9ad003e42c0fca"
|
resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.9.3.tgz#d43fc306ca1a734a443d63e7445e95871af7ae57"
|
||||||
integrity sha512-IEPtf0EgMBHr2mg4wXuuN574idIiTR6XUmLnhF9EsKlJVVKabxSybLWJv81kAUqm2ld2dc/B2kT2ujLDWoQRFw==
|
integrity sha512-mPpNtTs9dz14wiq/46hYxT37xGZi3PHwggZyLokj5d2GgqlQADhYoO7/TSqfKR6zIhzco0gDLjNJL5COXxOAeQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-body@4.9.1:
|
mjml-body@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.9.1.tgz#6002edc62d57a44786e3ecc41e785fc5dba6d5d1"
|
resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.9.3.tgz#8cf918e1a92789d1934a23bcd6121b7bb82741be"
|
||||||
integrity sha512-P6WaVsFzHC3KTpyjZ5axsEQpiozKeOqhaykE2CV8dSrDjn3uHbDY26Bzd2eg5B1pQrwDubfAUY84I86DaktZUg==
|
integrity sha512-PaClGgS86XtZvX3XLAOt96gob4PwwFr9o2EwRem3KgGlEtd1HLIiYAmfhwkPJtNTY8rO9qZubNqIg2iB9LfHyA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-button@4.9.1:
|
mjml-button@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.9.1.tgz#61b500b62a28ef7792a47932c1b39504c97df930"
|
resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.9.3.tgz#71be5942c7985af945194de241a7f2b73f98527a"
|
||||||
integrity sha512-WicqC7LAuKtv+erIrTq8Q8vb3QD/fANg61sW7k1q86p1t3Co9wl6KWlMYc/9Otz/6tazSAeCxX4/AZS2ibs7Kw==
|
integrity sha512-KbPxXSbHboXubS6Wo8pnc+co9dB1gL+fRTmBzeSBfy8uZhv+6AaU7iIvDvMOQQ4gSbtLb6AG9yranWtQCM8YTg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-carousel@4.9.1:
|
mjml-carousel@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.9.1.tgz#9a357b536e5bfcf0fca8f8d686e995dc66370f74"
|
resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.9.3.tgz#ff714a329acf0247ab5ed5bf63eb115cdba5b362"
|
||||||
integrity sha512-RLIfe1V5x/KCVdJOQhCqR7FOa9GA5Lnw0t/Qe7OPgf2hUNnzs2qchQy5HHFRhQ5s5w2NfRaasXHJL48ZtihExQ==
|
integrity sha512-9obd5NTnGVIDHWF+fmRBg19gawyI6min+2mawZbKG3ze5aUkqr308UTNOYcAWX1+E0UnSHksw570RCQhWnGFyA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-cli@4.9.1:
|
mjml-cli@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.9.1.tgz#a0c8714ee0bfc73e1e6ace74c83b11992c04c0e8"
|
resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.9.3.tgz#9fe2be711cb43c110b4657fc6008ed4be988ce26"
|
||||||
integrity sha512-591NX8QpvjBGjsgq1nQdXL20TqSiSo+QbFLcx+1DRac6eP4zJbkk3PSZgOUbPcpT0p9V35Og832lfl/hXWCQSw==
|
integrity sha512-85Zw5PFhGImb3yhrnnsbl6FMDUpS5oR6HnSpyhuPNt5Z/E9fA2ilZ1sRqezjxIhh9IHhLTpmqgZZcRINFXVUKw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
chokidar "^3.0.0"
|
chokidar "^3.0.0"
|
||||||
@ -4935,25 +4940,25 @@ mjml-cli@4.9.1:
|
|||||||
html-minifier "^4.0.0"
|
html-minifier "^4.0.0"
|
||||||
js-beautify "^1.6.14"
|
js-beautify "^1.6.14"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
mjml-migrate "4.9.1"
|
mjml-migrate "4.9.3"
|
||||||
mjml-parser-xml "4.9.1"
|
mjml-parser-xml "4.9.3"
|
||||||
mjml-validator "4.9.1"
|
mjml-validator "4.9.3"
|
||||||
yargs "^16.1.0"
|
yargs "^16.1.0"
|
||||||
|
|
||||||
mjml-column@4.9.1:
|
mjml-column@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.9.1.tgz#9706f782f32dcae09a6d8b00867a862994bb4333"
|
resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.9.3.tgz#0a983baa6092b457dfb5b2dce24598db8ffa7ee9"
|
||||||
integrity sha512-XQ4cT+SQMg67dDRD1PDsNO77tgnPOwvwjThOETI35L3pN1WB3te3pkQjL1kkuzRYVebr+Qw6lJeTkIYS4TStZA==
|
integrity sha512-vEpHwLBhFCP+g+sqUvKPoLk9FZ3NeYXhKyoJwCn/o/sPrSiibUsGFEMN77ypx/ekKV3QGj6iE6dAf696NZctvw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-core@4.9.1:
|
mjml-core@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.9.1.tgz#19d6a829fbb741f869e3b634496fef4bb06bb763"
|
resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.9.3.tgz#e79a63106abcb469f1a50df989f8489aba2187e7"
|
||||||
integrity sha512-+xVnK7zxqFreP1EHPsT9BTmzT9N8/aCSsSG/hhnXHf08Mo/PSNXwrbsb4tAFcC4jC/Gl9qqaRI/94Ysasmk9EA==
|
integrity sha512-MFuM6557R/brQoDALmd6SaQ1K/0t3frCvJAloL8KGOBocvJID8xN5/4iL87+KJg7k0fqXj1WSsIl9lLXtaEZfA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
cheerio "1.0.0-rc.3"
|
cheerio "1.0.0-rc.3"
|
||||||
@ -4962,263 +4967,263 @@ mjml-core@4.9.1:
|
|||||||
js-beautify "^1.6.14"
|
js-beautify "^1.6.14"
|
||||||
juice "^7.0.0"
|
juice "^7.0.0"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-migrate "4.9.1"
|
mjml-migrate "4.9.3"
|
||||||
mjml-parser-xml "4.9.1"
|
mjml-parser-xml "4.9.3"
|
||||||
mjml-validator "4.9.1"
|
mjml-validator "4.9.3"
|
||||||
|
|
||||||
mjml-divider@4.9.1:
|
mjml-divider@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.9.1.tgz#adace01da74af3514c08be10d3d96ac0378e91db"
|
resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.9.3.tgz#3e0b13d93f8e78a4969e895937cb6d768c76c689"
|
||||||
integrity sha512-LMRdZYwYYoS7mOhjPQHC5ZG26EumXxYt5JOO8Pe+qhQlsOvXdbCEmzDn5CrfB6R/jeSJBfQ5DiCijFwZhG5Vew==
|
integrity sha512-NSc+MksfFv+6O4ERLWn2HG8h6w1AKKGdYbT3d2cNazNeUG9GIW4C7vuUaaguy4IBjVQqZTu55vo2/GhLRVL5eA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-group@4.9.1:
|
mjml-group@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.9.1.tgz#7080c0fe4cfa442dd62ecb37f593541220651d6d"
|
resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.9.3.tgz#a424a5de85c194ae33aef23d6927eadbf0139800"
|
||||||
integrity sha512-ckf6cAKZH8tkS9+uHUmW+X7l/dLrP+TIEbj1XWp0hmVDpZOlSBkrJAODxQB4bYVptlkuNGExN+d7zzGBL+edmw==
|
integrity sha512-TB8+Of4mYcJuT5Huq/RTtFyKUJ8jtk/p4QoZLGhbVo2Q6w5oWLLbp1qcTWj7B3GagLdhYfrtBrr0JRWiVaq6Kg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-attributes@4.9.1:
|
mjml-head-attributes@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.9.1.tgz#df64224a9eb0ba50be735a48810e4e406fc19999"
|
resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.9.3.tgz#6544089be53f8a68cdfc7c10c8161b284e3da232"
|
||||||
integrity sha512-C5xGhRYZHQQzZobEkM38haaBOHG41+ov+tBiUHaGnCvhlc5YRcW9QKkFq4syn8MzTpZKE3SQfEELYU6LvC480A==
|
integrity sha512-3EqQHe081uWoQEfnozwV1tEygzeTlRPLc87+D+cfB/fB0RxfOnyXNU2SZVyvfb1hzl2LmRO4TdujxKzQvI0sow==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-breakpoint@4.9.1:
|
mjml-head-breakpoint@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.9.1.tgz#5a33952923864700dbf08cd0a9957babcec6b0cd"
|
resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.9.3.tgz#4caa8db156287d013b560ceb3b3f8620e48e2a07"
|
||||||
integrity sha512-iYTZvM1hcmSsy0ydW7puc4ACdJ4wdndezvw+FtDmPLfwIagGMTmsYUTX0E2K/x96EHdLurwpu0jl0iTrhbzsVw==
|
integrity sha512-1ZCEK14yiLOp3tnk0riPMH6myNWWOTSsIl3ScTYQcr6KEsJrAXW+MpDwr2Ri2zOmuSqCDJorEMAsb8rAHxirCQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-font@4.9.1:
|
mjml-head-font@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.9.1.tgz#01f1b2d08d002df1595ec5027d79109ad4beeddd"
|
resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.9.3.tgz#37956ee4945d214610dbff0d05aafc3a995365aa"
|
||||||
integrity sha512-EmFvuOORi7n3nz3Xjx+ZyJGPw2l190Sd5aKuNKjrfx2JswHT7UTLKbb+cOV1se3s7XprKiXtRoe5dsoD3+uDPA==
|
integrity sha512-ciWMNT7ZFniJDXXyXpfQy0Ep2Xvr09BPpPCVx6DfjzWcfJwLjZdIuIK3Go6NgEY7PweflrZYVorE3FUdqVEWKQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-html-attributes@4.9.1:
|
mjml-head-html-attributes@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.9.1.tgz#2d5efdc22612471fd70d9182fc57c2dd667fdb78"
|
resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.9.3.tgz#feab7386ca3597f75e97732a5dba31623a5c1b2d"
|
||||||
integrity sha512-VNqL6rA9AcG4DXIu4xm5K0P1XZj9dXpry6G98XeBTzmZDbxZWsS07qyrj15YWyEHGHVktXw5nZP6K3wDm8tRJQ==
|
integrity sha512-DpyJrPPJibtwHZ32l9jLSb6B06dJouOf48hU59tcfeZRWkOBsr+FfYvbNktZbmfC6+lQOOjomDGzUybIJRjFbw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-preview@4.9.1:
|
mjml-head-preview@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.9.1.tgz#3d93ba5cd6b30c4bc03036def725207087fe8b18"
|
resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.9.3.tgz#9439e930a72bbc612ea00c353d281b26d2d8be2e"
|
||||||
integrity sha512-38M0UqVRRPsBIU3MmH2B7sErKnMG5WdhpIQJ0LzqTOS7eQYWp4lsR7uNOV6NJZpld//6LhgglgyMvn/7t6HVqw==
|
integrity sha512-4Ki+I7GREU5fFqTJBJbPwuoVeK5Azwp5lo++nYHA0LXkc3N5Zm9USOLNlvxao4PEQFZ5uS+wz3qQInjoW983TA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-style@4.9.1:
|
mjml-head-style@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.9.1.tgz#ff08678b981666a5b624a26a12c5558cdf4f5386"
|
resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.9.3.tgz#d657ba910c2cd3028997afd3073645ae0729ebb6"
|
||||||
integrity sha512-OxCkGzi0fNOSpTKAjjZGcjgWkgws93BzWFE0c0qr+g+LlioC6FYBLQfV6LAnke64t58Sint4ExG6guEMRPQ/Bw==
|
integrity sha512-8E/8SAv0Ba3GBuz8P2raDUU7oOjwfq2uIgPCGBQNreN3cVlxBAHQBNErlv3HY5YxH36Ep0Cn0v18FxKkiADlUA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head-title@4.9.1:
|
mjml-head-title@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.9.1.tgz#58d132c322d0402106e4ccb73d66fd0d42ff3faf"
|
resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.9.3.tgz#43f2eaca1da33a5848b1a519926349c9166a6a03"
|
||||||
integrity sha512-Myr3x8cCMyw2GUW4DL/r+jkc5oLskn/lRxsZN88GOFIka0BDK3HZnsYvMF7SAJnyIXsm+pZsdWj4tW6yrFAwcQ==
|
integrity sha512-IW2Zjlujz5Wl85RsIaAzCRcItDjsTpYH6GC0qRaNvbrg28J4jc/Z34uzdwtCBvt7Q+SDnHm780HLwKRvoW5Lyg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-head@4.9.1:
|
mjml-head@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.9.1.tgz#74260a3ddb892c1120d0091677b73f2dfd716adc"
|
resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.9.3.tgz#215aca27397a536f24bc774191b4963964099b1a"
|
||||||
integrity sha512-xkLhofCMPNHsg6ouf3gFCJVueEPTDBkbf4s4FS65Yn5rl/Ni46fyRSRnbdgh00UyZeOQVkkkGE8EpLrZOLcgYw==
|
integrity sha512-Mw7tcmuMhkruvDAqLHgR1M+WdjKj77Fp6YG3+j6aMTzkeCUP8eT6wQLoBVwKG8Y1XLHWVJccwFCp5ITsKG6E2A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-hero@4.9.1:
|
mjml-hero@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.9.1.tgz#ef9e502b2f291ed38629a97b42b6f678cff07aa8"
|
resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.9.3.tgz#24ea7a472d1dc57868e21127d083a8044d341174"
|
||||||
integrity sha512-2xHYhFdDhPTNXH9TAzCKgdYPwWu0Q49/uedxnbASWQa6LbxEB1AZFplTvyx3vru7scd9zpIGS04+dELJw5Zw+Q==
|
integrity sha512-apzmRj2sHvmgE7qbyjiATDAUXHT6K6Ku+LUrrzerwdgxmeKmXHeeLduGQ7g4IhfNtbkB/IOqjit9e0Att6sQKg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-image@4.9.1:
|
mjml-image@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.9.1.tgz#3a81bfd0191f92f94726a8813242f030b31aa665"
|
resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.9.3.tgz#c8c038356f291a04c5c4cd591c74fe349e4d3224"
|
||||||
integrity sha512-gWevdnpur0ctUgKuIUHZodGVZg8dUOKHASP4BOTKiDNS+PlKoBnmmZwxzBNRnFfj+ol4BZbexc5WOy1zqoQyrQ==
|
integrity sha512-LchR36jOcQYiOqkmIaw+lZY43+fQnO7oT3c14wEMhfyycted/cXYrOYa0gqW7pBWZAA+uLgrQ8v9PB51+Wa7OA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-migrate@4.9.1:
|
mjml-migrate@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.9.1.tgz#246b75e80165b84fc3f27c9befa93980d046f735"
|
resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.9.3.tgz#6b997e7548f22a9d6ed5c21fe0b4ffc7ad652a96"
|
||||||
integrity sha512-1uxxx7O2UEyP4Vvmz6peLTMlrguuOOFdMxXwoMc2c3HidfwUtqEJvQy6b357xXMcBHWmm4bBrYjWCYQ+Y1ixPA==
|
integrity sha512-O14+3bJB+ZlwlWIx4gvmz0uu6V3ANV8WJ/dZy0hF0PRETDjr/zAjmbmtP9/qMKQTtTB/GjmMaIxvDlfR39hIYQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
js-beautify "^1.6.14"
|
js-beautify "^1.6.14"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
mjml-parser-xml "4.9.1"
|
mjml-parser-xml "4.9.3"
|
||||||
yargs "^16.1.0"
|
yargs "^16.1.0"
|
||||||
|
|
||||||
mjml-navbar@4.9.1:
|
mjml-navbar@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.9.1.tgz#07f9c1269b62fb5bc5bf6b838e383b3b836cf2cf"
|
resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.9.3.tgz#3c02e95a9e8de44827807bf5a8d74b7e1d4a49b8"
|
||||||
integrity sha512-p9PIxpx7fIFzJKzLEouqXxJ1ZojypcZUloLgFwoz+gRZa3z3XaxsoUcLCZLVl2QK+xwbTL6kZk9PRpxSeyPi1g==
|
integrity sha512-8BjfQFszHBBa1/dHImwvUOC1xV+LkP3XeB2VA6vLAf+wd65Zw4gDd7muKNARUcHhoLqe039rbDEHbj0FOlOLhw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-parser-xml@4.9.1:
|
mjml-parser-xml@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.9.1.tgz#971b09b3071233b44a9d1027c25123a024eaf429"
|
resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.9.3.tgz#919722118ac73ace483d001ba11924055960f9dc"
|
||||||
integrity sha512-zHzsB3/hiFUMX/TTkcyLXR7ztIOZUsOjjkqUbSbYjwY/+qTPzYlvIBx0XCAMByLr2Wr+/YmLGkhqhXdbNX8f6Q==
|
integrity sha512-hEwMWBIKtS7YvA9Nt+nqc5SmILzHH20MZ6P5RY8d6AKQnBR0uxZAlYR7rqC8KYjblITILuNO54dVkPrpuB/VKg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
detect-node "2.0.4"
|
detect-node "2.0.4"
|
||||||
htmlparser2 "^4.1.0"
|
htmlparser2 "^4.1.0"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
|
|
||||||
mjml-preset-core@4.9.1:
|
mjml-preset-core@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.9.1.tgz#7e121fc86e9711c957731bc22e620af6aa32e42a"
|
resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.9.3.tgz#2718cc405c5491a9cc27bf4733d470f9f5d35c10"
|
||||||
integrity sha512-cX74oaXvPkwBY/OaqL6UaBgt5BLRxNCQP/pd1jW5Yaw/9hKciWKnGm7iCl2MjalZ7dwJTlYHbU6L3sRCR/P3Og==
|
integrity sha512-A28CiAZAMYaiKQ12JGI2bQ654piYXfVcmA+NkjNlZRDC9n0C38Ey4mGrVUMXg38v2ElpvMMpjA23CW368XZwLw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
mjml-accordion "4.9.1"
|
mjml-accordion "4.9.3"
|
||||||
mjml-body "4.9.1"
|
mjml-body "4.9.3"
|
||||||
mjml-button "4.9.1"
|
mjml-button "4.9.3"
|
||||||
mjml-carousel "4.9.1"
|
mjml-carousel "4.9.3"
|
||||||
mjml-column "4.9.1"
|
mjml-column "4.9.3"
|
||||||
mjml-divider "4.9.1"
|
mjml-divider "4.9.3"
|
||||||
mjml-group "4.9.1"
|
mjml-group "4.9.3"
|
||||||
mjml-head "4.9.1"
|
mjml-head "4.9.3"
|
||||||
mjml-head-attributes "4.9.1"
|
mjml-head-attributes "4.9.3"
|
||||||
mjml-head-breakpoint "4.9.1"
|
mjml-head-breakpoint "4.9.3"
|
||||||
mjml-head-font "4.9.1"
|
mjml-head-font "4.9.3"
|
||||||
mjml-head-html-attributes "4.9.1"
|
mjml-head-html-attributes "4.9.3"
|
||||||
mjml-head-preview "4.9.1"
|
mjml-head-preview "4.9.3"
|
||||||
mjml-head-style "4.9.1"
|
mjml-head-style "4.9.3"
|
||||||
mjml-head-title "4.9.1"
|
mjml-head-title "4.9.3"
|
||||||
mjml-hero "4.9.1"
|
mjml-hero "4.9.3"
|
||||||
mjml-image "4.9.1"
|
mjml-image "4.9.3"
|
||||||
mjml-navbar "4.9.1"
|
mjml-navbar "4.9.3"
|
||||||
mjml-raw "4.9.1"
|
mjml-raw "4.9.3"
|
||||||
mjml-section "4.9.1"
|
mjml-section "4.9.3"
|
||||||
mjml-social "4.9.1"
|
mjml-social "4.9.3"
|
||||||
mjml-spacer "4.9.1"
|
mjml-spacer "4.9.3"
|
||||||
mjml-table "4.9.1"
|
mjml-table "4.9.3"
|
||||||
mjml-text "4.9.1"
|
mjml-text "4.9.3"
|
||||||
mjml-wrapper "4.9.1"
|
mjml-wrapper "4.9.3"
|
||||||
|
|
||||||
mjml-raw@4.9.1:
|
mjml-raw@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.9.1.tgz#1dbe8691341dd0e859495036640c07002d2a6de9"
|
resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.9.3.tgz#c47c33dfe70c3e37f65adf12b0cfc343157ea72f"
|
||||||
integrity sha512-ADFJJLoQ0guQ61+p2uJbkM2pb+P1YGjnaz3bm13DCbntcEnFxQthAqgLROxT3URT/O93OSGVkrNGClqYesAG0A==
|
integrity sha512-e2OknBwuiQvaLxHOH9OXSlmHEx7EqczkWdNS//TE1rsRcTQvLXzuajuMt+Oa72UZY85B/vw/iNk/Gm/jRSvieA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-section@4.9.1:
|
mjml-section@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.9.1.tgz#6031b1c6bd967fc2e8974a9e232ade8c3cb7a2c7"
|
resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.9.3.tgz#b0bb01902c948aac3fc114a5a874f87bc81c9cf2"
|
||||||
integrity sha512-BsmyAebmIsxa11RUM7juNHWuPwWyqZFDU45ozKL1X1nfayy/S9YLWMAipsZvlM9WvarS5DvLQSeW6TOiZE2/WQ==
|
integrity sha512-B7mXgT5yrNhPHTrMRHyPTiKs8rfiM9VRUEL078PCEqczrUtlIQUTVBrfDkwxUIXbNPDhpB8yUxs4i89DA+vX4g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-social@4.9.1:
|
mjml-social@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.9.1.tgz#4da32cbced1ea47f35b389e6c6614edc6b05e761"
|
resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.9.3.tgz#c561d0bcc767091e52ffb8a32878db9e74f963a5"
|
||||||
integrity sha512-RcNGXKRKvBWwO4uPN9OL4xMEAqjAx1zpplLWjaxS+q4ADjlQs+DKDQpAXQEMNGUcwQSAN40hTNt/eZWuwZOxsg==
|
integrity sha512-kslVluCHXbXTpL7bclOVHUfHIwhLy+HaEHXilJtyxo0YfH68APRe5y9ikJqTZ6zVa2ziAjvHPMU5f200eZjqdA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-spacer@4.9.1:
|
mjml-spacer@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.9.1.tgz#9a9067c0408609e059e4eab396b43cac95f2b5be"
|
resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.9.3.tgz#41f95fe58c9b1f5eb51269073747e1276232fb9c"
|
||||||
integrity sha512-+Rabasldc5dqLuTE6LESIMSVsc1v2AiqVqWwYbV8kWHCVjbpITeUd9b9ouueW5XOXQsSQ0nabKjkk39F0BW+mw==
|
integrity sha512-fqF0qbDoTjq24D4t0kX+CiMEn5MAoxDG+fHz3k6ruwIsijs/77LiumkOL97H9tnFapnw8jJNJUC6UIT0LQTC1A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-table@4.9.1:
|
mjml-table@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.9.1.tgz#0c7f9417f8dbb6a93b322bb1f92b93cf66645f98"
|
resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.9.3.tgz#e66e1fcd644e144edb383af94ff88508a0cf5f27"
|
||||||
integrity sha512-u1oGV6gBqKG59vkXb86ziVEqFU5/GB5RvfCuqGw33HzZn4jvlnGlGPoUrQt/pY/xEEy0EhkbP+XhoNql5ZeO3g==
|
integrity sha512-5dlpAisy2GgteLZ5DhYrfjCiQKcoDHDd8h7idvdQWAx0/8cbbjo+t+EHLfIuxkhcm8cDlJLOjb//AVk2qxBuVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-text@4.9.1:
|
mjml-text@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.9.1.tgz#49135c5a7630974479d2bc53c921ea6dadd49888"
|
resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.9.3.tgz#55b1424f04c252dbbbf5d793932b5496f5e88005"
|
||||||
integrity sha512-0Hig1vU5tHXN+s5Scta/UoJQuVQI2GUPgUnrRoPoFC+ZX0XPHT7wRhHJMPYokrZ+RF3kpOSoQd/4UKyBs0yYDA==
|
integrity sha512-X30kIUhjF4cH2eF4yZcMgkhbHIOTfbcOqDMjav/i6FRnIXJXNkAHoNZ/bGsEYqOcN7pECTwDwFgZK5Igres/dg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
|
|
||||||
mjml-validator@4.9.1:
|
mjml-validator@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.9.1.tgz#4eadf8ab400545cbc0d08fb4329eb410713d213b"
|
resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.9.3.tgz#e5dacf58b15032086c2a779472bc6c5d715bc1f5"
|
||||||
integrity sha512-DElsLG529ZcGGx6BcIi9UMV0LBKvrV/r1nWDlER1mG29rBaDfBtGKV1jR2Ipeu0/37rnd8ldS8Ici8cMNC8W0A==
|
integrity sha512-k6qH9Sd7fwIklYh1LFjTFSB36vkIte41iC5XhAyMTYG3x9I03Cjw3KkEmGOrlbV0T1nOAuz3Iy+2rMcW26U6zQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
|
|
||||||
mjml-wrapper@4.9.1:
|
mjml-wrapper@4.9.3:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.9.1.tgz#25207bd58d1ffb3ab7dd51ee11adbd8281727866"
|
resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.9.3.tgz#b26c38dd3332290030068308d04255fa37ba3081"
|
||||||
integrity sha512-y2gL0eEsYjX+obNCyVrZORxcE6FNJ+OzljT+a7gFWsRRHvJR45o06+OmlWJDmY2TajHuF1rrO1d1LMMpRsz0Dw==
|
integrity sha512-F3PLghHqiusp2ax7eBtkjL0z1FJkQKHm1Jy9VCjCQSsqg8nqZ7iz6W2V/xo0pNeJWPQqoHW0bX0GK5aNP1aL2g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
mjml-section "4.9.1"
|
mjml-section "4.9.3"
|
||||||
|
|
||||||
mjml@^4.6.2:
|
mjml@^4.6.2:
|
||||||
version "4.9.1"
|
version "4.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.9.1.tgz#92746a50f72b9d9f3cf6e9237d48d125035f7254"
|
resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.9.3.tgz#670dab24030ea7b40d92041c83db13e56e7b8290"
|
||||||
integrity sha512-tzwFdv2Mzt8PqC97F6L5Ci+vMXqoXhNJPfW+hFEUXgv5//buRSX+d2LOdraNGgKRi26bZ2SQA6JDXWpzNUKZLA==
|
integrity sha512-l3KzyBj8EkdkBwdFTFUHbkAXLDfyyFSkcm9YwLbMTLa6kX7Wyfo26v62iVRKX9aUnys2JkoSgP0JNBx7i0+chg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
mjml-cli "4.9.1"
|
mjml-cli "4.9.3"
|
||||||
mjml-core "4.9.1"
|
mjml-core "4.9.3"
|
||||||
mjml-migrate "4.9.1"
|
mjml-migrate "4.9.3"
|
||||||
mjml-preset-core "4.9.1"
|
mjml-preset-core "4.9.3"
|
||||||
mjml-validator "4.9.1"
|
mjml-validator "4.9.3"
|
||||||
|
|
||||||
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
|
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
@ -5347,9 +5352,9 @@ nodemailer@^3.1.1:
|
|||||||
integrity sha1-/r+sy0vSc2eEc6MJxstLSi88SOM=
|
integrity sha1-/r+sy0vSc2eEc6MJxstLSi88SOM=
|
||||||
|
|
||||||
nodemailer@^6.4.6:
|
nodemailer@^6.4.6:
|
||||||
version "6.5.0"
|
version "6.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9"
|
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.0.tgz#ed47bb572b48d9d0dca3913fdc156203f438f427"
|
||||||
integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==
|
integrity sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg==
|
||||||
|
|
||||||
nodemon@^2.0.6:
|
nodemon@^2.0.6:
|
||||||
version "2.0.7"
|
version "2.0.7"
|
||||||
@ -6292,9 +6297,9 @@ rollup-pluginutils@^2.8.2:
|
|||||||
estree-walker "^0.6.1"
|
estree-walker "^0.6.1"
|
||||||
|
|
||||||
rollup@^2.42.3:
|
rollup@^2.42.3:
|
||||||
version "2.45.2"
|
version "2.46.0"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.46.0.tgz#8cacf89d2ee31a34755f1af40a665168f592b829"
|
||||||
integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ==
|
integrity sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q==
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.1"
|
fsevents "~2.3.1"
|
||||||
|
|
||||||
@ -6947,9 +6952,9 @@ supports-hyperlinks@^2.0.0:
|
|||||||
supports-color "^7.0.0"
|
supports-color "^7.0.0"
|
||||||
|
|
||||||
svelte-check@^1.2.3:
|
svelte-check@^1.2.3:
|
||||||
version "1.5.0"
|
version "1.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-1.5.0.tgz#d0ee742ef9969f8b88c10919076e254802d81736"
|
resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-1.5.2.tgz#783f48a8e3b3e484b3bcfb990ff5102348c63a23"
|
||||||
integrity sha512-DdzUGxd5MLryW80sr695XIRCps8YS0E2VRJj9cXA3g/hXldozoxc/RDx0ZGV/sxoAU5nxgcH3A2kN0jJhnJKdg==
|
integrity sha512-x9Pc13r814TKrMXY70IyqDEmPzuFiqNSpBmsrMKrFpi995MiG+lmqYnyw8iQC+DGh7H3eUt3LIFXbNd396XIFw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
chokidar "^3.4.1"
|
chokidar "^3.4.1"
|
||||||
@ -6971,9 +6976,9 @@ svelte-preprocess@4.6.9:
|
|||||||
strip-indent "^3.0.0"
|
strip-indent "^3.0.0"
|
||||||
|
|
||||||
svelte-preprocess@^4.0.0:
|
svelte-preprocess@^4.0.0:
|
||||||
version "4.7.2"
|
version "4.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.7.2.tgz#e16bf5cc152df8097485ce8c7842073a83a12b1e"
|
resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.7.3.tgz#454fa059c2400b15e7a3caeca18993cff9df0e96"
|
||||||
integrity sha512-EToG+08rEsA33btv+C5g2qnRArwpTc5AoU0QBB3ZEkYagxAb2yPNsy0qsmtvbJOTBMy6o3oyijDdl3DMpMvpEg==
|
integrity sha512-Zx1/xLeGOIBlZMGPRCaXtlMe4ZA0faato5Dc3CosEqwu75MIEPuOstdkH6cy+RYTUYynoxzNaDxkPX4DbrPwRA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/pug" "^2.0.4"
|
"@types/pug" "^2.0.4"
|
||||||
"@types/sass" "^1.16.0"
|
"@types/sass" "^1.16.0"
|
||||||
@ -6981,9 +6986,9 @@ svelte-preprocess@^4.0.0:
|
|||||||
strip-indent "^3.0.0"
|
strip-indent "^3.0.0"
|
||||||
|
|
||||||
svelte@^3.35.0:
|
svelte@^3.35.0:
|
||||||
version "3.37.0"
|
version "3.38.1"
|
||||||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.37.0.tgz#dc7cd24bcc275cdb3f8c684ada89e50489144ccd"
|
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.38.1.tgz#5d856a9d643f56a8d3e281f6dd8b4f8962155ca5"
|
||||||
integrity sha512-TRF30F4W4+d+Jr2KzUUL1j8Mrpns/WM/WacxYlo5MMb2E5Qy2Pk1Guj6GylxsW9OnKQl1tnF8q3hG/hQ3h6VUA==
|
integrity sha512-N3XLAyfzqrFxwRLevBeW7Dke9ZlHRVGSIed5abo4Drvj+zvd2OyWpFa1x4nQUc8Lnvt4Kcn8/5le1peRDybNqg==
|
||||||
|
|
||||||
symbol-tree@^3.2.4:
|
symbol-tree@^3.2.4:
|
||||||
version "3.2.4"
|
version "3.2.4"
|
||||||
@ -6991,9 +6996,9 @@ symbol-tree@^3.2.4:
|
|||||||
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
||||||
|
|
||||||
table@^6.0.4:
|
table@^6.0.4:
|
||||||
version "6.3.4"
|
version "6.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/table/-/table-6.3.4.tgz#5d8a7fa1c887bd1ef08741751ec36246255a80b6"
|
resolved "https://registry.yarnpkg.com/table/-/table-6.6.0.tgz#905654b79df98d9e9a973de1dd58682532c40e8e"
|
||||||
integrity sha512-fhKcZ3+oAYG/ld3seJEZ9+fGSsy+yeoPzLQUrwbOzNYdhrU+6TzObhJ2Sp76ZfUGIrDTrxsXz5NSCZJIUOJb4Q==
|
integrity sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv "^8.0.1"
|
ajv "^8.0.1"
|
||||||
lodash.clonedeep "^4.5.0"
|
lodash.clonedeep "^4.5.0"
|
||||||
@ -7001,6 +7006,7 @@ table@^6.0.4:
|
|||||||
lodash.truncate "^4.4.2"
|
lodash.truncate "^4.4.2"
|
||||||
slice-ansi "^4.0.0"
|
slice-ansi "^4.0.0"
|
||||||
string-width "^4.2.0"
|
string-width "^4.2.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
tar@^6.1.0:
|
tar@^6.1.0:
|
||||||
version "6.1.0"
|
version "6.1.0"
|
||||||
@ -7028,9 +7034,9 @@ terminal-link@^2.0.0:
|
|||||||
supports-hyperlinks "^2.0.0"
|
supports-hyperlinks "^2.0.0"
|
||||||
|
|
||||||
terser@^5.0.0:
|
terser@^5.0.0:
|
||||||
version "5.6.1"
|
version "5.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c"
|
resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693"
|
||||||
integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==
|
integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==
|
||||||
dependencies:
|
dependencies:
|
||||||
commander "^2.20.0"
|
commander "^2.20.0"
|
||||||
source-map "~0.7.2"
|
source-map "~0.7.2"
|
||||||
@ -7277,9 +7283,9 @@ typescript@*, typescript@^4.0.2:
|
|||||||
integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
|
integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
|
||||||
|
|
||||||
uglify-js@^3.5.1:
|
uglify-js@^3.5.1:
|
||||||
version "3.13.4"
|
version "3.13.5"
|
||||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574"
|
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113"
|
||||||
integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==
|
integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw==
|
||||||
|
|
||||||
uid-safe@~2.1.5:
|
uid-safe@~2.1.5:
|
||||||
version "2.1.5"
|
version "2.1.5"
|
||||||
|
Loading…
Reference in New Issue
Block a user