@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.
@@ -11852,6 +11852,12 @@ var NodeIdGenerator = class {
11852
11852
  };
11853
11853
 
11854
11854
  // src/navigation/versions/v1/converters/SlugGenerator.ts
11855
+ function isScopedTo(slug, prefix) {
11856
+ return prefix.length > 0 && (slug === prefix || slug.startsWith(`${prefix}/`));
11857
+ }
11858
+ function isNestedUnder(slug, prefix) {
11859
+ return prefix.length > 0 && slug.startsWith(`${prefix}/`);
11860
+ }
11855
11861
  var SlugGenerator = class _SlugGenerator {
11856
11862
  constructor(baseSlug, productSlug, versionSlug, slug) {
11857
11863
  this.baseSlug = baseSlug;
@@ -11922,6 +11928,8 @@ var SlugGenerator = class _SlugGenerator {
11922
11928
  }
11923
11929
  return fullSlug;
11924
11930
  };
11931
+ const relativeProductSlug = this.relativeToBase(this.productSlug);
11932
+ const relativeVersionSlug = this.relativeToBase(this.versionSlug);
11925
11933
  if (this.productSlug != null && this.versionSlug != null) {
11926
11934
  if (slug.startsWith(this.productSlug)) {
11927
11935
  const remaining = getRemainingAfterProduct(slug);
@@ -11931,6 +11939,13 @@ var SlugGenerator = class _SlugGenerator {
11931
11939
  const remaining = getRemainingAfterBase(slug);
11932
11940
  return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, remaining));
11933
11941
  }
11942
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
11943
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11944
+ }
11945
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
11946
+ const remaining = slug.substring(relativeProductSlug.length);
11947
+ return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, remaining));
11948
+ }
11934
11949
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
11935
11950
  }
11936
11951
  if (this.versionSlug != null) {
@@ -11940,6 +11955,9 @@ var SlugGenerator = class _SlugGenerator {
11940
11955
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
11941
11956
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, getRemainingAfterBase(slug)));
11942
11957
  }
11958
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
11959
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11960
+ }
11943
11961
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
11944
11962
  }
11945
11963
  if (this.productSlug != null) {
@@ -11949,6 +11967,9 @@ var SlugGenerator = class _SlugGenerator {
11949
11967
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
11950
11968
  return createWithSlug(navigation_exports.V1.slugjoin(getRemainingAfterBase(slug)));
11951
11969
  }
11970
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
11971
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
11972
+ }
11952
11973
  return createWithSlug(navigation_exports.V1.slugjoin(this.productSlug, slug));
11953
11974
  }
11954
11975
  if (this.baseSlug.length > 0) {
@@ -11970,8 +11991,25 @@ var SlugGenerator = class _SlugGenerator {
11970
11991
  if (fullSlug != null) {
11971
11992
  return this.set(fullSlug.join("/"));
11972
11993
  }
11994
+ if (this.slug === this.scopeSlug && isNestedUnder(navigation_exports.V1.slugjoin(urlSlug), this.relativeScopeSlug)) {
11995
+ return this.set(urlSlug);
11996
+ }
11973
11997
  return this.append(urlSlug);
11974
11998
  }
11999
+ /** The product/version prefix that child slugs hang off of. */
12000
+ get scopeSlug() {
12001
+ return this.versionSlug ?? this.productSlug ?? this.baseSlug;
12002
+ }
12003
+ /** {@link scopeSlug} as authored in the config, i.e. without the basepath. */
12004
+ get relativeScopeSlug() {
12005
+ return this.relativeToBase(this.scopeSlug);
12006
+ }
12007
+ relativeToBase(slug) {
12008
+ if (slug == null || this.baseSlug.length === 0 || !isScopedTo(slug, this.baseSlug)) {
12009
+ return slug;
12010
+ }
12011
+ return slug.substring(this.baseSlug.length + 1);
12012
+ }
11975
12013
  };
11976
12014
 
11977
12015
  // src/navigation/versions/v1/converters/ApiReferenceNavigationConverter.ts