Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
e176cadd19 | |||
a5dabd17cc | |||
cfe8a5f81a | |||
ea18170427 | |||
cd1694e93a | |||
0d0822ef3c | |||
6777f351c5 | |||
03c390604a | |||
aed684ef5c | |||
b06d1fae96 | |||
966e8678a8 | |||
b2002a53ad |
17
.gitignore
vendored
17
.gitignore
vendored
@ -1,5 +1,20 @@
|
|||||||
.nogit/
|
.nogit/
|
||||||
node_modules/
|
|
||||||
|
# artifacts
|
||||||
coverage/
|
coverage/
|
||||||
public/
|
public/
|
||||||
pages/
|
pages/
|
||||||
|
|
||||||
|
# installs
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# caches
|
||||||
|
.yarn/
|
||||||
|
.cache/
|
||||||
|
.rpt2_cache
|
||||||
|
|
||||||
|
# builds
|
||||||
|
dist/
|
||||||
|
dist_*/
|
||||||
|
|
||||||
|
# custom
|
109
.gitlab-ci.yml
109
.gitlab-ci.yml
@ -1,86 +1,127 @@
|
|||||||
# gitzone standard
|
# gitzone ci_default
|
||||||
image: hosttoday/ht-docker-node:npmci
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
paths:
|
paths:
|
||||||
- .yarn/
|
- .npmci_cache/
|
||||||
key: "$CI_BUILD_STAGE"
|
key: '$CI_BUILD_STAGE'
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- mirror
|
- security
|
||||||
- test
|
- test
|
||||||
- release
|
- release
|
||||||
- trigger
|
- metadata
|
||||||
- pages
|
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# security stage
|
||||||
|
# ====================
|
||||||
mirror:
|
mirror:
|
||||||
stage: mirror
|
stage: security
|
||||||
script:
|
script:
|
||||||
- npmci git mirror
|
- npmci git mirror
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
testLEGACY:
|
audit:
|
||||||
stage: test
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
stage: security
|
||||||
script:
|
script:
|
||||||
- npmci node install legacy
|
- npmci npm prepare
|
||||||
- npmci npm install
|
- npmci command npm install --ignore-scripts
|
||||||
- npmci npm test
|
- npmci command npm config set registry https://registry.npmjs.org
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
- npmci command npm audit --audit-level=high
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
allow_failure: true
|
- notpriv
|
||||||
|
|
||||||
testLTS:
|
# ====================
|
||||||
stage: test
|
# test stage
|
||||||
script:
|
# ====================
|
||||||
- npmci node install lts
|
|
||||||
- npmci npm install
|
testStable:
|
||||||
- npmci npm test
|
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
|
||||||
tags:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
testSTABLE:
|
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
- npmci node install stable
|
- npmci node install stable
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci npm test
|
- npmci npm test
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
- priv
|
||||||
|
|
||||||
|
testBuild:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci node install stable
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command npm run build
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
release:
|
release:
|
||||||
stage: release
|
stage: release
|
||||||
script:
|
script:
|
||||||
- npmci npm prepare
|
- npmci node install stable
|
||||||
- npmci npm publish
|
- npmci npm publish
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# metadata stage
|
||||||
|
# ====================
|
||||||
|
codequality:
|
||||||
|
stage: metadata
|
||||||
|
allow_failure: true
|
||||||
|
script:
|
||||||
|
- npmci command npm install -g tslint typescript
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- priv
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
stage: trigger
|
stage: metadata
|
||||||
script:
|
script:
|
||||||
- npmci trigger
|
- npmci trigger
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
image: hosttoday/ht-docker-node:npmci
|
stage: metadata
|
||||||
stage: pages
|
|
||||||
script:
|
script:
|
||||||
- npmci command yarn global add npmpage
|
- npmci node install lts
|
||||||
- npmci command npmpage
|
- npmci command npm install -g @gitzone/tsdoc
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command tsdoc
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
- notpriv
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
allow_failure: true
|
||||||
|
29
.vscode/launch.json
vendored
Normal file
29
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "current file",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [
|
||||||
|
"${relativeFile}"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test.ts",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [
|
||||||
|
"test/test.ts"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
26
.vscode/settings.json
vendored
Normal file
26
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"json.schemas": [
|
||||||
|
{
|
||||||
|
"fileMatch": ["/npmextra.json"],
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"npmci": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for npmci"
|
||||||
|
},
|
||||||
|
"gitzone": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for gitzone",
|
||||||
|
"properties": {
|
||||||
|
"projectType": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["website", "element", "service", "npm"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,4 +0,0 @@
|
|||||||
module.name: smartmodule
|
|
||||||
module.description: a smart description
|
|
||||||
module.author: Lossless GmbH
|
|
||||||
module.license: MIT
|
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -1 +1 @@
|
|||||||
export declare let standardExport: string;
|
export * from './logcontext.classes.logger';
|
||||||
|
7
dist/index.js
vendored
7
dist/index.js
vendored
@ -1,4 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
function __export(m) {
|
||||||
|
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||||
|
}
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.standardExport = 'Hi there! :) This is a exported string';
|
__export(require("./logcontext.classes.logger"));
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVXLFFBQUEsY0FBYyxHQUFHLHdDQUF3QyxDQUFBIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlEQUE0QyJ9
|
60
dist/logcontext.classes.logger.d.ts
vendored
Normal file
60
dist/logcontext.classes.logger.d.ts
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import * as plugins from './logcontext.plugins';
|
||||||
|
import { LogMap } from './logcontext.classes.logmap';
|
||||||
|
export declare class Logger {
|
||||||
|
namespaceString: string;
|
||||||
|
clsNameSpace: plugins.smartcls.Namespace;
|
||||||
|
logmap: LogMap;
|
||||||
|
thirdPartyLogger: any;
|
||||||
|
child: any;
|
||||||
|
settings: {
|
||||||
|
enableScope: () => void;
|
||||||
|
disableScope: () => void;
|
||||||
|
enableAddData: () => void;
|
||||||
|
disableAddData: () => void;
|
||||||
|
};
|
||||||
|
private settingsParams;
|
||||||
|
constructor(namespaceArg?: string);
|
||||||
|
addData(paramNameArg: string, dataArg: any): void;
|
||||||
|
addThirdPartyLogger(thirdPartyLoggerArg: any): void;
|
||||||
|
/**
|
||||||
|
* debug
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
debug(logMessageArg: any): void;
|
||||||
|
/**
|
||||||
|
* log
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
log(logMessageArg: any): void;
|
||||||
|
/**
|
||||||
|
* info
|
||||||
|
* @param logObjectArg
|
||||||
|
*/
|
||||||
|
info(logObjectArg: any): void;
|
||||||
|
/**
|
||||||
|
* error
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
error(logMessageArg: any, ...args: any[]): void;
|
||||||
|
/**
|
||||||
|
* warn
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
warn(logMessageArg: any, ...args: any[]): void;
|
||||||
|
/**
|
||||||
|
* fatal
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
fatal(logMessageArg: any, ...args: any[]): void;
|
||||||
|
scope(funcArg: any): void;
|
||||||
|
/**
|
||||||
|
* routes the log according to whats available in the environment
|
||||||
|
* @param {string} logMethod
|
||||||
|
* @param {any} message
|
||||||
|
* @param {any[]} ...args
|
||||||
|
*/
|
||||||
|
private routeLog(logMethod, message, ...args);
|
||||||
|
}
|
113
dist/logcontext.classes.logger.js
vendored
Normal file
113
dist/logcontext.classes.logger.js
vendored
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const plugins = require("./logcontext.plugins");
|
||||||
|
const logcontext_classes_logmap_1 = require("./logcontext.classes.logmap");
|
||||||
|
class Logger {
|
||||||
|
constructor(namespaceArg = plugins.shortid()) {
|
||||||
|
this.settings = {
|
||||||
|
enableScope: () => {
|
||||||
|
this.settingsParams.scope = true;
|
||||||
|
},
|
||||||
|
disableScope: () => {
|
||||||
|
this.settingsParams.scope = false;
|
||||||
|
},
|
||||||
|
enableAddData: () => {
|
||||||
|
this.settingsParams.addData = true;
|
||||||
|
},
|
||||||
|
disableAddData: () => {
|
||||||
|
this.settingsParams.addData = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.settingsParams = {
|
||||||
|
scope: true,
|
||||||
|
addData: true
|
||||||
|
};
|
||||||
|
this.namespaceString = namespaceArg;
|
||||||
|
this.clsNameSpace = plugins.smartcls.createNamespace(this.namespaceString);
|
||||||
|
this.logmap = new logcontext_classes_logmap_1.LogMap(this.clsNameSpace);
|
||||||
|
}
|
||||||
|
addData(paramNameArg, dataArg) {
|
||||||
|
if (this.settingsParams.addData) {
|
||||||
|
this.logmap.addData(paramNameArg, dataArg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addThirdPartyLogger(thirdPartyLoggerArg) {
|
||||||
|
this.thirdPartyLogger = thirdPartyLoggerArg;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* debug
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
debug(logMessageArg) {
|
||||||
|
this.routeLog('debug', logMessageArg);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* log
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
log(logMessageArg) {
|
||||||
|
this.routeLog('log', logMessageArg);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* info
|
||||||
|
* @param logObjectArg
|
||||||
|
*/
|
||||||
|
info(logObjectArg) {
|
||||||
|
this.routeLog('info', logObjectArg);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* error
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
error(logMessageArg, ...args) {
|
||||||
|
this.routeLog('error', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* warn
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
warn(logMessageArg, ...args) {
|
||||||
|
this.routeLog('warn', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* fatal
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
fatal(logMessageArg, ...args) {
|
||||||
|
this.routeLog('fatal', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
// creates a new async scope
|
||||||
|
scope(funcArg) {
|
||||||
|
// create node continuation scope
|
||||||
|
if (this.settingsParams.scope) {
|
||||||
|
this.clsNameSpace.run(funcArg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
funcArg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* routes the log according to whats available in the environment
|
||||||
|
* @param {string} logMethod
|
||||||
|
* @param {any} message
|
||||||
|
* @param {any[]} ...args
|
||||||
|
*/
|
||||||
|
routeLog(logMethod, message, ...args) {
|
||||||
|
let logObject = {
|
||||||
|
message: message,
|
||||||
|
type: logMethod,
|
||||||
|
logContext: this.logmap.getAllData()
|
||||||
|
};
|
||||||
|
if (this.thirdPartyLogger && this.thirdPartyLogger[logMethod]) {
|
||||||
|
this.thirdPartyLogger[logMethod](logObject, ...args);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(logObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Logger = Logger;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nY29udGV4dC5jbGFzc2VzLmxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xvZ2NvbnRleHQuY2xhc3Nlcy5sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBZ0Q7QUFDaEQsMkVBQXFEO0FBRXJEO0lBeUJFLFlBQVksZUFBdUIsT0FBTyxDQUFDLE9BQU8sRUFBRTtRQW5CcEQsYUFBUSxHQUFHO1lBQ1QsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUM7WUFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEMsQ0FBQztZQUNELGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNyQyxDQUFDO1lBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLENBQUM7U0FDRixDQUFDO1FBQ00sbUJBQWMsR0FBeUM7WUFDN0QsS0FBSyxFQUFFLElBQUk7WUFDWCxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFHQSxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksa0NBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFvQixFQUFFLE9BQVk7UUFDeEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLG1CQUFtQjtRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsYUFBYTtRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsWUFBWTtRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUk7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSTtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsS0FBSyxDQUFDLE9BQVk7UUFDaEIsaUNBQWlDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUk7UUFDMUMsSUFBSSxTQUFTLEdBQUc7WUFDZCxPQUFPLEVBQUUsT0FBTztZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtTQUNyQyxDQUFDO1FBQ0YsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhIRCx3QkF3SEMifQ==
|
11
dist/logcontext.classes.logmap.d.ts
vendored
Normal file
11
dist/logcontext.classes.logmap.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import * as plugins from './logcontext.plugins';
|
||||||
|
import { Namespace } from 'smartcls';
|
||||||
|
export declare class LogMap {
|
||||||
|
clsNamespace: Namespace;
|
||||||
|
paramMap: plugins.lik.Stringmap;
|
||||||
|
constructor(clsNamespaceArg: Namespace);
|
||||||
|
addData(paramName: string, logData: any): void;
|
||||||
|
deleteData(paramName: string): void;
|
||||||
|
getData(paramName: string): any;
|
||||||
|
getAllData(): {};
|
||||||
|
}
|
28
dist/logcontext.classes.logmap.js
vendored
Normal file
28
dist/logcontext.classes.logmap.js
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const plugins = require("./logcontext.plugins");
|
||||||
|
class LogMap {
|
||||||
|
constructor(clsNamespaceArg) {
|
||||||
|
this.paramMap = new plugins.lik.Stringmap();
|
||||||
|
this.clsNamespace = clsNamespaceArg;
|
||||||
|
}
|
||||||
|
addData(paramName, logData) {
|
||||||
|
this.paramMap.addString(paramName);
|
||||||
|
this.clsNamespace.set(paramName, logData);
|
||||||
|
}
|
||||||
|
deleteData(paramName) {
|
||||||
|
this.clsNamespace.set(paramName, null);
|
||||||
|
}
|
||||||
|
getData(paramName) {
|
||||||
|
return this.clsNamespace.get(paramName);
|
||||||
|
}
|
||||||
|
getAllData() {
|
||||||
|
let returnObject = {};
|
||||||
|
for (let stringArg of this.paramMap.getStringArray()) {
|
||||||
|
returnObject[stringArg] = this.clsNamespace.get(stringArg);
|
||||||
|
}
|
||||||
|
return returnObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.LogMap = LogMap;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nY29udGV4dC5jbGFzc2VzLmxvZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xvZ2NvbnRleHQuY2xhc3Nlcy5sb2dtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBZ0Q7QUFLaEQ7SUFJRSxZQUFZLGVBQTBCO1FBRnRDLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7UUFHckMsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxTQUFpQixFQUFFLE9BQU87UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUI7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUE1QkQsd0JBNEJDIn0=
|
4
dist/logcontext.plugins.d.ts
vendored
4
dist/logcontext.plugins.d.ts
vendored
@ -1 +1,5 @@
|
|||||||
import 'typings-global';
|
import 'typings-global';
|
||||||
|
import * as lik from 'lik';
|
||||||
|
import * as smartcls from 'smartcls';
|
||||||
|
import * as shortid from 'shortid';
|
||||||
|
export { lik, smartcls, shortid };
|
||||||
|
8
dist/logcontext.plugins.js
vendored
8
dist/logcontext.plugins.js
vendored
@ -1,4 +1,10 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nY29udGV4dC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbG9nY29udGV4dC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQXVCIn0=
|
const lik = require("lik");
|
||||||
|
exports.lik = lik;
|
||||||
|
const smartcls = require("smartcls");
|
||||||
|
exports.smartcls = smartcls;
|
||||||
|
const shortid = require("shortid");
|
||||||
|
exports.shortid = shortid;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nY29udGV4dC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbG9nY29udGV4dC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQXdCO0FBRXhCLDJCQUEyQjtBQUlsQixrQkFBRztBQUhaLHFDQUFxQztBQUd2Qiw0QkFBUTtBQUZ0QixtQ0FBbUM7QUFFWCwwQkFBTyJ9
|
@ -1,7 +1,16 @@
|
|||||||
{
|
{
|
||||||
|
"gitzone": {
|
||||||
|
"projectType": "npm",
|
||||||
|
"module": {
|
||||||
|
"githost": "gitlab.com",
|
||||||
|
"gitscope": "pushrocks",
|
||||||
|
"gitrepo": "logcontext",
|
||||||
|
"shortDescription": "enrich logs with context",
|
||||||
|
"npmPackagename": "@pushrocks/logcontext",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
|
},
|
||||||
"npmci": {
|
"npmci": {
|
||||||
"npmGlobalTools": [
|
"npmGlobalTools": []
|
||||||
"npmts"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
10932
package-lock.json
generated
Normal file
10932
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
45
package.json
45
package.json
@ -1,18 +1,45 @@
|
|||||||
{
|
{
|
||||||
"name": "logcontext",
|
"name": "@pushrocks/logcontext",
|
||||||
"version": "1.0.2",
|
"version": "1.0.23",
|
||||||
"description": "log things contexts in async environments",
|
"description": "enrich logs with context",
|
||||||
"main": "dist/index.js",
|
"main": "dist_ts/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist_ts/index.d.ts",
|
||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(npmts)"
|
"test": "(tstest test/)",
|
||||||
|
"build": "tsbuild"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"tapbundle": "^1.0.13"
|
"@gitzone/tsbuild": "^2.1.24",
|
||||||
|
"@gitzone/tsbundle": "^1.0.72",
|
||||||
|
"@gitzone/tstest": "^1.0.43",
|
||||||
|
"@pushrocks/smartdelay": "^2.0.10",
|
||||||
|
"@pushrocks/tapbundle": "^3.2.9",
|
||||||
|
"@types/node": "^14.0.23",
|
||||||
|
"tslint": "^6.1.2",
|
||||||
|
"tslint-config-prettier": "^1.18.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"typings-global": "^1.0.16"
|
"@pushrocks/lik": "^4.0.17",
|
||||||
}
|
"@pushrocks/smartcls": "^1.0.9",
|
||||||
|
"@pushrocks/smartunique": "^3.0.3",
|
||||||
|
"@types/shortid": "0.0.29"
|
||||||
|
},
|
||||||
|
"private": false,
|
||||||
|
"browserslist": [
|
||||||
|
"last 1 chrome versions"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"ts/**/*",
|
||||||
|
"ts_web/**/*",
|
||||||
|
"dist/**/*",
|
||||||
|
"dist_*/**/*",
|
||||||
|
"dist_ts/**/*",
|
||||||
|
"dist_ts_web/**/*",
|
||||||
|
"assets/**/*",
|
||||||
|
"cli.js",
|
||||||
|
"npmextra.json",
|
||||||
|
"readme.md"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
92
readme.md
Normal file
92
readme.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# @pushrocks/logcontext
|
||||||
|
enrich logs with context
|
||||||
|
|
||||||
|
## Availabililty and Links
|
||||||
|
* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/logcontext)
|
||||||
|
* [gitlab.com (source)](https://gitlab.com/pushrocks/logcontext)
|
||||||
|
* [github.com (source mirror)](https://github.com/pushrocks/logcontext)
|
||||||
|
* [docs (typedoc)](https://pushrocks.gitlab.io/logcontext/)
|
||||||
|
|
||||||
|
## Status for master
|
||||||
|
|
||||||
|
Status Category | Status Badge
|
||||||
|
-- | --
|
||||||
|
GitLab Pipelines | [](https://lossless.cloud)
|
||||||
|
GitLab Pipline Test Coverage | [](https://lossless.cloud)
|
||||||
|
npm | [](https://lossless.cloud)
|
||||||
|
Snyk | [](https://lossless.cloud)
|
||||||
|
TypeScript Support | [](https://lossless.cloud)
|
||||||
|
node Support | [](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||||
|
Code Style | [](https://lossless.cloud)
|
||||||
|
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
||||||
|
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
||||||
|
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
||||||
|
Platform support | [](https://lossless.cloud) [](https://lossless.cloud)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Use TypeScript for best in class instellisense.
|
||||||
|
|
||||||
|
the logconext module exposes an easy to use syntax for nodejs style async logcontexts.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
let testLogger = new logcontext.Logger('testNamespace');
|
||||||
|
|
||||||
|
testLogger.scope(async () => {
|
||||||
|
testLogger.addData('id1', {
|
||||||
|
someData: 'someValue',
|
||||||
|
});
|
||||||
|
testLogger.log('hi');
|
||||||
|
testLogger.error(new Error('custom error message'));
|
||||||
|
setTimeout(() => {
|
||||||
|
outsideFunction(); // log scope will travel through callbacks and promises
|
||||||
|
}, 2000);
|
||||||
|
});
|
||||||
|
|
||||||
|
let outsideFunction = () => {
|
||||||
|
// Note:
|
||||||
|
// the below testLogger reference will have different contexts
|
||||||
|
// depending from which scope "outsideFunction" was called".
|
||||||
|
testLogger.log('some message');
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## class Logger
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { Logger } from 'logcontext';
|
||||||
|
|
||||||
|
// instantiate new Logger
|
||||||
|
// argument optional, if left empty auto generated shortid will be used
|
||||||
|
let myLogger = new Logger('myNamespace');
|
||||||
|
|
||||||
|
// create a scope
|
||||||
|
myLogger.scope(async () => {
|
||||||
|
// everything that is appended to the call stack from inside here will have all appended context data available
|
||||||
|
|
||||||
|
// add some scoped context information
|
||||||
|
myLogger.addData('customerId', '12345678');
|
||||||
|
|
||||||
|
// will log something with priviously appended context of this scope in place
|
||||||
|
myLoger.log('awesomeText');
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
For further information read the linked docs at the top of this README.
|
||||||
|
|
||||||
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
|
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||||
|
|
||||||
|
[](https://push.rocks)
|
||||||
|
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
|
||||||
|
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
||||||
|
|
||||||
|
For further information read the linked docs at the top of this readme.
|
||||||
|
|
||||||
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
|
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
||||||
|
|
||||||
|
[](https://maintainedby.lossless.com)
|
45
test/test.ts
45
test/test.ts
@ -1,8 +1,41 @@
|
|||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from '@pushrocks/tapbundle';
|
||||||
import * as logcontext from '../ts/index'
|
import * as logcontext from '../ts/index';
|
||||||
|
|
||||||
tap.test('first test', async () => {
|
let testLogger = new logcontext.Logger('testNamespace');
|
||||||
console.log(logcontext.standardExport)
|
|
||||||
})
|
|
||||||
|
|
||||||
tap.start()
|
tap.test('should log for .error()', async () => {
|
||||||
|
testLogger.error(new Error('first error message'));
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should log for .fatal()', async () => {
|
||||||
|
testLogger.fatal('this is fatal');
|
||||||
|
});
|
||||||
|
|
||||||
|
// set up independent log context
|
||||||
|
tap.testParallel('should create an async LogContext', async (tools) => {
|
||||||
|
testLogger.scope(async () => {
|
||||||
|
testLogger.logmap.addData('id1', {
|
||||||
|
someData: 'someValue',
|
||||||
|
});
|
||||||
|
await tools.delayFor(10).then(async () => {
|
||||||
|
testLogger.log('hi');
|
||||||
|
testLogger.error(new Error('custom error message'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.testParallel('should create a new scope', async () => {
|
||||||
|
testLogger.scope(async () => {
|
||||||
|
testLogger.logmap.addData('id1', {
|
||||||
|
someData: 'otherValue',
|
||||||
|
});
|
||||||
|
testLogger.info('anything');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should log within default scope', async (tools) => {
|
||||||
|
await tools.delayFor(3000);
|
||||||
|
testLogger.log('message without context');
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.start();
|
||||||
|
@ -1,3 +1 @@
|
|||||||
import * as plugins from './logcontext.plugins'
|
export * from './logcontext.classes.logger';
|
||||||
|
|
||||||
export let standardExport = 'Hi there! :) This is a exported string'
|
|
||||||
|
124
ts/logcontext.classes.logger.ts
Normal file
124
ts/logcontext.classes.logger.ts
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
import * as plugins from './logcontext.plugins';
|
||||||
|
import { LogMap } from './logcontext.classes.logmap';
|
||||||
|
|
||||||
|
export class Logger {
|
||||||
|
namespaceString: string;
|
||||||
|
smartcls: plugins.smartcls.SmartCls;
|
||||||
|
logmap: LogMap;
|
||||||
|
thirdPartyLogger: any;
|
||||||
|
child: any;
|
||||||
|
settings = {
|
||||||
|
enableScope: () => {
|
||||||
|
this.settingsParams.scope = true;
|
||||||
|
},
|
||||||
|
disableScope: () => {
|
||||||
|
this.settingsParams.scope = false;
|
||||||
|
},
|
||||||
|
enableAddData: () => {
|
||||||
|
this.settingsParams.addData = true;
|
||||||
|
},
|
||||||
|
disableAddData: () => {
|
||||||
|
this.settingsParams.addData = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
private settingsParams: { scope: boolean; addData: boolean } = {
|
||||||
|
scope: true,
|
||||||
|
addData: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(namespaceArg: string = plugins.smartunique.shortId()) {
|
||||||
|
this.namespaceString = namespaceArg;
|
||||||
|
this.smartcls = new plugins.smartcls.SmartCls();
|
||||||
|
this.logmap = new LogMap(this.smartcls);
|
||||||
|
}
|
||||||
|
|
||||||
|
addData(paramNameArg: string, dataArg: any) {
|
||||||
|
if (this.settingsParams.addData) {
|
||||||
|
this.logmap.addData(paramNameArg, dataArg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addThirdPartyLogger(thirdPartyLoggerArg) {
|
||||||
|
this.thirdPartyLogger = thirdPartyLoggerArg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* debug
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
debug(logMessageArg) {
|
||||||
|
this.routeLog('debug', logMessageArg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* log
|
||||||
|
* @param logMessageArg
|
||||||
|
*/
|
||||||
|
log(logMessageArg) {
|
||||||
|
this.routeLog('log', logMessageArg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* info
|
||||||
|
* @param logObjectArg
|
||||||
|
*/
|
||||||
|
info(logObjectArg) {
|
||||||
|
this.routeLog('info', logObjectArg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* error
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
error(logMessageArg, ...args) {
|
||||||
|
this.routeLog('error', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* warn
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
warn(logMessageArg, ...args) {
|
||||||
|
this.routeLog('warn', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fatal
|
||||||
|
* @param logMessageArg
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
fatal(logMessageArg, ...args) {
|
||||||
|
this.routeLog('fatal', logMessageArg, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates a new async scope
|
||||||
|
scope(funcArg: any) {
|
||||||
|
// create node continuation scope
|
||||||
|
if (this.settingsParams.scope) {
|
||||||
|
this.smartcls.run(funcArg);
|
||||||
|
} else {
|
||||||
|
funcArg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* routes the log according to whats available in the environment
|
||||||
|
* @param {string} logMethod
|
||||||
|
* @param {any} message
|
||||||
|
* @param {any[]} ...args
|
||||||
|
*/
|
||||||
|
private routeLog(logMethod, message, ...args) {
|
||||||
|
const logObject = {
|
||||||
|
message: message,
|
||||||
|
type: logMethod,
|
||||||
|
logContext: this.logmap.getAllData(),
|
||||||
|
};
|
||||||
|
if (this.thirdPartyLogger && this.thirdPartyLogger[logMethod]) {
|
||||||
|
this.thirdPartyLogger[logMethod](logObject, ...args);
|
||||||
|
} else {
|
||||||
|
console.log(logObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
ts/logcontext.classes.logmap.ts
Normal file
31
ts/logcontext.classes.logmap.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import * as plugins from './logcontext.plugins';
|
||||||
|
|
||||||
|
export class LogMap {
|
||||||
|
smartcls: plugins.smartcls.SmartCls;
|
||||||
|
paramMap = new plugins.lik.Stringmap();
|
||||||
|
|
||||||
|
constructor(clsNamespaceArg: plugins.smartcls.SmartCls) {
|
||||||
|
this.smartcls = clsNamespaceArg;
|
||||||
|
}
|
||||||
|
|
||||||
|
addData(paramName: string, logData) {
|
||||||
|
this.paramMap.addString(paramName);
|
||||||
|
this.smartcls.set(paramName, logData);
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteData(paramName: string) {
|
||||||
|
this.smartcls.set(paramName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
getData(paramName: string) {
|
||||||
|
return this.smartcls.get(paramName);
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllData() {
|
||||||
|
const returnObject = {};
|
||||||
|
for (const stringArg of this.paramMap.getStringArray()) {
|
||||||
|
returnObject[stringArg] = this.smartcls.get(stringArg);
|
||||||
|
}
|
||||||
|
return returnObject;
|
||||||
|
}
|
||||||
|
}
|
@ -1 +1,13 @@
|
|||||||
import 'typings-global'
|
// native scope
|
||||||
|
import { AsyncLocalStorage } from 'async_hooks';
|
||||||
|
|
||||||
|
export {
|
||||||
|
AsyncLocalStorage
|
||||||
|
};
|
||||||
|
|
||||||
|
// pushrocks scope
|
||||||
|
import * as lik from '@pushrocks/lik';
|
||||||
|
import * as smartcls from '@pushrocks/smartcls';
|
||||||
|
import * as smartunique from '@pushrocks/smartunique';
|
||||||
|
|
||||||
|
export { lik, smartcls, smartunique };
|
||||||
|
16
tslint.json
16
tslint.json
@ -1,3 +1,17 @@
|
|||||||
{
|
{
|
||||||
"extends": "tslint-config-standard"
|
"extends": ["tslint:latest", "tslint-config-prettier"],
|
||||||
|
"rules": {
|
||||||
|
"semicolon": [true, "always"],
|
||||||
|
"no-console": false,
|
||||||
|
"ordered-imports": false,
|
||||||
|
"object-literal-sort-keys": false,
|
||||||
|
"member-ordering": {
|
||||||
|
"options":{
|
||||||
|
"order": [
|
||||||
|
"static-method"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaultSeverity": "warning"
|
||||||
}
|
}
|
||||||
|
333
yarn.lock
333
yarn.lock
@ -1,333 +0,0 @@
|
|||||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
||||||
# yarn lockfile v1
|
|
||||||
|
|
||||||
|
|
||||||
"@types/code@^4.0.3":
|
|
||||||
version "4.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/code/-/code-4.0.3.tgz#9c4de39f86eb3eba070146d2dab7dbc3f8eac35f"
|
|
||||||
|
|
||||||
"@types/glob@*":
|
|
||||||
version "5.0.33"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.33.tgz#3dff7c6ce09d65abe919c7961dc3dee016f36ad7"
|
|
||||||
dependencies:
|
|
||||||
"@types/minimatch" "*"
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/minimatch@*":
|
|
||||||
version "3.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550"
|
|
||||||
|
|
||||||
"@types/node@*", "@types/node@^8.0.33":
|
|
||||||
version "8.0.34"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.34.tgz#55f801fa2ddb2a40dd6dfc15ecfe1dde9c129fe9"
|
|
||||||
|
|
||||||
"@types/shelljs@^0.7.4":
|
|
||||||
version "0.7.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
|
||||||
dependencies:
|
|
||||||
"@types/glob" "*"
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/which@^1.0.28":
|
|
||||||
version "1.0.28"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/which/-/which-1.0.28.tgz#016e387629b8817bed653fe32eab5d11279c8df6"
|
|
||||||
|
|
||||||
ansi-256-colors@^1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
|
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
|
||||||
|
|
||||||
beautycolor@^1.0.7:
|
|
||||||
version "1.0.11"
|
|
||||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5"
|
|
||||||
dependencies:
|
|
||||||
ansi-256-colors "^1.1.0"
|
|
||||||
typings-global "^1.0.14"
|
|
||||||
|
|
||||||
bindings@^1.2.1:
|
|
||||||
version "1.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
|
|
||||||
|
|
||||||
brace-expansion@^1.1.7:
|
|
||||||
version "1.1.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
|
|
||||||
dependencies:
|
|
||||||
balanced-match "^1.0.0"
|
|
||||||
concat-map "0.0.1"
|
|
||||||
|
|
||||||
code@^5.1.0:
|
|
||||||
version "5.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/code/-/code-5.1.0.tgz#205e4213536c3cf21b12194384901fadcd81bc1a"
|
|
||||||
dependencies:
|
|
||||||
hoek "4.x.x"
|
|
||||||
|
|
||||||
concat-map@0.0.1:
|
|
||||||
version "0.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
|
||||||
|
|
||||||
define-properties@^1.1.2:
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
|
||||||
dependencies:
|
|
||||||
foreach "^2.0.5"
|
|
||||||
object-keys "^1.0.8"
|
|
||||||
|
|
||||||
early@^2.1.1:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
|
|
||||||
dependencies:
|
|
||||||
beautycolor "^1.0.7"
|
|
||||||
smartq "^1.1.1"
|
|
||||||
typings-global "^1.0.16"
|
|
||||||
|
|
||||||
es-abstract@^1.5.1:
|
|
||||||
version "1.9.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227"
|
|
||||||
dependencies:
|
|
||||||
es-to-primitive "^1.1.1"
|
|
||||||
function-bind "^1.1.1"
|
|
||||||
has "^1.0.1"
|
|
||||||
is-callable "^1.1.3"
|
|
||||||
is-regex "^1.0.4"
|
|
||||||
|
|
||||||
es-to-primitive@^1.1.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
|
|
||||||
dependencies:
|
|
||||||
is-callable "^1.1.1"
|
|
||||||
is-date-object "^1.0.1"
|
|
||||||
is-symbol "^1.0.1"
|
|
||||||
|
|
||||||
es6-error@^4.0.2:
|
|
||||||
version "4.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
|
|
||||||
|
|
||||||
foreach@^2.0.5:
|
|
||||||
version "2.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
|
||||||
|
|
||||||
fs.realpath@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
|
||||||
|
|
||||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
|
||||||
|
|
||||||
glob@^7.0.0:
|
|
||||||
version "7.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
|
||||||
dependencies:
|
|
||||||
fs.realpath "^1.0.0"
|
|
||||||
inflight "^1.0.4"
|
|
||||||
inherits "2"
|
|
||||||
minimatch "^3.0.4"
|
|
||||||
once "^1.3.0"
|
|
||||||
path-is-absolute "^1.0.0"
|
|
||||||
|
|
||||||
has@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
|
||||||
dependencies:
|
|
||||||
function-bind "^1.0.2"
|
|
||||||
|
|
||||||
hoek@4.x.x:
|
|
||||||
version "4.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
|
|
||||||
|
|
||||||
inflight@^1.0.4:
|
|
||||||
version "1.0.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
|
||||||
dependencies:
|
|
||||||
once "^1.3.0"
|
|
||||||
wrappy "1"
|
|
||||||
|
|
||||||
inherits@2:
|
|
||||||
version "2.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
|
||||||
|
|
||||||
interpret@^1.0.0:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0"
|
|
||||||
|
|
||||||
is-callable@^1.1.1, is-callable@^1.1.3:
|
|
||||||
version "1.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
|
|
||||||
|
|
||||||
is-date-object@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
|
||||||
|
|
||||||
is-regex@^1.0.4:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
|
||||||
dependencies:
|
|
||||||
has "^1.0.1"
|
|
||||||
|
|
||||||
is-symbol@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
|
|
||||||
|
|
||||||
isexe@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
|
||||||
|
|
||||||
leakage@^0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39"
|
|
||||||
dependencies:
|
|
||||||
es6-error "^4.0.2"
|
|
||||||
left-pad "^1.1.3"
|
|
||||||
memwatch-next "^0.3.0"
|
|
||||||
minimist "^1.2.0"
|
|
||||||
pretty-bytes "^4.0.2"
|
|
||||||
|
|
||||||
left-pad@^1.1.3:
|
|
||||||
version "1.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
|
|
||||||
|
|
||||||
memwatch-next@^0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f"
|
|
||||||
dependencies:
|
|
||||||
bindings "^1.2.1"
|
|
||||||
nan "^2.3.2"
|
|
||||||
|
|
||||||
minimatch@^3.0.4:
|
|
||||||
version "3.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
|
||||||
dependencies:
|
|
||||||
brace-expansion "^1.1.7"
|
|
||||||
|
|
||||||
minimist@^1.2.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
|
||||||
|
|
||||||
nan@^2.3.2:
|
|
||||||
version "2.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
|
|
||||||
|
|
||||||
object-keys@^1.0.8:
|
|
||||||
version "1.0.11"
|
|
||||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
|
||||||
|
|
||||||
object.getownpropertydescriptors@^2.0.3:
|
|
||||||
version "2.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
|
||||||
dependencies:
|
|
||||||
define-properties "^1.1.2"
|
|
||||||
es-abstract "^1.5.1"
|
|
||||||
|
|
||||||
once@^1.3.0:
|
|
||||||
version "1.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
|
||||||
dependencies:
|
|
||||||
wrappy "1"
|
|
||||||
|
|
||||||
path-is-absolute@^1.0.0:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
|
||||||
|
|
||||||
path-parse@^1.0.5:
|
|
||||||
version "1.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
|
||||||
|
|
||||||
pretty-bytes@^4.0.2:
|
|
||||||
version "4.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
|
||||||
|
|
||||||
rechoir@^0.6.2:
|
|
||||||
version "0.6.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
|
||||||
dependencies:
|
|
||||||
resolve "^1.1.6"
|
|
||||||
|
|
||||||
resolve@^1.1.6:
|
|
||||||
version "1.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
|
|
||||||
dependencies:
|
|
||||||
path-parse "^1.0.5"
|
|
||||||
|
|
||||||
semver@^5.3.0:
|
|
||||||
version "5.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
|
||||||
|
|
||||||
shelljs@^0.7.8:
|
|
||||||
version "0.7.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
|
|
||||||
dependencies:
|
|
||||||
glob "^7.0.0"
|
|
||||||
interpret "^1.0.0"
|
|
||||||
rechoir "^0.6.2"
|
|
||||||
|
|
||||||
smartchai@^1.0.3:
|
|
||||||
version "1.0.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.8.tgz#a074836f4ddd4b98c50f1e7ae9e8e8ad9f6f1902"
|
|
||||||
dependencies:
|
|
||||||
"@types/code" "^4.0.3"
|
|
||||||
code "^5.1.0"
|
|
||||||
typings-global "^1.0.20"
|
|
||||||
|
|
||||||
smartdelay@^1.0.3:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.4.tgz#791c1a4ee6770494064c10b1d2d2b8e6f3105b82"
|
|
||||||
dependencies:
|
|
||||||
smartq "^1.1.1"
|
|
||||||
typings-global "^1.0.16"
|
|
||||||
|
|
||||||
smartq@^1.1.1, smartq@^1.1.6:
|
|
||||||
version "1.1.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.6.tgz#0c1ff4336d95e95b4f1fdd8ccd7e2c5a323b8412"
|
|
||||||
dependencies:
|
|
||||||
typings-global "^1.0.19"
|
|
||||||
util.promisify "^1.0.0"
|
|
||||||
|
|
||||||
smartshell@^1.0.6:
|
|
||||||
version "1.0.18"
|
|
||||||
resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.18.tgz#b84ccc65cedf3a875bf676cec78ee07f4b4aa9e5"
|
|
||||||
dependencies:
|
|
||||||
"@types/shelljs" "^0.7.4"
|
|
||||||
"@types/which" "^1.0.28"
|
|
||||||
shelljs "^0.7.8"
|
|
||||||
smartq "^1.1.6"
|
|
||||||
typings-global "^1.0.20"
|
|
||||||
which "^1.3.0"
|
|
||||||
|
|
||||||
tapbundle@^1.0.13:
|
|
||||||
version "1.1.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.8.tgz#e08aee0e100a830d8a26a583a85d37ce53312e02"
|
|
||||||
dependencies:
|
|
||||||
"@types/node" "^8.0.33"
|
|
||||||
early "^2.1.1"
|
|
||||||
leakage "^0.3.0"
|
|
||||||
smartchai "^1.0.3"
|
|
||||||
smartdelay "^1.0.3"
|
|
||||||
smartq "^1.1.1"
|
|
||||||
typings-global "^1.0.19"
|
|
||||||
|
|
||||||
typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19, typings-global@^1.0.20:
|
|
||||||
version "1.0.20"
|
|
||||||
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.20.tgz#3da769c54db538247c5d877d1d9e97eb2ec981ff"
|
|
||||||
dependencies:
|
|
||||||
semver "^5.3.0"
|
|
||||||
smartshell "^1.0.6"
|
|
||||||
|
|
||||||
util.promisify@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
|
|
||||||
dependencies:
|
|
||||||
define-properties "^1.1.2"
|
|
||||||
object.getownpropertydescriptors "^2.0.3"
|
|
||||||
|
|
||||||
which@^1.3.0:
|
|
||||||
version "1.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
|
|
||||||
dependencies:
|
|
||||||
isexe "^2.0.0"
|
|
||||||
|
|
||||||
wrappy@1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
|
Reference in New Issue
Block a user