Deployed the page to Github Pages.
This commit is contained in:
parent
1d79754e93
commit
2c89899458
62797 changed files with 6551425 additions and 15279 deletions
3
node_modules/logform/.babelrc
generated
vendored
Normal file
3
node_modules/logform/.babelrc
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"presets": ["@babel/preset-env"]
|
||||
}
|
7
node_modules/logform/.eslintrc
generated
vendored
Normal file
7
node_modules/logform/.eslintrc
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"extends": "@dabh/eslint-config-populist",
|
||||
"rules": {
|
||||
"no-undefined": 0,
|
||||
"strict": 0
|
||||
}
|
||||
}
|
1
node_modules/logform/.gitattributes
generated
vendored
Normal file
1
node_modules/logform/.gitattributes
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
package-lock.json binary
|
309
node_modules/logform/CHANGELOG.md
generated
vendored
Normal file
309
node_modules/logform/CHANGELOG.md
generated
vendored
Normal file
|
@ -0,0 +1,309 @@
|
|||
# CHANGELOG
|
||||
|
||||
### [2.5.1](https://github.com/winstonjs/logform/compare/v2.5.0...v2.5.1)
|
||||
**2023/02/07**
|
||||
## Bugfix
|
||||
The triple-beam types package has been promoted to a full dependency, by first-time contributor @carboneater (Thanks!)
|
||||
in https://github.com/winstonjs/logform/pull/243 to fix https://github.com/winstonjs/logform/issues/242.
|
||||
|
||||
### [2.5.0](https://github.com/winstonjs/logform/compare/v2.4.2...v2.5.0)
|
||||
**2023/02/06**
|
||||
## Most Important:
|
||||
* Now incompatible with TypeScript < 4.4 due to [PR #240](https://github.com/winstonjs/logform/pull/240), as pointed out in [#244](https://github.com/winstonjs/logform/issues/244).
|
||||
|
||||
## Improvements
|
||||
All the improvements in this release are from first-time contributors - thanks for your contributions!
|
||||
* Feature - optionally include Error.cause property by @davidnbooth in https://github.com/winstonjs/logform/pull/226
|
||||
* Add triple beam properties to types by @robinpokorny in https://github.com/winstonjs/logform/pull/194
|
||||
* TransformableInfo should support symbols as keys by @dancrumb in https://github.com/winstonjs/logform/pull/240
|
||||
|
||||
## Dependency updates by @dependabot
|
||||
* Bump @babel/cli from 7.18.6 to 7.19.3 by @dependabot in https://github.com/winstonjs/logform/pull/214
|
||||
* Bump @babel/core from 7.18.6 to 7.20.12 by @dependabot in https://github.com/winstonjs/logform/pull/212
|
||||
and https://github.com/winstonjs/logform/pull/237
|
||||
* Bump @babel/preset-env from 7.18.6 to 7.20.2 by @dependabot in https://github.com/winstonjs/logform/pull/217
|
||||
and https://github.com/winstonjs/logform/pull/225
|
||||
* Bump eslint from 8.19.0 to 8.33.0 by @dependabot in https://github.com/winstonjs/logform/pull/215
|
||||
and https://github.com/winstonjs/logform/pull/241
|
||||
* Bump mocha from 10.0.0 to 10.2.0 by @dependabot in https://github.com/winstonjs/logform/pull/218
|
||||
and https://github.com/winstonjs/logform/pull/232
|
||||
* Bump safe-stable-stringify from 2.3.1 to 2.4.2 by @dependabot in https://github.com/winstonjs/logform/pull/206
|
||||
and https://github.com/winstonjs/logform/pull/235
|
||||
|
||||
### [2.4.2](https://github.com/winstonjs/logform/compare/v2.4.1...v2.4.2)
|
||||
**2022/07/05**
|
||||
## Bugfixes
|
||||
This patch-level release includes a fix for a crash on attempt to uncolorize Symbol.
|
||||
Thanks to @Alexsey for that first contribution in https://github.com/winstonjs/logform/pull/188.
|
||||
|
||||
## Maintainability updates:
|
||||
Line break styles were changed to be LF (instead of CRLF) more consistently so that linter warnings
|
||||
aren't drowned out by notes about that.
|
||||
|
||||
## Dependency updates by @dependabot
|
||||
* @babel/cli from 7.17.10 to 7.18.6 in https://github.com/winstonjs/logform/pull/187
|
||||
* @babel/core from 7.18.5 to 7.18.6 in https://github.com/winstonjs/logform/pull/185
|
||||
* @babel/preset-env from 7.18.2 to 7.18.6 in https://github.com/winstonjs/logform/pull/184
|
||||
* eslint from 8.18.0 to 8.19.0 in https://github.com/winstonjs/logform/pull/186
|
||||
|
||||
### 2.4.1
|
||||
**2022/06/21**
|
||||
|
||||
- [#178] Change TransformableInfo message prop to any: Loosening types to fix #172 (thanks, @gregbair!)
|
||||
- [#149] Adopted issue templates for reporting issues, affects GitHub project management only (thanks, @maverick1872!)
|
||||
- Updated dependencies, from dependabot
|
||||
|
||||
### 2.4.0
|
||||
**2022/02/12**
|
||||
|
||||
- Updated all dependencies
|
||||
- [#135] Use CLI levels (not NPM levels) in `CliFormat` (this was likely a typo originally)
|
||||
- [#134] Expose `safe-stable-stringify` 2.x options as parameters in `JsonOptions`
|
||||
|
||||
### 2.3.2
|
||||
**2022/01/09**
|
||||
|
||||
This update, which also used up version number 2.3.1, pinned the version of the `colors` dependency
|
||||
due to vandalism by a developer of that package, as noted [here](https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/).
|
||||
[As discussed in the `winston` package](https://github.com/winstonjs/winston/issues/2011), all users should update to this (or a later version, should one exist) ASAP.
|
||||
|
||||
### 2.3.0
|
||||
**2021/09/21**
|
||||
|
||||
- Update dependencies
|
||||
- Removing some superfluous semicolons & commas lint
|
||||
- Avoid dynamic requires [#117]
|
||||
- Replace JSON stringify library "fast-safe-stringify" by "safe-stable-stringify" [#98]
|
||||
- More correctly format errors even if the “message” property is enumerable [#101]
|
||||
- Fix errors and ms export for browsers [#106]
|
||||
|
||||
### 2.2.0
|
||||
**2020/06/21**
|
||||
|
||||
- [#90], [#91] Add option for using stable stringify when formatting as JSON.
|
||||
- [#84] Add replacer for BigInt on JSON formatter.
|
||||
- [#79] Timestamp format type definitions can accept functions.
|
||||
- Update dependencies and fix most of the oustanding npm audit notices.
|
||||
|
||||
### 2.1.2
|
||||
**2019/01/31**
|
||||
|
||||
- [#74] Remove all internal symbols before invoking `util.inspect`.
|
||||
- Related to [#31].
|
||||
|
||||
### 2.1.1
|
||||
**2019/01/29**
|
||||
|
||||
- [#71] Bump logform to be consistent with winston.
|
||||
- Fixes https://github.com/winstonjs/winston/issues/1584
|
||||
|
||||
### 2.1.0
|
||||
**2019/01/07**
|
||||
|
||||
- [#59], [#68], [#69] Add error normalizing format.
|
||||
- [#65] When MESSAGE symbol has a value and `{ all: true }` is set, colorize the entire serialized message.
|
||||
|
||||
### 2.0.0
|
||||
**2018/12/23**
|
||||
|
||||
- **BREAKING** [#57] Try better fix for [winston#1485]. See:
|
||||
[New `splat` behavior`](#new-splat-behavior) below.
|
||||
- [#54] Fix typo in `README.md`
|
||||
- [#55] Strip info[LEVEL] in prettyPrint. Fixes [#31].
|
||||
- [#56] Document built-in formats.
|
||||
- [#64] Add TypeScript definitions for all format options.
|
||||
Relates to [#9] and [#48].
|
||||
|
||||
#### New `splat` behavior
|
||||
|
||||
Previously `splat` would have added a `meta` property for any additional
|
||||
`info[SPLAT]` beyond the expected number of tokens.
|
||||
|
||||
**As of `logform@2.0.0`,** `format.splat` assumes additional splat paramters
|
||||
(aka "metas") are objects and merges enumerable properties into the `info`.
|
||||
e.g.
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
const { splat } = format;
|
||||
const { MESSAGE, LEVEL, SPLAT } = require('triple-beam');
|
||||
|
||||
console.log(
|
||||
// Expects two tokens, but three splat parameters provided.
|
||||
splat().transform({
|
||||
level: 'info',
|
||||
message: 'Let us %s for %j',
|
||||
[LEVEL]: 'info',
|
||||
[MESSAGE]: 'Let us %s for %j',
|
||||
[SPLAT]: ['objects', { label: 'sure' }, { thisIsMeta: 'wut' }]
|
||||
})
|
||||
);
|
||||
|
||||
// logform@1.x behavior:
|
||||
// Added "meta" property.
|
||||
//
|
||||
// { level: 'info',
|
||||
// message: 'Let us objects for {"label":"sure"}',
|
||||
// meta: { thisIsMeta: 'wut' },
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]: 'Let us %s for %j',
|
||||
// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] }
|
||||
|
||||
// logform@2.x behavior:
|
||||
// Enumerable properties assigned into `info`.
|
||||
//
|
||||
// { level: 'info',
|
||||
// message: 'Let us objects for {"label":"sure"}',
|
||||
// thisIsMeta: 'wut',
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]: 'Let us %s for %j',
|
||||
// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] }
|
||||
```
|
||||
|
||||
The reason for this change is to be consistent with how `winston` itself
|
||||
handles `meta` objects in its variable-arity conventions.
|
||||
|
||||
**BE ADVISED** previous "metas" that _were not objects_ will very likely lead
|
||||
to odd behavior. e.g.
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
const { splat } = format;
|
||||
const { MESSAGE, LEVEL, SPLAT } = require('triple-beam');
|
||||
|
||||
console.log(
|
||||
// Expects two tokens, but three splat parameters provided.
|
||||
splat().transform({
|
||||
level: 'info',
|
||||
message: 'Let us %s for %j',
|
||||
[LEVEL]: 'info',
|
||||
[MESSAGE]: 'Let us %s for %j',
|
||||
// !!NOTICE!! Additional parameters are a string and an Array
|
||||
[SPLAT]: ['objects', { label: 'sure' }, 'lol', ['ok', 'why']]
|
||||
})
|
||||
);
|
||||
|
||||
// logform@1.x behavior:
|
||||
// Added "meta" property.
|
||||
//
|
||||
// { level: 'info',
|
||||
// message: 'Let us objects for {"label":"sure"}',
|
||||
// meta: ['lol', ['ok', 'why']],
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]: 'Let us %s for %j',
|
||||
// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] }
|
||||
|
||||
// logform@2.x behavior: Enumerable properties assigned into `info`.
|
||||
// **Strings and Arrays only have NUMERIC enumerable properties!**
|
||||
//
|
||||
// { '0': 'ok',
|
||||
// '1': 'why',
|
||||
// '2': 'l',
|
||||
// level: 'info',
|
||||
// message: 'Let us objects for {"label":"sure"}',
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]: 'Let us %s for %j',
|
||||
// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] }
|
||||
```
|
||||
|
||||
### 1.10.0
|
||||
**2018/09/17**
|
||||
|
||||
- [#52] Add types field in package.json.
|
||||
- [#46], [#49] Changes for splat when there are no tokens present and no splat present.
|
||||
- [#47], [#53] Expose transpiled code for Browser-only scenarios.
|
||||
|
||||
### 1.9.1
|
||||
**2018/06/26**
|
||||
|
||||
- [#39] Don't break when there are % placeholders but no values.
|
||||
- [#42] Only set `meta` when non-zero additional `SPLAT` arguments are
|
||||
provided. (Fixes [winstonjs/winston#1358]).
|
||||
|
||||
### 1.9.0
|
||||
**2018/06/12**
|
||||
|
||||
- [#38] Migrate functionality from winston Logger to splat format.
|
||||
- [#37] Match expectations from `winston@2.x` for padLevels. Create a correct `Cli` format with initial state. (Fixes [#36]).
|
||||
|
||||
### 1.8.0
|
||||
**2018/06/11**
|
||||
|
||||
- [#35] Use `fast-safe-stringify` for perf and to support circular refs.
|
||||
- [#34] Colorize level symbol.
|
||||
|
||||
### 1.7.0
|
||||
**2018/05/24**
|
||||
|
||||
- [#28] Use more es6-features across the board.
|
||||
- [#30] Fix combine return value.
|
||||
- [#29] Add metadata function to format namespace.
|
||||
|
||||
### 1.6.0
|
||||
**2018/04/25**
|
||||
|
||||
- [#25] Implement padLevels format.
|
||||
- [#26] Update `dependencies` and add `node@10` to the travis build of the project.
|
||||
- [#27] Refactor logform to use triple-beam.
|
||||
|
||||
### 1.5.0
|
||||
**2018/04/22**
|
||||
|
||||
- [#23], (@ChrisAlderson) Add ms format to support '+N ms' format. Fixes #20.
|
||||
- [#24], (@aneilbaboo) Fix `webpack` warnings.
|
||||
- Add `.travis.yml`.
|
||||
|
||||
### 1.4.2
|
||||
**2018/04/19**
|
||||
|
||||
- [#22], (@Jasu) Fix compilation on Babel 6.
|
||||
|
||||
### 1.4.1
|
||||
**2018/04/06**
|
||||
|
||||
- [#21], (@dabh) Add tsconfig.json. Fixes #19.
|
||||
|
||||
### 1.4.0
|
||||
**2018/03/23**
|
||||
|
||||
- [#14] @iamkirkbater Added Initial Metadata Support.
|
||||
- Correct JSDoc for printf.js. Fixes #10.
|
||||
|
||||
### 1.3.0
|
||||
**2018/03/16**
|
||||
|
||||
- [#18] Expose browser.js for rollup and the like. Fixes [#5].
|
||||
- [#13] @dabh Use new version of colors.
|
||||
- [#15] @dabh Add Typescript typings (ported from DefinitelyTyped).
|
||||
- [#17], [#16] Fix error messages other typos.
|
||||
|
||||
### 1.2.2
|
||||
**2017/12/05**
|
||||
|
||||
- [#4], [#11] Fix timestamp and replace `date-fns` with `fecha` (with test cases) [`@ChrisAlderson`].
|
||||
|
||||
### 1.2.1
|
||||
**2017/10/01**
|
||||
|
||||
- [#3] Strip `info.splat` in `format.simple` to avoid double inclusion.
|
||||
|
||||
### 1.2.0
|
||||
**2017/09/30**
|
||||
|
||||
- Transition from `info.raw` to `info[Symbol.for('message')]`.
|
||||
- Finish `README.md` except for full list of all built-in formats.
|
||||
- 100% coverage for everything except for `{ align, cli, padLevels }`.
|
||||
|
||||
### 1.1.0
|
||||
**2017/09/29**
|
||||
|
||||
- [#2] Add baseline expected formats that were previously exposed as options to `common.log` in `winston@2.x` and below.
|
||||
- [#2] Introduce `format.combine` to remove inconsistency in behavior between `format(fn0)` and `format(fn0, ...moreFns)`.
|
||||
- [#2] `README.md` now covers all of the basics for `logform`.
|
||||
|
||||
### 1.0.0
|
||||
**2017/09/26**
|
||||
|
||||
- Initial release.
|
||||
|
||||
[winstonjs/winston#1358]: https://github.com/winstonjs/winston/issues/1358
|
21
node_modules/logform/LICENSE
generated
vendored
Normal file
21
node_modules/logform/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017 Charlie Robbins & the Contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
653
node_modules/logform/README.md
generated
vendored
Normal file
653
node_modules/logform/README.md
generated
vendored
Normal file
|
@ -0,0 +1,653 @@
|
|||
# logform
|
||||
|
||||
A mutable object-based log format designed for chaining & objectMode streams.
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
|
||||
const alignedWithColorsAndTime = format.combine(
|
||||
format.colorize(),
|
||||
format.timestamp(),
|
||||
format.align(),
|
||||
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
|
||||
);
|
||||
```
|
||||
|
||||
- [`info` Objects](#info-objects)
|
||||
- [Understanding formats](#understanding-formats)
|
||||
- [Combining formats](#combining-formats)
|
||||
- [Filtering `info` objects](#filtering-info-objects)
|
||||
- [Formats](#formats)
|
||||
- [Align](#align)
|
||||
- [CLI](#cli)
|
||||
- [Colorize](#colorize)
|
||||
- [Combine](#combine)
|
||||
- [Errors](#errors)
|
||||
- [JSON](#json)
|
||||
- [Label](#label)
|
||||
- [Logstash](#logstash)
|
||||
- [Metadata](#metadata)
|
||||
- [PadLevels](#padlevels)
|
||||
- [PrettyPrint](#prettyprint)
|
||||
- [Printf](#printf)
|
||||
- [Simple](#simple)
|
||||
- [Splat](#splat)
|
||||
- [Timestamp](#timestamp)
|
||||
- [Uncolorize](#uncolorize)
|
||||
|
||||
## `info` Objects
|
||||
|
||||
The `info` parameter provided to a given format represents a single log
|
||||
message. The object itself is mutable. Every `info` must have at least the
|
||||
`level` and `message` properties:
|
||||
|
||||
``` js
|
||||
const info = {
|
||||
level: 'info', // Level of the logging message
|
||||
message: 'Hey! Log something?' // Descriptive message being logged.
|
||||
}
|
||||
```
|
||||
|
||||
Properties **besides level and message** are considered as "`meta`". i.e.:
|
||||
|
||||
``` js
|
||||
const { level, message, ...meta } = info;
|
||||
```
|
||||
|
||||
Several of the formats in `logform` itself add additional properties:
|
||||
|
||||
| Property | Format added by | Description |
|
||||
| ----------- | --------------- | ----------- |
|
||||
| `splat` | `splat()` | String interpolation splat for `%d %s`-style messages. |
|
||||
| `timestamp` | `timestamp()` | timestamp the message was received. |
|
||||
| `label` | `label()` | Custom label associated with each message. |
|
||||
| `ms` | `ms()` | Number of milliseconds since the previous log message. |
|
||||
|
||||
As a consumer you may add whatever properties you wish – _internal state is
|
||||
maintained by `Symbol` properties:_
|
||||
|
||||
- `Symbol.for('level')` _**(READ-ONLY)**:_ equal to `level` property.
|
||||
**Is treated as immutable by all code.**
|
||||
- `Symbol.for('message'):` complete string message set by "finalizing formats":
|
||||
- `json`
|
||||
- `logstash`
|
||||
- `printf`
|
||||
- `prettyPrint`
|
||||
- `simple`
|
||||
- `Symbol.for('splat')`: additional string interpolation arguments. _Used
|
||||
exclusively by `splat()` format._
|
||||
|
||||
These Symbols are stored in another package: `triple-beam` so that all
|
||||
consumers of `logform` can have the same Symbol reference. i.e.:
|
||||
|
||||
``` js
|
||||
const { LEVEL, MESSAGE, SPLAT } = require('triple-beam');
|
||||
|
||||
console.log(LEVEL === Symbol.for('level'));
|
||||
// true
|
||||
|
||||
console.log(MESSAGE === Symbol.for('message'));
|
||||
// true
|
||||
|
||||
console.log(SPLAT === Symbol.for('splat'));
|
||||
// true
|
||||
```
|
||||
|
||||
## Understanding formats
|
||||
|
||||
Formats are prototypal objects (i.e. class instances) that define a single method: `transform(info, opts)` and return the mutated `info`
|
||||
|
||||
- `info`: an object representing the log message.
|
||||
- `opts`: setting specific to the current instance of the format.
|
||||
|
||||
They are expected to return one of two things:
|
||||
|
||||
- **An `info` Object** representing the modified `info` argument. Object references need not be preserved if immutability is preferred. All current built-in formats consider `info` mutable, but [immutablejs] is being considered for future releases.
|
||||
- **A falsey value** indicating that the `info` argument should be ignored by the caller. (See: [Filtering `info` Objects](#filtering-info-objects)) below.
|
||||
|
||||
`logform.format` is designed to be as simple as possible. To define a new format simple pass it a `transform(info, opts)` function to get a new `Format`.
|
||||
|
||||
The named `Format` returned can be used to create as many copies of the given `Format` as desired:
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
|
||||
const volume = format((info, opts) => {
|
||||
if (opts.yell) {
|
||||
info.message = info.message.toUpperCase();
|
||||
} else if (opts.whisper) {
|
||||
info.message = info.message.toLowerCase();
|
||||
}
|
||||
|
||||
return info;
|
||||
});
|
||||
|
||||
// `volume` is now a function that returns instances of the format.
|
||||
const scream = volume({ yell: true });
|
||||
console.dir(scream.transform({
|
||||
level: 'info',
|
||||
message: `sorry for making you YELL in your head!`
|
||||
}, scream.options));
|
||||
// {
|
||||
// level: 'info'
|
||||
// message: 'SORRY FOR MAKING YOU YELL IN YOUR HEAD!'
|
||||
// }
|
||||
|
||||
// `volume` can be used multiple times to create different formats.
|
||||
const whisper = volume({ whisper: true });
|
||||
console.dir(whisper.transform({
|
||||
level: 'info',
|
||||
message: `WHY ARE THEY MAKING US YELL SO MUCH!`
|
||||
}), whisper.options);
|
||||
// {
|
||||
// level: 'info'
|
||||
// message: 'why are they making us yell so much!'
|
||||
// }
|
||||
```
|
||||
|
||||
### Combining formats
|
||||
|
||||
Any number of formats may be combined into a single format using `format.combine`. Since `format.combine` takes no `opts`, as a convenience it returns pre-created instance of the combined format.
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
const { combine, timestamp, label } = format;
|
||||
|
||||
const labelTimestamp = combine(
|
||||
label({ label: 'right meow!' }),
|
||||
timestamp()
|
||||
);
|
||||
|
||||
const info = labelTimestamp.transform({
|
||||
level: 'info',
|
||||
message: 'What time is the testing at?'
|
||||
});
|
||||
|
||||
console.dir(info);
|
||||
// { level: 'info',
|
||||
// message: 'What time is the testing at?',
|
||||
// label: 'right meow!',
|
||||
// timestamp: '2017-09-30T03:57:26.875Z' }
|
||||
```
|
||||
|
||||
### Filtering `info` Objects
|
||||
|
||||
If you wish to filter out a given `info` Object completely then simply return a falsey value.
|
||||
|
||||
``` js
|
||||
const ignorePrivate = format((info, opts) => {
|
||||
if (info.private) { return false; }
|
||||
return info;
|
||||
});
|
||||
|
||||
console.dir(ignorePrivate.transform({
|
||||
level: 'error',
|
||||
message: 'Public error to share'
|
||||
}));
|
||||
// { level: 'error', message: 'Public error to share' }
|
||||
|
||||
console.dir(ignorePrivate.transform({
|
||||
level: 'error',
|
||||
private: true,
|
||||
message: 'This is super secret - hide it.'
|
||||
}));
|
||||
// false
|
||||
```
|
||||
|
||||
Use of `format.combine` will respect any falsey values return and stop evaluation of later formats in the series. For example:
|
||||
|
||||
``` js
|
||||
const { format } = require('logform');
|
||||
const { combine, timestamp, label } = format;
|
||||
|
||||
const willNeverThrow = format.combine(
|
||||
format(info => { return false })(), // Ignores everything
|
||||
format(info => { throw new Error('Never reached') })()
|
||||
);
|
||||
|
||||
console.dir(willNeverThrow.transform({
|
||||
level: 'info',
|
||||
message: 'wow such testing'
|
||||
}))
|
||||
```
|
||||
|
||||
## Formats
|
||||
|
||||
### Align
|
||||
|
||||
The `align` format adds a `\t` delimiter before the message to align it in the same place.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const alignFormat = format.align();
|
||||
|
||||
const info = alignFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info', message: '\tmy message' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ align: true }` in `winston < 3.0.0`.
|
||||
|
||||
### CLI
|
||||
|
||||
The `cli` format is a combination of the `colorize` and the `padLevels` formats. It turns a log `info` object into the same format previously available in `winston.cli()` in `winston < 3.0.0`.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const LEVEL = Symbol.for('level');
|
||||
|
||||
const cliFormat = format.cli({ colors: { info: 'blue' }});
|
||||
|
||||
const info = cliFormat.transform({
|
||||
[LEVEL]: 'info',
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
}, { all: true });
|
||||
|
||||
console.log(info);
|
||||
// { level: '\u001b[34minfo\u001b[39m',
|
||||
// message: '\u001b[34m my message\u001b[39m',
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]:
|
||||
// '\u001b[34minfo\u001b[39m:\u001b[34m my message\u001b[39m' }
|
||||
```
|
||||
|
||||
### Colorize
|
||||
|
||||
The `colorize` format adds different colors depending on the log level to the message and/or level.
|
||||
It accepts the following options:
|
||||
|
||||
* **level**: If set to `true` the color will be applied to the `level`.
|
||||
* **all**: If set to `true` the color will be applied to the `message` and `level`.
|
||||
* **message**: If set to `true` the color will be applied to the `message`.
|
||||
* **colors**: An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const LEVEL = Symbol.for('level');
|
||||
|
||||
const colorizeFormat = format.colorize({ colors: { info: 'blue' }});
|
||||
|
||||
const info = colorizeFormat.transform({
|
||||
[LEVEL]: 'info',
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
}, { all: true });
|
||||
|
||||
console.log(info);
|
||||
// { level: '\u001b[34minfo\u001b[39m',
|
||||
// message: '\u001b[34mmy message\u001b[39m',
|
||||
// [Symbol(level)]: 'info' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ colorize: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
### Combine
|
||||
|
||||
The `combine` Format allows to combine multiple formats:
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const { combine, timestamp, json } = format;
|
||||
|
||||
const jsonWithTimestamp = combine(
|
||||
timestamp(),
|
||||
json()
|
||||
);
|
||||
|
||||
const info = jsonWithTimestamp.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message',
|
||||
// timestamp: '2018-10-02T15:03:14.230Z',
|
||||
// [Symbol(message)]:
|
||||
// '{"level":"info","message":"my message","timestamp":"2018-10-02T15:03:14.230Z"}' }
|
||||
```
|
||||
|
||||
### Errors
|
||||
|
||||
The `errors` format allows you to pass in an instance of a JavaScript `Error`
|
||||
directly to the logger. It allows you to specify whether not to include the
|
||||
stack-trace.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const { errors } = format;
|
||||
|
||||
const errorsFormat = errors({ stack: true })
|
||||
|
||||
const info = errorsFormat.transform(new Error('Oh no!'));
|
||||
|
||||
console.log(info);
|
||||
// Error: Oh no!
|
||||
// at repl:1:13
|
||||
// at ContextifyScript.Script.runInThisContext (vm.js:50:33)
|
||||
// at REPLServer.defaultEval (repl.js:240:29)
|
||||
// at bound (domain.js:301:14)
|
||||
// at REPLServer.runBound [as eval] (domain.js:314:12)
|
||||
// at REPLServer.onLine (repl.js:468:10)
|
||||
// at emitOne (events.js:121:20)
|
||||
// at REPLServer.emit (events.js:211:7)
|
||||
// at REPLServer.Interface._onLine (readline.js:282:10)
|
||||
// at REPLServer.Interface._line (readline.js:631:8)
|
||||
```
|
||||
|
||||
It will also handle `{ message }` properties as `Error` instances:
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const { errors } = format;
|
||||
|
||||
const errorsFormat = errors({ stack: true })
|
||||
|
||||
const info = errorsFormat.transform({
|
||||
message: new Error('Oh no!')
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// Error: Oh no!
|
||||
// at repl:1:13
|
||||
// at ContextifyScript.Script.runInThisContext (vm.js:50:33)
|
||||
// at REPLServer.defaultEval (repl.js:240:29)
|
||||
// at bound (domain.js:301:14)
|
||||
// at REPLServer.runBound [as eval] (domain.js:314:12)
|
||||
// at REPLServer.onLine (repl.js:468:10)
|
||||
// at emitOne (events.js:121:20)
|
||||
// at REPLServer.emit (events.js:211:7)
|
||||
// at REPLServer.Interface._onLine (readline.js:282:10)
|
||||
// at REPLServer.Interface._line (readline.js:631:8)
|
||||
```
|
||||
|
||||
### JSON
|
||||
|
||||
The `json` format uses `safe-stable-stringify` to finalize the message.
|
||||
It accepts the following options:
|
||||
|
||||
* **replacer**: A function that influences how the `info` is stringified.
|
||||
* **space**: The number of white space used to format the json.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const jsonFormat = format.json();
|
||||
|
||||
const info = jsonFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message',
|
||||
});
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message',
|
||||
// [Symbol(message)]: '{"level":"info","message":"my message"}' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ json: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
### Label
|
||||
|
||||
The `label` format adds the specified `label` before the message or adds it to the `info` object.
|
||||
It accepts the following options:
|
||||
|
||||
* **label**: A label to be added before the message.
|
||||
* **message**: If set to `true` the `label` will be added to `info.message`. If set to `false` the `label` will be added as `info.label`.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const labelFormat = format.label();
|
||||
|
||||
const info = labelFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
}, { label: 'my label', message: true });
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info', message: '[my label] my message' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ label: 'my label' }` to transports in `winston < 3.0.0`.
|
||||
|
||||
### Logstash
|
||||
|
||||
The `logstash` Format turns a log `info` object into pure JSON with the appropriate logstash options.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const { logstash, combine, timestamp } = format;
|
||||
|
||||
const logstashFormat = combine(
|
||||
timestamp(),
|
||||
logstash()
|
||||
);
|
||||
|
||||
const info = logstashFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// [Symbol(message)]:
|
||||
// '{"@message":"my message","@timestamp":"2018-10-02T11:04:52.915Z","@fields":{"level":"info"}}' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ logstash: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
### Metadata
|
||||
|
||||
The `metadata` format adds a metadata object to collect extraneous data, similar to the metadata object in winston 2.x.
|
||||
It accepts the following options:
|
||||
|
||||
* **key**: The name of the key used for the metadata object. Defaults to `metadata`.
|
||||
* **fillExcept**: An array of keys that should not be added to the metadata object.
|
||||
* **fillWith**: An array of keys that will be added to the metadata object.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const metadataFormat = format.metadata();
|
||||
|
||||
const info = metadataFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message',
|
||||
meta: 42
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info', message: 'my message', metadata: { meta: 42 } }
|
||||
```
|
||||
|
||||
### PadLevels
|
||||
|
||||
The `padLevels` format pads levels to be the same length.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const LEVEL = Symbol.for('level');
|
||||
|
||||
const padLevelsFormat = format.padLevels();
|
||||
|
||||
const info = padLevelsFormat.transform({
|
||||
[LEVEL]: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { message: ' my message', [Symbol(level)]: 'info' }
|
||||
```
|
||||
|
||||
This was previously exposed as `{ padLevels: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
### PrettyPrint
|
||||
|
||||
The `prettyPrint` format finalizes the message using `util.inspect`.
|
||||
It accepts the following options:
|
||||
|
||||
* **depth**: A `number` that specifies the maximum depth of the `info` object being stringified by `util.inspect`. Defaults to `2`.
|
||||
* **colorize**: Colorizes the message if set to `true`. Defaults to `false`.
|
||||
|
||||
The `prettyPrint` format should not be used in production because it may impact performance negatively and block the event loop.
|
||||
|
||||
> **NOTE:** the `LEVEL`, `MESSAGE`, and `SPLAT` symbols are stripped from the
|
||||
> output message _by design._
|
||||
|
||||
This was previously exposed as `{ prettyPrint: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const prettyPrintFormat = format.prettyPrint();
|
||||
|
||||
const info = prettyPrintFormat.transform({
|
||||
[LEVEL]: 'info',
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message',
|
||||
// [Symbol(level)]: 'info',
|
||||
// [Symbol(message)]: '{ level: \'info\', message: \'my message\' }' }
|
||||
```
|
||||
|
||||
### Printf
|
||||
|
||||
The `printf` format allows to create a custom logging format:
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const myFormat = format.printf((info) => {
|
||||
return `${info.level} ${info.message}`;
|
||||
})
|
||||
|
||||
const info = myFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message',
|
||||
// [Symbol(message)]: 'info my message' }
|
||||
```
|
||||
|
||||
### Simple
|
||||
|
||||
The `simple` format finalizes the `info` object using the format: `level: message stringifiedRest`.
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
const MESSAGE = Symbol.for('message');
|
||||
|
||||
const simpleFormat = format.simple();
|
||||
|
||||
const info = simpleFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message',
|
||||
number: 123
|
||||
});
|
||||
console.log(info[MESSAGE]);
|
||||
// info: my message {number:123}
|
||||
```
|
||||
|
||||
### Splat
|
||||
|
||||
The `splat` format transforms the message by using `util.format` to complete any `info.message` provided it has string interpolation tokens.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const splatFormat = format.splat();
|
||||
|
||||
const info = splatFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message %s',
|
||||
splat: ['test']
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info', message: 'my message test', splat: [ 'test' ] }
|
||||
```
|
||||
|
||||
Any additional splat parameters beyond those needed for the `%` tokens
|
||||
(aka "metas") are assumed to be objects. Their enumerable properties are
|
||||
merged into the `info`.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const splatFormat = format.splat();
|
||||
|
||||
const info = splatFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message %s',
|
||||
splat: ['test', { thisIsMeta: true }]
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message test',
|
||||
// thisIsMeta: true,
|
||||
// splat: [ 'test' ] }
|
||||
```
|
||||
|
||||
This was previously exposed implicitly in `winston < 3.0.0`.
|
||||
|
||||
### Timestamp
|
||||
|
||||
The `timestamp` format adds a timestamp to the info.
|
||||
It accepts the following options:
|
||||
|
||||
* **format**: Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha) module or a function that returns a formatted date. If no format is provided `new Date().toISOString()` will be used.
|
||||
* **alias**: The name of an alias for the timestamp property, that will be added to the `info` object.
|
||||
|
||||
```js
|
||||
const { format } = require('logform');
|
||||
|
||||
const timestampFormat = format.timestamp();
|
||||
|
||||
const info = timestampFormat.transform({
|
||||
level: 'info',
|
||||
message: 'my message'
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
// { level: 'info',
|
||||
// message: 'my message',
|
||||
// timestamp: '2018-10-02T11:47:02.682Z' }
|
||||
```
|
||||
|
||||
It was previously available in `winston < 3.0.0` as `{ timestamp: true }` and `{ timestamp: function:String }`.
|
||||
|
||||
|
||||
### Uncolorize
|
||||
|
||||
The `uncolorize` format strips colors from `info` objects.
|
||||
It accepts the following options:
|
||||
|
||||
* **level**: Disables the uncolorize format for `info.level` if set to `false`.
|
||||
* **message**: Disables the uncolorize format for `info.message` if set to `false`.
|
||||
* **raw**: Disables the uncolorize format for `info[MESSAGE]` if set to `false`.
|
||||
|
||||
This was previously exposed as `{ stripColors: true }` to transports in `winston < 3.0.0`.
|
||||
|
||||
## Tests
|
||||
|
||||
Tests are written with `mocha`, `assume`, and `nyc`. They can be run with `npm`:
|
||||
|
||||
```
|
||||
npm test
|
||||
```
|
||||
|
||||
##### LICENSE: MIT
|
||||
##### AUTHOR: [Charlie Robbins](https://github.com/indexzero)
|
14
node_modules/logform/align.js
generated
vendored
Normal file
14
node_modules/logform/align.js
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
|
||||
/*
|
||||
* function align (info)
|
||||
* Returns a new instance of the align Format which adds a `\t`
|
||||
* delimiter before the message to properly align it in the same place.
|
||||
* It was previously { align: true } in winston < 3.0.0
|
||||
*/
|
||||
module.exports = format(info => {
|
||||
info.message = `\t${info.message}`;
|
||||
return info;
|
||||
});
|
38
node_modules/logform/browser.js
generated
vendored
Normal file
38
node_modules/logform/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @property {function} format
|
||||
* Both the construction method and set of exposed
|
||||
* formats.
|
||||
*/
|
||||
const format = exports.format = require('././format');
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @method {function} levels
|
||||
* Registers the specified levels with logform.
|
||||
*/
|
||||
exports.levels = require('././levels');
|
||||
|
||||
//
|
||||
// Setup all transports as eager-loaded exports
|
||||
// so that they are static for the bundlers.
|
||||
//
|
||||
Object.defineProperty(format, 'align', { value: require('./align') });
|
||||
Object.defineProperty(format, 'cli', { value: require('./cli') });
|
||||
Object.defineProperty(format, 'colorize', { value: require('./colorize') });
|
||||
Object.defineProperty(format, 'combine', { value: require('./combine') });
|
||||
Object.defineProperty(format, 'errors', { value: require('./errors') });
|
||||
Object.defineProperty(format, 'json', { value: require('./json') });
|
||||
Object.defineProperty(format, 'label', { value: require('./label') });
|
||||
Object.defineProperty(format, 'logstash', { value: require('./logstash') });
|
||||
Object.defineProperty(format, 'metadata', { value: require('./metadata') });
|
||||
Object.defineProperty(format, 'ms', { value: require('./ms') });
|
||||
Object.defineProperty(format, 'padLevels', { value: require('./pad-levels') });
|
||||
Object.defineProperty(format, 'prettyPrint', { value: require('./pretty-print') });
|
||||
Object.defineProperty(format, 'printf', { value: require('./printf') });
|
||||
Object.defineProperty(format, 'simple', { value: require('./simple') });
|
||||
Object.defineProperty(format, 'splat', { value: require('./splat') });
|
||||
Object.defineProperty(format, 'timestamp', { value: require('./timestamp') });
|
||||
Object.defineProperty(format, 'uncolorize', { value: require('./uncolorize') });
|
52
node_modules/logform/cli.js
generated
vendored
Normal file
52
node_modules/logform/cli.js
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
'use strict';
|
||||
|
||||
const { Colorizer } = require('./colorize');
|
||||
const { Padder } = require('./pad-levels');
|
||||
const { configs, MESSAGE } = require('triple-beam');
|
||||
|
||||
|
||||
/**
|
||||
* Cli format class that handles initial state for a a separate
|
||||
* Colorizer and Padder instance.
|
||||
*/
|
||||
class CliFormat {
|
||||
constructor(opts = {}) {
|
||||
if (!opts.levels) {
|
||||
opts.levels = configs.cli.levels;
|
||||
}
|
||||
|
||||
this.colorizer = new Colorizer(opts);
|
||||
this.padder = new Padder(opts);
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/*
|
||||
* function transform (info, opts)
|
||||
* Attempts to both:
|
||||
* 1. Pad the { level }
|
||||
* 2. Colorize the { level, message }
|
||||
* of the given `logform` info object depending on the `opts`.
|
||||
*/
|
||||
transform(info, opts) {
|
||||
this.colorizer.transform(
|
||||
this.padder.transform(info, opts),
|
||||
opts
|
||||
);
|
||||
|
||||
info[MESSAGE] = `${info.level}:${info.message}`;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function cli (opts)
|
||||
* Returns a new instance of the CLI format that turns a log
|
||||
* `info` object into the same format previously available
|
||||
* in `winston.cli()` in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = opts => new CliFormat(opts);
|
||||
|
||||
//
|
||||
// Attach the CliFormat for registration purposes
|
||||
//
|
||||
module.exports.Format = CliFormat;
|
122
node_modules/logform/colorize.js
generated
vendored
Normal file
122
node_modules/logform/colorize.js
generated
vendored
Normal file
|
@ -0,0 +1,122 @@
|
|||
'use strict';
|
||||
|
||||
const colors = require('@colors/colors/safe');
|
||||
const { LEVEL, MESSAGE } = require('triple-beam');
|
||||
|
||||
//
|
||||
// Fix colors not appearing in non-tty environments
|
||||
//
|
||||
colors.enabled = true;
|
||||
|
||||
/**
|
||||
* @property {RegExp} hasSpace
|
||||
* Simple regex to check for presence of spaces.
|
||||
*/
|
||||
const hasSpace = /\s+/;
|
||||
|
||||
/*
|
||||
* Colorizer format. Wraps the `level` and/or `message` properties
|
||||
* of the `info` objects with ANSI color codes based on a few options.
|
||||
*/
|
||||
class Colorizer {
|
||||
constructor(opts = {}) {
|
||||
if (opts.colors) {
|
||||
this.addColors(opts.colors);
|
||||
}
|
||||
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds the colors Object to the set of allColors
|
||||
* known by the Colorizer
|
||||
*
|
||||
* @param {Object} colors Set of color mappings to add.
|
||||
*/
|
||||
static addColors(clrs) {
|
||||
const nextColors = Object.keys(clrs).reduce((acc, level) => {
|
||||
acc[level] = hasSpace.test(clrs[level])
|
||||
? clrs[level].split(hasSpace)
|
||||
: clrs[level];
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
Colorizer.allColors = Object.assign({}, Colorizer.allColors || {}, nextColors);
|
||||
return Colorizer.allColors;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds the colors Object to the set of allColors
|
||||
* known by the Colorizer
|
||||
*
|
||||
* @param {Object} colors Set of color mappings to add.
|
||||
*/
|
||||
addColors(clrs) {
|
||||
return Colorizer.addColors(clrs);
|
||||
}
|
||||
|
||||
/*
|
||||
* function colorize (lookup, level, message)
|
||||
* Performs multi-step colorization using @colors/colors/safe
|
||||
*/
|
||||
colorize(lookup, level, message) {
|
||||
if (typeof message === 'undefined') {
|
||||
message = level;
|
||||
}
|
||||
|
||||
//
|
||||
// If the color for the level is just a string
|
||||
// then attempt to colorize the message with it.
|
||||
//
|
||||
if (!Array.isArray(Colorizer.allColors[lookup])) {
|
||||
return colors[Colorizer.allColors[lookup]](message);
|
||||
}
|
||||
|
||||
//
|
||||
// If it is an Array then iterate over that Array, applying
|
||||
// the colors function for each item.
|
||||
//
|
||||
for (let i = 0, len = Colorizer.allColors[lookup].length; i < len; i++) {
|
||||
message = colors[Colorizer.allColors[lookup][i]](message);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
/*
|
||||
* function transform (info, opts)
|
||||
* Attempts to colorize the { level, message } of the given
|
||||
* `logform` info object.
|
||||
*/
|
||||
transform(info, opts) {
|
||||
if (opts.all && typeof info[MESSAGE] === 'string') {
|
||||
info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]);
|
||||
}
|
||||
|
||||
if (opts.level || opts.all || !opts.message) {
|
||||
info.level = this.colorize(info[LEVEL], info.level);
|
||||
}
|
||||
|
||||
if (opts.all || opts.message) {
|
||||
info.message = this.colorize(info[LEVEL], info.level, info.message);
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function colorize (info)
|
||||
* Returns a new instance of the colorize Format that applies
|
||||
* level colors to `info` objects. This was previously exposed
|
||||
* as { colorize: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = opts => new Colorizer(opts);
|
||||
|
||||
//
|
||||
// Attach the Colorizer for registration purposes
|
||||
//
|
||||
module.exports.Colorizer
|
||||
= module.exports.Format
|
||||
= Colorizer;
|
66
node_modules/logform/combine.js
generated
vendored
Normal file
66
node_modules/logform/combine.js
generated
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
|
||||
/*
|
||||
* function cascade(formats)
|
||||
* Returns a function that invokes the `._format` function in-order
|
||||
* for the specified set of `formats`. In this manner we say that Formats
|
||||
* are "pipe-like", but not a pure pumpify implementation. Since there is no back
|
||||
* pressure we can remove all of the "readable" plumbing in Node streams.
|
||||
*/
|
||||
function cascade(formats) {
|
||||
if (!formats.every(isValidFormat)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return info => {
|
||||
let obj = info;
|
||||
for (let i = 0; i < formats.length; i++) {
|
||||
obj = formats[i].transform(obj, formats[i].options);
|
||||
if (!obj) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* function isValidFormat(format)
|
||||
* If the format does not define a `transform` function throw an error
|
||||
* with more detailed usage.
|
||||
*/
|
||||
function isValidFormat(fmt) {
|
||||
if (typeof fmt.transform !== 'function') {
|
||||
throw new Error([
|
||||
'No transform function found on format. Did you create a format instance?',
|
||||
'const myFormat = format(formatFn);',
|
||||
'const instance = myFormat();'
|
||||
].join('\n'));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* function combine (info)
|
||||
* Returns a new instance of the combine Format which combines the specified
|
||||
* formats into a new format. This is similar to a pipe-chain in transform streams.
|
||||
* We choose to combine the prototypes this way because there is no back pressure in
|
||||
* an in-memory transform chain.
|
||||
*/
|
||||
module.exports = (...formats) => {
|
||||
const combinedFormat = format(cascade(formats));
|
||||
const instance = combinedFormat();
|
||||
instance.Format = combinedFormat.Format;
|
||||
return instance;
|
||||
};
|
||||
|
||||
//
|
||||
// Export the cascade method for use in cli and other
|
||||
// combined formats that should not be assumed to be
|
||||
// singletons.
|
||||
//
|
||||
module.exports.cascade = cascade;
|
14
node_modules/logform/dist/align.js
generated
vendored
Normal file
14
node_modules/logform/dist/align.js
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
|
||||
/*
|
||||
* function align (info)
|
||||
* Returns a new instance of the align Format which adds a `\t`
|
||||
* delimiter before the message to properly align it in the same place.
|
||||
* It was previously { align: true } in winston < 3.0.0
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
info.message = "\t".concat(info.message);
|
||||
return info;
|
||||
});
|
72
node_modules/logform/dist/browser.js
generated
vendored
Normal file
72
node_modules/logform/dist/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,72 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @property {function} format
|
||||
* Both the construction method and set of exposed
|
||||
* formats.
|
||||
*/
|
||||
var format = exports.format = require('././format');
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @method {function} levels
|
||||
* Registers the specified levels with logform.
|
||||
*/
|
||||
exports.levels = require('././levels');
|
||||
|
||||
//
|
||||
// Setup all transports as eager-loaded exports
|
||||
// so that they are static for the bundlers.
|
||||
//
|
||||
Object.defineProperty(format, 'align', {
|
||||
value: require('./align')
|
||||
});
|
||||
Object.defineProperty(format, 'cli', {
|
||||
value: require('./cli')
|
||||
});
|
||||
Object.defineProperty(format, 'colorize', {
|
||||
value: require('./colorize')
|
||||
});
|
||||
Object.defineProperty(format, 'combine', {
|
||||
value: require('./combine')
|
||||
});
|
||||
Object.defineProperty(format, 'errors', {
|
||||
value: require('./errors')
|
||||
});
|
||||
Object.defineProperty(format, 'json', {
|
||||
value: require('./json')
|
||||
});
|
||||
Object.defineProperty(format, 'label', {
|
||||
value: require('./label')
|
||||
});
|
||||
Object.defineProperty(format, 'logstash', {
|
||||
value: require('./logstash')
|
||||
});
|
||||
Object.defineProperty(format, 'metadata', {
|
||||
value: require('./metadata')
|
||||
});
|
||||
Object.defineProperty(format, 'ms', {
|
||||
value: require('./ms')
|
||||
});
|
||||
Object.defineProperty(format, 'padLevels', {
|
||||
value: require('./pad-levels')
|
||||
});
|
||||
Object.defineProperty(format, 'prettyPrint', {
|
||||
value: require('./pretty-print')
|
||||
});
|
||||
Object.defineProperty(format, 'printf', {
|
||||
value: require('./printf')
|
||||
});
|
||||
Object.defineProperty(format, 'simple', {
|
||||
value: require('./simple')
|
||||
});
|
||||
Object.defineProperty(format, 'splat', {
|
||||
value: require('./splat')
|
||||
});
|
||||
Object.defineProperty(format, 'timestamp', {
|
||||
value: require('./timestamp')
|
||||
});
|
||||
Object.defineProperty(format, 'uncolorize', {
|
||||
value: require('./uncolorize')
|
||||
});
|
63
node_modules/logform/dist/cli.js
generated
vendored
Normal file
63
node_modules/logform/dist/cli.js
generated
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var _require = require('./colorize'),
|
||||
Colorizer = _require.Colorizer;
|
||||
var _require2 = require('./pad-levels'),
|
||||
Padder = _require2.Padder;
|
||||
var _require3 = require('triple-beam'),
|
||||
configs = _require3.configs,
|
||||
MESSAGE = _require3.MESSAGE;
|
||||
|
||||
/**
|
||||
* Cli format class that handles initial state for a a separate
|
||||
* Colorizer and Padder instance.
|
||||
*/
|
||||
var CliFormat = /*#__PURE__*/function () {
|
||||
function CliFormat() {
|
||||
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
||||
_classCallCheck(this, CliFormat);
|
||||
if (!opts.levels) {
|
||||
opts.levels = configs.cli.levels;
|
||||
}
|
||||
this.colorizer = new Colorizer(opts);
|
||||
this.padder = new Padder(opts);
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/*
|
||||
* function transform (info, opts)
|
||||
* Attempts to both:
|
||||
* 1. Pad the { level }
|
||||
* 2. Colorize the { level, message }
|
||||
* of the given `logform` info object depending on the `opts`.
|
||||
*/
|
||||
_createClass(CliFormat, [{
|
||||
key: "transform",
|
||||
value: function transform(info, opts) {
|
||||
this.colorizer.transform(this.padder.transform(info, opts), opts);
|
||||
info[MESSAGE] = "".concat(info.level, ":").concat(info.message);
|
||||
return info;
|
||||
}
|
||||
}]);
|
||||
return CliFormat;
|
||||
}();
|
||||
/*
|
||||
* function cli (opts)
|
||||
* Returns a new instance of the CLI format that turns a log
|
||||
* `info` object into the same format previously available
|
||||
* in `winston.cli()` in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = function (opts) {
|
||||
return new CliFormat(opts);
|
||||
};
|
||||
|
||||
//
|
||||
// Attach the CliFormat for registration purposes
|
||||
//
|
||||
module.exports.Format = CliFormat;
|
132
node_modules/logform/dist/colorize.js
generated
vendored
Normal file
132
node_modules/logform/dist/colorize.js
generated
vendored
Normal file
|
@ -0,0 +1,132 @@
|
|||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var colors = require('@colors/colors/safe');
|
||||
var _require = require('triple-beam'),
|
||||
LEVEL = _require.LEVEL,
|
||||
MESSAGE = _require.MESSAGE;
|
||||
|
||||
//
|
||||
// Fix colors not appearing in non-tty environments
|
||||
//
|
||||
colors.enabled = true;
|
||||
|
||||
/**
|
||||
* @property {RegExp} hasSpace
|
||||
* Simple regex to check for presence of spaces.
|
||||
*/
|
||||
var hasSpace = /\s+/;
|
||||
|
||||
/*
|
||||
* Colorizer format. Wraps the `level` and/or `message` properties
|
||||
* of the `info` objects with ANSI color codes based on a few options.
|
||||
*/
|
||||
var Colorizer = /*#__PURE__*/function () {
|
||||
function Colorizer() {
|
||||
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
||||
_classCallCheck(this, Colorizer);
|
||||
if (opts.colors) {
|
||||
this.addColors(opts.colors);
|
||||
}
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds the colors Object to the set of allColors
|
||||
* known by the Colorizer
|
||||
*
|
||||
* @param {Object} colors Set of color mappings to add.
|
||||
*/
|
||||
_createClass(Colorizer, [{
|
||||
key: "addColors",
|
||||
value:
|
||||
/*
|
||||
* Adds the colors Object to the set of allColors
|
||||
* known by the Colorizer
|
||||
*
|
||||
* @param {Object} colors Set of color mappings to add.
|
||||
*/
|
||||
function addColors(clrs) {
|
||||
return Colorizer.addColors(clrs);
|
||||
}
|
||||
|
||||
/*
|
||||
* function colorize (lookup, level, message)
|
||||
* Performs multi-step colorization using @colors/colors/safe
|
||||
*/
|
||||
}, {
|
||||
key: "colorize",
|
||||
value: function colorize(lookup, level, message) {
|
||||
if (typeof message === 'undefined') {
|
||||
message = level;
|
||||
}
|
||||
|
||||
//
|
||||
// If the color for the level is just a string
|
||||
// then attempt to colorize the message with it.
|
||||
//
|
||||
if (!Array.isArray(Colorizer.allColors[lookup])) {
|
||||
return colors[Colorizer.allColors[lookup]](message);
|
||||
}
|
||||
|
||||
//
|
||||
// If it is an Array then iterate over that Array, applying
|
||||
// the colors function for each item.
|
||||
//
|
||||
for (var i = 0, len = Colorizer.allColors[lookup].length; i < len; i++) {
|
||||
message = colors[Colorizer.allColors[lookup][i]](message);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
/*
|
||||
* function transform (info, opts)
|
||||
* Attempts to colorize the { level, message } of the given
|
||||
* `logform` info object.
|
||||
*/
|
||||
}, {
|
||||
key: "transform",
|
||||
value: function transform(info, opts) {
|
||||
if (opts.all && typeof info[MESSAGE] === 'string') {
|
||||
info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]);
|
||||
}
|
||||
if (opts.level || opts.all || !opts.message) {
|
||||
info.level = this.colorize(info[LEVEL], info.level);
|
||||
}
|
||||
if (opts.all || opts.message) {
|
||||
info.message = this.colorize(info[LEVEL], info.level, info.message);
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}], [{
|
||||
key: "addColors",
|
||||
value: function addColors(clrs) {
|
||||
var nextColors = Object.keys(clrs).reduce(function (acc, level) {
|
||||
acc[level] = hasSpace.test(clrs[level]) ? clrs[level].split(hasSpace) : clrs[level];
|
||||
return acc;
|
||||
}, {});
|
||||
Colorizer.allColors = Object.assign({}, Colorizer.allColors || {}, nextColors);
|
||||
return Colorizer.allColors;
|
||||
}
|
||||
}]);
|
||||
return Colorizer;
|
||||
}();
|
||||
/*
|
||||
* function colorize (info)
|
||||
* Returns a new instance of the colorize Format that applies
|
||||
* level colors to `info` objects. This was previously exposed
|
||||
* as { colorize: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = function (opts) {
|
||||
return new Colorizer(opts);
|
||||
};
|
||||
|
||||
//
|
||||
// Attach the Colorizer for registration purposes
|
||||
//
|
||||
module.exports.Colorizer = module.exports.Format = Colorizer;
|
62
node_modules/logform/dist/combine.js
generated
vendored
Normal file
62
node_modules/logform/dist/combine.js
generated
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
|
||||
/*
|
||||
* function cascade(formats)
|
||||
* Returns a function that invokes the `._format` function in-order
|
||||
* for the specified set of `formats`. In this manner we say that Formats
|
||||
* are "pipe-like", but not a pure pumpify implementation. Since there is no back
|
||||
* pressure we can remove all of the "readable" plumbing in Node streams.
|
||||
*/
|
||||
function cascade(formats) {
|
||||
if (!formats.every(isValidFormat)) {
|
||||
return;
|
||||
}
|
||||
return function (info) {
|
||||
var obj = info;
|
||||
for (var i = 0; i < formats.length; i++) {
|
||||
obj = formats[i].transform(obj, formats[i].options);
|
||||
if (!obj) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* function isValidFormat(format)
|
||||
* If the format does not define a `transform` function throw an error
|
||||
* with more detailed usage.
|
||||
*/
|
||||
function isValidFormat(fmt) {
|
||||
if (typeof fmt.transform !== 'function') {
|
||||
throw new Error(['No transform function found on format. Did you create a format instance?', 'const myFormat = format(formatFn);', 'const instance = myFormat();'].join('\n'));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* function combine (info)
|
||||
* Returns a new instance of the combine Format which combines the specified
|
||||
* formats into a new format. This is similar to a pipe-chain in transform streams.
|
||||
* We choose to combine the prototypes this way because there is no back pressure in
|
||||
* an in-memory transform chain.
|
||||
*/
|
||||
module.exports = function () {
|
||||
for (var _len = arguments.length, formats = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
formats[_key] = arguments[_key];
|
||||
}
|
||||
var combinedFormat = format(cascade(formats));
|
||||
var instance = combinedFormat();
|
||||
instance.Format = combinedFormat.Format;
|
||||
return instance;
|
||||
};
|
||||
|
||||
//
|
||||
// Export the cascade method for use in cli and other
|
||||
// combined formats that should not be assumed to be
|
||||
// singletons.
|
||||
//
|
||||
module.exports.cascade = cascade;
|
44
node_modules/logform/dist/errors.js
generated
vendored
Normal file
44
node_modules/logform/dist/errors.js
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
/* eslint no-undefined: 0 */
|
||||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
LEVEL = _require.LEVEL,
|
||||
MESSAGE = _require.MESSAGE;
|
||||
|
||||
/*
|
||||
* function errors (info)
|
||||
* If the `message` property of the `info` object is an instance of `Error`,
|
||||
* replace the `Error` object its own `message` property.
|
||||
*
|
||||
* Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.
|
||||
*/
|
||||
module.exports = format(function (einfo, _ref) {
|
||||
var stack = _ref.stack,
|
||||
cause = _ref.cause;
|
||||
if (einfo instanceof Error) {
|
||||
var info = Object.assign({}, einfo, _defineProperty(_defineProperty(_defineProperty({
|
||||
level: einfo.level
|
||||
}, LEVEL, einfo[LEVEL] || einfo.level), "message", einfo.message), MESSAGE, einfo[MESSAGE] || einfo.message));
|
||||
if (stack) info.stack = einfo.stack;
|
||||
if (cause) info.cause = einfo.cause;
|
||||
return info;
|
||||
}
|
||||
if (!(einfo.message instanceof Error)) return einfo;
|
||||
|
||||
// Assign all enumerable properties and the
|
||||
// message property from the error provided.
|
||||
var err = einfo.message;
|
||||
Object.assign(einfo, err);
|
||||
einfo.message = err.message;
|
||||
einfo[MESSAGE] = err.message;
|
||||
|
||||
// Assign the stack and/or cause if requested.
|
||||
if (stack) einfo.stack = err.stack;
|
||||
if (cause) einfo.cause = err.cause;
|
||||
return einfo;
|
||||
});
|
71
node_modules/logform/dist/format.js
generated
vendored
Normal file
71
node_modules/logform/dist/format.js
generated
vendored
Normal file
|
@ -0,0 +1,71 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* Displays a helpful message and the source of
|
||||
* the format when it is invalid.
|
||||
*/
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
||||
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
||||
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
||||
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
|
||||
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
|
||||
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
||||
function _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf("[native code]") !== -1; } catch (e) { return typeof fn === "function"; } }
|
||||
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
||||
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
||||
var InvalidFormatError = /*#__PURE__*/function (_Error) {
|
||||
_inherits(InvalidFormatError, _Error);
|
||||
var _super = _createSuper(InvalidFormatError);
|
||||
function InvalidFormatError(formatFn) {
|
||||
var _this;
|
||||
_classCallCheck(this, InvalidFormatError);
|
||||
_this = _super.call(this, "Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ".concat(formatFn.toString().split('\n')[0], "\n"));
|
||||
Error.captureStackTrace(_assertThisInitialized(_this), InvalidFormatError);
|
||||
return _this;
|
||||
}
|
||||
return _createClass(InvalidFormatError);
|
||||
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
||||
/*
|
||||
* function format (formatFn)
|
||||
* Returns a create function for the `formatFn`.
|
||||
*/
|
||||
module.exports = function (formatFn) {
|
||||
if (formatFn.length > 2) {
|
||||
throw new InvalidFormatError(formatFn);
|
||||
}
|
||||
|
||||
/*
|
||||
* function Format (options)
|
||||
* Base prototype which calls a `_format`
|
||||
* function and pushes the result.
|
||||
*/
|
||||
function Format() {
|
||||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
||||
this.options = options;
|
||||
}
|
||||
Format.prototype.transform = formatFn;
|
||||
|
||||
//
|
||||
// Create a function which returns new instances of
|
||||
// FormatWrap for simple syntax like:
|
||||
//
|
||||
// require('winston').formats.json();
|
||||
//
|
||||
function createFormatWrap(opts) {
|
||||
return new Format(opts);
|
||||
}
|
||||
|
||||
//
|
||||
// Expose the FormatWrap through the create function
|
||||
// for testability.
|
||||
//
|
||||
createFormatWrap.Format = Format;
|
||||
return createFormatWrap;
|
||||
};
|
86
node_modules/logform/dist/index.js
generated
vendored
Normal file
86
node_modules/logform/dist/index.js
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @property {function} format
|
||||
* Both the construction method and set of exposed
|
||||
* formats.
|
||||
*/
|
||||
var format = exports.format = require('./format');
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @method {function} levels
|
||||
* Registers the specified levels with logform.
|
||||
*/
|
||||
exports.levels = require('./levels');
|
||||
|
||||
/*
|
||||
* @api private
|
||||
* method {function} exposeFormat
|
||||
* Exposes a sub-format on the main format object
|
||||
* as a lazy-loaded getter.
|
||||
*/
|
||||
function exposeFormat(name, requireFormat) {
|
||||
Object.defineProperty(format, name, {
|
||||
get: function get() {
|
||||
return requireFormat();
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Setup all transports as lazy-loaded getters.
|
||||
//
|
||||
exposeFormat('align', function () {
|
||||
return require('./align');
|
||||
});
|
||||
exposeFormat('errors', function () {
|
||||
return require('./errors');
|
||||
});
|
||||
exposeFormat('cli', function () {
|
||||
return require('./cli');
|
||||
});
|
||||
exposeFormat('combine', function () {
|
||||
return require('./combine');
|
||||
});
|
||||
exposeFormat('colorize', function () {
|
||||
return require('./colorize');
|
||||
});
|
||||
exposeFormat('json', function () {
|
||||
return require('./json');
|
||||
});
|
||||
exposeFormat('label', function () {
|
||||
return require('./label');
|
||||
});
|
||||
exposeFormat('logstash', function () {
|
||||
return require('./logstash');
|
||||
});
|
||||
exposeFormat('metadata', function () {
|
||||
return require('./metadata');
|
||||
});
|
||||
exposeFormat('ms', function () {
|
||||
return require('./ms');
|
||||
});
|
||||
exposeFormat('padLevels', function () {
|
||||
return require('./pad-levels');
|
||||
});
|
||||
exposeFormat('prettyPrint', function () {
|
||||
return require('./pretty-print');
|
||||
});
|
||||
exposeFormat('printf', function () {
|
||||
return require('./printf');
|
||||
});
|
||||
exposeFormat('simple', function () {
|
||||
return require('./simple');
|
||||
});
|
||||
exposeFormat('splat', function () {
|
||||
return require('./splat');
|
||||
});
|
||||
exposeFormat('timestamp', function () {
|
||||
return require('./timestamp');
|
||||
});
|
||||
exposeFormat('uncolorize', function () {
|
||||
return require('./uncolorize');
|
||||
});
|
30
node_modules/logform/dist/json.js
generated
vendored
Normal file
30
node_modules/logform/dist/json.js
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
MESSAGE = _require.MESSAGE;
|
||||
var stringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function replacer (key, value)
|
||||
* Handles proper stringification of Buffer and bigint output.
|
||||
*/
|
||||
function replacer(key, value) {
|
||||
// safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.
|
||||
// Leading to a loss in fidelity if the resulting string is parsed.
|
||||
// It would also be a breaking change for logform.
|
||||
if (typeof value === 'bigint') return value.toString();
|
||||
return value;
|
||||
}
|
||||
|
||||
/*
|
||||
* function json (info)
|
||||
* Returns a new instance of the JSON format that turns a log `info`
|
||||
* object into pure JSON. This was previously exposed as { json: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(function (info, opts) {
|
||||
var jsonStringify = stringify.configure(opts);
|
||||
info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);
|
||||
return info;
|
||||
});
|
18
node_modules/logform/dist/label.js
generated
vendored
Normal file
18
node_modules/logform/dist/label.js
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
|
||||
/*
|
||||
* function label (info)
|
||||
* Returns a new instance of the label Format which adds the specified
|
||||
* `opts.label` before the message. This was previously exposed as
|
||||
* { label: 'my label' } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(function (info, opts) {
|
||||
if (opts.message) {
|
||||
info.message = "[".concat(opts.label, "] ").concat(info.message);
|
||||
return info;
|
||||
}
|
||||
info.label = opts.label;
|
||||
return info;
|
||||
});
|
13
node_modules/logform/dist/levels.js
generated
vendored
Normal file
13
node_modules/logform/dist/levels.js
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
'use strict';
|
||||
|
||||
var _require = require('./colorize'),
|
||||
Colorizer = _require.Colorizer;
|
||||
|
||||
/*
|
||||
* Simple method to register colors with a simpler require
|
||||
* path within the module.
|
||||
*/
|
||||
module.exports = function (config) {
|
||||
Colorizer.addColors(config.colors || config);
|
||||
return config;
|
||||
};
|
28
node_modules/logform/dist/logstash.js
generated
vendored
Normal file
28
node_modules/logform/dist/logstash.js
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
MESSAGE = _require.MESSAGE;
|
||||
var jsonStringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function logstash (info)
|
||||
* Returns a new instance of the LogStash Format that turns a
|
||||
* log `info` object into pure JSON with the appropriate logstash
|
||||
* options. This was previously exposed as { logstash: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var logstash = {};
|
||||
if (info.message) {
|
||||
logstash['@message'] = info.message;
|
||||
delete info.message;
|
||||
}
|
||||
if (info.timestamp) {
|
||||
logstash['@timestamp'] = info.timestamp;
|
||||
delete info.timestamp;
|
||||
}
|
||||
logstash['@fields'] = info;
|
||||
info[MESSAGE] = jsonStringify(logstash);
|
||||
return info;
|
||||
});
|
56
node_modules/logform/dist/metadata.js
generated
vendored
Normal file
56
node_modules/logform/dist/metadata.js
generated
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var format = require('./format');
|
||||
function fillExcept(info, fillExceptKeys, metadataKey) {
|
||||
var savedKeys = fillExceptKeys.reduce(function (acc, key) {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
var metadata = Object.keys(info).reduce(function (acc, key) {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
Object.assign(info, savedKeys, _defineProperty({}, metadataKey, metadata));
|
||||
return info;
|
||||
}
|
||||
function fillWith(info, fillWithKeys, metadataKey) {
|
||||
info[metadataKey] = fillWithKeys.reduce(function (acc, key) {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds in a "metadata" object to collect extraneous data, similar to the metadata
|
||||
* object in winston 2.x.
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
var metadataKey = 'metadata';
|
||||
if (opts.key) {
|
||||
metadataKey = opts.key;
|
||||
}
|
||||
var fillExceptKeys = [];
|
||||
if (!opts.fillExcept && !opts.fillWith) {
|
||||
fillExceptKeys.push('level');
|
||||
fillExceptKeys.push('message');
|
||||
}
|
||||
if (opts.fillExcept) {
|
||||
fillExceptKeys = opts.fillExcept;
|
||||
}
|
||||
if (fillExceptKeys.length > 0) {
|
||||
return fillExcept(info, fillExceptKeys, metadataKey);
|
||||
}
|
||||
if (opts.fillWith) {
|
||||
return fillWith(info, opts.fillWith, metadataKey);
|
||||
}
|
||||
return info;
|
||||
});
|
18
node_modules/logform/dist/ms.js
generated
vendored
Normal file
18
node_modules/logform/dist/ms.js
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
'use strict';
|
||||
|
||||
var _this = void 0;
|
||||
var format = require('./format');
|
||||
var ms = require('ms');
|
||||
|
||||
/*
|
||||
* function ms (info)
|
||||
* Returns an `info` with a `ms` property. The `ms` property holds the Value
|
||||
* of the time difference between two calls in milliseconds.
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var curr = +new Date();
|
||||
_this.diff = curr - (_this.prevTime || curr);
|
||||
_this.prevTime = curr;
|
||||
info.ms = "+".concat(ms(_this.diff));
|
||||
return info;
|
||||
});
|
111
node_modules/logform/dist/pad-levels.js
generated
vendored
Normal file
111
node_modules/logform/dist/pad-levels.js
generated
vendored
Normal file
|
@ -0,0 +1,111 @@
|
|||
/* eslint no-unused-vars: 0 */
|
||||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
||||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
||||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var _require = require('triple-beam'),
|
||||
configs = _require.configs,
|
||||
LEVEL = _require.LEVEL,
|
||||
MESSAGE = _require.MESSAGE;
|
||||
var Padder = /*#__PURE__*/function () {
|
||||
function Padder() {
|
||||
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
||||
levels: configs.npm.levels
|
||||
};
|
||||
_classCallCheck(this, Padder);
|
||||
this.paddings = Padder.paddingForLevels(opts.levels, opts.filler);
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum length of keys in the specified `levels` Object.
|
||||
* @param {Object} levels Set of all levels to calculate longest level against.
|
||||
* @returns {Number} Maximum length of the longest level string.
|
||||
*/
|
||||
_createClass(Padder, [{
|
||||
key: "transform",
|
||||
value:
|
||||
/**
|
||||
* Prepends the padding onto the `message` based on the `LEVEL` of
|
||||
* the `info`. This is based on the behavior of `winston@2` which also
|
||||
* prepended the level onto the message.
|
||||
*
|
||||
* See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
|
||||
*
|
||||
* @param {Info} info Logform info object
|
||||
* @param {Object} opts Options passed along to this instance.
|
||||
* @returns {Info} Modified logform info object.
|
||||
*/
|
||||
function transform(info, opts) {
|
||||
info.message = "".concat(this.paddings[info[LEVEL]]).concat(info.message);
|
||||
if (info[MESSAGE]) {
|
||||
info[MESSAGE] = "".concat(this.paddings[info[LEVEL]]).concat(info[MESSAGE]);
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}], [{
|
||||
key: "getLongestLevel",
|
||||
value: function getLongestLevel(levels) {
|
||||
var lvls = Object.keys(levels).map(function (level) {
|
||||
return level.length;
|
||||
});
|
||||
return Math.max.apply(Math, _toConsumableArray(lvls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the padding for the specified `level` assuming that the
|
||||
* maximum length of all levels it's associated with is `maxLength`.
|
||||
* @param {String} level Level to calculate padding for.
|
||||
* @param {String} filler Repeatable text to use for padding.
|
||||
* @param {Number} maxLength Length of the longest level
|
||||
* @returns {String} Padding string for the `level`
|
||||
*/
|
||||
}, {
|
||||
key: "paddingForLevel",
|
||||
value: function paddingForLevel(level, filler, maxLength) {
|
||||
var targetLen = maxLength + 1 - level.length;
|
||||
var rep = Math.floor(targetLen / filler.length);
|
||||
var padding = "".concat(filler).concat(filler.repeat(rep));
|
||||
return padding.slice(0, targetLen);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an object with the string paddings for the given `levels`
|
||||
* using the specified `filler`.
|
||||
* @param {Object} levels Set of all levels to calculate padding for.
|
||||
* @param {String} filler Repeatable text to use for padding.
|
||||
* @returns {Object} Mapping of level to desired padding.
|
||||
*/
|
||||
}, {
|
||||
key: "paddingForLevels",
|
||||
value: function paddingForLevels(levels) {
|
||||
var filler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
|
||||
var maxLength = Padder.getLongestLevel(levels);
|
||||
return Object.keys(levels).reduce(function (acc, level) {
|
||||
acc[level] = Padder.paddingForLevel(level, filler, maxLength);
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
}]);
|
||||
return Padder;
|
||||
}();
|
||||
/*
|
||||
* function padLevels (info)
|
||||
* Returns a new instance of the padLevels Format which pads
|
||||
* levels to be the same length. This was previously exposed as
|
||||
* { padLevels: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = function (opts) {
|
||||
return new Padder(opts);
|
||||
};
|
||||
module.exports.Padder = module.exports.Format = Padder;
|
32
node_modules/logform/dist/pretty-print.js
generated
vendored
Normal file
32
node_modules/logform/dist/pretty-print.js
generated
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
'use strict';
|
||||
|
||||
var inspect = require('util').inspect;
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
LEVEL = _require.LEVEL,
|
||||
MESSAGE = _require.MESSAGE,
|
||||
SPLAT = _require.SPLAT;
|
||||
|
||||
/*
|
||||
* function prettyPrint (info)
|
||||
* Returns a new instance of the prettyPrint Format that "prettyPrint"
|
||||
* serializes `info` objects. This was previously exposed as
|
||||
* { prettyPrint: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
//
|
||||
// info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they
|
||||
// are internal, we remove them before util.inspect so they
|
||||
// are not printed.
|
||||
//
|
||||
var stripped = Object.assign({}, info);
|
||||
|
||||
// Remark (indexzero): update this technique in April 2019
|
||||
// when node@6 is EOL
|
||||
delete stripped[LEVEL];
|
||||
delete stripped[MESSAGE];
|
||||
delete stripped[SPLAT];
|
||||
info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);
|
||||
return info;
|
||||
});
|
34
node_modules/logform/dist/printf.js
generated
vendored
Normal file
34
node_modules/logform/dist/printf.js
generated
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var _require = require('triple-beam'),
|
||||
MESSAGE = _require.MESSAGE;
|
||||
var Printf = /*#__PURE__*/function () {
|
||||
function Printf(templateFn) {
|
||||
_classCallCheck(this, Printf);
|
||||
this.template = templateFn;
|
||||
}
|
||||
_createClass(Printf, [{
|
||||
key: "transform",
|
||||
value: function transform(info) {
|
||||
info[MESSAGE] = this.template(info);
|
||||
return info;
|
||||
}
|
||||
}]);
|
||||
return Printf;
|
||||
}();
|
||||
/*
|
||||
* function printf (templateFn)
|
||||
* Returns a new instance of the printf Format that creates an
|
||||
* intermediate prototype to store the template string-based formatter
|
||||
* function.
|
||||
*/
|
||||
module.exports = function (opts) {
|
||||
return new Printf(opts);
|
||||
};
|
||||
module.exports.Printf = module.exports.Format = Printf;
|
32
node_modules/logform/dist/simple.js
generated
vendored
Normal file
32
node_modules/logform/dist/simple.js
generated
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* eslint no-undefined: 0 */
|
||||
'use strict';
|
||||
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
MESSAGE = _require.MESSAGE;
|
||||
var jsonStringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function simple (info)
|
||||
* Returns a new instance of the simple format TransformStream
|
||||
* which writes a simple representation of logs.
|
||||
*
|
||||
* const { level, message, splat, ...rest } = info;
|
||||
*
|
||||
* ${level}: ${message} if rest is empty
|
||||
* ${level}: ${message} ${JSON.stringify(rest)} otherwise
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var stringifiedRest = jsonStringify(Object.assign({}, info, {
|
||||
level: undefined,
|
||||
message: undefined,
|
||||
splat: undefined
|
||||
}));
|
||||
var padding = info.padding && info.padding[info.level] || '';
|
||||
if (stringifiedRest !== '{}') {
|
||||
info[MESSAGE] = "".concat(info.level, ":").concat(padding, " ").concat(info.message, " ").concat(stringifiedRest);
|
||||
} else {
|
||||
info[MESSAGE] = "".concat(info.level, ":").concat(padding, " ").concat(info.message);
|
||||
}
|
||||
return info;
|
||||
});
|
144
node_modules/logform/dist/splat.js
generated
vendored
Normal file
144
node_modules/logform/dist/splat.js
generated
vendored
Normal file
|
@ -0,0 +1,144 @@
|
|||
'use strict';
|
||||
|
||||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
||||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
||||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var util = require('util');
|
||||
var _require = require('triple-beam'),
|
||||
SPLAT = _require.SPLAT;
|
||||
|
||||
/**
|
||||
* Captures the number of format (i.e. %s strings) in a given string.
|
||||
* Based on `util.format`, see Node.js source:
|
||||
* https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230
|
||||
* @type {RegExp}
|
||||
*/
|
||||
var formatRegExp = /%[scdjifoO%]/g;
|
||||
|
||||
/**
|
||||
* Captures the number of escaped % signs in a format string (i.e. %s strings).
|
||||
* @type {RegExp}
|
||||
*/
|
||||
var escapedPercent = /%%/g;
|
||||
var Splatter = /*#__PURE__*/function () {
|
||||
function Splatter(opts) {
|
||||
_classCallCheck(this, Splatter);
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if tokens <= splat.length, assign { splat, meta } into the
|
||||
* `info` accordingly, and write to this instance.
|
||||
*
|
||||
* @param {Info} info Logform info message.
|
||||
* @param {String[]} tokens Set of string interpolation tokens.
|
||||
* @returns {Info} Modified info message
|
||||
* @private
|
||||
*/
|
||||
_createClass(Splatter, [{
|
||||
key: "_splat",
|
||||
value: function _splat(info, tokens) {
|
||||
var msg = info.message;
|
||||
var splat = info[SPLAT] || info.splat || [];
|
||||
var percents = msg.match(escapedPercent);
|
||||
var escapes = percents && percents.length || 0;
|
||||
|
||||
// The expected splat is the number of tokens minus the number of escapes
|
||||
// e.g.
|
||||
// - { expectedSplat: 3 } '%d %s %j'
|
||||
// - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'
|
||||
//
|
||||
// Any "meta" will be arugments in addition to the expected splat size
|
||||
// regardless of type. e.g.
|
||||
//
|
||||
// logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });
|
||||
// would result in splat of four (4), but only three (3) are expected. Therefore:
|
||||
//
|
||||
// extraSplat = 3 - 4 = -1
|
||||
// metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);
|
||||
// splat = [100, 'wow', { such: 'js' }]
|
||||
var expectedSplat = tokens.length - escapes;
|
||||
var extraSplat = expectedSplat - splat.length;
|
||||
var metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : [];
|
||||
|
||||
// Now that { splat } has been separated from any potential { meta }. we
|
||||
// can assign this to the `info` object and write it to our format stream.
|
||||
// If the additional metas are **NOT** objects or **LACK** enumerable properties
|
||||
// you are going to have a bad time.
|
||||
var metalen = metas.length;
|
||||
if (metalen) {
|
||||
for (var i = 0; i < metalen; i++) {
|
||||
Object.assign(info, metas[i]);
|
||||
}
|
||||
}
|
||||
info.message = util.format.apply(util, [msg].concat(_toConsumableArray(splat)));
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the `info` message by using `util.format` to complete
|
||||
* any `info.message` provided it has string interpolation tokens.
|
||||
* If no tokens exist then `info` is immutable.
|
||||
*
|
||||
* @param {Info} info Logform info message.
|
||||
* @param {Object} opts Options for this instance.
|
||||
* @returns {Info} Modified info message
|
||||
*/
|
||||
}, {
|
||||
key: "transform",
|
||||
value: function transform(info) {
|
||||
var msg = info.message;
|
||||
var splat = info[SPLAT] || info.splat;
|
||||
|
||||
// No need to process anything if splat is undefined
|
||||
if (!splat || !splat.length) {
|
||||
return info;
|
||||
}
|
||||
|
||||
// Extract tokens, if none available default to empty array to
|
||||
// ensure consistancy in expected results
|
||||
var tokens = msg && msg.match && msg.match(formatRegExp);
|
||||
|
||||
// This condition will take care of inputs with info[SPLAT]
|
||||
// but no tokens present
|
||||
if (!tokens && (splat || splat.length)) {
|
||||
var metas = splat.length > 1 ? splat.splice(0) : splat;
|
||||
|
||||
// Now that { splat } has been separated from any potential { meta }. we
|
||||
// can assign this to the `info` object and write it to our format stream.
|
||||
// If the additional metas are **NOT** objects or **LACK** enumerable properties
|
||||
// you are going to have a bad time.
|
||||
var metalen = metas.length;
|
||||
if (metalen) {
|
||||
for (var i = 0; i < metalen; i++) {
|
||||
Object.assign(info, metas[i]);
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
if (tokens) {
|
||||
return this._splat(info, tokens);
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}]);
|
||||
return Splatter;
|
||||
}();
|
||||
/*
|
||||
* function splat (info)
|
||||
* Returns a new instance of the splat format TransformStream
|
||||
* which performs string interpolation from `info` objects. This was
|
||||
* previously exposed implicitly in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = function (opts) {
|
||||
return new Splatter(opts);
|
||||
};
|
26
node_modules/logform/dist/timestamp.js
generated
vendored
Normal file
26
node_modules/logform/dist/timestamp.js
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
'use strict';
|
||||
|
||||
var fecha = require('fecha');
|
||||
var format = require('./format');
|
||||
|
||||
/*
|
||||
* function timestamp (info)
|
||||
* Returns a new instance of the timestamp Format which adds a timestamp
|
||||
* to the info. It was previously available in winston < 3.0.0 as:
|
||||
*
|
||||
* - { timestamp: true } // `new Date.toISOString()`
|
||||
* - { timestamp: function:String } // Value returned by `timestamp()`
|
||||
*/
|
||||
module.exports = format(function (info) {
|
||||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
if (opts.format) {
|
||||
info.timestamp = typeof opts.format === 'function' ? opts.format() : fecha.format(new Date(), opts.format);
|
||||
}
|
||||
if (!info.timestamp) {
|
||||
info.timestamp = new Date().toISOString();
|
||||
}
|
||||
if (opts.alias) {
|
||||
info[opts.alias] = info.timestamp;
|
||||
}
|
||||
return info;
|
||||
});
|
25
node_modules/logform/dist/uncolorize.js
generated
vendored
Normal file
25
node_modules/logform/dist/uncolorize.js
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
'use strict';
|
||||
|
||||
var colors = require('@colors/colors/safe');
|
||||
var format = require('./format');
|
||||
var _require = require('triple-beam'),
|
||||
MESSAGE = _require.MESSAGE;
|
||||
|
||||
/*
|
||||
* function uncolorize (info)
|
||||
* Returns a new instance of the uncolorize Format that strips colors
|
||||
* from `info` objects. This was previously exposed as { stripColors: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(function (info, opts) {
|
||||
if (opts.level !== false) {
|
||||
info.level = colors.strip(info.level);
|
||||
}
|
||||
if (opts.message !== false) {
|
||||
info.message = colors.strip(String(info.message));
|
||||
}
|
||||
if (opts.raw !== false && info[MESSAGE]) {
|
||||
info[MESSAGE] = colors.strip(String(info[MESSAGE]));
|
||||
}
|
||||
return info;
|
||||
});
|
41
node_modules/logform/errors.js
generated
vendored
Normal file
41
node_modules/logform/errors.js
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* eslint no-undefined: 0 */
|
||||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
const { LEVEL, MESSAGE } = require('triple-beam');
|
||||
|
||||
/*
|
||||
* function errors (info)
|
||||
* If the `message` property of the `info` object is an instance of `Error`,
|
||||
* replace the `Error` object its own `message` property.
|
||||
*
|
||||
* Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.
|
||||
*/
|
||||
module.exports = format((einfo, { stack, cause }) => {
|
||||
if (einfo instanceof Error) {
|
||||
const info = Object.assign({}, einfo, {
|
||||
level: einfo.level,
|
||||
[LEVEL]: einfo[LEVEL] || einfo.level,
|
||||
message: einfo.message,
|
||||
[MESSAGE]: einfo[MESSAGE] || einfo.message
|
||||
});
|
||||
|
||||
if (stack) info.stack = einfo.stack;
|
||||
if (cause) info.cause = einfo.cause;
|
||||
return info;
|
||||
}
|
||||
|
||||
if (!(einfo.message instanceof Error)) return einfo;
|
||||
|
||||
// Assign all enumerable properties and the
|
||||
// message property from the error provided.
|
||||
const err = einfo.message;
|
||||
Object.assign(einfo, err);
|
||||
einfo.message = err.message;
|
||||
einfo[MESSAGE] = err.message;
|
||||
|
||||
// Assign the stack and/or cause if requested.
|
||||
if (stack) einfo.stack = err.stack;
|
||||
if (cause) einfo.cause = err.cause;
|
||||
return einfo;
|
||||
});
|
52
node_modules/logform/format.js
generated
vendored
Normal file
52
node_modules/logform/format.js
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* Displays a helpful message and the source of
|
||||
* the format when it is invalid.
|
||||
*/
|
||||
class InvalidFormatError extends Error {
|
||||
constructor(formatFn) {
|
||||
super(`Format functions must be synchronous taking a two arguments: (info, opts)
|
||||
Found: ${formatFn.toString().split('\n')[0]}\n`);
|
||||
|
||||
Error.captureStackTrace(this, InvalidFormatError);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function format (formatFn)
|
||||
* Returns a create function for the `formatFn`.
|
||||
*/
|
||||
module.exports = formatFn => {
|
||||
if (formatFn.length > 2) {
|
||||
throw new InvalidFormatError(formatFn);
|
||||
}
|
||||
|
||||
/*
|
||||
* function Format (options)
|
||||
* Base prototype which calls a `_format`
|
||||
* function and pushes the result.
|
||||
*/
|
||||
function Format(options = {}) {
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
Format.prototype.transform = formatFn;
|
||||
|
||||
//
|
||||
// Create a function which returns new instances of
|
||||
// FormatWrap for simple syntax like:
|
||||
//
|
||||
// require('winston').formats.json();
|
||||
//
|
||||
function createFormatWrap(opts) {
|
||||
return new Format(opts);
|
||||
}
|
||||
|
||||
//
|
||||
// Expose the FormatWrap through the create function
|
||||
// for testability.
|
||||
//
|
||||
createFormatWrap.Format = Format;
|
||||
return createFormatWrap;
|
||||
};
|
201
node_modules/logform/index.d.ts
generated
vendored
Normal file
201
node_modules/logform/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,201 @@
|
|||
// Type definitions for logform 2.x
|
||||
// Project: https://github.com/winstonjs/logform
|
||||
// Definitions by: DABH <https://github.com/DABH>
|
||||
// Definitions: https://github.com/winstonjs/logform
|
||||
// TypeScript Version: 2.2
|
||||
import {LEVEL, MESSAGE, SPLAT} from 'triple-beam'
|
||||
|
||||
export interface TransformableInfo {
|
||||
level: string;
|
||||
message: any;
|
||||
[LEVEL]?: string;
|
||||
[MESSAGE]?: any;
|
||||
[SPLAT]?: any;
|
||||
[key: string | symbol]: any;
|
||||
}
|
||||
|
||||
export type TransformFunction = (info: TransformableInfo, opts?: any) => TransformableInfo | boolean;
|
||||
export type Colors = { [key: string]: string | string[] }; // tslint:disable-line interface-over-type-literal
|
||||
export type FormatWrap = (opts?: any) => Format;
|
||||
|
||||
export class Format {
|
||||
constructor(opts?: object);
|
||||
|
||||
options?: object;
|
||||
transform: TransformFunction;
|
||||
}
|
||||
|
||||
export class Colorizer extends Format {
|
||||
constructor(opts?: object);
|
||||
|
||||
createColorize: (opts?: object) => Colorizer;
|
||||
addColors: (colors: Colors) => Colors;
|
||||
colorize: (level: string, message: string) => string;
|
||||
}
|
||||
|
||||
export function format(transform: TransformFunction): FormatWrap;
|
||||
|
||||
export function levels(config: object): object;
|
||||
|
||||
export namespace format {
|
||||
function align(): Format;
|
||||
function cli(opts?: CliOptions): Format;
|
||||
function colorize(opts?: ColorizeOptions): Colorizer;
|
||||
function combine(...formats: Format[]): Format;
|
||||
function errors(opts?: object): Format;
|
||||
function json(opts?: JsonOptions): Format;
|
||||
function label(opts?: LabelOptions): Format;
|
||||
function logstash(): Format;
|
||||
function metadata(opts?: MetadataOptions): Format;
|
||||
function ms(): Format;
|
||||
function padLevels(opts?: PadLevelsOptions): Format;
|
||||
function prettyPrint(opts?: PrettyPrintOptions): Format;
|
||||
function printf(templateFunction: (info: TransformableInfo) => string): Format;
|
||||
function simple(): Format;
|
||||
function splat(): Format;
|
||||
function timestamp(opts?: TimestampOptions): Format;
|
||||
function uncolorize(opts?: UncolorizeOptions): Format;
|
||||
}
|
||||
|
||||
export interface CliOptions extends ColorizeOptions, PadLevelsOptions { }
|
||||
|
||||
export interface ColorizeOptions {
|
||||
/**
|
||||
* If set to `true` the color will be applied to the `level`.
|
||||
*/
|
||||
level?: boolean;
|
||||
/**
|
||||
* If set to `true` the color will be applied to the `message` and `level`.
|
||||
*/
|
||||
all?: boolean;
|
||||
/**
|
||||
* If set to `true` the color will be applied to the `message`.
|
||||
*/
|
||||
message?: boolean;
|
||||
/**
|
||||
* An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`.
|
||||
*/
|
||||
colors?: Record<string, string>;
|
||||
}
|
||||
|
||||
export interface JsonOptions {
|
||||
/**
|
||||
* A function that influences how the `info` is stringified.
|
||||
*/
|
||||
replacer?: (this: any, key: string, value: any) => any;
|
||||
/**
|
||||
* The number of white space used to format the json.
|
||||
*/
|
||||
space?: number;
|
||||
|
||||
// The following options come from safe-stable-stringify
|
||||
// https://github.com/BridgeAR/safe-stable-stringify/blob/main/index.d.ts
|
||||
|
||||
/**
|
||||
* If `true`, bigint values are converted to a number. Otherwise, they are ignored.
|
||||
* This option is ignored by default as Logform stringifies BigInt in the default replacer.
|
||||
* @default true
|
||||
*/
|
||||
bigint?: boolean,
|
||||
/**
|
||||
* Defines the value for circular references.
|
||||
* Set to `undefined`, circular properties are not serialized (array entries are replaced with null).
|
||||
* Set to `Error`, to throw on circular references.
|
||||
* @default "[Circular]"
|
||||
*/
|
||||
circularValue?: string | null | TypeErrorConstructor | ErrorConstructor,
|
||||
/**
|
||||
* If `true`, guarantee a deterministic key order instead of relying on the insertion order.
|
||||
* @default true
|
||||
*/
|
||||
deterministic?: boolean,
|
||||
/**
|
||||
* Maximum number of entries to serialize per object (at least one).
|
||||
* The serialized output contains information about how many entries have not been serialized.
|
||||
* Ignored properties are counted as well (e.g., properties with symbol values).
|
||||
* Using the array replacer overrules this option.
|
||||
* @default Infinity
|
||||
*/
|
||||
maximumBreadth?: number,
|
||||
/**
|
||||
* Maximum number of object nesting levels (at least 1) that will be serialized.
|
||||
* Objects at the maximum level are serialized as `"[Object]"` and arrays as `"[Array]"`.
|
||||
* @default Infinity
|
||||
*/
|
||||
maximumDepth?: number,
|
||||
}
|
||||
|
||||
export interface LabelOptions {
|
||||
/**
|
||||
* A label to be added before the message.
|
||||
*/
|
||||
label?: string;
|
||||
/**
|
||||
* If set to `true` the `label` will be added to `info.message`. If set to `false` the `label`
|
||||
* will be added as `info.label`.
|
||||
*/
|
||||
message?: boolean;
|
||||
}
|
||||
|
||||
export interface MetadataOptions {
|
||||
/**
|
||||
* The name of the key used for the metadata object. Defaults to `metadata`.
|
||||
*/
|
||||
key?: string;
|
||||
/**
|
||||
* An array of keys that should not be added to the metadata object.
|
||||
*/
|
||||
fillExcept?: string[];
|
||||
/**
|
||||
* An array of keys that will be added to the metadata object.
|
||||
*/
|
||||
fillWith?: string[];
|
||||
}
|
||||
|
||||
export interface PadLevelsOptions {
|
||||
/**
|
||||
* Log levels. Defaults to `configs.npm.levels` from [triple-beam](https://github.com/winstonjs/triple-beam)
|
||||
* module.
|
||||
*/
|
||||
levels?: Record<string, number>;
|
||||
}
|
||||
|
||||
export interface PrettyPrintOptions {
|
||||
/**
|
||||
* A `number` that specifies the maximum depth of the `info` object being stringified by
|
||||
* `util.inspect`. Defaults to `2`.
|
||||
*/
|
||||
depth?: number;
|
||||
/**
|
||||
* Colorizes the message if set to `true`. Defaults to `false`.
|
||||
*/
|
||||
colorize?: boolean;
|
||||
}
|
||||
|
||||
export interface TimestampOptions {
|
||||
/**
|
||||
* Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha)
|
||||
* module or a function that returns a formatted date. If no format is provided `new
|
||||
* Date().toISOString()` will be used.
|
||||
*/
|
||||
format?: string | (() => string);
|
||||
/**
|
||||
* The name of an alias for the timestamp property, that will be added to the `info` object.
|
||||
*/
|
||||
alias?: string;
|
||||
}
|
||||
|
||||
export interface UncolorizeOptions {
|
||||
/**
|
||||
* Disables the uncolorize format for `info.level` if set to `false`.
|
||||
*/
|
||||
level?: boolean;
|
||||
/**
|
||||
* Disables the uncolorize format for `info.message` if set to `false`.
|
||||
*/
|
||||
message?: boolean;
|
||||
/**
|
||||
* Disables the uncolorize format for `info[MESSAGE]` if set to `false`.
|
||||
*/
|
||||
raw?: boolean;
|
||||
}
|
52
node_modules/logform/index.js
generated
vendored
Normal file
52
node_modules/logform/index.js
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @property {function} format
|
||||
* Both the construction method and set of exposed
|
||||
* formats.
|
||||
*/
|
||||
const format = exports.format = require('./format');
|
||||
|
||||
/*
|
||||
* @api public
|
||||
* @method {function} levels
|
||||
* Registers the specified levels with logform.
|
||||
*/
|
||||
exports.levels = require('./levels');
|
||||
|
||||
/*
|
||||
* @api private
|
||||
* method {function} exposeFormat
|
||||
* Exposes a sub-format on the main format object
|
||||
* as a lazy-loaded getter.
|
||||
*/
|
||||
function exposeFormat(name, requireFormat) {
|
||||
Object.defineProperty(format, name, {
|
||||
get() {
|
||||
return requireFormat();
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Setup all transports as lazy-loaded getters.
|
||||
//
|
||||
exposeFormat('align', function () { return require('./align'); });
|
||||
exposeFormat('errors', function () { return require('./errors'); });
|
||||
exposeFormat('cli', function () { return require('./cli'); });
|
||||
exposeFormat('combine', function () { return require('./combine'); });
|
||||
exposeFormat('colorize', function () { return require('./colorize'); });
|
||||
exposeFormat('json', function () { return require('./json'); });
|
||||
exposeFormat('label', function () { return require('./label'); });
|
||||
exposeFormat('logstash', function () { return require('./logstash'); });
|
||||
exposeFormat('metadata', function () { return require('./metadata'); });
|
||||
exposeFormat('ms', function () { return require('./ms'); });
|
||||
exposeFormat('padLevels', function () { return require('./pad-levels'); });
|
||||
exposeFormat('prettyPrint', function () { return require('./pretty-print'); });
|
||||
exposeFormat('printf', function () { return require('./printf'); });
|
||||
exposeFormat('simple', function () { return require('./simple'); });
|
||||
exposeFormat('splat', function () { return require('./splat'); });
|
||||
exposeFormat('timestamp', function () { return require('./timestamp'); });
|
||||
exposeFormat('uncolorize', function () { return require('./uncolorize'); });
|
30
node_modules/logform/json.js
generated
vendored
Normal file
30
node_modules/logform/json.js
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
const stringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function replacer (key, value)
|
||||
* Handles proper stringification of Buffer and bigint output.
|
||||
*/
|
||||
function replacer(key, value) {
|
||||
// safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.
|
||||
// Leading to a loss in fidelity if the resulting string is parsed.
|
||||
// It would also be a breaking change for logform.
|
||||
if (typeof value === 'bigint')
|
||||
return value.toString();
|
||||
return value;
|
||||
}
|
||||
|
||||
/*
|
||||
* function json (info)
|
||||
* Returns a new instance of the JSON format that turns a log `info`
|
||||
* object into pure JSON. This was previously exposed as { json: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format((info, opts) => {
|
||||
const jsonStringify = stringify.configure(opts);
|
||||
info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);
|
||||
return info;
|
||||
});
|
19
node_modules/logform/label.js
generated
vendored
Normal file
19
node_modules/logform/label.js
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
|
||||
/*
|
||||
* function label (info)
|
||||
* Returns a new instance of the label Format which adds the specified
|
||||
* `opts.label` before the message. This was previously exposed as
|
||||
* { label: 'my label' } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format((info, opts) => {
|
||||
if (opts.message) {
|
||||
info.message = `[${opts.label}] ${info.message}`;
|
||||
return info;
|
||||
}
|
||||
|
||||
info.label = opts.label;
|
||||
return info;
|
||||
});
|
12
node_modules/logform/levels.js
generated
vendored
Normal file
12
node_modules/logform/levels.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
'use strict';
|
||||
|
||||
const { Colorizer } = require('./colorize');
|
||||
|
||||
/*
|
||||
* Simple method to register colors with a simpler require
|
||||
* path within the module.
|
||||
*/
|
||||
module.exports = config => {
|
||||
Colorizer.addColors(config.colors || config);
|
||||
return config;
|
||||
};
|
29
node_modules/logform/logstash.js
generated
vendored
Normal file
29
node_modules/logform/logstash.js
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
const jsonStringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function logstash (info)
|
||||
* Returns a new instance of the LogStash Format that turns a
|
||||
* log `info` object into pure JSON with the appropriate logstash
|
||||
* options. This was previously exposed as { logstash: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format(info => {
|
||||
const logstash = {};
|
||||
if (info.message) {
|
||||
logstash['@message'] = info.message;
|
||||
delete info.message;
|
||||
}
|
||||
|
||||
if (info.timestamp) {
|
||||
logstash['@timestamp'] = info.timestamp;
|
||||
delete info.timestamp;
|
||||
}
|
||||
|
||||
logstash['@fields'] = info;
|
||||
info[MESSAGE] = jsonStringify(logstash);
|
||||
return info;
|
||||
});
|
61
node_modules/logform/metadata.js
generated
vendored
Normal file
61
node_modules/logform/metadata.js
generated
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
|
||||
function fillExcept(info, fillExceptKeys, metadataKey) {
|
||||
const savedKeys = fillExceptKeys.reduce((acc, key) => {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
const metadata = Object.keys(info).reduce((acc, key) => {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
Object.assign(info, savedKeys, {
|
||||
[metadataKey]: metadata
|
||||
});
|
||||
return info;
|
||||
}
|
||||
|
||||
function fillWith(info, fillWithKeys, metadataKey) {
|
||||
info[metadataKey] = fillWithKeys.reduce((acc, key) => {
|
||||
acc[key] = info[key];
|
||||
delete info[key];
|
||||
return acc;
|
||||
}, {});
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds in a "metadata" object to collect extraneous data, similar to the metadata
|
||||
* object in winston 2.x.
|
||||
*/
|
||||
module.exports = format((info, opts = {}) => {
|
||||
let metadataKey = 'metadata';
|
||||
if (opts.key) {
|
||||
metadataKey = opts.key;
|
||||
}
|
||||
|
||||
let fillExceptKeys = [];
|
||||
if (!opts.fillExcept && !opts.fillWith) {
|
||||
fillExceptKeys.push('level');
|
||||
fillExceptKeys.push('message');
|
||||
}
|
||||
|
||||
if (opts.fillExcept) {
|
||||
fillExceptKeys = opts.fillExcept;
|
||||
}
|
||||
|
||||
if (fillExceptKeys.length > 0) {
|
||||
return fillExcept(info, fillExceptKeys, metadataKey);
|
||||
}
|
||||
|
||||
if (opts.fillWith) {
|
||||
return fillWith(info, opts.fillWith, metadataKey);
|
||||
}
|
||||
|
||||
return info;
|
||||
});
|
18
node_modules/logform/ms.js
generated
vendored
Normal file
18
node_modules/logform/ms.js
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
const ms = require('ms');
|
||||
|
||||
/*
|
||||
* function ms (info)
|
||||
* Returns an `info` with a `ms` property. The `ms` property holds the Value
|
||||
* of the time difference between two calls in milliseconds.
|
||||
*/
|
||||
module.exports = format(info => {
|
||||
const curr = +new Date();
|
||||
this.diff = curr - (this.prevTime || curr);
|
||||
this.prevTime = curr;
|
||||
info.ms = `+${ms(this.diff)}`;
|
||||
|
||||
return info;
|
||||
});
|
26
node_modules/logform/node_modules/@colors/colors/LICENSE
generated
vendored
Normal file
26
node_modules/logform/node_modules/@colors/colors/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
MIT License
|
||||
|
||||
Original Library
|
||||
- Copyright (c) Marak Squires
|
||||
|
||||
Additional Functionality
|
||||
- Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
- Copyright (c) DABH (https://github.com/DABH)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
219
node_modules/logform/node_modules/@colors/colors/README.md
generated
vendored
Normal file
219
node_modules/logform/node_modules/@colors/colors/README.md
generated
vendored
Normal file
|
@ -0,0 +1,219 @@
|
|||
# @colors/colors ("colors.js")
|
||||
[](https://github.com/DABH/colors.js/actions/workflows/ci.yml)
|
||||
[](https://www.npmjs.org/package/@colors/colors)
|
||||
|
||||
Please check out the [roadmap](ROADMAP.md) for upcoming features and releases. Please open Issues to provide feedback.
|
||||
|
||||
## get color and style in your node.js console
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
|
||||
npm install @colors/colors
|
||||
|
||||
## colors and styles!
|
||||
|
||||
### text colors
|
||||
|
||||
- black
|
||||
- red
|
||||
- green
|
||||
- yellow
|
||||
- blue
|
||||
- magenta
|
||||
- cyan
|
||||
- white
|
||||
- gray
|
||||
- grey
|
||||
|
||||
### bright text colors
|
||||
|
||||
- brightRed
|
||||
- brightGreen
|
||||
- brightYellow
|
||||
- brightBlue
|
||||
- brightMagenta
|
||||
- brightCyan
|
||||
- brightWhite
|
||||
|
||||
### background colors
|
||||
|
||||
- bgBlack
|
||||
- bgRed
|
||||
- bgGreen
|
||||
- bgYellow
|
||||
- bgBlue
|
||||
- bgMagenta
|
||||
- bgCyan
|
||||
- bgWhite
|
||||
- bgGray
|
||||
- bgGrey
|
||||
|
||||
### bright background colors
|
||||
|
||||
- bgBrightRed
|
||||
- bgBrightGreen
|
||||
- bgBrightYellow
|
||||
- bgBrightBlue
|
||||
- bgBrightMagenta
|
||||
- bgBrightCyan
|
||||
- bgBrightWhite
|
||||
|
||||
### styles
|
||||
|
||||
- reset
|
||||
- bold
|
||||
- dim
|
||||
- italic
|
||||
- underline
|
||||
- inverse
|
||||
- hidden
|
||||
- strikethrough
|
||||
|
||||
### extras
|
||||
|
||||
- rainbow
|
||||
- zebra
|
||||
- america
|
||||
- trap
|
||||
- random
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
By popular demand, `@colors/colors` now ships with two types of usages!
|
||||
|
||||
The super nifty way
|
||||
|
||||
```js
|
||||
var colors = require('@colors/colors');
|
||||
|
||||
console.log('hello'.green); // outputs green text
|
||||
console.log('i like cake and pies'.underline.red); // outputs red underlined text
|
||||
console.log('inverse the color'.inverse); // inverses the color
|
||||
console.log('OMG Rainbows!'.rainbow); // rainbow
|
||||
console.log('Run the trap'.trap); // Drops the bass
|
||||
|
||||
```
|
||||
|
||||
or a slightly less nifty way which doesn't extend `String.prototype`
|
||||
|
||||
```js
|
||||
var colors = require('@colors/colors/safe');
|
||||
|
||||
console.log(colors.green('hello')); // outputs green text
|
||||
console.log(colors.red.underline('i like cake and pies')); // outputs red underlined text
|
||||
console.log(colors.inverse('inverse the color')); // inverses the color
|
||||
console.log(colors.rainbow('OMG Rainbows!')); // rainbow
|
||||
console.log(colors.trap('Run the trap')); // Drops the bass
|
||||
|
||||
```
|
||||
|
||||
I prefer the first way. Some people seem to be afraid of extending `String.prototype` and prefer the second way.
|
||||
|
||||
If you are writing good code you will never have an issue with the first approach. If you really don't want to touch `String.prototype`, the second usage will not touch `String` native object.
|
||||
|
||||
## Enabling/Disabling Colors
|
||||
|
||||
The package will auto-detect whether your terminal can use colors and enable/disable accordingly. When colors are disabled, the color functions do nothing. You can override this with a command-line flag:
|
||||
|
||||
```bash
|
||||
node myapp.js --no-color
|
||||
node myapp.js --color=false
|
||||
|
||||
node myapp.js --color
|
||||
node myapp.js --color=true
|
||||
node myapp.js --color=always
|
||||
|
||||
FORCE_COLOR=1 node myapp.js
|
||||
```
|
||||
|
||||
Or in code:
|
||||
|
||||
```javascript
|
||||
var colors = require('@colors/colors');
|
||||
colors.enable();
|
||||
colors.disable();
|
||||
```
|
||||
|
||||
## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data)
|
||||
|
||||
```js
|
||||
var name = 'Beowulf';
|
||||
console.log(colors.green('Hello %s'), name);
|
||||
// outputs -> 'Hello Beowulf'
|
||||
```
|
||||
|
||||
## Custom themes
|
||||
|
||||
### Using standard API
|
||||
|
||||
```js
|
||||
|
||||
var colors = require('@colors/colors');
|
||||
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log("this is an error".error);
|
||||
|
||||
// outputs yellow text
|
||||
console.log("this is a warning".warn);
|
||||
```
|
||||
|
||||
### Using string safe API
|
||||
|
||||
```js
|
||||
var colors = require('@colors/colors/safe');
|
||||
|
||||
// set single property
|
||||
var error = colors.red;
|
||||
error('this is red');
|
||||
|
||||
// set theme
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log(colors.error("this is an error"));
|
||||
|
||||
// outputs yellow text
|
||||
console.log(colors.warn("this is a warning"));
|
||||
|
||||
```
|
||||
|
||||
### Combining Colors
|
||||
|
||||
```javascript
|
||||
var colors = require('@colors/colors');
|
||||
|
||||
colors.setTheme({
|
||||
custom: ['red', 'underline']
|
||||
});
|
||||
|
||||
console.log('test'.custom);
|
||||
```
|
||||
|
||||
*Protip: There is a secret undocumented style in `colors`. If you find the style you can summon him.*
|
83
node_modules/logform/node_modules/@colors/colors/examples/normal-usage.js
generated
vendored
Normal file
83
node_modules/logform/node_modules/@colors/colors/examples/normal-usage.js
generated
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
var colors = require('../lib/index');
|
||||
|
||||
console.log('First some yellow text'.yellow);
|
||||
|
||||
console.log('Underline that text'.yellow.underline);
|
||||
|
||||
console.log('Make it bold and red'.red.bold);
|
||||
|
||||
console.log(('Double Raindows All Day Long').rainbow);
|
||||
|
||||
console.log('Drop the bass'.trap);
|
||||
|
||||
console.log('DROP THE RAINBOW BASS'.trap.rainbow);
|
||||
|
||||
// styles not widely supported
|
||||
console.log('Chains are also cool.'.bold.italic.underline.red);
|
||||
|
||||
// styles not widely supported
|
||||
console.log('So '.green + 'are'.underline + ' ' + 'inverse'.inverse
|
||||
+ ' styles! '.yellow.bold);
|
||||
console.log('Zebras are so fun!'.zebra);
|
||||
|
||||
//
|
||||
// Remark: .strikethrough may not work with Mac OS Terminal App
|
||||
//
|
||||
console.log('This is ' + 'not'.strikethrough + ' fun.');
|
||||
|
||||
console.log('Background color attack!'.black.bgWhite);
|
||||
console.log('Use random styles on everything!'.random);
|
||||
console.log('America, Heck Yeah!'.america);
|
||||
|
||||
// eslint-disable-next-line max-len
|
||||
console.log('Blindingly '.brightCyan + 'bright? '.brightRed + 'Why '.brightYellow + 'not?!'.brightGreen);
|
||||
|
||||
console.log('Setting themes is useful');
|
||||
|
||||
//
|
||||
// Custom themes
|
||||
//
|
||||
console.log('Generic logging theme as JSON'.green.bold.underline);
|
||||
// Load theme with JSON literal
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red',
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log('this is an error'.error);
|
||||
|
||||
// outputs yellow text
|
||||
console.log('this is a warning'.warn);
|
||||
|
||||
// outputs grey text
|
||||
console.log('this is an input'.input);
|
||||
|
||||
console.log('Generic logging theme as file'.green.bold.underline);
|
||||
|
||||
// Load a theme from file
|
||||
try {
|
||||
colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
// outputs red text
|
||||
console.log('this is an error'.error);
|
||||
|
||||
// outputs yellow text
|
||||
console.log('this is a warning'.warn);
|
||||
|
||||
// outputs grey text
|
||||
console.log('this is an input'.input);
|
||||
|
||||
// console.log("Don't summon".zalgo)
|
||||
|
80
node_modules/logform/node_modules/@colors/colors/examples/safe-string.js
generated
vendored
Normal file
80
node_modules/logform/node_modules/@colors/colors/examples/safe-string.js
generated
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
var colors = require('../safe');
|
||||
|
||||
console.log(colors.yellow('First some yellow text'));
|
||||
|
||||
console.log(colors.yellow.underline('Underline that text'));
|
||||
|
||||
console.log(colors.red.bold('Make it bold and red'));
|
||||
|
||||
console.log(colors.rainbow('Double Raindows All Day Long'));
|
||||
|
||||
console.log(colors.trap('Drop the bass'));
|
||||
|
||||
console.log(colors.rainbow(colors.trap('DROP THE RAINBOW BASS')));
|
||||
|
||||
// styles not widely supported
|
||||
console.log(colors.bold.italic.underline.red('Chains are also cool.'));
|
||||
|
||||
// styles not widely supported
|
||||
console.log(colors.green('So ') + colors.underline('are') + ' '
|
||||
+ colors.inverse('inverse') + colors.yellow.bold(' styles! '));
|
||||
|
||||
console.log(colors.zebra('Zebras are so fun!'));
|
||||
|
||||
console.log('This is ' + colors.strikethrough('not') + ' fun.');
|
||||
|
||||
|
||||
console.log(colors.black.bgWhite('Background color attack!'));
|
||||
console.log(colors.random('Use random styles on everything!'));
|
||||
console.log(colors.america('America, Heck Yeah!'));
|
||||
|
||||
// eslint-disable-next-line max-len
|
||||
console.log(colors.brightCyan('Blindingly ') + colors.brightRed('bright? ') + colors.brightYellow('Why ') + colors.brightGreen('not?!'));
|
||||
|
||||
console.log('Setting themes is useful');
|
||||
|
||||
//
|
||||
// Custom themes
|
||||
//
|
||||
// console.log('Generic logging theme as JSON'.green.bold.underline);
|
||||
// Load theme with JSON literal
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'blue',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red',
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log(colors.error('this is an error'));
|
||||
|
||||
// outputs yellow text
|
||||
console.log(colors.warn('this is a warning'));
|
||||
|
||||
// outputs blue text
|
||||
console.log(colors.input('this is an input'));
|
||||
|
||||
|
||||
// console.log('Generic logging theme as file'.green.bold.underline);
|
||||
|
||||
// Load a theme from file
|
||||
colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));
|
||||
|
||||
// outputs red text
|
||||
console.log(colors.error('this is an error'));
|
||||
|
||||
// outputs yellow text
|
||||
console.log(colors.warn('this is a warning'));
|
||||
|
||||
// outputs grey text
|
||||
console.log(colors.input('this is an input'));
|
||||
|
||||
// console.log(colors.zalgo("Don't summon him"))
|
||||
|
||||
|
184
node_modules/logform/node_modules/@colors/colors/index.d.ts
generated
vendored
Normal file
184
node_modules/logform/node_modules/@colors/colors/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,184 @@
|
|||
// Type definitions for @colors/colors 1.4+
|
||||
// Project: https://github.com/Marak/colors.js
|
||||
// Definitions by: Bart van der Schoor <https://github.com/Bartvds>, Staffan Eketorp <https://github.com/staeke>
|
||||
// Definitions: https://github.com/DABH/colors.js
|
||||
|
||||
export interface Color {
|
||||
(text: string): string;
|
||||
|
||||
strip: Color;
|
||||
stripColors: Color;
|
||||
|
||||
black: Color;
|
||||
red: Color;
|
||||
green: Color;
|
||||
yellow: Color;
|
||||
blue: Color;
|
||||
magenta: Color;
|
||||
cyan: Color;
|
||||
white: Color;
|
||||
gray: Color;
|
||||
grey: Color;
|
||||
|
||||
brightRed: Color;
|
||||
brightGreen: Color;
|
||||
brightYellow: Color;
|
||||
brightBlue: Color;
|
||||
brightMagenta: Color;
|
||||
brightCyan: Color;
|
||||
brightWhite: Color;
|
||||
|
||||
bgBlack: Color;
|
||||
bgRed: Color;
|
||||
bgGreen: Color;
|
||||
bgYellow: Color;
|
||||
bgBlue: Color;
|
||||
bgMagenta: Color;
|
||||
bgCyan: Color;
|
||||
bgWhite: Color;
|
||||
|
||||
bgBrightRed: Color;
|
||||
bgBrightGreen: Color;
|
||||
bgBrightYellow: Color;
|
||||
bgBrightBlue: Color;
|
||||
bgBrightMagenta: Color;
|
||||
bgBrightCyan: Color;
|
||||
bgBrightWhite: Color;
|
||||
|
||||
reset: Color;
|
||||
bold: Color;
|
||||
dim: Color;
|
||||
italic: Color;
|
||||
underline: Color;
|
||||
inverse: Color;
|
||||
hidden: Color;
|
||||
strikethrough: Color;
|
||||
|
||||
rainbow: Color;
|
||||
zebra: Color;
|
||||
america: Color;
|
||||
trap: Color;
|
||||
random: Color;
|
||||
zalgo: Color;
|
||||
}
|
||||
|
||||
export function enable(): void;
|
||||
export function disable(): void;
|
||||
export function setTheme(theme: any): void;
|
||||
|
||||
export let enabled: boolean;
|
||||
|
||||
export const strip: Color;
|
||||
export const stripColors: Color;
|
||||
|
||||
export const black: Color;
|
||||
export const red: Color;
|
||||
export const green: Color;
|
||||
export const yellow: Color;
|
||||
export const blue: Color;
|
||||
export const magenta: Color;
|
||||
export const cyan: Color;
|
||||
export const white: Color;
|
||||
export const gray: Color;
|
||||
export const grey: Color;
|
||||
|
||||
export const brightRed: Color;
|
||||
export const brightGreen: Color;
|
||||
export const brightYellow: Color;
|
||||
export const brightBlue: Color;
|
||||
export const brightMagenta: Color;
|
||||
export const brightCyan: Color;
|
||||
export const brightWhite: Color;
|
||||
|
||||
export const bgBlack: Color;
|
||||
export const bgRed: Color;
|
||||
export const bgGreen: Color;
|
||||
export const bgYellow: Color;
|
||||
export const bgBlue: Color;
|
||||
export const bgMagenta: Color;
|
||||
export const bgCyan: Color;
|
||||
export const bgWhite: Color;
|
||||
|
||||
export const bgBrightRed: Color;
|
||||
export const bgBrightGreen: Color;
|
||||
export const bgBrightYellow: Color;
|
||||
export const bgBrightBlue: Color;
|
||||
export const bgBrightMagenta: Color;
|
||||
export const bgBrightCyan: Color;
|
||||
export const bgBrightWhite: Color;
|
||||
|
||||
export const reset: Color;
|
||||
export const bold: Color;
|
||||
export const dim: Color;
|
||||
export const italic: Color;
|
||||
export const underline: Color;
|
||||
export const inverse: Color;
|
||||
export const hidden: Color;
|
||||
export const strikethrough: Color;
|
||||
|
||||
export const rainbow: Color;
|
||||
export const zebra: Color;
|
||||
export const america: Color;
|
||||
export const trap: Color;
|
||||
export const random: Color;
|
||||
export const zalgo: Color;
|
||||
|
||||
declare global {
|
||||
interface String {
|
||||
strip: string;
|
||||
stripColors: string;
|
||||
|
||||
black: string;
|
||||
red: string;
|
||||
green: string;
|
||||
yellow: string;
|
||||
blue: string;
|
||||
magenta: string;
|
||||
cyan: string;
|
||||
white: string;
|
||||
gray: string;
|
||||
grey: string;
|
||||
|
||||
brightRed: string;
|
||||
brightGreen: string;
|
||||
brightYellow: string;
|
||||
brightBlue: string;
|
||||
brightMagenta: string;
|
||||
brightCyan: string;
|
||||
brightWhite: string;
|
||||
|
||||
bgBlack: string;
|
||||
bgRed: string;
|
||||
bgGreen: string;
|
||||
bgYellow: string;
|
||||
bgBlue: string;
|
||||
bgMagenta: string;
|
||||
bgCyan: string;
|
||||
bgWhite: string;
|
||||
|
||||
bgBrightRed: string;
|
||||
bgBrightGreen: string;
|
||||
bgBrightYellow: string;
|
||||
bgBrightBlue: string;
|
||||
bgBrightMagenta: string;
|
||||
bgBrightCyan: string;
|
||||
bgBrightWhite: string;
|
||||
|
||||
reset: string;
|
||||
// @ts-ignore
|
||||
bold: string;
|
||||
dim: string;
|
||||
italic: string;
|
||||
underline: string;
|
||||
inverse: string;
|
||||
hidden: string;
|
||||
strikethrough: string;
|
||||
|
||||
rainbow: string;
|
||||
zebra: string;
|
||||
america: string;
|
||||
trap: string;
|
||||
random: string;
|
||||
zalgo: string;
|
||||
}
|
||||
}
|
211
node_modules/logform/node_modules/@colors/colors/lib/colors.js
generated
vendored
Normal file
211
node_modules/logform/node_modules/@colors/colors/lib/colors.js
generated
vendored
Normal file
|
@ -0,0 +1,211 @@
|
|||
/*
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Original Library
|
||||
- Copyright (c) Marak Squires
|
||||
|
||||
Additional functionality
|
||||
- Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
var colors = {};
|
||||
module['exports'] = colors;
|
||||
|
||||
colors.themes = {};
|
||||
|
||||
var util = require('util');
|
||||
var ansiStyles = colors.styles = require('./styles');
|
||||
var defineProps = Object.defineProperties;
|
||||
var newLineRegex = new RegExp(/[\r\n]+/g);
|
||||
|
||||
colors.supportsColor = require('./system/supports-colors').supportsColor;
|
||||
|
||||
if (typeof colors.enabled === 'undefined') {
|
||||
colors.enabled = colors.supportsColor() !== false;
|
||||
}
|
||||
|
||||
colors.enable = function() {
|
||||
colors.enabled = true;
|
||||
};
|
||||
|
||||
colors.disable = function() {
|
||||
colors.enabled = false;
|
||||
};
|
||||
|
||||
colors.stripColors = colors.strip = function(str) {
|
||||
return ('' + str).replace(/\x1B\[\d+m/g, '');
|
||||
};
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
var stylize = colors.stylize = function stylize(str, style) {
|
||||
if (!colors.enabled) {
|
||||
return str+'';
|
||||
}
|
||||
|
||||
var styleMap = ansiStyles[style];
|
||||
|
||||
// Stylize should work for non-ANSI styles, too
|
||||
if (!styleMap && style in colors) {
|
||||
// Style maps like trap operate as functions on strings;
|
||||
// they don't have properties like open or close.
|
||||
return colors[style](str);
|
||||
}
|
||||
|
||||
return styleMap.open + str + styleMap.close;
|
||||
};
|
||||
|
||||
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
|
||||
var escapeStringRegexp = function(str) {
|
||||
if (typeof str !== 'string') {
|
||||
throw new TypeError('Expected a string');
|
||||
}
|
||||
return str.replace(matchOperatorsRe, '\\$&');
|
||||
};
|
||||
|
||||
function build(_styles) {
|
||||
var builder = function builder() {
|
||||
return applyStyle.apply(builder, arguments);
|
||||
};
|
||||
builder._styles = _styles;
|
||||
// __proto__ is used because we must return a function, but there is
|
||||
// no way to create a function with a different prototype.
|
||||
builder.__proto__ = proto;
|
||||
return builder;
|
||||
}
|
||||
|
||||
var styles = (function() {
|
||||
var ret = {};
|
||||
ansiStyles.grey = ansiStyles.gray;
|
||||
Object.keys(ansiStyles).forEach(function(key) {
|
||||
ansiStyles[key].closeRe =
|
||||
new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
|
||||
ret[key] = {
|
||||
get: function() {
|
||||
return build(this._styles.concat(key));
|
||||
},
|
||||
};
|
||||
});
|
||||
return ret;
|
||||
})();
|
||||
|
||||
var proto = defineProps(function colors() {}, styles);
|
||||
|
||||
function applyStyle() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
|
||||
var str = args.map(function(arg) {
|
||||
// Use weak equality check so we can colorize null/undefined in safe mode
|
||||
if (arg != null && arg.constructor === String) {
|
||||
return arg;
|
||||
} else {
|
||||
return util.inspect(arg);
|
||||
}
|
||||
}).join(' ');
|
||||
|
||||
if (!colors.enabled || !str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
var newLinesPresent = str.indexOf('\n') != -1;
|
||||
|
||||
var nestedStyles = this._styles;
|
||||
|
||||
var i = nestedStyles.length;
|
||||
while (i--) {
|
||||
var code = ansiStyles[nestedStyles[i]];
|
||||
str = code.open + str.replace(code.closeRe, code.open) + code.close;
|
||||
if (newLinesPresent) {
|
||||
str = str.replace(newLineRegex, function(match) {
|
||||
return code.close + match + code.open;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
colors.setTheme = function(theme) {
|
||||
if (typeof theme === 'string') {
|
||||
console.log('colors.setTheme now only accepts an object, not a string. ' +
|
||||
'If you are trying to set a theme from a file, it is now your (the ' +
|
||||
'caller\'s) responsibility to require the file. The old syntax ' +
|
||||
'looked like colors.setTheme(__dirname + ' +
|
||||
'\'/../themes/generic-logging.js\'); The new syntax looks like '+
|
||||
'colors.setTheme(require(__dirname + ' +
|
||||
'\'/../themes/generic-logging.js\'));');
|
||||
return;
|
||||
}
|
||||
for (var style in theme) {
|
||||
(function(style) {
|
||||
colors[style] = function(str) {
|
||||
if (typeof theme[style] === 'object') {
|
||||
var out = str;
|
||||
for (var i in theme[style]) {
|
||||
out = colors[theme[style][i]](out);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
return colors[theme[style]](str);
|
||||
};
|
||||
})(style);
|
||||
}
|
||||
};
|
||||
|
||||
function init() {
|
||||
var ret = {};
|
||||
Object.keys(styles).forEach(function(name) {
|
||||
ret[name] = {
|
||||
get: function() {
|
||||
return build([name]);
|
||||
},
|
||||
};
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
|
||||
var sequencer = function sequencer(map, str) {
|
||||
var exploded = str.split('');
|
||||
exploded = exploded.map(map);
|
||||
return exploded.join('');
|
||||
};
|
||||
|
||||
// custom formatter methods
|
||||
colors.trap = require('./custom/trap');
|
||||
colors.zalgo = require('./custom/zalgo');
|
||||
|
||||
// maps
|
||||
colors.maps = {};
|
||||
colors.maps.america = require('./maps/america')(colors);
|
||||
colors.maps.zebra = require('./maps/zebra')(colors);
|
||||
colors.maps.rainbow = require('./maps/rainbow')(colors);
|
||||
colors.maps.random = require('./maps/random')(colors);
|
||||
|
||||
for (var map in colors.maps) {
|
||||
(function(map) {
|
||||
colors[map] = function(str) {
|
||||
return sequencer(colors.maps[map], str);
|
||||
};
|
||||
})(map);
|
||||
}
|
||||
|
||||
defineProps(colors, init());
|
46
node_modules/logform/node_modules/@colors/colors/lib/custom/trap.js
generated
vendored
Normal file
46
node_modules/logform/node_modules/@colors/colors/lib/custom/trap.js
generated
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
module['exports'] = function runTheTrap(text, options) {
|
||||
var result = '';
|
||||
text = text || 'Run the trap, drop the bass';
|
||||
text = text.split('');
|
||||
var trap = {
|
||||
a: ['\u0040', '\u0104', '\u023a', '\u0245', '\u0394', '\u039b', '\u0414'],
|
||||
b: ['\u00df', '\u0181', '\u0243', '\u026e', '\u03b2', '\u0e3f'],
|
||||
c: ['\u00a9', '\u023b', '\u03fe'],
|
||||
d: ['\u00d0', '\u018a', '\u0500', '\u0501', '\u0502', '\u0503'],
|
||||
e: ['\u00cb', '\u0115', '\u018e', '\u0258', '\u03a3', '\u03be', '\u04bc',
|
||||
'\u0a6c'],
|
||||
f: ['\u04fa'],
|
||||
g: ['\u0262'],
|
||||
h: ['\u0126', '\u0195', '\u04a2', '\u04ba', '\u04c7', '\u050a'],
|
||||
i: ['\u0f0f'],
|
||||
j: ['\u0134'],
|
||||
k: ['\u0138', '\u04a0', '\u04c3', '\u051e'],
|
||||
l: ['\u0139'],
|
||||
m: ['\u028d', '\u04cd', '\u04ce', '\u0520', '\u0521', '\u0d69'],
|
||||
n: ['\u00d1', '\u014b', '\u019d', '\u0376', '\u03a0', '\u048a'],
|
||||
o: ['\u00d8', '\u00f5', '\u00f8', '\u01fe', '\u0298', '\u047a', '\u05dd',
|
||||
'\u06dd', '\u0e4f'],
|
||||
p: ['\u01f7', '\u048e'],
|
||||
q: ['\u09cd'],
|
||||
r: ['\u00ae', '\u01a6', '\u0210', '\u024c', '\u0280', '\u042f'],
|
||||
s: ['\u00a7', '\u03de', '\u03df', '\u03e8'],
|
||||
t: ['\u0141', '\u0166', '\u0373'],
|
||||
u: ['\u01b1', '\u054d'],
|
||||
v: ['\u05d8'],
|
||||
w: ['\u0428', '\u0460', '\u047c', '\u0d70'],
|
||||
x: ['\u04b2', '\u04fe', '\u04fc', '\u04fd'],
|
||||
y: ['\u00a5', '\u04b0', '\u04cb'],
|
||||
z: ['\u01b5', '\u0240'],
|
||||
};
|
||||
text.forEach(function(c) {
|
||||
c = c.toLowerCase();
|
||||
var chars = trap[c] || [' '];
|
||||
var rand = Math.floor(Math.random() * chars.length);
|
||||
if (typeof trap[c] !== 'undefined') {
|
||||
result += trap[c][rand];
|
||||
} else {
|
||||
result += c;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
};
|
110
node_modules/logform/node_modules/@colors/colors/lib/custom/zalgo.js
generated
vendored
Normal file
110
node_modules/logform/node_modules/@colors/colors/lib/custom/zalgo.js
generated
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
// please no
|
||||
module['exports'] = function zalgo(text, options) {
|
||||
text = text || ' he is here ';
|
||||
var soul = {
|
||||
'up': [
|
||||
'̍', '̎', '̄', '̅',
|
||||
'̿', '̑', '̆', '̐',
|
||||
'͒', '͗', '͑', '̇',
|
||||
'̈', '̊', '͂', '̓',
|
||||
'̈', '͊', '͋', '͌',
|
||||
'̃', '̂', '̌', '͐',
|
||||
'̀', '́', '̋', '̏',
|
||||
'̒', '̓', '̔', '̽',
|
||||
'̉', 'ͣ', 'ͤ', 'ͥ',
|
||||
'ͦ', 'ͧ', 'ͨ', 'ͩ',
|
||||
'ͪ', 'ͫ', 'ͬ', 'ͭ',
|
||||
'ͮ', 'ͯ', '̾', '͛',
|
||||
'͆', '̚',
|
||||
],
|
||||
'down': [
|
||||
'̖', '̗', '̘', '̙',
|
||||
'̜', '̝', '̞', '̟',
|
||||
'̠', '̤', '̥', '̦',
|
||||
'̩', '̪', '̫', '̬',
|
||||
'̭', '̮', '̯', '̰',
|
||||
'̱', '̲', '̳', '̹',
|
||||
'̺', '̻', '̼', 'ͅ',
|
||||
'͇', '͈', '͉', '͍',
|
||||
'͎', '͓', '͔', '͕',
|
||||
'͖', '͙', '͚', '̣',
|
||||
],
|
||||
'mid': [
|
||||
'̕', '̛', '̀', '́',
|
||||
'͘', '̡', '̢', '̧',
|
||||
'̨', '̴', '̵', '̶',
|
||||
'͜', '͝', '͞',
|
||||
'͟', '͠', '͢', '̸',
|
||||
'̷', '͡', ' ҉',
|
||||
],
|
||||
};
|
||||
var all = [].concat(soul.up, soul.down, soul.mid);
|
||||
|
||||
function randomNumber(range) {
|
||||
var r = Math.floor(Math.random() * range);
|
||||
return r;
|
||||
}
|
||||
|
||||
function isChar(character) {
|
||||
var bool = false;
|
||||
all.filter(function(i) {
|
||||
bool = (i === character);
|
||||
});
|
||||
return bool;
|
||||
}
|
||||
|
||||
|
||||
function heComes(text, options) {
|
||||
var result = '';
|
||||
var counts;
|
||||
var l;
|
||||
options = options || {};
|
||||
options['up'] =
|
||||
typeof options['up'] !== 'undefined' ? options['up'] : true;
|
||||
options['mid'] =
|
||||
typeof options['mid'] !== 'undefined' ? options['mid'] : true;
|
||||
options['down'] =
|
||||
typeof options['down'] !== 'undefined' ? options['down'] : true;
|
||||
options['size'] =
|
||||
typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';
|
||||
text = text.split('');
|
||||
for (l in text) {
|
||||
if (isChar(l)) {
|
||||
continue;
|
||||
}
|
||||
result = result + text[l];
|
||||
counts = {'up': 0, 'down': 0, 'mid': 0};
|
||||
switch (options.size) {
|
||||
case 'mini':
|
||||
counts.up = randomNumber(8);
|
||||
counts.mid = randomNumber(2);
|
||||
counts.down = randomNumber(8);
|
||||
break;
|
||||
case 'maxi':
|
||||
counts.up = randomNumber(16) + 3;
|
||||
counts.mid = randomNumber(4) + 1;
|
||||
counts.down = randomNumber(64) + 3;
|
||||
break;
|
||||
default:
|
||||
counts.up = randomNumber(8) + 1;
|
||||
counts.mid = randomNumber(6) / 2;
|
||||
counts.down = randomNumber(8) + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
var arr = ['up', 'mid', 'down'];
|
||||
for (var d in arr) {
|
||||
var index = arr[d];
|
||||
for (var i = 0; i <= counts[index]; i++) {
|
||||
if (options[index]) {
|
||||
result = result + soul[index][randomNumber(soul[index].length)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// don't summon him
|
||||
return heComes(text, options);
|
||||
};
|
||||
|
110
node_modules/logform/node_modules/@colors/colors/lib/extendStringPrototype.js
generated
vendored
Normal file
110
node_modules/logform/node_modules/@colors/colors/lib/extendStringPrototype.js
generated
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
var colors = require('./colors');
|
||||
|
||||
module['exports'] = function() {
|
||||
//
|
||||
// Extends prototype of native string object to allow for "foo".red syntax
|
||||
//
|
||||
var addProperty = function(color, func) {
|
||||
String.prototype.__defineGetter__(color, func);
|
||||
};
|
||||
|
||||
addProperty('strip', function() {
|
||||
return colors.strip(this);
|
||||
});
|
||||
|
||||
addProperty('stripColors', function() {
|
||||
return colors.strip(this);
|
||||
});
|
||||
|
||||
addProperty('trap', function() {
|
||||
return colors.trap(this);
|
||||
});
|
||||
|
||||
addProperty('zalgo', function() {
|
||||
return colors.zalgo(this);
|
||||
});
|
||||
|
||||
addProperty('zebra', function() {
|
||||
return colors.zebra(this);
|
||||
});
|
||||
|
||||
addProperty('rainbow', function() {
|
||||
return colors.rainbow(this);
|
||||
});
|
||||
|
||||
addProperty('random', function() {
|
||||
return colors.random(this);
|
||||
});
|
||||
|
||||
addProperty('america', function() {
|
||||
return colors.america(this);
|
||||
});
|
||||
|
||||
//
|
||||
// Iterate through all default styles and colors
|
||||
//
|
||||
var x = Object.keys(colors.styles);
|
||||
x.forEach(function(style) {
|
||||
addProperty(style, function() {
|
||||
return colors.stylize(this, style);
|
||||
});
|
||||
});
|
||||
|
||||
function applyTheme(theme) {
|
||||
//
|
||||
// Remark: This is a list of methods that exist
|
||||
// on String that you should not overwrite.
|
||||
//
|
||||
var stringPrototypeBlacklist = [
|
||||
'__defineGetter__', '__defineSetter__', '__lookupGetter__',
|
||||
'__lookupSetter__', 'charAt', 'constructor', 'hasOwnProperty',
|
||||
'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString',
|
||||
'valueOf', 'charCodeAt', 'indexOf', 'lastIndexOf', 'length',
|
||||
'localeCompare', 'match', 'repeat', 'replace', 'search', 'slice',
|
||||
'split', 'substring', 'toLocaleLowerCase', 'toLocaleUpperCase',
|
||||
'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight',
|
||||
];
|
||||
|
||||
Object.keys(theme).forEach(function(prop) {
|
||||
if (stringPrototypeBlacklist.indexOf(prop) !== -1) {
|
||||
console.log('warn: '.red + ('String.prototype' + prop).magenta +
|
||||
' is probably something you don\'t want to override. ' +
|
||||
'Ignoring style name');
|
||||
} else {
|
||||
if (typeof(theme[prop]) === 'string') {
|
||||
colors[prop] = colors[theme[prop]];
|
||||
addProperty(prop, function() {
|
||||
return colors[prop](this);
|
||||
});
|
||||
} else {
|
||||
var themePropApplicator = function(str) {
|
||||
var ret = str || this;
|
||||
for (var t = 0; t < theme[prop].length; t++) {
|
||||
ret = colors[theme[prop][t]](ret);
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
addProperty(prop, themePropApplicator);
|
||||
colors[prop] = function(str) {
|
||||
return themePropApplicator(str);
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
colors.setTheme = function(theme) {
|
||||
if (typeof theme === 'string') {
|
||||
console.log('colors.setTheme now only accepts an object, not a string. ' +
|
||||
'If you are trying to set a theme from a file, it is now your (the ' +
|
||||
'caller\'s) responsibility to require the file. The old syntax ' +
|
||||
'looked like colors.setTheme(__dirname + ' +
|
||||
'\'/../themes/generic-logging.js\'); The new syntax looks like '+
|
||||
'colors.setTheme(require(__dirname + ' +
|
||||
'\'/../themes/generic-logging.js\'));');
|
||||
return;
|
||||
} else {
|
||||
applyTheme(theme);
|
||||
}
|
||||
};
|
||||
};
|
13
node_modules/logform/node_modules/@colors/colors/lib/index.js
generated
vendored
Normal file
13
node_modules/logform/node_modules/@colors/colors/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
var colors = require('./colors');
|
||||
module['exports'] = colors;
|
||||
|
||||
// Remark: By default, colors will add style properties to String.prototype.
|
||||
//
|
||||
// If you don't wish to extend String.prototype, you can do this instead and
|
||||
// native String will not be touched:
|
||||
//
|
||||
// var colors = require('@colors/colors/safe');
|
||||
// colors.red("foo")
|
||||
//
|
||||
//
|
||||
require('./extendStringPrototype')();
|
10
node_modules/logform/node_modules/@colors/colors/lib/maps/america.js
generated
vendored
Normal file
10
node_modules/logform/node_modules/@colors/colors/lib/maps/america.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
module['exports'] = function(colors) {
|
||||
return function(letter, i, exploded) {
|
||||
if (letter === ' ') return letter;
|
||||
switch (i%3) {
|
||||
case 0: return colors.red(letter);
|
||||
case 1: return colors.white(letter);
|
||||
case 2: return colors.blue(letter);
|
||||
}
|
||||
};
|
||||
};
|
12
node_modules/logform/node_modules/@colors/colors/lib/maps/rainbow.js
generated
vendored
Normal file
12
node_modules/logform/node_modules/@colors/colors/lib/maps/rainbow.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
module['exports'] = function(colors) {
|
||||
// RoY G BiV
|
||||
var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];
|
||||
return function(letter, i, exploded) {
|
||||
if (letter === ' ') {
|
||||
return letter;
|
||||
} else {
|
||||
return colors[rainbowColors[i++ % rainbowColors.length]](letter);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
11
node_modules/logform/node_modules/@colors/colors/lib/maps/random.js
generated
vendored
Normal file
11
node_modules/logform/node_modules/@colors/colors/lib/maps/random.js
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
module['exports'] = function(colors) {
|
||||
var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',
|
||||
'blue', 'white', 'cyan', 'magenta', 'brightYellow', 'brightRed',
|
||||
'brightGreen', 'brightBlue', 'brightWhite', 'brightCyan', 'brightMagenta'];
|
||||
return function(letter, i, exploded) {
|
||||
return letter === ' ' ? letter :
|
||||
colors[
|
||||
available[Math.round(Math.random() * (available.length - 2))]
|
||||
](letter);
|
||||
};
|
||||
};
|
5
node_modules/logform/node_modules/@colors/colors/lib/maps/zebra.js
generated
vendored
Normal file
5
node_modules/logform/node_modules/@colors/colors/lib/maps/zebra.js
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
module['exports'] = function(colors) {
|
||||
return function(letter, i, exploded) {
|
||||
return i % 2 === 0 ? letter : colors.inverse(letter);
|
||||
};
|
||||
};
|
95
node_modules/logform/node_modules/@colors/colors/lib/styles.js
generated
vendored
Normal file
95
node_modules/logform/node_modules/@colors/colors/lib/styles.js
generated
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
var styles = {};
|
||||
module['exports'] = styles;
|
||||
|
||||
var codes = {
|
||||
reset: [0, 0],
|
||||
|
||||
bold: [1, 22],
|
||||
dim: [2, 22],
|
||||
italic: [3, 23],
|
||||
underline: [4, 24],
|
||||
inverse: [7, 27],
|
||||
hidden: [8, 28],
|
||||
strikethrough: [9, 29],
|
||||
|
||||
black: [30, 39],
|
||||
red: [31, 39],
|
||||
green: [32, 39],
|
||||
yellow: [33, 39],
|
||||
blue: [34, 39],
|
||||
magenta: [35, 39],
|
||||
cyan: [36, 39],
|
||||
white: [37, 39],
|
||||
gray: [90, 39],
|
||||
grey: [90, 39],
|
||||
|
||||
brightRed: [91, 39],
|
||||
brightGreen: [92, 39],
|
||||
brightYellow: [93, 39],
|
||||
brightBlue: [94, 39],
|
||||
brightMagenta: [95, 39],
|
||||
brightCyan: [96, 39],
|
||||
brightWhite: [97, 39],
|
||||
|
||||
bgBlack: [40, 49],
|
||||
bgRed: [41, 49],
|
||||
bgGreen: [42, 49],
|
||||
bgYellow: [43, 49],
|
||||
bgBlue: [44, 49],
|
||||
bgMagenta: [45, 49],
|
||||
bgCyan: [46, 49],
|
||||
bgWhite: [47, 49],
|
||||
bgGray: [100, 49],
|
||||
bgGrey: [100, 49],
|
||||
|
||||
bgBrightRed: [101, 49],
|
||||
bgBrightGreen: [102, 49],
|
||||
bgBrightYellow: [103, 49],
|
||||
bgBrightBlue: [104, 49],
|
||||
bgBrightMagenta: [105, 49],
|
||||
bgBrightCyan: [106, 49],
|
||||
bgBrightWhite: [107, 49],
|
||||
|
||||
// legacy styles for colors pre v1.0.0
|
||||
blackBG: [40, 49],
|
||||
redBG: [41, 49],
|
||||
greenBG: [42, 49],
|
||||
yellowBG: [43, 49],
|
||||
blueBG: [44, 49],
|
||||
magentaBG: [45, 49],
|
||||
cyanBG: [46, 49],
|
||||
whiteBG: [47, 49],
|
||||
|
||||
};
|
||||
|
||||
Object.keys(codes).forEach(function(key) {
|
||||
var val = codes[key];
|
||||
var style = styles[key] = [];
|
||||
style.open = '\u001b[' + val[0] + 'm';
|
||||
style.close = '\u001b[' + val[1] + 'm';
|
||||
});
|
35
node_modules/logform/node_modules/@colors/colors/lib/system/has-flag.js
generated
vendored
Normal file
35
node_modules/logform/node_modules/@colors/colors/lib/system/has-flag.js
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
MIT License
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = function(flag, argv) {
|
||||
argv = argv || process.argv || [];
|
||||
|
||||
var terminatorPos = argv.indexOf('--');
|
||||
var prefix = /^-{1,2}/.test(flag) ? '' : '--';
|
||||
var pos = argv.indexOf(prefix + flag);
|
||||
|
||||
return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
|
||||
};
|
151
node_modules/logform/node_modules/@colors/colors/lib/system/supports-colors.js
generated
vendored
Normal file
151
node_modules/logform/node_modules/@colors/colors/lib/system/supports-colors.js
generated
vendored
Normal file
|
@ -0,0 +1,151 @@
|
|||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
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 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, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var os = require('os');
|
||||
var hasFlag = require('./has-flag.js');
|
||||
|
||||
var env = process.env;
|
||||
|
||||
var forceColor = void 0;
|
||||
if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {
|
||||
forceColor = false;
|
||||
} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')
|
||||
|| hasFlag('color=always')) {
|
||||
forceColor = true;
|
||||
}
|
||||
if ('FORCE_COLOR' in env) {
|
||||
forceColor = env.FORCE_COLOR.length === 0
|
||||
|| parseInt(env.FORCE_COLOR, 10) !== 0;
|
||||
}
|
||||
|
||||
function translateLevel(level) {
|
||||
if (level === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return {
|
||||
level: level,
|
||||
hasBasic: true,
|
||||
has256: level >= 2,
|
||||
has16m: level >= 3,
|
||||
};
|
||||
}
|
||||
|
||||
function supportsColor(stream) {
|
||||
if (forceColor === false) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hasFlag('color=16m') || hasFlag('color=full')
|
||||
|| hasFlag('color=truecolor')) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (hasFlag('color=256')) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (stream && !stream.isTTY && forceColor !== true) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var min = forceColor ? 1 : 0;
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
// Node.js 7.5.0 is the first version of Node.js to include a patch to
|
||||
// libuv that enables 256 color output on Windows. Anything earlier and it
|
||||
// won't work. However, here we target Node.js 8 at minimum as it is an LTS
|
||||
// release, and Node.js 7 is not. Windows 10 build 10586 is the first
|
||||
// Windows release that supports 256 colors. Windows 10 build 14931 is the
|
||||
// first release that supports 16m/TrueColor.
|
||||
var osRelease = os.release().split('.');
|
||||
if (Number(process.versions.node.split('.')[0]) >= 8
|
||||
&& Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
||||
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ('CI' in env) {
|
||||
if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {
|
||||
return sign in env;
|
||||
}) || env.CI_NAME === 'codeship') {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
if ('TEAMCITY_VERSION' in env) {
|
||||
return (/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0
|
||||
);
|
||||
}
|
||||
|
||||
if ('TERM_PROGRAM' in env) {
|
||||
var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
|
||||
|
||||
switch (env.TERM_PROGRAM) {
|
||||
case 'iTerm.app':
|
||||
return version >= 3 ? 3 : 2;
|
||||
case 'Hyper':
|
||||
return 3;
|
||||
case 'Apple_Terminal':
|
||||
return 2;
|
||||
// No default
|
||||
}
|
||||
}
|
||||
|
||||
if (/-256(color)?$/i.test(env.TERM)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ('COLORTERM' in env) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (env.TERM === 'dumb') {
|
||||
return min;
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
function getSupportLevel(stream) {
|
||||
var level = supportsColor(stream);
|
||||
return translateLevel(level);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
supportsColor: getSupportLevel,
|
||||
stdout: getSupportLevel(process.stdout),
|
||||
stderr: getSupportLevel(process.stderr),
|
||||
};
|
45
node_modules/logform/node_modules/@colors/colors/package.json
generated
vendored
Normal file
45
node_modules/logform/node_modules/@colors/colors/package.json
generated
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"name": "@colors/colors",
|
||||
"description": "get colors in your node.js console",
|
||||
"version": "1.6.0",
|
||||
"author": "DABH",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "DABH",
|
||||
"url": "https://github.com/DABH"
|
||||
}
|
||||
],
|
||||
"homepage": "https://github.com/DABH/colors.js",
|
||||
"bugs": "https://github.com/DABH/colors.js/issues",
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"terminal",
|
||||
"colors"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://github.com/DABH/colors.js.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"lint": "eslint . --fix",
|
||||
"test": "export FORCE_COLOR=1 && node tests/basic-test.js && node tests/safe-test.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.1.90"
|
||||
},
|
||||
"main": "lib/index.js",
|
||||
"files": [
|
||||
"examples",
|
||||
"lib",
|
||||
"LICENSE",
|
||||
"safe.js",
|
||||
"themes",
|
||||
"index.d.ts",
|
||||
"safe.d.ts"
|
||||
],
|
||||
"devDependencies": {
|
||||
"eslint": "^8.9.0",
|
||||
"eslint-config-google": "^0.14.0"
|
||||
}
|
||||
}
|
64
node_modules/logform/node_modules/@colors/colors/safe.d.ts
generated
vendored
Normal file
64
node_modules/logform/node_modules/@colors/colors/safe.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
// Type definitions for Colors.js 1.2
|
||||
// Project: https://github.com/Marak/colors.js
|
||||
// Definitions by: Bart van der Schoor <https://github.com/Bartvds>, Staffan Eketorp <https://github.com/staeke>
|
||||
// Definitions: https://github.com/Marak/colors.js
|
||||
|
||||
export const enabled: boolean;
|
||||
export function enable(): void;
|
||||
export function disable(): void;
|
||||
export function setTheme(theme: any): void;
|
||||
|
||||
export function strip(str: string): string;
|
||||
export function stripColors(str: string): string;
|
||||
|
||||
export function black(str: string): string;
|
||||
export function red(str: string): string;
|
||||
export function green(str: string): string;
|
||||
export function yellow(str: string): string;
|
||||
export function blue(str: string): string;
|
||||
export function magenta(str: string): string;
|
||||
export function cyan(str: string): string;
|
||||
export function white(str: string): string;
|
||||
export function gray(str: string): string;
|
||||
export function grey(str: string): string;
|
||||
|
||||
export function brightRed(str: string): string;
|
||||
export function brightGreen(str: string): string;
|
||||
export function brightYellow(str: string): string;
|
||||
export function brightBlue(str: string): string;
|
||||
export function brightMagenta(str: string): string;
|
||||
export function brightCyan(str: string): string;
|
||||
export function brightWhite(str: string): string;
|
||||
|
||||
export function bgBlack(str: string): string;
|
||||
export function bgRed(str: string): string;
|
||||
export function bgGreen(str: string): string;
|
||||
export function bgYellow(str: string): string;
|
||||
export function bgBlue(str: string): string;
|
||||
export function bgMagenta(str: string): string;
|
||||
export function bgCyan(str: string): string;
|
||||
export function bgWhite(str: string): string;
|
||||
|
||||
export function bgBrightRed(str: string): string;
|
||||
export function bgBrightGreen(str: string): string;
|
||||
export function bgBrightYellow(str: string): string;
|
||||
export function bgBrightBlue(str: string): string;
|
||||
export function bgBrightMagenta(str: string): string;
|
||||
export function bgBrightCyan(str: string): string;
|
||||
export function bgBrightWhite(str: string): string;
|
||||
|
||||
export function reset(str: string): string;
|
||||
export function bold(str: string): string;
|
||||
export function dim(str: string): string;
|
||||
export function italic(str: string): string;
|
||||
export function underline(str: string): string;
|
||||
export function inverse(str: string): string;
|
||||
export function hidden(str: string): string;
|
||||
export function strikethrough(str: string): string;
|
||||
|
||||
export function rainbow(str: string): string;
|
||||
export function zebra(str: string): string;
|
||||
export function america(str: string): string;
|
||||
export function trap(str: string): string;
|
||||
export function random(str: string): string;
|
||||
export function zalgo(str: string): string;
|
10
node_modules/logform/node_modules/@colors/colors/safe.js
generated
vendored
Normal file
10
node_modules/logform/node_modules/@colors/colors/safe.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
//
|
||||
// Remark: Requiring this file will use the "safe" colors API,
|
||||
// which will not touch String.prototype.
|
||||
//
|
||||
// var colors = require('colors/safe');
|
||||
// colors.red("foo")
|
||||
//
|
||||
//
|
||||
var colors = require('./lib/colors');
|
||||
module['exports'] = colors;
|
12
node_modules/logform/node_modules/@colors/colors/themes/generic-logging.js
generated
vendored
Normal file
12
node_modules/logform/node_modules/@colors/colors/themes/generic-logging.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
module['exports'] = {
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red',
|
||||
};
|
53
node_modules/logform/package.json
generated
vendored
Normal file
53
node_modules/logform/package.json
generated
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"name": "logform",
|
||||
"version": "2.6.1",
|
||||
"description": "An mutable object-based log format designed for chaining & objectMode streams.",
|
||||
"main": "index.js",
|
||||
"browser": "dist/browser.js",
|
||||
"scripts": {
|
||||
"lint": "eslint *.js test/*.js examples/*.js --resolve-plugins-relative-to ./node_modules/@dabh/eslint-config-populist",
|
||||
"pretest": "npm run lint && npm run build",
|
||||
"test": "nyc mocha test/*.test.js",
|
||||
"build": "rimraf dist && babel *.js -d ./dist",
|
||||
"prepublishOnly": "npm run build"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/winstonjs/logform.git"
|
||||
},
|
||||
"keywords": [
|
||||
"winston",
|
||||
"logging",
|
||||
"format",
|
||||
"winstonjs"
|
||||
],
|
||||
"author": "Charlie Robbins <charlie.robbins@gmail.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/winstonjs/logform/issues"
|
||||
},
|
||||
"homepage": "https://github.com/winstonjs/logform#readme",
|
||||
"dependencies": {
|
||||
"@colors/colors": "1.6.0",
|
||||
"@types/triple-beam": "^1.3.2",
|
||||
"fecha": "^4.2.0",
|
||||
"ms": "^2.1.1",
|
||||
"safe-stable-stringify": "^2.3.1",
|
||||
"triple-beam": "^1.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.10.3",
|
||||
"@babel/core": "^7.10.3",
|
||||
"@babel/preset-env": "^7.10.3",
|
||||
"@dabh/eslint-config-populist": "^5.0.0",
|
||||
"assume": "^2.2.0",
|
||||
"eslint": "^8.8.0",
|
||||
"mocha": "^10.0.0",
|
||||
"nyc": "^15.1.0",
|
||||
"rimraf": "^5.0.5"
|
||||
},
|
||||
"types": "./index.d.ts",
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
}
|
83
node_modules/logform/pad-levels.js
generated
vendored
Normal file
83
node_modules/logform/pad-levels.js
generated
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
/* eslint no-unused-vars: 0 */
|
||||
'use strict';
|
||||
|
||||
const { configs, LEVEL, MESSAGE } = require('triple-beam');
|
||||
|
||||
class Padder {
|
||||
constructor(opts = { levels: configs.npm.levels }) {
|
||||
this.paddings = Padder.paddingForLevels(opts.levels, opts.filler);
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum length of keys in the specified `levels` Object.
|
||||
* @param {Object} levels Set of all levels to calculate longest level against.
|
||||
* @returns {Number} Maximum length of the longest level string.
|
||||
*/
|
||||
static getLongestLevel(levels) {
|
||||
const lvls = Object.keys(levels).map(level => level.length);
|
||||
return Math.max(...lvls);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the padding for the specified `level` assuming that the
|
||||
* maximum length of all levels it's associated with is `maxLength`.
|
||||
* @param {String} level Level to calculate padding for.
|
||||
* @param {String} filler Repeatable text to use for padding.
|
||||
* @param {Number} maxLength Length of the longest level
|
||||
* @returns {String} Padding string for the `level`
|
||||
*/
|
||||
static paddingForLevel(level, filler, maxLength) {
|
||||
const targetLen = maxLength + 1 - level.length;
|
||||
const rep = Math.floor(targetLen / filler.length);
|
||||
const padding = `${filler}${filler.repeat(rep)}`;
|
||||
return padding.slice(0, targetLen);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an object with the string paddings for the given `levels`
|
||||
* using the specified `filler`.
|
||||
* @param {Object} levels Set of all levels to calculate padding for.
|
||||
* @param {String} filler Repeatable text to use for padding.
|
||||
* @returns {Object} Mapping of level to desired padding.
|
||||
*/
|
||||
static paddingForLevels(levels, filler = ' ') {
|
||||
const maxLength = Padder.getLongestLevel(levels);
|
||||
return Object.keys(levels).reduce((acc, level) => {
|
||||
acc[level] = Padder.paddingForLevel(level, filler, maxLength);
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepends the padding onto the `message` based on the `LEVEL` of
|
||||
* the `info`. This is based on the behavior of `winston@2` which also
|
||||
* prepended the level onto the message.
|
||||
*
|
||||
* See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
|
||||
*
|
||||
* @param {Info} info Logform info object
|
||||
* @param {Object} opts Options passed along to this instance.
|
||||
* @returns {Info} Modified logform info object.
|
||||
*/
|
||||
transform(info, opts) {
|
||||
info.message = `${this.paddings[info[LEVEL]]}${info.message}`;
|
||||
if (info[MESSAGE]) {
|
||||
info[MESSAGE] = `${this.paddings[info[LEVEL]]}${info[MESSAGE]}`;
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function padLevels (info)
|
||||
* Returns a new instance of the padLevels Format which pads
|
||||
* levels to be the same length. This was previously exposed as
|
||||
* { padLevels: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = opts => new Padder(opts);
|
||||
|
||||
module.exports.Padder
|
||||
= module.exports.Format
|
||||
= Padder;
|
29
node_modules/logform/pretty-print.js
generated
vendored
Normal file
29
node_modules/logform/pretty-print.js
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
'use strict';
|
||||
|
||||
const inspect = require('util').inspect;
|
||||
const format = require('./format');
|
||||
const { LEVEL, MESSAGE, SPLAT } = require('triple-beam');
|
||||
|
||||
/*
|
||||
* function prettyPrint (info)
|
||||
* Returns a new instance of the prettyPrint Format that "prettyPrint"
|
||||
* serializes `info` objects. This was previously exposed as
|
||||
* { prettyPrint: true } to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format((info, opts = {}) => {
|
||||
//
|
||||
// info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they
|
||||
// are internal, we remove them before util.inspect so they
|
||||
// are not printed.
|
||||
//
|
||||
const stripped = Object.assign({}, info);
|
||||
|
||||
// Remark (indexzero): update this technique in April 2019
|
||||
// when node@6 is EOL
|
||||
delete stripped[LEVEL];
|
||||
delete stripped[MESSAGE];
|
||||
delete stripped[SPLAT];
|
||||
|
||||
info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);
|
||||
return info;
|
||||
});
|
26
node_modules/logform/printf.js
generated
vendored
Normal file
26
node_modules/logform/printf.js
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
'use strict';
|
||||
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
|
||||
class Printf {
|
||||
constructor(templateFn) {
|
||||
this.template = templateFn;
|
||||
}
|
||||
|
||||
transform(info) {
|
||||
info[MESSAGE] = this.template(info);
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function printf (templateFn)
|
||||
* Returns a new instance of the printf Format that creates an
|
||||
* intermediate prototype to store the template string-based formatter
|
||||
* function.
|
||||
*/
|
||||
module.exports = opts => new Printf(opts);
|
||||
|
||||
module.exports.Printf
|
||||
= module.exports.Format
|
||||
= Printf;
|
33
node_modules/logform/simple.js
generated
vendored
Normal file
33
node_modules/logform/simple.js
generated
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* eslint no-undefined: 0 */
|
||||
'use strict';
|
||||
|
||||
const format = require('./format');
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
const jsonStringify = require('safe-stable-stringify');
|
||||
|
||||
/*
|
||||
* function simple (info)
|
||||
* Returns a new instance of the simple format TransformStream
|
||||
* which writes a simple representation of logs.
|
||||
*
|
||||
* const { level, message, splat, ...rest } = info;
|
||||
*
|
||||
* ${level}: ${message} if rest is empty
|
||||
* ${level}: ${message} ${JSON.stringify(rest)} otherwise
|
||||
*/
|
||||
module.exports = format(info => {
|
||||
const stringifiedRest = jsonStringify(Object.assign({}, info, {
|
||||
level: undefined,
|
||||
message: undefined,
|
||||
splat: undefined
|
||||
}));
|
||||
|
||||
const padding = info.padding && info.padding[info.level] || '';
|
||||
if (stringifiedRest !== '{}') {
|
||||
info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;
|
||||
} else {
|
||||
info[MESSAGE] = `${info.level}:${padding} ${info.message}`;
|
||||
}
|
||||
|
||||
return info;
|
||||
});
|
132
node_modules/logform/splat.js
generated
vendored
Normal file
132
node_modules/logform/splat.js
generated
vendored
Normal file
|
@ -0,0 +1,132 @@
|
|||
'use strict';
|
||||
|
||||
const util = require('util');
|
||||
const { SPLAT } = require('triple-beam');
|
||||
|
||||
/**
|
||||
* Captures the number of format (i.e. %s strings) in a given string.
|
||||
* Based on `util.format`, see Node.js source:
|
||||
* https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230
|
||||
* @type {RegExp}
|
||||
*/
|
||||
const formatRegExp = /%[scdjifoO%]/g;
|
||||
|
||||
/**
|
||||
* Captures the number of escaped % signs in a format string (i.e. %s strings).
|
||||
* @type {RegExp}
|
||||
*/
|
||||
const escapedPercent = /%%/g;
|
||||
|
||||
class Splatter {
|
||||
constructor(opts) {
|
||||
this.options = opts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if tokens <= splat.length, assign { splat, meta } into the
|
||||
* `info` accordingly, and write to this instance.
|
||||
*
|
||||
* @param {Info} info Logform info message.
|
||||
* @param {String[]} tokens Set of string interpolation tokens.
|
||||
* @returns {Info} Modified info message
|
||||
* @private
|
||||
*/
|
||||
_splat(info, tokens) {
|
||||
const msg = info.message;
|
||||
const splat = info[SPLAT] || info.splat || [];
|
||||
const percents = msg.match(escapedPercent);
|
||||
const escapes = percents && percents.length || 0;
|
||||
|
||||
// The expected splat is the number of tokens minus the number of escapes
|
||||
// e.g.
|
||||
// - { expectedSplat: 3 } '%d %s %j'
|
||||
// - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'
|
||||
//
|
||||
// Any "meta" will be arugments in addition to the expected splat size
|
||||
// regardless of type. e.g.
|
||||
//
|
||||
// logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });
|
||||
// would result in splat of four (4), but only three (3) are expected. Therefore:
|
||||
//
|
||||
// extraSplat = 3 - 4 = -1
|
||||
// metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);
|
||||
// splat = [100, 'wow', { such: 'js' }]
|
||||
const expectedSplat = tokens.length - escapes;
|
||||
const extraSplat = expectedSplat - splat.length;
|
||||
const metas = extraSplat < 0
|
||||
? splat.splice(extraSplat, -1 * extraSplat)
|
||||
: [];
|
||||
|
||||
// Now that { splat } has been separated from any potential { meta }. we
|
||||
// can assign this to the `info` object and write it to our format stream.
|
||||
// If the additional metas are **NOT** objects or **LACK** enumerable properties
|
||||
// you are going to have a bad time.
|
||||
const metalen = metas.length;
|
||||
if (metalen) {
|
||||
for (let i = 0; i < metalen; i++) {
|
||||
Object.assign(info, metas[i]);
|
||||
}
|
||||
}
|
||||
|
||||
info.message = util.format(msg, ...splat);
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the `info` message by using `util.format` to complete
|
||||
* any `info.message` provided it has string interpolation tokens.
|
||||
* If no tokens exist then `info` is immutable.
|
||||
*
|
||||
* @param {Info} info Logform info message.
|
||||
* @param {Object} opts Options for this instance.
|
||||
* @returns {Info} Modified info message
|
||||
*/
|
||||
transform(info) {
|
||||
const msg = info.message;
|
||||
const splat = info[SPLAT] || info.splat;
|
||||
|
||||
// No need to process anything if splat is undefined
|
||||
if (!splat || !splat.length) {
|
||||
return info;
|
||||
}
|
||||
|
||||
// Extract tokens, if none available default to empty array to
|
||||
// ensure consistancy in expected results
|
||||
const tokens = msg && msg.match && msg.match(formatRegExp);
|
||||
|
||||
// This condition will take care of inputs with info[SPLAT]
|
||||
// but no tokens present
|
||||
if (!tokens && (splat || splat.length)) {
|
||||
const metas = splat.length > 1
|
||||
? splat.splice(0)
|
||||
: splat;
|
||||
|
||||
// Now that { splat } has been separated from any potential { meta }. we
|
||||
// can assign this to the `info` object and write it to our format stream.
|
||||
// If the additional metas are **NOT** objects or **LACK** enumerable properties
|
||||
// you are going to have a bad time.
|
||||
const metalen = metas.length;
|
||||
if (metalen) {
|
||||
for (let i = 0; i < metalen; i++) {
|
||||
Object.assign(info, metas[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
if (tokens) {
|
||||
return this._splat(info, tokens);
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* function splat (info)
|
||||
* Returns a new instance of the splat format TransformStream
|
||||
* which performs string interpolation from `info` objects. This was
|
||||
* previously exposed implicitly in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = opts => new Splatter(opts);
|
30
node_modules/logform/timestamp.js
generated
vendored
Normal file
30
node_modules/logform/timestamp.js
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
'use strict';
|
||||
|
||||
const fecha = require('fecha');
|
||||
const format = require('./format');
|
||||
|
||||
/*
|
||||
* function timestamp (info)
|
||||
* Returns a new instance of the timestamp Format which adds a timestamp
|
||||
* to the info. It was previously available in winston < 3.0.0 as:
|
||||
*
|
||||
* - { timestamp: true } // `new Date.toISOString()`
|
||||
* - { timestamp: function:String } // Value returned by `timestamp()`
|
||||
*/
|
||||
module.exports = format((info, opts = {}) => {
|
||||
if (opts.format) {
|
||||
info.timestamp = typeof opts.format === 'function'
|
||||
? opts.format()
|
||||
: fecha.format(new Date(), opts.format);
|
||||
}
|
||||
|
||||
if (!info.timestamp) {
|
||||
info.timestamp = new Date().toISOString();
|
||||
}
|
||||
|
||||
if (opts.alias) {
|
||||
info[opts.alias] = info.timestamp;
|
||||
}
|
||||
|
||||
return info;
|
||||
});
|
22
node_modules/logform/tsconfig.json
generated
vendored
Normal file
22
node_modules/logform/tsconfig.json
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts"
|
||||
]
|
||||
}
|
27
node_modules/logform/uncolorize.js
generated
vendored
Normal file
27
node_modules/logform/uncolorize.js
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
const colors = require('@colors/colors/safe');
|
||||
const format = require('./format');
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
|
||||
/*
|
||||
* function uncolorize (info)
|
||||
* Returns a new instance of the uncolorize Format that strips colors
|
||||
* from `info` objects. This was previously exposed as { stripColors: true }
|
||||
* to transports in `winston < 3.0.0`.
|
||||
*/
|
||||
module.exports = format((info, opts) => {
|
||||
if (opts.level !== false) {
|
||||
info.level = colors.strip(info.level);
|
||||
}
|
||||
|
||||
if (opts.message !== false) {
|
||||
info.message = colors.strip(String(info.message));
|
||||
}
|
||||
|
||||
if (opts.raw !== false && info[MESSAGE]) {
|
||||
info[MESSAGE] = colors.strip(String(info[MESSAGE]));
|
||||
}
|
||||
|
||||
return info;
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue