@appsemble/node-utils 0.20.27 → 0.20.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/package.json +2 -2
- package/AppsembleError.js.map +0 -1
- package/AppsembleError.test.js.map +0 -1
- package/AppsembleError.test.ts +0 -6
- package/AppsembleError.ts +0 -16
- package/__fixtures__/hello.txt +0 -1
- package/__fixtures__/invalid-json.json +0 -3
- package/__fixtures__/json.json +0 -1
- package/__fixtures__/test/bar.txt +0 -0
- package/__fixtures__/test/foo.txt +0 -0
- package/__fixtures__/test/z/baz.txt +0 -0
- package/__fixtures__/test/z/fooz.txt +0 -0
- package/__fixtures__/yaml.yaml +0 -1
- package/basicAuth.js.map +0 -1
- package/basicAuth.test.js.map +0 -1
- package/basicAuth.test.ts +0 -6
- package/basicAuth.ts +0 -10
- package/changed/added/.gitkeep +0 -0
- package/changed/changed/.gitkeep +0 -0
- package/changed/deprecated/.gitkeep +0 -0
- package/changed/fixed/.gitkeep +0 -0
- package/changed/removed/.gitkeep +0 -0
- package/changed/security/.gitkeep +0 -0
- package/formData.js.map +0 -1
- package/formData.test.js.map +0 -1
- package/formData.test.ts +0 -113
- package/formData.ts +0 -37
- package/fs.js.map +0 -1
- package/fs.test.js.map +0 -1
- package/fs.test.ts +0 -120
- package/fs.ts +0 -147
- package/getWorkspaces.js.map +0 -1
- package/getWorkspaces.ts +0 -23
- package/handleError.js.map +0 -1
- package/handleError.test.js.map +0 -1
- package/handleError.test.ts +0 -38
- package/handleError.ts +0 -26
- package/index.js.map +0 -1
- package/index.ts +0 -11
- package/interceptors.js.map +0 -1
- package/interceptors.test.js.map +0 -1
- package/interceptors.test.ts +0 -102
- package/interceptors.ts +0 -81
- package/jest.config.js +0 -3
- package/jest.setup.js.map +0 -1
- package/jest.setup.ts +0 -7
- package/logger.js.map +0 -1
- package/logger.test.js.map +0 -1
- package/logger.test.ts +0 -43
- package/logger.ts +0 -130
- package/loggerMiddleware.js.map +0 -1
- package/loggerMiddleware.test.js.map +0 -1
- package/loggerMiddleware.test.ts +0 -179
- package/loggerMiddleware.ts +0 -93
- package/readFileOrString.js.map +0 -1
- package/readFileOrString.test.js.map +0 -1
- package/readFileOrString.test.ts +0 -12
- package/readFileOrString.ts +0 -20
- package/testFixtures.js.map +0 -1
- package/testFixtures.ts +0 -57
- package/tsconfig.json +0 -6
package/handleError.test.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Argv } from 'yargs';
|
|
2
|
-
|
|
3
|
-
import { AppsembleError } from './AppsembleError.js';
|
|
4
|
-
import { handleError } from './handleError.js';
|
|
5
|
-
import { logger } from './logger.js';
|
|
6
|
-
|
|
7
|
-
let yargs: Argv;
|
|
8
|
-
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
yargs = { showHelp: import.meta.jest.fn() } as Partial<Argv> as Argv;
|
|
11
|
-
import.meta.jest.spyOn(console, 'error').mockImplementation();
|
|
12
|
-
import.meta.jest.spyOn(process, 'exit').mockImplementation();
|
|
13
|
-
import.meta.jest.spyOn(logger, 'error').mockImplementation();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('should show the help message if it is passed a yargs message', () => {
|
|
17
|
-
handleError('Command foo not found', undefined, yargs);
|
|
18
|
-
// eslint-disable-next-line no-console
|
|
19
|
-
expect(console.error).toHaveBeenCalledWith('Command foo not found');
|
|
20
|
-
expect(yargs.showHelp).toHaveBeenCalledWith();
|
|
21
|
-
expect(logger.error).not.toHaveBeenCalled();
|
|
22
|
-
expect(process.exit).toHaveBeenCalledWith(1);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('should log the message of an Appsemble error', () => {
|
|
26
|
-
handleError(undefined, new AppsembleError('Oh noez!'), yargs);
|
|
27
|
-
expect(yargs.showHelp).not.toHaveBeenCalled();
|
|
28
|
-
expect(logger.error).toHaveBeenCalledWith('Oh noez!');
|
|
29
|
-
expect(process.exit).toHaveBeenCalledWith(1);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should log unknown errors raw', () => {
|
|
33
|
-
const error = new Error('Oh noez!');
|
|
34
|
-
handleError(undefined, error, yargs);
|
|
35
|
-
expect(yargs.showHelp).not.toHaveBeenCalled();
|
|
36
|
-
expect(logger.error).toHaveBeenCalledWith(error);
|
|
37
|
-
expect(process.exit).toHaveBeenCalledWith(1);
|
|
38
|
-
});
|
package/handleError.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Argv } from 'yargs';
|
|
2
|
-
|
|
3
|
-
import { AppsembleError } from './AppsembleError.js';
|
|
4
|
-
import { logger } from './logger.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Handle a fatal error.
|
|
8
|
-
*
|
|
9
|
-
* HTTP errors are formatted nicely. For other errors, the stack trace is logged.
|
|
10
|
-
*
|
|
11
|
-
* @param message Unused.
|
|
12
|
-
* @param error The error that was thrown.
|
|
13
|
-
* @param yargs The active yargs instance.
|
|
14
|
-
*/
|
|
15
|
-
export function handleError(message: string, error: Error, yargs: Argv): void {
|
|
16
|
-
if (typeof message === 'string') {
|
|
17
|
-
yargs.showHelp();
|
|
18
|
-
// eslint-disable-next-line no-console
|
|
19
|
-
console.error(message);
|
|
20
|
-
} else if (error instanceof AppsembleError) {
|
|
21
|
-
logger.error(error.message);
|
|
22
|
-
} else {
|
|
23
|
-
logger.error(error);
|
|
24
|
-
}
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
package/index.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './AppsembleError.js';
|
|
2
|
-
export * from './basicAuth.js';
|
|
3
|
-
export * from './formData.js';
|
|
4
|
-
export * from './fs.js';
|
|
5
|
-
export * from './getWorkspaces.js';
|
|
6
|
-
export * from './handleError.js';
|
|
7
|
-
export * from './interceptors.js';
|
|
8
|
-
export * from './logger.js';
|
|
9
|
-
export * from './loggerMiddleware.js';
|
|
10
|
-
export * from './readFileOrString.js';
|
|
11
|
-
export * from './testFixtures.js';
|
package/interceptors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAQxB;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA0B;IACjD,IAAI,MAAM,CAAC,IAAI,YAAY,QAAQ,EAAE;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KACzD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,OAAO,CACZ,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;QACxF,QAAQ,EAAE,MAAM;KACjB,CAAC,EAAE,CACL,CAAC;IACF,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAuB;IACpD,MAAM,CAAC,OAAO,CACZ,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,YAAY,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE;QAC1F,QAAQ,EAAE,MAAM;KACjB,CAAC,EAAE,CACL,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IAC1D,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,IAAI,IAAI,EAAE,UAAU,OAAO,CAAC,OAAO,GAAG,CAAC;IAC/E,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAEjD,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC"}
|
package/interceptors.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.test.js","sourceRoot":"","sources":["interceptors.test.ts"],"names":[],"mappings":"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"}
|
package/interceptors.test.ts
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosInstance } from 'axios';
|
|
2
|
-
import MockAdapter from 'axios-mock-adapter';
|
|
3
|
-
import { highlight } from 'cli-highlight';
|
|
4
|
-
import FormData from 'form-data';
|
|
5
|
-
|
|
6
|
-
import { configureAxios, formData, logger, requestLogger, responseLogger } from './index.js';
|
|
7
|
-
|
|
8
|
-
function h(content: string): string {
|
|
9
|
-
return highlight(content, { language: 'http' });
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let instance: AxiosInstance;
|
|
13
|
-
let mock: MockAdapter;
|
|
14
|
-
|
|
15
|
-
import.meta.jest.mock('os');
|
|
16
|
-
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
import.meta.jest.useFakeTimers({ now: 0 });
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe('formData', () => {
|
|
22
|
-
beforeAll(() => {
|
|
23
|
-
instance = axios.create();
|
|
24
|
-
instance.interceptors.request.use(formData);
|
|
25
|
-
mock = new MockAdapter(instance);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('should add headers for form-data requests', async () => {
|
|
29
|
-
let headers;
|
|
30
|
-
mock.onAny('/').reply((config) => {
|
|
31
|
-
({ headers } = config);
|
|
32
|
-
return [200];
|
|
33
|
-
});
|
|
34
|
-
const form = new FormData();
|
|
35
|
-
await instance.post('/', form);
|
|
36
|
-
expect(headers).toHaveProperty(
|
|
37
|
-
'Content-Type',
|
|
38
|
-
expect.stringMatching(/^multipart\/form-data; boundary=/),
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('should not add headers to non form-data requests', async () => {
|
|
43
|
-
let headers;
|
|
44
|
-
mock.onAny('/').reply((config) => {
|
|
45
|
-
({ headers } = config);
|
|
46
|
-
return [200];
|
|
47
|
-
});
|
|
48
|
-
await instance.post('/', {});
|
|
49
|
-
expect(headers).toBeUndefined();
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
describe('requestLogger', () => {
|
|
54
|
-
beforeAll(() => {
|
|
55
|
-
instance = axios.create();
|
|
56
|
-
instance.interceptors.request.use(requestLogger);
|
|
57
|
-
mock = new MockAdapter(instance);
|
|
58
|
-
mock.onAny().reply(200);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('should log requests', async () => {
|
|
62
|
-
import.meta.jest.spyOn(logger, 'verbose');
|
|
63
|
-
await instance.get('/');
|
|
64
|
-
expect(logger.verbose).toHaveBeenCalledWith(`> 0 ${h('GET / HTTP/1.1')}`);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
describe('responseLogger', () => {
|
|
69
|
-
beforeAll(() => {
|
|
70
|
-
instance = axios.create();
|
|
71
|
-
instance.interceptors.response.use(responseLogger);
|
|
72
|
-
mock = new MockAdapter(instance);
|
|
73
|
-
mock.onAny().reply(200);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it('should log responses', async () => {
|
|
77
|
-
import.meta.jest.spyOn(logger, 'verbose');
|
|
78
|
-
await instance.get('/');
|
|
79
|
-
expect(logger.verbose).toHaveBeenCalledWith(expect.any(String));
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
describe('configureAxios', () => {
|
|
84
|
-
beforeEach(() => {
|
|
85
|
-
import.meta.jest.spyOn(axios.interceptors.request, 'use').mockImplementation();
|
|
86
|
-
import.meta.jest.spyOn(axios.interceptors.response, 'use').mockImplementation();
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('should set the correct user agent', () => {
|
|
90
|
-
configureAxios('TestClient', '1.2.3');
|
|
91
|
-
expect(axios.defaults.headers.common['user-agent']).toBe(
|
|
92
|
-
`TestClient/1.2.3 (Linux x64; Node ${process.version})`,
|
|
93
|
-
);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('should apply all interceptors', () => {
|
|
97
|
-
configureAxios('TestClient', '1.2.3');
|
|
98
|
-
expect(axios.interceptors.request.use).toHaveBeenCalledWith(formData);
|
|
99
|
-
expect(axios.interceptors.request.use).toHaveBeenCalledWith(requestLogger);
|
|
100
|
-
expect(axios.interceptors.response.use).toHaveBeenCalledWith(responseLogger);
|
|
101
|
-
});
|
|
102
|
-
});
|
package/interceptors.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { arch, type } from 'node:os';
|
|
2
|
-
|
|
3
|
-
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
4
|
-
import { highlight } from 'cli-highlight';
|
|
5
|
-
import FormData from 'form-data';
|
|
6
|
-
|
|
7
|
-
import { logger } from './logger.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* This is used to set a request id, so the request and response can be matched in the logs.
|
|
11
|
-
*/
|
|
12
|
-
const id = Symbol('id');
|
|
13
|
-
|
|
14
|
-
declare module 'axios' {
|
|
15
|
-
interface AxiosRequestConfig {
|
|
16
|
-
[id]?: number;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* An {@link axios} request interceptor to add support for {@link form-data}.
|
|
22
|
-
*
|
|
23
|
-
* @param config The axios request configuration.
|
|
24
|
-
* @returns The config with additional `multipart/form-data` headers if appropriate.
|
|
25
|
-
*/
|
|
26
|
-
export function formData(config: AxiosRequestConfig): AxiosRequestConfig {
|
|
27
|
-
if (config.data instanceof FormData) {
|
|
28
|
-
Object.assign(config.headers, config.data.getHeaders());
|
|
29
|
-
}
|
|
30
|
-
return config;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* An {@link axios} request interceptor to log requests.
|
|
35
|
-
*
|
|
36
|
-
* @param config The axios request configuration.
|
|
37
|
-
* @returns The original config.
|
|
38
|
-
*/
|
|
39
|
-
export function requestLogger(config: AxiosRequestConfig): AxiosRequestConfig {
|
|
40
|
-
const time = Date.now();
|
|
41
|
-
logger.verbose(
|
|
42
|
-
`> ${time} ${highlight(`${config.method.toUpperCase()} ${axios.getUri(config)} HTTP/1.1`, {
|
|
43
|
-
language: 'http',
|
|
44
|
-
})}`,
|
|
45
|
-
);
|
|
46
|
-
// eslint-disable-next-line no-param-reassign
|
|
47
|
-
config[id] = time;
|
|
48
|
-
return config;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* An {@link axios} response interceptor to log responses.
|
|
53
|
-
*
|
|
54
|
-
* @param response The axios response.
|
|
55
|
-
* @returns The original response.
|
|
56
|
-
*/
|
|
57
|
-
export function responseLogger(response: AxiosResponse): AxiosResponse {
|
|
58
|
-
logger.verbose(
|
|
59
|
-
`< ${response.config[id]} ${highlight(`HTTP/1.1 ${response.status} ${response.statusText}`, {
|
|
60
|
-
language: 'http',
|
|
61
|
-
})}`,
|
|
62
|
-
);
|
|
63
|
-
return response;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Configure the default Axios instance.
|
|
68
|
-
*
|
|
69
|
-
* This applies the interceptors in this modules and sets the appropriate user agent string.
|
|
70
|
-
*
|
|
71
|
-
* @param name A PascalCase representation of the client.
|
|
72
|
-
* @param version The version of the client to represent.
|
|
73
|
-
*/
|
|
74
|
-
export function configureAxios(name: string, version: string): void {
|
|
75
|
-
const ua = `${name}/${version} (${type()} ${arch()}; Node ${process.version})`;
|
|
76
|
-
axios.defaults.headers.common['user-agent'] = ua;
|
|
77
|
-
|
|
78
|
-
axios.interceptors.request.use(formData);
|
|
79
|
-
axios.interceptors.request.use(requestLogger);
|
|
80
|
-
axios.interceptors.response.use(responseLogger);
|
|
81
|
-
}
|
package/jest.config.js
DELETED
package/jest.setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["jest.setup.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,WAAW,CAAC,CAAC,CAAC,CAAC"}
|
package/jest.setup.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Importing a module here will break mocks for that module. Only add imports from `./src/*` here
|
|
2
|
-
// that are strictly necessary.
|
|
3
|
-
import { setLogLevel } from './logger.js';
|
|
4
|
-
import { setFixtureBase } from './testFixtures.js';
|
|
5
|
-
|
|
6
|
-
setFixtureBase(import.meta);
|
|
7
|
-
setLogLevel(0);
|
package/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["logger.ts"],"names":[],"mappings":"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"}
|
package/logger.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/logger.test.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { configureLogger, logger, setLogLevel } from './logger.js';
|
|
2
|
-
|
|
3
|
-
describe('setLogLevel', () => {
|
|
4
|
-
afterEach(() => {
|
|
5
|
-
setLogLevel();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should set the level of the exported logger based on a string', () => {
|
|
9
|
-
setLogLevel('verbose');
|
|
10
|
-
expect(logger.level).toBe('verbose');
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should set the level of the exported logger based on a number', () => {
|
|
14
|
-
setLogLevel(1);
|
|
15
|
-
expect(logger.level).toBe('error');
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('should set the level of the exported logger based on a numeric string', () => {
|
|
19
|
-
setLogLevel('2');
|
|
20
|
-
expect(logger.level).toBe('warn');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
describe('configureLogger', () => {
|
|
25
|
-
afterEach(() => {
|
|
26
|
-
setLogLevel();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('should configure a log level based on the quiet count of the argv', () => {
|
|
30
|
-
configureLogger({ quiet: 1 });
|
|
31
|
-
expect(logger.level).toBe('warn');
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should configure a log level based on the verbose count of the argv', () => {
|
|
35
|
-
configureLogger({ verbose: 1 });
|
|
36
|
-
expect(logger.level).toBe('verbose');
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('should configure a log level based on the combined quiet and verbose count', () => {
|
|
40
|
-
configureLogger({ quiet: 1, verbose: 1 });
|
|
41
|
-
expect(logger.level).toBe('info');
|
|
42
|
-
});
|
|
43
|
-
});
|
package/logger.ts
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { EOL } from 'node:os';
|
|
2
|
-
import { inspect } from 'node:util';
|
|
3
|
-
|
|
4
|
-
import axios, { AxiosError } from 'axios';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { highlight } from 'cli-highlight';
|
|
7
|
-
import { TransformableInfo } from 'logform';
|
|
8
|
-
import winston from 'winston';
|
|
9
|
-
|
|
10
|
-
interface ConfigureLoggerParams {
|
|
11
|
-
/**
|
|
12
|
-
* The negative verbosity count.
|
|
13
|
-
*/
|
|
14
|
-
quiet?: number;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The verbosity count.
|
|
18
|
-
*/
|
|
19
|
-
verbose?: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const levels = ['crit', 'error', 'warn', 'info', 'verbose', 'silly'] as const;
|
|
23
|
-
const DEFAULT_LEVEL = levels.indexOf('info');
|
|
24
|
-
const padding = Math.max(...levels.map(({ length }) => length));
|
|
25
|
-
|
|
26
|
-
function headerCase(header: string): string {
|
|
27
|
-
return header.replace(/(^|-)\w/g, (a) => a.toUpperCase());
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function httpErrorToString(error: AxiosError): string {
|
|
31
|
-
const { config, request, response } = error;
|
|
32
|
-
return [
|
|
33
|
-
chalk.blue.bold('Request:'),
|
|
34
|
-
highlight(
|
|
35
|
-
[
|
|
36
|
-
`${config.method.toUpperCase()} ${axios.getUri(config)} HTTP/${
|
|
37
|
-
request.res?.httpVersion ?? '1.1'
|
|
38
|
-
}`,
|
|
39
|
-
...Object.entries(config.headers)
|
|
40
|
-
.map(([key, value]) => [headerCase(key), value])
|
|
41
|
-
.map(([key, value]) => `${key}: ${key === 'Authorization' ? 'xxxxxxxxxx' : value}`)
|
|
42
|
-
.sort(),
|
|
43
|
-
].join(EOL),
|
|
44
|
-
{ language: 'http', ignoreIllegals: true },
|
|
45
|
-
),
|
|
46
|
-
'',
|
|
47
|
-
chalk.blue.bold('Response:'),
|
|
48
|
-
response
|
|
49
|
-
? highlight(
|
|
50
|
-
[
|
|
51
|
-
`HTTP/${request.res?.httpVersion} ${response.status} ${response.statusText}`,
|
|
52
|
-
...Object.entries(response.headers)
|
|
53
|
-
.map(([key, value]) => `${headerCase(key)}: ${value}`)
|
|
54
|
-
.sort(),
|
|
55
|
-
'',
|
|
56
|
-
response.data instanceof Object
|
|
57
|
-
? JSON.stringify(response.data, null, 2)
|
|
58
|
-
: response.data,
|
|
59
|
-
].join(EOL),
|
|
60
|
-
{ language: 'http', ignoreIllegals: true },
|
|
61
|
-
)
|
|
62
|
-
: chalk.red.bold('No response from server'),
|
|
63
|
-
].join(EOL);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function toString(info: TransformableInfo): string {
|
|
67
|
-
if (info instanceof Error) {
|
|
68
|
-
if (axios.isAxiosError(info)) {
|
|
69
|
-
return httpErrorToString(info);
|
|
70
|
-
}
|
|
71
|
-
return info.stack;
|
|
72
|
-
}
|
|
73
|
-
if (typeof info.message === 'string') {
|
|
74
|
-
return info.message;
|
|
75
|
-
}
|
|
76
|
-
return inspect(info.message, { colors: true });
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* The default logger for NodeJS Appsemble projects.
|
|
81
|
-
*/
|
|
82
|
-
export const logger = winston.createLogger({
|
|
83
|
-
level: levels[DEFAULT_LEVEL],
|
|
84
|
-
levels: Object.fromEntries(levels.map((level, index) => [level, index])),
|
|
85
|
-
format: winston.format.combine(
|
|
86
|
-
winston.format((info) => ({
|
|
87
|
-
...info,
|
|
88
|
-
lines: toString(info)
|
|
89
|
-
.split(/\r?\n/)
|
|
90
|
-
.map((line) => `${''.padEnd(padding - info.level.length)}${line}`),
|
|
91
|
-
}))(),
|
|
92
|
-
winston.format.colorize(),
|
|
93
|
-
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
|
|
94
|
-
winston.format.printf(({ level, lines, timestamp }) =>
|
|
95
|
-
lines.map((line: string) => `${timestamp} [${level}]: ${line}`).join(EOL),
|
|
96
|
-
),
|
|
97
|
-
),
|
|
98
|
-
transports: [new winston.transports.Console()],
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Set the logging level using a string or numeric value.
|
|
103
|
-
*
|
|
104
|
-
* @param level The logger level to set.
|
|
105
|
-
*/
|
|
106
|
-
export function setLogLevel(level: number | string = DEFAULT_LEVEL): void {
|
|
107
|
-
logger.level = Number.isNaN(Number(level))
|
|
108
|
-
? (level as string)
|
|
109
|
-
: levels[Math.min(Math.max(level as number, 0), levels.length - 1)];
|
|
110
|
-
logger.silly(`Logging level set to ${logger.level}`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Configure logging using named quiet and verbose parameters.
|
|
115
|
-
*
|
|
116
|
-
* Use this in conjunction with `yargs`.
|
|
117
|
-
*
|
|
118
|
-
* @param argv The processed command line arguments.
|
|
119
|
-
*/
|
|
120
|
-
export function configureLogger({ quiet = 0, verbose = 0 }: ConfigureLoggerParams): void {
|
|
121
|
-
process.on('warning', (warning) => {
|
|
122
|
-
logger.warn(warning);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
process.on('unhandledRejection', (error) => {
|
|
126
|
-
logger.error(error);
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
setLogLevel(DEFAULT_LEVEL + verbose - quiet);
|
|
130
|
-
}
|
package/loggerMiddleware.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loggerMiddleware.js","sourceRoot":"","sources":["loggerMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loggerMiddleware.test.js","sourceRoot":"","sources":["loggerMiddleware.test.ts"],"names":[],"mappings":"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"}
|