@fern-api/fdr-sdk 1.2.95-42ec487d61 → 1.2.96-066f6aa406

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.
@@ -13167,6 +13167,9 @@ var NodeIdGenerator = class {
13167
13167
  };
13168
13168
 
13169
13169
  // src/navigation/versions/v1/converters/SlugGenerator.ts
13170
+ function isScopedTo(slug, prefix) {
13171
+ return prefix.length > 0 && (slug === prefix || slug.startsWith(`${prefix}/`));
13172
+ }
13170
13173
  var SlugGenerator = class _SlugGenerator {
13171
13174
  constructor(baseSlug, productSlug, versionSlug, slug) {
13172
13175
  this.baseSlug = baseSlug;
@@ -13237,6 +13240,8 @@ var SlugGenerator = class _SlugGenerator {
13237
13240
  }
13238
13241
  return fullSlug;
13239
13242
  };
13243
+ const relativeProductSlug = this.relativeToBase(this.productSlug);
13244
+ const relativeVersionSlug = this.relativeToBase(this.versionSlug);
13240
13245
  if (this.productSlug != null && this.versionSlug != null) {
13241
13246
  if (slug.startsWith(this.productSlug)) {
13242
13247
  const remaining = getRemainingAfterProduct(slug);
@@ -13246,6 +13251,13 @@ var SlugGenerator = class _SlugGenerator {
13246
13251
  const remaining = getRemainingAfterBase(slug);
13247
13252
  return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, remaining));
13248
13253
  }
13254
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
13255
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13256
+ }
13257
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
13258
+ const remaining = slug.substring(relativeProductSlug.length);
13259
+ return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, remaining));
13260
+ }
13249
13261
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
13250
13262
  }
13251
13263
  if (this.versionSlug != null) {
@@ -13255,6 +13267,9 @@ var SlugGenerator = class _SlugGenerator {
13255
13267
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
13256
13268
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, getRemainingAfterBase(slug)));
13257
13269
  }
13270
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
13271
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13272
+ }
13258
13273
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
13259
13274
  }
13260
13275
  if (this.productSlug != null) {
@@ -13264,6 +13279,9 @@ var SlugGenerator = class _SlugGenerator {
13264
13279
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
13265
13280
  return createWithSlug(navigation_exports.V1.slugjoin(getRemainingAfterBase(slug)));
13266
13281
  }
13282
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
13283
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13284
+ }
13267
13285
  return createWithSlug(navigation_exports.V1.slugjoin(this.productSlug, slug));
13268
13286
  }
13269
13287
  if (this.baseSlug.length > 0) {
@@ -13285,8 +13303,25 @@ var SlugGenerator = class _SlugGenerator {
13285
13303
  if (fullSlug != null) {
13286
13304
  return this.set(fullSlug.join("/"));
13287
13305
  }
13306
+ if (this.slug === this.scopeSlug && isScopedTo(navigation_exports.V1.slugjoin(urlSlug), this.relativeScopeSlug)) {
13307
+ return this.set(urlSlug);
13308
+ }
13288
13309
  return this.append(urlSlug);
13289
13310
  }
13311
+ /** The product/version prefix that child slugs hang off of. */
13312
+ get scopeSlug() {
13313
+ return this.versionSlug ?? this.productSlug ?? this.baseSlug;
13314
+ }
13315
+ /** {@link scopeSlug} as authored in the config, i.e. without the basepath. */
13316
+ get relativeScopeSlug() {
13317
+ return this.relativeToBase(this.scopeSlug);
13318
+ }
13319
+ relativeToBase(slug) {
13320
+ if (slug == null || this.baseSlug.length === 0 || !isScopedTo(slug, this.baseSlug)) {
13321
+ return slug;
13322
+ }
13323
+ return slug.substring(this.baseSlug.length + 1);
13324
+ }
13290
13325
  };
13291
13326
 
13292
13327
  // src/navigation/versions/v1/converters/ApiReferenceNavigationConverter.ts