@lokalise/node-core 9.2.0 → 9.3.0

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 CHANGED
@@ -89,6 +89,22 @@ The library provides methods to resolve the default logging configuration. Publi
89
89
  const logger = pino(loggerConfig)
90
90
  ```
91
91
 
92
+ - `resolveMonorepoLoggerConfiguration()`, which accepts as parameter an `appConfig`, defined by the `logLevel` and the `nodeEnv`. It mostly behaves the same as `resolveLoggerConfiguration`, with the exception of execution in `development environments`. Since monorepo services are usually ran concurrently, logs from `stdout` aren't easily accessible. For this reason this logging configuration writes development logs into files.
93
+
94
+ The method returns a logger configuration that should be used with `pino` library as in the following example:
95
+
96
+ ```ts
97
+ const loggerConfig = resolveMonorepoLoggerConfiguration({
98
+ logLevel: 'warn',
99
+ nodeEnv: 'production',
100
+ append: false,
101
+ // targetFile: './logs/service.log' -- optional parameter, you can specify exact path for writing logs
102
+ })
103
+
104
+ const logger = pino(loggerConfig)
105
+ ```
106
+
107
+
92
108
  ## ConfigScope
93
109
 
94
110
  `ConfigScope` is a class that provides a way to encapsulate a single config source (e. g. `process.env`) and produce a set of values out of it, defining constraints and transformations for them.
package/dist/index.d.ts CHANGED
@@ -11,8 +11,8 @@ export { chunk, callChunked, removeFalsy, removeNullish } from './src/utils/arra
11
11
  export { groupBy, groupByUnique, pick, pickWithoutUndefined, copyWithoutUndefined, isEmptyObject, convertDateFieldsToIsoString, deepClone, } from './src/utils/objectUtils';
12
12
  export { isInternalError, isStandardizedError, isObject, isPublicNonRecoverableError, hasMessage, } from './src/utils/typeUtils';
13
13
  export { type StandardizedError } from './src/utils/typeUtils';
14
- export { resolveLoggerConfiguration } from './src/logging/loggerConfigResolver';
15
- export { type AppLoggerConfig } from './src/logging/loggerConfigResolver';
14
+ export { resolveLoggerConfiguration, resolveMonorepoLoggerConfiguration, } from './src/logging/loggerConfigResolver';
15
+ export type { AppLoggerConfig, MonorepoAppLoggerConfig } from './src/logging/loggerConfigResolver';
16
16
  export { type ErrorReport, type ErrorReporter, type ErrorResolver, } from './src/errors/errorReporterTypes';
17
17
  export { executeAsyncAndHandleGlobalErrors, executeAndHandleGlobalErrors, executeSettleAllAndHandleGlobalErrors, globalLogger, resolveGlobalErrorLogObject, } from './src/errors/globalErrorHandler';
18
18
  export { type MayOmit } from './src/common/may-omit';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.waitAndRetry = exports.resolveGlobalErrorLogObject = exports.globalLogger = exports.executeSettleAllAndHandleGlobalErrors = exports.executeAndHandleGlobalErrors = exports.executeAsyncAndHandleGlobalErrors = exports.resolveLoggerConfiguration = exports.hasMessage = exports.isPublicNonRecoverableError = exports.isObject = exports.isStandardizedError = exports.isInternalError = exports.deepClone = exports.convertDateFieldsToIsoString = exports.isEmptyObject = exports.copyWithoutUndefined = exports.pickWithoutUndefined = exports.pick = exports.groupByUnique = exports.groupBy = exports.removeNullish = exports.removeFalsy = exports.callChunked = exports.chunk = exports.isFailure = exports.isSuccess = exports.failure = exports.success = exports.createRangeValidator = exports.ensureClosingSlashTransformer = exports.ConfigScope = exports.ResponseStatusError = exports.InternalError = exports.PublicNonRecoverableError = exports.buildClient = exports.httpClient = exports.sendPostBinary = exports.sendPost = exports.sendGet = exports.sendPatch = exports.sendDelete = exports.sendPutBinary = exports.sendPut = void 0;
3
+ exports.waitAndRetry = exports.resolveGlobalErrorLogObject = exports.globalLogger = exports.executeSettleAllAndHandleGlobalErrors = exports.executeAndHandleGlobalErrors = exports.executeAsyncAndHandleGlobalErrors = exports.resolveMonorepoLoggerConfiguration = exports.resolveLoggerConfiguration = exports.hasMessage = exports.isPublicNonRecoverableError = exports.isObject = exports.isStandardizedError = exports.isInternalError = exports.deepClone = exports.convertDateFieldsToIsoString = exports.isEmptyObject = exports.copyWithoutUndefined = exports.pickWithoutUndefined = exports.pick = exports.groupByUnique = exports.groupBy = exports.removeNullish = exports.removeFalsy = exports.callChunked = exports.chunk = exports.isFailure = exports.isSuccess = exports.failure = exports.success = exports.createRangeValidator = exports.ensureClosingSlashTransformer = exports.ConfigScope = exports.ResponseStatusError = exports.InternalError = exports.PublicNonRecoverableError = exports.buildClient = exports.httpClient = exports.sendPostBinary = exports.sendPost = exports.sendGet = exports.sendPatch = exports.sendDelete = exports.sendPutBinary = exports.sendPut = void 0;
4
4
  var httpClient_1 = require("./src/http/httpClient");
5
5
  Object.defineProperty(exports, "sendPut", { enumerable: true, get: function () { return httpClient_1.sendPut; } });
6
6
  Object.defineProperty(exports, "sendPutBinary", { enumerable: true, get: function () { return httpClient_1.sendPutBinary; } });
@@ -50,6 +50,7 @@ Object.defineProperty(exports, "isPublicNonRecoverableError", { enumerable: true
50
50
  Object.defineProperty(exports, "hasMessage", { enumerable: true, get: function () { return typeUtils_1.hasMessage; } });
51
51
  var loggerConfigResolver_1 = require("./src/logging/loggerConfigResolver");
52
52
  Object.defineProperty(exports, "resolveLoggerConfiguration", { enumerable: true, get: function () { return loggerConfigResolver_1.resolveLoggerConfiguration; } });
53
+ Object.defineProperty(exports, "resolveMonorepoLoggerConfiguration", { enumerable: true, get: function () { return loggerConfigResolver_1.resolveMonorepoLoggerConfiguration; } });
53
54
  var globalErrorHandler_1 = require("./src/errors/globalErrorHandler");
54
55
  Object.defineProperty(exports, "executeAsyncAndHandleGlobalErrors", { enumerable: true, get: function () { return globalErrorHandler_1.executeAsyncAndHandleGlobalErrors; } });
55
56
  Object.defineProperty(exports, "executeAndHandleGlobalErrors", { enumerable: true, get: function () { return globalErrorHandler_1.executeAndHandleGlobalErrors; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,oDAc8B;AAb5B,qGAAA,OAAO,OAAA;AACP,2GAAA,aAAa,OAAA;AACb,wGAAA,UAAU,OAAA;AACV,uGAAA,SAAS,OAAA;AACT,qGAAA,OAAO,OAAA;AACP,sGAAA,QAAQ,OAAA;AACR,4GAAA,cAAc,OAAA;AACd,wGAAA,UAAU,OAAA;AACV,yGAAA,WAAW,OAAA;AAOb,oFAG+C;AAF7C,sIAAA,yBAAyB,OAAA;AAI3B,4DAImC;AAHjC,8GAAA,aAAa,OAAA;AAIf,wEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAE5B,wDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,sEAA+E;AAAtE,mIAAA,6BAA6B,OAAA;AACtC,kEAAoE;AAA3D,wHAAA,oBAAoB,OAAA;AAQ7B,8CAAyF;AAAnE,iGAAA,OAAO,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAE5D,qDAAuF;AAA9E,mGAAA,KAAK,OAAA;AAAE,yGAAA,WAAW,OAAA;AAAE,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AACvD,uDASgC;AAR9B,sGAAA,OAAO,OAAA;AACP,4GAAA,aAAa,OAAA;AACb,mGAAA,IAAI,OAAA;AACJ,mHAAA,oBAAoB,OAAA;AACpB,mHAAA,oBAAoB,OAAA;AACpB,4GAAA,aAAa,OAAA;AACb,2HAAA,4BAA4B,OAAA;AAC5B,wGAAA,SAAS,OAAA;AAGX,mDAM8B;AAL5B,4GAAA,eAAe,OAAA;AACf,gHAAA,mBAAmB,OAAA;AACnB,qGAAA,QAAQ,OAAA;AACR,wHAAA,2BAA2B,OAAA;AAC3B,uGAAA,UAAU,OAAA;AAIZ,2EAA+E;AAAtE,kIAAA,0BAA0B,OAAA;AAQnC,sEAMwC;AALtC,uIAAA,iCAAiC,OAAA;AACjC,kIAAA,4BAA4B,OAAA;AAC5B,2IAAA,qCAAqC,OAAA;AACrC,kHAAA,YAAY,OAAA;AACZ,iIAAA,2BAA2B,OAAA;AAK7B,mDAAoD;AAA3C,yGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,oDAc8B;AAb5B,qGAAA,OAAO,OAAA;AACP,2GAAA,aAAa,OAAA;AACb,wGAAA,UAAU,OAAA;AACV,uGAAA,SAAS,OAAA;AACT,qGAAA,OAAO,OAAA;AACP,sGAAA,QAAQ,OAAA;AACR,4GAAA,cAAc,OAAA;AACd,wGAAA,UAAU,OAAA;AACV,yGAAA,WAAW,OAAA;AAOb,oFAG+C;AAF7C,sIAAA,yBAAyB,OAAA;AAI3B,4DAImC;AAHjC,8GAAA,aAAa,OAAA;AAIf,wEAAsE;AAA7D,0HAAA,mBAAmB,OAAA;AAE5B,wDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,sEAA+E;AAAtE,mIAAA,6BAA6B,OAAA;AACtC,kEAAoE;AAA3D,wHAAA,oBAAoB,OAAA;AAQ7B,8CAAyF;AAAnE,iGAAA,OAAO,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAE5D,qDAAuF;AAA9E,mGAAA,KAAK,OAAA;AAAE,yGAAA,WAAW,OAAA;AAAE,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AACvD,uDASgC;AAR9B,sGAAA,OAAO,OAAA;AACP,4GAAA,aAAa,OAAA;AACb,mGAAA,IAAI,OAAA;AACJ,mHAAA,oBAAoB,OAAA;AACpB,mHAAA,oBAAoB,OAAA;AACpB,4GAAA,aAAa,OAAA;AACb,2HAAA,4BAA4B,OAAA;AAC5B,wGAAA,SAAS,OAAA;AAGX,mDAM8B;AAL5B,4GAAA,eAAe,OAAA;AACf,gHAAA,mBAAmB,OAAA;AACnB,qGAAA,QAAQ,OAAA;AACR,wHAAA,2BAA2B,OAAA;AAC3B,uGAAA,UAAU,OAAA;AAIZ,2EAG2C;AAFzC,kIAAA,0BAA0B,OAAA;AAC1B,0IAAA,kCAAkC,OAAA;AASpC,sEAMwC;AALtC,uIAAA,iCAAiC,OAAA;AACjC,kIAAA,4BAA4B,OAAA;AAC5B,2IAAA,qCAAqC,OAAA;AACrC,kHAAA,YAAY,OAAA;AACZ,iIAAA,2BAA2B,OAAA;AAK7B,mDAAoD;AAA3C,yGAAA,YAAY,OAAA"}
@@ -3,4 +3,9 @@ export type AppLoggerConfig = {
3
3
  logLevel: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent';
4
4
  nodeEnv: 'production' | 'development' | 'test';
5
5
  };
6
+ export type MonorepoAppLoggerConfig = AppLoggerConfig & {
7
+ targetFile?: string;
8
+ append?: boolean;
9
+ };
10
+ export declare function resolveMonorepoLoggerConfiguration(appConfig: MonorepoAppLoggerConfig): LoggerOptions;
6
11
  export declare function resolveLoggerConfiguration(appConfig: AppLoggerConfig): LoggerOptions;
@@ -1,6 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveLoggerConfiguration = void 0;
3
+ exports.resolveLoggerConfiguration = exports.resolveMonorepoLoggerConfiguration = void 0;
4
+ // Note that transports do not work in vitest, likely because pino attempts to run them in a separate worker
5
+ /* c8 ignore next 24 */
6
+ function resolveMonorepoLoggerConfiguration(appConfig) {
7
+ if (appConfig.nodeEnv !== 'development') {
8
+ return resolveLoggerConfiguration(appConfig);
9
+ }
10
+ return {
11
+ level: appConfig.logLevel,
12
+ formatters: {
13
+ level: (label) => {
14
+ return { level: label };
15
+ },
16
+ },
17
+ transport: {
18
+ target: 'pino/file',
19
+ options: {
20
+ destination: appConfig.targetFile ?? './service.log',
21
+ mkdir: true,
22
+ append: appConfig.append ?? false,
23
+ },
24
+ },
25
+ };
26
+ }
27
+ exports.resolveMonorepoLoggerConfiguration = resolveMonorepoLoggerConfiguration;
4
28
  function resolveLoggerConfiguration(appConfig) {
5
29
  const config = {
6
30
  level: appConfig.logLevel,
@@ -1 +1 @@
1
- {"version":3,"file":"loggerConfigResolver.js","sourceRoot":"","sources":["../../../src/logging/loggerConfigResolver.ts"],"names":[],"mappings":";;;AAOA,SAAgB,0BAA0B,CAAC,SAA0B;IACnE,MAAM,MAAM,GAAkB;QAC5B,KAAK,EAAE,SAAS,CAAC,QAAQ;QACzB,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACzB,CAAC;SACF;KACF,CAAA;IACD,IAAI,SAAS,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG;YACjB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,cAAc;gBAC7B,MAAM,EAAE,cAAc;aACvB;SACF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AApBD,gEAoBC"}
1
+ {"version":3,"file":"loggerConfigResolver.js","sourceRoot":"","sources":["../../../src/logging/loggerConfigResolver.ts"],"names":[],"mappings":";;;AAYA,4GAA4G;AAC5G,uBAAuB;AACvB,SAAgB,kCAAkC,CAChD,SAAkC;IAElC,IAAI,SAAS,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QACxC,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,QAAQ;QACzB,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACzB,CAAC;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE;gBACP,WAAW,EAAE,SAAS,CAAC,UAAU,IAAI,eAAe;gBACpD,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK;aAClC;SACF;KACF,CAAA;AACH,CAAC;AAvBD,gFAuBC;AAED,SAAgB,0BAA0B,CAAC,SAA0B;IACnE,MAAM,MAAM,GAAkB;QAC5B,KAAK,EAAE,SAAS,CAAC,QAAQ;QACzB,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACzB,CAAC;SACF;KACF,CAAA;IACD,IAAI,SAAS,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG;YACjB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,cAAc;gBAC7B,MAAM,EAAE,cAAc;aACvB;SACF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AApBD,gEAoBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/node-core",
3
- "version": "9.2.0",
3
+ "version": "9.3.0",
4
4
  "author": {
5
5
  "name": "Lokalise",
6
6
  "url": "https://lokalise.com/"