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