@conduit-client/model 3.7.0 → 3.7.1
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/dist/v1/index.js
CHANGED
|
@@ -336,7 +336,11 @@ function isTypeUsableAsKey(type, seenTypes = /* @__PURE__ */ new Set()) {
|
|
|
336
336
|
return result;
|
|
337
337
|
}
|
|
338
338
|
function isNullableType(type) {
|
|
339
|
-
const
|
|
339
|
+
const concreteTypeResult = getConcreteTypeFromRef(type);
|
|
340
|
+
if (concreteTypeResult.isErr()) {
|
|
341
|
+
return void 0;
|
|
342
|
+
}
|
|
343
|
+
const concreteType = concreteTypeResult.value;
|
|
340
344
|
if (isNilType(concreteType)) {
|
|
341
345
|
return true;
|
|
342
346
|
} else if (isOneOfType(concreteType)) {
|
|
@@ -348,10 +352,15 @@ function isNullableType(type) {
|
|
|
348
352
|
}
|
|
349
353
|
function getConcreteTypeFromRef(type) {
|
|
350
354
|
let concreteType = type;
|
|
355
|
+
let seenTypes = /* @__PURE__ */ new Set();
|
|
351
356
|
while (isRefType(concreteType)) {
|
|
357
|
+
if (seenTypes.has(concreteType)) {
|
|
358
|
+
return err({ type: concreteType, seenTypes });
|
|
359
|
+
}
|
|
360
|
+
seenTypes.add(concreteType);
|
|
352
361
|
concreteType = concreteType.$ref;
|
|
353
362
|
}
|
|
354
|
-
return concreteType;
|
|
363
|
+
return ok(concreteType);
|
|
355
364
|
}
|
|
356
365
|
class KeySourcesValidator {
|
|
357
366
|
constructor(types, sources) {
|
|
@@ -507,9 +516,29 @@ class KeySourcesValidator {
|
|
|
507
516
|
return result ? ok(messages) : err(messages);
|
|
508
517
|
}
|
|
509
518
|
validateAccessors(type, propName, accessors) {
|
|
510
|
-
const
|
|
519
|
+
const concreteTypeResult = getConcreteTypeFromRef(type);
|
|
520
|
+
if (concreteTypeResult.isErr()) {
|
|
521
|
+
return err([
|
|
522
|
+
getFormattedMessage$1(
|
|
523
|
+
type,
|
|
524
|
+
`Unwrapping refs for type "${this.getNameOf(concreteTypeResult.error.type)}" led to the following types in an infinite loop: [${Array.from(
|
|
525
|
+
concreteTypeResult.error.seenTypes
|
|
526
|
+
).map((t) => this.getNameOf(t)).join(", ")}].`
|
|
527
|
+
)
|
|
528
|
+
]);
|
|
529
|
+
}
|
|
530
|
+
const concreteType = concreteTypeResult.value;
|
|
511
531
|
if (isOneOfType(concreteType) || isAllOfType(concreteType) || isDiscriminatedObjectType(concreteType) || isObjectType(concreteType)) {
|
|
512
|
-
|
|
532
|
+
const isNullable = isNullableType(concreteType);
|
|
533
|
+
if (isNullable === void 0) {
|
|
534
|
+
return err([
|
|
535
|
+
getFormattedMessage$1(
|
|
536
|
+
type,
|
|
537
|
+
`Unwrapping refs for type "${this.getNameOf(concreteType)}" led to an infinite loop.`
|
|
538
|
+
)
|
|
539
|
+
]);
|
|
540
|
+
}
|
|
541
|
+
if (isNullable) {
|
|
513
542
|
return err([
|
|
514
543
|
getFormattedMessage$1(
|
|
515
544
|
concreteType,
|