@naturalcycles/nodejs-lib 15.78.0 → 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<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<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,17 +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
|
+
type Override<T, U> = Omit<T, keyof U> & U;
|
|
462
463
|
declare const allowExtraKeysSymbol: unique symbol;
|
|
463
|
-
type AllowExtraKeys<T> = T & {
|
|
464
|
-
readonly [allowExtraKeysSymbol]?: true;
|
|
465
|
-
};
|
|
466
464
|
type HasAllowExtraKeys<T> = T extends {
|
|
467
465
|
readonly [allowExtraKeysSymbol]?: true;
|
|
468
466
|
} ? true : false;
|
|
469
|
-
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;
|
|
470
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;
|
|
471
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>>>;
|
|
472
472
|
type BuilderOutUnion<B extends readonly JsonSchemaAnyBuilder<any, any, any>[]> = {
|
package/package.json
CHANGED
|
@@ -870,29 +870,33 @@ export class JsonSchemaObjectBuilder<
|
|
|
870
870
|
props: P,
|
|
871
871
|
): JsonSchemaObjectBuilder<
|
|
872
872
|
RelaxIndexSignature<
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
// required keys
|
|
881
|
-
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
882
|
-
? IsOpt extends true
|
|
883
|
-
? never
|
|
884
|
-
: K
|
|
885
|
-
: never]: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
886
|
-
} & {
|
|
887
|
-
// optional keys
|
|
888
|
-
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
889
|
-
? IsOpt extends true
|
|
890
|
-
? K
|
|
891
|
-
: never
|
|
892
|
-
: never]?: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
893
|
-
}
|
|
873
|
+
OptionalDbEntityFields<
|
|
874
|
+
Override<
|
|
875
|
+
IN,
|
|
876
|
+
{
|
|
877
|
+
[K in keyof P]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never
|
|
878
|
+
}
|
|
879
|
+
>
|
|
894
880
|
>
|
|
895
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
|
+
>,
|
|
896
900
|
false
|
|
897
901
|
> {
|
|
898
902
|
const newBuilder = new JsonSchemaObjectBuilder()
|
|
@@ -1293,7 +1297,7 @@ function objectInfer<P extends Record<string, JsonSchemaAnyBuilder<any, any, any
|
|
|
1293
1297
|
|
|
1294
1298
|
function objectDbEntity(props: AnyObject): never
|
|
1295
1299
|
function objectDbEntity<
|
|
1296
|
-
IN extends BaseDBEntity
|
|
1300
|
+
IN extends BaseDBEntity,
|
|
1297
1301
|
EXTRA_KEYS extends Exclude<keyof IN, keyof BaseDBEntity> = Exclude<keyof IN, keyof BaseDBEntity>,
|
|
1298
1302
|
>(
|
|
1299
1303
|
props: {
|
|
@@ -1456,18 +1460,27 @@ type StripIndexSignatureDeep<T> = T extends readonly unknown[]
|
|
|
1456
1460
|
type RelaxIndexSignature<T> = T extends readonly unknown[]
|
|
1457
1461
|
? T
|
|
1458
1462
|
: T extends AnyObject
|
|
1459
|
-
?
|
|
1460
|
-
? any
|
|
1461
|
-
: { [K in keyof T]: RelaxIndexSignature<T[K]> }
|
|
1463
|
+
? { [K in keyof T]: RelaxIndexSignature<T[K]> }
|
|
1462
1464
|
: T
|
|
1463
1465
|
|
|
1464
|
-
|
|
1466
|
+
type Override<T, U> = Omit<T, keyof U> & U
|
|
1465
1467
|
|
|
1466
|
-
|
|
1468
|
+
declare const allowExtraKeysSymbol: unique symbol
|
|
1467
1469
|
|
|
1468
1470
|
type HasAllowExtraKeys<T> = T extends { readonly [allowExtraKeysSymbol]?: true } ? true : false
|
|
1469
1471
|
|
|
1470
|
-
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
|
|
1471
1484
|
|
|
1472
1485
|
type ExactMatchBase<A, B> =
|
|
1473
1486
|
(<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2
|