@naturalcycles/nodejs-lib 12.39.0 → 12.43.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/CHANGELOG.md +28 -0
- package/dist/colors/colors.d.ts +1 -0
- package/dist/colors/colors.js +10 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +7 -3
- package/dist/stream/transform/transformLogProgress.js +2 -1
- package/dist/validation/joi/joi.shared.schemas.d.ts +3 -0
- package/dist/validation/joi/joi.shared.schemas.js +11 -1
- package/dist/validation/joi/joi.validation.error.d.ts +5 -0
- package/dist/validation/joi/joi.validation.util.js +3 -2
- package/package.json +2 -1
- package/src/colors/colors.ts +6 -0
- package/src/index.ts +6 -0
- package/src/stream/transform/transformLogProgress.ts +2 -1
- package/src/validation/joi/joi.shared.schemas.ts +13 -0
- package/src/validation/joi/joi.validation.error.ts +5 -0
- package/src/validation/joi/joi.validation.util.ts +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
# [12.43.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.42.0...v12.43.0) (2021-10-20)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* hasColors, transformLogProgress to use it ([d5f7244](https://github.com/NaturalCycles/nodejs-lib/commit/d5f724488a8ee3239cf49c29ec9f9ffad5b95340))
|
|
7
|
+
|
|
8
|
+
# [12.42.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.41.0...v12.42.0) (2021-10-19)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* JoiValidationError to include full `annotation` ([c17756e](https://github.com/NaturalCycles/nodejs-lib/commit/c17756e1f8760987e62f6bee35f72fe7449b5671))
|
|
14
|
+
|
|
15
|
+
# [12.41.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.40.0...v12.41.0) (2021-10-18)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* increase joiError length from 1000 to 2000 characters ([1c40dce](https://github.com/NaturalCycles/nodejs-lib/commit/1c40dce8dadc46d63b84f46f4c67546bd703ac7e))
|
|
21
|
+
|
|
22
|
+
# [12.40.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.39.0...v12.40.0) (2021-10-15)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* export baseDBEntitySchema, savedDBEntitySchema ([f4644ad](https://github.com/NaturalCycles/nodejs-lib/commit/f4644ad25aed0021fad5b9091e9e10cec6884e53))
|
|
28
|
+
|
|
1
29
|
# [12.39.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.38.0...v12.39.0) (2021-10-11)
|
|
2
30
|
|
|
3
31
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function hasColors(): boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasColors = void 0;
|
|
4
|
+
const supporsColorLib = require('supports-color');
|
|
5
|
+
function hasColors() {
|
|
6
|
+
if (process.env['NO_COLOR'])
|
|
7
|
+
return false; // https://no-color.org/
|
|
8
|
+
return !!supporsColorLib.stdout;
|
|
9
|
+
}
|
|
10
|
+
exports.hasColors = hasColors;
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { Debug, DebugLogLevel, IDebug, IDebugger } from './log/debug';
|
|
|
11
11
|
import { base64ToBuffer, base64ToString, bufferToBase64, hash, md5, stringToBase64 } from './security/hash.util';
|
|
12
12
|
import { ALPHABET_ALPHANUMERIC, ALPHABET_ALPHANUMERIC_LOWERCASE, ALPHABET_ALPHANUMERIC_UPPERCASE, ALPHABET_LOWERCASE, ALPHABET_NUMBER, ALPHABET_UPPERCASE, stringId, stringIdAsync, stringIdUnsafe } from './security/id.util';
|
|
13
13
|
import { getSecretMap, loadSecretsFromEnv, loadSecretsFromJsonFile, removeSecretsFromEnv, secret, secretOptional, setSecretMap } from './security/secret.util';
|
|
14
|
+
import { hasColors } from './colors/colors';
|
|
14
15
|
import { slackDefaultMessagePrefixHook, SlackService } from './slack/slack.service';
|
|
15
16
|
import { SlackApiBody, SlackMessage, SlackMessagePrefixHook, SlackMessageProps, SlackServiceCfg } from './slack/slack.service.model';
|
|
16
17
|
import { NDJsonStats } from './stream/ndjson/ndjson.model';
|
|
@@ -59,8 +60,8 @@ import { AjvValidationError, AjvValidationErrorData } from './validation/ajv/ajv
|
|
|
59
60
|
import { getAjv } from './validation/ajv/getAjv';
|
|
60
61
|
import { ExtendedJoi, Joi } from './validation/joi/joi.extensions';
|
|
61
62
|
import { AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, NumberSchemaTyped, ObjectSchemaTyped, SchemaTyped, StringSchemaTyped } from './validation/joi/joi.model';
|
|
62
|
-
import { anyObjectSchema, anySchema, arraySchema, oneOfSchema, binarySchema, booleanDefaultToFalseSchema, booleanSchema, dateStringSchema, emailSchema, idSchema, integerSchema, ipAddressSchema, numberSchema, objectSchema, percentageSchema, semVerSchema, SEM_VER_PATTERN, slugSchema, stringSchema, unixTimestampSchema, urlSchema, userAgentSchema, utcOffsetSchema, verSchema } from './validation/joi/joi.shared.schemas';
|
|
63
|
+
import { anyObjectSchema, anySchema, arraySchema, oneOfSchema, binarySchema, booleanDefaultToFalseSchema, booleanSchema, dateStringSchema, emailSchema, baseDBEntitySchema, savedDBEntitySchema, idSchema, integerSchema, ipAddressSchema, numberSchema, objectSchema, percentageSchema, semVerSchema, SEM_VER_PATTERN, slugSchema, stringSchema, unixTimestampSchema, urlSchema, userAgentSchema, utcOffsetSchema, verSchema } from './validation/joi/joi.shared.schemas';
|
|
63
64
|
import { JoiValidationError, JoiValidationErrorData } from './validation/joi/joi.validation.error';
|
|
64
65
|
import { convert, getValidationResult, isValid, JoiValidationResult, undefinedIfInvalid, validate } from './validation/joi/joi.validation.util';
|
|
65
66
|
export type { JoiValidationErrorData, JoiValidationResult, ValidationErrorItem, ExtendedJoi, SchemaTyped, AnySchema, AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, NumberSchemaTyped, ObjectSchemaTyped, StringSchemaTyped, IDebug, IDebugger, SlackServiceCfg, SlackMessage, SlackMessageProps, SlackApiBody, SlackMessagePrefixHook, ReadableTyped, WritableTyped, TransformTyped, PipelineFromNDJsonFileOptions, PipelineToNDJsonFileOptions, TransformJsonParseOptions, TransformToNDJsonOptions, TransformMapOptions, TransformMapSyncOptions, NDJSONStreamForEachOptions, TransformOptions, TransformLogProgressOptions, TransformMultiThreadedOptions, WorkerClassInterface, WorkerInput, WorkerOutput, TableDiffOptions, InspectAnyOptions, Got, GetGotOptions, AfterResponseHook, BeforeErrorHook, BeforeRequestHook, AjvValidationOptions, AjvSchemaCfg, AjvValidationErrorData, };
|
|
66
|
-
export { JoiValidationError, validate, getValidationResult, isValid, undefinedIfInvalid, convert, Joi, booleanSchema, booleanDefaultToFalseSchema, stringSchema, numberSchema, integerSchema, percentageSchema, dateStringSchema, arraySchema, binarySchema, objectSchema, oneOfSchema, anySchema, anyObjectSchema, idSchema, unixTimestampSchema, verSchema, emailSchema, SEM_VER_PATTERN, semVerSchema, userAgentSchema, utcOffsetSchema, ipAddressSchema, slugSchema, urlSchema, processSharedUtil, zipBuffer, gzipBuffer, unzipBuffer, gunzipBuffer, zipString, gzipString, unzipToString, gunzipToString, requireEnvKeys, requireFileToExist, LRUMemoCache, stringId, stringIdAsync, stringIdUnsafe, ALPHABET_NUMBER, ALPHABET_LOWERCASE, ALPHABET_UPPERCASE, ALPHABET_ALPHANUMERIC_LOWERCASE, ALPHABET_ALPHANUMERIC_UPPERCASE, ALPHABET_ALPHANUMERIC, md5, hash, stringToBase64, base64ToString, bufferToBase64, base64ToBuffer, Debug, DebugLogLevel, getSecretMap, setSecretMap, loadSecretsFromEnv, loadSecretsFromJsonFile, removeSecretsFromEnv, secret, secretOptional, memoryUsage, memoryUsageFull, SlackService, slackDefaultMessagePrefixHook, readableCreate, readableFrom, readableFromArray, readableToArray, readableForEach, readableForEachSync, readableMap, readableMapToArray, _pipeline, transformBuffer, ndJsonFileRead, ndJsonFileWrite, ndjsonStreamForEach, pipelineFromNDJsonFile, pipelineToNDJsonFile, NDJsonStats, streamToNDJsonFile, transformJsonParse, bufferReviver, transformToNDJson, transformFilter, transformFilterSync, transformMap, transformMapSync, transformMapSimple, transformNoOp, writableForEach, writablePushToArray, transformSplit, transformToString, transformToArray, transformTap, transformLogProgress, transformLimit, writableVoid, writableFork, transformMultiThreaded, BaseWorkerClass, tableDiff, inspectAny, getGot, HTTPError, TimeoutError, _chunkBuffer, Ajv, getAjv, AjvSchema, AjvValidationError, readJsonSchemas, readAjvSchemas, };
|
|
67
|
+
export { JoiValidationError, validate, getValidationResult, isValid, undefinedIfInvalid, convert, Joi, booleanSchema, booleanDefaultToFalseSchema, stringSchema, numberSchema, integerSchema, percentageSchema, dateStringSchema, arraySchema, binarySchema, objectSchema, oneOfSchema, anySchema, anyObjectSchema, baseDBEntitySchema, savedDBEntitySchema, idSchema, unixTimestampSchema, verSchema, emailSchema, SEM_VER_PATTERN, semVerSchema, userAgentSchema, utcOffsetSchema, ipAddressSchema, slugSchema, urlSchema, processSharedUtil, zipBuffer, gzipBuffer, unzipBuffer, gunzipBuffer, zipString, gzipString, unzipToString, gunzipToString, requireEnvKeys, requireFileToExist, LRUMemoCache, stringId, stringIdAsync, stringIdUnsafe, ALPHABET_NUMBER, ALPHABET_LOWERCASE, ALPHABET_UPPERCASE, ALPHABET_ALPHANUMERIC_LOWERCASE, ALPHABET_ALPHANUMERIC_UPPERCASE, ALPHABET_ALPHANUMERIC, md5, hash, stringToBase64, base64ToString, bufferToBase64, base64ToBuffer, Debug, DebugLogLevel, getSecretMap, setSecretMap, loadSecretsFromEnv, loadSecretsFromJsonFile, removeSecretsFromEnv, secret, secretOptional, memoryUsage, memoryUsageFull, SlackService, slackDefaultMessagePrefixHook, readableCreate, readableFrom, readableFromArray, readableToArray, readableForEach, readableForEachSync, readableMap, readableMapToArray, _pipeline, transformBuffer, ndJsonFileRead, ndJsonFileWrite, ndjsonStreamForEach, pipelineFromNDJsonFile, pipelineToNDJsonFile, NDJsonStats, streamToNDJsonFile, transformJsonParse, bufferReviver, transformToNDJson, transformFilter, transformFilterSync, transformMap, transformMapSync, transformMapSimple, transformNoOp, writableForEach, writablePushToArray, transformSplit, transformToString, transformToArray, transformTap, transformLogProgress, transformLimit, writableVoid, writableFork, transformMultiThreaded, BaseWorkerClass, tableDiff, inspectAny, getGot, HTTPError, TimeoutError, _chunkBuffer, Ajv, getAjv, AjvSchema, AjvValidationError, readJsonSchemas, readAjvSchemas, hasColors, };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.readAjvSchemas = exports.readJsonSchemas = exports.AjvValidationError = exports.AjvSchema = exports.getAjv = exports.Ajv = exports._chunkBuffer = exports.TimeoutError = exports.HTTPError = exports.getGot = exports.inspectAny = exports.tableDiff = exports.BaseWorkerClass = exports.transformMultiThreaded = exports.writableFork = exports.writableVoid = exports.transformLimit = exports.transformLogProgress = exports.transformTap = exports.transformToArray = exports.transformToString = void 0;
|
|
3
|
+
exports.ALPHABET_LOWERCASE = exports.ALPHABET_NUMBER = exports.stringIdUnsafe = exports.stringIdAsync = exports.stringId = exports.LRUMemoCache = exports.requireFileToExist = exports.requireEnvKeys = exports.gunzipToString = exports.unzipToString = exports.gzipString = exports.zipString = exports.gunzipBuffer = exports.unzipBuffer = exports.gzipBuffer = exports.zipBuffer = exports.processSharedUtil = exports.urlSchema = exports.slugSchema = exports.ipAddressSchema = exports.utcOffsetSchema = exports.userAgentSchema = exports.semVerSchema = exports.SEM_VER_PATTERN = exports.emailSchema = exports.verSchema = exports.unixTimestampSchema = exports.idSchema = exports.savedDBEntitySchema = exports.baseDBEntitySchema = exports.anyObjectSchema = exports.anySchema = exports.oneOfSchema = exports.objectSchema = exports.binarySchema = exports.arraySchema = exports.dateStringSchema = exports.percentageSchema = exports.integerSchema = exports.numberSchema = exports.stringSchema = exports.booleanDefaultToFalseSchema = exports.booleanSchema = exports.Joi = exports.convert = exports.undefinedIfInvalid = exports.isValid = exports.getValidationResult = exports.validate = exports.JoiValidationError = void 0;
|
|
4
|
+
exports.writableForEach = exports.transformNoOp = exports.transformMapSimple = exports.transformMapSync = exports.transformMap = exports.transformFilterSync = exports.transformFilter = exports.transformToNDJson = exports.bufferReviver = exports.transformJsonParse = exports.streamToNDJsonFile = exports.NDJsonStats = exports.pipelineToNDJsonFile = exports.pipelineFromNDJsonFile = exports.ndjsonStreamForEach = exports.ndJsonFileWrite = exports.ndJsonFileRead = exports.transformBuffer = exports._pipeline = exports.readableMapToArray = exports.readableMap = exports.readableForEachSync = exports.readableForEach = exports.readableToArray = exports.readableFromArray = exports.readableFrom = exports.readableCreate = exports.slackDefaultMessagePrefixHook = exports.SlackService = exports.memoryUsageFull = exports.memoryUsage = exports.secretOptional = exports.secret = exports.removeSecretsFromEnv = exports.loadSecretsFromJsonFile = exports.loadSecretsFromEnv = exports.setSecretMap = exports.getSecretMap = exports.DebugLogLevel = exports.Debug = exports.base64ToBuffer = exports.bufferToBase64 = exports.base64ToString = exports.stringToBase64 = exports.hash = exports.md5 = exports.ALPHABET_ALPHANUMERIC = exports.ALPHABET_ALPHANUMERIC_UPPERCASE = exports.ALPHABET_ALPHANUMERIC_LOWERCASE = exports.ALPHABET_UPPERCASE = void 0;
|
|
5
|
+
exports.hasColors = exports.readAjvSchemas = exports.readJsonSchemas = exports.AjvValidationError = exports.AjvSchema = exports.getAjv = exports.Ajv = exports._chunkBuffer = exports.TimeoutError = exports.HTTPError = exports.getGot = exports.inspectAny = exports.tableDiff = exports.BaseWorkerClass = exports.transformMultiThreaded = exports.writableFork = exports.writableVoid = exports.transformLimit = exports.transformLogProgress = exports.transformTap = exports.transformToArray = exports.transformToString = exports.transformSplit = exports.writablePushToArray = void 0;
|
|
6
6
|
const ajv_1 = require("ajv");
|
|
7
7
|
exports.Ajv = ajv_1.default;
|
|
8
8
|
const got_1 = require("got");
|
|
@@ -46,6 +46,8 @@ Object.defineProperty(exports, "removeSecretsFromEnv", { enumerable: true, get:
|
|
|
46
46
|
Object.defineProperty(exports, "secret", { enumerable: true, get: function () { return secret_util_1.secret; } });
|
|
47
47
|
Object.defineProperty(exports, "secretOptional", { enumerable: true, get: function () { return secret_util_1.secretOptional; } });
|
|
48
48
|
Object.defineProperty(exports, "setSecretMap", { enumerable: true, get: function () { return secret_util_1.setSecretMap; } });
|
|
49
|
+
const colors_1 = require("./colors/colors");
|
|
50
|
+
Object.defineProperty(exports, "hasColors", { enumerable: true, get: function () { return colors_1.hasColors; } });
|
|
49
51
|
const slack_service_1 = require("./slack/slack.service");
|
|
50
52
|
Object.defineProperty(exports, "slackDefaultMessagePrefixHook", { enumerable: true, get: function () { return slack_service_1.slackDefaultMessagePrefixHook; } });
|
|
51
53
|
Object.defineProperty(exports, "SlackService", { enumerable: true, get: function () { return slack_service_1.SlackService; } });
|
|
@@ -158,6 +160,8 @@ Object.defineProperty(exports, "booleanDefaultToFalseSchema", { enumerable: true
|
|
|
158
160
|
Object.defineProperty(exports, "booleanSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.booleanSchema; } });
|
|
159
161
|
Object.defineProperty(exports, "dateStringSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.dateStringSchema; } });
|
|
160
162
|
Object.defineProperty(exports, "emailSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.emailSchema; } });
|
|
163
|
+
Object.defineProperty(exports, "baseDBEntitySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.baseDBEntitySchema; } });
|
|
164
|
+
Object.defineProperty(exports, "savedDBEntitySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.savedDBEntitySchema; } });
|
|
161
165
|
Object.defineProperty(exports, "idSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.idSchema; } });
|
|
162
166
|
Object.defineProperty(exports, "integerSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.integerSchema; } });
|
|
163
167
|
Object.defineProperty(exports, "ipAddressSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.ipAddressSchema; } });
|
|
@@ -6,8 +6,9 @@ const util_1 = require("util");
|
|
|
6
6
|
const js_lib_1 = require("@naturalcycles/js-lib");
|
|
7
7
|
const time_lib_1 = require("@naturalcycles/time-lib");
|
|
8
8
|
const colors_1 = require("../../colors");
|
|
9
|
+
const colors_2 = require("../../colors/colors");
|
|
9
10
|
const inspectOpt = {
|
|
10
|
-
colors:
|
|
11
|
+
colors: (0, colors_2.hasColors)(),
|
|
11
12
|
breakLength: 300,
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SavedDBEntity } from '@naturalcycles/js-lib';
|
|
1
2
|
import { AlternativesSchemaTyped, AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, ObjectSchemaTyped, StringSchemaTyped } from './joi.model';
|
|
2
3
|
export declare const booleanSchema: BooleanSchemaTyped;
|
|
3
4
|
export declare const booleanDefaultToFalseSchema: BooleanSchemaTyped;
|
|
@@ -42,3 +43,5 @@ export declare const semVerSchema: import("./string.extensions").ExtendedStringS
|
|
|
42
43
|
export declare const userAgentSchema: import("./string.extensions").ExtendedStringSchema;
|
|
43
44
|
export declare const utcOffsetSchema: import("./number.extensions").ExtendedNumberSchema;
|
|
44
45
|
export declare const ipAddressSchema: import("./string.extensions").ExtendedStringSchema;
|
|
46
|
+
export declare const baseDBEntitySchema: ObjectSchemaTyped<Partial<SavedDBEntity>, Partial<SavedDBEntity>>;
|
|
47
|
+
export declare const savedDBEntitySchema: ObjectSchemaTyped<SavedDBEntity, SavedDBEntity>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ipAddressSchema = exports.utcOffsetSchema = exports.userAgentSchema = exports.semVerSchema = exports.SEM_VER_PATTERN = exports.emailSchema = exports.verSchema = exports.unixTimestampSchema = exports.slugSchema = exports.SLUG_PATTERN = exports.idSchema = exports.anyObjectSchema = exports.anySchema = exports.oneOfSchema = exports.objectSchema = exports.arraySchema = exports.urlSchema = exports.binarySchema = exports.dateStringSchema = exports.percentageSchema = exports.integerSchema = exports.numberSchema = exports.stringSchema = exports.booleanDefaultToFalseSchema = exports.booleanSchema = void 0;
|
|
3
|
+
exports.savedDBEntitySchema = exports.baseDBEntitySchema = exports.ipAddressSchema = exports.utcOffsetSchema = exports.userAgentSchema = exports.semVerSchema = exports.SEM_VER_PATTERN = exports.emailSchema = exports.verSchema = exports.unixTimestampSchema = exports.slugSchema = exports.SLUG_PATTERN = exports.idSchema = exports.anyObjectSchema = exports.anySchema = exports.oneOfSchema = exports.objectSchema = exports.arraySchema = exports.urlSchema = exports.binarySchema = exports.dateStringSchema = exports.percentageSchema = exports.integerSchema = exports.numberSchema = exports.stringSchema = exports.booleanDefaultToFalseSchema = exports.booleanSchema = void 0;
|
|
4
4
|
const joi_extensions_1 = require("./joi.extensions");
|
|
5
5
|
exports.booleanSchema = joi_extensions_1.Joi.boolean();
|
|
6
6
|
exports.booleanDefaultToFalseSchema = joi_extensions_1.Joi.boolean().default(false);
|
|
@@ -65,3 +65,13 @@ exports.utcOffsetSchema = exports.numberSchema
|
|
|
65
65
|
.max(14 * 60)
|
|
66
66
|
.dividable(15);
|
|
67
67
|
exports.ipAddressSchema = exports.stringSchema.ip();
|
|
68
|
+
exports.baseDBEntitySchema = objectSchema({
|
|
69
|
+
id: exports.stringSchema.optional(),
|
|
70
|
+
created: exports.unixTimestampSchema.optional(),
|
|
71
|
+
updated: exports.unixTimestampSchema.optional(),
|
|
72
|
+
});
|
|
73
|
+
exports.savedDBEntitySchema = objectSchema({
|
|
74
|
+
id: exports.stringSchema,
|
|
75
|
+
created: exports.unixTimestampSchema,
|
|
76
|
+
updated: exports.unixTimestampSchema,
|
|
77
|
+
});
|
|
@@ -14,6 +14,11 @@ export interface JoiValidationErrorData extends ErrorData {
|
|
|
14
14
|
joiValidationErrorItems: ValidationErrorItem[];
|
|
15
15
|
joiValidationObjectName?: string;
|
|
16
16
|
joiValidationObjectId?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Error "annotation" is stripped in Error.message.
|
|
19
|
+
* This field contains the "full" annotation.
|
|
20
|
+
*/
|
|
21
|
+
annotation?: string;
|
|
17
22
|
}
|
|
18
23
|
export declare class JoiValidationError extends AppError<JoiValidationErrorData> {
|
|
19
24
|
constructor(message: string, data: JoiValidationErrorData);
|
|
@@ -110,9 +110,9 @@ function createError(value, err, objectName) {
|
|
|
110
110
|
tokens.push('Invalid ' + [objectName, objectId].filter(Boolean).join('.'));
|
|
111
111
|
}
|
|
112
112
|
const annotation = err.annotate(stripColors);
|
|
113
|
-
if (annotation.length >
|
|
113
|
+
if (annotation.length > 4000) {
|
|
114
114
|
// Annotation message is too big and will be replaced by stringified `error.details` instead
|
|
115
|
-
tokens.push(
|
|
115
|
+
tokens.push((0, js_lib_1._truncateMiddle)(annotation, 4000, `\n... ${(0, js_lib_1._hb)(annotation.length)} message truncated ...\n`));
|
|
116
116
|
// Up to 5 `details`
|
|
117
117
|
tokens.push(...err.details.slice(0, 5).map(i => `${i.message} @ .${i.path.join('.')}`));
|
|
118
118
|
if (err.details.length > 5)
|
|
@@ -126,5 +126,6 @@ function createError(value, err, objectName) {
|
|
|
126
126
|
joiValidationErrorItems: err.details,
|
|
127
127
|
...(objectName && { joiValidationObjectName: objectName }),
|
|
128
128
|
...(objectId && { joiValidationObjectId: objectId }),
|
|
129
|
+
annotation,
|
|
129
130
|
});
|
|
130
131
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturalcycles/nodejs-lib",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.43.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"prepare": "husky install",
|
|
6
6
|
"docs-serve": "vuepress dev docs",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"lru-cache": "^6.0.0",
|
|
37
37
|
"move-file": "^2.0.0",
|
|
38
38
|
"nanoid": "^3.0.0",
|
|
39
|
+
"supports-color": "^8.0.0",
|
|
39
40
|
"through2-concurrent": "^2.0.0",
|
|
40
41
|
"yargs": "^17.0.0"
|
|
41
42
|
},
|
package/src/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
secretOptional,
|
|
37
37
|
setSecretMap,
|
|
38
38
|
} from './security/secret.util'
|
|
39
|
+
import { hasColors } from './colors/colors'
|
|
39
40
|
import { slackDefaultMessagePrefixHook, SlackService } from './slack/slack.service'
|
|
40
41
|
import {
|
|
41
42
|
SlackApiBody,
|
|
@@ -141,6 +142,8 @@ import {
|
|
|
141
142
|
booleanSchema,
|
|
142
143
|
dateStringSchema,
|
|
143
144
|
emailSchema,
|
|
145
|
+
baseDBEntitySchema,
|
|
146
|
+
savedDBEntitySchema,
|
|
144
147
|
idSchema,
|
|
145
148
|
integerSchema,
|
|
146
149
|
ipAddressSchema,
|
|
@@ -236,6 +239,8 @@ export {
|
|
|
236
239
|
oneOfSchema,
|
|
237
240
|
anySchema,
|
|
238
241
|
anyObjectSchema,
|
|
242
|
+
baseDBEntitySchema,
|
|
243
|
+
savedDBEntitySchema,
|
|
239
244
|
idSchema,
|
|
240
245
|
unixTimestampSchema,
|
|
241
246
|
verSchema,
|
|
@@ -337,4 +342,5 @@ export {
|
|
|
337
342
|
AjvValidationError,
|
|
338
343
|
readJsonSchemas,
|
|
339
344
|
readAjvSchemas,
|
|
345
|
+
hasColors,
|
|
340
346
|
}
|
|
@@ -3,6 +3,7 @@ import { inspect, InspectOptions } from 'util'
|
|
|
3
3
|
import { SimpleMovingAverage, _mb, _since } from '@naturalcycles/js-lib'
|
|
4
4
|
import { dayjs } from '@naturalcycles/time-lib'
|
|
5
5
|
import { boldWhite, dimGrey, white, yellow } from '../../colors'
|
|
6
|
+
import { hasColors } from '../../colors/colors'
|
|
6
7
|
import { TransformOptions, TransformTyped } from '../stream.model'
|
|
7
8
|
|
|
8
9
|
export interface TransformLogProgressOptions<IN = any> extends TransformOptions {
|
|
@@ -94,7 +95,7 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
|
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
const inspectOpt: InspectOptions = {
|
|
97
|
-
colors:
|
|
98
|
+
colors: hasColors(),
|
|
98
99
|
breakLength: 300,
|
|
99
100
|
}
|
|
100
101
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BaseDBEntity, SavedDBEntity } from '@naturalcycles/js-lib'
|
|
1
2
|
import { Joi } from './joi.extensions'
|
|
2
3
|
import {
|
|
3
4
|
AlternativesSchemaTyped,
|
|
@@ -87,3 +88,15 @@ export const utcOffsetSchema = numberSchema
|
|
|
87
88
|
.dividable(15)
|
|
88
89
|
|
|
89
90
|
export const ipAddressSchema = stringSchema.ip()
|
|
91
|
+
|
|
92
|
+
export const baseDBEntitySchema = objectSchema<BaseDBEntity>({
|
|
93
|
+
id: stringSchema.optional(),
|
|
94
|
+
created: unixTimestampSchema.optional(),
|
|
95
|
+
updated: unixTimestampSchema.optional(),
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
export const savedDBEntitySchema = objectSchema<SavedDBEntity>({
|
|
99
|
+
id: stringSchema,
|
|
100
|
+
created: unixTimestampSchema,
|
|
101
|
+
updated: unixTimestampSchema,
|
|
102
|
+
})
|
|
@@ -15,6 +15,11 @@ export interface JoiValidationErrorData extends ErrorData {
|
|
|
15
15
|
joiValidationErrorItems: ValidationErrorItem[]
|
|
16
16
|
joiValidationObjectName?: string
|
|
17
17
|
joiValidationObjectId?: string
|
|
18
|
+
/**
|
|
19
|
+
* Error "annotation" is stripped in Error.message.
|
|
20
|
+
* This field contains the "full" annotation.
|
|
21
|
+
*/
|
|
22
|
+
annotation?: string
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
export class JoiValidationError extends AppError<JoiValidationErrorData> {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* "Converts" mean e.g trims all strings from leading/trailing spaces.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { _isObject } from '@naturalcycles/js-lib'
|
|
9
|
+
import { _hb, _isObject, _truncateMiddle } from '@naturalcycles/js-lib'
|
|
10
10
|
import { ValidationError, ValidationOptions } from 'joi'
|
|
11
11
|
import { AnySchemaTyped } from './joi.model'
|
|
12
12
|
import { JoiValidationError } from './joi.validation.error'
|
|
@@ -146,11 +146,11 @@ function createError(value: any, err: ValidationError, objectName?: string): Joi
|
|
|
146
146
|
|
|
147
147
|
const annotation = err.annotate(stripColors)
|
|
148
148
|
|
|
149
|
-
if (annotation.length >
|
|
149
|
+
if (annotation.length > 4000) {
|
|
150
150
|
// Annotation message is too big and will be replaced by stringified `error.details` instead
|
|
151
|
+
|
|
151
152
|
tokens.push(
|
|
152
|
-
annotation
|
|
153
|
-
`... ${Math.ceil(annotation.length / 1024)} KB message truncated`,
|
|
153
|
+
_truncateMiddle(annotation, 4000, `\n... ${_hb(annotation.length)} message truncated ...\n`),
|
|
154
154
|
)
|
|
155
155
|
|
|
156
156
|
// Up to 5 `details`
|
|
@@ -167,5 +167,6 @@ function createError(value: any, err: ValidationError, objectName?: string): Joi
|
|
|
167
167
|
joiValidationErrorItems: err.details,
|
|
168
168
|
...(objectName && { joiValidationObjectName: objectName }),
|
|
169
169
|
...(objectId && { joiValidationObjectId: objectId }),
|
|
170
|
+
annotation,
|
|
170
171
|
})
|
|
171
172
|
}
|