@fern-api/fern-api-dev 4.76.2-1-gcea5748f8d4 → 4.77.0-1-g5415b0ce657

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/cli.cjs +152 -13
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -622064,7 +622064,7 @@ var AccessTokenPosthogManager = class {
622064
622064
  properties: {
622065
622065
  ...event,
622066
622066
  ...event.properties,
622067
- version: "4.76.2-1-gcea5748f8d4",
622067
+ version: "4.77.0-1-g5415b0ce657",
622068
622068
  usingAccessToken: true
622069
622069
  }
622070
622070
  });
@@ -622118,7 +622118,7 @@ var UserPosthogManager = class {
622118
622118
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
622119
622119
  event: "CLI",
622120
622120
  properties: {
622121
- version: "4.76.2-1-gcea5748f8d4",
622121
+ version: "4.77.0-1-g5415b0ce657",
622122
622122
  ...event,
622123
622123
  ...event.properties,
622124
622124
  usingAccessToken: false,
@@ -839336,7 +839336,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
839336
839336
  var LOGS_FOLDER_NAME = "logs";
839337
839337
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
839338
839338
  function getCliSource() {
839339
- const version7 = "4.76.2-1-gcea5748f8d4";
839339
+ const version7 = "4.77.0-1-g5415b0ce657";
839340
839340
  return `cli@${version7}`;
839341
839341
  }
839342
839342
  var DebugLogger = class {
@@ -850651,7 +850651,7 @@ var LegacyDocsPublisher = class {
850651
850651
  previewId,
850652
850652
  disableTemplates: void 0,
850653
850653
  skipUpload,
850654
- cliVersion: "4.76.2-1-gcea5748f8d4"
850654
+ cliVersion: "4.77.0-1-g5415b0ce657"
850655
850655
  });
850656
850656
  if (taskContext.getResult() === TaskResult.Failure) {
850657
850657
  return { success: false };
@@ -889084,18 +889084,156 @@ var DynamicTypeLiteralMapper4 = class _DynamicTypeLiteralMapper {
889084
889084
  });
889085
889085
  return ruby_exports.TypeLiteral.nop();
889086
889086
  }
889087
- return ruby_exports.TypeLiteral.hash(Object.entries(value).map(([key2, val]) => {
889087
+ const entries23 = this.convertObjectEntries({ object: object22, value });
889088
+ return ruby_exports.TypeLiteral.hash(entries23);
889089
+ }
889090
+ convertObjectEntries({ object: object22, value }) {
889091
+ const record22 = typeof value === "object" && value != null ? value : {};
889092
+ const providedWireValues = new Set(Object.keys(record22));
889093
+ const entries23 = [];
889094
+ for (const [key2, val] of Object.entries(record22)) {
889088
889095
  this.context.errors.scope(key2);
889089
889096
  const property24 = object22.properties.find((p10) => p10.name.wireValue === key2);
889090
889097
  const typeReference2 = property24?.typeReference ?? { type: "unknown" };
889091
889098
  const propertyName = property24?.name.name.snakeCase.safeName ?? key2;
889092
- const astNode = {
889093
- key: ruby_exports.TypeLiteral.string(propertyName),
889094
- value: this.convert({ typeReference: typeReference2, value: val })
889095
- };
889099
+ const converted = this.convert({ typeReference: typeReference2, value: val });
889100
+ if (!ruby_exports.TypeLiteral.isNop(converted)) {
889101
+ entries23.push({
889102
+ key: ruby_exports.TypeLiteral.string(propertyName),
889103
+ value: converted
889104
+ });
889105
+ }
889096
889106
  this.context.errors.unscope();
889097
- return astNode;
889098
- }));
889107
+ }
889108
+ for (const property24 of object22.properties) {
889109
+ if (providedWireValues.has(property24.name.wireValue)) {
889110
+ continue;
889111
+ }
889112
+ if (this.context.isOptional(property24.typeReference) || this.context.isNullable(property24.typeReference)) {
889113
+ continue;
889114
+ }
889115
+ const defaultValue = this.synthesizeDefaultValue(property24.typeReference);
889116
+ if (!ruby_exports.TypeLiteral.isNop(defaultValue)) {
889117
+ entries23.push({
889118
+ key: ruby_exports.TypeLiteral.string(property24.name.name.snakeCase.safeName),
889119
+ value: defaultValue
889120
+ });
889121
+ }
889122
+ }
889123
+ return entries23.filter((entry) => !ruby_exports.TypeLiteral.isNop(entry.value));
889124
+ }
889125
+ // =============================================================================
889126
+ // DEFAULT VALUE SYNTHESIS
889127
+ // =============================================================================
889128
+ /**
889129
+ * Synthesizes a reasonable default value for a given type reference.
889130
+ * Used to populate required fields that are missing from examples,
889131
+ * preventing invalid code generation (e.g. empty hashes for types
889132
+ * with required fields).
889133
+ */
889134
+ synthesizeDefaultValue(typeReference2, seen = /* @__PURE__ */ new Set()) {
889135
+ switch (typeReference2.type) {
889136
+ case "optional":
889137
+ case "nullable":
889138
+ return ruby_exports.TypeLiteral.nop();
889139
+ case "primitive":
889140
+ return this.synthesizeDefaultPrimitive(typeReference2.value);
889141
+ case "literal":
889142
+ return this.synthesizeDefaultLiteral(typeReference2.value);
889143
+ case "list":
889144
+ return ruby_exports.TypeLiteral.list([]);
889145
+ case "set":
889146
+ return ruby_exports.TypeLiteral.list([]);
889147
+ case "map":
889148
+ return ruby_exports.TypeLiteral.hash([]);
889149
+ case "named": {
889150
+ if (seen.has(typeReference2.value)) {
889151
+ return ruby_exports.TypeLiteral.nop();
889152
+ }
889153
+ const named = this.context.resolveNamedType({ typeId: typeReference2.value });
889154
+ if (named == null) {
889155
+ return ruby_exports.TypeLiteral.nop();
889156
+ }
889157
+ return this.synthesizeDefaultNamed({ named, typeId: typeReference2.value, seen });
889158
+ }
889159
+ case "unknown":
889160
+ return ruby_exports.TypeLiteral.nop();
889161
+ default:
889162
+ assertNever(typeReference2);
889163
+ }
889164
+ }
889165
+ synthesizeDefaultPrimitive(primitive) {
889166
+ switch (primitive) {
889167
+ case "STRING":
889168
+ case "BASE_64":
889169
+ case "BIG_INTEGER":
889170
+ return ruby_exports.TypeLiteral.string("string");
889171
+ case "INTEGER":
889172
+ case "LONG":
889173
+ case "UINT":
889174
+ case "UINT_64":
889175
+ return ruby_exports.TypeLiteral.integer(1);
889176
+ case "FLOAT":
889177
+ case "DOUBLE":
889178
+ return ruby_exports.TypeLiteral.float(1.1);
889179
+ case "BOOLEAN":
889180
+ return ruby_exports.TypeLiteral.boolean(true);
889181
+ case "DATE":
889182
+ return ruby_exports.TypeLiteral.string("2024-01-15");
889183
+ case "DATE_TIME":
889184
+ case "DATE_TIME_RFC_2822":
889185
+ return ruby_exports.TypeLiteral.string("2024-01-15T09:30:00Z");
889186
+ case "UUID":
889187
+ return ruby_exports.TypeLiteral.string("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
889188
+ default:
889189
+ assertNever(primitive);
889190
+ }
889191
+ }
889192
+ synthesizeDefaultLiteral(literalType2) {
889193
+ switch (literalType2.type) {
889194
+ case "boolean":
889195
+ return ruby_exports.TypeLiteral.boolean(literalType2.value);
889196
+ case "string":
889197
+ return ruby_exports.TypeLiteral.string(literalType2.value);
889198
+ default:
889199
+ assertNever(literalType2);
889200
+ }
889201
+ }
889202
+ synthesizeDefaultNamed({ named, typeId, seen }) {
889203
+ const newSeen = new Set(seen);
889204
+ newSeen.add(typeId);
889205
+ switch (named.type) {
889206
+ case "alias":
889207
+ return this.synthesizeDefaultValue(named.typeReference, newSeen);
889208
+ case "enum": {
889209
+ const firstValue = named.values[0];
889210
+ if (firstValue == null) {
889211
+ return ruby_exports.TypeLiteral.nop();
889212
+ }
889213
+ return ruby_exports.TypeLiteral.string(firstValue.wireValue);
889214
+ }
889215
+ case "object": {
889216
+ const entries23 = [];
889217
+ for (const property24 of named.properties) {
889218
+ if (this.context.isOptional(property24.typeReference) || this.context.isNullable(property24.typeReference)) {
889219
+ continue;
889220
+ }
889221
+ const defaultValue = this.synthesizeDefaultValue(property24.typeReference, newSeen);
889222
+ if (!ruby_exports.TypeLiteral.isNop(defaultValue)) {
889223
+ entries23.push({
889224
+ key: ruby_exports.TypeLiteral.string(property24.name.name.snakeCase.safeName),
889225
+ value: defaultValue
889226
+ });
889227
+ }
889228
+ }
889229
+ return ruby_exports.TypeLiteral.hash(entries23);
889230
+ }
889231
+ case "discriminatedUnion":
889232
+ case "undiscriminatedUnion":
889233
+ return ruby_exports.TypeLiteral.nop();
889234
+ default:
889235
+ assertNever(named);
889236
+ }
889099
889237
  }
889100
889238
  getValueAsNumber({ value, as: as8 }) {
889101
889239
  const num = as8 === "key" ? typeof value === "string" ? Number(value) : value : value;
@@ -889587,9 +889725,10 @@ var EndpointSnippetGenerator7 = class {
889587
889725
  }
889588
889726
  getMethodArgsForPropertiesRequest({ request: request7, snippet: snippet2 }) {
889589
889727
  const args = [];
889728
+ const record22 = this.context.getRecord(snippet2.requestBody) ?? {};
889590
889729
  const bodyProperties = this.context.associateByWireValue({
889591
889730
  parameters: request7.value,
889592
- values: this.context.getRecord(snippet2.requestBody) ?? {}
889731
+ values: record22
889593
889732
  });
889594
889733
  for (const parameter6 of bodyProperties) {
889595
889734
  const value = this.context.dynamicTypeLiteralMapper.convert(parameter6);
@@ -925562,7 +925701,7 @@ var CliContext = class _CliContext {
925562
925701
  if (false) {
925563
925702
  this.logger.error("CLI_VERSION is not defined");
925564
925703
  }
925565
- return "4.76.2-1-gcea5748f8d4";
925704
+ return "4.77.0-1-g5415b0ce657";
925566
925705
  }
925567
925706
  getCliName() {
925568
925707
  if (false) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.76.2-1-gcea5748f8d4",
2
+ "version": "4.77.0-1-g5415b0ce657",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",