@appsemble/node-utils 0.20.13 → 0.20.14

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.
Files changed (72) hide show
  1. package/AppsembleError.js +1 -5
  2. package/AppsembleError.js.map +1 -1
  3. package/AppsembleError.test.js +2 -4
  4. package/AppsembleError.test.js.map +1 -1
  5. package/AppsembleError.test.ts +1 -1
  6. package/README.md +4 -4
  7. package/basicAuth.js +1 -5
  8. package/basicAuth.js.map +1 -1
  9. package/basicAuth.test.js +2 -4
  10. package/basicAuth.test.js.map +1 -1
  11. package/basicAuth.test.ts +1 -1
  12. package/formData.js +5 -12
  13. package/formData.js.map +1 -1
  14. package/formData.test.js +9 -11
  15. package/formData.test.js.map +1 -1
  16. package/formData.test.ts +1 -1
  17. package/fs.d.ts +2 -1
  18. package/fs.js +35 -65
  19. package/fs.js.map +1 -1
  20. package/fs.test.js +32 -34
  21. package/fs.test.js.map +1 -1
  22. package/fs.test.ts +6 -6
  23. package/fs.ts +12 -9
  24. package/getWorkspaces.js +6 -13
  25. package/getWorkspaces.js.map +1 -1
  26. package/handleError.js +6 -10
  27. package/handleError.js.map +1 -1
  28. package/handleError.test.js +13 -15
  29. package/handleError.test.js.map +1 -1
  30. package/handleError.test.ts +7 -7
  31. package/handleError.ts +2 -2
  32. package/index.d.ts +11 -11
  33. package/index.js +11 -27
  34. package/index.js.map +1 -1
  35. package/index.ts +11 -11
  36. package/interceptors.js +17 -27
  37. package/interceptors.js.map +1 -1
  38. package/interceptors.test.js +30 -40
  39. package/interceptors.test.js.map +1 -1
  40. package/interceptors.test.ts +7 -13
  41. package/interceptors.ts +1 -1
  42. package/jest.config.js +3 -1
  43. package/jest.setup.js +4 -6
  44. package/jest.setup.js.map +1 -1
  45. package/jest.setup.ts +3 -3
  46. package/logger.js +27 -35
  47. package/logger.js.map +1 -1
  48. package/logger.test.js +15 -17
  49. package/logger.test.js.map +1 -1
  50. package/logger.test.ts +1 -1
  51. package/loggerMiddleware.js +18 -25
  52. package/loggerMiddleware.js.map +1 -1
  53. package/loggerMiddleware.test.js +42 -52
  54. package/loggerMiddleware.test.js.map +1 -1
  55. package/loggerMiddleware.test.ts +15 -21
  56. package/loggerMiddleware.ts +1 -1
  57. package/package.json +7 -8
  58. package/readFileOrString.js +5 -9
  59. package/readFileOrString.js.map +1 -1
  60. package/readFileOrString.test.js +4 -6
  61. package/readFileOrString.test.js.map +1 -1
  62. package/readFileOrString.test.ts +2 -2
  63. package/readFileOrString.ts +1 -1
  64. package/testFixtures.d.ts +5 -4
  65. package/testFixtures.js +13 -24
  66. package/testFixtures.js.map +1 -1
  67. package/testFixtures.ts +9 -9
  68. package/tsconfig.json +1 -1
  69. package/__mocks__/os.d.ts +0 -5
  70. package/__mocks__/os.js +0 -8
  71. package/__mocks__/os.js.map +0 -1
  72. package/__mocks__/os.ts +0 -10
@@ -1,10 +1,9 @@
1
- import { install, InstalledClock } from '@sinonjs/fake-timers';
2
1
  import axios, { AxiosInstance } from 'axios';
3
2
  import MockAdapter from 'axios-mock-adapter';
4
3
  import { highlight } from 'cli-highlight';
5
4
  import FormData from 'form-data';
6
5
 
7
- import { configureAxios, formData, logger, requestLogger, responseLogger } from '.';
6
+ import { configureAxios, formData, logger, requestLogger, responseLogger } from './index.js';
8
7
 
9
8
  function h(content: string): string {
10
9
  return highlight(content, { language: 'http' });
@@ -12,16 +11,11 @@ function h(content: string): string {
12
11
 
13
12
  let instance: AxiosInstance;
14
13
  let mock: MockAdapter;
15
- let clock: InstalledClock;
16
14
 
17
- jest.mock('os');
15
+ import.meta.jest.mock('os');
18
16
 
19
17
  beforeEach(() => {
20
- clock = install();
21
- });
22
-
23
- afterEach(() => {
24
- clock.uninstall();
18
+ import.meta.jest.useFakeTimers({ now: 0 });
25
19
  });
26
20
 
27
21
  describe('formData', () => {
@@ -65,7 +59,7 @@ describe('requestLogger', () => {
65
59
  });
66
60
 
67
61
  it('should log requests', async () => {
68
- jest.spyOn(logger, 'verbose');
62
+ import.meta.jest.spyOn(logger, 'verbose');
69
63
  await instance.get('/');
70
64
  expect(logger.verbose).toHaveBeenCalledWith(`> 0 ${h('GET / HTTP/1.1')}`);
71
65
  });
@@ -80,7 +74,7 @@ describe('responseLogger', () => {
80
74
  });
81
75
 
82
76
  it('should log responses', async () => {
83
- jest.spyOn(logger, 'verbose');
77
+ import.meta.jest.spyOn(logger, 'verbose');
84
78
  await instance.get('/');
85
79
  expect(logger.verbose).toHaveBeenCalledWith(expect.any(String));
86
80
  });
@@ -88,8 +82,8 @@ describe('responseLogger', () => {
88
82
 
89
83
  describe('configureAxios', () => {
90
84
  beforeEach(() => {
91
- jest.spyOn(axios.interceptors.request, 'use').mockImplementation();
92
- jest.spyOn(axios.interceptors.response, 'use').mockImplementation();
85
+ import.meta.jest.spyOn(axios.interceptors.request, 'use').mockImplementation();
86
+ import.meta.jest.spyOn(axios.interceptors.response, 'use').mockImplementation();
93
87
  });
94
88
 
95
89
  it('should set the correct user agent', () => {
package/interceptors.ts CHANGED
@@ -4,7 +4,7 @@ import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
4
4
  import { highlight } from 'cli-highlight';
5
5
  import FormData from 'form-data';
6
6
 
7
- import { logger } from './logger';
7
+ import { logger } from './logger.js';
8
8
 
9
9
  /**
10
10
  * This is used to set a request id, so the request and response can be matched in the logs.
package/jest.config.js CHANGED
@@ -1 +1,3 @@
1
- module.exports = require('../../config/jest/config')(__dirname);
1
+ import { createJestConfig } from '../../config/jest/config.js';
2
+
3
+ export default createJestConfig(import.meta);
package/jest.setup.js CHANGED
@@ -1,9 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
1
  // Importing a module here will break mocks for that module. Only add imports from `./src/*` here
4
2
  // that are strictly necessary.
5
- const logger_1 = require("./logger");
6
- const testFixtures_1 = require("./testFixtures");
7
- (0, testFixtures_1.setFixtureBase)(__dirname);
8
- (0, logger_1.setLogLevel)(0);
3
+ import { setLogLevel } from './logger.js';
4
+ import { setFixtureBase } from './testFixtures.js';
5
+ setFixtureBase(import.meta);
6
+ setLogLevel(0);
9
7
  //# sourceMappingURL=jest.setup.js.map
package/jest.setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["jest.setup.ts"],"names":[],"mappings":";;AAAA,iGAAiG;AACjG,+BAA+B;AAC/B,qCAAuC;AACvC,iDAAgD;AAEhD,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAC;AAC1B,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC"}
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 CHANGED
@@ -1,7 +1,7 @@
1
1
  // Importing a module here will break mocks for that module. Only add imports from `./src/*` here
2
2
  // that are strictly necessary.
3
- import { setLogLevel } from './logger';
4
- import { setFixtureBase } from './testFixtures';
3
+ import { setLogLevel } from './logger.js';
4
+ import { setFixtureBase } from './testFixtures.js';
5
5
 
6
- setFixtureBase(__dirname);
6
+ setFixtureBase(import.meta);
7
7
  setLogLevel(0);
package/logger.js CHANGED
@@ -1,15 +1,9 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.configureLogger = exports.setLogLevel = exports.logger = void 0;
7
- const os_1 = require("os");
8
- const util_1 = require("util");
9
- const axios_1 = __importDefault(require("axios"));
10
- const chalk_1 = __importDefault(require("chalk"));
11
- const cli_highlight_1 = require("cli-highlight");
12
- const winston_1 = __importDefault(require("winston"));
1
+ import { EOL } from 'os';
2
+ import { inspect } from 'util';
3
+ import axios from 'axios';
4
+ import chalk from 'chalk';
5
+ import { highlight } from 'cli-highlight';
6
+ import winston from 'winston';
13
7
  const levels = ['crit', 'error', 'warn', 'info', 'verbose', 'silly'];
14
8
  const DEFAULT_LEVEL = levels.indexOf('info');
15
9
  const padding = Math.max(...levels.map(({ length }) => length));
@@ -20,18 +14,18 @@ function httpErrorToString(error) {
20
14
  var _a, _b, _c;
21
15
  const { config, request, response } = error;
22
16
  return [
23
- chalk_1.default.blue.bold('Request:'),
24
- (0, cli_highlight_1.highlight)([
25
- `${config.method.toUpperCase()} ${axios_1.default.getUri(config)} HTTP/${(_b = (_a = request.res) === null || _a === void 0 ? void 0 : _a.httpVersion) !== null && _b !== void 0 ? _b : '1.1'}`,
17
+ chalk.blue.bold('Request:'),
18
+ highlight([
19
+ `${config.method.toUpperCase()} ${axios.getUri(config)} HTTP/${(_b = (_a = request.res) === null || _a === void 0 ? void 0 : _a.httpVersion) !== null && _b !== void 0 ? _b : '1.1'}`,
26
20
  ...Object.entries(config.headers)
27
21
  .map(([key, value]) => [headerCase(key), value])
28
22
  .map(([key, value]) => `${key}: ${key === 'Authorization' ? 'xxxxxxxxxx' : value}`)
29
23
  .sort(),
30
- ].join(os_1.EOL), { language: 'http', ignoreIllegals: true }),
24
+ ].join(EOL), { language: 'http', ignoreIllegals: true }),
31
25
  '',
32
- chalk_1.default.blue.bold('Response:'),
26
+ chalk.blue.bold('Response:'),
33
27
  response
34
- ? (0, cli_highlight_1.highlight)([
28
+ ? highlight([
35
29
  `HTTP/${(_c = request.res) === null || _c === void 0 ? void 0 : _c.httpVersion} ${response.status} ${response.statusText}`,
36
30
  ...Object.entries(response.headers)
37
31
  .map(([key, value]) => `${headerCase(key)}: ${value}`)
@@ -40,13 +34,13 @@ function httpErrorToString(error) {
40
34
  response.data instanceof Object
41
35
  ? JSON.stringify(response.data, null, 2)
42
36
  : response.data,
43
- ].join(os_1.EOL), { language: 'http', ignoreIllegals: true })
44
- : chalk_1.default.red.bold('No response from server'),
45
- ].join(os_1.EOL);
37
+ ].join(EOL), { language: 'http', ignoreIllegals: true })
38
+ : chalk.red.bold('No response from server'),
39
+ ].join(EOL);
46
40
  }
47
41
  function toString(info) {
48
42
  if (info instanceof Error) {
49
- if (axios_1.default.isAxiosError(info)) {
43
+ if (axios.isAxiosError(info)) {
50
44
  return httpErrorToString(info);
51
45
  }
52
46
  return info.stack;
@@ -54,34 +48,33 @@ function toString(info) {
54
48
  if (typeof info.message === 'string') {
55
49
  return info.message;
56
50
  }
57
- return (0, util_1.inspect)(info.message, { colors: true });
51
+ return inspect(info.message, { colors: true });
58
52
  }
59
53
  /**
60
54
  * The default logger for NodeJS Appsemble projects.
61
55
  */
62
- exports.logger = winston_1.default.createLogger({
56
+ export const logger = winston.createLogger({
63
57
  level: levels[DEFAULT_LEVEL],
64
58
  levels: Object.fromEntries(levels.map((level, index) => [level, index])),
65
- format: winston_1.default.format.combine(winston_1.default.format((info) => ({
59
+ format: winston.format.combine(winston.format((info) => ({
66
60
  ...info,
67
61
  lines: toString(info)
68
62
  .split(/\r?\n/)
69
63
  .map((line) => `${''.padEnd(padding - info.level.length)}${line}`),
70
- }))(), winston_1.default.format.colorize(), winston_1.default.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston_1.default.format.printf(({ level, lines, timestamp }) => lines.map((line) => `${timestamp} [${level}]: ${line}`).join(os_1.EOL))),
71
- transports: [new winston_1.default.transports.Console()],
64
+ }))(), winston.format.colorize(), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf(({ level, lines, timestamp }) => lines.map((line) => `${timestamp} [${level}]: ${line}`).join(EOL))),
65
+ transports: [new winston.transports.Console()],
72
66
  });
73
67
  /**
74
68
  * Set the logging level using a string or numeric value.
75
69
  *
76
70
  * @param level The logger level to set.
77
71
  */
78
- function setLogLevel(level = DEFAULT_LEVEL) {
79
- exports.logger.level = Number.isNaN(Number(level))
72
+ export function setLogLevel(level = DEFAULT_LEVEL) {
73
+ logger.level = Number.isNaN(Number(level))
80
74
  ? level
81
75
  : levels[Math.min(Math.max(level, 0), levels.length - 1)];
82
- exports.logger.silly(`Logging level set to ${exports.logger.level}`);
76
+ logger.silly(`Logging level set to ${logger.level}`);
83
77
  }
84
- exports.setLogLevel = setLogLevel;
85
78
  /**
86
79
  * Configure logging using named quiet and verbose parameters.
87
80
  *
@@ -89,14 +82,13 @@ exports.setLogLevel = setLogLevel;
89
82
  *
90
83
  * @param argv The processed command line arguments.
91
84
  */
92
- function configureLogger({ quiet = 0, verbose = 0 }) {
85
+ export function configureLogger({ quiet = 0, verbose = 0 }) {
93
86
  process.on('warning', (warning) => {
94
- exports.logger.warn(warning);
87
+ logger.warn(warning);
95
88
  });
96
89
  process.on('unhandledRejection', (error) => {
97
- exports.logger.error(error);
90
+ logger.error(error);
98
91
  });
99
92
  setLogLevel(DEFAULT_LEVEL + verbose - quiet);
100
93
  }
101
- exports.configureLogger = configureLogger;
102
94
  //# sourceMappingURL=logger.js.map
package/logger.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["logger.ts"],"names":[],"mappings":"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"}
package/logger.test.js CHANGED
@@ -1,38 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const logger_1 = require("./logger");
1
+ import { configureLogger, logger, setLogLevel } from './logger.js';
4
2
  describe('setLogLevel', () => {
5
3
  afterEach(() => {
6
- (0, logger_1.setLogLevel)();
4
+ setLogLevel();
7
5
  });
8
6
  it('should set the level of the exported logger based on a string', () => {
9
- (0, logger_1.setLogLevel)('verbose');
10
- expect(logger_1.logger.level).toBe('verbose');
7
+ setLogLevel('verbose');
8
+ expect(logger.level).toBe('verbose');
11
9
  });
12
10
  it('should set the level of the exported logger based on a number', () => {
13
- (0, logger_1.setLogLevel)(1);
14
- expect(logger_1.logger.level).toBe('error');
11
+ setLogLevel(1);
12
+ expect(logger.level).toBe('error');
15
13
  });
16
14
  it('should set the level of the exported logger based on a numeric string', () => {
17
- (0, logger_1.setLogLevel)('2');
18
- expect(logger_1.logger.level).toBe('warn');
15
+ setLogLevel('2');
16
+ expect(logger.level).toBe('warn');
19
17
  });
20
18
  });
21
19
  describe('configureLogger', () => {
22
20
  afterEach(() => {
23
- (0, logger_1.setLogLevel)();
21
+ setLogLevel();
24
22
  });
25
23
  it('should configure a log level based on the quiet count of the argv', () => {
26
- (0, logger_1.configureLogger)({ quiet: 1 });
27
- expect(logger_1.logger.level).toBe('warn');
24
+ configureLogger({ quiet: 1 });
25
+ expect(logger.level).toBe('warn');
28
26
  });
29
27
  it('should configure a log level based on the verbose count of the argv', () => {
30
- (0, logger_1.configureLogger)({ verbose: 1 });
31
- expect(logger_1.logger.level).toBe('verbose');
28
+ configureLogger({ verbose: 1 });
29
+ expect(logger.level).toBe('verbose');
32
30
  });
33
31
  it('should configure a log level based on the combined quiet and verbose count', () => {
34
- (0, logger_1.configureLogger)({ quiet: 1, verbose: 1 });
35
- expect(logger_1.logger.level).toBe('info');
32
+ configureLogger({ quiet: 1, verbose: 1 });
33
+ expect(logger.level).toBe('info');
36
34
  });
37
35
  });
38
36
  //# sourceMappingURL=logger.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.test.js","sourceRoot":"","sources":["logger.test.ts"],"names":[],"mappings":";;AAAA,qCAAgE;AAEhE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAA,oBAAW,GAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,eAAM,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,IAAA,oBAAW,GAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,IAAA,wBAAe,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,IAAA,wBAAe,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,IAAA,wBAAe,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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 CHANGED
@@ -1,4 +1,4 @@
1
- import { configureLogger, logger, setLogLevel } from './logger';
1
+ import { configureLogger, logger, setLogLevel } from './logger.js';
2
2
 
3
3
  describe('setLogLevel', () => {
4
4
  afterEach(() => {
@@ -1,11 +1,5 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loggerMiddleware = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const logger_1 = require("./logger");
1
+ import chalk from 'chalk';
2
+ import { logger } from './logger.js';
9
3
  function rangeFormat(value, map) {
10
4
  return Object.entries(map).find(([v]) => v === 'default' || value < Number(v))[1];
11
5
  }
@@ -14,12 +8,12 @@ function rangeFormat(value, map) {
14
8
  *
15
9
  * @returns Koa middleware for logging requests using the Appsemble logger.
16
10
  */
17
- function loggerMiddleware() {
11
+ export function loggerMiddleware() {
18
12
  return (ctx, next) => {
19
13
  const { href, res } = ctx;
20
14
  const start = Date.now();
21
- const method = chalk_1.default.bold(ctx.method);
22
- logger_1.logger.info(`${method} ${href} — ${chalk_1.default.white(ctx.ip)}`);
15
+ const method = chalk.bold(ctx.method);
16
+ logger.info(`${method} ${href} — ${chalk.white(ctx.ip)}`);
23
17
  function logResponse() {
24
18
  res.removeListener('finish', logResponse);
25
19
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
@@ -28,16 +22,16 @@ function loggerMiddleware() {
28
22
  const s = `${status} ${message}`;
29
23
  const duration = Date.now() - start;
30
24
  const formatDuration = rangeFormat(duration, {
31
- 100: chalk_1.default.green,
32
- 1000: chalk_1.default.yellow,
33
- default: chalk_1.default.red,
25
+ 100: chalk.green,
26
+ 1000: chalk.yellow,
27
+ default: chalk.red,
34
28
  });
35
29
  const formatStatus = rangeFormat(status, {
36
- 200: chalk_1.default.red,
37
- 300: chalk_1.default.green,
38
- 400: chalk_1.default.cyan,
39
- 500: chalk_1.default.yellow,
40
- default: chalk_1.default.red,
30
+ 200: chalk.red,
31
+ 300: chalk.green,
32
+ 400: chalk.cyan,
33
+ 500: chalk.yellow,
34
+ default: chalk.red,
41
35
  });
42
36
  const level = rangeFormat(status, {
43
37
  200: 'error',
@@ -45,23 +39,22 @@ function loggerMiddleware() {
45
39
  500: 'warn',
46
40
  default: 'error',
47
41
  });
48
- logger_1.logger.log(level, `${method} ${href} ${formatStatus(location ? `${s} → ${location}` : s)} ${formatDuration(`${duration}ms`)}`);
42
+ logger.log(level, `${method} ${href} ${formatStatus(location ? `${s} → ${location}` : s)} ${formatDuration(`${duration}ms`)}`);
49
43
  }
50
44
  function logCancel() {
51
45
  res.removeListener('finish', logResponse);
52
46
  res.removeListener('close', logCancel);
53
47
  const duration = Date.now() - start;
54
48
  const formatDuration = rangeFormat(duration, {
55
- 100: chalk_1.default.green,
56
- 1000: chalk_1.default.yellow,
57
- default: chalk_1.default.red,
49
+ 100: chalk.green,
50
+ 1000: chalk.yellow,
51
+ default: chalk.red,
58
52
  });
59
- logger_1.logger.warn(`${method} ${href} ${chalk_1.default.grey('Cancelled')} ${formatDuration(`${duration}ms`)}`);
53
+ logger.warn(`${method} ${href} ${chalk.grey('Cancelled')} ${formatDuration(`${duration}ms`)}`);
60
54
  }
61
55
  res.once('finish', logResponse);
62
56
  res.once('close', logCancel);
63
57
  return next();
64
58
  };
65
59
  }
66
- exports.loggerMiddleware = loggerMiddleware;
67
60
  //# sourceMappingURL=loggerMiddleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loggerMiddleware.js","sourceRoot":"","sources":["loggerMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loggerMiddleware.js","sourceRoot":"","sources":["loggerMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const fake_timers_1 = require("@sinonjs/fake-timers");
7
- const axios_test_instance_1 = require("axios-test-instance");
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const koa_1 = __importDefault(require("koa"));
10
- const logger_1 = require("./logger");
11
- const loggerMiddleware_1 = require("./loggerMiddleware");
1
+ import { request, setTestApp } from 'axios-test-instance';
2
+ import chalk from 'chalk';
3
+ import Koa from 'koa';
4
+ import { logger } from './logger.js';
5
+ import { loggerMiddleware } from './loggerMiddleware.js';
12
6
  class TestError extends Error {
13
7
  constructor(message) {
14
8
  super(message);
@@ -16,12 +10,11 @@ class TestError extends Error {
16
10
  }
17
11
  }
18
12
  let app;
19
- let clock;
20
13
  beforeEach(async () => {
21
- jest.spyOn(logger_1.logger, 'info').mockImplementation(() => logger_1.logger);
22
- jest.spyOn(logger_1.logger, 'log').mockImplementation(() => logger_1.logger);
23
- clock = (0, fake_timers_1.install)();
24
- app = new koa_1.default();
14
+ import.meta.jest.spyOn(logger, 'info').mockImplementation(() => logger);
15
+ import.meta.jest.spyOn(logger, 'log').mockImplementation(() => logger);
16
+ import.meta.jest.useFakeTimers({ now: 0 });
17
+ app = new Koa();
25
18
  app.use(async (ctx, next) => {
26
19
  Object.defineProperty(ctx.request, 'origin', {
27
20
  value: 'https://example.com:1337',
@@ -36,95 +29,92 @@ beforeEach(async () => {
36
29
  ctx.status = 400;
37
30
  }
38
31
  });
39
- app.use((0, loggerMiddleware_1.loggerMiddleware)());
32
+ app.use(loggerMiddleware());
40
33
  app.silent = true;
41
- axios_test_instance_1.request.defaults.maxRedirects = 0;
42
- await (0, axios_test_instance_1.setTestApp)(app);
43
- });
44
- afterEach(() => {
45
- clock.uninstall();
34
+ request.defaults.maxRedirects = 0;
35
+ await setTestApp(app);
46
36
  });
47
37
  it('should log requests', async () => {
48
- await axios_test_instance_1.request.get('/pizza');
49
- expect(logger_1.logger.info).toHaveBeenCalledWith(`${chalk_1.default.bold('GET')} https://example.com:1337/pizza — ${chalk_1.default.white('127.0.0.1')}`);
38
+ await request.get('/pizza');
39
+ expect(logger.info).toHaveBeenCalledWith(`${chalk.bold('GET')} https://example.com:1337/pizza — ${chalk.white('127.0.0.1')}`);
50
40
  });
51
41
  it('should log success responses as info', async () => {
52
42
  app.use((ctx) => {
53
- clock.tick(1);
43
+ import.meta.jest.advanceTimersByTime(1);
54
44
  ctx.status = 200;
55
45
  });
56
- await axios_test_instance_1.request.get('/fries');
57
- expect(logger_1.logger.log).toHaveBeenCalledWith('info', `${chalk_1.default.bold('GET')} https://example.com:1337/fries ${chalk_1.default.green('200 OK')} ${chalk_1.default.green('1ms')}`);
46
+ await request.get('/fries');
47
+ expect(logger.log).toHaveBeenCalledWith('info', `${chalk.bold('GET')} https://example.com:1337/fries ${chalk.green('200 OK')} ${chalk.green('1ms')}`);
58
48
  });
59
49
  it('should log redirect responses as info', async () => {
60
50
  app.use((ctx) => {
61
- clock.tick(33);
51
+ import.meta.jest.advanceTimersByTime(33);
62
52
  ctx.redirect('/');
63
53
  });
64
- await axios_test_instance_1.request.get('/fries');
65
- expect(logger_1.logger.log).toHaveBeenCalledWith('info', `${chalk_1.default.bold('GET')} https://example.com:1337/fries ${chalk_1.default.cyan('302 Found → /')} ${chalk_1.default.green('33ms')}`);
54
+ await request.get('/fries');
55
+ expect(logger.log).toHaveBeenCalledWith('info', `${chalk.bold('GET')} https://example.com:1337/fries ${chalk.cyan('302 Found → /')} ${chalk.green('33ms')}`);
66
56
  });
67
57
  it('should log bad responses as warn', async () => {
68
58
  app.use((ctx) => {
69
- clock.tick(3);
59
+ import.meta.jest.advanceTimersByTime(3);
70
60
  ctx.status = 400;
71
61
  });
72
- await axios_test_instance_1.request.get('/burrito');
73
- expect(logger_1.logger.log).toHaveBeenCalledWith('warn', `${chalk_1.default.bold('GET')} https://example.com:1337/burrito ${chalk_1.default.yellow('400 Bad Request')} ${chalk_1.default.green('3ms')}`);
62
+ await request.get('/burrito');
63
+ expect(logger.log).toHaveBeenCalledWith('warn', `${chalk.bold('GET')} https://example.com:1337/burrito ${chalk.yellow('400 Bad Request')} ${chalk.green('3ms')}`);
74
64
  });
75
65
  it('should log error responses as error', async () => {
76
66
  app.use((ctx) => {
77
- clock.tick(53);
67
+ import.meta.jest.advanceTimersByTime(53);
78
68
  ctx.status = 503;
79
69
  });
80
- await axios_test_instance_1.request.get('/wrap');
81
- expect(logger_1.logger.log).toHaveBeenCalledWith('error', `${chalk_1.default.bold('GET')} https://example.com:1337/wrap ${chalk_1.default.red('503 Service Unavailable')} ${chalk_1.default.green('53ms')}`);
70
+ await request.get('/wrap');
71
+ expect(logger.log).toHaveBeenCalledWith('error', `${chalk.bold('GET')} https://example.com:1337/wrap ${chalk.red('503 Service Unavailable')} ${chalk.green('53ms')}`);
82
72
  });
83
73
  it('should log long request lengths yellow', async () => {
84
74
  app.use((ctx) => {
85
- clock.tick(400);
75
+ import.meta.jest.advanceTimersByTime(400);
86
76
  ctx.status = 200;
87
77
  });
88
- await axios_test_instance_1.request.get('/banana');
89
- expect(logger_1.logger.log).toHaveBeenCalledWith('info', `${chalk_1.default.bold('GET')} https://example.com:1337/banana ${chalk_1.default.green('200 OK')} ${chalk_1.default.yellow('400ms')}`);
78
+ await request.get('/banana');
79
+ expect(logger.log).toHaveBeenCalledWith('info', `${chalk.bold('GET')} https://example.com:1337/banana ${chalk.green('200 OK')} ${chalk.yellow('400ms')}`);
90
80
  });
91
81
  it('should log extremely long request lengths red', async () => {
92
82
  app.use((ctx) => {
93
- clock.tick(1337);
83
+ import.meta.jest.advanceTimersByTime(1337);
94
84
  ctx.status = 200;
95
85
  });
96
- await axios_test_instance_1.request.get('/pepperoni');
97
- expect(logger_1.logger.log).toHaveBeenCalledWith('info', `${chalk_1.default.bold('GET')} https://example.com:1337/pepperoni ${chalk_1.default.green('200 OK')} ${chalk_1.default.red('1337ms')}`);
86
+ await request.get('/pepperoni');
87
+ expect(logger.log).toHaveBeenCalledWith('info', `${chalk.bold('GET')} https://example.com:1337/pepperoni ${chalk.green('200 OK')} ${chalk.red('1337ms')}`);
98
88
  });
99
89
  it('should log errors as internal server errors and rethrow', async () => {
100
- const spy = jest.fn();
90
+ const spy = import.meta.jest.fn();
101
91
  const error = new Error('fail');
102
92
  let context;
103
93
  app.on('error', spy);
104
94
  app.use((ctx) => {
105
- clock.tick(86);
95
+ import.meta.jest.advanceTimersByTime(86);
106
96
  context = ctx;
107
97
  throw error;
108
98
  });
109
- await axios_test_instance_1.request.get('/taco');
99
+ await request.get('/taco');
110
100
  expect(spy).toHaveBeenCalledWith(error, context);
111
- expect(logger_1.logger.log).toHaveBeenCalledWith('error', `${chalk_1.default.bold('GET')} https://example.com:1337/taco ${chalk_1.default.red('500 Internal Server Error')} ${chalk_1.default.green('86ms')}`);
101
+ expect(logger.log).toHaveBeenCalledWith('error', `${chalk.bold('GET')} https://example.com:1337/taco ${chalk.red('500 Internal Server Error')} ${chalk.green('86ms')}`);
112
102
  });
113
103
  it('should append the response length if it is defined', async () => {
114
104
  app.use((ctx) => {
115
- clock.tick(1);
105
+ import.meta.jest.advanceTimersByTime(1);
116
106
  ctx.status = 200;
117
107
  ctx.body = '{}';
118
108
  });
119
- await axios_test_instance_1.request.get('/fries');
120
- expect(logger_1.logger.log).toHaveBeenCalledWith('info', `${chalk_1.default.bold('GET')} https://example.com:1337/fries ${chalk_1.default.green('200 OK')} ${chalk_1.default.green('1ms')}`);
109
+ await request.get('/fries');
110
+ expect(logger.log).toHaveBeenCalledWith('info', `${chalk.bold('GET')} https://example.com:1337/fries ${chalk.green('200 OK')} ${chalk.green('1ms')}`);
121
111
  });
122
112
  it('should log handled errors correctly', async () => {
123
113
  app.use(() => {
124
- clock.tick(15);
114
+ import.meta.jest.advanceTimersByTime(15);
125
115
  throw new TestError();
126
116
  });
127
- await axios_test_instance_1.request.get('potatoes');
128
- expect(logger_1.logger.log).toHaveBeenCalledWith('warn', `${chalk_1.default.bold('GET')} https://example.com:1337/potatoes ${chalk_1.default.yellow('400 Bad Request')} ${chalk_1.default.green('15ms')}`);
117
+ await request.get('potatoes');
118
+ expect(logger.log).toHaveBeenCalledWith('warn', `${chalk.bold('GET')} https://example.com:1337/potatoes ${chalk.yellow('400 Bad Request')} ${chalk.green('15ms')}`);
129
119
  });
130
120
  //# sourceMappingURL=loggerMiddleware.test.js.map