fern-api 0.23.6 → 0.24.0

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.
Files changed (2) hide show
  1. package/bundle.cjs +138 -34
  2. package/package.json +1 -1
package/bundle.cjs CHANGED
@@ -344910,6 +344910,7 @@ var init_OpenApiIntermediateRepresentation2 = __esm({
344910
344910
  OpenApiIntermediateRepresentation = schemas_exports5.objectWithoutOptionalProperties({
344911
344911
  title: schemas_exports5.string().optional(),
344912
344912
  description: schemas_exports5.string().optional(),
344913
+ basePath: schemas_exports5.string().optional(),
344913
344914
  servers: schemas_exports5.list(schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).Server)),
344914
344915
  groups: schemas_exports5.record(schemas_exports5.string(), schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).SdkGroupInfo)),
344915
344916
  tags: schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).Tags),
@@ -345019,7 +345020,8 @@ var init_WebsocketHandshake2 = __esm({
345019
345020
  init_core3();
345020
345021
  WebsocketHandshake = schemas_exports5.objectWithoutOptionalProperties({
345021
345022
  queryParameters: schemas_exports5.list(schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).QueryParameter)),
345022
- headers: schemas_exports5.list(schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).Header))
345023
+ headers: schemas_exports5.list(schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).Header)),
345024
+ pathParameters: schemas_exports5.list(schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).PathParameter))
345023
345025
  });
345024
345026
  }
345025
345027
  });
@@ -345716,6 +345718,7 @@ var init_ObjectProperty4 = __esm({
345716
345718
  schema: schemas_exports5.lazy(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).Schema),
345717
345719
  conflict: schemas_exports5.record(schemas_exports5.lazy(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).SchemaId), schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).ObjectPropertyConflictInfo)),
345718
345720
  generatedName: schemas_exports5.string(),
345721
+ nameOverride: schemas_exports5.string().optional(),
345719
345722
  audiences: schemas_exports5.list(schemas_exports5.string())
345720
345723
  });
345721
345724
  }
@@ -346373,6 +346376,7 @@ var init_ObjectPropertyWithExample2 = __esm({
346373
346376
  schema: schemas_exports5.lazy(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).SchemaWithExample),
346374
346377
  audiences: schemas_exports5.list(schemas_exports5.string()),
346375
346378
  conflict: schemas_exports5.record(schemas_exports5.lazy(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).SchemaId), schemas_exports5.lazyObject(async () => (await Promise.resolve().then(() => (init_serialization3(), serialization_exports3))).ObjectPropertyConflictInfo)),
346379
+ nameOverride: schemas_exports5.string().optional(),
346376
346380
  generatedName: schemas_exports5.string()
346377
346381
  });
346378
346382
  }
@@ -890696,7 +890700,7 @@ var AccessTokenPosthogManager = class {
890696
890700
  properties: {
890697
890701
  ...event,
890698
890702
  ...event.properties,
890699
- version: "0.23.6",
890703
+ version: "0.24.0",
890700
890704
  usingAccessToken: true
890701
890705
  }
890702
890706
  });
@@ -890758,7 +890762,7 @@ var UserPosthogManager = class {
890758
890762
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
890759
890763
  event: "CLI",
890760
890764
  properties: {
890761
- version: "0.23.6",
890765
+ version: "0.24.0",
890762
890766
  ...event,
890763
890767
  ...event.properties
890764
890768
  }
@@ -903034,8 +903038,14 @@ function buildObjectTypeDeclaration({ schema: schema2, context, declarationFile
903034
903038
  context,
903035
903039
  fileContainingReference: declarationFile
903036
903040
  });
903037
- if (property5.audiences.length > 0) {
903038
- properties[property5.key] = typeof typeReference === "string" ? { type: typeReference, audiences: property5.audiences } : { ...typeReference, audiences: property5.audiences };
903041
+ const audiences = property5.audiences;
903042
+ const name2 = property5.nameOverride;
903043
+ if (audiences.length > 0 && name2 != null) {
903044
+ properties[property5.key] = typeof typeReference === "string" ? { type: typeReference, audiences, name: name2 } : { ...typeReference, audiences, name: name2 };
903045
+ } else if (name2 != null) {
903046
+ properties[property5.key] = typeof typeReference === "string" ? { type: typeReference, name: name2 } : { ...typeReference, name: name2 };
903047
+ } else if (audiences.length > 0) {
903048
+ properties[property5.key] = typeof typeReference === "string" ? { type: typeReference, audiences } : { ...typeReference, audiences };
903039
903049
  } else {
903040
903050
  properties[property5.key] = typeReference;
903041
903051
  }
@@ -903493,6 +903503,27 @@ function buildHeader({ header, context, fileContainingReference }) {
903493
903503
  return headerSchema;
903494
903504
  }
903495
903505
 
903506
+ // pnp:/home/circleci/project/packages/cli/openapi-ir-to-fern/lib/buildPathParameter.js
903507
+ function buildPathParameter({ pathParameter, context, fileContainingReference }) {
903508
+ const typeReference = buildTypeReference({
903509
+ schema: pathParameter.schema,
903510
+ context,
903511
+ fileContainingReference
903512
+ });
903513
+ if (pathParameter.variableReference == null && pathParameter.description == null) {
903514
+ return getTypeFromTypeReference(typeReference);
903515
+ }
903516
+ const pathParameterSchema = pathParameter.variableReference != null ? {
903517
+ variable: `$${pathParameter.variableReference}`
903518
+ } : {
903519
+ type: getTypeFromTypeReference(typeReference)
903520
+ };
903521
+ if (pathParameter.description != null) {
903522
+ pathParameterSchema.docs = pathParameter.description;
903523
+ }
903524
+ return pathParameterSchema;
903525
+ }
903526
+
903496
903527
  // pnp:/home/circleci/project/packages/cli/openapi-parser/lib/openapi/parse.js
903497
903528
  var import_promises25 = require("fs/promises");
903498
903529
 
@@ -903548,6 +903579,7 @@ var FernOpenAPIExtension = {
903548
903579
  BOOLEAN_LITERAL: "x-fern-boolean-literal",
903549
903580
  SERVER_NAME_V1: "x-name",
903550
903581
  SERVER_NAME_V2: "x-fern-server-name",
903582
+ BASE_PATH: "x-fern-base-path",
903551
903583
  GROUPS: TypedExtensionId.of("x-fern-groups"),
903552
903584
  OPENAPI_OVERIDES_FILEPATH: "x-fern-overrides-filepath",
903553
903585
  TYPE_DEFINITION: "x-fern-type",
@@ -903572,7 +903604,8 @@ var FernOpenAPIExtension = {
903572
903604
  FERN_BEARER_TOKEN: "x-fern-bearer",
903573
903605
  FERN_HEADER_AUTH: "x-fern-header",
903574
903606
  FERN_BASIC_AUTH: "x-fern-basic",
903575
- FERN_GLOBAL_HEADERS: "x-fern-global-headers"
903607
+ FERN_GLOBAL_HEADERS: "x-fern-global-headers",
903608
+ FERN_PROPERTY_NAME: "x-fern-property-name"
903576
903609
  };
903577
903610
 
903578
903611
  // pnp:/home/circleci/project/packages/cli/openapi-parser/lib/openapi/v3/extensions/getFernEnum.js
@@ -904524,7 +904557,8 @@ function convertToObjectProperty(objectProperty) {
904524
904557
  generatedName: objectProperty.generatedName,
904525
904558
  key: objectProperty.key,
904526
904559
  schema: convertSchemaWithExampleToSchema(objectProperty.schema),
904527
- audiences: objectProperty.audiences
904560
+ audiences: objectProperty.audiences,
904561
+ nameOverride: objectProperty.nameOverride
904528
904562
  };
904529
904563
  }
904530
904564
 
@@ -904684,6 +904718,7 @@ function convertObject({ nameOverride, generatedName, breadcrumbs, properties, d
904684
904718
  const convertedProperties = Object.entries(propertiesToConvert).map(([propertyName, propertySchema]) => {
904685
904719
  const isRequired = allRequired.includes(propertyName);
904686
904720
  const audiences = getExtension(propertySchema, FernOpenAPIExtension.AUDIENCES) ?? [];
904721
+ const propertyNameOverride = getExtension(propertySchema, FernOpenAPIExtension.FERN_PROPERTY_NAME);
904687
904722
  const propertyBreadcrumbs = [...breadcrumbs, propertyName];
904688
904723
  const generatedName2 = getGeneratedPropertyName(propertyBreadcrumbs);
904689
904724
  const schema2 = isRequired ? convertSchema(propertySchema, false, context, propertyBreadcrumbs) : SchemaWithExample.optional({
@@ -904705,6 +904740,7 @@ function convertObject({ nameOverride, generatedName, breadcrumbs, properties, d
904705
904740
  return {
904706
904741
  key: propertyName,
904707
904742
  schema: schema2,
904743
+ nameOverride: propertyNameOverride,
904708
904744
  audiences,
904709
904745
  conflict: conflicts,
904710
904746
  generatedName: getGeneratedPropertyName([...breadcrumbs, propertyName])
@@ -906519,7 +906555,8 @@ function convertToObjectProperty2(objectProperty) {
906519
906555
  generatedName: objectProperty.generatedName,
906520
906556
  key: objectProperty.key,
906521
906557
  schema: convertSchemaToSchemaWithExample(objectProperty.schema),
906522
- audiences: objectProperty.audiences
906558
+ audiences: objectProperty.audiences,
906559
+ nameOverride: objectProperty.nameOverride
906523
906560
  };
906524
906561
  }
906525
906562
 
@@ -906937,7 +906974,8 @@ function convertMultipartRequestToSchema(request) {
906937
906974
  schema: convertSchemaToSchemaWithExample(property5.schema.value),
906938
906975
  audiences: [],
906939
906976
  conflict: {},
906940
- generatedName: property5.key
906977
+ generatedName: property5.key,
906978
+ nameOverride: void 0
906941
906979
  };
906942
906980
  }).filter(isNonNullish),
906943
906981
  allOf: [],
@@ -907189,6 +907227,28 @@ function parseAsyncAPI({ document: document6, taskContext }) {
907189
907227
  context.logger.error(`Channel ${channelPath} does not have websocket bindings. Skipping.`);
907190
907228
  continue;
907191
907229
  }
907230
+ const pathParameters = [];
907231
+ if (channel.parameters != null) {
907232
+ for (const [name2, parameter] of Object.entries(channel.parameters ?? {})) {
907233
+ pathParameters.push({
907234
+ name: name2,
907235
+ description: parameter.description,
907236
+ schema: parameter.schema != null ? convertSchema(parameter.schema, false, context, breadcrumbs) : SchemaWithExample.primitive({
907237
+ schema: PrimitiveSchemaValueWithExample.string({
907238
+ example: void 0,
907239
+ format: void 0,
907240
+ maxLength: void 0,
907241
+ minLength: void 0
907242
+ }),
907243
+ description: void 0,
907244
+ generatedName: "",
907245
+ groupName: void 0,
907246
+ nameOverride: void 0
907247
+ }),
907248
+ variableReference: void 0
907249
+ });
907250
+ }
907251
+ }
907192
907252
  const headers = [];
907193
907253
  if (channel.bindings.ws.headers != null) {
907194
907254
  const required = channel.bindings.ws.headers.required ?? [];
@@ -907276,6 +907336,12 @@ function parseAsyncAPI({ document: document6, taskContext }) {
907276
907336
  ...param,
907277
907337
  schema: convertSchemaWithExampleToSchema(param.schema)
907278
907338
  };
907339
+ }),
907340
+ pathParameters: pathParameters.map((param) => {
907341
+ return {
907342
+ ...param,
907343
+ schema: convertSchemaWithExampleToSchema(param.schema)
907344
+ };
907279
907345
  })
907280
907346
  },
907281
907347
  groupName: (tag == null ? void 0 : tag.name) != null ? [tag.name] : ["Websocket"],
@@ -908794,6 +908860,11 @@ function getScopes(oauthSecurityScheme) {
908794
908860
  return void 0;
908795
908861
  }
908796
908862
 
908863
+ // pnp:/home/circleci/project/packages/cli/openapi-parser/lib/openapi/v3/extensions/getFernBasePath.js
908864
+ function getFernBasePath(parameter) {
908865
+ return getExtension(parameter, FernOpenAPIExtension.BASE_PATH);
908866
+ }
908867
+
908797
908868
  // pnp:/home/circleci/project/packages/cli/openapi-parser/lib/openapi/v3/extensions/getFernGroups.js
908798
908869
  var XFernGroupsSchema = z.record(z.string(), z.object({
908799
908870
  summary: z.string().optional(),
@@ -909142,6 +909213,7 @@ function generateIr({ openApi, taskContext, disableExamples, audiences }) {
909142
909213
  });
909143
909214
  const groupInfo = getFernGroups({ document: openApi, context });
909144
909215
  const ir = {
909216
+ basePath: getFernBasePath(openApi),
909145
909217
  title: openApi.info.title,
909146
909218
  description: openApi.info.description,
909147
909219
  groups: Object.fromEntries(Object.entries(groupInfo ?? {}).map(([key2, value]) => {
@@ -909260,6 +909332,7 @@ async function parse3({ workspace, taskContext }) {
909260
909332
  let ir = {
909261
909333
  title: void 0,
909262
909334
  description: void 0,
909335
+ basePath: void 0,
909263
909336
  servers: [],
909264
909337
  tags: {
909265
909338
  tagsById: {},
@@ -909327,6 +909400,7 @@ function merge3(ir1, ir2) {
909327
909400
  return {
909328
909401
  title: ir1.title ?? ir2.title,
909329
909402
  description: ir1.description ?? ir2.description,
909403
+ basePath: ir1.basePath ?? ir2.basePath,
909330
909404
  servers: [...ir1.servers, ...ir2.servers],
909331
909405
  tags: {
909332
909406
  tagsById: {
@@ -909728,6 +909802,19 @@ function buildChannel({ channel, context, declarationFile }) {
909728
909802
  if (channel.summary != null) {
909729
909803
  convertedChannel["display-name"] = channel.summary;
909730
909804
  }
909805
+ const pathParameters = {};
909806
+ if (channel.handshake.pathParameters.length > 0) {
909807
+ for (const pathParameter of channel.handshake.pathParameters) {
909808
+ pathParameters[pathParameter.name] = buildPathParameter({
909809
+ pathParameter,
909810
+ context,
909811
+ fileContainingReference: declarationFile
909812
+ });
909813
+ }
909814
+ }
909815
+ if (Object.keys(pathParameters).length > 0) {
909816
+ convertedChannel["path-parameters"] = pathParameters;
909817
+ }
909731
909818
  const queryParameters = {};
909732
909819
  if (channel.handshake.queryParameters.length > 0) {
909733
909820
  for (const queryParameter of channel.handshake.queryParameters) {
@@ -910118,27 +910205,6 @@ function convertLiteralExample2(literal2) {
910118
910205
  }
910119
910206
  }
910120
910207
 
910121
- // pnp:/home/circleci/project/packages/cli/openapi-ir-to-fern/lib/buildPathParameter.js
910122
- function buildPathParameter({ pathParameter, context, fileContainingReference }) {
910123
- const typeReference = buildTypeReference({
910124
- schema: pathParameter.schema,
910125
- context,
910126
- fileContainingReference
910127
- });
910128
- if (pathParameter.variableReference == null && pathParameter.description == null) {
910129
- return getTypeFromTypeReference(typeReference);
910130
- }
910131
- const pathParameterSchema = pathParameter.variableReference != null ? {
910132
- variable: `$${pathParameter.variableReference}`
910133
- } : {
910134
- type: getTypeFromTypeReference(typeReference)
910135
- };
910136
- if (pathParameter.description != null) {
910137
- pathParameterSchema.docs = pathParameter.description;
910138
- }
910139
- return pathParameterSchema;
910140
- }
910141
-
910142
910208
  // pnp:/home/circleci/project/packages/cli/openapi-ir-to-fern/lib/utils/convertToHttpMethod.js
910143
910209
  function convertToHttpMethod(httpMethod) {
910144
910210
  return HttpMethod5._visit(httpMethod, {
@@ -910811,6 +910877,9 @@ function buildFernDefinition(context) {
910811
910877
  buildGlobalHeaders(context);
910812
910878
  buildAuthSchemes(context);
910813
910879
  buildVariables(context);
910880
+ if (context.ir.basePath != null) {
910881
+ context.builder.setBasePath(context.ir.basePath);
910882
+ }
910814
910883
  if (context.ir.hasEndpointsMarkedInternal) {
910815
910884
  context.builder.addAudience(EXTERNAL_AUDIENCE);
910816
910885
  }
@@ -910908,6 +910977,9 @@ var FernDefinitionBuilderImpl = class {
910908
910977
  setDefaultEnvironment(name2) {
910909
910978
  this.rootApiFile["default-environment"] = name2;
910910
910979
  }
910980
+ setBasePath(basePath) {
910981
+ this.rootApiFile["base-path"] = basePath;
910982
+ }
910911
910983
  getEnvironmentType() {
910912
910984
  const environmentEntry = Object.entries(this.rootApiFile.environments ?? {})[0];
910913
910985
  if (environmentEntry == null) {
@@ -911541,9 +911613,31 @@ async function loadAPIWorkspace({ absolutePathToWorkspace, context, cliVersion,
911541
911613
  if ((generatorsConfiguration == null ? void 0 : generatorsConfiguration.api) != null && generatorsConfiguration.api.definitions.length > 0) {
911542
911614
  const specs = [];
911543
911615
  for (const definition3 of generatorsConfiguration.api.definitions) {
911616
+ const absoluteFilepath = join(absolutePathToWorkspace, RelativeFilePath.of(definition3.path));
911617
+ const absoluteFilepathToOverrides = definition3.overrides != null ? join(absolutePathToWorkspace, RelativeFilePath.of(definition3.overrides)) : void 0;
911618
+ if (!await doesPathExist(absoluteFilepath)) {
911619
+ return {
911620
+ didSucceed: false,
911621
+ failures: {
911622
+ [RelativeFilePath.of(definition3.path)]: {
911623
+ type: WorkspaceLoaderFailureType.FILE_MISSING
911624
+ }
911625
+ }
911626
+ };
911627
+ }
911628
+ if (definition3.overrides != null && absoluteFilepathToOverrides != null && !await doesPathExist(absoluteFilepathToOverrides)) {
911629
+ return {
911630
+ didSucceed: false,
911631
+ failures: {
911632
+ [RelativeFilePath.of(definition3.overrides)]: {
911633
+ type: WorkspaceLoaderFailureType.FILE_MISSING
911634
+ }
911635
+ }
911636
+ };
911637
+ }
911544
911638
  specs.push({
911545
- absoluteFilepath: join(absolutePathToWorkspace, RelativeFilePath.of(definition3.path)),
911546
- absoluteFilepathToOverrides: definition3.overrides != null ? join(absolutePathToWorkspace, RelativeFilePath.of(definition3.overrides)) : void 0,
911639
+ absoluteFilepath,
911640
+ absoluteFilepathToOverrides,
911547
911641
  settings: {
911548
911642
  audiences: definition3.audiences ?? []
911549
911643
  }
@@ -911578,6 +911672,16 @@ async function loadAPIWorkspace({ absolutePathToWorkspace, context, cliVersion,
911578
911672
  absoluteFilepathToOverrides: void 0
911579
911673
  });
911580
911674
  }
911675
+ if (absolutePathToOpenAPI != null && absolutePathToAsyncAPI != null) {
911676
+ return {
911677
+ didSucceed: false,
911678
+ failures: {
911679
+ [RelativeFilePath.of("openapi/openapi.yml")]: {
911680
+ type: WorkspaceLoaderFailureType.FILE_MISSING
911681
+ }
911682
+ }
911683
+ };
911684
+ }
911581
911685
  return {
911582
911686
  didSucceed: true,
911583
911687
  workspace: {
@@ -915217,10 +915321,10 @@ var CliContext = class {
915217
915321
  return "fern-api";
915218
915322
  }
915219
915323
  getPackageVersion() {
915220
- if ("0.23.6" == null) {
915324
+ if ("0.24.0" == null) {
915221
915325
  this.logger.error("CLI_VERSION is not defined");
915222
915326
  }
915223
- return "0.23.6";
915327
+ return "0.24.0";
915224
915328
  }
915225
915329
  getCliName() {
915226
915330
  if ("fern" == null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fern-api",
3
- "version": "0.23.6",
3
+ "version": "0.24.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/fern-api/fern.git",