@naturalcycles/nodejs-lib 15.63.1 → 15.64.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.
|
@@ -235,10 +235,15 @@ export declare class JsonSchemaObjectBuilder<IN extends AnyObject, OUT extends A
|
|
|
235
235
|
* When set, the validation will not strip away properties that are not specified explicitly in the schema.
|
|
236
236
|
*/
|
|
237
237
|
allowAdditionalProperties(): this;
|
|
238
|
-
extend(props:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
extend<P extends Record<string, JsonSchemaAnyBuilder<any, any, any>>>(props: P): JsonSchemaObjectBuilder<IN & {
|
|
239
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt> ? IsOpt extends true ? never : K : never]: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never;
|
|
240
|
+
} & {
|
|
241
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt> ? IsOpt extends true ? K : never : never]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never;
|
|
242
|
+
}, OUT & {
|
|
243
|
+
[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;
|
|
244
|
+
} & {
|
|
245
|
+
[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;
|
|
246
|
+
}, false>;
|
|
242
247
|
/**
|
|
243
248
|
* Concatenates another schema to the current schema.
|
|
244
249
|
*
|
|
@@ -261,7 +266,15 @@ export declare class JsonSchemaObjectBuilder<IN extends AnyObject, OUT extends A
|
|
|
261
266
|
/**
|
|
262
267
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
263
268
|
*/
|
|
264
|
-
dbEntity():
|
|
269
|
+
dbEntity(): JsonSchemaObjectBuilder<IN & {
|
|
270
|
+
id: string;
|
|
271
|
+
created: any;
|
|
272
|
+
updated: any;
|
|
273
|
+
} & {}, OUT & {
|
|
274
|
+
id: string;
|
|
275
|
+
created: any;
|
|
276
|
+
updated: any;
|
|
277
|
+
} & {}, false>;
|
|
265
278
|
minProperties(minProperties: number): this;
|
|
266
279
|
maxProperties(maxProperties: number): this;
|
|
267
280
|
}
|
|
@@ -291,7 +304,7 @@ export declare class JsonSchemaObjectInferringBuilder<PROPS extends Record<strin
|
|
|
291
304
|
/**
|
|
292
305
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
293
306
|
*/
|
|
294
|
-
dbEntity(): JsonSchemaObjectInferringBuilder<{ [K in "id" |
|
|
307
|
+
dbEntity(): JsonSchemaObjectInferringBuilder<{ [K in "id" | "created" | "updated" | keyof PROPS]: K extends "id" | "created" | "updated" ? {
|
|
295
308
|
id: JsonSchemaStringBuilder<string, string, false>;
|
|
296
309
|
created: JsonSchemaNumberBuilder<UnixTimestamp, UnixTimestamp, false>;
|
|
297
310
|
updated: JsonSchemaNumberBuilder<UnixTimestamp, UnixTimestamp, false>;
|
|
@@ -586,14 +586,12 @@ export class JsonSchemaObjectBuilder extends JsonSchemaAnyBuilder {
|
|
|
586
586
|
return this.cloneAndUpdateSchema({ additionalProperties: true });
|
|
587
587
|
}
|
|
588
588
|
extend(props) {
|
|
589
|
-
const
|
|
589
|
+
const newBuilder = new JsonSchemaObjectBuilder();
|
|
590
|
+
_objectAssign(newBuilder.schema, _deepCopy(this.schema));
|
|
590
591
|
const incomingSchemaBuilder = new JsonSchemaObjectBuilder(props);
|
|
591
|
-
mergeJsonSchemaObjects(
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const hasIsOfTypeCheck = this.schema.hasIsOfTypeCheck;
|
|
595
|
-
_objectAssign(clone.schema, { hasIsOfTypeCheck });
|
|
596
|
-
return clone;
|
|
592
|
+
mergeJsonSchemaObjects(newBuilder.schema, incomingSchemaBuilder.schema);
|
|
593
|
+
_objectAssign(newBuilder.schema, { hasIsOfTypeCheck: false });
|
|
594
|
+
return newBuilder;
|
|
597
595
|
}
|
|
598
596
|
/**
|
|
599
597
|
* Concatenates another schema to the current schema.
|
package/package.json
CHANGED
|
@@ -828,24 +828,50 @@ export class JsonSchemaObjectBuilder<
|
|
|
828
828
|
return this.cloneAndUpdateSchema({ additionalProperties: true })
|
|
829
829
|
}
|
|
830
830
|
|
|
831
|
-
extend
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
831
|
+
extend<P extends Record<string, JsonSchemaAnyBuilder<any, any, any>>>(
|
|
832
|
+
props: P,
|
|
833
|
+
): JsonSchemaObjectBuilder<
|
|
834
|
+
IN & {
|
|
835
|
+
// required keys
|
|
836
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
837
|
+
? IsOpt extends true
|
|
838
|
+
? never
|
|
839
|
+
: K
|
|
840
|
+
: never]: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never
|
|
841
|
+
} & {
|
|
842
|
+
// optional keys
|
|
843
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
844
|
+
? IsOpt extends true
|
|
845
|
+
? K
|
|
846
|
+
: never
|
|
847
|
+
: never]?: P[K] extends JsonSchemaAnyBuilder<infer IN2, any, any> ? IN2 : never
|
|
848
|
+
},
|
|
849
|
+
OUT & {
|
|
850
|
+
// required keys
|
|
851
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
852
|
+
? IsOpt extends true
|
|
853
|
+
? never
|
|
854
|
+
: K
|
|
855
|
+
: never]: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
856
|
+
} & {
|
|
857
|
+
// optional keys
|
|
858
|
+
[K in keyof P as P[K] extends JsonSchemaAnyBuilder<any, any, infer IsOpt>
|
|
859
|
+
? IsOpt extends true
|
|
860
|
+
? K
|
|
861
|
+
: never
|
|
862
|
+
: never]?: P[K] extends JsonSchemaAnyBuilder<any, infer OUT2, any> ? OUT2 : never
|
|
863
|
+
},
|
|
864
|
+
false
|
|
865
|
+
> {
|
|
866
|
+
const newBuilder = new JsonSchemaObjectBuilder()
|
|
867
|
+
_objectAssign(newBuilder.schema, _deepCopy(this.schema))
|
|
839
868
|
|
|
840
|
-
const incomingSchemaBuilder = new JsonSchemaObjectBuilder
|
|
841
|
-
mergeJsonSchemaObjects(
|
|
869
|
+
const incomingSchemaBuilder = new JsonSchemaObjectBuilder(props)
|
|
870
|
+
mergeJsonSchemaObjects(newBuilder.schema as any, incomingSchemaBuilder.schema as any)
|
|
842
871
|
|
|
843
|
-
|
|
844
|
-
// but maybe the current schema was created differently, so that's what decides the typecheckedness.
|
|
845
|
-
const hasIsOfTypeCheck = this.schema.hasIsOfTypeCheck
|
|
846
|
-
_objectAssign(clone.schema, { hasIsOfTypeCheck })
|
|
872
|
+
_objectAssign(newBuilder.schema, { hasIsOfTypeCheck: false })
|
|
847
873
|
|
|
848
|
-
return
|
|
874
|
+
return newBuilder as any
|
|
849
875
|
}
|
|
850
876
|
|
|
851
877
|
/**
|