@naturalcycles/nodejs-lib 15.32.0 → 15.33.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.
@@ -1,4 +1,4 @@
1
- import type { AnyObject, BaseDBEntity, IANATimezone, IsoDate, IsoDateTime, NumberEnum, StringEnum, UnixTimestamp, UnixTimestampMillis } from '@naturalcycles/js-lib/types';
1
+ import type { AnyObject, BaseDBEntity, IANATimezone, IsoDate, IsoDateTime, NumberEnum, StringEnum, StringMap, UnixTimestamp, UnixTimestampMillis } from '@naturalcycles/js-lib/types';
2
2
  import type { AlternativesSchema, AnySchema, ArraySchema, ObjectSchema } from 'joi';
3
3
  import type { NumberSchema } from './number.extensions.js';
4
4
  import type { StringSchema } from './string.extensions.js';
@@ -34,12 +34,13 @@ export declare const numberEnumValueSchema: <ENUM extends NumberEnum>(en: ENUM)
34
34
  export declare const numberEnumKeySchema: <ENUM extends NumberEnum>(en: ENUM) => StringSchema;
35
35
  export declare const urlSchema: (scheme?: string | string[]) => StringSchema;
36
36
  export declare function arraySchema<T>(items: AnySchema<T>): ArraySchema<T[]>;
37
+ export declare function anyObjectSchema<T extends AnyObject>(): ObjectSchema<T>;
37
38
  export declare function objectSchema<T extends AnyObject>(schema: {
38
39
  [key in keyof Partial<T>]: AnySchema<T[key]>;
39
40
  }): ObjectSchema<T>;
41
+ export declare function stringMapSchema<T>(key: AnySchema, value: AnySchema<T>): ObjectSchema<StringMap<T>>;
40
42
  export declare function oneOfSchema<T = any>(...schemas: AnySchema[]): AlternativesSchema<T>;
41
43
  export declare const anySchema: AnySchema<any>;
42
- export declare const anyObjectSchema: ObjectSchema;
43
44
  export declare const BASE62_REGEX: RegExp;
44
45
  export declare const BASE64_REGEX: RegExp;
45
46
  export declare const BASE64URL_REGEX: RegExp;
@@ -39,14 +39,19 @@ export const urlSchema = (scheme = 'https') => Joi.string().uri({ scheme });
39
39
  export function arraySchema(items) {
40
40
  return Joi.array().items(items);
41
41
  }
42
+ export function anyObjectSchema() {
43
+ return Joi.object().options({ stripUnknown: false });
44
+ }
42
45
  export function objectSchema(schema) {
43
46
  return Joi.object(schema);
44
47
  }
48
+ export function stringMapSchema(key, value) {
49
+ return Joi.object().pattern(key, value);
50
+ }
45
51
  export function oneOfSchema(...schemas) {
46
52
  return Joi.alternatives(schemas);
47
53
  }
48
54
  export const anySchema = Joi.any();
49
- export const anyObjectSchema = Joi.object().options({ stripUnknown: false });
50
55
  export const BASE62_REGEX = /^[a-zA-Z0-9]+$/;
51
56
  export const BASE64_REGEX = /^[a-zA-Z0-9+/]+={0,2}$/;
52
57
  export const BASE64URL_REGEX = /^[a-zA-Z0-9_-]+$/;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@naturalcycles/nodejs-lib",
3
3
  "type": "module",
4
- "version": "15.32.0",
4
+ "version": "15.33.0",
5
5
  "dependencies": {
6
6
  "@naturalcycles/js-lib": "^15",
7
7
  "@types/js-yaml": "^4",
@@ -12,6 +12,7 @@ import type {
12
12
  IsoDateTime,
13
13
  NumberEnum,
14
14
  StringEnum,
15
+ StringMap,
15
16
  UnixTimestamp,
16
17
  UnixTimestampMillis,
17
18
  } from '@naturalcycles/js-lib/types'
@@ -77,18 +78,28 @@ export function arraySchema<T>(items: AnySchema<T>): ArraySchema<T[]> {
77
78
  return Joi.array().items(items)
78
79
  }
79
80
 
81
+ export function anyObjectSchema<T extends AnyObject>(): ObjectSchema<T> {
82
+ return Joi.object().options({ stripUnknown: false })
83
+ }
84
+
80
85
  export function objectSchema<T extends AnyObject>(schema: {
81
86
  [key in keyof Partial<T>]: AnySchema<T[key]>
82
87
  }): ObjectSchema<T> {
83
88
  return Joi.object(schema)
84
89
  }
85
90
 
91
+ export function stringMapSchema<T>(
92
+ key: AnySchema,
93
+ value: AnySchema<T>,
94
+ ): ObjectSchema<StringMap<T>> {
95
+ return Joi.object().pattern(key, value)
96
+ }
97
+
86
98
  export function oneOfSchema<T = any>(...schemas: AnySchema[]): AlternativesSchema<T> {
87
99
  return Joi.alternatives(schemas)
88
100
  }
89
101
 
90
102
  export const anySchema = Joi.any()
91
- export const anyObjectSchema: ObjectSchema = Joi.object().options({ stripUnknown: false })
92
103
 
93
104
  export const BASE62_REGEX = /^[a-zA-Z0-9]+$/
94
105
  export const BASE64_REGEX = /^[a-zA-Z0-9+/]+={0,2}$/