@conduit-client/model 3.6.3 → 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.
@@ -18,6 +18,7 @@ export declare function readSpecFiles(): Promise<{
18
18
  auraEntityById: string;
19
19
  auraEntity: string;
20
20
  entityMissing: string;
21
+ entityPost: string;
21
22
  }>;
22
23
  any: TestRaml<{
23
24
  readonly Any: typeof amf.AnyShape;
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 concreteType = getConcreteTypeFromRef(type);
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 concreteType = getConcreteTypeFromRef(type);
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
- if (isNullableType(concreteType)) {
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,