@fern-api/fdr-sdk 1.2.96-b1b20d1d34 → 1.2.97-401342676c

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.
@@ -11828,6 +11828,12 @@ var NodeIdGenerator = class {
11828
11828
  };
11829
11829
 
11830
11830
  // src/navigation/versions/v1/converters/SlugGenerator.ts
11831
+ function isScopedTo(slug, prefix) {
11832
+ return prefix.length > 0 && (slug === prefix || slug.startsWith(`${prefix}/`));
11833
+ }
11834
+ function isNestedUnder(slug, prefix) {
11835
+ return prefix.length > 0 && slug.startsWith(`${prefix}/`);
11836
+ }
11831
11837
  var SlugGenerator = class _SlugGenerator {
11832
11838
  constructor(baseSlug, productSlug, versionSlug, slug) {
11833
11839
  this.baseSlug = baseSlug;
@@ -11898,6 +11904,8 @@ var SlugGenerator = class _SlugGenerator {
11898
11904
  }
11899
11905
  return fullSlug;
11900
11906
  };
11907
+ const relativeProductSlug = this.relativeToBase(this.productSlug);
11908
+ const relativeVersionSlug = this.relativeToBase(this.versionSlug);
11901
11909
  if (this.productSlug != null && this.versionSlug != null) {
11902
11910
  if (slug.startsWith(this.productSlug)) {
11903
11911
  const remaining = getRemainingAfterProduct(slug);
@@ -11907,6 +11915,13 @@ var SlugGenerator = class _SlugGenerator {
11907
11915
  const remaining = getRemainingAfterBase(slug);
11908
11916
  return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, remaining));
11909
11917
  }
11918
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
11919
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11920
+ }
11921
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
11922
+ const remaining = slug.substring(relativeProductSlug.length);
11923
+ return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, remaining));
11924
+ }
11910
11925
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
11911
11926
  }
11912
11927
  if (this.versionSlug != null) {
@@ -11916,6 +11931,9 @@ var SlugGenerator = class _SlugGenerator {
11916
11931
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
11917
11932
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, getRemainingAfterBase(slug)));
11918
11933
  }
11934
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
11935
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11936
+ }
11919
11937
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
11920
11938
  }
11921
11939
  if (this.productSlug != null) {
@@ -11925,6 +11943,9 @@ var SlugGenerator = class _SlugGenerator {
11925
11943
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
11926
11944
  return createWithSlug(navigation_exports.V1.slugjoin(getRemainingAfterBase(slug)));
11927
11945
  }
11946
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
11947
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11948
+ }
11928
11949
  return createWithSlug(navigation_exports.V1.slugjoin(this.productSlug, slug));
11929
11950
  }
11930
11951
  if (this.baseSlug.length > 0) {
@@ -11946,8 +11967,25 @@ var SlugGenerator = class _SlugGenerator {
11946
11967
  if (fullSlug != null) {
11947
11968
  return this.set(fullSlug.join("/"));
11948
11969
  }
11970
+ if (this.slug === this.scopeSlug && isNestedUnder(navigation_exports.V1.slugjoin(urlSlug), this.relativeScopeSlug)) {
11971
+ return this.set(urlSlug);
11972
+ }
11949
11973
  return this.append(urlSlug);
11950
11974
  }
11975
+ /** The product/version prefix that child slugs hang off of. */
11976
+ get scopeSlug() {
11977
+ return this.versionSlug ?? this.productSlug ?? this.baseSlug;
11978
+ }
11979
+ /** {@link scopeSlug} as authored in the config, i.e. without the basepath. */
11980
+ get relativeScopeSlug() {
11981
+ return this.relativeToBase(this.scopeSlug);
11982
+ }
11983
+ relativeToBase(slug) {
11984
+ if (slug == null || this.baseSlug.length === 0 || !isScopedTo(slug, this.baseSlug)) {
11985
+ return slug;
11986
+ }
11987
+ return slug.substring(this.baseSlug.length + 1);
11988
+ }
11951
11989
  };
11952
11990
 
11953
11991
  // src/navigation/versions/v1/converters/ApiReferenceNavigationConverter.ts