@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.
@@ -13128,6 +13128,12 @@ var NodeIdGenerator = class {
13128
13128
  };
13129
13129
 
13130
13130
  // src/navigation/versions/v1/converters/SlugGenerator.ts
13131
+ function isScopedTo(slug, prefix) {
13132
+ return prefix.length > 0 && (slug === prefix || slug.startsWith(`${prefix}/`));
13133
+ }
13134
+ function isNestedUnder(slug, prefix) {
13135
+ return prefix.length > 0 && slug.startsWith(`${prefix}/`);
13136
+ }
13131
13137
  var SlugGenerator = class _SlugGenerator {
13132
13138
  constructor(baseSlug, productSlug, versionSlug, slug) {
13133
13139
  this.baseSlug = baseSlug;
@@ -13198,6 +13204,8 @@ var SlugGenerator = class _SlugGenerator {
13198
13204
  }
13199
13205
  return fullSlug;
13200
13206
  };
13207
+ const relativeProductSlug = this.relativeToBase(this.productSlug);
13208
+ const relativeVersionSlug = this.relativeToBase(this.versionSlug);
13201
13209
  if (this.productSlug != null && this.versionSlug != null) {
13202
13210
  if (slug.startsWith(this.productSlug)) {
13203
13211
  const remaining = getRemainingAfterProduct(slug);
@@ -13207,6 +13215,13 @@ var SlugGenerator = class _SlugGenerator {
13207
13215
  const remaining = getRemainingAfterBase(slug);
13208
13216
  return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, remaining));
13209
13217
  }
13218
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
13219
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13220
+ }
13221
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
13222
+ const remaining = slug.substring(relativeProductSlug.length);
13223
+ return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, remaining));
13224
+ }
13210
13225
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
13211
13226
  }
13212
13227
  if (this.versionSlug != null) {
@@ -13216,6 +13231,9 @@ var SlugGenerator = class _SlugGenerator {
13216
13231
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
13217
13232
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, getRemainingAfterBase(slug)));
13218
13233
  }
13234
+ if (relativeVersionSlug != null && isScopedTo(slug, relativeVersionSlug)) {
13235
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13236
+ }
13219
13237
  return createWithSlug(navigation_exports.V1.slugjoin(this.versionSlug, slug));
13220
13238
  }
13221
13239
  if (this.productSlug != null) {
@@ -13225,6 +13243,9 @@ var SlugGenerator = class _SlugGenerator {
13225
13243
  if (this.baseSlug.length > 0 && slug.startsWith(this.baseSlug)) {
13226
13244
  return createWithSlug(navigation_exports.V1.slugjoin(getRemainingAfterBase(slug)));
13227
13245
  }
13246
+ if (relativeProductSlug != null && isScopedTo(slug, relativeProductSlug)) {
13247
+ return createWithSlug(navigation_exports.V1.slugjoin(this.baseSlug, slug));
13248
+ }
13228
13249
  return createWithSlug(navigation_exports.V1.slugjoin(this.productSlug, slug));
13229
13250
  }
13230
13251
  if (this.baseSlug.length > 0) {
@@ -13246,8 +13267,25 @@ var SlugGenerator = class _SlugGenerator {
13246
13267
  if (fullSlug != null) {
13247
13268
  return this.set(fullSlug.join("/"));
13248
13269
  }
13270
+ if (this.slug === this.scopeSlug && isNestedUnder(navigation_exports.V1.slugjoin(urlSlug), this.relativeScopeSlug)) {
13271
+ return this.set(urlSlug);
13272
+ }
13249
13273
  return this.append(urlSlug);
13250
13274
  }
13275
+ /** The product/version prefix that child slugs hang off of. */
13276
+ get scopeSlug() {
13277
+ return this.versionSlug ?? this.productSlug ?? this.baseSlug;
13278
+ }
13279
+ /** {@link scopeSlug} as authored in the config, i.e. without the basepath. */
13280
+ get relativeScopeSlug() {
13281
+ return this.relativeToBase(this.scopeSlug);
13282
+ }
13283
+ relativeToBase(slug) {
13284
+ if (slug == null || this.baseSlug.length === 0 || !isScopedTo(slug, this.baseSlug)) {
13285
+ return slug;
13286
+ }
13287
+ return slug.substring(this.baseSlug.length + 1);
13288
+ }
13251
13289
  };
13252
13290
 
13253
13291
  // src/navigation/versions/v1/converters/ApiReferenceNavigationConverter.ts