@naturalcycles/nodejs-lib 15.78.1 → 15.78.2
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.
|
@@ -248,13 +248,13 @@ export declare class JsonSchemaObjectBuilder<IN extends AnyObject, OUT extends A
|
|
|
248
248
|
* When set, the validation will not strip away properties that are not specified explicitly in the schema.
|
|
249
249
|
*/
|
|
250
250
|
allowAdditionalProperties(): this;
|
|
251
|
-
extend<P extends Record<string, JsonSchemaAnyBuilder<any, any, any>>>(props: P): JsonSchemaObjectBuilder<RelaxIndexSignature<Override<IN, {
|
|
251
|
+
extend<P extends Record<string, JsonSchemaAnyBuilder<any, any, any>>>(props: P): JsonSchemaObjectBuilder<RelaxIndexSignature<OptionalDbEntityFields<Override<IN, {
|
|
252
252
|
[K in keyof P]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never;
|
|
253
|
-
}
|
|
253
|
+
}>>>, Override<OUT, {
|
|
254
254
|
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt> ? IsOpt extends true ? never : K : never]: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never;
|
|
255
255
|
} & {
|
|
256
256
|
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt> ? IsOpt extends true ? K : never : never]?: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never;
|
|
257
|
-
}
|
|
257
|
+
}>, false>;
|
|
258
258
|
/**
|
|
259
259
|
* Concatenates another schema to the current schema.
|
|
260
260
|
*
|
|
@@ -277,15 +277,15 @@ export declare class JsonSchemaObjectBuilder<IN extends AnyObject, OUT extends A
|
|
|
277
277
|
/**
|
|
278
278
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
279
279
|
*/
|
|
280
|
-
dbEntity(): JsonSchemaObjectBuilder<RelaxIndexSignature<Override<IN, {
|
|
280
|
+
dbEntity(): JsonSchemaObjectBuilder<RelaxIndexSignature<OptionalDbEntityFields<Override<IN, {
|
|
281
281
|
id?: string | undefined;
|
|
282
282
|
created?: any;
|
|
283
283
|
updated?: any;
|
|
284
|
-
}
|
|
284
|
+
}>>>, Override<OUT, {
|
|
285
285
|
id: string;
|
|
286
286
|
created: any;
|
|
287
287
|
updated: any;
|
|
288
|
-
} & {}
|
|
288
|
+
} & {}>, false>;
|
|
289
289
|
minProperties(minProperties: number): this;
|
|
290
290
|
maxProperties(maxProperties: number): this;
|
|
291
291
|
exclusiveProperties(propNames: readonly (keyof IN & string)[]): this;
|
|
@@ -421,7 +421,7 @@ declare function object<IN extends AnyObject>(props: {
|
|
|
421
421
|
}): JsonSchemaObjectBuilder<IN, IN, false>;
|
|
422
422
|
declare function objectInfer<P extends Record<string, JsonSchemaAnyBuilder<any, any, any>>>(props: P): JsonSchemaObjectInferringBuilder<P, false>;
|
|
423
423
|
declare function objectDbEntity(props: AnyObject): never;
|
|
424
|
-
declare function objectDbEntity<IN extends BaseDBEntity
|
|
424
|
+
declare function objectDbEntity<IN extends BaseDBEntity, EXTRA_KEYS extends Exclude<keyof IN, keyof BaseDBEntity> = Exclude<keyof IN, keyof BaseDBEntity>>(props: {
|
|
425
425
|
[K in EXTRA_KEYS]-?: BuilderFor<IN[K]>;
|
|
426
426
|
} & (ExactMatch<IN['id'], BaseDBEntity['id']> extends true ? {
|
|
427
427
|
id?: BuilderFor<BaseDBEntity['id']>;
|
|
@@ -456,18 +456,17 @@ type Expand<T> = {
|
|
|
456
456
|
type StripIndexSignatureDeep<T> = T extends readonly unknown[] ? T : T extends Record<string, any> ? {
|
|
457
457
|
[K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: StripIndexSignatureDeep<T[K]>;
|
|
458
458
|
} : T;
|
|
459
|
-
type RelaxIndexSignature<T> = T extends readonly unknown[] ? T : T extends AnyObject ?
|
|
459
|
+
type RelaxIndexSignature<T> = T extends readonly unknown[] ? T : T extends AnyObject ? {
|
|
460
460
|
[K in keyof T]: RelaxIndexSignature<T[K]>;
|
|
461
461
|
} : T;
|
|
462
462
|
type Override<T, U> = Omit<T, keyof U> & U;
|
|
463
463
|
declare const allowExtraKeysSymbol: unique symbol;
|
|
464
|
-
type AllowExtraKeys<T> = T & {
|
|
465
|
-
readonly [allowExtraKeysSymbol]?: true;
|
|
466
|
-
};
|
|
467
464
|
type HasAllowExtraKeys<T> = T extends {
|
|
468
465
|
readonly [allowExtraKeysSymbol]?: true;
|
|
469
466
|
} ? true : false;
|
|
470
|
-
type
|
|
467
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
468
|
+
type IsAssignableRelaxed<A, B> = IsAny<RelaxIndexSignature<A>> extends true ? true : [RelaxIndexSignature<A>] extends [B] ? true : false;
|
|
469
|
+
type OptionalDbEntityFields<T> = T extends BaseDBEntity ? Omit<T, keyof BaseDBEntity> & Partial<Pick<T, keyof BaseDBEntity>> : T;
|
|
471
470
|
type ExactMatchBase<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? (<T>() => T extends B ? 1 : 2) extends <T>() => T extends A ? 1 : 2 ? true : false : false;
|
|
472
471
|
type ExactMatch<A, B> = HasAllowExtraKeys<B> extends true ? IsAssignableRelaxed<B, A> : ExactMatchBase<Expand<A>, Expand<B>> extends true ? true : ExactMatchBase<Expand<StripIndexSignatureDeep<A>>, Expand<StripIndexSignatureDeep<B>>>;
|
|
473
472
|
type BuilderOutUnion<B extends readonly JsonSchemaAnyBuilder<any, any, any>[]> = {
|
package/package.json
CHANGED
|
@@ -870,35 +870,33 @@ export class JsonSchemaObjectBuilder<
|
|
|
870
870
|
props: P,
|
|
871
871
|
): JsonSchemaObjectBuilder<
|
|
872
872
|
RelaxIndexSignature<
|
|
873
|
-
|
|
874
|
-
IN,
|
|
875
|
-
{
|
|
876
|
-
[K in keyof P]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never
|
|
877
|
-
}
|
|
878
|
-
>
|
|
879
|
-
>,
|
|
880
|
-
AllowExtraKeys<
|
|
881
|
-
RelaxIndexSignature<
|
|
873
|
+
OptionalDbEntityFields<
|
|
882
874
|
Override<
|
|
883
|
-
|
|
875
|
+
IN,
|
|
884
876
|
{
|
|
885
|
-
|
|
886
|
-
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
887
|
-
? IsOpt extends true
|
|
888
|
-
? never
|
|
889
|
-
: K
|
|
890
|
-
: never]: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
891
|
-
} & {
|
|
892
|
-
// optional keys
|
|
893
|
-
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
894
|
-
? IsOpt extends true
|
|
895
|
-
? K
|
|
896
|
-
: never
|
|
897
|
-
: never]?: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
877
|
+
[K in keyof P]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never
|
|
898
878
|
}
|
|
899
879
|
>
|
|
900
880
|
>
|
|
901
881
|
>,
|
|
882
|
+
Override<
|
|
883
|
+
OUT,
|
|
884
|
+
{
|
|
885
|
+
// required keys
|
|
886
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
887
|
+
? IsOpt extends true
|
|
888
|
+
? never
|
|
889
|
+
: K
|
|
890
|
+
: never]: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
891
|
+
} & {
|
|
892
|
+
// optional keys
|
|
893
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
894
|
+
? IsOpt extends true
|
|
895
|
+
? K
|
|
896
|
+
: never
|
|
897
|
+
: never]?: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
898
|
+
}
|
|
899
|
+
>,
|
|
902
900
|
false
|
|
903
901
|
> {
|
|
904
902
|
const newBuilder = new JsonSchemaObjectBuilder()
|
|
@@ -1299,7 +1297,7 @@ function objectInfer<P extends Record<string, JsonSchemaAnyBuilder<any, any, any
|
|
|
1299
1297
|
|
|
1300
1298
|
function objectDbEntity(props: AnyObject): never
|
|
1301
1299
|
function objectDbEntity<
|
|
1302
|
-
IN extends BaseDBEntity
|
|
1300
|
+
IN extends BaseDBEntity,
|
|
1303
1301
|
EXTRA_KEYS extends Exclude<keyof IN, keyof BaseDBEntity> = Exclude<keyof IN, keyof BaseDBEntity>,
|
|
1304
1302
|
>(
|
|
1305
1303
|
props: {
|
|
@@ -1462,20 +1460,27 @@ type StripIndexSignatureDeep<T> = T extends readonly unknown[]
|
|
|
1462
1460
|
type RelaxIndexSignature<T> = T extends readonly unknown[]
|
|
1463
1461
|
? T
|
|
1464
1462
|
: T extends AnyObject
|
|
1465
|
-
?
|
|
1466
|
-
? any
|
|
1467
|
-
: { [K in keyof T]: RelaxIndexSignature<T[K]> }
|
|
1463
|
+
? { [K in keyof T]: RelaxIndexSignature<T[K]> }
|
|
1468
1464
|
: T
|
|
1469
1465
|
|
|
1470
1466
|
type Override<T, U> = Omit<T, keyof U> & U
|
|
1471
1467
|
|
|
1472
1468
|
declare const allowExtraKeysSymbol: unique symbol
|
|
1473
1469
|
|
|
1474
|
-
type AllowExtraKeys<T> = T & { readonly [allowExtraKeysSymbol]?: true }
|
|
1475
|
-
|
|
1476
1470
|
type HasAllowExtraKeys<T> = T extends { readonly [allowExtraKeysSymbol]?: true } ? true : false
|
|
1477
1471
|
|
|
1478
|
-
type
|
|
1472
|
+
type IsAny<T> = 0 extends 1 & T ? true : false
|
|
1473
|
+
|
|
1474
|
+
type IsAssignableRelaxed<A, B> =
|
|
1475
|
+
IsAny<RelaxIndexSignature<A>> extends true
|
|
1476
|
+
? true
|
|
1477
|
+
: [RelaxIndexSignature<A>] extends [B]
|
|
1478
|
+
? true
|
|
1479
|
+
: false
|
|
1480
|
+
|
|
1481
|
+
type OptionalDbEntityFields<T> = T extends BaseDBEntity
|
|
1482
|
+
? Omit<T, keyof BaseDBEntity> & Partial<Pick<T, keyof BaseDBEntity>>
|
|
1483
|
+
: T
|
|
1479
1484
|
|
|
1480
1485
|
type ExactMatchBase<A, B> =
|
|
1481
1486
|
(<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2
|