From cefe90bfb2a8a48ad307ed5a0b38ac13c2e14118 Mon Sep 17 00:00:00 2001 From: Romain Lenzotti Date: Mon, 21 Feb 2022 18:56:41 +0100 Subject: [PATCH] chore: migrate from tslint to eslint --- .eslintignore | 11 + .eslintrc | 32 + .github/workflows/build.yml | 8 +- .github/workflows/rebase.yml | 2 +- .husky/.gitignore | 1 + .husky/commit-msg | 4 + .husky/post-commit | 4 + .husky/pre-commit | 4 + .mocharc.js | 14 +- .prettierignore | 8 +- .prettierrc | 4 +- CONTRIBUTING.md | 3 +- ISSUE_TEMPLATE.md | 12 +- PULL_REQUEST_TEMPLATE.md | 12 +- commitlint.config.js | 1 + docs/.vuepress/config.js | 334 +++--- docs/.vuepress/enhanceApp.js | 12 +- docs/.vuepress/public/api.json | 503 ++------- docs/api.md | 3 +- docs/appenders/console.md | 4 +- docs/appenders/custom.md | 16 +- docs/appenders/file-date.md | 24 +- docs/appenders/file.md | 43 +- docs/appenders/insight.md | 8 +- docs/appenders/logentries.md | 6 +- docs/appenders/loggly.md | 22 +- docs/appenders/logstash-http.md | 46 +- docs/appenders/logstash-udp.md | 31 +- docs/appenders/rabbitmq.md | 38 +- docs/appenders/readme.md | 9 +- docs/appenders/seq.md | 10 +- docs/appenders/slack.md | 10 +- docs/appenders/smtp.md | 71 +- docs/contributing.md | 2 +- docs/getting-started.md | 52 +- docs/layouts/basic.md | 13 +- docs/layouts/colored.md | 28 +- docs/layouts/custom.md | 41 +- docs/layouts/dummy.md | 13 +- docs/layouts/json.md | 22 +- docs/layouts/message-pass-through.md | 11 +- docs/layouts/pattern.md | 87 +- docs/layouts/readme.md | 12 +- docs/license.md | 7 +- docs/readme.md | 162 +-- docs/support.md | 12 +- lerna.json | 8 +- lint-staged.config.js | 4 + package.json | 33 +- packages/file/package.json | 2 +- packages/file/readme.md | 34 +- packages/file/tsconfig.compile.esm.json | 6 +- packages/file/tsconfig.compile.json | 6 +- packages/insight/package.json | 2 +- packages/insight/readme.md | 11 +- packages/insight/tsconfig.compile.esm.json | 6 +- packages/insight/tsconfig.compile.json | 6 +- packages/logentries/package.json | 2 +- packages/logentries/readme.md | 9 +- packages/logentries/tsconfig.compile.esm.json | 6 +- packages/logentries/tsconfig.compile.json | 6 +- packages/logger/package.json | 2 +- packages/logger/readme.md | 55 +- packages/logger/src/core/LogContext.ts | 2 +- packages/logger/src/core/LogEvent.ts | 3 +- packages/logger/src/core/LogLevel.ts | 1 - packages/logger/src/logger/class/Logger.ts | 7 +- .../src/logger/class/LoggerAppenders.ts | 6 +- .../logger/src/logger/utils/tableUtils.ts | 14 +- .../layouts/components/JsonLayout.spec.ts | 21 +- .../layouts/components/PatternLayout.spec.ts | 2 +- .../logger/test/logger/class/Logger.spec.ts | 24 +- .../test/logger/class/LoggerAppenders.spec.ts | 20 +- .../logger/class/logger.integration.spec.ts | 4 +- packages/logger/tsconfig.compile.esm.json | 6 +- packages/logger/tsconfig.compile.json | 6 +- packages/loggly/package.json | 2 +- packages/loggly/readme.md | 27 +- packages/loggly/src/LogglyAppender.ts | 23 +- packages/loggly/tsconfig.compile.esm.json | 6 +- packages/loggly/tsconfig.compile.json | 6 +- packages/logstash-http/package.json | 2 +- packages/logstash-http/readme.md | 35 +- .../logstash-http/src/LogStashHttpAppender.ts | 36 +- .../logstash-http/tsconfig.compile.esm.json | 6 +- packages/logstash-http/tsconfig.compile.json | 6 +- packages/logstash-udp/package.json | 2 +- packages/logstash-udp/readme.md | 36 +- .../logstash-udp/src/LogStashUdpAppender.ts | 17 +- .../logstash-udp/tsconfig.compile.esm.json | 6 +- packages/logstash-udp/tsconfig.compile.json | 6 +- packages/rabbitmq/package.json | 2 +- packages/rabbitmq/readme.md | 41 +- packages/rabbitmq/src/RabbitMQAppender.ts | 2 +- packages/rabbitmq/tsconfig.compile.esm.json | 6 +- packages/rabbitmq/tsconfig.compile.json | 6 +- packages/seq/package.json | 2 +- packages/seq/readme.md | 11 +- packages/seq/src/SeqAppender.ts | 12 +- packages/seq/tsconfig.compile.esm.json | 6 +- packages/seq/tsconfig.compile.json | 6 +- packages/slack/package.json | 2 +- packages/slack/readme.md | 15 +- packages/slack/src/SlackAppender.ts | 3 +- packages/slack/tsconfig.compile.esm.json | 6 +- packages/slack/tsconfig.compile.json | 6 +- packages/smtp/readme.md | 72 +- packages/smtp/tsconfig.compile.esm.json | 6 +- packages/smtp/tsconfig.compile.json | 6 +- readme.md | 53 +- tasks/mocha/sinon-chai.js | 35 +- team.json | 2 +- tsconfig.base.json | 12 +- tsconfig.json | 21 +- tsdoc.config.js | 15 +- tslint.json | 58 -- yarn.lock | 966 +++++++++++++++--- 117 files changed, 1966 insertions(+), 1708 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .husky/.gitignore create mode 100755 .husky/commit-msg create mode 100755 .husky/post-commit create mode 100755 .husky/pre-commit create mode 100644 commitlint.config.js create mode 100644 lint-staged.config.js delete mode 100644 tslint.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..40eb8662 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,11 @@ +node_modules +docs +docs-references +**/lib +**/dist +**/coverage +**/.nyc_output +**/node_modules +*-lock.json +*.lock +benchmarks.* diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..3d3a1cd6 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,32 @@ +{ + "parser": "@typescript-eslint/parser", + "extends": ["prettier", "plugin:@typescript-eslint/recommended"], + "plugins": ["@typescript-eslint"], + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "env": { + "node": true, + "es6": true + }, + "rules": { + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "no-case-declarations": "off", + "no-empty": "off", + "prefer-const": "off", + "no-fallthrough": "off" + } +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 406280e3..4432c008 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node-version: [ 14.x, 15.x, 16.x ] + node-version: [14.x, 16.x] steps: - uses: actions/checkout@v2 @@ -49,7 +49,7 @@ jobs: strategy: matrix: - node-version: [ 14.x ] + node-version: [14.x] steps: - uses: actions/checkout@v2 @@ -69,7 +69,7 @@ jobs: strategy: matrix: - node-version: [ 14.x ] + node-version: [14.x] steps: - uses: actions/checkout@v2 @@ -99,7 +99,7 @@ jobs: strategy: matrix: - node-version: [ 14.x ] + node-version: [14.x] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index e5bae3c1..68f9da0c 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -15,4 +15,4 @@ jobs: - name: Automatic Rebase uses: cirrus-actions/rebase@1.3.1 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..d71a03b9 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn commitlint --edit $1 diff --git a/.husky/post-commit b/.husky/post-commit new file mode 100755 index 00000000..ec134308 --- /dev/null +++ b/.husky/post-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +git update-index --again diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..49088de7 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged $1 diff --git a/.mocharc.js b/.mocharc.js index 6e570c98..1e85832e 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -1,12 +1,6 @@ module.exports = { - require: [ - 'ts-node/register/transpile-only', - 'tsconfig-paths/register', - 'tasks/mocha/register' - ], + require: ["ts-node/register/transpile-only", "tsconfig-paths/register", "tasks/mocha/register"], recursive: true, - reporter: 'dot', - spec: [ - 'packages/**/*.spec.ts' - ] -} + reporter: "dot", + spec: ["packages/**/*.spec.ts"] +}; diff --git a/.prettierignore b/.prettierignore index 98274727..60d0db0b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,9 @@ -dist -docs node_modules +**/lib +**/dist +**/coverage +**/.nyc_output +**/node_modules *-lock.json *.lock +benchmarks.* diff --git a/.prettierrc b/.prettierrc index b911b6a9..cabb5383 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,6 @@ { "printWidth": 140, - "bracketSpacing": false + "bracketSpacing": false, + "trailingComma": "none", + "arrowParens": "always" } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 49327b44..07c1e27e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,5 @@ -# Contributing +# Contributing + ## Setup Clone your fork of the repository diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 43358e15..d402c2a3 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -2,17 +2,17 @@ ## Informations -Type | Version ----|--- -Bug/Improvement/Question | 2.x +| Type |  Version | +| ------------------------ | -------- | +| Bug/Improvement/Question | 2.x | -**** +--- ## Description -A few sentences describing the overall goals of the issue. +A few sentences describing the overall goals of the issue. ## Todos - [ ] Example (log, usecase, etc...) -- [ ] Ts.ED version (bug/question) \ No newline at end of file +- [ ] Ts.ED version (bug/question) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 5f9bafa9..cadcf518 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -2,23 +2,25 @@ ## Informations -Type | Status | Migration ----|---|--- -Feature/Fix/Doc/Chore | Ready/In development/Hold | Yes/No +| Type |  Status | Migration | +| --------------------- | ------------------------- | --------- | +| Feature/Fix/Doc/Chore | Ready/In development/Hold | Yes/No | -**** +--- ## Description + A few sentences describing the overall goals of the pull request's commits. ## Usage example + Example to use your feature and to improve the documentation after merging your PR: + ``` import {} from "ts-express-decorators"; ``` - ## Todos - [ ] Tests diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..e2b5db2e --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1 @@ +module.exports = {extends: ["@commitlint/config-conventional"]}; diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d4e42ee1..75f845a9 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -1,166 +1,166 @@ -const url = 'https://logger.tsed.io' -const title = 'Ts.ED Logger - A Node.js and TypeScript multi channel logger' -const description = 'A Node.js and TypeScript multi channel logger' +const url = "https://logger.tsed.io"; +const title = "Ts.ED Logger - A Node.js and TypeScript multi channel logger"; +const description = "A Node.js and TypeScript multi channel logger"; module.exports = { title, description, serviceWorker: false, - theme: 'tsed', + theme: "tsed", head: [ - ['link', { canonical: url }], - ['link', { rel: 'shortcut icon', href: '/favicon.ico', type: 'image/x-icon' }], - ['link', { rel: 'icon', href: '/favicon.ico', type: 'apple-touch-icon' }], - ['link', { rel: 'icon', href: '/apple-touch-icon.png', type: 'image/x-icon', sizes: '180x180' }], - ['link', { rel: 'icon', href: '/favicon-32x32.png', type: 'image/png', sizes: '32x32' }], - ['link', { rel: 'icon', href: '/favicon-16x16.png', type: 'image/png', sizes: '16x16' }], - ['link', { rel: 'manifest', href: '/site.webmanifest' }], - ['meta', { property: 'og:url', content: url }], - ['meta', { property: 'og:type', content: 'website' }], - ['meta', { property: 'og:site_name', content: title }], - ['meta', { property: 'og:title', content: title }], - ['meta', { property: 'og:description', content: description }], - ['meta', { property: 'og:image', content: 'https://tsed.io/tsed-og.png' }], - ['meta', { property: 'og:image:width', content: '1024' }], - ['meta', { property: 'og:image:height', content: '1024' }], - ['meta', { name: 'twitter:title', content: title }], - ['meta', { name: 'twitter:description', content: description }], - ['meta', { name: 'twitter:card', content: 'summary' }] + ["link", {canonical: url}], + ["link", {rel: "shortcut icon", href: "/favicon.ico", type: "image/x-icon"}], + ["link", {rel: "icon", href: "/favicon.ico", type: "apple-touch-icon"}], + ["link", {rel: "icon", href: "/apple-touch-icon.png", type: "image/x-icon", sizes: "180x180"}], + ["link", {rel: "icon", href: "/favicon-32x32.png", type: "image/png", sizes: "32x32"}], + ["link", {rel: "icon", href: "/favicon-16x16.png", type: "image/png", sizes: "16x16"}], + ["link", {rel: "manifest", href: "/site.webmanifest"}], + ["meta", {property: "og:url", content: url}], + ["meta", {property: "og:type", content: "website"}], + ["meta", {property: "og:site_name", content: title}], + ["meta", {property: "og:title", content: title}], + ["meta", {property: "og:description", content: description}], + ["meta", {property: "og:image", content: "https://tsed.io/tsed-og.png"}], + ["meta", {property: "og:image:width", content: "1024"}], + ["meta", {property: "og:image:height", content: "1024"}], + ["meta", {name: "twitter:title", content: title}], + ["meta", {name: "twitter:description", content: description}], + ["meta", {name: "twitter:card", content: "summary"}] ], themeConfig: { - shortTitle: 'Logger by Ts.ED', + shortTitle: "Logger by Ts.ED", htmlTitle: ' Logger', - version: require('../../package').version, - team: require('../../team.json'), - licenseType: 'MIT', - author: 'Lenzotti Romain', + version: require("../../package").version, + team: require("../../team.json"), + licenseType: "MIT", + author: "Lenzotti Romain", copyrightDates: { - start: '2016', + start: "2016", end: new Date().getFullYear() }, - repo: 'tsedio/logger', - githubProxyUrl: 'https://api.tsed.io/rest/github/tsedio/logger', - openCollective: 'https://api.tsed.io/rest/opencollective', - slackUrl: 'https://api.tsed.io/rest/slack/tsedio/tsed', - stackoverflowUrl: 'https://stackoverflow.com/search?q=tsed', - sponsorUrl: 'https://tsed.io/support.html', - twitterUrl: 'https://twitter.com/TsED_io', + repo: "tsedio/logger", + githubProxyUrl: "https://api.tsed.io/rest/github/tsedio/logger", + openCollective: "https://api.tsed.io/rest/opencollective", + slackUrl: "https://api.tsed.io/rest/slack/tsedio/tsed", + stackoverflowUrl: "https://stackoverflow.com/search?q=tsed", + sponsorUrl: "https://tsed.io/support.html", + twitterUrl: "https://twitter.com/TsED_io", editLinks: true, - docsDir: 'docs', - sidebar: 'auto', - docsBranch: 'production', - api: require('./public/api.json'), + docsDir: "docs", + sidebar: "auto", + docsBranch: "production", + api: require("./public/api.json"), smoothScroll: true, - lastUpdated: 'Last updated', + lastUpdated: "Last updated", // algolia: { // apiKey: "f8a038207e461aaac0e2fd16403c2b01", // indexName: "ts_ed" // }, locales: { - '/': { - label: 'English', - selectText: 'Languages', - editLinkText: 'Edit this page on GitHub', - lastUpdated: 'Last Updated', + "/": { + label: "English", + selectText: "Languages", + editLinkText: "Edit this page on GitHub", + lastUpdated: "Last Updated", serviceWorker: { updatePopup: { - message: 'New content is available.', - buttonText: 'Refresh' + message: "New content is available.", + buttonText: "Refresh" } }, nav: [ { - text: 'Getting started', - link: '/getting-started.html', - title: `Getting started | ${ title }` + text: "Getting started", + link: "/getting-started.html", + title: `Getting started | ${title}` }, { - text: 'Appenders', - link: '/appenders/index.html', - title: `Appenders | ${ title }` + text: "Appenders", + link: "/appenders/index.html", + title: `Appenders | ${title}` }, { - text: 'Layouts', - link: '/layouts/index.html', - title: `Layouts | ${ title }` + text: "Layouts", + link: "/layouts/index.html", + title: `Layouts | ${title}` }, { - title: `Warehouse | ${ title }`, - link: 'https://tsed.io/warehouse/', - text: 'Warehouse', + title: `Warehouse | ${title}`, + link: "https://tsed.io/warehouse/", + text: "Warehouse", items: [ { - text: 'Explore plugins', - link: 'https://tsed.io/warehouse/' + text: "Explore plugins", + link: "https://tsed.io/warehouse/" }, { - text: 'Insight', - link: '/appenders/insight.md' + text: "Insight", + link: "/appenders/insight.md" }, { - text: 'LogEntries', - link: '/appenders/logentries.md' + text: "LogEntries", + link: "/appenders/logentries.md" }, { - text: 'LogStash HTTP', - link: '/appenders/logstash-http.md' + text: "LogStash HTTP", + link: "/appenders/logstash-http.md" }, { - text: 'LogStash UDP', - link: '/appenders/logstash-udp.md' + text: "LogStash UDP", + link: "/appenders/logstash-udp.md" }, { - text: 'Loggly', - link: '/appenders/loggly.md' + text: "Loggly", + link: "/appenders/loggly.md" }, { - text: 'RabbitMQ', - link: '/appenders/rabbitmq.md' + text: "RabbitMQ", + link: "/appenders/rabbitmq.md" }, { - text: 'Seq', - link: '/appenders/seq.md' + text: "Seq", + link: "/appenders/seq.md" }, { - text: 'Slack', - link: '/appenders/slack.md' + text: "Slack", + link: "/appenders/slack.md" }, { - text: 'Smtp', - link: '/appenders/smtp.md' + text: "Smtp", + link: "/appenders/smtp.md" } ] }, { - icon: 'bx bx-dots-horizontal-rounded text-lg', + icon: "bx bx-dots-horizontal-rounded text-lg", title: `Extras`, items: [ { - text: 'Ts.ED', - link: 'http://tsed.io' + text: "Ts.ED", + link: "http://tsed.io" }, { - text: 'Ts.ED CLI', - link: 'http://cli.tsed.io' + text: "Ts.ED CLI", + link: "http://cli.tsed.io" }, { - text: 'Team', - link: 'https://tsed.io/team.md' + text: "Team", + link: "https://tsed.io/team.md" }, { - text: 'Contributes', - link: '/tutorials/contributing.md' + text: "Contributes", + link: "/tutorials/contributing.md" }, { - text: 'Support', - link: 'https://tsed.io/support.md' + text: "Support", + link: "https://tsed.io/support.md" }, { - text: 'License', - link: '/license.md' + text: "License", + link: "/license.md" }, { - text: 'Api reference', - link: '/api.html' + text: "Api reference", + link: "/api.html" } ] } @@ -168,116 +168,112 @@ module.exports = { // SIDEBAR--------- sidebar: [ { - title: 'Getting started', // required - path: '/getting-started.html', + title: "Getting started", // required + path: "/getting-started.html", collapsable: true // optional, defaults to true }, { - title: 'Appenders', + title: "Appenders", children: [ - { title: 'Configuration', path: '/appenders/' }, - { title: 'Console', path: '/appenders/console' }, - { title: 'File', path: '/appenders/file' }, - { title: 'File date', path: '/appenders/file-date' }, - { title: 'Stdout', path: '/appenders/stdout' }, - { title: 'StdErr', path: '/appenders/stderr' }, - { title: 'Insight', path: '/appenders/insight' }, - { title: 'LogEntries', path: '/appenders/logentries' }, - { title: 'LogStash HTTP', path: '/appenders/logstash-http' }, - { title: 'LogStash UDP', path: '/appenders/logstash-udp' }, - { title: 'Loggly', path: '/appenders/loggly' }, - { title: 'RabbitMQ', path: '/appenders/rabbitmq' }, - { title: 'Seq', path: '/appenders/seq' }, - { title: 'Slack', path: '/appenders/slack' }, - { title: 'Smtp', path: '/appenders/smtp' }, - { title: 'Custom appender', path: '/appenders/custom' } + {title: "Configuration", path: "/appenders/"}, + {title: "Console", path: "/appenders/console"}, + {title: "File", path: "/appenders/file"}, + {title: "File date", path: "/appenders/file-date"}, + {title: "Stdout", path: "/appenders/stdout"}, + {title: "StdErr", path: "/appenders/stderr"}, + {title: "Insight", path: "/appenders/insight"}, + {title: "LogEntries", path: "/appenders/logentries"}, + {title: "LogStash HTTP", path: "/appenders/logstash-http"}, + {title: "LogStash UDP", path: "/appenders/logstash-udp"}, + {title: "Loggly", path: "/appenders/loggly"}, + {title: "RabbitMQ", path: "/appenders/rabbitmq"}, + {title: "Seq", path: "/appenders/seq"}, + {title: "Slack", path: "/appenders/slack"}, + {title: "Smtp", path: "/appenders/smtp"}, + {title: "Custom appender", path: "/appenders/custom"} ] }, { - title: 'Layouts', + title: "Layouts", children: [ - { title: 'Configuration', path: '/layouts/' }, - '/layouts/basic', - '/layouts/colored', - '/layouts/dummy', - '/layouts/message-pass-through', - '/layouts/json', - '/layouts/pattern' + {title: "Configuration", path: "/layouts/"}, + "/layouts/basic", + "/layouts/colored", + "/layouts/dummy", + "/layouts/message-pass-through", + "/layouts/json", + "/layouts/pattern" ] }, { - title: 'Extras', - children: [ - '/api', - '/contributing', - '/license' - ] + title: "Extras", + children: ["/api", "/contributing", "/license"] } ], otherTopics: [ - '/appenders/console', - '/appenders/file', - '/appenders/file-date', - '/appenders/stdout', - '/appenders/stderr', - '/appenders/insight', - '/appenders/logentries', - '/appenders/logstash-http', - '/appenders/logstash-udp', - '/appenders/loggly', - '/appenders/rabbitmq', - '/appenders/seq', - '/appenders/slack', - '/appenders/smtp', - '/layouts/basic', - '/layouts/colored', - '/layouts/dummy', - '/layouts/message-pass-through', - '/layouts/json', - '/layouts/pattern' + "/appenders/console", + "/appenders/file", + "/appenders/file-date", + "/appenders/stdout", + "/appenders/stderr", + "/appenders/insight", + "/appenders/logentries", + "/appenders/logstash-http", + "/appenders/logstash-udp", + "/appenders/loggly", + "/appenders/rabbitmq", + "/appenders/seq", + "/appenders/slack", + "/appenders/smtp", + "/layouts/basic", + "/layouts/colored", + "/layouts/dummy", + "/layouts/message-pass-through", + "/layouts/json", + "/layouts/pattern" ], footer: { sections: [ { - title: 'Discover', + title: "Discover", items: [ { - label: 'Our team', - url: 'https://tsed.io/team.html' + label: "Our team", + url: "https://tsed.io/team.html" }, { - label: 'Contact us', - url: 'https://form.typeform.com/to/uJLP7anG' + label: "Contact us", + url: "https://form.typeform.com/to/uJLP7anG" } ] }, { - title: 'Help', + title: "Help", items: [ { - label: 'Resources', - url: 'https://tsed.io/tutorials/index.html' + label: "Resources", + url: "https://tsed.io/tutorials/index.html" }, { - label: 'Chat with us', - url: 'https://api.tsed.io/rest/slack/tsedio/tsed' + label: "Chat with us", + url: "https://api.tsed.io/rest/slack/tsedio/tsed" }, { - label: 'Contribution guide', - url: '/contributing.html' + label: "Contribution guide", + url: "/contributing.html" } ] }, { - title: 'Support', + title: "Support", items: [ { - label: 'Issues', - url: 'https://github.com/tsedio/tsed/issues' + label: "Issues", + url: "https://github.com/tsedio/tsed/issues" }, { - label: 'Sponsoring & donations', - url: 'https://tsed.io/support.html' + label: "Sponsoring & donations", + url: "https://tsed.io/support.html" } ] } @@ -287,17 +283,17 @@ module.exports = { }, plugins: [ [ - '@vuepress/google-analytics', + "@vuepress/google-analytics", { - ga: 'UA-35240348-2' + ga: "UA-35240348-2" } ] ] }, markdown: { lineNumbers: true, - extendMarkdown: md => { - md.use(require('@tsed/markdown-it-symbols')) + extendMarkdown: (md) => { + md.use(require("@tsed/markdown-it-symbols")); } } -} +}; diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js index e7619cab..391eef4d 100644 --- a/docs/.vuepress/enhanceApp.js +++ b/docs/.vuepress/enhanceApp.js @@ -3,11 +3,11 @@ import VueTsED from "vuepress-theme-tsed/src/install"; import "./styles/style.css"; export default ({ - Vue, // the version of Vue being used in the VuePress app - options, // the options for the root Vue instance - router, // the router instance for the app - siteData // site metadata - }) => { + Vue, // the version of Vue being used in the VuePress app + options, // the options for the root Vue instance + router, // the router instance for the app + siteData // site metadata +}) => { try { Vue.use(VueTsED); Vue.use(VueAnalytics, { @@ -17,4 +17,4 @@ export default ({ } catch (er) { console.warn(er); } -} +}; diff --git a/docs/.vuepress/public/api.json b/docs/.vuepress/public/api.json index a44448fe..4dfe3045 100644 --- a/docs/.vuepress/public/api.json +++ b/docs/.vuepress/public/api.json @@ -75,9 +75,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] } ], "name": "@tsed/logentries" @@ -91,10 +89,7 @@ "symbolType": "default", "symbolLabel": "", "symbolCode": "", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/core/LogEvent", @@ -103,9 +98,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/core/LogLevel", @@ -114,9 +107,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/core/levels", @@ -125,9 +116,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/class/IAppenderOptions", @@ -136,9 +125,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/class/IBaseAppender", @@ -147,9 +134,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/class/BaseAppender", @@ -158,9 +143,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/components/ConsoleAppender", @@ -169,10 +152,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/appenders/components/FileAppender", @@ -181,9 +161,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/components/StderrAppender", @@ -192,10 +170,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/appenders/components/StdoutAppender", @@ -204,10 +179,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/appenders/decorators/Appender", @@ -216,9 +188,7 @@ "symbolType": "decorator", "symbolLabel": "Decorator", "symbolCode": "@", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/interfaces/IAppenderConfiguration", @@ -227,9 +197,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/interfaces/Partial", @@ -238,10 +206,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/appenders/interfaces/PartialAppenderConfiguration", @@ -250,10 +215,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/appenders/registries/IAppenderProvider", @@ -262,9 +224,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/appenders/registries/AppendersRegistry", @@ -273,10 +233,7 @@ "symbolType": "const", "symbolLabel": "Constant", "symbolCode": "K", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/class/BaseLayout", @@ -285,9 +242,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/class/LayoutReplacer", @@ -296,10 +251,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/class/Layouts", @@ -308,9 +260,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/BasicLayout", @@ -319,9 +269,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/ColoredLayout", @@ -330,9 +278,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/DummyLayout", @@ -341,9 +287,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/JsonLayout", @@ -352,9 +296,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/MessagePassThroughLayout", @@ -363,9 +305,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/components/PatternLayout", @@ -374,11 +314,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "return", - "authors", - "stable" - ] + "status": ["return", "authors", "stable"] }, { "path": "/api/logger/layouts/constants/LOG_COLORS", @@ -387,9 +323,7 @@ "symbolType": "enum", "symbolLabel": "Enum", "symbolCode": "E", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/decorators/Layout", @@ -398,9 +332,7 @@ "symbolType": "decorator", "symbolLabel": "Decorator", "symbolCode": "@", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/interfaces/TokenHandler", @@ -409,10 +341,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/interfaces/TokensHandlers", @@ -421,9 +350,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/interfaces/IBasicLayoutConfiguration", @@ -432,9 +359,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/interfaces/IReplacers", @@ -443,9 +368,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/registries/ILayoutProvider", @@ -454,9 +377,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/registries/LayoutsRegistry", @@ -465,10 +386,7 @@ "symbolType": "const", "symbolLabel": "Constant", "symbolCode": "K", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/utils/truncate", @@ -477,10 +395,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/utils/pad", @@ -489,10 +404,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/utils/truncateAndPad", @@ -501,10 +413,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/layouts/utils/colorizeStart", @@ -513,9 +422,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/utils/colorizeEnd", @@ -524,9 +431,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/utils/colorize", @@ -535,9 +440,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/utils/removeColors", @@ -546,9 +449,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/layouts/utils/timestampLevelAndCategory", @@ -557,10 +458,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/class/Logger", @@ -569,9 +467,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/logger/class/ILoggerAppender", @@ -580,9 +476,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/logger/class/LoggerAppenders", @@ -591,9 +485,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/logger/utils/ITableSettings", @@ -602,9 +494,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/logger/logger/utils/charRepeater", @@ -613,10 +503,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/utils/buildStartLine", @@ -625,10 +512,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/utils/buildEndLine", @@ -637,10 +521,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/utils/buildLine", @@ -649,10 +530,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/utils/buildLineData", @@ -661,10 +539,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/logger/logger/utils/drawTable", @@ -673,10 +548,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] } ], "name": "@tsed/logger" @@ -690,10 +562,7 @@ "symbolType": "default", "symbolLabel": "", "symbolCode": "", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/RabbitMQAppender", @@ -702,9 +571,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/core/LogEvent", @@ -713,10 +580,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/core/LogLevel", @@ -725,10 +589,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/core/levels", @@ -737,10 +598,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/class/IAppenderOptions", @@ -749,9 +607,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/class/IBaseAppender", @@ -760,9 +616,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/class/BaseAppender", @@ -771,10 +625,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/components/ConsoleAppender", @@ -783,11 +634,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "private", - "stable" - ] + "status": ["private", "private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/components/FileAppender", @@ -796,10 +643,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/components/StderrAppender", @@ -808,11 +652,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "private", - "stable" - ] + "status": ["private", "private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/components/StdoutAppender", @@ -821,11 +661,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "private", - "stable" - ] + "status": ["private", "private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/decorators/Appender", @@ -834,10 +670,7 @@ "symbolType": "decorator", "symbolLabel": "Decorator", "symbolCode": "@", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/interfaces/IAppenderConfiguration", @@ -846,9 +679,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/interfaces/Partial", @@ -857,10 +688,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/interfaces/PartialAppenderConfiguration", @@ -869,10 +697,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/registries/IAppenderProvider", @@ -881,9 +706,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/appenders/registries/AppendersRegistry", @@ -892,10 +715,7 @@ "symbolType": "const", "symbolLabel": "Constant", "symbolCode": "K", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/class/BaseLayout", @@ -904,10 +724,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/class/LayoutReplacer", @@ -916,10 +733,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/class/Layouts", @@ -928,10 +742,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/BasicLayout", @@ -940,10 +751,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/ColoredLayout", @@ -952,10 +760,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/DummyLayout", @@ -964,10 +769,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/JsonLayout", @@ -976,10 +778,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/MessagePassThroughLayout", @@ -988,10 +787,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/components/PatternLayout", @@ -1000,12 +796,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "return", - "authors", - "private", - "stable" - ] + "status": ["return", "authors", "private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/constants/LOG_COLORS", @@ -1014,10 +805,7 @@ "symbolType": "enum", "symbolLabel": "Enum", "symbolCode": "E", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/decorators/Layout", @@ -1026,10 +814,7 @@ "symbolType": "decorator", "symbolLabel": "Decorator", "symbolCode": "@", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/interfaces/TokenHandler", @@ -1038,10 +823,7 @@ "symbolType": "type", "symbolLabel": "Type alias", "symbolCode": "T", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/interfaces/TokensHandlers", @@ -1050,9 +832,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/interfaces/IBasicLayoutConfiguration", @@ -1061,9 +841,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/interfaces/IReplacers", @@ -1072,9 +850,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/registries/ILayoutProvider", @@ -1083,9 +859,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/registries/LayoutsRegistry", @@ -1094,10 +868,7 @@ "symbolType": "const", "symbolLabel": "Constant", "symbolCode": "K", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/truncate", @@ -1106,10 +877,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/pad", @@ -1118,10 +886,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/truncateAndPad", @@ -1130,10 +895,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/colorizeStart", @@ -1142,10 +904,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/colorizeEnd", @@ -1154,10 +913,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/colorize", @@ -1166,10 +922,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/removeColors", @@ -1178,10 +931,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/layouts/utils/timestampLevelAndCategory", @@ -1190,10 +940,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/class/Logger", @@ -1202,10 +949,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/class/ILoggerAppender", @@ -1214,9 +958,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/class/LoggerAppenders", @@ -1225,10 +967,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/ITableSettings", @@ -1237,9 +976,7 @@ "symbolType": "interface", "symbolLabel": "Interface", "symbolCode": "I", - "status": [ - "stable" - ] + "status": ["stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/charRepeater", @@ -1248,10 +985,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/buildStartLine", @@ -1260,10 +994,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/buildEndLine", @@ -1272,10 +1003,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/buildLine", @@ -1284,10 +1012,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/buildLineData", @@ -1296,10 +1021,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] }, { "path": "/api/rabbitmq/node_modules/@tsed/logger/logger/utils/drawTable", @@ -1308,10 +1030,7 @@ "symbolType": "function", "symbolLabel": "Function", "symbolCode": "F", - "status": [ - "private", - "stable" - ] + "status": ["private", "stable"] } ], "name": "@tsed/rabbitmq" @@ -1325,9 +1044,7 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] } ], "name": "@tsed/seq" @@ -1341,12 +1058,10 @@ "symbolType": "class", "symbolLabel": "Class", "symbolCode": "C", - "status": [ - "stable" - ] + "status": ["stable"] } ], "name": "@tsed/smtp" } } -} \ No newline at end of file +} diff --git a/docs/api.md b/docs/api.md index 2a98778e..bd77de4c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,6 +1,7 @@ --- sidebar: false --- + # Api Reference - \ No newline at end of file + diff --git a/docs/appenders/console.md b/docs/appenders/console.md index 193e4863..2fd02644 100644 --- a/docs/appenders/console.md +++ b/docs/appenders/console.md @@ -1,7 +1,7 @@ # Console Appender -This appender uses node’s console object to write log events. -Be aware that writing a high volume of output to the console can make your application use a lot of memory. +This appender uses node’s console object to write log events. +Be aware that writing a high volume of output to the console can make your application use a lot of memory. If you experience this problem, try switching to the [`stdout`](/appenders/stdout.md) appender. ## Configuration diff --git a/docs/appenders/custom.md b/docs/appenders/custom.md index 104d7e98..db1e56fd 100644 --- a/docs/appenders/custom.md +++ b/docs/appenders/custom.md @@ -1,7 +1,7 @@ # Custom Appender -Ts.Logger can load appenders from outside the core appenders by using @@Appender@@ decorator. -The type config value is used as a require path if no matching appender can be found. +Ts.Logger can load appenders from outside the core appenders by using @@Appender@@ decorator. +The type config value is used as a require path if no matching appender can be found. For example, the following configuration will create an appender with decorators: ```typescript @@ -12,7 +12,7 @@ const consoleLog = console.log.bind(console); @Appender({name: "console2"}) export class ConsoleAppender extends BaseAppender { write(loggingEvent: LogEvent) { - consoleLog(this.layout(loggingEvent, this.config.timezoneOffset)); + consoleLog(this.layout(loggingEvent, this.config.timezoneOffset)); } } ``` @@ -21,12 +21,12 @@ This appender can be use like this: ```typescript import {Logger} from "@tsed/logger"; -import "./consoleAppender.ts" +import "./consoleAppender.ts"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "console2", level: ["debug", "info", "trace"] - }); +logger.appenders.set("std-log", { + type: "console2", + level: ["debug", "info", "trace"] +}); ``` diff --git a/docs/appenders/file-date.md b/docs/appenders/file-date.md index 523d6e27..6281b272 100644 --- a/docs/appenders/file-date.md +++ b/docs/appenders/file-date.md @@ -10,6 +10,7 @@ This is a file appender that rolls log files based on a configurable time, rathe - **layout** - (optional, defaults to basic layout) - see [layouts](/layouts.md) Any other configuration parameters will be passed to the underlying [streamroller](https://github.com/nomiddlename/streamroller) implementation (see also node.js core file streams): + - **encoding** - `string` (default "utf-8") - **mode**- `integer` (default 0o644 - [node.js file modes](https://nodejs.org/dist/latest-v12.x/docs/api/fs.html#fs_file_modes)) - **flags** - `string` (default 'a') @@ -28,28 +29,29 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log', - pattern: '.yyyy-MM-dd' + type: "file", + filename: "all-the-logs.log", + pattern: ".yyyy-MM-dd" }); -logger.debug('I will be logged in all-the-logs.log'); +logger.debug("I will be logged in all-the-logs.log"); ``` This example will result in files being rolled every day. The initial file will be `all-the-logs.log`, with the daily backups being `all-the-logs.log.2017-04-30`, etc. ## Example with hourly log rolling (and compressed backups) + ```javascript import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log', - pattern: '.yyyy-MM-dd-hh', - compress: true -}) +logger.appenders.set("everything", { + type: "file", + filename: "all-the-logs.log", + pattern: ".yyyy-MM-dd-hh", + compress: true +}); ``` -This will result in one current log file (`all-the-logs.log`). Every hour this file will be compressed and renamed to `all-the-logs.log.2017-04-30-08.gz` (for example) and a new `all-the-logs.log` created. +This will result in one current log file (`all-the-logs.log`). Every hour this file will be compressed and renamed to `all-the-logs.log.2017-04-30-08.gz` (for example) and a new `all-the-logs.log` created. diff --git a/docs/appenders/file.md b/docs/appenders/file.md index 91aabcc9..15a384fc 100644 --- a/docs/appenders/file.md +++ b/docs/appenders/file.md @@ -1,10 +1,10 @@ # File Appender -The file appender writes log events to a file. It supports an optional maximum file size, and will keep a configurable -number of backups. -When using the file appender, you should also call [logger.shutdown()](/getting-started.md) when your application terminates, -to ensure that any remaining asynchronous writes have finished. -Although the file appender uses the [streamroller](https://github.com/nomiddlename/streamroller) library, this is included as a dependency of ts-log-debug so you do not +The file appender writes log events to a file. It supports an optional maximum file size, and will keep a configurable +number of backups. +When using the file appender, you should also call [logger.shutdown()](/getting-started.md) when your application terminates, +to ensure that any remaining asynchronous writes have finished. +Although the file appender uses the [streamroller](https://github.com/nomiddlename/streamroller) library, this is included as a dependency of ts-log-debug so you do not need to include it yourself. ## Installation @@ -21,7 +21,7 @@ npm install --save @tsed/logger-file - **backups - integer** (optional, default value = 5) - the number of old log files to keep during log rolling. - **layout** - (optional, defaults to basic layout) - see [layouts](/layouts/readme.md) -Any other configuration parameters will be passed to the underlying [streamroller](https://github.com/nomiddlename/streamroller) +Any other configuration parameters will be passed to the underlying [streamroller](https://github.com/nomiddlename/streamroller) implementation (see also node.js core file streams): - **encoding** - string (default “utf-8”) @@ -38,11 +38,11 @@ import "@tsed/logger-file"; const logger = new Logger("loggerName"); logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log' + type: "file", + filename: "all-the-logs.log" }); -logger.debug('I will be logged in all-the-logs.log'); +logger.debug("I will be logged in all-the-logs.log"); ``` This example will result in a single log file (all-the-logs.log) containing the log messages. @@ -56,30 +56,29 @@ import "@tsed/logger-file"; const logger = new Logger("loggerName"); logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log', - maxLogSize: 10485760, - backups: 3, - compress: true + type: "file", + filename: "all-the-logs.log", + maxLogSize: 10485760, + backups: 3, + compress: true }); ``` -This will result in one current log file (`all-the-logs.log`). When that reaches 10Mb in size, it will be renamed and +This will result in one current log file (`all-the-logs.log`). When that reaches 10Mb in size, it will be renamed and compressed to `all-the-logs.log.1.gz and a` new file opened called `all-the-logs.log`. -When `all-the-logs.log` reaches 10Mb again, then all-the-logs.log.1.gz will be renamed to +When `all-the-logs.log` reaches 10Mb again, then all-the-logs.log.1.gz will be renamed to `all-the-logs.log.2.gz`, and so on. ## Example with date rolling ```typescript -import { Logger } from '@tsed/logger-file'; +import {Logger} from "@tsed/logger-file"; import "@tsed/logger-file"; -export const logger = new Logger('Log Example'); +export const logger = new Logger("Log Example"); -logger.appenders -.set('file', { - type: 'file', +logger.appenders.set("file", { + type: "file", filename: `${__dirname}/../logs/myfile.log`, - pattern: '.yyyy-MM-dd' + pattern: ".yyyy-MM-dd" }); ``` diff --git a/docs/appenders/insight.md b/docs/appenders/insight.md index a57e1d7e..421708ea 100644 --- a/docs/appenders/insight.md +++ b/docs/appenders/insight.md @@ -10,9 +10,9 @@ npm install --save @tsed/logger-insight ## Configuration -* `type` - `insight` -* `options.token` - LogEntries token -* `options.region` - The region of ingestion endpoint to be used. Examples: `eu`, `us` etc. +- `type` - `insight` +- `options.token` - LogEntries token +- `options.region` - The region of ingestion endpoint to be used. Examples: `eu`, `us` etc. See all available options for Insight [here](https://www.npmjs.com/package/r7insight_node). @@ -20,7 +20,7 @@ See all available options for Insight [here](https://www.npmjs.com/package/r7ins ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-insight" +import "@tsed/logger-insight"; const logger = new Logger("loggerName"); diff --git a/docs/appenders/logentries.md b/docs/appenders/logentries.md index bf429a7b..57a3a016 100644 --- a/docs/appenders/logentries.md +++ b/docs/appenders/logentries.md @@ -15,8 +15,8 @@ npm install --save @tsed/logger-logentries ## Configuration -* `type` - `logentries` -* `options.token` - LogEntries token +- `type` - `logentries` +- `options.token` - LogEntries token See all available options for LogEntries [here](https://www.npmjs.com/package/le_node). @@ -24,7 +24,7 @@ See all available options for LogEntries [here](https://www.npmjs.com/package/le ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-logentries" +import "@tsed/logger-logentries"; const logger = new Logger("loggerName"); diff --git a/docs/appenders/loggly.md b/docs/appenders/loggly.md index cfd841c0..686f4f36 100644 --- a/docs/appenders/loggly.md +++ b/docs/appenders/loggly.md @@ -12,13 +12,13 @@ npm install --save @tsed/logger-loggly ## Configuration -* `type` - `loggly` -* `options.token` - `string` - your really long input token -* `options.subdomain` - `string` - your subdomain -* `options.auth` - `object` (optional) - authentication details - * `username` - `string` - * `password` - `string` -* `options.tags` - `Array` (optional) - tags to include in every log message +- `type` - `loggly` +- `options.token` - `string` - your really long input token +- `options.subdomain` - `string` - your subdomain +- `options.auth` - `object` (optional) - authentication details + - `username` - `string` + - `password` - `string` +- `options.tags` - `Array` (optional) - tags to include in every log message See all available options for Loggly [here](https://www.npmjs.com/package/node-loggly-bulk). @@ -34,13 +34,13 @@ logger.appenders.set("stdout", { type: "loggly", level: ["info"], options: { - token: 'somethinglong', - subdomain: 'your.subdomain', - tags: [ 'tag1' ] + token: "somethinglong", + subdomain: "your.subdomain", + tags: ["tag1"] } }); -logger.info({ tags: ['my-tag-1', 'my-tag-2'] }, 'Some message'); +logger.info({tags: ["my-tag-1", "my-tag-2"]}, "Some message"); ``` This will result in a log message being sent to loggly with the tags `tag1`, `my-tag-1`, `my-tag-2`. diff --git a/docs/appenders/logstash-http.md b/docs/appenders/logstash-http.md index ba21e02b..289ac5a6 100644 --- a/docs/appenders/logstash-http.md +++ b/docs/appenders/logstash-http.md @@ -11,13 +11,13 @@ npm install --save @tsed/logger-logstash-http ## Configuration -* `type` - `logstash-http` -* `options.url` - `string` - logFaces receiver servlet URL -* `options.application` - `string` (optional) - used to identify your application's logs -* `options.logChannel` - `string` (optional) - also used to identify your application's logs [but in a more specific way] -* `options.logType` - `string` (optional) - used for the `type` field in the logstash data -* `options.timeout` - `integer` (optional, defaults to 5000ms) - the timeout for the HTTP request. -* `options.maxBuffer` - `integer` (optional, defaults to 0) - Group bulk request by the maxBuffer number. By Default the buffer is disabled. +- `type` - `logstash-http` +- `options.url` - `string` - logFaces receiver servlet URL +- `options.application` - `string` (optional) - used to identify your application's logs +- `options.logChannel` - `string` (optional) - also used to identify your application's logs [but in a more specific way] +- `options.logType` - `string` (optional) - used for the `type` field in the logstash data +- `options.timeout` - `integer` (optional, defaults to 5000ms) - the timeout for the HTTP request. +- `options.maxBuffer` - `integer` (optional, defaults to 0) - Group bulk request by the maxBuffer number. By Default the buffer is disabled. This appender will also pick up Logger context values from the events, and add them as `p_` values in the logFaces event. See the example below for more details. @@ -30,19 +30,19 @@ import "@tsed/logger-logstash-http"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logstash-http", + type: "logstash-http", level: ["info"], options: { - url: 'http://localhost:9200/_bulk', - application: 'logstash-tsed', - logType: 'application', - logChannel: 'node' + url: "http://localhost:9200/_bulk", + application: "logstash-tsed", + logType: "application", + logChannel: "node" } }); -logger.context.set('requestId', '123'); -logger.info('some interesting log message'); -logger.error('something has gone wrong'); +logger.context.set("requestId", "123"); +logger.info("some interesting log message"); +logger.error("something has gone wrong"); ``` Enable date log rolling: @@ -54,19 +54,19 @@ import "@tsed/logger-logstash-http"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logstash-http", + type: "logstash-http", level: ["info"], options: { - url: 'http://localhost:9200/_bulk', - application: () => 'logstash-tsed-' + moment().format('YYYY.MM.DD'), - logType: 'application', - logChannel: 'node' + url: "http://localhost:9200/_bulk", + application: () => "logstash-tsed-" + moment().format("YYYY.MM.DD"), + logType: "application", + logChannel: "node" } }); -logger.context.set('requestId', '123'); -logger.info('some interesting log message'); -logger.error('something has gone wrong'); +logger.context.set("requestId", "123"); +logger.info("some interesting log message"); +logger.error("something has gone wrong"); ``` This example will result in two log events being sent to your `localhost:9200`. diff --git a/docs/appenders/logstash-udp.md b/docs/appenders/logstash-udp.md index 4ae9dff7..9003b8cd 100644 --- a/docs/appenders/logstash-udp.md +++ b/docs/appenders/logstash-udp.md @@ -14,11 +14,11 @@ npm install --save @tsed/logger-logstash-udp ## Configuration -* `type` - `logstash-udp` -* `options.host` - `string` - hostname (or IP-address) of the logstash server -* `options.port` - `integer` - port of the logstash server -* `options.layout` - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts) -* `options.extraDataProvider` - function (optional, defaults to put the second param of log to fields) - used to enhance the object sent to Logstash via UDP. this will be passed the log event and should return an object. +- `type` - `logstash-udp` +- `options.host` - `string` - hostname (or IP-address) of the logstash server +- `options.port` - `integer` - port of the logstash server +- `options.layout` - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts) +- `options.extraDataProvider` - function (optional, defaults to put the second param of log to fields) - used to enhance the object sent to Logstash via UDP. this will be passed the log event and should return an object. ## Example @@ -29,15 +29,15 @@ import "@tsed/logger-logstash-udp"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logstash-udp", + type: "logstash-udp", level: ["info"], options: { - host: 'log.server', + host: "log.server", port: 12345 } }); -logger.info("important log message", { cheese: 'gouda', biscuits: 'hobnob' }); +logger.info("important log message", {cheese: "gouda", biscuits: "hobnob"}); ``` This will result in a JSON message being sent to log.server:12345 over UDP, with the following format: @@ -69,22 +69,23 @@ logger.appenders.set("stdout", { type: "loggly", level: ["info"], options: { - host: 'log.server', + host: "log.server", port: 12345, - extraDataProvider: loggingEvent => ({ - host: 'anotherHostname', // this will replace the default real host - clientIp: '1.2.3.4', // this will be added + extraDataProvider: (loggingEvent) => ({ + host: "anotherHostname", // this will replace the default real host + clientIp: "1.2.3.4", // this will be added fields: { - tag: 'myTag', // this will be added to the fields + tag: "myTag", // this will be added to the fields pid: loggingEvent.pid, // this will be added to the fields - cheese: 'defaultCheese' // this will be added to the fields but will not be replaced in this example + cheese: "defaultCheese" // this will be added to the fields but will not be replaced in this example } }) } }); -logger.info("important log message", { cheese: 'gouda', biscuits: 'hobnob' }); +logger.info("important log message", {cheese: "gouda", biscuits: "hobnob"}); ``` + This will result in a JSON message being sent to log.server:12345 over UDP, with the following format: ```javascript diff --git a/docs/appenders/rabbitmq.md b/docs/appenders/rabbitmq.md index d83413d0..bb14290a 100644 --- a/docs/appenders/rabbitmq.md +++ b/docs/appenders/rabbitmq.md @@ -12,24 +12,24 @@ If you want to be sure that all messages have been sent before your programme ex ## Configuration -* `type` - `rabbitmq` -* `layout` - `object` (optional, defaults to `messagePassThroughLayout`) - the layout to use for log events (see [Layouts](/docs/layouts/readme.md)). -* `options.host` - `string` (optional, defaults to `127.0.0.1`) - the location of the rabbitmq server -* `options.port` - `integer` (optional, defaults to `5672`) - the port the rabbitmq server is listening on -* `options.username` - `string` (optional, defaults to `guest`) - username to use when authenticating connection to rabbitmq -* `options.password` - `string` (optional, defaults to `guest`) - password to use when authenticating connection to rabbitmq -* `options.routing_key` - `string` (optional, defaults to `logstash`) - rabbitmq message's routing_key -* `options.durable` - `string` (optional, defaults to false) - will that RabbitMQ lose our queue. -* `options.exchange` - `string` (optional, defaults to `log`)- rabbitmq send message's exchange -* `options.mq_type` - `string` (optional, defaults to `direct`) - rabbitmq message's mq_type -* `options.vhost` - `string` (optional, defaults to `/`) - vhost to use -* `options.shutdownTimeout` - `integer` (optional, defaults to `10000`) - maximum time in milliseconds to wait for messages to be sent during log4js shutdown. +- `type` - `rabbitmq` +- `layout` - `object` (optional, defaults to `messagePassThroughLayout`) - the layout to use for log events (see [Layouts](/docs/layouts/readme.md)). +- `options.host` - `string` (optional, defaults to `127.0.0.1`) - the location of the rabbitmq server +- `options.port` - `integer` (optional, defaults to `5672`) - the port the rabbitmq server is listening on +- `options.username` - `string` (optional, defaults to `guest`) - username to use when authenticating connection to rabbitmq +- `options.password` - `string` (optional, defaults to `guest`) - password to use when authenticating connection to rabbitmq +- `options.routing_key` - `string` (optional, defaults to `logstash`) - rabbitmq message's routing_key +- `options.durable` - `string` (optional, defaults to false) - will that RabbitMQ lose our queue. +- `options.exchange` - `string` (optional, defaults to `log`)- rabbitmq send message's exchange +- `options.mq_type` - `string` (optional, defaults to `direct`) - rabbitmq message's mq_type +- `options.vhost` - `string` (optional, defaults to `/`) - vhost to use +- `options.shutdownTimeout` - `integer` (optional, defaults to `10000`) - maximum time in milliseconds to wait for messages to be sent during log4js shutdown. ## Example ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-rabbitmq" +import "@tsed/logger-rabbitmq"; const logger = new Logger("loggerName"); @@ -37,13 +37,13 @@ logger.appenders.set("stdout", { type: "rabbitmq", level: ["info"], options: { - host: '127.0.0.1', + host: "127.0.0.1", port: 5672, - username: 'guest', - password: 'guest', - routing_key: 'logstash', - exchange: 'exchange_logs', - mq_type: 'direct', + username: "guest", + password: "guest", + routing_key: "logstash", + exchange: "exchange_logs", + mq_type: "direct", durable: true } }); diff --git a/docs/appenders/readme.md b/docs/appenders/readme.md index bfa11656..d7b4392f 100644 --- a/docs/appenders/readme.md +++ b/docs/appenders/readme.md @@ -11,13 +11,16 @@ const logger = new Logger("loggerName"); logger.appenders .set({ - type: "stdout", level: ["debug", "info", "trace"] + type: "stdout", + level: ["debug", "info", "trace"] }) .set({ - type: "stderr", level: ["error", "fatal", "warn"] + type: "stderr", + level: ["error", "fatal", "warn"] }) .set({ - type: "file", filename: "logfile.log" + type: "file", + filename: "logfile.log" }); ``` diff --git a/docs/appenders/seq.md b/docs/appenders/seq.md index dfdc1976..9bd5cd3f 100644 --- a/docs/appenders/seq.md +++ b/docs/appenders/seq.md @@ -10,9 +10,9 @@ npm install --save @tsed/seq ## Configuration -* `type` - `seq` -* `options.url` - The url log server -* `options.apiKey` - The apiKey +- `type` - `seq` +- `options.url` - The url log server +- `options.apiKey` - The apiKey See all available options for Seq [here](https://www.npmjs.com/package/seq-logging). @@ -20,7 +20,7 @@ See all available options for Seq [here](https://www.npmjs.com/package/seq-loggi ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-seq" +import "@tsed/logger-seq"; const logger = new Logger("loggerName"); @@ -28,7 +28,7 @@ logger.appenders.set("stdout", { type: "seq", level: ["info"], options: { - serverUrl: 'http://localhost:5341', + serverUrl: "http://localhost:5341", apiKey: "the token" // other Seq options } diff --git a/docs/appenders/slack.md b/docs/appenders/slack.md index feb59013..c58effb2 100644 --- a/docs/appenders/slack.md +++ b/docs/appenders/slack.md @@ -10,11 +10,11 @@ npm install --save @tsed/logger-slack ## Configuration -* `type` - `slack` -* `options.token` - `string` - your Slack API token (see the (slack web api docs)[https://slack.dev/node-slack-sdk/web-api]) -* `options.channel_id` - `string` - the channel to send log messages -* `options.icon_url` - `string` (optional) - the icon to use for the message -* `options.username` - `string` - the username to display with the message +- `type` - `slack` +- `options.token` - `string` - your Slack API token (see the (slack web api docs)[https://slack.dev/node-slack-sdk/web-api]) +- `options.channel_id` - `string` - the channel to send log messages +- `options.icon_url` - `string` (optional) - the icon to use for the message +- `options.username` - `string` - the username to display with the message ## Example diff --git a/docs/appenders/smtp.md b/docs/appenders/smtp.md index 213eab93..ab535803 100644 --- a/docs/appenders/smtp.md +++ b/docs/appenders/smtp.md @@ -9,58 +9,58 @@ npm install @tsed/logger-smtp ## Configuration -* `type` - `smtp` -* `SMTP` - `object` (optional, if not present will use `transport` field) - * `host` - `string` (optional, defaults to `localhost`) - * `port` - `integer` (optional, defaults to `25`) - * `auth` - `object` (optional) - authentication details - * `user` - `string` - * `pass` - `string` -* `transport` - `object` (optional, if not present will use `SMTP`) - see [`nodemailer`](https://nodemailer.com/smtp/) docs for transport options - * `plugin` - `string` (optional, defaults to `smtp`) - the nodemailer transport plugin to use - * `options` - `object` - configuration for the transport plugin -* `attachment` - `object` (optional) - send logs as email attachment - * `enable` - `boolean` (optional, defaults to `false`) - * `message` - `string` (optional, defaults to `See logs as attachment`) - message to put in body of email - * `filename` - `string` (optional, defaults to `default.log`) - attachment filename -* `sendInterval` - `integer` (optional, defaults to `0`) - batch emails and send in one email every `sendInterval` seconds, if `0` then every log message will send an email. -* `shutdownTimeout` - `integer` (optional, defaults to `5`) - time in seconds to wait for emails to be sent during shutdown -* `recipients` - `string` - email addresses to send the logs to -* `subject` - `string` (optional, defaults to message from first log event in batch) - subject for email -* `sender` - `string` (optional) - who the logs should be sent as -* `html` - `boolean` (optional, defaults to `false`) - send the email as HTML instead of plain text -* `layout` - `object` (optional, defaults to basicLayout) - see [layouts](https://logger.tsed.io/layouts.html) -* `cc` - `string` (optional) - email addresses to send the carbon-copy logs to -* `bcc` - `string` (optional) - email addresses to send the blind-carbon-copy logs to +- `type` - `smtp` +- `SMTP` - `object` (optional, if not present will use `transport` field) + - `host` - `string` (optional, defaults to `localhost`) + - `port` - `integer` (optional, defaults to `25`) + - `auth` - `object` (optional) - authentication details + - `user` - `string` + - `pass` - `string` +- `transport` - `object` (optional, if not present will use `SMTP`) - see [`nodemailer`](https://nodemailer.com/smtp/) docs for transport options + - `plugin` - `string` (optional, defaults to `smtp`) - the nodemailer transport plugin to use + - `options` - `object` - configuration for the transport plugin +- `attachment` - `object` (optional) - send logs as email attachment + - `enable` - `boolean` (optional, defaults to `false`) + - `message` - `string` (optional, defaults to `See logs as attachment`) - message to put in body of email + - `filename` - `string` (optional, defaults to `default.log`) - attachment filename +- `sendInterval` - `integer` (optional, defaults to `0`) - batch emails and send in one email every `sendInterval` seconds, if `0` then every log message will send an email. +- `shutdownTimeout` - `integer` (optional, defaults to `5`) - time in seconds to wait for emails to be sent during shutdown +- `recipients` - `string` - email addresses to send the logs to +- `subject` - `string` (optional, defaults to message from first log event in batch) - subject for email +- `sender` - `string` (optional) - who the logs should be sent as +- `html` - `boolean` (optional, defaults to `false`) - send the email as HTML instead of plain text +- `layout` - `object` (optional, defaults to basicLayout) - see [layouts](https://logger.tsed.io/layouts.html) +- `cc` - `string` (optional) - email addresses to send the carbon-copy logs to +- `bcc` - `string` (optional) - email addresses to send the blind-carbon-copy logs to ## Example (default config) ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name" }); ``` -This configuration will send an email using the smtp server running on `localhost:25`, for every log event of level `ERROR` and above. +This configuration will send an email using the smtp server running on `localhost:25`, for every log event of level `ERROR` and above. The email will be sent to `dev.team@company.name`, the subject will be the message part of the log event, the body of the email will be log event formatted by the basic layout function. ## Example (logs as attachments, batched) ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", subject: "Latest logs", @@ -80,15 +80,15 @@ This configuration will send an email once every hour, with all the log events o ```javascript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", - SMTP: { host: 'smtp.company.name', port: 8025 } + SMTP: {host: "smtp.company.name", port: 8025} }); ``` @@ -96,21 +96,22 @@ This configuration can also be written as: ```javascript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", transport: { - plugin: 'smtp', + plugin: "smtp", options: { - host: 'smtp.company.name', + host: "smtp.company.name", port: 8025 } } }); ``` + A similar config can be used to specify a different transport plugin than `smtp`. See the [`nodemailer`](https://nodemailer.com/smtp/) docs for more details. diff --git a/docs/contributing.md b/docs/contributing.md index eb60abd6..ca17d5f2 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,4 +1,4 @@ -# Contributing +# Contributing ## Setup diff --git a/docs/getting-started.md b/docs/getting-started.md index 036ea85c..dca1e74b 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,7 +1,9 @@ --- otherTopics: true --- + # Getting started + ## Installation ```bash @@ -21,7 +23,9 @@ $log.name = "APP"; $log.debug("Some debug messages"); ``` + Will be produce the following log output: + ``` [2017-06-17 11:43:37.987] [DEBUG] [APP] - Some debug messages ``` @@ -33,26 +37,26 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); logger.appenders - .set("std-log", { - type: "stdout", - levels: ["debug", "info", "trace"] - }) - .set("error-log", { - type: "stderr", - levels: ["fatal", "error", "warn"], - layout: { - type: "pattern", - pattern: "%d %p %c %X{user} %m%n" - } - }) - .set("all-log-file", { - type: "file", - filename: `${__dirname}/app.log`, - layout:{ - type: "json", - separator: "," - } - }); + .set("std-log", { + type: "stdout", + levels: ["debug", "info", "trace"] + }) + .set("error-log", { + type: "stderr", + levels: ["fatal", "error", "warn"], + layout: { + type: "pattern", + pattern: "%d %p %c %X{user} %m%n" + } + }) + .set("all-log-file", { + type: "file", + filename: `${__dirname}/app.log`, + layout: { + type: "json", + separator: "," + } + }); ``` ## Shutdown @@ -64,9 +68,7 @@ Use this when your programme exits to make sure all your logs are written to fil import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger - .shutdown() - .then(() => { - console.log("Complete") - }); +logger.shutdown().then(() => { + console.log("Complete"); +}); ``` diff --git a/docs/layouts/basic.md b/docs/layouts/basic.md index 00e42e3c..8b00d45b 100644 --- a/docs/layouts/basic.md +++ b/docs/layouts/basic.md @@ -1,6 +1,6 @@ # Basic layout -* type - `basic` +- type - `basic` Basic layout will output the timestamp, level, category, followed by the formatted log event data. @@ -11,11 +11,12 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "stdout", layout: {type: "basic"}, level: ["debug", "info", "trace"] - }); -logger.debug('Log something'); +logger.appenders.set("std-log", { + type: "stdout", + layout: {type: "basic"}, + level: ["debug", "info", "trace"] +}); +logger.debug("Log something"); ``` This will output: diff --git a/docs/layouts/colored.md b/docs/layouts/colored.md index 5ac16091..206c2564 100644 --- a/docs/layouts/colored.md +++ b/docs/layouts/colored.md @@ -1,16 +1,15 @@ # Colored layout -* type - `colored` +- type - `colored` - This layout is the same as basic, except that the timestamp, level and category will be colored according to the log event's level (if your terminal/file supports it - if you see some weird characters in your output and no color then you should probably switch to basic). The colors used are: - -* TRACE - `blue` -* DEBUG - `cyan` -* INFO - `green` -* WARN - `yellow` -* ERROR - `red` -* FATAL - `magenta` +This layout is the same as basic, except that the timestamp, level and category will be colored according to the log event's level (if your terminal/file supports it - if you see some weird characters in your output and no color then you should probably switch to basic). The colors used are: +- TRACE - `blue` +- DEBUG - `cyan` +- INFO - `green` +- WARN - `yellow` +- ERROR - `red` +- FATAL - `magenta` ## Example @@ -19,11 +18,12 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "stdout", layout: {type: "colored"}, level: ["debug", "info", "trace"] - }); -logger.debug('Log something'); +logger.appenders.set("std-log", { + type: "stdout", + layout: {type: "colored"}, + level: ["debug", "info", "trace"] +}); +logger.debug("Log something"); ``` This will output: diff --git a/docs/layouts/custom.md b/docs/layouts/custom.md index 7355d572..a0ff2b8c 100644 --- a/docs/layouts/custom.md +++ b/docs/layouts/custom.md @@ -10,18 +10,18 @@ import {formatLogData} from "ts-log-debug/lib/utils/inpectUtils"; @Layout({name: "customJson"}) export class JsonLayout extends BaseLayout { transform(loggingEvent: LogEvent, timezoneOffset?): string { - const log = { - startTime: loggingEvent.startTime, - categoryName: loggingEvent.categoryName, - level: loggingEvent.level.toString(), - data: loggingEvent.data, - context: loggingEvent.context - }; - - log.data = log.data.map((data) => formatLogData([data])); - - return JSON.stringify(log) + (this.config["separator"] || ""); - }; + const log = { + startTime: loggingEvent.startTime, + categoryName: loggingEvent.categoryName, + level: loggingEvent.level.toString(), + data: loggingEvent.data, + context: loggingEvent.context + }; + + log.data = log.data.map((data) => formatLogData([data])); + + return JSON.stringify(log) + (this.config["separator"] || ""); + } } ``` @@ -33,17 +33,18 @@ import "./customLayout.ts"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "console", layout:{type: "customJson"}, level: ["debug", "info", "trace"] - }); -logger.info('this is just a test'); -logger.error('of a custom appender'); -logger.warn('that outputs json'); +logger.appenders.set("std-log", { + type: "console", + layout: {type: "customJson"}, + level: ["debug", "info", "trace"] +}); +logger.info("this is just a test"); +logger.error("of a custom appender"); +logger.warn("that outputs json"); ``` This example outputs the following: - + ```bash {"startTime":"2017-06-05T22:23:08.479Z","categoryName":"json-test","data":["this is just a test"],"level":"INFO","context":{}}, {"startTime":"2017-06-05T22:23:08.483Z","categoryName":"json-test","data":["of a custom appender"],"level":"ERROR","context":{}}, diff --git a/docs/layouts/dummy.md b/docs/layouts/dummy.md index e0185298..f37649e4 100644 --- a/docs/layouts/dummy.md +++ b/docs/layouts/dummy.md @@ -1,6 +1,6 @@ # Dummy layout -* type - `dummy` +- type - `dummy` This layout only outputs the first value in the log event's data. @@ -11,12 +11,13 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "console", layout: {type: "dummy"}, level: ["debug", "info", "trace"] - }); +logger.appenders.set("std-log", { + type: "console", + layout: {type: "dummy"}, + level: ["debug", "info", "trace"] +}); -logger.debug('Cheese is too ripe! Cheese was: ', cheeseName); +logger.debug("Cheese is too ripe! Cheese was: ", cheeseName); ``` This will output: diff --git a/docs/layouts/json.md b/docs/layouts/json.md index 95581462..943445a0 100644 --- a/docs/layouts/json.md +++ b/docs/layouts/json.md @@ -1,7 +1,7 @@ # Json layout -* type - `json` -* separator - string - char that separate each line +- type - `json` +- separator - string - char that separate each line ## Example @@ -10,17 +10,19 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log-json", { - type: "console", layout: {type: "json", separator: ","}, level: ["debug", "info", "trace"] - }); +logger.appenders.set("std-log-json", { + type: "console", + layout: {type: "json", separator: ","}, + level: ["debug", "info", "trace"] +}); -logger.info('this is just a test'); -logger.error('of a custom appender'); -logger.warn('that outputs json'); +logger.info("this is just a test"); +logger.error("of a custom appender"); +logger.warn("that outputs json"); ``` + This example outputs the following: - + ```bash {"startTime":"2017-06-05T22:23:08.479Z","categoryName":"json-test","data":["this is just a test"],"level":"INFO","context":{}}, {"startTime":"2017-06-05T22:23:08.483Z","categoryName":"json-test","data":["of a custom appender"],"level":"ERROR","context":{}}, diff --git a/docs/layouts/message-pass-through.md b/docs/layouts/message-pass-through.md index 2b82cf82..a84c9c0b 100644 --- a/docs/layouts/message-pass-through.md +++ b/docs/layouts/message-pass-through.md @@ -12,11 +12,12 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "console", layout: {type: "messagePassThrough"}, level: ["debug", "info", "trace"] - }); -logger.debug('Log something'); +logger.appenders.set("std-log", { + type: "console", + layout: {type: "messagePassThrough"}, + level: ["debug", "info", "trace"] +}); +logger.debug("Log something"); ``` This will output: diff --git a/docs/layouts/pattern.md b/docs/layouts/pattern.md index 4bd98f58..5258995c 100644 --- a/docs/layouts/pattern.md +++ b/docs/layouts/pattern.md @@ -1,33 +1,33 @@ # Pattern layout -* type - pattern -* pattern - string - specifier for the output format, using placeholders as described below -* tokens - object (optional) - user-defined tokens to be used in the pattern +- type - pattern +- pattern - string - specifier for the output format, using placeholders as described below +- tokens - object (optional) - user-defined tokens to be used in the pattern ## Pattern format -The pattern string can contain any characters, but sequences beginning with `%` will be replaced with values taken from -the log event, and other environmental values. +The pattern string can contain any characters, but sequences beginning with `%` will be replaced with values taken from +the log event, and other environmental values. -Format for specifiers is `%[padding].[truncation][field]{[format]} -` padding and truncation are optional, and format only applies to a few tokens (notably, date). e.g. `%5.10p -` +Format for specifiers is `%[padding].[truncation][field]{[format]} -` padding and truncation are optional, and format only applies to a few tokens (notably, date). e.g. `%5.10p -` left pad the log level by 5 characters, up to a max of 10. Fields can be any of: -* `%r` time in toLocaleTimeString format, -* `%p` log level, -* `%c` log category, -* `%h` hostname, -* `%m` log data, -* `%j` log data as JSON, -* `%d` date, formatted - default is `ISO8601`, format options are: `ISO8601`, `ISO8601_WITH_TZ_OFFSET`, `ABSOLUTE`, `DATE`, or any string compatible with the date-format library. e.g. `%d{DATE}, %d{yyyy/MM/dd-hh.mm.ss}`, -* `%% % -` for when you want a literal `%` in your output, -* `%n` newline, -* `%z` process id (from process.pid), -* `%x{[tokenname]}` add dynamic tokens to your log. Tokens are specified in the tokens parameter, -* `%X{[tokenname]}` add values from the Logger context. Tokens are keys into the context values, -* `%[` start a colored block (color will be taken from the log level, similar to coloredLayout), -* `%]` end a colored block. +- `%r` time in toLocaleTimeString format, +- `%p` log level, +- `%c` log category, +- `%h` hostname, +- `%m` log data, +- `%j` log data as JSON, +- `%d` date, formatted - default is `ISO8601`, format options are: `ISO8601`, `ISO8601_WITH_TZ_OFFSET`, `ABSOLUTE`, `DATE`, or any string compatible with the date-format library. e.g. `%d{DATE}, %d{yyyy/MM/dd-hh.mm.ss}`, +- `%% % -` for when you want a literal `%` in your output, +- `%n` newline, +- `%z` process id (from process.pid), +- `%x{[tokenname]}` add dynamic tokens to your log. Tokens are specified in the tokens parameter, +- `%X{[tokenname]}` add values from the Logger context. Tokens are keys into the context values, +- `%[` start a colored block (color will be taken from the log level, similar to coloredLayout), +- `%]` end a colored block. ## Tokens @@ -38,19 +38,18 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log-custom", { - type: "console", - layout: { - type: 'pattern', - pattern: '%d %p %c %x{user} %m%n', - tokens: { - user: (logEvent) => AuthLibrary.currentUser() - } - }, - level: ["debug", "info", "trace"] - }); -logger.info('doing something.'); +logger.appenders.set("std-log-custom", { + type: "console", + layout: { + type: "pattern", + pattern: "%d %p %c %x{user} %m%n", + tokens: { + user: (logEvent) => AuthLibrary.currentUser() + } + }, + level: ["debug", "info", "trace"] +}); +logger.info("doing something."); ``` This would output: @@ -65,20 +64,20 @@ You can also use the Logger context to store tokens (sometimes called Nested Dia import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "console", - layout: { - type: 'pattern', - pattern: '%d %p %c %X{user} %m%n', - }, - level: ["debug", "info", "trace"] - }); -logger.addContext('user', 'charlie') -logger.info('doing something.'); +logger.appenders.set("std-log", { + type: "console", + layout: { + type: "pattern", + pattern: "%d %p %c %X{user} %m%n" + }, + level: ["debug", "info", "trace"] +}); +logger.addContext("user", "charlie"); +logger.info("doing something."); ``` This would output: + ```bash 2017-06-01 08:32:56.283 INFO default charlie doing something. ``` diff --git a/docs/layouts/readme.md b/docs/layouts/readme.md index 18ea23a6..70b5d06a 100644 --- a/docs/layouts/readme.md +++ b/docs/layouts/readme.md @@ -13,15 +13,17 @@ import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); -logger.appenders - .set("std-log", { - type: "stdout", layout: {type: "basic"}, level: ["debug", "info", "trace"] - }); +logger.appenders.set("std-log", { + type: "stdout", + layout: {type: "basic"}, + level: ["debug", "info", "trace"] +}); ``` + ::: tip This configuration replaces the stdout appender's default colored layout with basic layout. ::: + ## Built-in Layouts - diff --git a/docs/license.md b/docs/license.md index af7f1f88..85aa4ba1 100644 --- a/docs/license.md +++ b/docs/license.md @@ -8,10 +8,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - diff --git a/docs/readme.md b/docs/readme.md index 21f3e7b8..9fe30a37 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -2,25 +2,25 @@ layout: Home sidebar: false meta: - - name: description - content: A Node.js and TypeScript multi channel logger. - - name: keywords - content: Ts.Logger nodejs typescript logger javascript decorators + - name: description + content: A Node.js and TypeScript multi channel logger. + - name: keywords + content: Ts.Logger nodejs typescript logger javascript decorators gettingStartedText: Getting started gettingStartedUrl: /getting-started.html messengerText: Discussions messengerIcon: bxl-slack messengerUrl: https://api.tsed.io/rest/slack/tsedio/tsed features: -- title: Colored - icon: bxs-color-fill - details: Colored console logging to stdout or stderr. -- title: Multi channel - icon: bxs-select-multiple - details: File appender, with configurable log rolling based on file size or date. -- title: Extensible - icon: bx-extension - details: Use decorators to declare your own appenders and layouts logger. + - title: Colored + icon: bxs-color-fill + details: Colored console logging to stdout or stderr. + - title: Multi channel + icon: bxs-select-multiple + details: File appender, with configurable log rolling based on file size or date. + - title: Extensible + icon: bx-extension + details: Use decorators to declare your own appenders and layouts logger. contributors: classes: bg-gray-lighter title: Our awesome contributors @@ -31,81 +31,83 @@ contributors: width: 45 bgColor: white backers: - cta: - label: Become backer - url: https://opencollective.com/tsed#backers + cta: + label: Become backer + url: https://opencollective.com/tsed#backers sponsors: - classes: - title: Support us - description: Ts.ED is under MIT-license and is an open-source project. Many thanks to our sponsors, partners and backers who contribute to promote and support our project! - cta: - label: Become sponsor - url: /support.html - items: - - title: Premium sponsors - class: w-1/2 sm:w-1/6 px-5 py-3 - style: - maxHeight: 150px - items: - - title: Medayo - href: https://www.medayo.com - src: https://images.opencollective.com/medayo/1ef2d6b/logo/256.png - - title: They use it - class: w-1/3 sm:w-1/6 px-5 py-3 - style: - maxHeight: 80px - items: - - title: Artips - href: https://artips.fr - src: /they-use-it/artips.png - - title: Yumi.us - src: https://yumi.us/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6bc09fed-4612-4aa0-9192-225a0b3c7a30%2FYumi-logo-circle.png?table=block&id=1a875820-287a-4a97-aa40-ba3c8f3de9ae&width=250&userId=&cache=v2 - href: https://yumi.us/ + classes: + title: Support us + description: Ts.ED is under MIT-license and is an open-source project. Many thanks to our sponsors, partners and backers who contribute to promote and support our project! + cta: + label: Become sponsor + url: /support.html + items: + - title: Premium sponsors + class: w-1/2 sm:w-1/6 px-5 py-3 + style: + maxHeight: 150px + items: + - title: Medayo + href: https://www.medayo.com + src: https://images.opencollective.com/medayo/1ef2d6b/logo/256.png + - title: They use it + class: w-1/3 sm:w-1/6 px-5 py-3 + style: + maxHeight: 80px + items: + - title: Artips + href: https://artips.fr + src: /they-use-it/artips.png + - title: Yumi.us + src: https://yumi.us/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6bc09fed-4612-4aa0-9192-225a0b3c7a30%2FYumi-logo-circle.png?table=block&id=1a875820-287a-4a97-aa40-ba3c8f3de9ae&width=250&userId=&cache=v2 + href: https://yumi.us/ showContent: false frameworks: -- title: TypeScript - href: https://www.typescriptlang.org/ - src: /typescript.png -- title: Mocha - href: https://mochajs.org/ - src: /mochajs.svg -- title: Vuepress - href: https://vuepress.vuejs.org - src: https://vuepress.vuejs.org/hero.png -- title: Lerna - href: https://lerna.js.org - src: https://lerna.js.org/images/lerna-hero.svg -- title: Yarn - href: https://yarnpkg.com/ - src: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTE1NC44IDUxOCI+PHN0eWxlPi5zdDB7ZmlsbDojMmM4ZWJifS5zdDF7ZmlsbDojZmZmfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MCIgZD0iTTcxOC42IDI1Ny44Yy04IDI3LjYtMjAuOCA0Ny42LTM1LjIgNjMuNlYxODFjMC05LjYtOC40LTE3LjYtMjEuNi0xNy42LTUuNiAwLTEwLjQgMi44LTEwLjQgNi44IDAgMi44IDEuNiA1LjIgMS42IDEyLjh2NjQuNGMtNC44IDI4LTE2LjggNTQtMzIuOCA1NC0xMS42IDAtMTguNC0xMS42LTE4LjQtMzMuMiAwLTMzLjYgNC40LTUxLjIgMTEuNi04MC44IDEuNi02IDEzLjItMjItNi40LTIyLTIxLjIgMC0xOC40IDgtMjEuMiAxNC44IDAgMC0xMy40IDQ3LjYtMTMuNCA5MCAwIDM0LjggMTQuNiA1Ny42IDQxLjQgNTcuNiAxNy4yIDAgMjkuNi0xMS42IDM5LjItMjcuNlYzNTFjLTI2LjQgMjMuMi00OS42IDQzLjYtNDkuNiA4NCAwIDI1LjYgMTYgNDYgMzguNCA0NiAyMC40IDAgNDEuNi0xNC44IDQxLjYtNTYuOFYzNTVjMjEuNi0xOC44IDQ0LjgtNDIuNCA1OC40LTg4LjguNC0xLjYuNC0zLjYuNC00IDAtNy42LTcuNi0xNi40LTE0LTE2LjQtNCAwLTcuMiAzLjYtOS42IDEyem0tNzYuOCAxOThjLTYuNCAwLTEwLjQtOS42LTEwLjQtMjIgMC0yNCA4LjgtMzkuMiAyMS42LTUyLjR2NDIuOGMwIDcuNiAxLjYgMzEuNi0xMS4yIDMxLjZ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTgzMy40IDMwMWMtOS42IDAtMTMuNi05LjYtMTMuNi0xOC40di02NmMwLTkuNi04LjQtMTcuNi0yMS42LTE3LjYtNS42IDAtMTAuNCAyLjgtMTAuNCA2LjggMCAyLjggMS42IDUuMiAxLjYgMTIuOHY2MS42Qzc4NSAyOTEuNCA3NzcuOCAzMDEgNzY3IDMwMWMtMTQgMC0yMi44LTEyLTIyLjgtMzIuOCAwLTU3LjYgMzUuNi04My42IDY2LTgzLjYgNCAwIDggLjggMTEuNi44IDQgMCA1LjItMi40IDUuMi05LjIgMC0xMC40LTcuNi0xNi44LTE4LjQtMTYuOC00OC44IDAtOTUuMiA0MC44LTk1LjIgMTA3LjYgMCAzNCAxNi40IDYwLjQgNDcuNiA2MC40IDE1LjIgMCAyNi40LTcuMiAzNC40LTE2LjQgNiA5LjYgMTYuOCAxNi40IDMwLjggMTYuNCAzNC40IDAgNTAuNC0zNiA1Ny4yLTYyLjQuNC0xLjYuNC0yLjQuNC0yLjggMC03LjYtNy42LTE2LjQtMTQtMTYuNC00IDAtOCAzLjYtOS42IDEyLTMuNiAxNy42LTEwLjggNDMuMi0yNi44IDQzLjJ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTk0OSAzMjcuNGMzNC40IDAgNTAtMzYgNTcuMi02Mi40IDAtLjguNC0xLjYuNC0yLjggMC03LjYtNy42LTE2LjQtMTQtMTYuNC00IDAtOCAzLjYtOS42IDEyLTMuNiAxNy42LTEwLjQgNDMuMi0yOC44IDQzLjItMTAuOCAwLTE2LTEwLjQtMTYtMjEuNiAwLTQwIDE4LTg3LjIgMTgtOTIgMS42LTkuMi0xNC40LTIyLjQtMTkuMi0yMi40aC0yMC44Yy00IDAtOCAwLTIxLjItMS42LTQuNC0xNi40LTE1LjYtMjEuMi0yNS4yLTIxLjItMTAuNCAwLTIwIDcuMi0yMCAxOC40IDAgMTEuNiA3LjIgMjAgMTcuMiAyNS42LS40IDIwLjQtMiA1My42LTYuNCA2OS42LTMuNiAxMy42IDE3LjIgMjggMjIuNCAxMS4yIDcuMi0yMy4yIDkuNi01OCAxMC03My42aDM0LjhjLTEyLjggMzQuNC0yMCA2Mi44LTIwIDg4LjQgMCAzNS4yIDIyLjQgNDUuNiA0MS4yIDQ1LjZ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTk4NC42IDMwOS44YzAgMTQuOCAxMS4yIDE3LjYgMTkuMiAxNy42IDExLjYgMCAxMS4yLTkuNiAxMS4yLTE3LjJ2LTU4LjRjMi44LTMxLjYgMjcuNi02NiAzOS4yLTY2IDcuNiAwIDguNCAxMC40IDguNCAyMi44djgxLjJjMCAyMC40IDEyLjQgMzcuNiAzMy42IDM3LjYgMzQuNCAwIDUxLjQtMzYgNTguMi02Mi40LjQtMS42LjQtMi40LjQtMi44IDAtNy42LTcuNi0xNi40LTE0LTE2LjQtNCAwLTggMy42LTkuNiAxMi0zLjYgMTcuNi0xMS44IDQzLjItMjcuOCA0My4yLTEwLjQgMC0xMC40LTE0LjgtMTAuNC0xOC40di04Mi44YzAtMTguNC02LjQtNDAuNC0zMy4yLTQwLjQtMTkuNiAwLTM0IDE3LjItNDQuOCAzOS42di0xOGMwLTkuNi04LjQtMTcuNi0yMS42LTE3LjYtNS42IDAtMTAuNCAyLjgtMTAuNCA2LjggMCAyLjggMS42IDUuMiAxLjYgMTIuOHYxMjYuOHpNMjU5IDBjMTQzIDAgMjU5IDExNiAyNTkgMjU5UzQwMiA1MTggMjU5IDUxOCAwIDQwMiAwIDI1OSAxMTYgMCAyNTkgMHoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDM1LjIgMzM3LjVjLTEuOC0xNC4yLTEzLjgtMjQtMjkuMi0yMy44LTIzIC4zLTQyLjMgMTIuMi01NS4xIDIwLjEtNSAzLjEtOS4zIDUuNC0xMyA3LjEuOC0xMS42LjEtMjYuOC01LjktNDMuNS03LjMtMjAtMTcuMS0zMi4zLTI0LjEtMzkuNCA4LjEtMTEuOCAxOS4yLTI5IDI0LjQtNTUuNiA0LjUtMjIuNyAzLjEtNTgtNy4yLTc3LjgtMi4xLTQtNS42LTYuOS0xMC04LjEtMS44LS41LTUuMi0xLjUtMTEuOS40QzI5My4xIDk2IDI4OS42IDkzLjggMjg2LjkgOTJjLTUuNi0zLjYtMTIuMi00LjQtMTguNC0yLjEtOC4zIDMtMTUuNCAxMS0yMi4xIDI1LjItMSAyLjEtMS45IDQuMS0yLjcgNi4xLTEyLjcuOS0zMi43IDUuNS00OS42IDIzLjgtMi4xIDIuMy02LjIgNC0xMC41IDUuNmguMWMtOC44IDMuMS0xMi44IDEwLjMtMTcuNyAyMy4zLTYuOCAxOC4yLjIgMzYuMSA3LjEgNDcuNy05LjQgOC40LTIxLjkgMjEuOC0yOC41IDM3LjUtOC4yIDE5LjQtOS4xIDM4LjQtOC44IDQ4LjctNyA3LjQtMTcuOCAyMS4zLTE5IDM2LjktMS42IDIxLjggNi4zIDM2LjYgOS44IDQyIDEgMS42IDIuMSAyLjkgMy4zIDQuMi0uNCAyLjctLjUgNS42LjEgOC42IDEuMyA3IDUuNyAxMi43IDEyLjQgMTYuMyAxMy4yIDcgMzEuNiAxMCA0NS44IDIuOSA1LjEgNS40IDE0LjQgMTAuNiAzMS4zIDEwLjZoMWM0LjMgMCA1OC45LTIuOSA3NC44LTYuOCA3LjEtMS43IDEyLTQuNyAxNS4yLTcuNCAxMC4yLTMuMiAzOC40LTEyLjggNjUtMzAgMTguOC0xMi4yIDI1LjMtMTQuOCAzOS4zLTE4LjIgMTMuNi0zLjMgMjIuMS0xNS43IDIwLjQtMjkuNHptLTIzLjggMTQuN2MtMTYgMy44LTI0LjEgNy4zLTQzLjkgMjAuMi0zMC45IDIwLTY0LjcgMjkuMy02NC43IDI5LjNzLTIuOCA0LjItMTAuOSA2LjFjLTE0IDMuNC02Ni43IDYuMy03MS41IDYuNC0xMi45LjEtMjAuOC0zLjMtMjMtOC42LTYuNy0xNiA5LjYtMjMgOS42LTIzcy0zLjYtMi4yLTUuNy00LjJjLTEuOS0xLjktMy45LTUuNy00LjUtNC4zLTIuNSA2LjEtMy44IDIxLTEwLjUgMjcuNy05LjIgOS4zLTI2LjYgNi4yLTM2LjkuOC0xMS4zLTYgLjgtMjAuMS44LTIwLjFzLTYuMSAzLjYtMTEtMy44Yy00LjQtNi44LTguNS0xOC40LTcuNC0zMi43IDEuMi0xNi4zIDE5LjQtMzIuMSAxOS40LTMyLjFzLTMuMi0yNC4xIDcuMy00OC44YzkuNS0yMi41IDM1LjEtNDAuNiAzNS4xLTQwLjZzLTIxLjUtMjMuOC0xMy41LTQ1LjJjNS4yLTE0IDcuMy0xMy45IDktMTQuNSA2LTIuMyAxMS44LTQuOCAxNi4xLTkuNSAyMS41LTIzLjIgNDguOS0xOC44IDQ4LjktMTguOHMxMy0zOS41IDI1LTMxLjhjMy43IDIuNCAxNyAzMiAxNyAzMnMxNC4yLTguMyAxNS44LTUuMmM4LjYgMTYuNyA5LjYgNDguNiA1LjggNjgtNi40IDMyLTIyLjQgNDkuMi0yOC44IDYwLTEuNSAyLjUgMTcuMiAxMC40IDI5IDQzLjEgMTAuOSAyOS45IDEuMiA1NSAyLjkgNTcuOC4zLjUuNC43LjQuN3MxMi41IDEgMzcuNi0xNC41YzEzLjQtOC4zIDI5LjMtMTcuNiA0Ny40LTE3LjggMTcuNS0uMyAxOC40IDIwLjIgNS4yIDIzLjR6Ii8+PC9zdmc+ -- title: Seq - href: /appenders/seq.md - src: https://blog.datalust.co/content/images/2018/09/Seq-380px-1.png -- title: LogEntries - href: /appenders/logentries.md - src: /logentries.svg -- title: Insight - href: /appenders/insight.md - src: /rapid7.svg -- title: RabbitMQ - href: /appenders/rabbitmq.md - src: /rabbitmq.svg -- title: Loggly - href: /appenders/loggly.md - src: /loggly.svg -- title: LogStash - href: /appenders/logstash-http.md - src: /elastic-logstash.svg -- title: Slack - href: /appenders/slack.md - src: /slack.svg + - title: TypeScript + href: https://www.typescriptlang.org/ + src: /typescript.png + - title: Mocha + href: https://mochajs.org/ + src: /mochajs.svg + - title: Vuepress + href: https://vuepress.vuejs.org + src: https://vuepress.vuejs.org/hero.png + - title: Lerna + href: https://lerna.js.org + src: https://lerna.js.org/images/lerna-hero.svg + - title: Yarn + href: https://yarnpkg.com/ + src: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTE1NC44IDUxOCI+PHN0eWxlPi5zdDB7ZmlsbDojMmM4ZWJifS5zdDF7ZmlsbDojZmZmfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MCIgZD0iTTcxOC42IDI1Ny44Yy04IDI3LjYtMjAuOCA0Ny42LTM1LjIgNjMuNlYxODFjMC05LjYtOC40LTE3LjYtMjEuNi0xNy42LTUuNiAwLTEwLjQgMi44LTEwLjQgNi44IDAgMi44IDEuNiA1LjIgMS42IDEyLjh2NjQuNGMtNC44IDI4LTE2LjggNTQtMzIuOCA1NC0xMS42IDAtMTguNC0xMS42LTE4LjQtMzMuMiAwLTMzLjYgNC40LTUxLjIgMTEuNi04MC44IDEuNi02IDEzLjItMjItNi40LTIyLTIxLjIgMC0xOC40IDgtMjEuMiAxNC44IDAgMC0xMy40IDQ3LjYtMTMuNCA5MCAwIDM0LjggMTQuNiA1Ny42IDQxLjQgNTcuNiAxNy4yIDAgMjkuNi0xMS42IDM5LjItMjcuNlYzNTFjLTI2LjQgMjMuMi00OS42IDQzLjYtNDkuNiA4NCAwIDI1LjYgMTYgNDYgMzguNCA0NiAyMC40IDAgNDEuNi0xNC44IDQxLjYtNTYuOFYzNTVjMjEuNi0xOC44IDQ0LjgtNDIuNCA1OC40LTg4LjguNC0xLjYuNC0zLjYuNC00IDAtNy42LTcuNi0xNi40LTE0LTE2LjQtNCAwLTcuMiAzLjYtOS42IDEyem0tNzYuOCAxOThjLTYuNCAwLTEwLjQtOS42LTEwLjQtMjIgMC0yNCA4LjgtMzkuMiAyMS42LTUyLjR2NDIuOGMwIDcuNiAxLjYgMzEuNi0xMS4yIDMxLjZ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTgzMy40IDMwMWMtOS42IDAtMTMuNi05LjYtMTMuNi0xOC40di02NmMwLTkuNi04LjQtMTcuNi0yMS42LTE3LjYtNS42IDAtMTAuNCAyLjgtMTAuNCA2LjggMCAyLjggMS42IDUuMiAxLjYgMTIuOHY2MS42Qzc4NSAyOTEuNCA3NzcuOCAzMDEgNzY3IDMwMWMtMTQgMC0yMi44LTEyLTIyLjgtMzIuOCAwLTU3LjYgMzUuNi04My42IDY2LTgzLjYgNCAwIDggLjggMTEuNi44IDQgMCA1LjItMi40IDUuMi05LjIgMC0xMC40LTcuNi0xNi44LTE4LjQtMTYuOC00OC44IDAtOTUuMiA0MC44LTk1LjIgMTA3LjYgMCAzNCAxNi40IDYwLjQgNDcuNiA2MC40IDE1LjIgMCAyNi40LTcuMiAzNC40LTE2LjQgNiA5LjYgMTYuOCAxNi40IDMwLjggMTYuNCAzNC40IDAgNTAuNC0zNiA1Ny4yLTYyLjQuNC0xLjYuNC0yLjQuNC0yLjggMC03LjYtNy42LTE2LjQtMTQtMTYuNC00IDAtOCAzLjYtOS42IDEyLTMuNiAxNy42LTEwLjggNDMuMi0yNi44IDQzLjJ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTk0OSAzMjcuNGMzNC40IDAgNTAtMzYgNTcuMi02Mi40IDAtLjguNC0xLjYuNC0yLjggMC03LjYtNy42LTE2LjQtMTQtMTYuNC00IDAtOCAzLjYtOS42IDEyLTMuNiAxNy42LTEwLjQgNDMuMi0yOC44IDQzLjItMTAuOCAwLTE2LTEwLjQtMTYtMjEuNiAwLTQwIDE4LTg3LjIgMTgtOTIgMS42LTkuMi0xNC40LTIyLjQtMTkuMi0yMi40aC0yMC44Yy00IDAtOCAwLTIxLjItMS42LTQuNC0xNi40LTE1LjYtMjEuMi0yNS4yLTIxLjItMTAuNCAwLTIwIDcuMi0yMCAxOC40IDAgMTEuNiA3LjIgMjAgMTcuMiAyNS42LS40IDIwLjQtMiA1My42LTYuNCA2OS42LTMuNiAxMy42IDE3LjIgMjggMjIuNCAxMS4yIDcuMi0yMy4yIDkuNi01OCAxMC03My42aDM0LjhjLTEyLjggMzQuNC0yMCA2Mi44LTIwIDg4LjQgMCAzNS4yIDIyLjQgNDUuNiA0MS4yIDQ1LjZ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTk4NC42IDMwOS44YzAgMTQuOCAxMS4yIDE3LjYgMTkuMiAxNy42IDExLjYgMCAxMS4yLTkuNiAxMS4yLTE3LjJ2LTU4LjRjMi44LTMxLjYgMjcuNi02NiAzOS4yLTY2IDcuNiAwIDguNCAxMC40IDguNCAyMi44djgxLjJjMCAyMC40IDEyLjQgMzcuNiAzMy42IDM3LjYgMzQuNCAwIDUxLjQtMzYgNTguMi02Mi40LjQtMS42LjQtMi40LjQtMi44IDAtNy42LTcuNi0xNi40LTE0LTE2LjQtNCAwLTggMy42LTkuNiAxMi0zLjYgMTcuNi0xMS44IDQzLjItMjcuOCA0My4yLTEwLjQgMC0xMC40LTE0LjgtMTAuNC0xOC40di04Mi44YzAtMTguNC02LjQtNDAuNC0zMy4yLTQwLjQtMTkuNiAwLTM0IDE3LjItNDQuOCAzOS42di0xOGMwLTkuNi04LjQtMTcuNi0yMS42LTE3LjYtNS42IDAtMTAuNCAyLjgtMTAuNCA2LjggMCAyLjggMS42IDUuMiAxLjYgMTIuOHYxMjYuOHpNMjU5IDBjMTQzIDAgMjU5IDExNiAyNTkgMjU5UzQwMiA1MTggMjU5IDUxOCAwIDQwMiAwIDI1OSAxMTYgMCAyNTkgMHoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDM1LjIgMzM3LjVjLTEuOC0xNC4yLTEzLjgtMjQtMjkuMi0yMy44LTIzIC4zLTQyLjMgMTIuMi01NS4xIDIwLjEtNSAzLjEtOS4zIDUuNC0xMyA3LjEuOC0xMS42LjEtMjYuOC01LjktNDMuNS03LjMtMjAtMTcuMS0zMi4zLTI0LjEtMzkuNCA4LjEtMTEuOCAxOS4yLTI5IDI0LjQtNTUuNiA0LjUtMjIuNyAzLjEtNTgtNy4yLTc3LjgtMi4xLTQtNS42LTYuOS0xMC04LjEtMS44LS41LTUuMi0xLjUtMTEuOS40QzI5My4xIDk2IDI4OS42IDkzLjggMjg2LjkgOTJjLTUuNi0zLjYtMTIuMi00LjQtMTguNC0yLjEtOC4zIDMtMTUuNCAxMS0yMi4xIDI1LjItMSAyLjEtMS45IDQuMS0yLjcgNi4xLTEyLjcuOS0zMi43IDUuNS00OS42IDIzLjgtMi4xIDIuMy02LjIgNC0xMC41IDUuNmguMWMtOC44IDMuMS0xMi44IDEwLjMtMTcuNyAyMy4zLTYuOCAxOC4yLjIgMzYuMSA3LjEgNDcuNy05LjQgOC40LTIxLjkgMjEuOC0yOC41IDM3LjUtOC4yIDE5LjQtOS4xIDM4LjQtOC44IDQ4LjctNyA3LjQtMTcuOCAyMS4zLTE5IDM2LjktMS42IDIxLjggNi4zIDM2LjYgOS44IDQyIDEgMS42IDIuMSAyLjkgMy4zIDQuMi0uNCAyLjctLjUgNS42LjEgOC42IDEuMyA3IDUuNyAxMi43IDEyLjQgMTYuMyAxMy4yIDcgMzEuNiAxMCA0NS44IDIuOSA1LjEgNS40IDE0LjQgMTAuNiAzMS4zIDEwLjZoMWM0LjMgMCA1OC45LTIuOSA3NC44LTYuOCA3LjEtMS43IDEyLTQuNyAxNS4yLTcuNCAxMC4yLTMuMiAzOC40LTEyLjggNjUtMzAgMTguOC0xMi4yIDI1LjMtMTQuOCAzOS4zLTE4LjIgMTMuNi0zLjMgMjIuMS0xNS43IDIwLjQtMjkuNHptLTIzLjggMTQuN2MtMTYgMy44LTI0LjEgNy4zLTQzLjkgMjAuMi0zMC45IDIwLTY0LjcgMjkuMy02NC43IDI5LjNzLTIuOCA0LjItMTAuOSA2LjFjLTE0IDMuNC02Ni43IDYuMy03MS41IDYuNC0xMi45LjEtMjAuOC0zLjMtMjMtOC42LTYuNy0xNiA5LjYtMjMgOS42LTIzcy0zLjYtMi4yLTUuNy00LjJjLTEuOS0xLjktMy45LTUuNy00LjUtNC4zLTIuNSA2LjEtMy44IDIxLTEwLjUgMjcuNy05LjIgOS4zLTI2LjYgNi4yLTM2LjkuOC0xMS4zLTYgLjgtMjAuMS44LTIwLjFzLTYuMSAzLjYtMTEtMy44Yy00LjQtNi44LTguNS0xOC40LTcuNC0zMi43IDEuMi0xNi4zIDE5LjQtMzIuMSAxOS40LTMyLjFzLTMuMi0yNC4xIDcuMy00OC44YzkuNS0yMi41IDM1LjEtNDAuNiAzNS4xLTQwLjZzLTIxLjUtMjMuOC0xMy41LTQ1LjJjNS4yLTE0IDcuMy0xMy45IDktMTQuNSA2LTIuMyAxMS44LTQuOCAxNi4xLTkuNSAyMS41LTIzLjIgNDguOS0xOC44IDQ4LjktMTguOHMxMy0zOS41IDI1LTMxLjhjMy43IDIuNCAxNyAzMiAxNyAzMnMxNC4yLTguMyAxNS44LTUuMmM4LjYgMTYuNyA5LjYgNDguNiA1LjggNjgtNi40IDMyLTIyLjQgNDkuMi0yOC44IDYwLTEuNSAyLjUgMTcuMiAxMC40IDI5IDQzLjEgMTAuOSAyOS45IDEuMiA1NSAyLjkgNTcuOC4zLjUuNC43LjQuN3MxMi41IDEgMzcuNi0xNC41YzEzLjQtOC4zIDI5LjMtMTcuNiA0Ny40LTE3LjggMTcuNS0uMyAxOC40IDIwLjIgNS4yIDIzLjR6Ii8+PC9zdmc+ + - title: Seq + href: /appenders/seq.md + src: https://blog.datalust.co/content/images/2018/09/Seq-380px-1.png + - title: LogEntries + href: /appenders/logentries.md + src: /logentries.svg + - title: Insight + href: /appenders/insight.md + src: /rapid7.svg + - title: RabbitMQ + href: /appenders/rabbitmq.md + src: /rabbitmq.svg + - title: Loggly + href: /appenders/loggly.md + src: /loggly.svg + - title: LogStash + href: /appenders/logstash-http.md + src: /elastic-logstash.svg + - title: Slack + href: /appenders/slack.md + src: /slack.svg --- + ::: slot hero-brand +
Ts.ED Logger
A Node.js and TypeScript multi channel logger -::: +::: ::: slot hero-slogan Manage your logs of your **application.** #Colored, #Console, #Configurable, #Extensible @@ -123,4 +125,4 @@ What is it ? Ts.Logger is a Node.js and TypeScript logger with multi channel support and configurable. ::: - \ No newline at end of file + diff --git a/docs/support.md b/docs/support.md index c48b5b57..8ae5ab79 100644 --- a/docs/support.md +++ b/docs/support.md @@ -5,11 +5,11 @@ This framework is a result of the long road, full of sleepless nights, working a ## How can you help? -Ts.ED doesn't have a company that sits behind and is continuously paying for hours spent on the development. +Ts.ED doesn't have a company that sits behind and is continuously paying for hours spent on the development. + +I fully rely on the **goodness** of the community. +However, I would love to create a team around this framework to improve and maintain it. - I fully rely on the **goodness** of the community. - However, I would love to create a team around this framework to improve and maintain it. - In order to help me, I run few supporting platforms: - become a backer or sponsor on [OpenCollective](https://opencollective.com/tsed) @@ -17,8 +17,8 @@ In order to help me, I run few supporting platforms: -If you fell in love with Ts.ED, or you run a business which is using Ts.ED, consider sponsoring its development -to ensure that the project which your product relies on is actively maintained and improved. +If you fell in love with Ts.ED, or you run a business which is using Ts.ED, consider sponsoring its development +to ensure that the project which your product relies on is actively maintained and improved. Also, your support could help me and the future teams to work more on content that benefits whole Ts.ED community. ## Our team members diff --git a/lerna.json b/lerna.json index c0aebe84..2b6636e7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,15 +1,11 @@ { "npmClient": "yarn", "useWorkspaces": true, - "packages": [ - "packages/*" - ], + "packages": ["packages/*"], "version": "6.0.2", "command": { "bootstrap": { - "npmClientArgs": [ - "--no-package-lock" - ] + "npmClientArgs": ["--no-package-lock"] } } } diff --git a/lint-staged.config.js b/lint-staged.config.js new file mode 100644 index 00000000..f63bf136 --- /dev/null +++ b/lint-staged.config.js @@ -0,0 +1,4 @@ +module.exports = { + "**/*.{ts,js}": ["eslint --fix"], + "**/*.{ts,js,json,md,yml,yaml}": ["prettier --write"] +}; diff --git a/package.json b/package.json index f811c71c..bd398ef9 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "test": "yarn clean && yarn test:lint && yarn test:coverage", "test:unit": "cross-env NODE_ENV=test mocha", "test:coverage": "cross-env NODE_ENV=test nyc mocha", - "test:lint": "tslint --project tsconfig.json", - "test:lint:fix": "tslint --project tsconfig.json --fix", + "test:lint": "eslint '**/*.{ts,js}'", + "test:lint:fix": "yarn test:lint --fix", "coveralls": "nyc report --reporter=text-lcov | coveralls", "build": "monorepo build --verbose", "sync:packages": "monorepo sync packages", @@ -19,9 +19,10 @@ "api:build": "lerna run build && yarn tsdoc", "vuepress:build": "cross-env NODE_ENV=production vuepress build docs", "vuepress:serve": "vuepress dev docs", - "prettier": "prettier '{packages,test}/**/*.ts' --write", + "prettier": "prettier '**/*.{ts,js,json,md,yml,yaml}' --write", "release": "semantic-release", - "release:dryRun": "semantic-release --dry-run" + "release:dryRun": "semantic-release --dry-run", + "prepare": "is-ci || husky install" }, "repository": { "type": "git", @@ -50,6 +51,8 @@ "tslib": "2.3.0" }, "devDependencies": { + "@commitlint/cli": "^16.1.0", + "@commitlint/config-conventional": "^16.0.0", "@tsed/markdown-it-symbols": "^3.14.2", "@tsed/monorepo-utils": "1.20.1", "@typedproject/ts-doc": "4.0.13", @@ -59,37 +62,37 @@ "@types/node": "17.0.19", "@types/sinon": "^9.0.8", "@types/sinon-chai": "^3.2.2", + "@typescript-eslint/eslint-plugin": "^5.11.0", + "@typescript-eslint/parser": "^5.11.0", "barrelsby": "2.3.2", "chai": "^4.2.0", "chai-as-promised": "^7.0.0", "concurrently": "^6.0.0", "coveralls": "^3.1.0", "cross-env": "7.0.3", + "eslint": "^7.10.0", + "eslint-config-prettier": "8.3.0", + "eslint-plugin-mocha": "10.0.3", + "eslint-plugin-prettier": "4.0.0", "gflow": "^5.1.2", - "husky": "^5.1.3", - "lint-staged": "^10.5.1", + "husky": "^7.0.4", + "is-ci": "^3.0.1", + "lint-staged": "^12.3.2", "mocha": "8.3.2", "nyc": "^15.1.0", - "prettier": "^2.2.0", + "prettier": "2.5.1", "semantic-release": "^17.2.4", "sinon": "^9.2.1", "sinon-chai": "^3.3.0", "microbundle": "0.13.0", "source-map-support": "0.5.19", "ts-node": "10.5.0", - "tsconfig-paths": "3.9.0", - "tslint": "^6.1.3", + "tsconfig-paths": "3.12.0", "typescript": "4.5.5", "vue-analytics": "5.22.1", "vuepress": "^1.8.2", "vuepress-theme-tsed": "^3.14.3" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged", - "post-commit": "git update-index --again" - } - }, "directories": { "packages": "packages", "test": "test" diff --git a/packages/file/package.json b/packages/file/package.json index 7e54e095..da3aa880 100644 --- a/packages/file/package.json +++ b/packages/file/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/file/readme.md b/packages/file/readme.md index 58bfee0b..c5c0556e 100644 --- a/packages/file/readme.md +++ b/packages/file/readme.md @@ -55,11 +55,11 @@ import "@tsed/logger-file"; const logger = new Logger("loggerName"); logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log' + type: "file", + filename: "all-the-logs.log" }); -logger.debug('I will be logged in all-the-logs.log'); +logger.debug("I will be logged in all-the-logs.log"); ``` This example will result in a single log file (all-the-logs.log) containing the log messages. @@ -73,11 +73,11 @@ import "@tsed/logger-file"; const logger = new Logger("loggerName"); logger.appenders.set("everything", { - type: 'file', - filename: 'all-the-logs.log', - maxLogSize: 10485760, - backups: 3, - compress: true + type: "file", + filename: "all-the-logs.log", + maxLogSize: 10485760, + backups: 3, + compress: true }); ``` @@ -89,16 +89,15 @@ When `all-the-logs.log` reaches 10Mb again, then all-the-logs.log.1.gz will be r ## Example with date rolling ```typescript -import { Logger } from '@tsed/logger-file'; +import {Logger} from "@tsed/logger-file"; import "@tsed/logger-file"; -export const logger = new Logger('Log Example'); - -logger.appenders - .set('file', { - type: 'file', - filename: `${__dirname}/../logs/myfile.log`, - pattern: '.yyyy-MM-dd' - }); +export const logger = new Logger("Log Example"); + +logger.appenders.set("file", { + type: "file", + filename: `${__dirname}/../logs/myfile.log`, + pattern: ".yyyy-MM-dd" +}); ``` ## Backers @@ -107,7 +106,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/file/tsconfig.compile.esm.json b/packages/file/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/file/tsconfig.compile.esm.json +++ b/packages/file/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/file/tsconfig.compile.json b/packages/file/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/file/tsconfig.compile.json +++ b/packages/file/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/insight/package.json b/packages/insight/package.json index f4e4a75a..530b6c0f 100644 --- a/packages/insight/package.json +++ b/packages/insight/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/insight/readme.md b/packages/insight/readme.md index fed67cd9..88898d6b 100644 --- a/packages/insight/readme.md +++ b/packages/insight/readme.md @@ -27,9 +27,9 @@ npm install --save @tsed/logger-insight ## Configuration -* `type` - `insight` -* `options.token` - Insight token -* `options.region` - The region of ingestion endpoint to be used. Examples: `eu`, `us` etc. +- `type` - `insight` +- `options.token` - Insight token +- `options.region` - The region of ingestion endpoint to be used. Examples: `eu`, `us` etc. See all available options for LogEntries [here](https://www.npmjs.com/package/r7insight_node). @@ -37,12 +37,12 @@ See all available options for LogEntries [here](https://www.npmjs.com/package/r7 ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-insight" +import "@tsed/logger-insight"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "insight", + type: "insight", level: ["info"], options: { token: "the token", @@ -58,7 +58,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/insight/tsconfig.compile.esm.json b/packages/insight/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/insight/tsconfig.compile.esm.json +++ b/packages/insight/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/insight/tsconfig.compile.json b/packages/insight/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/insight/tsconfig.compile.json +++ b/packages/insight/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logentries/package.json b/packages/logentries/package.json index 6cc8b19c..97f7a5e2 100644 --- a/packages/logentries/package.json +++ b/packages/logentries/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/logentries/readme.md b/packages/logentries/readme.md index 765d7c2b..5d0e162a 100644 --- a/packages/logentries/readme.md +++ b/packages/logentries/readme.md @@ -32,8 +32,8 @@ npm install --save @tsed/logger-logentries ## Configuration -* `type` - `logentries` -* `options.token` - LogEntries token +- `type` - `logentries` +- `options.token` - LogEntries token See all available options for LogEntries [here](https://www.npmjs.com/package/le_node). @@ -41,12 +41,12 @@ See all available options for LogEntries [here](https://www.npmjs.com/package/le ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-logentries" +import "@tsed/logger-logentries"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logentries", + type: "logentries", level: ["info"], options: { token: "the token" @@ -61,7 +61,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/logentries/tsconfig.compile.esm.json b/packages/logentries/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/logentries/tsconfig.compile.esm.json +++ b/packages/logentries/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logentries/tsconfig.compile.json b/packages/logentries/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/logentries/tsconfig.compile.json +++ b/packages/logentries/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logger/package.json b/packages/logger/package.json index d3a5252a..e9f07aeb 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -46,4 +46,4 @@ }, "devDependencies": {}, "peerDependencies": {} -} \ No newline at end of file +} diff --git a/packages/logger/readme.md b/packages/logger/readme.md index f916d59d..4fafc3ee 100644 --- a/packages/logger/readme.md +++ b/packages/logger/readme.md @@ -1,8 +1,8 @@ -# @tsed/logger +# @tsed/logger [![Build Status](https://travis-ci.org/tsedio/logger.svg?branch=master)](https://travis-ci.org/tsedio/logger) [![Coverage Status](https://coveralls.io/repos/github/tsedio/logger/badge.svg?branch=master)](https://coveralls.io/github/tsedio/logger?branch=master) -[![TypeScript](https://badges.frapsoft.com/typescript/love/typescript.svg?v=100)](https://github.com/ellerbrock/typescript-badges/) +[![TypeScript](https://badges.frapsoft.com/typescript/love/typescript.svg?v=100)](https://github.com/ellerbrock/typescript-badges/) [![npm version](https://badge.fury.io/js/%40tsed%2Flogger.svg)](https://badge.fury.io/js/%40tsed%2Flogger) [![Dependencies](https://david-dm.org/tsedio/logger.svg)](https://david-dm.org/tsedio/logger#info=dependencies) [![img](https://david-dm.org/tsedio/logger/dev-status.svg)](https://david-dm.org/tsedio/logger/#info=devDependencies) @@ -17,10 +17,10 @@ A multi channel logger written in TypeScript. ## Features -* Colored console logging to stdout or stderr, -* File appender, with configurable log rolling based on file size or date -* Configurable log message layout/patterns -* Different log levels for different log categories (make some parts of your app log as DEBUG, others only ERRORS, etc.) +- Colored console logging to stdout or stderr, +- File appender, with configurable log rolling based on file size or date +- Configurable log message layout/patterns +- Different log levels for different log categories (make some parts of your app log as DEBUG, others only ERRORS, etc.) Please refer to the [documentation](https://tsedio.github.io/logger/) for more details. @@ -49,36 +49,38 @@ $log.debug("Some debug messages"); ``` Will be produce the following log output: + ``` [2017-06-17 11:43:37.987] [DEBUG] [APP] - Some debug messages ``` Create your custom logger: + ```typescript import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); logger.appenders - .set({ - type: "stdout", - levels: ["debug", "info", "trace"] - }) - .set({ - type: "stderr", - levels: ["fatal", "error", "warn"], - layout: { - type: "pattern", - pattern: "%d %p %c %X{user} %m%n" - } - }) - .set({ - type: "file", - filename: `${__dirname}/app.log`, - layout:{ - type: "json", - separator: "," - } - }) + .set({ + type: "stdout", + levels: ["debug", "info", "trace"] + }) + .set({ + type: "stderr", + levels: ["fatal", "error", "warn"], + layout: { + type: "pattern", + pattern: "%d %p %c %X{user} %m%n" + } + }) + .set({ + type: "file", + filename: `${__dirname}/app.log`, + layout: { + type: "json", + separator: "," + } + }); ``` ## Backers @@ -87,7 +89,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/logger/src/core/LogContext.ts b/packages/logger/src/core/LogContext.ts index b0258c5c..10fd229b 100644 --- a/packages/logger/src/core/LogContext.ts +++ b/packages/logger/src/core/LogContext.ts @@ -7,4 +7,4 @@ export class LogContext extends Map { }; }, {}); } -} \ No newline at end of file +} diff --git a/packages/logger/src/core/LogEvent.ts b/packages/logger/src/core/LogEvent.ts index 0d853f5d..ce80bd31 100644 --- a/packages/logger/src/core/LogEvent.ts +++ b/packages/logger/src/core/LogEvent.ts @@ -10,8 +10,7 @@ export class LogEvent { * @param {Array} _data objects to log * @param _context */ - constructor(private _categoryName: string, private _level: LogLevel, private _data: any[], private _context: LogContext) { - } + constructor(private _categoryName: string, private _level: LogLevel, private _data: any[], private _context: LogContext) {} private _startTime = new Date(); diff --git a/packages/logger/src/core/LogLevel.ts b/packages/logger/src/core/LogLevel.ts index 6d8c695d..cc857f65 100644 --- a/packages/logger/src/core/LogLevel.ts +++ b/packages/logger/src/core/LogLevel.ts @@ -1,4 +1,3 @@ - export class LogLevel { constructor(readonly level: number, readonly levelStr: string) { this.level = level; diff --git a/packages/logger/src/logger/class/Logger.ts b/packages/logger/src/logger/class/Logger.ts index 83b8f919..b2a6bdcf 100644 --- a/packages/logger/src/logger/class/Logger.ts +++ b/packages/logger/src/logger/class/Logger.ts @@ -53,7 +53,8 @@ export class Logger { public static createStack(): string { const stack: string = new Error().stack!.replace("Error\n", ""); - return stack.split("\n") + return stack + .split("\n") .filter((line, index) => index >= 2) .join("\n"); } @@ -141,8 +142,8 @@ export class Logger { const promises = this.appenders .toArray() - .filter(appender => !!appender.instance.shutdown) - .map(appender => appender.instance.shutdown()); + .filter((appender) => !!appender.instance.shutdown) + .map((appender) => appender.instance.shutdown()); return Promise.all(promises); } diff --git a/packages/logger/src/logger/class/LoggerAppenders.ts b/packages/logger/src/logger/class/LoggerAppenders.ts index 498ac4fc..64c17b13 100644 --- a/packages/logger/src/logger/class/LoggerAppenders.ts +++ b/packages/logger/src/logger/class/LoggerAppenders.ts @@ -92,7 +92,7 @@ export class LoggerAppenders { */ toArray() { const array: any[] = []; - this._appenders.forEach(o => array.push(o)); + this._appenders.forEach((o) => array.push(o)); return array; } @@ -108,10 +108,10 @@ export class LoggerAppenders { } const list = this.toArray() - .filter(appender => + .filter((appender) => appender.config.levels ? appender.config.levels.find((level: string) => level.toUpperCase() === loggingLevel.toString()) : true ) - .map(appender => appender.instance); + .map((appender) => appender.instance); this._lvls.set(loggingLevel.toString(), list); diff --git a/packages/logger/src/logger/utils/tableUtils.ts b/packages/logger/src/logger/utils/tableUtils.ts index 33691a8f..44e54c6b 100644 --- a/packages/logger/src/logger/utils/tableUtils.ts +++ b/packages/logger/src/logger/utils/tableUtils.ts @@ -64,7 +64,7 @@ export function buildEndLine(fields: any, settings: ITableSettings) { export function buildLine(fields: any, settings: ITableSettings, char = "─") { let line = ""; - Object.keys(fields).forEach(key => { + Object.keys(fields).forEach((key) => { line += "│"; line += charRepeater(fields[key] + 2 * settings.padding!, char); }); @@ -79,7 +79,7 @@ export function buildLine(fields: any, settings: ITableSettings, char = "─") { export function buildLineData(scope: any, fields: any, settings: ITableSettings) { let line = ""; - Object.keys(fields).forEach(key => { + Object.keys(fields).forEach((key) => { line += "│ "; line += scope[key]; line += charRepeater(fields[key] + 2 * (settings.padding! - 1) - scope[key].length, " "); @@ -102,17 +102,17 @@ export function drawTable(list: any[], settings: ITableSettings = {}): string { if (settings.header === undefined) { settings.header = {}; - Object.keys(list[0]).forEach(key => (settings.header![key] = key)); + Object.keys(list[0]).forEach((key) => (settings.header![key] = key)); } const fields: any = {}; // Calculate width for each column - Object.keys(settings.header).forEach(key => (fields[key] = settings.header![key].length)); + Object.keys(settings.header).forEach((key) => (fields[key] = settings.header![key].length)); - list.forEach(route => { - Object.keys(fields).forEach(key => (fields[key] = Math.max(("" + route[key]).length, fields[key]))); + list.forEach((route) => { + Object.keys(fields).forEach((key) => (fields[key] = Math.max(("" + route[key]).length, fields[key]))); }); let output = ""; @@ -120,7 +120,7 @@ export function drawTable(list: any[], settings: ITableSettings = {}): string { output += buildStartLine(fields, settings) + "\n"; output += buildLineData(settings.header, fields, settings) + "\n"; - list.forEach(scope => { + list.forEach((scope) => { output += buildLine(fields, settings) + "\n"; output += buildLineData(scope, fields, settings) + "\n"; }); diff --git a/packages/logger/test/layouts/components/JsonLayout.spec.ts b/packages/logger/test/layouts/components/JsonLayout.spec.ts index 649d578b..254df59b 100644 --- a/packages/logger/test/layouts/components/JsonLayout.spec.ts +++ b/packages/logger/test/layouts/components/JsonLayout.spec.ts @@ -22,7 +22,7 @@ describe("JsonLayout", () => { // @ts-ignore expect(result).to.eq( JSON.stringify({ - "user":"romain", + user: "romain", startTime: logEvent.startTime, categoryName: "category", level: "DEBUG", @@ -38,10 +38,17 @@ describe("JsonLayout", () => { const context = new LogContext(); context.set("user", "romain"); - const logEvent = new LogEvent("category", levels().DEBUG, [{ - test: "test", - data: ["hello"] - }], context); + const logEvent = new LogEvent( + "category", + levels().DEBUG, + [ + { + test: "test", + data: ["hello"] + } + ], + context + ); // @ts-ignore logEvent._startTime = new Date("2017-06-18 22:29:38.234"); const result = layout.transform(logEvent); @@ -49,7 +56,7 @@ describe("JsonLayout", () => { // @ts-ignore expect(result).to.eq( JSON.stringify({ - "user":"romain", + user: "romain", startTime: logEvent.startTime, categoryName: "category", level: "DEBUG", @@ -77,7 +84,7 @@ describe("JsonLayout", () => { it("should return a formatted string", () => { expect(result).to.eq( JSON.stringify({ - "user":"romain", + user: "romain", startTime: logEvent._startTime, categoryName: "category", level: "DEBUG", diff --git a/packages/logger/test/layouts/components/PatternLayout.spec.ts b/packages/logger/test/layouts/components/PatternLayout.spec.ts index b7760a5a..6d0625cd 100644 --- a/packages/logger/test/layouts/components/PatternLayout.spec.ts +++ b/packages/logger/test/layouts/components/PatternLayout.spec.ts @@ -99,7 +99,7 @@ describe("PatternLayout", () => { }); it("%j should output the json formatted data", () => { - testPattern(tokens, "%j", "[\"this is a test\"]"); + testPattern(tokens, "%j", '["this is a test"]'); }); it("%c should output the log category", () => { diff --git a/packages/logger/test/logger/class/Logger.spec.ts b/packages/logger/test/logger/class/Logger.spec.ts index 313dc31f..7d148f18 100644 --- a/packages/logger/test/logger/class/Logger.spec.ts +++ b/packages/logger/test/logger/class/Logger.spec.ts @@ -63,9 +63,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.to.deep.eq(["test"]); + expect(arg.data).to.be.an("array").and.to.deep.eq(["test"]); }); it("should have a startTime", () => { @@ -105,9 +103,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.to.deep.eq(["test"]); + expect(arg.data).to.be.an("array").and.to.deep.eq(["test"]); }); it("should have a startTime", () => { @@ -147,9 +143,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.to.deep.eq(["test"]); + expect(arg.data).to.be.an("array").and.to.deep.eq(["test"]); }); it("should have a startTime", () => { @@ -189,9 +183,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.length(2); + expect(arg.data).to.be.an("array").and.length(2); }); it("should have a startTime", () => { @@ -231,9 +223,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.to.deep.eq(["test"]); + expect(arg.data).to.be.an("array").and.to.deep.eq(["test"]); }); it("should have a startTime", () => { @@ -273,9 +263,7 @@ describe("Logger", () => { }); it("should have a data", () => { - expect(arg.data) - .to.be.an("array") - .and.to.deep.eq(["test"]); + expect(arg.data).to.be.an("array").and.to.deep.eq(["test"]); }); it("should have a startTime", () => { diff --git a/packages/logger/test/logger/class/LoggerAppenders.spec.ts b/packages/logger/test/logger/class/LoggerAppenders.spec.ts index c1e3899c..0d52feee 100644 --- a/packages/logger/test/logger/class/LoggerAppenders.spec.ts +++ b/packages/logger/test/logger/class/LoggerAppenders.spec.ts @@ -47,23 +47,17 @@ describe("LoggerAppenders", () => { it("when cleared should have no appenders", () => { cachedAppenders.clear(); result = cachedAppenders.byLogLevel(levels().DEBUG); - expect(result) - .to.be.an("array") - .lengthOf(0); + expect(result).to.be.an("array").lengthOf(0); }); it("when deleted should have no appenders", () => { cachedAppenders.delete("custom"); result = cachedAppenders.byLogLevel(levels().DEBUG); - expect(result) - .to.be.an("array") - .lengthOf(0); + expect(result).to.be.an("array").lengthOf(0); }); it("when deleted should have no appenders", () => { cachedAppenders.set("custom2", {type: "test2", levels: ["debug"]}); result = cachedAppenders.byLogLevel(levels().DEBUG); - expect(result) - .to.be.an("array") - .lengthOf(2); + expect(result).to.be.an("array").lengthOf(2); }); }); }); @@ -93,17 +87,13 @@ describe("LoggerAppenders", () => { appenders.forEach((o: any) => result.push(o)); }); it("should return all elements", () => { - expect(result) - .to.be.an("array") - .and.length(1); + expect(result).to.be.an("array").and.length(1); }); }); describe("toArray()", () => { it("should return all elements", () => { - expect(appenders.toArray()) - .to.be.an("array") - .and.length(1); + expect(appenders.toArray()).to.be.an("array").and.length(1); }); }); diff --git a/packages/logger/test/logger/class/logger.integration.spec.ts b/packages/logger/test/logger/class/logger.integration.spec.ts index 3a1b2043..9030e719 100644 --- a/packages/logger/test/logger/class/logger.integration.spec.ts +++ b/packages/logger/test/logger/class/logger.integration.spec.ts @@ -1,6 +1,5 @@ import {Logger} from "../../../src"; - describe("Logger integration", () => { it("should log only on trace", () => { const logger = new Logger("test"); @@ -21,7 +20,6 @@ describe("Logger integration", () => { level: ["trace", "fatal", "error", "warn"] }); - logger.info("==="); }); -}); \ No newline at end of file +}); diff --git a/packages/logger/tsconfig.compile.esm.json b/packages/logger/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/logger/tsconfig.compile.esm.json +++ b/packages/logger/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logger/tsconfig.compile.json b/packages/logger/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/logger/tsconfig.compile.json +++ b/packages/logger/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/loggly/package.json b/packages/loggly/package.json index 3d04ea54..b25cec1e 100644 --- a/packages/loggly/package.json +++ b/packages/loggly/package.json @@ -50,4 +50,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/loggly/readme.md b/packages/loggly/readme.md index c4280a0c..b47eef78 100644 --- a/packages/loggly/readme.md +++ b/packages/loggly/readme.md @@ -17,7 +17,7 @@ A package of Ts.ED logger framework. ## Features -Sends logging events to [Loggly](https://www.loggly.com), optionally adding tags. +Sends logging events to [Loggly](https://www.loggly.com), optionally adding tags. This appender uses [node-loggly-bulk](https://www.npmjs.com/package/node-loggly-bulk). Consult the docs for node-loggly-bulk, or loggly itself, if you want more information on the configuration options below. @@ -29,13 +29,13 @@ npm install --save @tsed/logger-loggly ## Configuration -* `type` - `loggly` -* `options.token` - `string` - your really long input token -* `options.subdomain` - `string` - your subdomain -* `options.auth` - `object` (optional) - authentication details - * `username` - `string` - * `password` - `string` -* `options.tags` - `Array` (optional) - tags to include in every log message +- `type` - `loggly` +- `options.token` - `string` - your really long input token +- `options.subdomain` - `string` - your subdomain +- `options.auth` - `object` (optional) - authentication details + - `username` - `string` + - `password` - `string` +- `options.tags` - `Array` (optional) - tags to include in every log message See all available options for Loggly [here](https://www.npmjs.com/package/node-loggly-bulk). @@ -48,16 +48,16 @@ import "@tsed/logger-loggly"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "loggly", + type: "loggly", level: ["info"], options: { - token: 'somethinglong', - subdomain: 'your.subdomain', - tags: [ 'tag1' ] + token: "somethinglong", + subdomain: "your.subdomain", + tags: ["tag1"] } }); -logger.info({ tags: ['my-tag-1', 'my-tag-2'] }, 'Some message'); +logger.info({tags: ["my-tag-1", "my-tag-2"]}, "Some message"); ``` This will result in a log message being sent to loggly with the tags `tag1`, `my-tag-1`, `my-tag-2`. @@ -68,7 +68,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/loggly/src/LogglyAppender.ts b/packages/loggly/src/LogglyAppender.ts index fba3a27f..71223ddb 100644 --- a/packages/loggly/src/LogglyAppender.ts +++ b/packages/loggly/src/LogglyAppender.ts @@ -11,16 +11,19 @@ function numKeys(obj: any) { } function processTags(msgListArgs: any[]) { - const msgList = (msgListArgs.length === 1 ? [msgListArgs[0]] : msgListArgs); + const msgList = msgListArgs.length === 1 ? [msgListArgs[0]] : msgListArgs; - return msgList.reduce((accumulate, element) => { - if (isAnyObject(element) && Array.isArray(element.tags) && numKeys(element) === 1) { - accumulate.additionalTags = accumulate.additionalTags.concat(element.tags); - } else { - accumulate.deTaggedData.push(element); - } - return accumulate; - }, {deTaggedData: [], additionalTags: []}); + return msgList.reduce( + (accumulate, element) => { + if (isAnyObject(element) && Array.isArray(element.tags) && numKeys(element) === 1) { + accumulate.additionalTags = accumulate.additionalTags.concat(element.tags); + } else { + accumulate.deTaggedData.push(element); + } + return accumulate; + }, + {deTaggedData: [], additionalTags: []} + ); } @Appender({name: "loggly"}) @@ -55,7 +58,7 @@ export class LogglyAppender extends BaseAppender { msg: msg, level, category: loggingEvent.categoryName, - hostname: os.hostname().toString(), + hostname: os.hostname().toString() }, additionalTags, (error) => { diff --git a/packages/loggly/tsconfig.compile.esm.json b/packages/loggly/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/loggly/tsconfig.compile.esm.json +++ b/packages/loggly/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/loggly/tsconfig.compile.json b/packages/loggly/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/loggly/tsconfig.compile.json +++ b/packages/loggly/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logstash-http/package.json b/packages/logstash-http/package.json index a28833a4..02a2db9c 100644 --- a/packages/logstash-http/package.json +++ b/packages/logstash-http/package.json @@ -51,4 +51,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/logstash-http/readme.md b/packages/logstash-http/readme.md index a4081dad..75006378 100644 --- a/packages/logstash-http/readme.md +++ b/packages/logstash-http/readme.md @@ -17,7 +17,7 @@ A package of Ts.ED logger framework. ## Features -The logstash appenders for [Ts.ED Logger](https://logger.tsed.io) send NDJSON formatted log events to [logstash](https://www.elastic.co/products/logstash) receivers. +The logstash appenders for [Ts.ED Logger](https://logger.tsed.io) send NDJSON formatted log events to [logstash](https://www.elastic.co/products/logstash) receivers. This appender uses HTTP to send the events (there is another logstash appender that uses [UDP](https://logger.tsed.io/appenders/logstash-udp.html)). ## Installation @@ -28,13 +28,13 @@ npm install --save @tsed/logger-logstash-http ## Configuration -* `type` - `logstash-http` -* `options.url` - `string` - logFaces receiver servlet URL -* `options.application` - `string` (optional) - used to identify your application's logs -* `options.logChannel` - `string` (optional) - also used to identify your application's logs [but in a more specific way] -* `options.logType` - `string` (optional) - used for the `type` field in the logstash data -* `options.timeout` - `integer` (optional, defaults to 5000ms) - the timeout for the HTTP request. -* `options.maxBuffer` - `integer` (optional, defaults to 0) - Group bulk request by the maxBuffer number. By Default the buffer is disabled. +- `type` - `logstash-http` +- `options.url` - `string` - logFaces receiver servlet URL +- `options.application` - `string` (optional) - used to identify your application's logs +- `options.logChannel` - `string` (optional) - also used to identify your application's logs [but in a more specific way] +- `options.logType` - `string` (optional) - used for the `type` field in the logstash data +- `options.timeout` - `integer` (optional, defaults to 5000ms) - the timeout for the HTTP request. +- `options.maxBuffer` - `integer` (optional, defaults to 0) - Group bulk request by the maxBuffer number. By Default the buffer is disabled. This appender will also pick up Logger context values from the events, and add them as `p_` values in the logFaces event. See the example below for more details. @@ -47,22 +47,22 @@ import "@tsed/logger-logstash-http"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logstash-http", + type: "logstash-http", level: ["info"], options: { - url: 'http://localhost:9200/_bulk', - application: 'logstash-tsed', - logType: 'application', - logChannel: 'node' + url: "http://localhost:9200/_bulk", + application: "logstash-tsed", + logType: "application", + logChannel: "node" } }); -logger.context.set('requestId', '123'); -logger.info('some interesting log message'); -logger.error('something has gone wrong'); +logger.context.set("requestId", "123"); +logger.info("some interesting log message"); +logger.error("something has gone wrong"); ``` -This example will result in two log events being sent to your `localhost:9200`. +This example will result in two log events being sent to your `localhost:9200`. Both events will have a `context.requestId` property with a value of `123`. ## Backers @@ -71,7 +71,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/logstash-http/src/LogStashHttpAppender.ts b/packages/logstash-http/src/LogStashHttpAppender.ts index 5c7c6524..1893673a 100644 --- a/packages/logstash-http/src/LogStashHttpAppender.ts +++ b/packages/logstash-http/src/LogStashHttpAppender.ts @@ -4,7 +4,7 @@ import axios from "axios"; function wrapErrorsWithInspect(items: any[]) { return items.map((item) => { - if ((item instanceof Error) && item.stack) { + if (item instanceof Error && item.stack) { return { inspect: function () { return `${util.format(item)}\n${item.stack}`; @@ -17,7 +17,7 @@ function wrapErrorsWithInspect(items: any[]) { } function format(logData: any) { - return util.format.apply(util, wrapErrorsWithInspect(logData)); + return util.format(...wrapErrorsWithInspect(logData)); } @Appender({name: "logstash-http"}) @@ -34,10 +34,10 @@ export class LogStashHttpAppender extends BaseAppender { timeout: this.config.options.timeout || 5000, params: this.config.options.params, headers: { - ...this.config.options.headers || {}, + ...(this.config.options.headers || {}), "Content-Type": "application/x-ndjson" }, - withCredentials: true, + withCredentials: true }); } } @@ -53,18 +53,18 @@ export class LogStashHttpAppender extends BaseAppender { { index: { _index: typeof application === "function" ? application() : application, - _type: logType, - }, + _type: logType + } }, { - ...!isMessage ? loggingEvent.data[0] : {}, + ...(!isMessage ? loggingEvent.data[0] : {}), message: isMessage ? format(loggingEvent.data) : undefined, context: loggingEvent.context.toJSON(), level: loggingEvent.level.level / 100, level_name: level, channel: logChannel, - datetime: (new Date(loggingEvent.startTime)).toISOString() - }, + datetime: new Date(loggingEvent.startTime).toISOString() + } ]; this.send(`${JSON.stringify(logstashEvent[0])}\n${JSON.stringify(logstashEvent[1])}`); @@ -72,7 +72,6 @@ export class LogStashHttpAppender extends BaseAppender { } send(bulk: string) { - const {bufferMax = 0} = this.config.options; this.#buffer.push(bulk); @@ -91,14 +90,15 @@ export class LogStashHttpAppender extends BaseAppender { const bulk = buffer.join("\n"); const {url} = this.config.options; - return this.client.post("", bulk + "\n") - .catch((error) => { - if (error.response) { - console.error(`Ts.ED Logger.logstash-http Appender error posting to ${url}: ${error.response.status} - ${JSON.stringify(error.response.data)}`); - return; - } - console.error(`Ts.ED Logger.logstash-http Appender error: ${error.message}`); - }); + return this.client.post("", bulk + "\n").catch((error) => { + if (error.response) { + console.error( + `Ts.ED Logger.logstash-http Appender error posting to ${url}: ${error.response.status} - ${JSON.stringify(error.response.data)}` + ); + return; + } + console.error(`Ts.ED Logger.logstash-http Appender error: ${error.message}`); + }); } } diff --git a/packages/logstash-http/tsconfig.compile.esm.json b/packages/logstash-http/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/logstash-http/tsconfig.compile.esm.json +++ b/packages/logstash-http/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logstash-http/tsconfig.compile.json b/packages/logstash-http/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/logstash-http/tsconfig.compile.json +++ b/packages/logstash-http/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logstash-udp/package.json b/packages/logstash-udp/package.json index 775c9ad4..8fe30fe6 100644 --- a/packages/logstash-udp/package.json +++ b/packages/logstash-udp/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/logstash-udp/readme.md b/packages/logstash-udp/readme.md index 709e3c36..a8a43970 100644 --- a/packages/logstash-udp/readme.md +++ b/packages/logstash-udp/readme.md @@ -19,8 +19,8 @@ A package of Ts.ED logger framework. The logstash appenders for [Ts.ED Logger](https://logger.tsed.io). -The logstash-udp appender supports sending log events to a [Logstash](https://www.elastic.co/products/logstash) server. -It uses the node.js core UDP support, and so requires no extra dependencies. +The logstash-udp appender supports sending log events to a [Logstash](https://www.elastic.co/products/logstash) server. +It uses the node.js core UDP support, and so requires no extra dependencies. Remember to call `logger.shutdown` in your application if you want the UDP socket closed cleanly. ## Installation @@ -31,11 +31,11 @@ npm install --save @tsed/logger-logstash-udp ## Configuration -* `type` - `logstash-udp` -* `options.host` - `string` - hostname (or IP-address) of the logstash server -* `options.port` - `integer` - port of the logstash server -* `options.layout` - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts) -* `options.extraDataProvider` - function (optional, defaults to put the second param of log to fields) - used to enhance the object sent to Logstash via UDP. this will be passed the log event and should return an object. +- `type` - `logstash-udp` +- `options.host` - `string` - hostname (or IP-address) of the logstash server +- `options.port` - `integer` - port of the logstash server +- `options.layout` - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts) +- `options.extraDataProvider` - function (optional, defaults to put the second param of log to fields) - used to enhance the object sent to Logstash via UDP. this will be passed the log event and should return an object. ## Example @@ -46,15 +46,15 @@ import "@tsed/logger-logstash-udp"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "logstash-udp", + type: "logstash-udp", level: ["info"], options: { - host: 'log.server', + host: "log.server", port: 12345 } }); -logger.info("important log message", { cheese: 'gouda', biscuits: 'hobnob' }); +logger.info("important log message", {cheese: "gouda", biscuits: "hobnob"}); ``` This will result in a JSON message being sent to log.server:12345 over UDP, with the following format: @@ -86,22 +86,23 @@ logger.appenders.set("stdout", { type: "loggly", level: ["info"], options: { - host: 'log.server', + host: "log.server", port: 12345, - extraDataProvider: loggingEvent => ({ - host: 'anotherHostname', // this will replace the default real host - clientIp: '1.2.3.4', // this will be added + extraDataProvider: (loggingEvent) => ({ + host: "anotherHostname", // this will replace the default real host + clientIp: "1.2.3.4", // this will be added fields: { - tag: 'myTag', // this will be added to the fields + tag: "myTag", // this will be added to the fields pid: loggingEvent.pid, // this will be added to the fields - cheese: 'defaultCheese' // this will be added to the fields but will not be replaced in this example + cheese: "defaultCheese" // this will be added to the fields but will not be replaced in this example } }) } }); -logger.info("important log message", { cheese: 'gouda', biscuits: 'hobnob' }); +logger.info("important log message", {cheese: "gouda", biscuits: "hobnob"}); ``` + This will result in a JSON message being sent to log.server:12345 over UDP, with the following format: ```javascript @@ -129,7 +130,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/logstash-udp/src/LogStashUdpAppender.ts b/packages/logstash-udp/src/LogStashUdpAppender.ts index 3ad1d08e..9d192fb1 100644 --- a/packages/logstash-udp/src/LogStashUdpAppender.ts +++ b/packages/logstash-udp/src/LogStashUdpAppender.ts @@ -50,9 +50,8 @@ export class LogStashUdpAppender extends BaseAppender { build() { if ($log.level !== "OFF") { this.udp = dgram.createSocket("udp4"); - this.extraDataProvider = typeof this.config.options.extraDataProvider === "function" - ? this.config.options.extraDataProvider - : defaultExtraDataProvider; + this.extraDataProvider = + typeof this.config.options.extraDataProvider === "function" ? this.config.options.extraDataProvider : defaultExtraDataProvider; } } @@ -62,13 +61,13 @@ export class LogStashUdpAppender extends BaseAppender { if (level !== "off") { const isMessage = loggingEvent.data.length && typeof loggingEvent.data[0] !== "object"; const oriLogObject = { - ...!isMessage ? loggingEvent.data[0] : {}, + ...(!isMessage ? loggingEvent.data[0] : {}), "@version": defaultVersion, - "@timestamp": (new Date(loggingEvent.startTime)).toISOString(), - "host": os.hostname(), - "level": loggingEvent.level.levelStr.toUpperCase(), - "category": loggingEvent.categoryName, - "message": isMessage ? this.layout(loggingEvent) : undefined + "@timestamp": new Date(loggingEvent.startTime).toISOString(), + host: os.hostname(), + level: loggingEvent.level.levelStr.toUpperCase(), + category: loggingEvent.categoryName, + message: isMessage ? this.layout(loggingEvent) : undefined }; const extraLogObject = this.extraDataProvider(loggingEvent) || {}; const logObject = {...oriLogObject, ...extraLogObject}; diff --git a/packages/logstash-udp/tsconfig.compile.esm.json b/packages/logstash-udp/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/logstash-udp/tsconfig.compile.esm.json +++ b/packages/logstash-udp/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/logstash-udp/tsconfig.compile.json b/packages/logstash-udp/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/logstash-udp/tsconfig.compile.json +++ b/packages/logstash-udp/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/rabbitmq/package.json b/packages/rabbitmq/package.json index 3996d863..f48eede1 100644 --- a/packages/rabbitmq/package.json +++ b/packages/rabbitmq/package.json @@ -50,4 +50,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/rabbitmq/readme.md b/packages/rabbitmq/readme.md index 74b9f69e..54f4cbef 100644 --- a/packages/rabbitmq/readme.md +++ b/packages/rabbitmq/readme.md @@ -19,7 +19,7 @@ -A package of Ts.ED logger framework. +A package of Ts.ED logger framework. ## Features @@ -35,24 +35,24 @@ If you want to be sure that all messages have been sent before your programme ex ## Configuration -* `type` - `rabbitmq` -* `layout` - `object` (optional, defaults to `messagePassThroughLayout`) - the layout to use for log events (see [Layouts](https://logger.tsed.io/layouts)). -* `options.host` - `string` (optional, defaults to `127.0.0.1`) - the location of the rabbitmq server -* `options.port` - `integer` (optional, defaults to `5672`) - the port the rabbitmq server is listening on -* `options.username` - `string` (optional, defaults to `guest`) - username to use when authenticating connection to rabbitmq -* `options.password` - `string` (optional, defaults to `guest`) - password to use when authenticating connection to rabbitmq -* `options.routing_key` - `string` (optional, defaults to `logstash`) - rabbitmq message's routing_key -* `options.durable` - `string` (optional, defaults to false) - will that RabbitMQ lose our queue. -* `options.exchange` - `string` (optional, defaults to `log`)- rabbitmq send message's exchange -* `options.mq_type` - `string` (optional, defaults to `direct`) - rabbitmq message's mq_type -* `options.vhost` - `string` (optional, defaults to `/`) - vhost to use -* `options.shutdownTimeout` - `integer` (optional, defaults to `10000`) - maximum time in milliseconds to wait for messages to be sent during log4js shutdown. +- `type` - `rabbitmq` +- `layout` - `object` (optional, defaults to `messagePassThroughLayout`) - the layout to use for log events (see [Layouts](https://logger.tsed.io/layouts)). +- `options.host` - `string` (optional, defaults to `127.0.0.1`) - the location of the rabbitmq server +- `options.port` - `integer` (optional, defaults to `5672`) - the port the rabbitmq server is listening on +- `options.username` - `string` (optional, defaults to `guest`) - username to use when authenticating connection to rabbitmq +- `options.password` - `string` (optional, defaults to `guest`) - password to use when authenticating connection to rabbitmq +- `options.routing_key` - `string` (optional, defaults to `logstash`) - rabbitmq message's routing_key +- `options.durable` - `string` (optional, defaults to false) - will that RabbitMQ lose our queue. +- `options.exchange` - `string` (optional, defaults to `log`)- rabbitmq send message's exchange +- `options.mq_type` - `string` (optional, defaults to `direct`) - rabbitmq message's mq_type +- `options.vhost` - `string` (optional, defaults to `/`) - vhost to use +- `options.shutdownTimeout` - `integer` (optional, defaults to `10000`) - maximum time in milliseconds to wait for messages to be sent during log4js shutdown. ## Example ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-rabbitmq" +import "@tsed/logger-rabbitmq"; const logger = new Logger("loggerName"); @@ -60,13 +60,13 @@ logger.appenders.set("stdout", { type: "rabbitmq", level: ["info"], options: { - host: '127.0.0.1', + host: "127.0.0.1", port: 5672, - username: 'guest', - password: 'guest', - routing_key: 'logstash', - exchange: 'exchange_logs', - mq_type: 'direct', + username: "guest", + password: "guest", + routing_key: "logstash", + exchange: "exchange_logs", + mq_type: "direct", durable: true } }); @@ -80,7 +80,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/rabbitmq/src/RabbitMQAppender.ts b/packages/rabbitmq/src/RabbitMQAppender.ts index 19f42d93..5cea724d 100644 --- a/packages/rabbitmq/src/RabbitMQAppender.ts +++ b/packages/rabbitmq/src/RabbitMQAppender.ts @@ -24,7 +24,7 @@ export class RabbitMQAppender extends BaseAppender { ...this.config.options, protocol: "amqp", frameMax: 0, - heartbeat: 0, + heartbeat: 0 }; } diff --git a/packages/rabbitmq/tsconfig.compile.esm.json b/packages/rabbitmq/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/rabbitmq/tsconfig.compile.esm.json +++ b/packages/rabbitmq/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/rabbitmq/tsconfig.compile.json b/packages/rabbitmq/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/rabbitmq/tsconfig.compile.json +++ b/packages/rabbitmq/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/seq/package.json b/packages/seq/package.json index e75c5bf2..61be5c79 100644 --- a/packages/seq/package.json +++ b/packages/seq/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/seq/readme.md b/packages/seq/readme.md index 65132d66..2971d07c 100644 --- a/packages/seq/readme.md +++ b/packages/seq/readme.md @@ -33,9 +33,9 @@ npm install --save @tsed/seq ## Configuration -* `type` - `seq` -* `options.url` - The url log server -* `options.apiKey` - The apiKey +- `type` - `seq` +- `options.url` - The url log server +- `options.apiKey` - The apiKey See all available options for Seq [here](https://www.npmjs.com/package/se-loggin). @@ -43,7 +43,7 @@ See all available options for Seq [here](https://www.npmjs.com/package/se-loggin ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-seq" +import "@tsed/logger-seq"; const logger = new Logger("loggerName"); @@ -51,7 +51,7 @@ logger.appenders.set("stdout", { type: "seq", level: ["info"], options: { - serverUrl: 'http://localhost:5341', + serverUrl: "http://localhost:5341", apiKey: "the token" // other Seq options } @@ -64,7 +64,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/seq/src/SeqAppender.ts b/packages/seq/src/SeqAppender.ts index 801a335d..af5ed9f9 100644 --- a/packages/seq/src/SeqAppender.ts +++ b/packages/seq/src/SeqAppender.ts @@ -8,7 +8,7 @@ const LEVEL_NAMES: Record = { INFO: "Information", WARN: "Warning", ERROR: "Error", - FATAL: "Fatal", + FATAL: "Fatal" }; @Appender({name: "seq"}) @@ -21,7 +21,7 @@ export class SeqAppender extends BaseAppender { onError(e) { console.error("[Seq] Log batch failed\n", e); }, - ...this.config.options, + ...this.config.options }); } } @@ -35,7 +35,7 @@ export class SeqAppender extends BaseAppender { const additionalProps = [...loggingEvent.context.entries()].reduce((props, [key, value]) => { return { ...props, - [key]: value, + [key]: value }; }, {}); @@ -45,8 +45,8 @@ export class SeqAppender extends BaseAppender { properties: { ...(this.config.options.additionalProps || {}), ...additionalProps, - data, - }, + data + } }; if (typeof current === "string") { @@ -61,7 +61,7 @@ export class SeqAppender extends BaseAppender { seqEntry.properties = { ...seqEntry.properties, ...errorProps, - ...props, + ...props }; seqEntry.exception = stack ? stack : errStack; diff --git a/packages/seq/tsconfig.compile.esm.json b/packages/seq/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/seq/tsconfig.compile.esm.json +++ b/packages/seq/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/seq/tsconfig.compile.json b/packages/seq/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/seq/tsconfig.compile.json +++ b/packages/seq/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/slack/package.json b/packages/slack/package.json index 8b66a91f..f0501312 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -49,4 +49,4 @@ "peerDependencies": { "@tsed/logger": ">=6.0.0" } -} \ No newline at end of file +} diff --git a/packages/slack/readme.md b/packages/slack/readme.md index 97da3379..b586412a 100644 --- a/packages/slack/readme.md +++ b/packages/slack/readme.md @@ -17,7 +17,7 @@ A package of Ts.ED logger framework. ## Features -Sends log events to a [slack](https://slack.com) channel. +Sends log events to a [slack](https://slack.com) channel. ## Installation @@ -27,11 +27,11 @@ npm install --save @tsed/logger-slack ## Configuration -* `type` - `slack` -* `options.token` - `string` - your Slack API token (see the slack and slack-node docs) -* `options.channel_id` - `string` - the channel to send log messages -* `options.icon_url` - `string` (optional) - the icon to use for the message -* `options.username` - `string` - the username to display with the message +- `type` - `slack` +- `options.token` - `string` - your Slack API token (see the slack and slack-node docs) +- `options.channel_id` - `string` - the channel to send log messages +- `options.icon_url` - `string` (optional) - the icon to use for the message +- `options.username` - `string` - the username to display with the message ## Example @@ -42,7 +42,7 @@ import "@tsed/logger-slack"; const logger = new Logger("loggerName"); logger.appenders.set("stdout", { - type: "slack", + type: "slack", level: ["error"], options: { token: "abc123def", @@ -58,7 +58,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/slack/src/SlackAppender.ts b/packages/slack/src/SlackAppender.ts index a24da6fe..4cf048c8 100644 --- a/packages/slack/src/SlackAppender.ts +++ b/packages/slack/src/SlackAppender.ts @@ -19,8 +19,7 @@ export class SlackAppender extends BaseAppender { }; await web.chat.postMessage(data); } - } - catch (err) { + } catch (err) { console.error("Ts.ED Logger:slack - Error sending log to slack: ", err); } } diff --git a/packages/slack/tsconfig.compile.esm.json b/packages/slack/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/slack/tsconfig.compile.esm.json +++ b/packages/slack/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/slack/tsconfig.compile.json b/packages/slack/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/slack/tsconfig.compile.json +++ b/packages/slack/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/smtp/readme.md b/packages/smtp/readme.md index 5d51e467..1c3bcf69 100644 --- a/packages/smtp/readme.md +++ b/packages/smtp/readme.md @@ -21,58 +21,58 @@ Sends log events as emails. If you use this appender, you should also call shutd ## Configuration -* `type` - `smtp` -* `SMTP` - `object` (optional, if not present will use `transport` field) - * `host` - `string` (optional, defaults to `localhost`) - * `port` - `integer` (optional, defaults to `25`) - * `auth` - `object` (optional) - authentication details - * `user` - `string` - * `pass` - `string` -* `transport` - `object` (optional, if not present will use `SMTP`) - see [`nodemailer`](https://nodemailer.com/smtp/) docs for transport options - * `plugin` - `string` (optional, defaults to `smtp`) - the nodemailer transport plugin to use - * `options` - `object` - configuration for the transport plugin -* `attachment` - `object` (optional) - send logs as email attachment - * `enable` - `boolean` (optional, defaults to `false`) - * `message` - `string` (optional, defaults to `See logs as attachment`) - message to put in body of email - * `filename` - `string` (optional, defaults to `default.log`) - attachment filename -* `sendInterval` - `integer` (optional, defaults to `0`) - batch emails and send in one email every `sendInterval` seconds, if `0` then every log message will send an email. -* `shutdownTimeout` - `integer` (optional, defaults to `5`) - time in seconds to wait for emails to be sent during shutdown -* `recipients` - `string` - email addresses to send the logs to -* `subject` - `string` (optional, defaults to message from first log event in batch) - subject for email -* `sender` - `string` (optional) - who the logs should be sent as -* `html` - `boolean` (optional, defaults to `false`) - send the email as HTML instead of plain text -* `layout` - `object` (optional, defaults to basicLayout) - see [layouts](https://logger.tsed.io/layouts.html) -* `cc` - `string` (optional) - email addresses to send the carbon-copy logs to -* `bcc` - `string` (optional) - email addresses to send the blind-carbon-copy logs to +- `type` - `smtp` +- `SMTP` - `object` (optional, if not present will use `transport` field) + - `host` - `string` (optional, defaults to `localhost`) + - `port` - `integer` (optional, defaults to `25`) + - `auth` - `object` (optional) - authentication details + - `user` - `string` + - `pass` - `string` +- `transport` - `object` (optional, if not present will use `SMTP`) - see [`nodemailer`](https://nodemailer.com/smtp/) docs for transport options + - `plugin` - `string` (optional, defaults to `smtp`) - the nodemailer transport plugin to use + - `options` - `object` - configuration for the transport plugin +- `attachment` - `object` (optional) - send logs as email attachment + - `enable` - `boolean` (optional, defaults to `false`) + - `message` - `string` (optional, defaults to `See logs as attachment`) - message to put in body of email + - `filename` - `string` (optional, defaults to `default.log`) - attachment filename +- `sendInterval` - `integer` (optional, defaults to `0`) - batch emails and send in one email every `sendInterval` seconds, if `0` then every log message will send an email. +- `shutdownTimeout` - `integer` (optional, defaults to `5`) - time in seconds to wait for emails to be sent during shutdown +- `recipients` - `string` - email addresses to send the logs to +- `subject` - `string` (optional, defaults to message from first log event in batch) - subject for email +- `sender` - `string` (optional) - who the logs should be sent as +- `html` - `boolean` (optional, defaults to `false`) - send the email as HTML instead of plain text +- `layout` - `object` (optional, defaults to basicLayout) - see [layouts](https://logger.tsed.io/layouts.html) +- `cc` - `string` (optional) - email addresses to send the carbon-copy logs to +- `bcc` - `string` (optional) - email addresses to send the blind-carbon-copy logs to ## Example (default config) ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name" }); ``` -This configuration will send an email using the smtp server running on `localhost:25`, for every log event of level `ERROR` and above. +This configuration will send an email using the smtp server running on `localhost:25`, for every log event of level `ERROR` and above. The email will be sent to `dev.team@company.name`, the subject will be the message part of the log event, the body of the email will be log event formatted by the basic layout function. ## Example (logs as attachments, batched) ```typescript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", subject: "Latest logs", @@ -92,15 +92,15 @@ This configuration will send an email once every hour, with all the log events o ```javascript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", - SMTP: { host: 'smtp.company.name', port: 8025 } + SMTP: {host: "smtp.company.name", port: 8025} }); ``` @@ -108,23 +108,24 @@ This configuration can also be written as: ```javascript import {Logger} from "@tsed/logger"; -import "@tsed/logger-smtp" +import "@tsed/logger-smtp"; const logger = new Logger("loggerName"); logger.appenders.set("email", { - type: "smtp", + type: "smtp", level: ["error"], recipients: "dev.team@company.name", transport: { - plugin: 'smtp', + plugin: "smtp", options: { - host: 'smtp.company.name', + host: "smtp.company.name", port: 8025 } } }); ``` + A similar config can be used to specify a different transport plugin than `smtp`. See the [`nodemailer`](https://nodemailer.com/smtp/) docs for more details. ## Backers @@ -133,7 +134,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/packages/smtp/tsconfig.compile.esm.json b/packages/smtp/tsconfig.compile.esm.json index afb4ea10..61502d4e 100644 --- a/packages/smtp/tsconfig.compile.esm.json +++ b/packages/smtp/tsconfig.compile.esm.json @@ -9,9 +9,5 @@ "declarationDir": "./lib/types" }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/packages/smtp/tsconfig.compile.json b/packages/smtp/tsconfig.compile.json index 71031686..2db75f37 100644 --- a/packages/smtp/tsconfig.compile.json +++ b/packages/smtp/tsconfig.compile.json @@ -6,9 +6,5 @@ "declaration": false }, "include": ["src"], - "exclude": [ - "node_modules", - "test", - "lib" - ] + "exclude": ["node_modules", "test", "lib"] } diff --git a/readme.md b/readme.md index a6dfdb96..fa57fbf6 100644 --- a/readme.md +++ b/readme.md @@ -28,15 +28,14 @@
- > A multi channel logger written in TypeScript. ## Features -* Colored console logging to stdout or stderr, -* File appender, with configurable log rolling based on file size or date -* Configurable log message layout/patterns -* Different log levels for different log categories (make some parts of your app log as DEBUG, others only ERRORS, etc.) +- Colored console logging to stdout or stderr, +- File appender, with configurable log rolling based on file size or date +- Configurable log message layout/patterns +- Different log levels for different log categories (make some parts of your app log as DEBUG, others only ERRORS, etc.) Please refer to the [documentation](https://tsedio.github.io/logger/) for more details. @@ -63,37 +62,40 @@ $log.name = "APP"; $log.debug("Some debug messages"); ``` + Will be produce the following log output: + ``` [2017-06-17 11:43:37.987] [DEBUG] [APP] - Some debug messages ``` Create your custom logger: + ```typescript import {Logger} from "@tsed/logger"; const logger = new Logger("loggerName"); logger.appenders - .set({ - type: "stdout", - levels: ["debug", "info", "trace"] - }) - .set({ - type: "stderr", - levels: ["fatal", "error", "warn"], - layout: { - type: "pattern", - pattern: "%d %p %c %X{user} %m%n" - } - }) - .set({ - type: "file", - filename: `${__dirname}/app.log`, - layout:{ - type: "json", - separator: "," - } - }) + .set({ + type: "stdout", + levels: ["debug", "info", "trace"] + }) + .set({ + type: "stderr", + levels: ["fatal", "error", "warn"], + layout: { + type: "pattern", + pattern: "%d %p %c %X{user} %m%n" + } + }) + .set({ + type: "file", + filename: `${__dirname}/app.log`, + layout: { + type: "json", + separator: "," + } + }); ``` ## Backers @@ -102,7 +104,6 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] diff --git a/tasks/mocha/sinon-chai.js b/tasks/mocha/sinon-chai.js index 8a3e0e3d..1586fabf 100644 --- a/tasks/mocha/sinon-chai.js +++ b/tasks/mocha/sinon-chai.js @@ -1,7 +1,7 @@ "use strict"; /* eslint-disable no-invalid-this */ -(function(sinonChai) { +(function (sinonChai) { // Module systems magic dance. /* istanbul ignore else */ @@ -10,7 +10,7 @@ module.exports = sinonChai; } else if (typeof define === "function" && define.amd) { // AMD - define(function() { + define(function () { return sinonChai; }); } else { @@ -18,13 +18,13 @@ /* global chai: false */ chai.use(sinonChai); } -}(function(chai, utils) { +})(function (chai, utils) { var slice = Array.prototype.slice; function isSpy(putativeSpy) { - return typeof putativeSpy === "function" && - typeof putativeSpy.getCall === "function" && - typeof putativeSpy.calledWithExactly === "function"; + return ( + typeof putativeSpy === "function" && typeof putativeSpy.getCall === "function" && typeof putativeSpy.calledWithExactly === "function" + ); } function timesInWords(count) { @@ -66,17 +66,17 @@ } return { - affirmative: function() { + affirmative: function () { return printfArray(["expected %n to " + verbPhrase + action + nonNegatedSuffix].concat(args)); }, - negative: function() { + negative: function () { return printfArray(["expected %n to not " + verbPhrase + action].concat(args)); } }; } function sinonProperty(name, action, nonNegatedSuffix) { - utils.addProperty(chai.Assertion.prototype, name, function() { + utils.addProperty(chai.Assertion.prototype, name, function () { assertCanWorkWith(this); var messages = getMessages(this._obj, action, nonNegatedSuffix, false); @@ -85,7 +85,7 @@ } function sinonPropertyAsBooleanMethod(name, action, nonNegatedSuffix) { - utils.addMethod(chai.Assertion.prototype, name, function(arg) { + utils.addMethod(chai.Assertion.prototype, name, function (arg) { assertCanWorkWith(this); var messages = getMessages(this._obj, action, nonNegatedSuffix, false, [timesInWords(arg)]); @@ -94,7 +94,7 @@ } function createSinonMethodHandler(sinonName, action, nonNegatedSuffix) { - return function() { + return function () { assertCanWorkWith(this); var alwaysSinonMethod = "always" + sinonName[0].toUpperCase() + sinonName.substring(1); @@ -119,14 +119,7 @@ var enableDiff = !passed; - this.assert( - passed, - messages.affirmative, - messages.negative, - expected, - actual, - enableDiff - ); + this.assert(passed, messages.affirmative, messages.negative, expected, actual, enableDiff); }; } @@ -144,7 +137,7 @@ exceptionalSinonMethod(name, name, action, nonNegatedSuffix); } - utils.addProperty(chai.Assertion.prototype, "always", function() { + utils.addProperty(chai.Assertion.prototype, "always", function () { utils.flag(this, "always", true); }); @@ -166,4 +159,4 @@ sinonMethod("calledWithMatch", "been called with arguments matching %*", "%D"); sinonMethod("returned", "returned %1"); exceptionalSinonMethod("thrown", "threw", "thrown %1"); -})); +}); diff --git a/team.json b/team.json index 55ecd01b..d5a25c0f 100644 --- a/team.json +++ b/team.json @@ -28,4 +28,4 @@ "city": "Aachen", "role": "Framework" } -] \ No newline at end of file +] diff --git a/tsconfig.base.json b/tsconfig.base.json index 6d2301ee..974ab667 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -25,15 +25,7 @@ "typeRoots": ["./node_modules/@types"] }, "linterOptions": { - "exclude": [ - "docs", - "integration", - "examples/**" - ] + "exclude": ["docs", "integration", "examples/**"] }, - "exclude": [ - "docs", - "integration", - "examples/**" - ] + "exclude": ["docs", "integration", "examples/**"] } diff --git a/tsconfig.json b/tsconfig.json index deae0e11..299f36d5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,25 +3,8 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@tsed/*": [ - "packages/*/src" - ] + "@tsed/*": ["packages/*/src"] } }, - "linterOptions": { - "exclude": [ - "docs", - "integration", - "examples" - ] - }, - "exclude": [ - "test", - "**/test", - "docs", - "integration", - "examples", - "lib", - "**/lib" - ] + "exclude": ["node_modules", "**/node_modules", "**/dist", "**/.*/"] } diff --git a/tsdoc.config.js b/tsdoc.config.js index ad952b17..d9e14de8 100644 --- a/tsdoc.config.js +++ b/tsdoc.config.js @@ -1,20 +1,17 @@ module.exports = { rootDir: process.cwd(), packagesDir: "packages/", - scanPatterns: [ - "/packages/**/lib/**/*.d.ts", - "!node_modules" - ], + scanPatterns: ["/packages/**/lib/**/*.d.ts", "!node_modules"], outputDir: "/docs/api", baseUrl: "/api", jsonOutputDir: "/docs/.vuepress/public", scope: "@tsed", modules: { - "logger": { - "appenders": "logger/appenders", - "core": "logger/core", - "layouts": "logger/layouts", - "logger": "logger/logger" + logger: { + appenders: "logger/appenders", + core: "logger/core", + layouts: "logger/layouts", + logger: "logger/logger" } } }; diff --git a/tslint.json b/tslint.json deleted file mode 100644 index ca51f4d2..00000000 --- a/tslint.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "rules": { - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "indent": [ - true, - "spaces" - ], - "no-duplicate-variable": true, - "no-eval": true, - "no-internal-module": true, - "no-trailing-whitespace": true, - "no-var-keyword": true, - "one-line": [ - true, - "check-open-brace", - "check-whitespace" - ], - "quotemark": [ - true, - "double" - ], - "semicolon": [ - true, - "always", - "ignore-bound-class-methods" - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - } - ], - "variable-name": [ - true, - "ban-keywords" - ], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" - ] - } -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5e33a379..1aed5a73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -106,6 +106,13 @@ "@algolia/logger-common" "4.5.1" "@algolia/requester-common" "4.5.1" +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" @@ -2014,6 +2021,158 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@commitlint/cli@^16.1.0": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-16.2.1.tgz#ca4e557829a2755f0e1f0cd69b56b83ce2510173" + integrity sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw== + dependencies: + "@commitlint/format" "^16.2.1" + "@commitlint/lint" "^16.2.1" + "@commitlint/load" "^16.2.1" + "@commitlint/read" "^16.2.1" + "@commitlint/types" "^16.2.1" + lodash "^4.17.19" + resolve-from "5.0.0" + resolve-global "1.0.0" + yargs "^17.0.0" + +"@commitlint/config-conventional@^16.0.0": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-16.2.1.tgz#2cf47b505fb259777c063538c8498d8fd9b47779" + integrity sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww== + dependencies: + conventional-changelog-conventionalcommits "^4.3.1" + +"@commitlint/config-validator@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-16.2.1.tgz#794e769afd4756e4cf1bfd823b6612932e39c56d" + integrity sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw== + dependencies: + "@commitlint/types" "^16.2.1" + ajv "^6.12.6" + +"@commitlint/ensure@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-16.2.1.tgz#0fc538173f95c1eb2694eeedb79cab478347f16f" + integrity sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A== + dependencies: + "@commitlint/types" "^16.2.1" + lodash "^4.17.19" + +"@commitlint/execute-rule@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-16.2.1.tgz#60be73be4b9af97a41546e7ce59fdd33787c65f8" + integrity sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g== + +"@commitlint/format@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-16.2.1.tgz#6e673f710c799be78e68b2682323e04f75080d07" + integrity sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q== + dependencies: + "@commitlint/types" "^16.2.1" + chalk "^4.0.0" + +"@commitlint/is-ignored@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-16.2.1.tgz#cc688ec73a3d204b90f8086821a08814da461e5e" + integrity sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ== + dependencies: + "@commitlint/types" "^16.2.1" + semver "7.3.5" + +"@commitlint/lint@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-16.2.1.tgz#c773f082cd4f69cb7807b805b691d2a52c732f97" + integrity sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg== + dependencies: + "@commitlint/is-ignored" "^16.2.1" + "@commitlint/parse" "^16.2.1" + "@commitlint/rules" "^16.2.1" + "@commitlint/types" "^16.2.1" + +"@commitlint/load@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-16.2.1.tgz#301bda1bff66b3e40a85819f854eda72538d8e24" + integrity sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw== + dependencies: + "@commitlint/config-validator" "^16.2.1" + "@commitlint/execute-rule" "^16.2.1" + "@commitlint/resolve-extends" "^16.2.1" + "@commitlint/types" "^16.2.1" + "@types/node" ">=12" + chalk "^4.0.0" + cosmiconfig "^7.0.0" + cosmiconfig-typescript-loader "^1.0.0" + lodash "^4.17.19" + resolve-from "^5.0.0" + typescript "^4.4.3" + +"@commitlint/message@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-16.2.1.tgz#bc6a0fa446a746ac2ca78cf372e4cec48daf620d" + integrity sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw== + +"@commitlint/parse@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-16.2.1.tgz#50b359cb711ec566d2ee236a8e4c6baca07b77c0" + integrity sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g== + dependencies: + "@commitlint/types" "^16.2.1" + conventional-changelog-angular "^5.0.11" + conventional-commits-parser "^3.2.2" + +"@commitlint/read@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-16.2.1.tgz#e0539205d77cdb6879b560f95e5fb251e0c6f562" + integrity sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw== + dependencies: + "@commitlint/top-level" "^16.2.1" + "@commitlint/types" "^16.2.1" + fs-extra "^10.0.0" + git-raw-commits "^2.0.0" + +"@commitlint/resolve-extends@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-16.2.1.tgz#2f7833a5a3a7aa79f508e59fcb0f1d33c45ed360" + integrity sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg== + dependencies: + "@commitlint/config-validator" "^16.2.1" + "@commitlint/types" "^16.2.1" + import-fresh "^3.0.0" + lodash "^4.17.19" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/rules@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-16.2.1.tgz#7264aa1c754e1c212aeceb27e5eb380cfa7bb233" + integrity sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw== + dependencies: + "@commitlint/ensure" "^16.2.1" + "@commitlint/message" "^16.2.1" + "@commitlint/to-lines" "^16.2.1" + "@commitlint/types" "^16.2.1" + execa "^5.0.0" + +"@commitlint/to-lines@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-16.2.1.tgz#42d000f34dc0406f514991e86237fdab5e8affd0" + integrity sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ== + +"@commitlint/top-level@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-16.2.1.tgz#bdaa53ab3d8970e0288879f1a342a8c2dfe01583" + integrity sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw== + dependencies: + find-up "^5.0.0" + +"@commitlint/types@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-16.2.1.tgz#f25d373b88b01e51fc3fa44488101361945a61bd" + integrity sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA== + dependencies: + chalk "^4.0.0" + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -2049,6 +2208,21 @@ "@francoischalifour/autocomplete-preset-algolia" "^1.0.0-alpha.28" algoliasearch "^4.0.0" +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -2149,6 +2323,20 @@ postcss "7.0.32" purgecss "^2.3.0" +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@iarna/cli@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641" @@ -3488,6 +3676,11 @@ dependencies: "@types/node" "*" +"@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -3525,7 +3718,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185" integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg== -"@types/node@17.0.19": +"@types/node@17.0.19", "@types/node@>=12": version "17.0.19" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.19.tgz#726171367f404bfbe8512ba608a09ebad810c7e6" integrity sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA== @@ -3601,6 +3794,48 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.11.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" + integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== + dependencies: + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/type-utils" "5.12.0" + "@typescript-eslint/utils" "5.12.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.11.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" + integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== + dependencies: + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" + integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== + dependencies: + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" + +"@typescript-eslint/type-utils@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" + integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== + dependencies: + "@typescript-eslint/utils" "5.12.0" + debug "^4.3.2" + tsutils "^3.21.0" + "@typescript-eslint/types@5.12.0": version "5.12.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" @@ -3619,6 +3854,18 @@ semver "^7.3.5" tsutils "^3.21.0" +"@typescript-eslint/utils@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" + integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@5.12.0": version "5.12.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" @@ -4093,6 +4340,11 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-node@^1.6.1: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" @@ -4117,7 +4369,7 @@ acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== -acorn@^7.0.0: +acorn@^7.0.0, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -4188,7 +4440,7 @@ ajv@^6.1.0, ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -4198,6 +4450,16 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + algoliasearch@^3.24.5: version "3.35.1" resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-3.35.1.tgz#297d15f534a3507cab2f5dfb996019cac7568f0c" @@ -4336,6 +4598,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4355,6 +4622,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -5104,11 +5376,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" @@ -5485,6 +5752,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + cidr-regex@^2.0.10: version "2.0.10" resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" @@ -5587,6 +5859,14 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -5773,6 +6053,11 @@ colorette@^1.2.1, colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colorette@^2.0.16: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -5808,7 +6093,7 @@ commander@5.1.0, commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^2.12.1, commander@^2.20.0: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -5818,10 +6103,10 @@ commander@^3.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@~2.19.0: version "2.19.0" @@ -6017,6 +6302,14 @@ conventional-changelog-angular@^5.0.0: compare-func "^2.0.0" q "^1.5.1" +conventional-changelog-angular@^5.0.11: + version "5.0.13" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + conventional-changelog-angular@^5.0.3: version "5.0.6" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" @@ -6025,6 +6318,15 @@ conventional-changelog-angular@^5.0.3: compare-func "^1.3.1" q "^1.5.1" +conventional-changelog-conventionalcommits@^4.3.1: + version "4.6.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + conventional-changelog-core@^3.1.6: version "3.2.3" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" @@ -6115,6 +6417,18 @@ conventional-commits-parser@^3.0.3: through2 "^3.0.0" trim-off-newlines "^1.0.0" +conventional-commits-parser@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + conventional-recommended-bump@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" @@ -6220,6 +6534,14 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig-typescript-loader@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.5.tgz#22373003194a1887bbccbdfd05a13501397109a8" + integrity sha512-FL/YR1nb8hyN0bAcP3MBaIoZravfZtVsN/RuPnoo6UVjqIrDxSNIpXHCGgJe0ZWy5yImpyD6jq5wCJ5f1nUv8g== + dependencies: + cosmiconfig "^7" + ts-node "^10.5.0" + cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -6230,6 +6552,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^7: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -6322,7 +6655,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6562,6 +6895,11 @@ dargs@^4.0.1: dependencies: number-is-nan "^1.0.0" +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -6613,7 +6951,7 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4, debug@4.3.1, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: +debug@4, debug@4.3.1, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -6627,7 +6965,7 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.3.2: +debug@^4.0.1, debug@^4.3.2, debug@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== @@ -6698,6 +7036,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deepmerge@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" @@ -6935,6 +7278,13 @@ docsearch.js@^2.5.2: to-factory "^1.0.0" zepto "^1.2.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -7058,6 +7408,11 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -7114,6 +7469,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -7147,7 +7507,7 @@ enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.6: +enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -7306,6 +7666,26 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +eslint-config-prettier@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + +eslint-plugin-mocha@10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.3.tgz#a4ecf2351828e852156316b7e936e7336fc0ff5e" + integrity sha512-9mM7PZGxfejpjey+MrG0Cu3Lc8MyA5E2s7eUCdHXgS4SY/H9zLuwa7wVAjnEaoDjbBilA+0bPEB+iMO7lBUPcg== + dependencies: + eslint-utils "^3.0.0" + ramda "^0.27.1" + +eslint-plugin-prettier@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" + integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -7314,21 +7694,115 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + eslint-visitor-keys@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint@^7.10.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + esm@3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" @@ -7336,11 +7810,23 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" @@ -7462,7 +7948,7 @@ execa@^2.0.4: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.0, execa@^4.1.0: +execa@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -7492,6 +7978,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -7604,11 +8105,16 @@ fancy-log@1.3.3, fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -7649,6 +8155,11 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + fastq@^1.6.0: version "1.11.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" @@ -7675,7 +8186,7 @@ figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@3.2.0, figures@^3.0.0, figures@^3.2.0: +figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -7697,6 +8208,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" @@ -7773,7 +8291,7 @@ find-npm-prefix@^1.0.2: resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -7818,11 +8336,24 @@ find-versions@^4.0.0: dependencies: semver-regex "^3.1.2" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -7927,7 +8458,7 @@ fromentries@^1.2.0: resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== -fs-extra@10.0.0: +fs-extra@10.0.0, fs-extra@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== @@ -8013,6 +8544,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + fuse.js@^6.4.6: version "6.4.6" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.4.6.tgz#62f216c110e5aa22486aff20be7896d19a059b79" @@ -8095,11 +8631,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -8216,6 +8747,17 @@ git-raw-commits@2.0.0: split2 "^2.0.0" through2 "^2.0.0" +git-raw-commits@^2.0.0: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" @@ -8293,7 +8835,7 @@ glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glo once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: +global-dirs@^0.1.0, global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= @@ -8320,6 +8862,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.6.0, globals@^13.9.0: + version "13.12.1" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + dependencies: + type-fest "^0.20.2" + globalyzer@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" @@ -8877,10 +9426,10 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.3.tgz#1a0645a4fe3ffc006c4d0d8bd0bcb4c98787cc9d" - integrity sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg== +husky@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -8940,7 +9489,7 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.3: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -8950,7 +9499,7 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -ignore@^5.2.0: +ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -8982,7 +9531,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -9295,6 +9844,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + is-cidr@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7" @@ -9416,6 +9972,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -9495,7 +10056,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -9609,11 +10170,6 @@ is-regex@^1.0.5, is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.1" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -9890,11 +10446,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@5.0.1, json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -10095,6 +10661,14 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + libcipm@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89" @@ -10229,6 +10803,11 @@ libnpx@^10.2.4: y18n "^4.0.0" yargs "^14.2.3" +lilconfig@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + lilconfig@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" @@ -10246,26 +10825,24 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.0.1" -lint-staged@^10.5.1: - version "10.5.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - commander "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" +lint-staged@^12.3.2: + version "12.3.4" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" + integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.16" + commander "^8.3.0" + debug "^4.3.3" + execa "^5.1.1" + lilconfig "2.0.4" + listr2 "^4.0.1" + micromatch "^4.0.4" normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" + object-inspect "^1.12.0" + string-argv "^0.3.1" + supports-color "^9.2.1" + yaml "^1.10.2" listr-silent-renderer@^1.1.1: version "1.1.1" @@ -10296,18 +10873,17 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr2@^3.2.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.4.3.tgz#543bcf849d5ffc70602708b69d2daac73f751699" - integrity sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA== +listr2@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" + integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== dependencies: - chalk "^4.1.0" cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" + colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.6" + rfdc "^1.3.0" + rxjs "^7.5.4" through "^2.3.8" wrap-ansi "^7.0.0" @@ -10561,6 +11137,11 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.union@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -10606,7 +11187,7 @@ log-driver@^1.2.7: resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== -log-symbols@4.0.0, log-symbols@^4.0.0: +log-symbols@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== @@ -11319,7 +11900,7 @@ mkdirp@0.3.0: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.0: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -11490,6 +12071,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -12068,6 +12654,11 @@ object-hash@^2.0.3: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== +object-inspect@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + object-inspect@^1.7.0, object-inspect@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" @@ -12202,6 +12793,18 @@ optimize-css-assets-webpack-plugin@^5.0.1: cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -12807,13 +13410,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - popper.js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -13410,6 +14006,11 @@ precond@0.2: resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -13420,16 +14021,23 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + prettier@^1.18.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" - integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== - pretty-bytes@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" @@ -13482,6 +14090,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -13703,6 +14316,11 @@ r7insight_node@2.1.0: lodash "^4.17.15" reconnect-core "^1.3.0" +ramda@^0.27.1: + version "0.27.2" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" + integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -14045,6 +14663,11 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +regexpp@^3.1.0, regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" @@ -14212,6 +14835,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -14234,6 +14862,11 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -14244,10 +14877,12 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-global@1.0.0, resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" resolve-url@^0.2.1: version "0.2.1" @@ -14327,6 +14962,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -14468,13 +15108,20 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^6.6.3, rxjs@^6.6.6: +rxjs@^6.6.3: version "6.6.6" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== dependencies: tslib "^1.9.0" +rxjs@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + dependencies: + tslib "^2.1.0" + sade@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" @@ -14589,11 +15236,6 @@ semantic-release@^17.2.4: signale "^1.2.1" yargs "^16.2.0" -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -14638,6 +15280,13 @@ semver@7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@7.3.5, semver@^7.2.1, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -14650,13 +15299,6 @@ semver@^7.1.2, semver@^7.3.2: dependencies: lru-cache "^6.0.0" -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -14875,6 +15517,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -15280,7 +15930,7 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -string-argv@0.3.1: +string-argv@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== @@ -15343,6 +15993,15 @@ string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" + integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -15396,15 +16055,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - stringify-package@^1.0.0, stringify-package@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" @@ -15445,6 +16095,13 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -15496,7 +16153,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -15613,6 +16270,11 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" + integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== + supports-hyperlinks@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" @@ -15650,6 +16312,17 @@ symbol-observable@^1.1.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +table@^6.0.9: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + tailwindcss-inset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tailwindcss-inset/-/tailwindcss-inset-1.0.0.tgz#4416b8ed26a2a3f3cc6f94f670ca0fa58353dbc4" @@ -16014,7 +16687,7 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -ts-node@10.5.0: +ts-node@10.5.0, ts-node@^10.5.0: version "10.5.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.5.0.tgz#618bef5854c1fbbedf5e31465cbb224a1d524ef9" integrity sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw== @@ -16033,10 +16706,10 @@ ts-node@10.5.0: v8-compile-cache-lib "^3.0.0" yn "3.1.1" -tsconfig-paths@3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" + integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" @@ -16053,41 +16726,20 @@ tslib@2.3.0, tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tslib@^1.13.0, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslint@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" - integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.3" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.13.0" - tsutils "^2.29.0" +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" +tslib@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== tsutils@^3.21.0: version "3.21.0" @@ -16113,6 +16765,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -16133,6 +16792,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -16173,7 +16837,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.5.5: +typescript@4.5.5, typescript@^4.4.3: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== @@ -16547,6 +17211,11 @@ v8-compile-cache-lib@^3.0.0: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -16995,6 +17664,11 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -17306,7 +17980,7 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.3.0: +yargs@^17.0.0, yargs@^17.3.0: version "17.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==