@fern-api/csharp-dynamic-snippets 0.0.4 → 0.0.6

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 (77) hide show
  1. package/cjs/DynamicSnippetsGenerator.cjs +14 -14
  2. package/cjs/DynamicSnippetsGenerator.cjs.map +1 -1
  3. package/cjs/DynamicSnippetsGenerator.d.cts +5 -3
  4. package/cjs/{DynamicSnippetsGeneratorContext-DQDI25Nx.d.cts → DynamicSnippetsGeneratorContext-DhvOZIoP.d.cts} +127 -85
  5. package/cjs/EndpointSnippetGenerator.cjs +20 -20
  6. package/cjs/EndpointSnippetGenerator.cjs.map +1 -1
  7. package/cjs/EndpointSnippetGenerator.d.cts +10 -4
  8. package/cjs/context/DynamicLiteralMapper.cjs +2 -0
  9. package/cjs/context/DynamicLiteralMapper.cjs.map +1 -0
  10. package/cjs/context/DynamicLiteralMapper.d.cts +7 -0
  11. package/cjs/context/DynamicSnippetsGeneratorContext.cjs +20 -20
  12. package/cjs/context/DynamicSnippetsGeneratorContext.cjs.map +1 -1
  13. package/cjs/context/DynamicSnippetsGeneratorContext.d.cts +3 -2
  14. package/cjs/context/DynamicTypeMapper.cjs +1 -1
  15. package/cjs/context/DynamicTypeMapper.cjs.map +1 -1
  16. package/cjs/context/DynamicTypeMapper.d.cts +3 -2
  17. package/cjs/context/FilePropertyMapper.cjs +15 -15
  18. package/cjs/context/FilePropertyMapper.cjs.map +1 -1
  19. package/cjs/context/FilePropertyMapper.d.cts +3 -2
  20. package/cjs/index.cjs +18 -21
  21. package/cjs/index.cjs.map +1 -1
  22. package/cjs/index.d.cts +3 -2
  23. package/esm/DynamicSnippetsGenerator.d.ts +5 -3
  24. package/esm/DynamicSnippetsGenerator.js +1 -1
  25. package/esm/{DynamicSnippetsGeneratorContext-DQDI25Nx.d.ts → DynamicSnippetsGeneratorContext-DhvOZIoP.d.ts} +127 -85
  26. package/esm/EndpointSnippetGenerator.d.ts +10 -4
  27. package/esm/EndpointSnippetGenerator.js +1 -1
  28. package/esm/chunk-A53BGSGD.js +2 -0
  29. package/esm/chunk-A53BGSGD.js.map +1 -0
  30. package/esm/chunk-LWJEMG53.js +2 -0
  31. package/esm/chunk-LWJEMG53.js.map +1 -0
  32. package/esm/chunk-PRAGN765.js +2 -0
  33. package/esm/chunk-PRAGN765.js.map +1 -0
  34. package/esm/chunk-QALVTPA5.js +33 -0
  35. package/esm/chunk-QALVTPA5.js.map +1 -0
  36. package/esm/chunk-TOOGWICF.js +2 -0
  37. package/esm/chunk-TOOGWICF.js.map +1 -0
  38. package/esm/chunk-TVSKLWL4.js +2 -0
  39. package/esm/chunk-TVSKLWL4.js.map +1 -0
  40. package/esm/chunk-WP3GAWOR.js +2 -0
  41. package/esm/chunk-WP3GAWOR.js.map +1 -0
  42. package/esm/chunk-ZEEJAJ4K.js +15 -0
  43. package/esm/chunk-ZEEJAJ4K.js.map +1 -0
  44. package/esm/context/DynamicLiteralMapper.d.ts +7 -0
  45. package/esm/context/DynamicLiteralMapper.js +2 -0
  46. package/esm/context/DynamicSnippetsGeneratorContext.d.ts +3 -2
  47. package/esm/context/DynamicSnippetsGeneratorContext.js +1 -1
  48. package/esm/context/DynamicTypeMapper.d.ts +3 -2
  49. package/esm/context/DynamicTypeMapper.js +1 -1
  50. package/esm/context/FilePropertyMapper.d.ts +3 -2
  51. package/esm/context/FilePropertyMapper.js +1 -1
  52. package/esm/index.d.ts +3 -2
  53. package/esm/index.js +1 -4
  54. package/esm/index.js.map +1 -1
  55. package/package.json +1 -1
  56. package/cjs/context/DynamicTypeLiteralMapper.cjs +0 -2
  57. package/cjs/context/DynamicTypeLiteralMapper.cjs.map +0 -1
  58. package/cjs/context/DynamicTypeLiteralMapper.d.cts +0 -6
  59. package/esm/chunk-CDMZ2O62.js +0 -2
  60. package/esm/chunk-CDMZ2O62.js.map +0 -1
  61. package/esm/chunk-D2D544ZS.js +0 -2
  62. package/esm/chunk-D2D544ZS.js.map +0 -1
  63. package/esm/chunk-F3KILROP.js +0 -2
  64. package/esm/chunk-F3KILROP.js.map +0 -1
  65. package/esm/chunk-GQKEVSN5.js +0 -2
  66. package/esm/chunk-GQKEVSN5.js.map +0 -1
  67. package/esm/chunk-MM7AFFVF.js +0 -2
  68. package/esm/chunk-MM7AFFVF.js.map +0 -1
  69. package/esm/chunk-PBYJXQQK.js +0 -2
  70. package/esm/chunk-PBYJXQQK.js.map +0 -1
  71. package/esm/chunk-SAYITSWL.js +0 -15
  72. package/esm/chunk-SAYITSWL.js.map +0 -1
  73. package/esm/chunk-ZDZZCKFB.js +0 -33
  74. package/esm/chunk-ZDZZCKFB.js.map +0 -1
  75. package/esm/context/DynamicTypeLiteralMapper.d.ts +0 -6
  76. package/esm/context/DynamicTypeLiteralMapper.js +0 -2
  77. /package/esm/context/{DynamicTypeLiteralMapper.js.map → DynamicLiteralMapper.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/context/DynamicTypeLiteralMapper.ts","../../../../../../packages/commons/core-utils/src/assert.ts","../../../../../browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../codegen/src/with-generation.ts"],"sourcesContent":["import { DiscriminatedUnionTypeInstance, NamedArgument, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { ast, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n value: unknown;\n as?: ConvertedAs;\n fallbackToDefault?: string;\n }\n\n // Identifies what the type is being converted as, which sometimes influences how\n // the type is instantiated.\n type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper extends WithGeneration {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n super(context);\n this.context = context;\n }\n\n public convert(args: DynamicTypeLiteralMapper.Args): ast.TypeLiteral {\n // eslint-disable-next-line eqeqeq\n if (args.value === null) {\n if (this.context.isNullable(args.typeReference)) {\n return this.csharp.TypeLiteral.null();\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Expected non-null value, but got null\"\n });\n return this.csharp.TypeLiteral.nop();\n }\n if (args.value === undefined && !args.fallbackToDefault) {\n return this.csharp.TypeLiteral.nop();\n }\n switch (args.typeReference.type) {\n case \"list\":\n return this.convertList({\n list: args.typeReference.value,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"literal\":\n return this.convertLiteral({\n literal: args.typeReference.value,\n value: args.value\n });\n case \"map\":\n return this.convertMap({\n map: args.typeReference,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.convertNamed({\n named,\n value: args.value,\n as: args.as,\n fallbackToDefault: args.fallbackToDefault\n });\n }\n case \"nullable\":\n return this.convert({\n typeReference: args.typeReference.value,\n value: args.value,\n as: args.as\n });\n case \"optional\":\n return this.convert({\n typeReference: args.typeReference.value,\n value: args.value,\n as: args.as\n });\n case \"primitive\":\n return this.convertPrimitive({\n primitive: args.typeReference.value,\n value: args.value,\n as: args.as,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"set\":\n return this.convertSet({\n set: args.typeReference.value,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"unknown\":\n return this.convertUnknown({ value: args.value, fallbackToDefault: args.fallbackToDefault });\n default:\n assertNever(args.typeReference);\n }\n }\n\n private convertList({\n list,\n value,\n fallbackToDefault\n }: {\n list: FernIr.dynamic.TypeReference;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.list({\n valueType: this.context.dynamicTypeMapper.convert({ typeReference: list, unboxOptionals: true }),\n values: value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: list, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertLiteral({\n literal,\n value,\n fallbackToDefault\n }: {\n literal: FernIr.dynamic.LiteralType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (literal.type) {\n case \"boolean\": {\n const bool = this.context.getValueAsBoolean({ value });\n if (bool == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.boolean(bool);\n }\n case \"string\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(str);\n }\n default:\n assertNever(literal);\n }\n }\n\n private convertSet({\n set,\n value,\n fallbackToDefault\n }: {\n set: FernIr.dynamic.TypeReference;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.set({\n valueType: this.context.dynamicTypeMapper.convert({ typeReference: set, unboxOptionals: true }),\n values: value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: set, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertMap({\n map,\n value,\n fallbackToDefault\n }: {\n map: FernIr.dynamic.MapType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.dictionary({\n keyType: this.context.dynamicTypeMapper.convert({ typeReference: map.key }),\n valueType:\n map.value.type === \"unknown\"\n ? this.context.dynamicTypeMapper.convert({ typeReference: map.value }).toOptionalIfNotAlready()\n : this.context.dynamicTypeMapper.convert({ typeReference: map.value }),\n entries: Object.entries(value).map(([key, value]) => {\n this.context.errors.scope(key);\n try {\n return {\n key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n value: this.convert({ typeReference: map.value, value })\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertNamed({\n named,\n value,\n as,\n fallbackToDefault\n }: {\n named: FernIr.dynamic.NamedType;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (named.type) {\n case \"alias\":\n return this.convert({ typeReference: named.typeReference, value, as, fallbackToDefault });\n case \"discriminatedUnion\":\n if (this.settings.shouldGeneratedDiscriminatedUnions) {\n return this.convertDiscriminatedUnion({ discriminatedUnion: named, value, fallbackToDefault });\n }\n return this.convertUnknown({ value, fallbackToDefault });\n case \"enum\":\n return this.getEnumValue(named, value);\n case \"object\":\n return this.convertObject({ object_: named, value, fallbackToDefault });\n case \"undiscriminatedUnion\":\n return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value, fallbackToDefault });\n default:\n assertNever(named);\n }\n }\n\n private convertDiscriminatedUnion({\n discriminatedUnion,\n value,\n fallbackToDefault\n }: {\n discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const classReference = this.csharp.classReference({\n origin: discriminatedUnion.declaration,\n namespace: this.context.getNamespace(discriminatedUnion.declaration.fernFilepath)\n });\n const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n discriminatedUnion,\n value\n });\n if (discriminatedUnionTypeInstance == null) {\n return this.csharp.TypeLiteral.nop();\n }\n const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n const baseProperties = this.getBaseProperties({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType: unionVariant\n });\n switch (unionVariant.type) {\n case \"samePropertiesAsObject\": {\n const named = this.context.resolveNamedType({\n typeId: unionVariant.typeId\n });\n if (named == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [this.convertNamed({ named, value: discriminatedUnionTypeInstance.value })]\n });\n }\n case \"singleProperty\": {\n const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n if (record == null) {\n return this.csharp.TypeLiteral.nop();\n }\n try {\n const innerClassName = [\"Value\", \"Type\"].includes(\n unionVariant.discriminantValue.name.pascalCase.safeName\n )\n ? `${unionVariant.discriminantValue.name.pascalCase.safeName}Inner`\n : unionVariant.discriminantValue.name.pascalCase.safeName;\n\n this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [\n this.csharp.instantiateClass({\n classReference: this.csharp.classReference({\n // origin: discriminatedUnionTypeInstance.discriminantValue,\n name: innerClassName,\n enclosingType: classReference\n }),\n arguments_: [\n this.convert({\n typeReference: unionVariant.typeReference,\n value: unionVariant.discriminantValue.wireValue\n })\n ]\n })\n ]\n });\n } finally {\n this.context.errors.unscope();\n }\n }\n case \"noProperties\":\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [\n // Unions with no properties require the discriminant property to be set.\n this.csharp.instantiateClass({\n classReference: this.csharp.classReference({\n origin: discriminatedUnionTypeInstance.discriminantValue,\n enclosingType: classReference\n }),\n arguments_: []\n })\n ]\n });\n default:\n assertNever(unionVariant);\n }\n }\n\n private getBaseProperties({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType\n }: {\n discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n }): NamedArgument[] {\n const properties = this.context.associateByWireValue({\n parameters: singleDiscriminatedUnionType.properties ?? [],\n values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n // We're only selecting the base properties here. The rest of the properties\n // are handled by the union variant.\n ignoreMissingParameters: true\n });\n return properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return {\n name: this.context.getPropertyName(property.name.name),\n assignment: this.convert(property)\n };\n } finally {\n this.context.errors.unscope();\n }\n });\n }\n\n private instantiateUnionWithBaseProperties({\n classReference,\n arguments_,\n baseProperties\n }: {\n classReference: ast.ClassReference;\n arguments_: ast.AstNode[];\n baseProperties: NamedArgument[];\n }): ast.TypeLiteral {\n const instantiation = this.csharp.instantiateClass({\n classReference,\n arguments_,\n multiline: true\n });\n if (baseProperties.length === 0) {\n return this.csharp.TypeLiteral.reference(instantiation);\n }\n return this.csharp.TypeLiteral.reference(\n this.csharp.codeblock((writer) => {\n writer.write(instantiation, \" \");\n writer.pushScope();\n for (const baseProperty of baseProperties) {\n writer.write(baseProperty.name, \" = \", baseProperty.assignment, \",\");\n }\n writer.popScope(false);\n })\n );\n }\n\n private getEnumValue(enum_: FernIr.dynamic.EnumType, wireValue: unknown): ast.TypeLiteral {\n if (typeof wireValue !== \"string\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected enum value string, got: ${typeof wireValue}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n const enumValue = enum_.values.find((v) => v.wireValue === wireValue);\n if (enumValue == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `An enum value named \"${wireValue}\" does not exist in this context`\n });\n return this.csharp.TypeLiteral.nop();\n }\n const reference = this.csharp.classReference({\n origin: enum_.declaration,\n namespace: this.context.getNamespace(enum_.declaration.fernFilepath)\n });\n\n const valueName = reference.registerField(this.model.getPropertyNameFor(enumValue), enumValue);\n\n return this.csharp.TypeLiteral.reference(\n this.csharp.enumInstantiation({\n reference,\n value: valueName\n })\n );\n }\n\n private convertObject({\n object_,\n value,\n fallbackToDefault\n }: {\n object_: FernIr.dynamic.ObjectType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const properties = this.context.associateByWireValue({\n parameters: object_.properties,\n values: this.context.getRecord(value) ?? {}\n });\n\n return this.csharp.TypeLiteral.class_({\n reference: this.csharp.classReference({\n origin: object_.declaration,\n namespace: this.context.getNamespace(object_.declaration.fernFilepath)\n }),\n fields: properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return {\n name: this.context.getClassName(property.name.name),\n value: this.convert(property)\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertUndiscriminatedUnion({\n undiscriminatedUnion,\n value,\n fallbackToDefault\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const result = this.findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n });\n if (result == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return result.typeLiteral;\n }\n\n private findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n }): { valueTypeReference: FernIr.dynamic.TypeReference; typeLiteral: ast.TypeLiteral } | undefined {\n for (const typeReference of undiscriminatedUnion.types) {\n try {\n const typeLiteral = this.convert({ typeReference, value });\n return { valueTypeReference: typeReference, typeLiteral };\n } catch (e) {\n continue;\n }\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n });\n return undefined;\n }\n\n private convertUnknown({\n value,\n fallbackToDefault\n }: {\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n return this.csharp.TypeLiteral.unknown(value);\n }\n\n private convertPrimitive({\n primitive,\n value,\n as,\n fallbackToDefault\n }: {\n primitive: FernIr.dynamic.PrimitiveTypeV1;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (primitive) {\n case \"INTEGER\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.integer.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.integer(num);\n }\n case \"LONG\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.long.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.long(num);\n }\n case \"UINT\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.uint.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.uint(num);\n }\n case \"UINT_64\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.ulong.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.ulong(num);\n }\n case \"FLOAT\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.float.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.float(num);\n }\n case \"DOUBLE\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.double.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.double(num);\n }\n case \"BOOLEAN\": {\n const bool = this.getValueAsBoolean({ value, as });\n if (bool == null) {\n return fallbackToDefault\n ? this.csharp.Type.boolean.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.boolean(bool);\n }\n case \"STRING\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(str);\n }\n case \"DATE\": {\n const date = this.context.getValueAsString({ value });\n if (date == null) {\n return fallbackToDefault\n ? this.csharp.Type.dateOnly.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.date(date);\n }\n case \"DATE_TIME\": {\n const dateTime = this.context.getValueAsString({ value });\n if (dateTime == null) {\n return fallbackToDefault\n ? this.csharp.Type.dateTime.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.datetime(dateTime);\n }\n case \"UUID\": {\n const uuid = this.context.getValueAsString({ value });\n if (uuid == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(uuid);\n }\n case \"BASE_64\": {\n const base64 = this.context.getValueAsString({ value });\n if (base64 == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(base64);\n }\n case \"BIG_INTEGER\": {\n const bigInt = this.context.getValueAsString({ value });\n if (bigInt == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(bigInt);\n }\n default:\n assertNever(primitive);\n }\n }\n\n private getValueAsNumber({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): number | undefined {\n const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n return this.context.getValueAsNumber({ value: num });\n }\n\n private getValueAsBoolean({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): boolean | undefined {\n const bool =\n as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n return this.context.getValueAsBoolean({ value: bool });\n }\n}\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n if (val === undefined) {\n throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n if (val === null) {\n throw new Error(message ?? \"Expected value to be non-null but got null.\");\n }\n}\n\nexport function assertNever(x: never): never {\n throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export const Severity = {\n Critical: \"CRITICAL\",\n Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n type Path = readonly PathItem[];\n\n type PathItem = string | ArrayPathItem;\n\n type Severity = (typeof Severity)[keyof typeof Severity];\n\n interface ArrayPathItem {\n index: number;\n }\n\n interface Error {\n path?: Path;\n severity: Severity;\n message: string;\n }\n}\n\ninterface Error_ {\n severity: \"CRITICAL\" | \"WARNING\";\n path: string[] | undefined;\n message: string;\n}\n\nexport class ErrorReporter {\n private errors: ErrorReporter.Error[];\n private path: ErrorReporter.PathItem[];\n\n constructor() {\n this.errors = [];\n this.path = [];\n }\n\n public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n this.errors.push({\n ...err,\n path: [...this.path]\n });\n }\n\n public scope(path: ErrorReporter.PathItem): void {\n this.path.push(path);\n }\n\n public unscope(): void {\n this.path.pop();\n }\n\n public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n return this.errors.filter((err) => err.severity === severity);\n }\n\n public empty(): boolean {\n return this.errors.length === 0;\n }\n\n public size(): number {\n return this.errors.length;\n }\n\n public clone(): ErrorReporter {\n const clone = new ErrorReporter();\n clone.errors = [...this.errors];\n clone.path = [...this.path];\n return clone;\n }\n\n public reset(): void {\n this.errors = [];\n this.path = [];\n }\n\n public toDynamicSnippetErrors(): Error_[] {\n return this.errors.map((err) => ({\n severity: err.severity,\n path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n message: err.message\n }));\n }\n\n private pathToStringArray(path: ErrorReporter.Path): string[] {\n const result: string[] = [];\n for (const item of path) {\n if (typeof item === \"string\") {\n result.push(item);\n continue;\n }\n result[result.length - 1] += `[${item.index}]`;\n }\n return result;\n }\n}\n","import { type Generation } from \"./context/generation-info\";\n\n/**\n * The portable things that a context will provide to a generator.\n *\n * This interface defines the minimal contract that any context must fulfill\n * to be compatible with generator classes that extend `WithGeneration`.\n */\nexport interface IGeneration {\n /** The generation context containing all utilities and state needed for code generation */\n generation: Generation;\n}\n\n/**\n * A trivial class of convenience properties that a generator class can inherit from to gain access to the portable context features.\n *\n * This base class provides convenient access to common generation context properties through protected getters,\n * eliminating the need to repeatedly access `this.ctx.generation.*` throughout generator implementations.\n */\nexport class WithGeneration {\n public constructor(private readonly ctx: IGeneration) {}\n\n /** Provides access to the generation context */\n protected get generation() {\n return this.ctx.generation;\n }\n\n /** Provides access to C# code generation utilities */\n protected get csharp() {\n return this.generation.csharp;\n }\n\n /** Provides access to generation settings and configuration */\n protected get settings() {\n return this.generation.settings;\n }\n\n /** Provides access to generation constants */\n protected get constants() {\n return this.generation.constants;\n }\n\n /** Provides access to namespace management utilities */\n protected get namespaces() {\n return this.generation.namespaces;\n }\n\n /** Provides access to naming utilities for generating consistent identifiers */\n protected get names() {\n return this.generation.names;\n }\n\n /** Provides access to type information and utilities */\n protected get types() {\n return this.generation.types;\n }\n\n /** Provides access to external type references and dependencies */\n protected get extern() {\n return this.generation.extern;\n }\n\n /** Provides access to the model navigation and inspection utilities */\n protected get model() {\n return this.generation.model;\n }\n\n /** Provides access to the type registry for looking up generated types */\n protected get registry() {\n return this.generation.registry;\n }\n\n /** Provides access to .NET System namespace types and utilities */\n public get System() {\n return this.extern.System;\n }\n\n /** Provides access to NUnit testing framework types */\n public get NUnit() {\n return this.extern.NUnit;\n }\n\n /** Provides access to OneOf discriminated union library types */\n public get OneOf() {\n return this.extern.OneOf;\n }\n\n /** Provides access to Google protocol buffer types */\n public get Google() {\n return this.extern.Google;\n }\n}\n"],"mappings":"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","names":["DynamicTypeLiteralMapper_exports","__export","DynamicTypeLiteralMapper","__toCommonJS","assertNever","x","Severity","WithGeneration","ctx","__publicField","DynamicTypeLiteralMapper","WithGeneration","context","__publicField","args","Severity","named","assertNever","list","value","fallbackToDefault","v","index","literal","bool","str","set","map","key","as","discriminatedUnion","classReference","discriminatedUnionTypeInstance","unionVariant","baseProperties","innerClassName","singleDiscriminatedUnionType","_a","_b","property","arguments_","instantiation","writer","baseProperty","enum_","wireValue","enumValue","reference","valueName","object_","properties","undiscriminatedUnion","result","typeReference","typeLiteral","e","primitive","num","date","dateTime","uuid","base64","bigInt"]}
@@ -1,6 +0,0 @@
1
- import '@fern-api/csharp-codegen';
2
- import '@fern-api/dynamic-ir-sdk';
3
- export { a as DynamicTypeLiteralMapper } from '../DynamicSnippetsGeneratorContext-DQDI25Nx.cjs';
4
- import '@fern-api/csharp-codegen/lib/context/model-navigator';
5
- import '@fern-api/csharp-codegen/lib/context/extern';
6
- import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +0,0 @@
1
- import{b as a}from"./chunk-D2D544ZS.js";import{h as l,i as c,m as u}from"./chunk-ZDZZCKFB.js";var h=class extends u{constructor({context:e}){super(e);l(this,"context");this.context=e}convert(e){if(e.value===null)return this.context.isNullable(e.typeReference)?this.csharp.TypeLiteral.null():(this.context.errors.add({severity:a.Critical,message:"Expected non-null value, but got null"}),this.csharp.TypeLiteral.nop());if(e.value===void 0&&!e.fallbackToDefault)return this.csharp.TypeLiteral.nop();switch(e.typeReference.type){case"list":return this.convertList({list:e.typeReference.value,value:e.value,fallbackToDefault:e.fallbackToDefault});case"literal":return this.convertLiteral({literal:e.typeReference.value,value:e.value});case"map":return this.convertMap({map:e.typeReference,value:e.value,fallbackToDefault:e.fallbackToDefault});case"named":{let r=this.context.resolveNamedType({typeId:e.typeReference.value});return r==null?this.csharp.TypeLiteral.nop():this.convertNamed({named:r,value:e.value,as:e.as,fallbackToDefault:e.fallbackToDefault})}case"nullable":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"optional":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"primitive":return this.convertPrimitive({primitive:e.typeReference.value,value:e.value,as:e.as,fallbackToDefault:e.fallbackToDefault});case"set":return this.convertSet({set:e.typeReference.value,value:e.value,fallbackToDefault:e.fallbackToDefault});case"unknown":return this.convertUnknown({value:e.value,fallbackToDefault:e.fallbackToDefault});default:c(e.typeReference)}}convertList({list:e,value:r,fallbackToDefault:i}){return Array.isArray(r)?this.csharp.TypeLiteral.list({valueType:this.context.dynamicTypeMapper.convert({typeReference:e,unboxOptionals:!0}),values:r.map((t,n)=>{this.context.errors.scope({index:n});try{return this.convert({typeReference:e,value:t})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:a.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.TypeLiteral.nop())}convertLiteral({literal:e,value:r,fallbackToDefault:i}){switch(e.type){case"boolean":{let t=this.context.getValueAsBoolean({value:r});return t==null?this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.boolean(t)}case"string":{let t=this.context.getValueAsString({value:r});return t==null?i?this.csharp.Type.string.getDeterminsticDefault(i):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.string(t)}default:c(e)}}convertSet({set:e,value:r,fallbackToDefault:i}){return Array.isArray(r)?this.csharp.TypeLiteral.set({valueType:this.context.dynamicTypeMapper.convert({typeReference:e,unboxOptionals:!0}),values:r.map((t,n)=>{this.context.errors.scope({index:n});try{return this.convert({typeReference:e,value:t})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:a.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.TypeLiteral.nop())}convertMap({map:e,value:r,fallbackToDefault:i}){return typeof r!="object"||r==null?(this.context.errors.add({severity:a.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),this.csharp.TypeLiteral.nop()):this.csharp.TypeLiteral.dictionary({keyType:this.context.dynamicTypeMapper.convert({typeReference:e.key}),valueType:e.value.type==="unknown"?this.context.dynamicTypeMapper.convert({typeReference:e.value}).toOptionalIfNotAlready():this.context.dynamicTypeMapper.convert({typeReference:e.value}),entries:Object.entries(r).map(([t,n])=>{this.context.errors.scope(t);try{return{key:this.convert({typeReference:e.key,value:t,as:"key"}),value:this.convert({typeReference:e.value,value:n})}}finally{this.context.errors.unscope()}})})}convertNamed({named:e,value:r,as:i,fallbackToDefault:t}){switch(e.type){case"alias":return this.convert({typeReference:e.typeReference,value:r,as:i,fallbackToDefault:t});case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.convertDiscriminatedUnion({discriminatedUnion:e,value:r,fallbackToDefault:t}):this.convertUnknown({value:r,fallbackToDefault:t});case"enum":return this.getEnumValue(e,r);case"object":return this.convertObject({object_:e,value:r,fallbackToDefault:t});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:e,value:r,fallbackToDefault:t});default:c(e)}}convertDiscriminatedUnion({discriminatedUnion:e,value:r,fallbackToDefault:i}){let t=this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)}),n=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:e,value:r});if(n==null)return this.csharp.TypeLiteral.nop();let s=n.singleDiscriminatedUnionType,p=this.getBaseProperties({discriminatedUnionTypeInstance:n,singleDiscriminatedUnionType:s});switch(s.type){case"samePropertiesAsObject":{let o=this.context.resolveNamedType({typeId:s.typeId});return o==null?this.csharp.TypeLiteral.nop():this.instantiateUnionWithBaseProperties({classReference:t,baseProperties:p,arguments_:[this.convertNamed({named:o,value:n.value})]})}case"singleProperty":{if(this.context.getRecord(n.value)==null)return this.csharp.TypeLiteral.nop();try{let y=["Value","Type"].includes(s.discriminantValue.name.pascalCase.safeName)?`${s.discriminantValue.name.pascalCase.safeName}Inner`:s.discriminantValue.name.pascalCase.safeName;return this.context.errors.scope(s.discriminantValue.wireValue),this.instantiateUnionWithBaseProperties({classReference:t,baseProperties:p,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({name:y,enclosingType:t}),arguments_:[this.convert({typeReference:s.typeReference,value:s.discriminantValue.wireValue})]})]})}finally{this.context.errors.unscope()}}case"noProperties":return this.instantiateUnionWithBaseProperties({classReference:t,baseProperties:p,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({origin:n.discriminantValue,enclosingType:t}),arguments_:[]})]});default:c(s)}}getBaseProperties({discriminatedUnionTypeInstance:e,singleDiscriminatedUnionType:r}){var t,n;return this.context.associateByWireValue({parameters:(t=r.properties)!=null?t:[],values:(n=this.context.getRecord(e.value))!=null?n:{},ignoreMissingParameters:!0}).map(s=>{this.context.errors.scope(s.name.wireValue);try{return{name:this.context.getPropertyName(s.name.name),assignment:this.convert(s)}}finally{this.context.errors.unscope()}})}instantiateUnionWithBaseProperties({classReference:e,arguments_:r,baseProperties:i}){let t=this.csharp.instantiateClass({classReference:e,arguments_:r,multiline:!0});return i.length===0?this.csharp.TypeLiteral.reference(t):this.csharp.TypeLiteral.reference(this.csharp.codeblock(n=>{n.write(t," "),n.pushScope();for(let s of i)n.write(s.name," = ",s.assignment,",");n.popScope(!1)}))}getEnumValue(e,r){if(typeof r!="string")return this.context.errors.add({severity:a.Critical,message:`Expected enum value string, got: ${typeof r}`}),this.csharp.TypeLiteral.nop();let i=e.values.find(s=>s.wireValue===r);if(i==null)return this.context.errors.add({severity:a.Critical,message:`An enum value named "${r}" does not exist in this context`}),this.csharp.TypeLiteral.nop();let t=this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)}),n=t.registerField(this.model.getPropertyNameFor(i),i);return this.csharp.TypeLiteral.reference(this.csharp.enumInstantiation({reference:t,value:n}))}convertObject({object_:e,value:r,fallbackToDefault:i}){var n;let t=this.context.associateByWireValue({parameters:e.properties,values:(n=this.context.getRecord(r))!=null?n:{}});return this.csharp.TypeLiteral.class_({reference:this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)}),fields:t.map(s=>{this.context.errors.scope(s.name.wireValue);try{return{name:this.context.getClassName(s.name.name),value:this.convert(s)}}finally{this.context.errors.unscope()}})})}convertUndiscriminatedUnion({undiscriminatedUnion:e,value:r,fallbackToDefault:i}){let t=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:r});return t==null?this.csharp.TypeLiteral.nop():t.typeLiteral}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:r}){for(let i of e.types)try{let t=this.convert({typeReference:i,value:r});return{valueTypeReference:i,typeLiteral:t}}catch(t){continue}this.context.errors.add({severity:a.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}convertUnknown({value:e,fallbackToDefault:r}){return this.csharp.TypeLiteral.unknown(e)}convertPrimitive({primitive:e,value:r,as:i,fallbackToDefault:t}){switch(e){case"INTEGER":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.integer.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.integer(n)}case"LONG":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.long.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.long(n)}case"UINT":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.uint.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.uint(n)}case"UINT_64":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.ulong.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.ulong(n)}case"FLOAT":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.float.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.float(n)}case"DOUBLE":{let n=this.getValueAsNumber({value:r,as:i});return n==null?t?this.csharp.Type.double.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.double(n)}case"BOOLEAN":{let n=this.getValueAsBoolean({value:r,as:i});return n==null?t?this.csharp.Type.boolean.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.boolean(n)}case"STRING":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.string.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.string(n)}case"DATE":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.dateOnly.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.date(n)}case"DATE_TIME":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.dateTime.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.datetime(n)}case"UUID":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.string.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.string(n)}case"BASE_64":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.string.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.string(n)}case"BIG_INTEGER":{let n=this.context.getValueAsString({value:r});return n==null?t?this.csharp.Type.string.getDeterminsticDefault(t):this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.string(n)}default:c(e)}}getValueAsNumber({value:e,as:r}){let i=r==="key"&&typeof e=="string"?Number(e):e;return this.context.getValueAsNumber({value:i})}getValueAsBoolean({value:e,as:r}){let i=r==="key"?typeof e=="string"?e==="true":e==="false"?!1:e:e;return this.context.getValueAsBoolean({value:i})}};export{h as a};
2
- //# sourceMappingURL=chunk-CDMZ2O62.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/DynamicTypeLiteralMapper.ts"],"sourcesContent":["import { DiscriminatedUnionTypeInstance, NamedArgument, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { ast, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n value: unknown;\n as?: ConvertedAs;\n fallbackToDefault?: string;\n }\n\n // Identifies what the type is being converted as, which sometimes influences how\n // the type is instantiated.\n type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper extends WithGeneration {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n super(context);\n this.context = context;\n }\n\n public convert(args: DynamicTypeLiteralMapper.Args): ast.TypeLiteral {\n // eslint-disable-next-line eqeqeq\n if (args.value === null) {\n if (this.context.isNullable(args.typeReference)) {\n return this.csharp.TypeLiteral.null();\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Expected non-null value, but got null\"\n });\n return this.csharp.TypeLiteral.nop();\n }\n if (args.value === undefined && !args.fallbackToDefault) {\n return this.csharp.TypeLiteral.nop();\n }\n switch (args.typeReference.type) {\n case \"list\":\n return this.convertList({\n list: args.typeReference.value,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"literal\":\n return this.convertLiteral({\n literal: args.typeReference.value,\n value: args.value\n });\n case \"map\":\n return this.convertMap({\n map: args.typeReference,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.convertNamed({\n named,\n value: args.value,\n as: args.as,\n fallbackToDefault: args.fallbackToDefault\n });\n }\n case \"nullable\":\n return this.convert({\n typeReference: args.typeReference.value,\n value: args.value,\n as: args.as\n });\n case \"optional\":\n return this.convert({\n typeReference: args.typeReference.value,\n value: args.value,\n as: args.as\n });\n case \"primitive\":\n return this.convertPrimitive({\n primitive: args.typeReference.value,\n value: args.value,\n as: args.as,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"set\":\n return this.convertSet({\n set: args.typeReference.value,\n value: args.value,\n fallbackToDefault: args.fallbackToDefault\n });\n case \"unknown\":\n return this.convertUnknown({ value: args.value, fallbackToDefault: args.fallbackToDefault });\n default:\n assertNever(args.typeReference);\n }\n }\n\n private convertList({\n list,\n value,\n fallbackToDefault\n }: {\n list: FernIr.dynamic.TypeReference;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.list({\n valueType: this.context.dynamicTypeMapper.convert({ typeReference: list, unboxOptionals: true }),\n values: value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: list, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertLiteral({\n literal,\n value,\n fallbackToDefault\n }: {\n literal: FernIr.dynamic.LiteralType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (literal.type) {\n case \"boolean\": {\n const bool = this.context.getValueAsBoolean({ value });\n if (bool == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.boolean(bool);\n }\n case \"string\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(str);\n }\n default:\n assertNever(literal);\n }\n }\n\n private convertSet({\n set,\n value,\n fallbackToDefault\n }: {\n set: FernIr.dynamic.TypeReference;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.set({\n valueType: this.context.dynamicTypeMapper.convert({ typeReference: set, unboxOptionals: true }),\n values: value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: set, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertMap({\n map,\n value,\n fallbackToDefault\n }: {\n map: FernIr.dynamic.MapType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.dictionary({\n keyType: this.context.dynamicTypeMapper.convert({ typeReference: map.key }),\n valueType:\n map.value.type === \"unknown\"\n ? this.context.dynamicTypeMapper.convert({ typeReference: map.value }).toOptionalIfNotAlready()\n : this.context.dynamicTypeMapper.convert({ typeReference: map.value }),\n entries: Object.entries(value).map(([key, value]) => {\n this.context.errors.scope(key);\n try {\n return {\n key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n value: this.convert({ typeReference: map.value, value })\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertNamed({\n named,\n value,\n as,\n fallbackToDefault\n }: {\n named: FernIr.dynamic.NamedType;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (named.type) {\n case \"alias\":\n return this.convert({ typeReference: named.typeReference, value, as, fallbackToDefault });\n case \"discriminatedUnion\":\n if (this.settings.shouldGeneratedDiscriminatedUnions) {\n return this.convertDiscriminatedUnion({ discriminatedUnion: named, value, fallbackToDefault });\n }\n return this.convertUnknown({ value, fallbackToDefault });\n case \"enum\":\n return this.getEnumValue(named, value);\n case \"object\":\n return this.convertObject({ object_: named, value, fallbackToDefault });\n case \"undiscriminatedUnion\":\n return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value, fallbackToDefault });\n default:\n assertNever(named);\n }\n }\n\n private convertDiscriminatedUnion({\n discriminatedUnion,\n value,\n fallbackToDefault\n }: {\n discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const classReference = this.csharp.classReference({\n origin: discriminatedUnion.declaration,\n namespace: this.context.getNamespace(discriminatedUnion.declaration.fernFilepath)\n });\n const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n discriminatedUnion,\n value\n });\n if (discriminatedUnionTypeInstance == null) {\n return this.csharp.TypeLiteral.nop();\n }\n const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n const baseProperties = this.getBaseProperties({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType: unionVariant\n });\n switch (unionVariant.type) {\n case \"samePropertiesAsObject\": {\n const named = this.context.resolveNamedType({\n typeId: unionVariant.typeId\n });\n if (named == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [this.convertNamed({ named, value: discriminatedUnionTypeInstance.value })]\n });\n }\n case \"singleProperty\": {\n const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n if (record == null) {\n return this.csharp.TypeLiteral.nop();\n }\n try {\n const innerClassName = [\"Value\", \"Type\"].includes(\n unionVariant.discriminantValue.name.pascalCase.safeName\n )\n ? `${unionVariant.discriminantValue.name.pascalCase.safeName}Inner`\n : unionVariant.discriminantValue.name.pascalCase.safeName;\n\n this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [\n this.csharp.instantiateClass({\n classReference: this.csharp.classReference({\n // origin: discriminatedUnionTypeInstance.discriminantValue,\n name: innerClassName,\n enclosingType: classReference\n }),\n arguments_: [\n this.convert({\n typeReference: unionVariant.typeReference,\n value: unionVariant.discriminantValue.wireValue\n })\n ]\n })\n ]\n });\n } finally {\n this.context.errors.unscope();\n }\n }\n case \"noProperties\":\n return this.instantiateUnionWithBaseProperties({\n classReference,\n baseProperties,\n arguments_: [\n // Unions with no properties require the discriminant property to be set.\n this.csharp.instantiateClass({\n classReference: this.csharp.classReference({\n origin: discriminatedUnionTypeInstance.discriminantValue,\n enclosingType: classReference\n }),\n arguments_: []\n })\n ]\n });\n default:\n assertNever(unionVariant);\n }\n }\n\n private getBaseProperties({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType\n }: {\n discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n }): NamedArgument[] {\n const properties = this.context.associateByWireValue({\n parameters: singleDiscriminatedUnionType.properties ?? [],\n values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n // We're only selecting the base properties here. The rest of the properties\n // are handled by the union variant.\n ignoreMissingParameters: true\n });\n return properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return {\n name: this.context.getPropertyName(property.name.name),\n assignment: this.convert(property)\n };\n } finally {\n this.context.errors.unscope();\n }\n });\n }\n\n private instantiateUnionWithBaseProperties({\n classReference,\n arguments_,\n baseProperties\n }: {\n classReference: ast.ClassReference;\n arguments_: ast.AstNode[];\n baseProperties: NamedArgument[];\n }): ast.TypeLiteral {\n const instantiation = this.csharp.instantiateClass({\n classReference,\n arguments_,\n multiline: true\n });\n if (baseProperties.length === 0) {\n return this.csharp.TypeLiteral.reference(instantiation);\n }\n return this.csharp.TypeLiteral.reference(\n this.csharp.codeblock((writer) => {\n writer.write(instantiation, \" \");\n writer.pushScope();\n for (const baseProperty of baseProperties) {\n writer.write(baseProperty.name, \" = \", baseProperty.assignment, \",\");\n }\n writer.popScope(false);\n })\n );\n }\n\n private getEnumValue(enum_: FernIr.dynamic.EnumType, wireValue: unknown): ast.TypeLiteral {\n if (typeof wireValue !== \"string\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected enum value string, got: ${typeof wireValue}`\n });\n return this.csharp.TypeLiteral.nop();\n }\n const enumValue = enum_.values.find((v) => v.wireValue === wireValue);\n if (enumValue == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `An enum value named \"${wireValue}\" does not exist in this context`\n });\n return this.csharp.TypeLiteral.nop();\n }\n const reference = this.csharp.classReference({\n origin: enum_.declaration,\n namespace: this.context.getNamespace(enum_.declaration.fernFilepath)\n });\n\n const valueName = reference.registerField(this.model.getPropertyNameFor(enumValue), enumValue);\n\n return this.csharp.TypeLiteral.reference(\n this.csharp.enumInstantiation({\n reference,\n value: valueName\n })\n );\n }\n\n private convertObject({\n object_,\n value,\n fallbackToDefault\n }: {\n object_: FernIr.dynamic.ObjectType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const properties = this.context.associateByWireValue({\n parameters: object_.properties,\n values: this.context.getRecord(value) ?? {}\n });\n\n return this.csharp.TypeLiteral.class_({\n reference: this.csharp.classReference({\n origin: object_.declaration,\n namespace: this.context.getNamespace(object_.declaration.fernFilepath)\n }),\n fields: properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return {\n name: this.context.getClassName(property.name.name),\n value: this.convert(property)\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertUndiscriminatedUnion({\n undiscriminatedUnion,\n value,\n fallbackToDefault\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n const result = this.findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n });\n if (result == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return result.typeLiteral;\n }\n\n private findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n }): { valueTypeReference: FernIr.dynamic.TypeReference; typeLiteral: ast.TypeLiteral } | undefined {\n for (const typeReference of undiscriminatedUnion.types) {\n try {\n const typeLiteral = this.convert({ typeReference, value });\n return { valueTypeReference: typeReference, typeLiteral };\n } catch (e) {\n continue;\n }\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n });\n return undefined;\n }\n\n private convertUnknown({\n value,\n fallbackToDefault\n }: {\n value: unknown;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n return this.csharp.TypeLiteral.unknown(value);\n }\n\n private convertPrimitive({\n primitive,\n value,\n as,\n fallbackToDefault\n }: {\n primitive: FernIr.dynamic.PrimitiveTypeV1;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n fallbackToDefault?: string;\n }): ast.TypeLiteral {\n switch (primitive) {\n case \"INTEGER\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.integer.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.integer(num);\n }\n case \"LONG\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.long.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.long(num);\n }\n case \"UINT\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.uint.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.uint(num);\n }\n case \"UINT_64\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.ulong.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.ulong(num);\n }\n case \"FLOAT\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.float.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.float(num);\n }\n case \"DOUBLE\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return fallbackToDefault\n ? this.csharp.Type.double.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.double(num);\n }\n case \"BOOLEAN\": {\n const bool = this.getValueAsBoolean({ value, as });\n if (bool == null) {\n return fallbackToDefault\n ? this.csharp.Type.boolean.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.boolean(bool);\n }\n case \"STRING\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(str);\n }\n case \"DATE\": {\n const date = this.context.getValueAsString({ value });\n if (date == null) {\n return fallbackToDefault\n ? this.csharp.Type.dateOnly.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.date(date);\n }\n case \"DATE_TIME\": {\n const dateTime = this.context.getValueAsString({ value });\n if (dateTime == null) {\n return fallbackToDefault\n ? this.csharp.Type.dateTime.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.datetime(dateTime);\n }\n case \"UUID\": {\n const uuid = this.context.getValueAsString({ value });\n if (uuid == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(uuid);\n }\n case \"BASE_64\": {\n const base64 = this.context.getValueAsString({ value });\n if (base64 == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(base64);\n }\n case \"BIG_INTEGER\": {\n const bigInt = this.context.getValueAsString({ value });\n if (bigInt == null) {\n return fallbackToDefault\n ? this.csharp.Type.string.getDeterminsticDefault(fallbackToDefault)\n : this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.string(bigInt);\n }\n default:\n assertNever(primitive);\n }\n }\n\n private getValueAsNumber({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): number | undefined {\n const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n return this.context.getValueAsNumber({ value: num });\n }\n\n private getValueAsBoolean({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): boolean | undefined {\n const bool =\n as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n return this.context.getValueAsBoolean({ value: bool });\n }\n}\n"],"mappings":"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","names":["DynamicTypeLiteralMapper","WithGeneration","context","__publicField","args","Severity","named","assertNever","list","value","fallbackToDefault","v","index","literal","bool","str","set","map","key","as","discriminatedUnion","classReference","discriminatedUnionTypeInstance","unionVariant","baseProperties","innerClassName","singleDiscriminatedUnionType","_a","_b","property","arguments_","instantiation","writer","baseProperty","enum_","wireValue","enumValue","reference","valueName","object_","properties","undiscriminatedUnion","result","typeReference","typeLiteral","e","primitive","num","date","dateTime","uuid","base64","bigInt"]}
@@ -1,2 +0,0 @@
1
- import{a as E,b as w,d as x,e as P,h as a,i as d,j as m}from"./chunk-ZDZZCKFB.js";var c=class{constructor(){a(this,"reporter");a(this,"snippet");a(this,"err");this.snippet=void 0,this.reporter=void 0,this.err=void 0}update({context:e,snippet:r}){this.shouldUpdate({snippet:r,reporter:e.errors})&&(this.reporter=e.errors.clone(),this.snippet=r)}getResponseOrThrow({endpoint:e}){var r;if(this.snippet!=null&&this.reporter!=null)return{snippet:this.snippet,errors:this.reporter.toDynamicSnippetErrors()};throw(r=this.err)!=null?r:new Error(`Failed to generate snippet for endpoint "${e.method} ${e.path}"`)}shouldUpdate({snippet:e,reporter:r}){var t,n;return this.reporter==null||this.reporter.size()>0&&r.size()===0?!0:e.length>((n=(t=this.snippet)==null?void 0:t.length)!=null?n:0)}};var y=class{constructor(e){a(this,"context");this.context=e}async generate(e,r={}){let t=this.context.resolveEndpointLocationOrThrow(e.endpoint);if(t.length===0)throw new Error(`No endpoints found that match "${e.endpoint.method} ${e.endpoint.path}"`);let n=new c;for(let i of t){let s=this.context.clone(),l=this.createSnippetGenerator(s);try{let p=await l.generateSnippet({endpoint:i,request:e,options:r});if(s.errors.empty())return{snippet:p,errors:void 0};n.update({context:s,snippet:p})}catch(p){n.err==null&&(n.err=p)}}return n.getResponseOrThrow({endpoint:e.endpoint})}generateSync(e,r={}){let t=this.context.resolveEndpointLocationOrThrow(e.endpoint);if(t.length===0)throw new Error(`No endpoints found that match "${e.endpoint.method} ${e.endpoint.path}"`);let n=new c;for(let i of t){let s=this.context.clone(),l=this.createSnippetGenerator(s);try{let p=l.generateSnippetSync({endpoint:i,request:e,options:r});if(s.errors.empty())return{snippet:p,errors:void 0};n.update({context:s,snippet:p})}catch(p){n.err==null&&(n.err=p)}}return n.getResponseOrThrow({endpoint:e.endpoint})}};var o={Critical:"CRITICAL",Warning:"WARNING"},f=class u{constructor(){a(this,"errors");a(this,"path");this.errors=[],this.path=[]}add(e){this.errors.push(w(E({},e),{path:[...this.path]}))}scope(e){this.path.push(e)}unscope(){this.path.pop()}getBySeverity(e){return this.errors.filter(r=>r.severity===e)}empty(){return this.errors.length===0}size(){return this.errors.length}clone(){let e=new u;return e.errors=[...this.errors],e.path=[...this.path],e}reset(){this.errors=[],this.path=[]}toDynamicSnippetErrors(){return this.errors.map(e=>({severity:e.severity,path:e.path!=null?this.pathToStringArray(e.path):void 0,message:e.message}))}pathToStringArray(e){let r=[];for(let t of e){if(typeof t=="string"){r.push(t);continue}r[r.length-1]+=`[${t.index}]`}return r}};var h=class{constructor(){a(this,"REFERENCE_REGEX",/^(GET|POST|PUT|DELETE|PATCH|HEAD)\s(\/\S*)$/)}validate(e){return this.REFERENCE_REGEX.test(e)?{type:"valid"}:{type:"invalid"}}tryParse(e){if(this.validate(e).type==="invalid")return;let t=e.match(this.REFERENCE_REGEX);if(!(t==null||t[1]==null||t[2]==null))return{method:t[1],path:t[2]}}};var v=class{constructor({ir:e,config:r,options:t={}}){a(this,"config");a(this,"options");a(this,"errors");a(this,"_ir");a(this,"httpEndpointReferenceParser");this._ir=e,this.config=r,this.options=t,this.errors=new f,this.httpEndpointReferenceParser=new h}associateQueryParametersByWireValue({parameters:e,values:r}){let t=[];for(let[n,i]of Object.entries(r)){this.errors.scope(n);try{let s=e.find(p=>p.name.wireValue===n);if(s==null)throw this.newParameterNotRecognizedError(n);let l=this.isListTypeReference(s.typeReference)&&!Array.isArray(i)?[i]:i;t.push({name:s.name,typeReference:s.typeReference,value:l})}finally{this.errors.unscope()}}return t}associateByWireValueOrDefault({parameters:e,values:r}){let t=[];for(let n of e){this.errors.scope(n.name.wireValue);try{let i=r[n.name.wireValue];if(i==null)if(n.typeReference.type==="primitive"&&n.typeReference.value==="STRING")i=`<${n.name.wireValue}>`;else{this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(n.name.wireValue).message});continue}t.push({name:n.name,typeReference:n.typeReference,value:i})}finally{this.errors.unscope()}}return t}associateByWireValue({parameters:e,values:r,ignoreMissingParameters:t}){let n=[];for(let[i,s]of Object.entries(r)){this.errors.scope(i);try{let l=e.find(p=>p.name.wireValue===i);if(l==null){if(t)continue;this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(i).message});continue}n.push({name:l.name,typeReference:l.typeReference,value:s})}finally{this.errors.unscope()}}return n}getExampleObjectProperties({parameters:e,snippetObject:r}){let t=typeof r=="object"&&r!==null&&!Array.isArray(r)?r:{},n=[];for(let i of e){let s=t[i.name.wireValue];s==null?i.typeReference.type==="nullable"&&n.push({name:i.name,typeReference:i.typeReference,value:null}):n.push({name:i.name,typeReference:i.typeReference,value:s})}return n}getSingleFileValue({property:e,record:r}){let t=r[e.wireValue];if(t!=null){if(typeof t!="string"){this.errors.add({severity:o.Critical,message:`Expected file value to be a string, got ${typeof t}`});return}return t}}getFileArrayValues({property:e,record:r}){let t=r[e.wireValue];if(t==null)return;if(!Array.isArray(t)){this.errors.add({severity:o.Critical,message:`Expected file array value to be an array of strings, got ${typeof t}`});return}let n=[];for(let i of t){if(typeof i!="string"){this.errors.add({severity:o.Critical,message:`Expected file array value to be an array of strings, got ${typeof i}`});return}n.push(i)}return n}getRecord(e){if(typeof e!="object"||Array.isArray(e)){this.errors.add({severity:o.Critical,message:`Expected object with key, value pairs but got: ${Array.isArray(e)?"array":typeof e}`});return}return e==null?{}:e}resolveNamedType({typeId:e}){let r=this._ir.types[e];if(r==null){this.errors.add({severity:o.Critical,message:`Type identified by "${e}" could not be found`});return}return r}resolveDiscriminatedUnionTypeInstance({discriminatedUnion:e,value:r}){let t=this.getRecord(r);if(t==null)return;let n=e.discriminant.wireValue,i=t[n];if(i==null){this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(n).message});return}if(typeof i!="string"){this.errors.add({severity:o.Critical,message:`Expected discriminant value to be a string but got: ${typeof i}`});return}let s=e.types[i];if(s==null){this.errors.add({severity:o.Critical,message:`No type found for discriminant value "${i}"`});return}let R=t,{[n]:l}=R,p=P(R,[x(n)]);return{singleDiscriminatedUnionType:s,discriminantValue:s.discriminantValue,value:p}}resolveEndpointOrThrow(e){let r=this.httpEndpointReferenceParser.tryParse(e);if(r==null)throw new Error(`Failed to parse endpoint reference "${e}"`);return this.resolveEndpointLocationOrThrow(r)}resolveEndpointLocation(e){let r=[];for(let t of Object.values(this._ir.endpoints))this.parsedEndpointMatches({endpoint:t,parsedEndpoint:e})&&r.push(t);return r}resolveEndpointLocationOrThrow(e){let r=this.resolveEndpointLocation(e);if(r.length===0)throw new Error(`Failed to find endpoint identified by "${e.method} ${e.path}"`);return r}needsRequestParameter({request:e,inlinePathParameters:r,inlineFileProperties:t}){var n;return this.includePathParametersInWrappedRequest({request:e,inlinePathParameters:r})||e.queryParameters!=null&&e.queryParameters.length>0||e.headers!=null&&e.headers.length>0?!0:e.body!=null?this.includeRequestBodyInWrappedRequest({body:e.body,inlineFileProperties:t}):!((n=e.metadata)!=null&&n.onlyPathParameters)}includePathParametersInWrappedRequest({request:e,inlinePathParameters:r}){var t,n;return r&&((n=(t=e.metadata)==null?void 0:t.includePathParameters)!=null?n:!1)}isFileUploadRequestBody(e){switch(e.type){case"fileUpload":return!0;case"properties":case"referenced":return!1;default:d(e)}}resolveEnvironmentName(e){if(this._ir.environments==null)return;let r=this._ir.environments.environments;switch(r.type){case"singleBaseUrl":{let t=r.environments.find(n=>n.id===e);return t==null?void 0:t.name}case"multipleBaseUrls":{let t=r.environments.find(n=>n.id===e);return t==null?void 0:t.name}default:d(r)}}isSingleEnvironmentID(e){return typeof e=="string"}isMultiEnvironmentValues(e){return typeof e=="object"}validateMultiEnvironmentUrlValues(e){if(this._ir.environments==null)return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported for single base URL environments; use the baseUrl option instead"}),!1;let r=this._ir.environments.environments;switch(r.type){case"singleBaseUrl":return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported for single base URL environments; use the baseUrl option instead"}),!1;case"multipleBaseUrls":{let t=r.environments[0];if(t==null)return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported; use the baseUrl option instead"}),!1;let n=new Set(m(t.urls));for(let i of m(e))n.has(i)&&n.delete(i);return n.size>0?(this.errors.add({severity:o.Critical,message:`The provided environments are invalid; got: [${Object.keys(e).join(", ")}], expected: [${m(t.urls).join(", ")}]`}),!1):!0}}}getValueAsNumber({value:e}){if(typeof e!="number"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"number",value:e}).message});return}return e}getValueAsBoolean({value:e}){if(typeof e!="boolean"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"boolean",value:e}).message});return}return e}getValueAsString({value:e}){if(typeof e!="string"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"string",value:e}).message});return}return e}isOptional(e){switch(e.type){case"nullable":return this.isOptional(e.value);case"optional":return!0;case"named":{let r=this.resolveNamedType({typeId:e.value});return r==null?!1:r.type==="alias"?this.isNullable(r.typeReference):!1}}return!1}isNullable(e){switch(e.type){case"nullable":return!0;case"optional":return this.isNullable(e.value);case"named":{let r=this.resolveNamedType({typeId:e.value});return r==null?!1:r.type==="alias"?this.isNullable(r.typeReference):!1}}return!1}newAuthMismatchError({auth:e,values:r}){return new Error(`Expected auth type ${e.type}, got ${r.type}`)}newParameterNotRecognizedError(e){return new Error(`"${e}" is not a recognized parameter for this endpoint`)}newTypeMismatchError({expected:e,value:r}){return new Error(`Expected ${e}, got ${typeof r}`)}includeRequestBodyInWrappedRequest({body:e,inlineFileProperties:r}){switch(e.type){case"properties":case"referenced":return!0;case"fileUpload":return this.includeFileUploadBodyInWrappedRequest({fileUpload:e,inlineFileProperties:r});default:d(e)}}includeFileUploadBodyInWrappedRequest({fileUpload:e,inlineFileProperties:r}){return this.fileUploadHasBodyProperties({fileUpload:e})||r&&this.fileUploadHasFileProperties({fileUpload:e})}fileUploadHasBodyProperties({fileUpload:e}){return e.properties.some(r=>{switch(r.type){case"file":case"fileArray":return!1;case"bodyProperty":return!0;default:d(r)}})}fileUploadHasFileProperties({fileUpload:e}){return e.properties.some(r=>{switch(r.type){case"file":case"fileArray":return!0;case"bodyProperty":return!1;default:d(r)}})}isListTypeReference(e){return e.type==="optional"?this.isListTypeReference(e.value):e.type==="list"||e.type==="set"}parsedEndpointMatches({endpoint:e,parsedEndpoint:r}){return e.location.method===r.method&&e.location.path===r.path}};var g;(function(u){u.Concise="concise",u.Full="full"})(g||(g={}));var T={PathParameters:"pathParameters",QueryParameters:"queryParameters",Headers:"headers",RequestBody:"requestBody"};export{y as a,o as b,v as c,g as d,T as e};
2
- //# sourceMappingURL=chunk-D2D544ZS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../browser-compatible-base/src/dynamic-snippets/Options.ts","../../../../browser-compatible-base/src/dynamic-snippets/Scope.ts"],"sourcesContent":["import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext\";\nimport { ErrorReporter } from \"./ErrorReporter\";\n\nexport class Result {\n public reporter: ErrorReporter | undefined;\n public snippet: string | undefined;\n public err: Error | undefined;\n\n constructor() {\n this.snippet = undefined;\n this.reporter = undefined;\n this.err = undefined;\n }\n\n public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n this.reporter = context.errors.clone();\n this.snippet = snippet;\n }\n }\n\n public getResponseOrThrow({\n endpoint\n }: {\n endpoint: FernIr.dynamic.EndpointLocation;\n }): FernIr.dynamic.EndpointSnippetResponse {\n if (this.snippet != null && this.reporter != null) {\n return {\n snippet: this.snippet,\n errors: this.reporter.toDynamicSnippetErrors()\n };\n }\n throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n }\n\n private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n return true;\n }\n return snippet.length > (this.snippet?.length ?? 0);\n }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator\";\nimport { Options } from \"./Options\";\nimport { Result } from \"./Result\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n Context extends AbstractDynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n public constructor(public readonly context: Context) {}\n\n protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n public async generate(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n const endpoints = this.context.resolveEndpointLocationOrThrow(request.endpoint);\n if (endpoints.length === 0) {\n throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n }\n const result = new Result();\n for (const endpoint of endpoints) {\n const context = this.context.clone() as Context;\n const snippetGenerator = this.createSnippetGenerator(context);\n try {\n const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n if (context.errors.empty()) {\n return {\n snippet,\n errors: undefined\n };\n }\n result.update({ context, snippet });\n } catch (error) {\n if (result.err == null) {\n result.err = error as Error;\n }\n }\n }\n return result.getResponseOrThrow({ endpoint: request.endpoint });\n }\n\n public generateSync(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): FernIr.dynamic.EndpointSnippetResponse {\n const endpoints = this.context.resolveEndpointLocationOrThrow(request.endpoint);\n if (endpoints.length === 0) {\n throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n }\n const result = new Result();\n for (const endpoint of endpoints) {\n const context = this.context.clone() as Context;\n const snippetGenerator = this.createSnippetGenerator(context);\n try {\n const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n if (context.errors.empty()) {\n return {\n snippet,\n errors: undefined\n };\n }\n result.update({ context, snippet });\n } catch (error) {\n if (result.err == null) {\n result.err = error as Error;\n }\n }\n }\n return result.getResponseOrThrow({ endpoint: request.endpoint });\n }\n}\n","export const Severity = {\n Critical: \"CRITICAL\",\n Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n type Path = readonly PathItem[];\n\n type PathItem = string | ArrayPathItem;\n\n type Severity = (typeof Severity)[keyof typeof Severity];\n\n interface ArrayPathItem {\n index: number;\n }\n\n interface Error {\n path?: Path;\n severity: Severity;\n message: string;\n }\n}\n\ninterface Error_ {\n severity: \"CRITICAL\" | \"WARNING\";\n path: string[] | undefined;\n message: string;\n}\n\nexport class ErrorReporter {\n private errors: ErrorReporter.Error[];\n private path: ErrorReporter.PathItem[];\n\n constructor() {\n this.errors = [];\n this.path = [];\n }\n\n public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n this.errors.push({\n ...err,\n path: [...this.path]\n });\n }\n\n public scope(path: ErrorReporter.PathItem): void {\n this.path.push(path);\n }\n\n public unscope(): void {\n this.path.pop();\n }\n\n public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n return this.errors.filter((err) => err.severity === severity);\n }\n\n public empty(): boolean {\n return this.errors.length === 0;\n }\n\n public size(): number {\n return this.errors.length;\n }\n\n public clone(): ErrorReporter {\n const clone = new ErrorReporter();\n clone.errors = [...this.errors];\n clone.path = [...this.path];\n return clone;\n }\n\n public reset(): void {\n this.errors = [];\n this.path = [];\n }\n\n public toDynamicSnippetErrors(): Error_[] {\n return this.errors.map((err) => ({\n severity: err.severity,\n path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n message: err.message\n }));\n }\n\n private pathToStringArray(path: ErrorReporter.Path): string[] {\n const result: string[] = [];\n for (const item of path) {\n if (typeof item === \"string\") {\n result.push(item);\n continue;\n }\n result[result.length - 1] += `[${item.index}]`;\n }\n return result;\n }\n}\n","export declare namespace HttpEndpointReferenceParser {\n interface Parsed {\n path: string;\n method: Method;\n }\n\n type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n export type ValidationResult = Valid | Invalid;\n\n interface Valid {\n type: \"valid\";\n }\n\n interface Invalid {\n type: \"invalid\";\n }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n //eslint-disable-next-line\n private REFERENCE_REGEX = /^(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n const validFormat = this.REFERENCE_REGEX.test(reference);\n if (!validFormat) {\n return { type: \"invalid\" };\n }\n return { type: \"valid\" };\n }\n\n public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n const validationResponse = this.validate(reference);\n if (validationResponse.type === \"invalid\") {\n return undefined;\n }\n const match = reference.match(this.REFERENCE_REGEX);\n if (match == null || match[1] == null || match[2] == null) {\n return undefined;\n }\n return {\n method: match[1] as HttpEndpointReferenceParser.Method,\n path: match[2]\n };\n }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter\";\nimport { Options } from \"./Options\";\nimport { TypeInstance } from \"./TypeInstance\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n public config: FernGeneratorExec.GeneratorConfig;\n public options: Options;\n public errors: ErrorReporter;\n\n private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n constructor({\n ir,\n config,\n options = {}\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n options?: Options;\n }) {\n this._ir = ir;\n this.config = config;\n this.options = options;\n this.errors = new ErrorReporter();\n this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n }\n\n public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n public associateQueryParametersByWireValue({\n parameters,\n values\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const [key, value] of Object.entries(values)) {\n this.errors.scope(key);\n try {\n const parameter = parameters.find((param) => param.name.wireValue === key);\n if (parameter == null) {\n throw this.newParameterNotRecognizedError(key);\n }\n // If this query parameter supports allow-multiple, the user-provided values\n // must be wrapped in an array.\n const typeInstanceValue =\n this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value: typeInstanceValue\n });\n } finally {\n this.errors.unscope();\n }\n }\n return instances;\n }\n\n public associateByWireValueOrDefault({\n parameters,\n values\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const parameter of parameters) {\n this.errors.scope(parameter.name.wireValue);\n try {\n let value = values[parameter.name.wireValue];\n\n if (value == null) {\n if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n // synthesize a parameter value for string parameters that are missing data\n value = `<${parameter.name.wireValue}>`;\n } else {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n });\n continue;\n }\n }\n\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n } finally {\n this.errors.unscope();\n }\n }\n\n return instances;\n }\n\n public associateByWireValue({\n parameters,\n values,\n ignoreMissingParameters\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n ignoreMissingParameters?: boolean;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const [key, value] of Object.entries(values)) {\n this.errors.scope(key);\n try {\n const parameter = parameters.find((param) => param.name.wireValue === key);\n if (parameter == null) {\n if (ignoreMissingParameters) {\n // Required for request payloads that include more information than\n // just the target parameters (e.g. union base properties).\n continue;\n }\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(key).message\n });\n continue;\n }\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n } finally {\n this.errors.unscope();\n }\n }\n return instances;\n }\n\n /**\n * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n */\n public getExampleObjectProperties({\n parameters,\n snippetObject\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n snippetObject: unknown;\n }): TypeInstance[] {\n const objectRecord = (\n typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n ? snippetObject\n : {}\n ) as Record<string, unknown>;\n const instances: TypeInstance[] = [];\n for (const parameter of parameters) {\n const value = objectRecord[parameter.name.wireValue];\n if (value == null) {\n if (parameter.typeReference.type === \"nullable\") {\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value: null\n });\n }\n } else {\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n }\n }\n return instances;\n }\n\n public getSingleFileValue({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n record: Record<string, unknown>;\n }): string | undefined {\n const fileValue = record[property.wireValue];\n if (fileValue == null) {\n return undefined;\n }\n if (typeof fileValue !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file value to be a string, got ${typeof fileValue}`\n });\n return undefined;\n }\n return fileValue;\n }\n\n public getFileArrayValues({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n record: Record<string, unknown>;\n }): string[] | undefined {\n const fileArrayValue = record[property.wireValue];\n if (fileArrayValue == null) {\n return undefined;\n }\n if (!Array.isArray(fileArrayValue)) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n });\n return undefined;\n }\n const stringValues: string[] = [];\n for (const value of fileArrayValue) {\n if (typeof value !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file array value to be an array of strings, got ${typeof value}`\n });\n return undefined;\n }\n stringValues.push(value);\n }\n return stringValues;\n }\n\n public getRecord(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== \"object\" || Array.isArray(value)) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected object with key, value pairs but got: ${\n Array.isArray(value) ? \"array\" : typeof value\n }`\n });\n return undefined;\n }\n if (value == null) {\n return {};\n }\n return value as Record<string, unknown>;\n }\n\n public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n const namedType = this._ir.types[typeId];\n if (namedType == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Type identified by \"${typeId}\" could not be found`\n });\n return undefined;\n }\n return namedType;\n }\n\n public resolveDiscriminatedUnionTypeInstance({\n discriminatedUnion,\n value\n }: {\n discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n value: unknown;\n }): DiscriminatedUnionTypeInstance | undefined {\n const record = this.getRecord(value);\n if (record == null) {\n return undefined;\n }\n\n const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n const discriminantValue = record[discriminantFieldName];\n if (discriminantValue == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(discriminantFieldName).message\n });\n return undefined;\n }\n if (typeof discriminantValue !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n });\n return undefined;\n }\n\n const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n if (singleDiscriminatedUnionType == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: `No type found for discriminant value \"${discriminantValue}\"`\n });\n return undefined;\n }\n\n // Remove the discriminant from the record so that the value is valid for the type.\n const { [discriminantFieldName]: _, ...filtered } = record;\n\n return {\n singleDiscriminatedUnionType,\n discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n value: filtered\n };\n }\n\n public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n if (parsedEndpoint == null) {\n throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n }\n return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n }\n\n public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n const endpoints: FernIr.dynamic.Endpoint[] = [];\n for (const endpoint of Object.values(this._ir.endpoints)) {\n if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n endpoints.push(endpoint);\n }\n }\n\n return endpoints;\n }\n\n public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n const endpoints = this.resolveEndpointLocation(location);\n if (endpoints.length === 0) {\n throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n }\n return endpoints;\n }\n\n public needsRequestParameter({\n request,\n inlinePathParameters,\n inlineFileProperties\n }: {\n request: FernIr.dynamic.InlinedRequest;\n inlinePathParameters: boolean;\n inlineFileProperties: boolean;\n }): boolean {\n if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n return true;\n }\n if (request.queryParameters != null && request.queryParameters.length > 0) {\n return true;\n }\n if (request.headers != null && request.headers.length > 0) {\n return true;\n }\n if (request.body != null) {\n return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n }\n if (request.metadata?.onlyPathParameters) {\n return false;\n }\n return true;\n }\n\n public includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n }: {\n request: FernIr.dynamic.InlinedRequest;\n inlinePathParameters: boolean;\n }): boolean {\n return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n }\n\n public isFileUploadRequestBody(\n body: FernIr.dynamic.InlinedRequestBody\n ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n switch (body.type) {\n case \"fileUpload\":\n return true;\n case \"properties\":\n case \"referenced\":\n return false;\n default:\n assertNever(body);\n }\n }\n\n public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n if (this._ir.environments == null) {\n return undefined;\n }\n const environments = this._ir.environments.environments;\n switch (environments.type) {\n case \"singleBaseUrl\": {\n const environment = environments.environments.find((env) => env.id === environmentID);\n if (environment == null) {\n return undefined;\n }\n return environment.name;\n }\n case \"multipleBaseUrls\": {\n const environment = environments.environments.find((env) => env.id === environmentID);\n if (environment == null) {\n return undefined;\n }\n return environment.name;\n }\n default:\n assertNever(environments);\n }\n }\n\n public isSingleEnvironmentID(\n environment: FernIr.dynamic.EnvironmentValues\n ): environment is FernIr.dynamic.EnvironmentId {\n return typeof environment === \"string\";\n }\n\n public isMultiEnvironmentValues(\n environment: FernIr.dynamic.EnvironmentValues\n ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n return typeof environment === \"object\";\n }\n\n public validateMultiEnvironmentUrlValues(\n multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n ): boolean {\n if (this._ir.environments == null) {\n this.errors.add({\n severity: Severity.Critical,\n message:\n \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n });\n return false;\n }\n const environments = this._ir.environments.environments;\n switch (environments.type) {\n case \"singleBaseUrl\": {\n this.errors.add({\n severity: Severity.Critical,\n message:\n \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n });\n return false;\n }\n case \"multipleBaseUrls\": {\n const firstEnvironment = environments.environments[0];\n if (firstEnvironment == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: \"Multiple environments are not supported; use the baseUrl option instead\"\n });\n return false;\n }\n const expectedKeys = new Set(keys(firstEnvironment.urls));\n for (const key of keys(multiEnvironmentUrlValues)) {\n if (expectedKeys.has(key)) {\n expectedKeys.delete(key);\n }\n }\n if (expectedKeys.size > 0) {\n this.errors.add({\n severity: Severity.Critical,\n message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n });\n return false;\n }\n return true;\n }\n }\n }\n\n public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n if (typeof value !== \"number\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"number\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n if (typeof value !== \"boolean\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public getValueAsString({ value }: { value: unknown }): string | undefined {\n if (typeof value !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"string\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n switch (typeReference.type) {\n case \"nullable\":\n return this.isOptional(typeReference.value);\n case \"optional\":\n return true;\n case \"named\": {\n const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n if (resolvedType == null) {\n return false;\n }\n if (resolvedType.type === \"alias\") {\n return this.isNullable(resolvedType.typeReference);\n }\n return false;\n }\n }\n return false;\n }\n\n public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n switch (typeReference.type) {\n case \"nullable\":\n return true;\n case \"optional\":\n return this.isNullable(typeReference.value);\n case \"named\": {\n const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n if (resolvedType == null) {\n return false;\n }\n if (resolvedType.type === \"alias\") {\n return this.isNullable(resolvedType.typeReference);\n }\n return false;\n }\n }\n return false;\n }\n\n public newAuthMismatchError({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): Error {\n return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n }\n\n public newParameterNotRecognizedError(parameterName: string): Error {\n return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n }\n\n public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n return new Error(`Expected ${expected}, got ${typeof value}`);\n }\n\n private includeRequestBodyInWrappedRequest({\n body,\n inlineFileProperties\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n inlineFileProperties: boolean;\n }): boolean {\n switch (body.type) {\n case \"properties\":\n case \"referenced\":\n return true;\n case \"fileUpload\":\n return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n default:\n assertNever(body);\n }\n }\n\n private includeFileUploadBodyInWrappedRequest({\n fileUpload,\n inlineFileProperties\n }: {\n fileUpload: FernIr.dynamic.FileUploadRequestBody;\n inlineFileProperties: boolean;\n }): boolean {\n return (\n this.fileUploadHasBodyProperties({ fileUpload }) ||\n (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n );\n }\n\n private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n return fileUpload.properties.some((property) => {\n switch (property.type) {\n case \"file\":\n case \"fileArray\":\n return false;\n case \"bodyProperty\":\n return true;\n default:\n assertNever(property);\n }\n });\n }\n\n private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n return fileUpload.properties.some((property) => {\n switch (property.type) {\n case \"file\":\n case \"fileArray\":\n return true;\n case \"bodyProperty\":\n return false;\n default:\n assertNever(property);\n }\n });\n }\n\n private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n if (typeReference.type === \"optional\") {\n return this.isListTypeReference(typeReference.value);\n }\n return typeReference.type === \"list\" || typeReference.type === \"set\";\n }\n\n private parsedEndpointMatches({\n endpoint,\n parsedEndpoint\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n parsedEndpoint: HttpEndpointReferenceParser.Parsed;\n }): boolean {\n return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n }\n}\n","import { AbstractFormatter } from \"../ast/AbstractFormatter\";\n\n// Style of the generated snippets.\nexport enum Style {\n // Use a concise style for the snippet (top-level statements).\n Concise = \"concise\",\n\n // Use the full style for the snippet (a `main` function that can be run).\n Full = \"full\"\n}\n\n// Options used to customize the behavior of any dynamic snippets generator\nexport interface Options {\n // Config to use for a specific generator. This is independent of the customConfig\n // used by the generator, and is primarily used in testing environments.\n config?: unknown;\n\n // The formatter to use for the generated snippets.\n formatter?: AbstractFormatter;\n\n // Style of the generated snippets. By default, the executable style is used.\n style?: Style;\n}\n","export const Scope = {\n PathParameters: \"pathParameters\",\n QueryParameters: \"queryParameters\",\n Headers: \"headers\",\n RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n"],"mappings":"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","names":["Result","__publicField","context","snippet","endpoint","_a","reporter","_b","AbstractDynamicSnippetsGenerator","context","__publicField","request","options","endpoints","result","Result","endpoint","snippetGenerator","snippet","error","Severity","ErrorReporter","_ErrorReporter","__publicField","err","__spreadProps","__spreadValues","path","severity","clone","result","item","HttpEndpointReferenceParser","__publicField","reference","match","AbstractDynamicSnippetsGeneratorContext","ir","config","options","__publicField","ErrorReporter","HttpEndpointReferenceParser","parameters","values","instances","key","value","parameter","param","typeInstanceValue","Severity","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_a","_","filtered","__objRest","__restKey","rawEndpoint","parsedEndpoint","location","endpoints","endpoint","request","inlinePathParameters","inlineFileProperties","_b","body","assertNever","environmentID","environments","environment","env","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","keys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Style","Scope"]}
@@ -1,2 +0,0 @@
1
- import{h as n,i as r,m as s}from"./chunk-ZDZZCKFB.js";var a=class extends s{constructor({context:e}){super(e);n(this,"context");this.context=e}convert(e){switch(e.typeReference.type){case"list":return this.csharp.Type.list(this.convert({typeReference:e.typeReference,unboxOptionals:!0}));case"literal":return this.convertLiteral({literal:e.typeReference.value});case"map":return this.csharp.Type.map(this.convert({typeReference:e.typeReference.key}),this.convert({typeReference:e.typeReference.value}));case"named":{let t=this.context.resolveNamedType({typeId:e.typeReference.value});return t==null?this.convertUnknown():this.convertNamed({named:t})}case"optional":case"nullable":{let t=this.convert({typeReference:e.typeReference.value});return e.unboxOptionals?t.unwrapIfOptional():this.csharp.Type.optional(t)}case"primitive":return this.convertPrimitive({primitive:e.typeReference.value});case"set":return this.csharp.Type.set(this.convert({typeReference:e.typeReference,unboxOptionals:!0}));case"unknown":return this.convertUnknown();default:r(e.typeReference)}}convertToClassReference(e){return this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)})}convertNamed({named:e}){switch(e.type){case"alias":return this.convert({typeReference:e.typeReference});case"enum":case"object":return this.csharp.Type.reference(this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)}));case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.csharp.Type.reference(this.csharp.classReference({origin:e.declaration,namespace:this.context.getNamespace(e.declaration.fernFilepath)})):this.csharp.Type.object;case"undiscriminatedUnion":return this.csharp.Type.oneOf(e.types.map(t=>this.convert({typeReference:t})));default:r(e)}}convertLiteral({literal:e}){switch(e.type){case"boolean":return this.csharp.Type.boolean;case"string":return this.csharp.Type.string}}convertUnknown(){return this.csharp.Type.object}convertPrimitive({primitive:e}){switch(e){case"INTEGER":return this.csharp.Type.integer;case"UINT":return this.csharp.Type.uint;case"LONG":return this.csharp.Type.long;case"UINT_64":return this.csharp.Type.ulong;case"FLOAT":return this.csharp.Type.float;case"DOUBLE":return this.csharp.Type.double;case"BOOLEAN":return this.csharp.Type.boolean;case"STRING":return this.csharp.Type.string;case"DATE":return this.csharp.Type.dateOnly;case"DATE_TIME":return this.csharp.Type.dateTime;case"UUID":return this.csharp.Type.string;case"BASE_64":return this.csharp.Type.string;case"BIG_INTEGER":return this.csharp.Type.string;default:r(e)}}};export{a};
2
- //# sourceMappingURL=chunk-F3KILROP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/DynamicTypeMapper.ts"],"sourcesContent":["import { assertNever } from \"@fern-api/core-utils\";\nimport { ast, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n unboxOptionals?: boolean;\n }\n}\n\nexport class DynamicTypeMapper extends WithGeneration {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n super(context);\n this.context = context;\n }\n\n public convert(args: DynamicTypeMapper.Args): ast.Type {\n switch (args.typeReference.type) {\n case \"list\":\n return this.csharp.Type.list(this.convert({ typeReference: args.typeReference, unboxOptionals: true }));\n case \"literal\":\n return this.convertLiteral({ literal: args.typeReference.value });\n case \"map\": {\n return this.csharp.Type.map(\n this.convert({ typeReference: args.typeReference.key }),\n this.convert({ typeReference: args.typeReference.value })\n );\n }\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return this.convertUnknown();\n }\n return this.convertNamed({ named });\n }\n case \"optional\":\n case \"nullable\": {\n const value = this.convert({ typeReference: args.typeReference.value });\n return args.unboxOptionals ? value.unwrapIfOptional() : this.csharp.Type.optional(value);\n }\n case \"primitive\":\n return this.convertPrimitive({ primitive: args.typeReference.value });\n case \"set\":\n return this.csharp.Type.set(this.convert({ typeReference: args.typeReference, unboxOptionals: true }));\n case \"unknown\":\n return this.convertUnknown();\n default:\n assertNever(args.typeReference);\n }\n }\n\n convertToClassReference(named: FernIr.dynamic.NamedType): ast.ClassReference {\n return this.csharp.classReference({\n origin: named.declaration,\n namespace: this.context.getNamespace(named.declaration.fernFilepath)\n });\n }\n\n private convertNamed({ named }: { named: FernIr.dynamic.NamedType }): ast.Type {\n switch (named.type) {\n case \"alias\":\n return this.convert({ typeReference: named.typeReference });\n case \"enum\":\n case \"object\":\n return this.csharp.Type.reference(\n this.csharp.classReference({\n origin: named.declaration,\n namespace: this.context.getNamespace(named.declaration.fernFilepath)\n })\n );\n case \"discriminatedUnion\":\n if (!this.settings.shouldGeneratedDiscriminatedUnions) {\n return this.csharp.Type.object;\n }\n return this.csharp.Type.reference(\n this.csharp.classReference({\n origin: named.declaration,\n namespace: this.context.getNamespace(named.declaration.fernFilepath)\n })\n );\n case \"undiscriminatedUnion\":\n return this.csharp.Type.oneOf(\n named.types.map((typeReference) => {\n return this.convert({ typeReference });\n })\n );\n default:\n assertNever(named);\n }\n }\n\n private convertLiteral({ literal }: { literal: FernIr.dynamic.LiteralType }): ast.Type {\n switch (literal.type) {\n case \"boolean\":\n return this.csharp.Type.boolean;\n case \"string\":\n return this.csharp.Type.string;\n }\n }\n\n private convertUnknown(): ast.Type {\n return this.csharp.Type.object;\n }\n\n private convertPrimitive({ primitive }: { primitive: FernIr.dynamic.PrimitiveTypeV1 }): ast.Type {\n switch (primitive) {\n case \"INTEGER\":\n return this.csharp.Type.integer;\n case \"UINT\":\n return this.csharp.Type.uint;\n case \"LONG\":\n return this.csharp.Type.long;\n case \"UINT_64\":\n return this.csharp.Type.ulong;\n case \"FLOAT\":\n return this.csharp.Type.float;\n case \"DOUBLE\":\n return this.csharp.Type.double;\n case \"BOOLEAN\":\n return this.csharp.Type.boolean;\n case \"STRING\":\n return this.csharp.Type.string;\n case \"DATE\":\n return this.csharp.Type.dateOnly;\n case \"DATE_TIME\":\n return this.csharp.Type.dateTime;\n case \"UUID\":\n return this.csharp.Type.string;\n case \"BASE_64\":\n return this.csharp.Type.string;\n case \"BIG_INTEGER\":\n return this.csharp.Type.string;\n default:\n assertNever(primitive);\n }\n }\n}\n"],"mappings":"sDAaO,IAAMA,EAAN,cAAgCC,CAAe,CAGlD,YAAY,CAAE,QAAAC,CAAQ,EAAiD,CACnE,MAAMA,CAAO,EAHjBC,EAAA,KAAQ,WAIJ,KAAK,QAAUD,CACnB,CAEO,QAAQE,EAAwC,CACnD,OAAQA,EAAK,cAAc,KAAM,CAC7B,IAAK,OACD,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,QAAQ,CAAE,cAAeA,EAAK,cAAe,eAAgB,EAAK,CAAC,CAAC,EAC1G,IAAK,UACD,OAAO,KAAK,eAAe,CAAE,QAASA,EAAK,cAAc,KAAM,CAAC,EACpE,IAAK,MACD,OAAO,KAAK,OAAO,KAAK,IACpB,KAAK,QAAQ,CAAE,cAAeA,EAAK,cAAc,GAAI,CAAC,EACtD,KAAK,QAAQ,CAAE,cAAeA,EAAK,cAAc,KAAM,CAAC,CAC5D,EAEJ,IAAK,QAAS,CACV,IAAMC,EAAQ,KAAK,QAAQ,iBAAiB,CAAE,OAAQD,EAAK,cAAc,KAAM,CAAC,EAChF,OAAIC,GAAS,KACF,KAAK,eAAe,EAExB,KAAK,aAAa,CAAE,MAAAA,CAAM,CAAC,CACtC,CACA,IAAK,WACL,IAAK,WAAY,CACb,IAAMC,EAAQ,KAAK,QAAQ,CAAE,cAAeF,EAAK,cAAc,KAAM,CAAC,EACtE,OAAOA,EAAK,eAAiBE,EAAM,iBAAiB,EAAI,KAAK,OAAO,KAAK,SAASA,CAAK,CAC3F,CACA,IAAK,YACD,OAAO,KAAK,iBAAiB,CAAE,UAAWF,EAAK,cAAc,KAAM,CAAC,EACxE,IAAK,MACD,OAAO,KAAK,OAAO,KAAK,IAAI,KAAK,QAAQ,CAAE,cAAeA,EAAK,cAAe,eAAgB,EAAK,CAAC,CAAC,EACzG,IAAK,UACD,OAAO,KAAK,eAAe,EAC/B,QACIG,EAAYH,EAAK,aAAa,CACtC,CACJ,CAEA,wBAAwBC,EAAqD,CACzE,OAAO,KAAK,OAAO,eAAe,CAC9B,OAAQA,EAAM,YACd,UAAW,KAAK,QAAQ,aAAaA,EAAM,YAAY,YAAY,CACvE,CAAC,CACL,CAEQ,aAAa,CAAE,MAAAA,CAAM,EAAkD,CAC3E,OAAQA,EAAM,KAAM,CAChB,IAAK,QACD,OAAO,KAAK,QAAQ,CAAE,cAAeA,EAAM,aAAc,CAAC,EAC9D,IAAK,OACL,IAAK,SACD,OAAO,KAAK,OAAO,KAAK,UACpB,KAAK,OAAO,eAAe,CACvB,OAAQA,EAAM,YACd,UAAW,KAAK,QAAQ,aAAaA,EAAM,YAAY,YAAY,CACvE,CAAC,CACL,EACJ,IAAK,qBACD,OAAK,KAAK,SAAS,mCAGZ,KAAK,OAAO,KAAK,UACpB,KAAK,OAAO,eAAe,CACvB,OAAQA,EAAM,YACd,UAAW,KAAK,QAAQ,aAAaA,EAAM,YAAY,YAAY,CACvE,CAAC,CACL,EAPW,KAAK,OAAO,KAAK,OAQhC,IAAK,uBACD,OAAO,KAAK,OAAO,KAAK,MACpBA,EAAM,MAAM,IAAKG,GACN,KAAK,QAAQ,CAAE,cAAAA,CAAc,CAAC,CACxC,CACL,EACJ,QACID,EAAYF,CAAK,CACzB,CACJ,CAEQ,eAAe,CAAE,QAAAI,CAAQ,EAAsD,CACnF,OAAQA,EAAQ,KAAM,CAClB,IAAK,UACD,OAAO,KAAK,OAAO,KAAK,QAC5B,IAAK,SACD,OAAO,KAAK,OAAO,KAAK,MAChC,CACJ,CAEQ,gBAA2B,CAC/B,OAAO,KAAK,OAAO,KAAK,MAC5B,CAEQ,iBAAiB,CAAE,UAAAC,CAAU,EAA4D,CAC7F,OAAQA,EAAW,CACf,IAAK,UACD,OAAO,KAAK,OAAO,KAAK,QAC5B,IAAK,OACD,OAAO,KAAK,OAAO,KAAK,KAC5B,IAAK,OACD,OAAO,KAAK,OAAO,KAAK,KAC5B,IAAK,UACD,OAAO,KAAK,OAAO,KAAK,MAC5B,IAAK,QACD,OAAO,KAAK,OAAO,KAAK,MAC5B,IAAK,SACD,OAAO,KAAK,OAAO,KAAK,OAC5B,IAAK,UACD,OAAO,KAAK,OAAO,KAAK,QAC5B,IAAK,SACD,OAAO,KAAK,OAAO,KAAK,OAC5B,IAAK,OACD,OAAO,KAAK,OAAO,KAAK,SAC5B,IAAK,YACD,OAAO,KAAK,OAAO,KAAK,SAC5B,IAAK,OACD,OAAO,KAAK,OAAO,KAAK,OAC5B,IAAK,UACD,OAAO,KAAK,OAAO,KAAK,OAC5B,IAAK,cACD,OAAO,KAAK,OAAO,KAAK,OAC5B,QACIH,EAAYG,CAAS,CAC7B,CACJ,CACJ","names":["DynamicTypeMapper","WithGeneration","context","__publicField","args","named","value","assertNever","typeReference","literal","primitive"]}
@@ -1,2 +0,0 @@
1
- import{a as p}from"./chunk-SAYITSWL.js";import{a as t}from"./chunk-PBYJXQQK.js";import{a as r}from"./chunk-D2D544ZS.js";var i=class extends r{constructor({ir:e,config:n,options:o={}}){super(new t({ir:e,config:n,options:o}))}precalculate(e){this.context.precalculate(e)}async generate(e,n={}){return super.generate(e,n)}generateSync(e,n={}){return super.generateSync(e,n)}createSnippetGenerator(e){return new p({context:e})}};export{i as a};
2
- //# sourceMappingURL=chunk-GQKEVSN5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/DynamicSnippetsGenerator.ts"],"sourcesContent":["import {\n AbstractDynamicSnippetsGenerator,\n FernGeneratorExec,\n Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n DynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator\n> {\n constructor({\n ir,\n config,\n options = {}\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n options?: Options;\n }) {\n super(new DynamicSnippetsGeneratorContext({ ir, config, options }));\n }\n\n public precalculate(requests: FernIr.dynamic.EndpointSnippetRequest[]): void {\n this.context.precalculate(requests);\n }\n\n public override async generate(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n return super.generate(request, options);\n }\n\n public override generateSync(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): FernIr.dynamic.EndpointSnippetResponse {\n return super.generateSync(request, options);\n }\n\n protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n return new EndpointSnippetGenerator({ context });\n }\n}\n"],"mappings":"wHASO,IAAMA,EAAN,cAAuCC,CAG5C,CACE,YAAY,CACR,GAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,CAAC,CACf,EAIG,CACC,MAAM,IAAIC,EAAgC,CAAE,GAAAH,EAAI,OAAAC,EAAQ,QAAAC,CAAQ,CAAC,CAAC,CACtE,CAEO,aAAaE,EAAyD,CACzE,KAAK,QAAQ,aAAaA,CAAQ,CACtC,CAEA,MAAsB,SAClBC,EACAH,EAAmB,CAAC,EAC2B,CAC/C,OAAO,MAAM,SAASG,EAASH,CAAO,CAC1C,CAEgB,aACZG,EACAH,EAAmB,CAAC,EACkB,CACtC,OAAO,MAAM,aAAaG,EAASH,CAAO,CAC9C,CAEU,uBAAuBI,EAAoE,CACjG,OAAO,IAAIC,EAAyB,CAAE,QAAAD,CAAQ,CAAC,CACnD,CACJ","names":["DynamicSnippetsGenerator","AbstractDynamicSnippetsGenerator","ir","config","options","DynamicSnippetsGeneratorContext","requests","request","context","EndpointSnippetGenerator"]}
@@ -1,2 +0,0 @@
1
- import{h as s,i as l,k as n,m as p}from"./chunk-ZDZZCKFB.js";var c=class extends p{constructor({context:a}){super(a);s(this,"context");this.context=a}getFilePropertyInfo({body:a,value:i}){var o;let t={fileFields:[],bodyPropertyFields:[]},r=(o=this.context.getRecord(i))!=null?o:{};for(let e of a.properties)switch(e.type){case"file":n.Record.missingKey(r,e.wireValue)&&(r[e.wireValue]="[bytes]"),t.fileFields.push({name:this.context.getPropertyName(e.name),value:this.getSingleFileProperty({property:e,record:r})});break;case"fileArray":n.Record.missingKey(r,e.wireValue)&&(r[e.wireValue]=["[bytes]"]),t.fileFields.push({name:this.context.getPropertyName(e.name),value:this.getArrayFileProperty({property:e,record:r})});break;case"bodyProperty":if(n.Record.missingKey(r,e.name.wireValue))switch(e.typeReference.type){case"optional":break;case"primitive":{switch(e.typeReference.value.toLowerCase()){case"integer":{r[e.name.wireValue]=123;break}case"string":{r[e.name.wireValue]="[string]";break}case"boolean":{r[e.name.wireValue]=!0;break}case"double":{r[e.name.wireValue]=123.456;break}case"float":{r[e.name.wireValue]=123.456;break}case"long":{r[e.name.wireValue]=123456789;break}case"uint":{r[e.name.wireValue]=123;break}case"uint64":{r[e.name.wireValue]=12345;break}case"date":{r[e.name.wireValue]=new Date(2021,1,1);break}case"datetime":{r[e.name.wireValue]=new Date(2021,1,1,12,0,0);break}case"uuid":{r[e.name.wireValue]="123e4567-e89b-12d3-a456-426614174000";break}case"base64":{r[e.name.wireValue]="SGVsbG8gd29ybGQh";break}case"biginteger":{r[e.name.wireValue]="12345678901234567890";break}}break}default:break}t.bodyPropertyFields.push({name:this.context.getPropertyName(e.name.name),value:this.getBodyProperty({property:e,record:r})});break;default:l(e)}return t}getSingleFileProperty({property:a,record:i}){let t=this.context.getSingleFileValue({property:a,record:i});return t==null?this.csharp.TypeLiteral.nop():this.context.getFileParameterForString(t)}getArrayFileProperty({property:a,record:i}){let t=this.context.getFileArrayValues({property:a,record:i});return t==null?this.csharp.TypeLiteral.nop():this.csharp.TypeLiteral.list({valueType:this.csharp.Type.reference(this.types.FileParameter),values:t.map(r=>this.context.getFileParameterForString(r))})}getBodyProperty({property:a,record:i}){let t=i[a.name.wireValue];return t==null?this.csharp.TypeLiteral.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:a.typeReference,value:t})}};export{c as a};
2
- //# sourceMappingURL=chunk-MM7AFFVF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/FilePropertyMapper.ts"],"sourcesContent":["import { assertNever } from \"@fern-api/core-utils\";\nimport { ast, is, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport interface FilePropertyInfo {\n fileFields: ast.ConstructorField[];\n bodyPropertyFields: ast.ConstructorField[];\n}\n\nexport class FilePropertyMapper extends WithGeneration {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n super(context);\n this.context = context;\n }\n\n public getFilePropertyInfo({\n body,\n value\n }: {\n body: FernIr.dynamic.FileUploadRequestBody;\n value: unknown;\n }): FilePropertyInfo {\n const result: FilePropertyInfo = {\n fileFields: [],\n bodyPropertyFields: []\n };\n const record = this.context.getRecord(value) ?? {};\n for (const property of body.properties) {\n switch (property.type) {\n case \"file\":\n // if we don't have a record, we can fake some data for it.\n if (is.Record.missingKey(record, property.wireValue)) {\n record[property.wireValue] = \"[bytes]\";\n }\n result.fileFields.push({\n name: this.context.getPropertyName(property.name),\n value: this.getSingleFileProperty({ property, record })\n });\n break;\n case \"fileArray\":\n // if we don't have a record, we can fake some data for it.\n if (is.Record.missingKey(record, property.wireValue)) {\n record[property.wireValue] = [\"[bytes]\"];\n }\n result.fileFields.push({\n name: this.context.getPropertyName(property.name),\n value: this.getArrayFileProperty({ property, record })\n });\n break;\n case \"bodyProperty\":\n // if we don't have a record, we can try fake some data for it.\n if (is.Record.missingKey(record, property.name.wireValue)) {\n switch (property.typeReference.type) {\n case \"optional\": {\n // ignore missing optional values\n break;\n }\n case \"primitive\": {\n // for primitives, we can return a sample value.\n switch (property.typeReference.value.toLowerCase()) {\n case \"integer\": {\n record[property.name.wireValue] = 123;\n break;\n }\n case \"string\": {\n record[property.name.wireValue] = \"[string]\";\n break;\n }\n case \"boolean\": {\n record[property.name.wireValue] = true;\n break;\n }\n case \"double\": {\n record[property.name.wireValue] = 123.456;\n break;\n }\n case \"float\": {\n record[property.name.wireValue] = 123.456;\n break;\n }\n case \"long\": {\n record[property.name.wireValue] = 123456789;\n break;\n }\n case \"uint\": {\n record[property.name.wireValue] = 123;\n break;\n }\n case \"uint64\": {\n record[property.name.wireValue] = 12345;\n break;\n }\n case \"date\": {\n record[property.name.wireValue] = new Date(2021, 1, 1);\n break;\n }\n case \"datetime\": {\n record[property.name.wireValue] = new Date(2021, 1, 1, 12, 0, 0);\n break;\n }\n case \"uuid\": {\n record[property.name.wireValue] = \"123e4567-e89b-12d3-a456-426614174000\";\n break;\n }\n case \"base64\": {\n record[property.name.wireValue] = \"SGVsbG8gd29ybGQh\";\n break;\n }\n case \"biginteger\": {\n record[property.name.wireValue] = \"12345678901234567890\";\n break;\n }\n }\n break;\n }\n\n default: {\n // todo: optionally synthesize a value for a other types in the future\n break;\n }\n }\n }\n result.bodyPropertyFields.push({\n name: this.context.getPropertyName(property.name.name),\n value: this.getBodyProperty({ property, record })\n });\n break;\n default:\n assertNever(property);\n }\n }\n return result;\n }\n\n private getSingleFileProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n record: Record<string, unknown>;\n }): ast.TypeLiteral {\n const fileValue = this.context.getSingleFileValue({ property, record });\n if (fileValue == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.context.getFileParameterForString(fileValue);\n }\n\n private getArrayFileProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n record: Record<string, unknown>;\n }): ast.TypeLiteral {\n const fileValues = this.context.getFileArrayValues({ property, record });\n if (fileValues == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.csharp.TypeLiteral.list({\n valueType: this.csharp.Type.reference(this.types.FileParameter),\n values: fileValues.map((value) => this.context.getFileParameterForString(value))\n });\n }\n\n private getBodyProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.NamedParameter;\n record: Record<string, unknown>;\n }): ast.TypeLiteral {\n const bodyPropertyValue = record[property.name.wireValue];\n if (bodyPropertyValue == null) {\n return this.csharp.TypeLiteral.nop();\n }\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: property.typeReference,\n value: bodyPropertyValue\n });\n }\n}\n"],"mappings":"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","names":["FilePropertyMapper","WithGeneration","context","__publicField","body","value","_a","result","record","property","is","assertNever","fileValue","fileValues","bodyPropertyValue"]}
@@ -1,2 +0,0 @@
1
- import{a as p}from"./chunk-CDMZ2O62.js";import{c as a}from"./chunk-D2D544ZS.js";import{a as c}from"./chunk-F3KILROP.js";import{a as m}from"./chunk-MM7AFFVF.js";import{h as r,n as o}from"./chunk-ZDZZCKFB.js";var l=class h extends a{constructor({ir:e,config:t,options:n,generation:s}){super({ir:e,config:t,options:n});r(this,"ir");r(this,"dynamicTypeMapper");r(this,"dynamicTypeLiteralMapper");r(this,"filePropertyMapper");r(this,"generation");this.ir=e,this.generation=s!=null?s:new o(e,t.workspaceName,t.customConfig!=null?t.customConfig:{},t),this.dynamicTypeMapper=new c({context:this}),this.dynamicTypeLiteralMapper=new p({context:this}),this.filePropertyMapper=new m({context:this})}get namespaces(){return this.generation.namespaces}get registry(){return this.generation.registry}get extern(){return this.generation.extern}get settings(){return this.generation.settings}get constants(){return this.generation.constants}get names(){return this.generation.names}get types(){return this.generation.types}get model(){return this.generation.model}get csharp(){return this.generation.csharp}get System(){return this.extern.System}get NUnit(){return this.extern.NUnit}get OneOf(){return this.extern.OneOf}get Google(){return this.extern.Google}clone(){return new h({ir:this.ir,config:this.config,options:this.options,generation:this.generation})}getFileParameterForString(e){return this.csharp.TypeLiteral.reference(this.csharp.instantiateClass({classReference:this.types.FileParameter,arguments_:[],properties:[{name:"Stream",value:this.getMemoryStreamForString(e)}],multiline:!0}))}getMemoryStreamForString(e){return this.extern.System.IO.MemoryStream.new({arguments_:[this.csharp.invokeMethod({on:this.extern.System.Text.Encoding_UTF8,method:"GetBytes",arguments_:[this.csharp.TypeLiteral.string(e)]})]})}getClassName(e){return e.pascalCase.safeName}getParameterName(e){return e.camelCase.safeName}getPropertyName(e){return e.pascalCase.safeName}getMethodName(e){return`${e.pascalCase.safeName}Async`}getNamespace(e,t){let n=this.getNamespaceSegments(e);return n=t!=null?[...n,t]:n,[this.namespaces.root,...n].join(".")}getEnvironmentTypeReferenceFromID(e){let t=this.resolveEnvironmentName(e);if(t!=null)return this.getEnvironmentClassReferenceForEnumName(t)}getEnvironmentClassReferenceForEnumName(e){return this.csharp.classReference({name:`${this.generation.types.Environments.name}.${this.getClassName(e)}`,namespace:this.namespaces.root})}getNamespaceSegments(e){return(this.settings.explicitNamespaces?e.allParts:e.packagePath).map(n=>n.pascalCase.safeName)}precalculate(e){this.generation.initialize(),this.extern.System.Collections.Generic.KeyValuePair(),this.extern.System.Collections.Generic.IEnumerable(),this.extern.System.Collections.Generic.IAsyncEnumerable(),this.extern.System.Collections.Generic.HashSet(),this.extern.System.Collections.Generic.List(),this.extern.System.Collections.Generic.Dictionary(),this.extern.System.Threading.Tasks.Task(),Object.entries(this.ir.types).sort((t,n)=>t[0].length-n[0].length).forEach(([t,n])=>{this.dynamicTypeMapper.convertToClassReference(n)});for(let[t,n]of e.entries())if(this.csharp.classReference({origin:this.model.staticExplicit(`Example${t}`),namespace:"Usage"}),n.endpoint){let s=this.resolveEndpointLocation(n.endpoint);for(let i of s)switch(i.request.type){case"inlined":this.csharp.classReference({origin:i.request.declaration.name,namespace:this.getNamespace(i.request.declaration.fernFilepath)});break;case"body":break}}this.generation.types.ClientOptions,this.generation.types.RootClient,this.csharp.freezeClassReferences()}};export{l as a};
2
- //# sourceMappingURL=chunk-PBYJXQQK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/DynamicSnippetsGeneratorContext.ts"],"sourcesContent":["import {\n AbstractDynamicSnippetsGeneratorContext,\n FernGeneratorExec,\n Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { ast, BaseCsharpCustomConfigSchema, Generation } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper\";\nimport { DynamicTypeMapper } from \"./DynamicTypeMapper\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n public dynamicTypeMapper: DynamicTypeMapper;\n public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n public filePropertyMapper: FilePropertyMapper;\n\n public readonly generation: Generation;\n\n public get namespaces() {\n return this.generation.namespaces;\n }\n public get registry() {\n return this.generation.registry;\n }\n public get extern() {\n return this.generation.extern;\n }\n public get settings() {\n return this.generation.settings;\n }\n public get constants() {\n return this.generation.constants;\n }\n public get names() {\n return this.generation.names;\n }\n public get types() {\n return this.generation.types;\n }\n public get model() {\n return this.generation.model;\n }\n public get csharp() {\n return this.generation.csharp;\n }\n public get System() {\n return this.extern.System;\n }\n public get NUnit() {\n return this.extern.NUnit;\n }\n public get OneOf() {\n return this.extern.OneOf;\n }\n public get Google() {\n return this.extern.Google;\n }\n\n constructor({\n ir,\n config,\n options,\n generation\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n options?: Options;\n generation?: Generation;\n }) {\n super({ ir, config, options });\n this.ir = ir;\n\n this.generation =\n generation ??\n new Generation(\n ir,\n config.workspaceName,\n config.customConfig != null\n ? (config.customConfig as BaseCsharpCustomConfigSchema)\n : ({} as BaseCsharpCustomConfigSchema),\n config\n );\n\n this.dynamicTypeMapper = new DynamicTypeMapper({ context: this });\n this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n this.filePropertyMapper = new FilePropertyMapper({ context: this });\n }\n\n public clone(): DynamicSnippetsGeneratorContext {\n return new DynamicSnippetsGeneratorContext({\n ir: this.ir,\n config: this.config,\n options: this.options,\n generation: this.generation\n });\n }\n\n public getFileParameterForString(str: string): ast.TypeLiteral {\n return this.csharp.TypeLiteral.reference(\n this.csharp.instantiateClass({\n classReference: this.types.FileParameter,\n arguments_: [],\n properties: [\n {\n name: \"Stream\",\n value: this.getMemoryStreamForString(str)\n }\n ],\n multiline: true\n })\n );\n }\n\n public getMemoryStreamForString(str: string): ast.ClassInstantiation {\n return this.extern.System.IO.MemoryStream.new({\n arguments_: [\n this.csharp.invokeMethod({\n on: this.extern.System.Text.Encoding_UTF8,\n method: \"GetBytes\",\n arguments_: [this.csharp.TypeLiteral.string(str)]\n })\n ]\n });\n }\n\n public getClassName(name: FernIr.Name): string {\n return name.pascalCase.safeName;\n }\n\n public getParameterName(name: FernIr.Name): string {\n return name.camelCase.safeName;\n }\n\n public getPropertyName(name: FernIr.Name): string {\n return name.pascalCase.safeName;\n }\n\n public getMethodName(name: FernIr.Name): string {\n return `${name.pascalCase.safeName}Async`;\n }\n\n public getNamespace(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n let parts = this.getNamespaceSegments(fernFilepath);\n parts = suffix != null ? [...parts, suffix] : parts;\n return [this.namespaces.root, ...parts].join(\".\");\n }\n\n public getEnvironmentTypeReferenceFromID(environmentID: string): ast.ClassReference | undefined {\n const environmentName = this.resolveEnvironmentName(environmentID);\n if (environmentName == null) {\n return undefined;\n }\n return this.getEnvironmentClassReferenceForEnumName(environmentName);\n }\n\n private getEnvironmentClassReferenceForEnumName(name: FernIr.Name): ast.ClassReference {\n return this.csharp.classReference({\n name: `${this.generation.types.Environments.name}.${this.getClassName(name)}`,\n namespace: this.namespaces.root\n });\n }\n\n private getNamespaceSegments(fernFilepath: FernIr.dynamic.FernFilepath): string[] {\n const segments = this.settings.explicitNamespaces ? fernFilepath.allParts : fernFilepath.packagePath;\n return segments.map((segment) => segment.pascalCase.safeName);\n }\n\n public precalculate(requests: Partial<FernIr.dynamic.EndpointSnippetRequest>[]): void {\n this.generation.initialize();\n this.extern.System.Collections.Generic.KeyValuePair();\n this.extern.System.Collections.Generic.IEnumerable();\n this.extern.System.Collections.Generic.IAsyncEnumerable();\n this.extern.System.Collections.Generic.HashSet();\n this.extern.System.Collections.Generic.List();\n this.extern.System.Collections.Generic.Dictionary();\n this.extern.System.Threading.Tasks.Task();\n\n // generate the names for the model types\n Object.entries(this.ir.types)\n .sort((a, b) => {\n // sort by shortest key length\n return a[0].length - b[0].length;\n })\n .forEach(([typeId, type]) => {\n this.dynamicTypeMapper.convertToClassReference(type);\n });\n\n for (const [idx, request] of requests.entries()) {\n // generate the class names for the examples\n\n this.csharp.classReference({\n origin: this.model.staticExplicit(`Example${idx}`),\n namespace: \"Usage\"\n });\n\n if (request.endpoint) {\n const endpoints = this.resolveEndpointLocation(request.endpoint);\n for (const endpoint of endpoints) {\n switch (endpoint.request.type) {\n case \"inlined\":\n this.csharp.classReference({\n origin: endpoint.request.declaration.name,\n namespace: this.getNamespace(endpoint.request.declaration.fernFilepath)\n });\n\n break;\n\n case \"body\":\n break;\n }\n }\n }\n }\n\n this.generation.types.ClientOptions;\n this.generation.types.RootClient;\n\n // after generating the names for everything, freeze the class references\n this.csharp.freezeClassReferences();\n }\n}\n"],"mappings":"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","names":["DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","AbstractDynamicSnippetsGeneratorContext","ir","config","options","generation","__publicField","Generation","DynamicTypeMapper","DynamicTypeLiteralMapper","FilePropertyMapper","str","name","fernFilepath","suffix","parts","environmentID","environmentName","segment","requests","a","b","typeId","type","idx","request","endpoints","endpoint"]}