@fern-api/swift-dynamic-snippets 0.1.1 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/index.cjs +39 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +145 -0
  4. package/dist/index.d.ts +145 -0
  5. package/dist/index.js +39 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +11 -12
  8. package/cjs/Config.cjs +0 -12
  9. package/cjs/Config.cjs.map +0 -1
  10. package/cjs/Config.d.cts +0 -4
  11. package/cjs/DynamicSnippetsGenerator.cjs +0 -41
  12. package/cjs/DynamicSnippetsGenerator.cjs.map +0 -1
  13. package/cjs/DynamicSnippetsGenerator.d.cts +0 -18
  14. package/cjs/EndpointSnippetGenerator.cjs +0 -41
  15. package/cjs/EndpointSnippetGenerator.cjs.map +0 -1
  16. package/cjs/EndpointSnippetGenerator.d.cts +0 -54
  17. package/cjs/context/DynamicSnippetsGeneratorContext.cjs +0 -41
  18. package/cjs/context/DynamicSnippetsGeneratorContext.cjs.map +0 -1
  19. package/cjs/context/DynamicSnippetsGeneratorContext.d.cts +0 -4
  20. package/cjs/context/DynamicTypeLiteralMapper.cjs +0 -41
  21. package/cjs/context/DynamicTypeLiteralMapper.cjs.map +0 -1
  22. package/cjs/context/DynamicTypeLiteralMapper.d.cts +0 -4
  23. package/cjs/context/DynamicTypeMapper.cjs +0 -41
  24. package/cjs/context/DynamicTypeMapper.cjs.map +0 -1
  25. package/cjs/context/DynamicTypeMapper.d.cts +0 -4
  26. package/cjs/context/FilePropertyMapper.cjs +0 -41
  27. package/cjs/context/FilePropertyMapper.cjs.map +0 -1
  28. package/cjs/context/FilePropertyMapper.d.cts +0 -4
  29. package/cjs/context/index.cjs +0 -41
  30. package/cjs/context/index.cjs.map +0 -1
  31. package/cjs/context/index.d.cts +0 -4
  32. package/cjs/index-DS-GXEiz.d.cts +0 -89
  33. package/cjs/index.cjs +0 -53
  34. package/cjs/index.cjs.map +0 -1
  35. package/cjs/index.d.cts +0 -7
  36. package/cjs/util/pascal-case.cjs +0 -23
  37. package/cjs/util/pascal-case.cjs.map +0 -1
  38. package/cjs/util/pascal-case.d.cts +0 -3
  39. package/esm/Config.d.ts +0 -4
  40. package/esm/Config.js +0 -2
  41. package/esm/Config.js.map +0 -1
  42. package/esm/DynamicSnippetsGenerator.d.ts +0 -18
  43. package/esm/DynamicSnippetsGenerator.js +0 -2
  44. package/esm/DynamicSnippetsGenerator.js.map +0 -1
  45. package/esm/EndpointSnippetGenerator.d.ts +0 -54
  46. package/esm/EndpointSnippetGenerator.js +0 -2
  47. package/esm/EndpointSnippetGenerator.js.map +0 -1
  48. package/esm/chunk-2M2RBZK2.js +0 -2
  49. package/esm/chunk-2M2RBZK2.js.map +0 -1
  50. package/esm/chunk-6DFEQNIA.js +0 -2
  51. package/esm/chunk-6DFEQNIA.js.map +0 -1
  52. package/esm/chunk-7RC2HH3P.js +0 -2
  53. package/esm/chunk-7RC2HH3P.js.map +0 -1
  54. package/esm/chunk-FX6IFKZ7.js +0 -2
  55. package/esm/chunk-FX6IFKZ7.js.map +0 -1
  56. package/esm/chunk-HTU5V5TT.js +0 -2
  57. package/esm/chunk-HTU5V5TT.js.map +0 -1
  58. package/esm/chunk-IHG2VZKL.js +0 -2
  59. package/esm/chunk-IHG2VZKL.js.map +0 -1
  60. package/esm/chunk-JFTYS7SI.js +0 -20
  61. package/esm/chunk-JFTYS7SI.js.map +0 -1
  62. package/esm/chunk-KIHSBETU.js +0 -2
  63. package/esm/chunk-KIHSBETU.js.map +0 -1
  64. package/esm/chunk-PJTPV2D6.js +0 -15
  65. package/esm/chunk-PJTPV2D6.js.map +0 -1
  66. package/esm/chunk-PYMG6Y4R.js +0 -12
  67. package/esm/chunk-PYMG6Y4R.js.map +0 -1
  68. package/esm/chunk-WG3NZOM6.js +0 -2
  69. package/esm/chunk-WG3NZOM6.js.map +0 -1
  70. package/esm/chunk-WXHVUJ6D.js +0 -2
  71. package/esm/chunk-WXHVUJ6D.js.map +0 -1
  72. package/esm/chunk-ZIQ5ITTV.js +0 -2
  73. package/esm/chunk-ZIQ5ITTV.js.map +0 -1
  74. package/esm/context/DynamicSnippetsGeneratorContext.d.ts +0 -4
  75. package/esm/context/DynamicSnippetsGeneratorContext.js +0 -2
  76. package/esm/context/DynamicSnippetsGeneratorContext.js.map +0 -1
  77. package/esm/context/DynamicTypeLiteralMapper.d.ts +0 -4
  78. package/esm/context/DynamicTypeLiteralMapper.js +0 -2
  79. package/esm/context/DynamicTypeLiteralMapper.js.map +0 -1
  80. package/esm/context/DynamicTypeMapper.d.ts +0 -4
  81. package/esm/context/DynamicTypeMapper.js +0 -2
  82. package/esm/context/DynamicTypeMapper.js.map +0 -1
  83. package/esm/context/FilePropertyMapper.d.ts +0 -4
  84. package/esm/context/FilePropertyMapper.js +0 -2
  85. package/esm/context/FilePropertyMapper.js.map +0 -1
  86. package/esm/context/index.d.ts +0 -4
  87. package/esm/context/index.js +0 -2
  88. package/esm/context/index.js.map +0 -1
  89. package/esm/index-DS-GXEiz.d.ts +0 -89
  90. package/esm/index.d.ts +0 -7
  91. package/esm/index.js +0 -14
  92. package/esm/index.js.map +0 -1
  93. package/esm/util/pascal-case.d.ts +0 -3
  94. package/esm/util/pascal-case.js +0 -2
  95. package/esm/util/pascal-case.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/isFinite.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/maxSafeInteger.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/isSafeNumber.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toOrdinal.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/makeOrdinal.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toWords.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toWordsOrdinal.js","../../../../../node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/index.js","../../../../../packages/commons/core-utils/src/assert.ts","../../../../../packages/commons/core-utils/src/index.ts","../../../../../packages/commons/core-utils/src/noop.ts","../../../../../packages/commons/core-utils/src/objects/keys.ts","../../../../../packages/commons/core-utils/src/objects/values.ts","../../../codegen/src/helpers/enum-with-associated-values/enum-with-associated-values.ts","../../../codegen/src/helpers/pascal-case.ts","../../../codegen/src/helpers/enum-with-associated-values/index.ts","../../../codegen/src/helpers/literal-enum/literal-enum.ts","../../../codegen/src/helpers/literal-enum/index.ts","../../../codegen/src/syntax/reserved-keywords.ts","../../../codegen/src/swift.ts","../../../codegen/src/ast/index.ts","../../../codegen/src/ast/AccessLevel.ts","../../../codegen/src/ast/Class.ts","../../../codegen/src/ast/core/index.ts","../../../codegen/src/ast/core/AstNode.ts","../../../../browser-compatible-base/src/ast/index.ts","../../../../browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../browser-compatible-base/src/ast/AbstractWriter.ts","../../../../browser-compatible-base/src/ast/CodeBlock.ts","../../../codegen/src/ast/core/Writer.ts","../../../codegen/src/ast/CodeBlock.ts","../../../codegen/src/ast/Comment.ts","../../../codegen/src/ast/ComputedProperty.ts","../../../codegen/src/syntax/escape-swift-string-literal.ts","../../../codegen/src/ast/Expression.ts","../../../codegen/src/ast/Statement.ts","../../../codegen/src/ast/DeclarationType.ts","../../../codegen/src/ast/DocComment.ts","../../../codegen/src/ast/EnumWithAssociatedValues.ts","../../../codegen/src/ast/EnumWithRawValues.ts","../../../codegen/src/ast/Extension.ts","../../../codegen/src/ast/FunctionArgument.ts","../../../codegen/src/ast/FunctionParameter.ts","../../../codegen/src/ast/Initializer.ts","../../../codegen/src/ast/LineBreak.ts","../../../codegen/src/ast/Method.ts","../../../codegen/src/ast/Pattern.ts","../../../codegen/src/ast/Property.ts","../../../codegen/src/ast/Protocol.ts","../../../codegen/src/ast/Struct.ts","../../../codegen/src/ast/Type.ts","../../../codegen/src/ast/TypeReference.ts","../../../codegen/src/symbol/index.ts","../../../codegen/src/symbol/symbol.ts","../../../codegen/src/symbol/symbol-registry/symbol-registry.ts","../../../codegen/src/symbol/symbol-registry/symbol-graph/index.ts","../../../codegen/src/symbol/symbol-registry/symbol-graph/symbol-graph.ts","../../../codegen/src/symbol/symbol-registry/symbol-graph/symbol.ts","../../../codegen/src/index.ts"],"sourcesContent":["'use strict';\n\n// Simplified https://gist.github.com/marlun78/885eb0021e980c6ce0fb\nfunction isFinite(value) {\n return !(typeof value !== 'number' || value !== value || value === Infinity || value === -Infinity);\n}\n\nmodule.exports = isFinite;\n","'use strict';\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\nmodule.exports = MAX_SAFE_INTEGER;\n","'use strict';\n\nvar MAX_SAFE_INTEGER = require('./maxSafeInteger');\n\nfunction isSafeNumber(value) {\n return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isSafeNumber;\n","'use strict';\n\nvar isFinite = require('./isFinite');\nvar isSafeNumber = require('./isSafeNumber');\n\n/**\n * Converts an integer into a string with an ordinal postfix.\n * If number is decimal, the decimals will be removed.\n * @example toOrdinal(12) => '12th'\n * @param {number|string} number\n * @returns {string}\n */\nfunction toOrdinal(number) {\n var num = parseInt(number, 10);\n\n if (!isFinite(num)) {\n throw new TypeError(\n 'Not a finite number: ' + number + ' (' + typeof number + ')'\n );\n }\n if (!isSafeNumber(num)) {\n throw new RangeError(\n 'Input is not a safe number, it’s either too large or too small.'\n );\n }\n var str = String(num);\n var lastTwoDigits = Math.abs(num % 100);\n var betweenElevenAndThirteen = lastTwoDigits >= 11 && lastTwoDigits <= 13;\n var lastChar = str.charAt(str.length - 1);\n return str + (betweenElevenAndThirteen ? 'th'\n : lastChar === '1' ? 'st'\n : lastChar === '2' ? 'nd'\n : lastChar === '3' ? 'rd'\n : 'th');\n}\n\nmodule.exports = toOrdinal;\n","'use strict';\n\nvar ENDS_WITH_DOUBLE_ZERO_PATTERN = /(hundred|thousand|(m|b|tr|quadr)illion)$/;\nvar ENDS_WITH_TEEN_PATTERN = /teen$/;\nvar ENDS_WITH_Y_PATTERN = /y$/;\nvar ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN = /(zero|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)$/;\nvar ordinalLessThanThirteen = {\n zero: 'zeroth',\n one: 'first',\n two: 'second',\n three: 'third',\n four: 'fourth',\n five: 'fifth',\n six: 'sixth',\n seven: 'seventh',\n eight: 'eighth',\n nine: 'ninth',\n ten: 'tenth',\n eleven: 'eleventh',\n twelve: 'twelfth'\n};\n\n/**\n * Converts a number-word into an ordinal number-word.\n * @example makeOrdinal('one') => 'first'\n * @param {string} words\n * @returns {string}\n */\nfunction makeOrdinal(words) {\n // Ends with *00 (100, 1000, etc.) or *teen (13, 14, 15, 16, 17, 18, 19)\n if (ENDS_WITH_DOUBLE_ZERO_PATTERN.test(words) || ENDS_WITH_TEEN_PATTERN.test(words)) {\n return words + 'th';\n }\n // Ends with *y (20, 30, 40, 50, 60, 70, 80, 90)\n else if (ENDS_WITH_Y_PATTERN.test(words)) {\n return words.replace(ENDS_WITH_Y_PATTERN, 'ieth');\n }\n // Ends with one through twelve\n else if (ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN.test(words)) {\n return words.replace(ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN, replaceWithOrdinalVariant);\n }\n return words;\n}\n\nfunction replaceWithOrdinalVariant(match, numberWord) {\n return ordinalLessThanThirteen[numberWord];\n}\n\nmodule.exports = makeOrdinal;\n","'use strict';\n\nvar makeOrdinal = require('./makeOrdinal');\nvar isFinite = require('./isFinite');\nvar isSafeNumber = require('./isSafeNumber');\n\nvar TEN = 10;\nvar ONE_HUNDRED = 100;\nvar ONE_THOUSAND = 1000;\nvar ONE_MILLION = 1000000;\nvar ONE_BILLION = 1000000000; // 1.000.000.000 (9)\nvar ONE_TRILLION = 1000000000000; // 1.000.000.000.000 (12)\nvar ONE_QUADRILLION = 1000000000000000; // 1.000.000.000.000.000 (15)\nvar MAX = 9007199254740992; // 9.007.199.254.740.992 (15)\n\nvar LESS_THAN_TWENTY = [\n 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',\n 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'\n];\n\nvar TENTHS_LESS_THAN_HUNDRED = [\n 'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'\n];\n\n/**\n * Converts an integer into words.\n * If number is decimal, the decimals will be removed.\n * @example toWords(12) => 'twelve'\n * @param {number|string} number\n * @param {boolean} [asOrdinal] - Deprecated, use toWordsOrdinal() instead!\n * @returns {string}\n */\nfunction toWords(number, asOrdinal) {\n var words;\n var num = parseInt(number, 10);\n\n if (!isFinite(num)) {\n throw new TypeError(\n 'Not a finite number: ' + number + ' (' + typeof number + ')'\n );\n }\n if (!isSafeNumber(num)) {\n throw new RangeError(\n 'Input is not a safe number, it’s either too large or too small.'\n );\n }\n words = generateWords(num);\n return asOrdinal ? makeOrdinal(words) : words;\n}\n\nfunction generateWords(number) {\n var remainder, word,\n words = arguments[1];\n\n // We’re done\n if (number === 0) {\n return !words ? 'zero' : words.join(' ').replace(/,$/, '');\n }\n // First run\n if (!words) {\n words = [];\n }\n // If negative, prepend “minus”\n if (number < 0) {\n words.push('minus');\n number = Math.abs(number);\n }\n\n if (number < 20) {\n remainder = 0;\n word = LESS_THAN_TWENTY[number];\n\n } else if (number < ONE_HUNDRED) {\n remainder = number % TEN;\n word = TENTHS_LESS_THAN_HUNDRED[Math.floor(number / TEN)];\n // In case of remainder, we need to handle it here to be able to add the “-”\n if (remainder) {\n word += '-' + LESS_THAN_TWENTY[remainder];\n remainder = 0;\n }\n\n } else if (number < ONE_THOUSAND) {\n remainder = number % ONE_HUNDRED;\n word = generateWords(Math.floor(number / ONE_HUNDRED)) + ' hundred';\n\n } else if (number < ONE_MILLION) {\n remainder = number % ONE_THOUSAND;\n word = generateWords(Math.floor(number / ONE_THOUSAND)) + ' thousand,';\n\n } else if (number < ONE_BILLION) {\n remainder = number % ONE_MILLION;\n word = generateWords(Math.floor(number / ONE_MILLION)) + ' million,';\n\n } else if (number < ONE_TRILLION) {\n remainder = number % ONE_BILLION;\n word = generateWords(Math.floor(number / ONE_BILLION)) + ' billion,';\n\n } else if (number < ONE_QUADRILLION) {\n remainder = number % ONE_TRILLION;\n word = generateWords(Math.floor(number / ONE_TRILLION)) + ' trillion,';\n\n } else if (number <= MAX) {\n remainder = number % ONE_QUADRILLION;\n word = generateWords(Math.floor(number / ONE_QUADRILLION)) +\n ' quadrillion,';\n }\n\n words.push(word);\n return generateWords(remainder, words);\n}\n\nmodule.exports = toWords;\n","'use strict';\n\nvar makeOrdinal = require('./makeOrdinal');\nvar toWords = require('./toWords');\n\n/**\n * Converts a number into ordinal words.\n * @example toWordsOrdinal(12) => 'twelfth'\n * @param {number|string} number\n * @returns {string}\n */\nfunction toWordsOrdinal(number) {\n var words = toWords(number);\n return makeOrdinal(words);\n}\n\nmodule.exports = toWordsOrdinal;\n","'use strict'; \n\nmodule.exports = {\n toOrdinal: require('./toOrdinal'),\n toWords: require('./toWords'),\n toWordsOrdinal: require('./toWordsOrdinal')\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 { addPrefixToString } from \"./addPrefixToString\";\nexport { assert, assertDefined, assertNever, assertNeverNoThrow, assertNonNull, assertVoidNoThrow } from \"./assert\";\nexport { delay } from \"./delay/delay\";\nexport { withMinimumTime } from \"./delay/withMinimumTime\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty\";\nexport * as Examples from \"./examples\";\nexport { extractErrorMessage } from \"./extractErrorMessage\";\nexport { getDuplicates } from \"./getDuplicates\";\nexport { identity } from \"./identity\";\nexport { isNonNullish } from \"./isNonNullish\";\nexport { MediaType } from \"./mediaType\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides\";\nexport { noop } from \"./noop\";\nexport {\n haveSameNullishness,\n nullIfNullish,\n nullIfSomeNullish,\n undefinedIfNullish,\n undefinedIfSomeNullish\n} from \"./nullishUtils\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor\";\nexport { type Entries, entries } from \"./objects/entries\";\nexport { isPlainObject } from \"./objects/isPlainObject\";\nexport { keys } from \"./objects/keys\";\nexport { mapValues } from \"./objects/mapValues\";\nexport { type Values, values } from \"./objects/values\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator\";\nexport { PLATFORM, type Platform } from \"./platform\";\nexport { removeSuffix } from \"./removeSuffix\";\nexport { replaceEnvVariables } from \"./replaceEnvVars\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils\";\nexport { type SetRequired } from \"./setRequired\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash\";\nexport { titleCase } from \"./titleCase\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks\";\n","// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function noop(): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n return Object.keys(object) as (keyof T)[];\n}\n","export type Values<T> = T[keyof T];\n\nexport function values<T extends object>(object: T): Values<T>[] {\n return Object.values(object) as Values<T>[];\n}\n","import { camelCase, upperFirst } from \"lodash-es\";\nimport { toWords } from \"number-to-words\";\n\nimport { pascalCase } from \"../pascal-case\";\n\n/**\n * Generates a PascalCase name from a value (for type/struct names).\n */\nexport function sanitizeToPascalCase(value: string): string {\n const sanitized = sanitizeForIdentifier(value);\n return pascalCase(sanitized);\n}\n\n/**\n * Generates a camelCase name from a value (for property/case names).\n */\nexport function sanitizeToCamelCase(value: string): string {\n const sanitized = sanitizeForIdentifier(value);\n return camelCase(sanitized);\n}\n\nexport function sanitizeForIdentifier(originalValue: string): string {\n if (originalValue === \"\") {\n return \"empty\";\n }\n\n let sanitizedValue = originalValue;\n\n // Convert leading numbers to words first\n if (/^\\d/.test(sanitizedValue)) {\n const result = convertLeadingNumberToWords(sanitizedValue);\n sanitizedValue = result.numberAsWords + upperFirst(result.rest);\n }\n\n const isAlreadyValid = /^[a-zA-Z][a-zA-Z0-9]*$/.test(sanitizedValue);\n if (!isAlreadyValid) {\n // Remove invalid characters from the left first to avoid unwanted capitalization\n sanitizedValue = sanitizedValue.replace(/^[^a-zA-Z0-9]+/, \"\");\n // Apply camelCase to preserve word boundaries\n sanitizedValue = camelCase(sanitizedValue);\n }\n\n // Double-check if it still starts with a digit (shouldn't happen, but safety check)\n if (/^\\d/.test(sanitizedValue)) {\n sanitizedValue = \"value\" + sanitizedValue;\n }\n\n if (sanitizedValue === \"\") {\n return \"value\";\n }\n\n return sanitizedValue;\n}\n\nfunction convertLeadingNumberToWords(value: string): { numberAsWords: string; rest: string } {\n // Extract leading digits\n const match = value.match(/^(\\d+)/);\n if (!match || !match[1]) {\n return { numberAsWords: \"\", rest: value };\n }\n\n const leadingNumber = match[1];\n const rest = value.slice(leadingNumber.length);\n\n try {\n // Convert the number to words and remove spaces/hyphens\n const numberAsWords = toWords(parseInt(leadingNumber, 10));\n return { numberAsWords, rest };\n } catch {\n // If conversion fails, fall back to digit-by-digit\n const digitWords: Record<string, string> = {\n \"0\": \"zero\",\n \"1\": \"one\",\n \"2\": \"two\",\n \"3\": \"three\",\n \"4\": \"four\",\n \"5\": \"five\",\n \"6\": \"six\",\n \"7\": \"seven\",\n \"8\": \"eight\",\n \"9\": \"nine\"\n };\n const words = leadingNumber\n .split(\"\")\n .map((digit) => digitWords[digit] || digit)\n .join(\"\");\n return { numberAsWords: words, rest };\n }\n}\n","import { camelCase, upperFirst } from \"lodash-es\";\n\nexport function pascalCase(str: string) {\n return upperFirst(camelCase(str));\n}\n","export * as EnumWithAssociatedValues from \"./enum-with-associated-values\";\n","import { camelCase } from \"lodash-es\";\n\nimport { pascalCase } from \"../pascal-case\";\n\n/**\n * Generates a safe name for a string literal enum from the literal value.\n */\nexport function generateName(literalValue: string): string {\n const sanitizedLiteralValue = sanitizeLiteralValue(literalValue);\n return pascalCase(sanitizedLiteralValue);\n}\n\n/**\n * Generates a safe enum case label for a string literal enum from the literal value.\n */\nexport function generateEnumCaseLabel(literalValue: string): string {\n const sanitizedLiteralValue = sanitizeLiteralValue(literalValue);\n return camelCase(sanitizedLiteralValue);\n}\n\n/**\n * Sanitizes a literal value to produce a clean alphanumeric string suitable for Swift identifiers.\n * Uses \"value\" as fallback for anything that doesn't result in a clean identifier.\n */\nexport function sanitizeLiteralValue(originalValue: string): string {\n if (originalValue === \"\") {\n return \"empty\";\n }\n let sanitizedValue = originalValue;\n const isAlreadyValid = /^[a-zA-Z][a-zA-Z0-9]*$/.test(originalValue);\n if (!isAlreadyValid) {\n // Remove invalid characters from the left first to avoid unwanted capitalization\n sanitizedValue = sanitizedValue.replace(/^[^a-zA-Z0-9]+/, \"\");\n // Apply camelCase to preserve word boundaries\n sanitizedValue = camelCase(sanitizedValue);\n }\n // If it starts with a digit, use \"value\"\n if (/^\\d/.test(sanitizedValue)) {\n return \"value\";\n }\n if (sanitizedValue === \"\") {\n return \"value\";\n }\n return sanitizedValue;\n}\n","export * as LiteralEnum from \"./literal-enum\";\n","const reservedKeywords = [\n \"Any\",\n \"as\",\n \"associatedtype\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"continue\",\n \"default\",\n \"defer\",\n \"deinit\",\n \"do\",\n \"else\",\n \"fallthrough\",\n \"false\",\n \"for\",\n \"guard\",\n \"enum\",\n \"extension\",\n \"fileprivate\",\n \"func\",\n \"if\",\n \"import\",\n \"in\",\n \"init\",\n \"inout\",\n \"internal\",\n \"is\",\n \"let\",\n \"nil\",\n \"operator\",\n \"private\",\n \"precedencegroup\",\n \"Protocol\",\n \"protocol\",\n \"public\",\n \"repeat\",\n \"rethrows\",\n \"return\",\n \"Self\",\n \"self\",\n \"static\",\n \"struct\",\n \"subscript\",\n \"super\",\n \"switch\",\n \"throw\",\n \"throws\",\n \"true\",\n \"try\",\n \"Type\",\n \"typealias\",\n \"var\",\n \"where\",\n \"while\"\n] as const;\n\nconst reservedKeywordsSet = new Set(reservedKeywords);\n\nexport type ReservedKeyword = (typeof reservedKeywords)[number];\n\nexport function isReservedKeyword(word: string): word is ReservedKeyword {\n return reservedKeywordsSet.has(word as ReservedKeyword);\n}\n\nexport function escapeReservedKeyword(word: string): string {\n return isReservedKeyword(word) ? `\\`${word}\\`` : word;\n}\n\n/**\n * The `self` keyword cannot be used as a property name in Swift, and unlike other\n * reserved keywords, it cannot be escaped with backticks.\n */\nexport function sanitizeSelf(name: string): string {\n return name === \"self\" ? \"self_\" : name;\n}\n","import {\n Class,\n CodeBlock,\n Comment,\n ComputedProperty,\n DocComment,\n EnumWithAssociatedValues,\n EnumWithRawValues,\n Extension,\n FunctionArgument,\n FunctionParameter,\n Initializer,\n Method,\n Property,\n Struct\n} from \"./ast\";\n\nexport function class_(args: Class.Args): Class {\n return new Class(args);\n}\n\nexport function codeBlock(args: CodeBlock.Args): CodeBlock {\n return new CodeBlock(args);\n}\n\nexport function comment(args: Comment.Args): Comment {\n return new Comment(args);\n}\n\nexport function computedProperty(args: ComputedProperty.Args): ComputedProperty {\n return new ComputedProperty(args);\n}\n\nexport function docComment(args: DocComment.Args): DocComment {\n return new DocComment(args);\n}\n\nexport function enumWithAssociatedValues(args: EnumWithAssociatedValues.Args): EnumWithAssociatedValues {\n return new EnumWithAssociatedValues(args);\n}\n\nexport function enumWithRawValues(args: EnumWithRawValues.Args): EnumWithRawValues {\n return new EnumWithRawValues(args);\n}\n\nexport function extension(args: Extension.Args): Extension {\n return new Extension(args);\n}\n\nexport function functionArgument(args: FunctionArgument.Args): FunctionArgument {\n return new FunctionArgument(args);\n}\n\nexport function functionParameter(args: FunctionParameter.Args): FunctionParameter {\n return new FunctionParameter(args);\n}\n\nexport function initializer(args: Initializer.Args): Initializer {\n return new Initializer(args);\n}\n\nexport function method(args: Method.Args): Method {\n return new Method(args);\n}\n\nexport function property(args: Property.Args): Property {\n return new Property(args);\n}\n\nexport function struct(args: Struct.Args): Struct {\n return new Struct(args);\n}\n\nexport * from \"./ast\";\nexport * from \"./symbol\";\n","export { AccessLevel } from \"./AccessLevel\";\nexport { Class } from \"./Class\";\nexport { CodeBlock } from \"./CodeBlock\";\nexport { Comment } from \"./Comment\";\nexport { ComputedProperty } from \"./ComputedProperty\";\nexport { DeclarationType } from \"./DeclarationType\";\nexport { DocComment } from \"./DocComment\";\nexport { EnumWithAssociatedValues } from \"./EnumWithAssociatedValues\";\nexport { EnumWithRawValues } from \"./EnumWithRawValues\";\nexport { Expression } from \"./Expression\";\nexport { Extension } from \"./Extension\";\nexport type { FileComponent } from \"./FileComponent\";\nexport { FunctionArgument } from \"./FunctionArgument\";\nexport { FunctionParameter } from \"./FunctionParameter\";\nexport { Initializer } from \"./Initializer\";\nexport { LineBreak } from \"./LineBreak\";\nexport { Method } from \"./Method\";\nexport { Pattern } from \"./Pattern\";\nexport { Property } from \"./Property\";\nexport { Protocol } from \"./Protocol\";\nexport { Statement } from \"./Statement\";\nexport { Struct } from \"./Struct\";\nexport { Type } from \"./Type\";\nexport { TypeReference } from \"./TypeReference\";\n","/**\n * Swift access levels for controlling code visibility and accessibility.\n */\nexport const AccessLevel = {\n /**\n * Most permissive. Accessible from other modules, allows subclassing and overriding.\n */\n Open: \"open\",\n\n /**\n * Accessible from other modules, but subclassing/overriding restricted to defining module.\n */\n Public: \"public\",\n\n /**\n * Accessible within the same package.\n */\n Package: \"package\",\n\n /**\n * Default access level. Accessible within the same module only.\n */\n Internal: \"internal\",\n\n /**\n * Accessible within the same source file only.\n */\n Fileprivate: \"fileprivate\",\n\n /**\n * Most restrictive. Accessible within the enclosing declaration only.\n */\n Private: \"private\"\n} as const;\n\nexport type AccessLevel = (typeof AccessLevel)[keyof typeof AccessLevel];\n","import { AccessLevel } from \"./AccessLevel\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { Initializer } from \"./Initializer\";\nimport { Method } from \"./Method\";\nimport { Property } from \"./Property\";\nimport { Protocol } from \"./Protocol\";\n\nexport declare namespace Class {\n interface Args {\n name: string;\n final?: true;\n accessLevel?: AccessLevel;\n conformances?: Protocol[];\n properties: Property[];\n initializers?: Initializer[];\n methods?: Method[];\n docs?: DocComment;\n }\n}\n\nexport class Class extends AstNode {\n public readonly name: string;\n public readonly final?: true;\n public readonly accessLevel?: AccessLevel;\n public readonly conformances: Protocol[];\n public readonly properties: Property[];\n public readonly initializers: Initializer[];\n public readonly methods: Method[];\n public readonly docs?: DocComment;\n\n public constructor({\n accessLevel,\n name,\n final,\n conformances,\n properties,\n initializers,\n methods,\n docs\n }: Class.Args) {\n super();\n this.name = name;\n this.final = final;\n this.accessLevel = accessLevel;\n this.conformances = conformances ?? [];\n this.properties = properties;\n this.initializers = initializers ?? [];\n this.methods = methods ?? [];\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n if (this.final) {\n writer.write(\"final \");\n }\n writer.write(`class ${this.name}`);\n this.conformances.forEach((conformance, index) => {\n if (index === 0) {\n writer.write(\": \");\n } else if (index > 0) {\n writer.write(\", \");\n }\n writer.write(conformance);\n });\n writer.write(\" {\");\n writer.newLine();\n writer.indent();\n this.properties.forEach((property) => {\n property.write(writer);\n writer.newLine();\n });\n if (this.initializers.length > 0) {\n writer.newLine();\n this.initializers.forEach((initializer, initializerIdx) => {\n if (initializerIdx > 0) {\n writer.newLine();\n }\n initializer.write(writer);\n writer.newLine();\n });\n }\n if (this.methods.length > 0) {\n writer.newLine();\n this.methods.forEach((method, methodIdx) => {\n if (methodIdx > 0) {\n writer.newLine();\n }\n method.write(writer);\n writer.newLine();\n });\n }\n writer.dedent();\n writer.write(\"}\");\n }\n}\n","export { AstNode } from \"./AstNode\";\nexport { Writer } from \"./Writer\";\n","import { AbstractAstNode } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { Writer } from \"./Writer\";\n\nexport abstract class AstNode extends AbstractAstNode {\n public toString(): string {\n const writer = new Writer();\n this.write(writer);\n return writer.toString();\n }\n}\n","export { AbstractAstNode } from \"./AbstractAstNode\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter\";\nexport { AbstractWriter } from \"./AbstractWriter\";\nexport {\n type Argument,\n type Arguments,\n hasNamedArgument,\n isNamedArgument,\n type NamedArgument,\n type UnnamedArgument\n} from \"./Argument\";\nexport { CodeBlock } from \"./CodeBlock\";\nexport { Ternary } from \"./Ternary\";\n","import { AbstractWriter } from \"./AbstractWriter\";\n\nexport abstract class AbstractAstNode {\n /**\n * Every AST node knows how to write itself to a string.\n */\n public abstract write(writer: AbstractWriter): void;\n}\n","import { AbstractAstNode } from \"./AbstractAstNode\";\nimport { CodeBlock } from \"./CodeBlock\";\n\nconst TAB_SIZE = 4;\n\nconst enableStackTracking = !!process.env[\"FERN_STACK_TRACK\"];\n\nif (enableStackTracking) {\n // let it get more frames, we like to trim out a bunch.\n Error.stackTraceLimit = 50;\n}\n\nexport class AbstractWriter {\n /* The contents being written */\n public buffer = \"\";\n /* Indentation level (multiple of 4) */\n private indentLevel = 0;\n /* Whether anything has been written to the buffer */\n private hasWrittenAnything = false;\n /* Whether the last character written was a semi colon */\n private lastCharacterIsSemicolon = false;\n /* Whether the last character written was a newline */\n private lastCharacterIsNewline = false;\n\n /**\n * Writes arbitrary text and nodes\n * @param text\n */\n public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n for (const text of parts) {\n if (text != null) {\n if (typeof text === \"string\") {\n const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n const indent = this.getIndentString();\n let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n if (this.isAtStartOfLine()) {\n indentedText = indent + indentedText;\n }\n if (textEndsInNewline) {\n indentedText += \"\\n\";\n }\n this.writeInternal(indentedText);\n } else {\n this.writeNode(text);\n }\n }\n }\n }\n\n public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n this.write(...parts);\n this.write(\";\");\n this.writeNewLineIfLastLineNot();\n }\n\n /**\n * Writes arbitrary text without indentation\n * @param text\n */\n public writeNoIndent(text: string): void {\n const currIndentLevel = this.indentLevel;\n this.indentLevel = 0;\n this.write(text);\n this.indentLevel = currIndentLevel;\n }\n\n /**\n * Writes a node\n * @param node\n */\n public writeNode(node: AbstractAstNode): void {\n node.write(this);\n }\n\n /**\n * Writes a node or string\n * @param input\n */\n public writeNodeOrString(input: AbstractAstNode | string): void {\n if (typeof input === \"string\") {\n this.write(input);\n return;\n }\n\n this.writeNode(input);\n }\n\n /**\n * Writes a node but then suffixes with a `;` and new line\n * @param node\n */\n public writeNodeStatement(node: AbstractAstNode): void {\n node.write(this);\n this.write(\";\");\n this.writeNewLineIfLastLineNot();\n }\n\n /**\n * Writes text but then suffixes with a `;`\n * @param node\n */\n public writeTextStatement(text: string): void {\n const codeBlock = new CodeBlock(text);\n codeBlock.write(this);\n if (!text.endsWith(\";\")) {\n this.write(\";\");\n }\n this.writeNewLineIfLastLineNot();\n }\n\n /**\n * Starts a control flow block\n * @param prefix\n * @param statement\n */\n public controlFlow(prefix: string, statement: AbstractAstNode): void {\n const codeBlock = new CodeBlock(prefix);\n codeBlock.write(this);\n this.write(\" (\", statement, \")\");\n this.pushScope();\n }\n\n /**\n * Starts a control flow block\n * @param prefix\n * @param statement\n */\n public controlFlowWithoutStatement(prefix: string): void {\n const codeBlock = new CodeBlock(prefix);\n codeBlock.write(this);\n this.pushScope();\n }\n\n /**\n * Ends a control flow block\n */\n public endControlFlow(): void {\n this.popScope();\n }\n\n /**\n * Starts a control flow without a newline from the previous control flow block\n * @param prefix\n * @param statement\n */\n public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n this.dedent();\n this.write(\"} \");\n const codeBlock = new CodeBlock(prefix);\n codeBlock.write(this);\n this.write(\" (\", statement, \")\");\n this.pushScope();\n }\n\n /**\n * Starts a control flow alternative block\n * @param prefix\n */\n public alternativeControlFlow(prefix: string): void {\n this.dedent();\n this.write(\"} \");\n const codeBlock = new CodeBlock(prefix);\n codeBlock.write(this);\n this.pushScope();\n }\n\n public pushScope() {\n this.writeLine(\"{\");\n this.indent();\n }\n\n public popScope(withNewline = true) {\n this.dedent();\n this.writeNewLineIfLastLineNot();\n if (withNewline) {\n this.writeLine(\"}\");\n } else {\n this.write(\"}\");\n }\n }\n\n /* Only writes a newline if last line in the buffer is not a newline */\n public writeLine(text = \"\"): void {\n this.write(text);\n this.writeNewLineIfLastLineNot();\n }\n\n /* Always writes newline */\n public newLine(): void {\n this.writeInternal(\"\\n\");\n }\n\n public writeSemicolonIfLastCharacterIsNot(): void {\n if (!this.lastCharacterIsSemicolon) {\n this.writeInternal(\";\");\n }\n }\n\n public writeNewLineIfLastLineNot(): void {\n if (!this.lastCharacterIsNewline) {\n this.writeInternal(\"\\n\");\n }\n }\n\n public indent(): void {\n this.indentLevel++;\n }\n\n public dedent(): void {\n this.indentLevel--;\n }\n\n public delimit<T extends AbstractAstNode>({\n nodes,\n delimiter,\n writeFunction\n }: {\n nodes: T[];\n delimiter: string;\n writeFunction: (node: T) => void;\n }): void {\n if (nodes.length > 0) {\n const firstNode = nodes[0];\n if (firstNode != null) {\n writeFunction(firstNode);\n }\n for (let i = 1; i < nodes.length; i++) {\n this.write(delimiter);\n const node = nodes[i];\n if (node != null) {\n writeFunction(node);\n }\n }\n }\n }\n\n public toString(): string {\n return this.buffer;\n }\n\n /*******************************\n * Helper Methods\n *******************************/\n\n private writeInternal(text: string): string {\n if (text.length > 0) {\n this.hasWrittenAnything = true;\n this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n this.lastCharacterIsSemicolon = text.endsWith(\";\");\n }\n this.buffer += text;\n\n if (enableStackTracking && this.buffer.endsWith(\"\\n\") && !this.buffer.endsWith('\"\"\"\\n')) {\n const stackLine = this.stacktrace(15)\n .map((each) => `${each.fn} - ${each.path}:${each.position}`)\n .join(\" \");\n if (stackLine) {\n this.buffer = this.buffer.slice(0, -1);\n // this marker is used to easily identify stack traces in the generated code\n // (it also makes it easy to grep for them in a diff to make sure you're not commiting them)\n // use ` git diff | grep -i \"//@@\" ` to check\n this.buffer += `//` + `@@ ${stackLine}\\n`;\n }\n }\n\n return this.buffer;\n }\n\n private isAtStartOfLine(): boolean {\n return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n }\n\n private getIndentString(): string {\n return \" \".repeat(this.indentLevel * this.getTabSize());\n }\n\n protected getTabSize(): number {\n return TAB_SIZE;\n }\n\n /**\n * This function is used to get the stack trace of the current code execution point.$\n * It cleans up the stack trace to remove unnecessary frames and return a list of frames.\n * (Used for debugging purposes)\n *\n * @returns A list of frames with the function name, path, and position.\n */\n private stacktrace(maxFrames: number = 50): { fn: string; path: string; position: string }[] {\n let stop = false;\n return (\n (new Error().stack ?? \"\")\n .split(\"\\n\")\n .map((line) => {\n const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n if (match && match.length === 5) {\n let [, fn, path, line, column] = match;\n if (stop || fn?.includes(\"runInteractiveTask\")) {\n stop = true;\n return undefined;\n }\n switch (fn) {\n case \"Object.<anonymous>\":\n fn = \"\";\n break;\n case \"Object.object\":\n case \"Object.alias\":\n case \"Object.union\":\n case \"Object.enum\":\n case \"Object.undiscriminatedUnion\":\n fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n break;\n }\n return { fn, path: path?.replace(/^.*?fern.*?\\//, \"\") ?? \"\", position: `${line}:${column}` };\n }\n return undefined;\n })\n .filter(\n (each) =>\n each &&\n !each.path?.startsWith(\"node:\") &&\n !each.path?.endsWith(\".js\") &&\n !each.path?.includes(\"AbstractWriter\") &&\n !each.fn?.includes(\"stacktrace\") &&\n !each.fn?.includes(\"stackLine\") &&\n !each.fn?.includes(\"SdkGeneratorCLI\") &&\n !each.fn?.includes(\"runCli\")\n ) as {\n fn: string;\n path: string;\n position: string;\n }[]\n ).slice(0, maxFrames);\n }\n}\n","import { AbstractAstNode } from \"./AbstractAstNode\";\nimport { AbstractWriter } from \"./AbstractWriter\";\n\nexport declare namespace CodeBlock {\n /* Write arbitrary code */\n type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n private value: CodeBlock.Arg<T>;\n\n constructor(value: CodeBlock.Arg<T>) {\n super();\n this.value = value;\n }\n\n public write(writer: T): void {\n if (typeof this.value === \"string\") {\n writer.write(this.value);\n // if function\n } else if (typeof this.value === \"function\") {\n this.value(writer);\n } else {\n this.value.write(writer);\n }\n }\n}\n","import { AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\n\nexport class Writer extends AbstractWriter {\n public toString(): string {\n return this.buffer;\n }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\nimport { noop } from \"@fern-api/core-utils\";\nimport { AstNode, Writer } from \"./core\";\nimport { LineBreak } from \"./LineBreak\";\nimport { Statement } from \"./Statement\";\n\nexport declare namespace CodeBlock {\n /* Write arbitrary code */\n type Args = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n private args: CodeBlock.Args;\n\n public constructor(args: CodeBlock.Args) {\n super();\n this.args = args;\n }\n\n public write(writer: Writer): void {\n const commonCodeBlock = new CommonCodeBlock(this.args);\n writer.write(\"{\");\n writer.newLine();\n writer.indent();\n commonCodeBlock.write(writer);\n writer.dedent();\n writer.write(\"}\");\n }\n\n public static empty(): CodeBlock {\n return new CodeBlock(noop);\n }\n\n public static withStatements(statements: (Statement | LineBreak)[]): CodeBlock {\n return new CodeBlock((writer) => {\n statements.forEach((statement) => {\n statement.write(writer);\n });\n });\n }\n}\n","import { AstNode, Writer } from \"./core\";\n\nexport declare namespace Comment {\n interface Args {\n content: string;\n }\n}\n\nexport class Comment extends AstNode {\n private readonly content: string;\n\n public constructor({ content }: Comment.Args) {\n super();\n this.content = content;\n }\n\n public write(writer: Writer): void {\n const lines = this.content.split(\"\\n\");\n lines.forEach((line) => {\n writer.write(`// ${line}`);\n writer.newLine();\n });\n }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { Expression } from \"./Expression\";\nimport { Statement } from \"./Statement\";\nimport { TypeReference } from \"./TypeReference\";\n\nexport declare namespace ComputedProperty {\n interface Args {\n unsafeName: string;\n accessLevel?: AccessLevel;\n type: TypeReference;\n body: Expression | CodeBlock;\n docs?: DocComment;\n }\n}\n\nexport class ComputedProperty extends AstNode {\n public readonly unsafeName: string;\n public readonly accessLevel?: AccessLevel;\n public readonly type: TypeReference;\n public readonly body: Expression | CodeBlock;\n public readonly docs?: DocComment;\n\n public constructor({ unsafeName, accessLevel, type, body, docs }: ComputedProperty.Args) {\n super();\n this.unsafeName = unsafeName;\n this.accessLevel = accessLevel;\n this.type = type;\n this.body = body;\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n writer.write(\"var \");\n writer.write(escapeReservedKeyword(this.unsafeName));\n writer.write(\": \");\n this.type.write(writer);\n writer.write(\" \");\n if (this.body instanceof CodeBlock) {\n this.body.write(writer);\n } else if (this.body instanceof Expression) {\n const codeBlock = CodeBlock.withStatements([Statement.expressionStatement(this.body)]);\n codeBlock.write(writer);\n } else {\n assertNever(this.body);\n }\n }\n}\n","export function escapeSwiftStringLiteral(rawValue: string): string {\n return (\n rawValue\n // First handle unicode escapes - convert \\uXXXX to \\u{XXXX}\n .replace(/\\\\u([0-9a-fA-F]{4})/g, \"\\\\u{$1}\")\n // Handle special escape sequences that are invalid in Swift\n // Use negative lookbehind to ensure the backslash isn't already escaped\n .replace(/(?<!\\\\)\\\\f/g, \"\\\\u{000C}\") // form feed\n .replace(/(?<!\\\\)\\\\v/g, \"\\\\u{000B}\") // vertical tab\n .replace(/(?<!\\\\)\\\\0/g, \"\\\\u{0000}\") // null character\n // Escape double quotes (but not if already escaped)\n .replace(/(?<!\\\\)\"/g, '\\\\\"')\n // \\n, \\r, \\t, \\\\ are already valid in Swift and don't need conversion\n );\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax\";\nimport { AstNode, Writer } from \"./core\";\nimport { FunctionArgument } from \"./FunctionArgument\";\nimport { TypeReference } from \"./TypeReference\";\n\n/**\n * A reference to a variable or constant.\n */\ntype Reference = {\n type: \"reference\";\n unsafeName: string;\n};\n\ntype MemberAccess = {\n type: \"member-access\";\n target: Expression | TypeReference;\n optionalChain?: true;\n memberName: string;\n};\n\ntype Equals = {\n type: \"equals\";\n left: Expression;\n right: Expression;\n};\n\n/**\n * A reference to an enum case with shorthand (dot) syntax.\n */\ntype EnumCaseShorthand = {\n type: \"enum-case-shorthand\";\n caseName: string;\n};\n\ntype FunctionCall = {\n type: \"function-call\";\n unsafeName: string;\n arguments_?: FunctionArgument[];\n multiline?: true;\n};\n\ntype StructInitialization = {\n type: \"struct-initialization\";\n unsafeName: string;\n arguments_?: FunctionArgument[];\n multiline?: true;\n};\n\ntype ClassInitialization = {\n type: \"class-initialization\";\n unsafeName: string;\n arguments_?: FunctionArgument[];\n multiline?: true;\n};\n\ntype MethodCall = {\n type: \"method-call\";\n target: Expression;\n methodName: string;\n arguments_?: FunctionArgument[];\n multiline?: true;\n};\n\ntype MethodCallWithTrailingClosure = {\n type: \"method-call-with-trailing-closure\";\n target: Expression;\n methodName: string;\n closureBody: Expression;\n multiline?: true;\n};\n\ntype ContextualMethodCall = {\n type: \"contextual-method-call\";\n methodName: string;\n arguments_?: FunctionArgument[];\n multiline?: true;\n};\n\ntype Try = {\n type: \"try\";\n expression: Expression;\n};\n\ntype OptionalTry = {\n type: \"optional-try\";\n expression: Expression;\n};\n\ntype ForceTry = {\n type: \"force-try\";\n expression: Expression;\n};\n\ntype Await = {\n type: \"await\";\n expression: Expression;\n};\n\ntype StringLiteral = {\n type: \"string-literal\";\n value: string;\n};\n\ntype NumberLiteral = {\n type: \"number-literal\";\n value: number;\n};\n\ntype BoolLiteral = {\n type: \"bool-literal\";\n value: boolean;\n};\n\ntype DateLiteral = {\n type: \"date-literal\";\n isoString: string;\n};\n\ntype CalendarDateLiteral = {\n type: \"calendar-date-literal\";\n isoString: string;\n};\n\ntype UUIDLiteral = {\n type: \"uuid-literal\";\n value: string;\n};\n\ntype DictionaryLiteral = {\n type: \"dictionary-literal\";\n entries?: [Expression, Expression][];\n multiline?: true;\n};\n\ntype ArrayLiteral = {\n type: \"array-literal\";\n elements?: Expression[];\n multiline?: true;\n};\n\ntype DataLiteral = {\n type: \"data-literal\";\n value: string;\n};\n\ntype RawValue = {\n type: \"raw-value\";\n value: string;\n};\n\ntype Nop = {\n type: \"nop\";\n};\n\ntype InternalExpression =\n | Reference\n | MemberAccess\n | Equals\n | EnumCaseShorthand\n | FunctionCall\n | StructInitialization\n | ClassInitialization\n | MethodCall\n | MethodCallWithTrailingClosure\n | ContextualMethodCall\n | Try\n | OptionalTry\n | ForceTry\n | Await\n | StringLiteral\n | NumberLiteral\n | BoolLiteral\n | DateLiteral\n | CalendarDateLiteral\n | UUIDLiteral\n | DictionaryLiteral\n | ArrayLiteral\n | DataLiteral\n | RawValue\n | Nop;\n\ntype WriteCallableExpressionParams = {\n writer: Writer;\n target: string;\n arguments_?: FunctionArgument[];\n multiline: boolean;\n};\n\nexport class Expression extends AstNode {\n private internalExpression: InternalExpression;\n\n private constructor(internalExpression: InternalExpression) {\n super();\n this.internalExpression = internalExpression;\n }\n\n public isNop() {\n return this.internalExpression.type === \"nop\";\n }\n\n public isStructInitialization() {\n return this.internalExpression.type === \"struct-initialization\";\n }\n\n public asStructInitializationOrThrow(): StructInitialization {\n if (this.internalExpression.type !== \"struct-initialization\") {\n throw new Error(\"Internal error; swift.Expression is not a struct initialization\");\n }\n return this.internalExpression;\n }\n\n public write(writer: Writer): void {\n switch (this.internalExpression.type) {\n case \"reference\":\n writer.write(escapeReservedKeyword(this.internalExpression.unsafeName));\n break;\n case \"member-access\":\n this.internalExpression.target.write(writer);\n if (this.internalExpression.optionalChain) {\n writer.write(\"?\");\n }\n writer.write(\".\");\n writer.write(this.internalExpression.memberName);\n break;\n case \"equals\":\n this.internalExpression.left.write(writer);\n writer.write(\" == \");\n this.internalExpression.right.write(writer);\n break;\n case \"enum-case-shorthand\":\n writer.write(\".\");\n writer.write(this.internalExpression.caseName);\n break;\n case \"function-call\":\n this.writeCallableExpression({\n writer,\n target: escapeReservedKeyword(this.internalExpression.unsafeName),\n arguments_: this.internalExpression.arguments_,\n multiline: !!this.internalExpression.multiline\n });\n break;\n case \"struct-initialization\":\n this.writeCallableExpression({\n writer,\n target: escapeReservedKeyword(this.internalExpression.unsafeName),\n arguments_: this.internalExpression.arguments_,\n multiline: !!this.internalExpression.multiline\n });\n break;\n case \"class-initialization\":\n this.writeCallableExpression({\n writer,\n target: escapeReservedKeyword(this.internalExpression.unsafeName),\n arguments_: this.internalExpression.arguments_,\n multiline: !!this.internalExpression.multiline\n });\n break;\n\n case \"method-call\":\n this.internalExpression.target.write(writer);\n writer.write(\".\");\n this.writeCallableExpression({\n writer,\n target: this.internalExpression.methodName,\n arguments_: this.internalExpression.arguments_,\n multiline: !!this.internalExpression.multiline\n });\n break;\n case \"method-call-with-trailing-closure\":\n this.internalExpression.target.write(writer);\n writer.write(\".\");\n writer.write(this.internalExpression.methodName);\n writer.write(\" {\");\n if (this.internalExpression.multiline) {\n writer.newLine();\n writer.indent();\n } else {\n writer.write(\" \");\n }\n this.internalExpression.closureBody.write(writer);\n if (this.internalExpression.multiline) {\n writer.newLine();\n writer.dedent();\n } else {\n writer.write(\" \");\n }\n writer.write(\"}\");\n break;\n case \"contextual-method-call\":\n writer.write(\".\");\n this.writeCallableExpression({\n writer,\n target: this.internalExpression.methodName,\n arguments_: this.internalExpression.arguments_,\n multiline: !!this.internalExpression.multiline\n });\n break;\n case \"try\":\n writer.write(\"try \");\n this.internalExpression.expression.write(writer);\n break;\n case \"optional-try\":\n writer.write(\"try? \");\n this.internalExpression.expression.write(writer);\n break;\n case \"force-try\":\n writer.write(\"try! \");\n this.internalExpression.expression.write(writer);\n break;\n case \"await\":\n writer.write(\"await \");\n this.internalExpression.expression.write(writer);\n break;\n case \"string-literal\":\n writer.write(`\"${this.internalExpression.value}\"`);\n break;\n case \"number-literal\":\n writer.write(this.internalExpression.value.toString());\n break;\n case \"bool-literal\":\n writer.write(this.internalExpression.value ? \"true\" : \"false\");\n break;\n case \"date-literal\":\n writer.write(`try! Date(\"${this.internalExpression.isoString}\", strategy: .iso8601)`);\n break;\n case \"calendar-date-literal\":\n writer.write(`CalendarDate(\"${this.internalExpression.isoString}\")!`);\n break;\n case \"uuid-literal\":\n writer.write(`UUID(uuidString: \"${this.internalExpression.value}\")!`);\n break;\n case \"dictionary-literal\":\n this.writeDictionaryLiteral(writer, this.internalExpression);\n break;\n case \"array-literal\":\n this.writeArrayLiteral(writer, this.internalExpression);\n break;\n case \"data-literal\":\n writer.write(`Data(\"${this.internalExpression.value}\".utf8)`);\n break;\n case \"raw-value\":\n writer.write(this.internalExpression.value);\n break;\n case \"nop\":\n break;\n default:\n assertNever(this.internalExpression);\n }\n }\n\n private writeCallableExpression({ writer, target, arguments_, multiline }: WriteCallableExpressionParams): void {\n writer.write(target);\n writer.write(\"(\");\n if (multiline) {\n writer.newLine();\n writer.indent();\n }\n arguments_?.forEach((argument: FunctionArgument, argumentIdx: number) => {\n if (argumentIdx > 0) {\n writer.write(\",\");\n if (multiline) {\n writer.newLine();\n } else {\n writer.write(\" \");\n }\n }\n argument.write(writer);\n });\n if (multiline) {\n writer.newLine();\n writer.dedent();\n }\n writer.write(\")\");\n }\n\n private writeDictionaryLiteral(writer: Writer, dictLiteral: DictionaryLiteral): void {\n if (!dictLiteral.entries || dictLiteral.entries.length === 0) {\n writer.write(\"[:]\");\n return;\n }\n writer.write(\"[\");\n const multiline = !!dictLiteral.multiline;\n if (multiline) {\n writer.newLine();\n writer.indent();\n }\n dictLiteral.entries?.forEach(([key, value], entryIdx) => {\n if (entryIdx > 0) {\n writer.write(\", \");\n if (multiline) {\n writer.newLine();\n }\n }\n key.write(writer);\n writer.write(\": \");\n value.write(writer);\n });\n if (multiline) {\n writer.newLine();\n writer.dedent();\n }\n writer.write(\"]\");\n }\n\n private writeArrayLiteral(writer: Writer, arrayLiteral: ArrayLiteral): void {\n if (!arrayLiteral.elements || arrayLiteral.elements.length === 0) {\n writer.write(\"[]\");\n return;\n }\n writer.write(\"[\");\n const multiline = !!arrayLiteral.multiline;\n if (multiline) {\n writer.newLine();\n writer.indent();\n }\n arrayLiteral.elements?.forEach((element, elementIdx) => {\n if (elementIdx > 0) {\n writer.write(\",\");\n if (multiline) {\n writer.newLine();\n } else {\n writer.write(\" \");\n }\n }\n element.write(writer);\n });\n if (multiline) {\n writer.newLine();\n writer.dedent();\n }\n writer.write(\"]\");\n }\n\n public static reference(unsafeName: string): Expression {\n return new this({ type: \"reference\", unsafeName });\n }\n\n public static memberAccess(params: Omit<MemberAccess, \"type\">): Expression {\n return new this({ type: \"member-access\", ...params });\n }\n\n public static equals(left: Expression, right: Expression): Expression {\n return new this({ type: \"equals\", left, right });\n }\n\n public static enumCaseShorthand(caseName: string): Expression {\n return new this({ type: \"enum-case-shorthand\", caseName });\n }\n\n public static functionCall(params: Omit<FunctionCall, \"type\">): Expression {\n return new this({ type: \"function-call\", ...params });\n }\n\n public static structInitialization(params: Omit<StructInitialization, \"type\">): Expression {\n return new this({ type: \"struct-initialization\", ...params });\n }\n\n public static classInitialization(params: Omit<ClassInitialization, \"type\">): Expression {\n return new this({ type: \"class-initialization\", ...params });\n }\n\n public static stringLiteral(value: string): Expression {\n return new this({ type: \"string-literal\", value });\n }\n\n public static numberLiteral(value: number): Expression {\n return new this({ type: \"number-literal\", value });\n }\n\n public static boolLiteral(value: boolean): Expression {\n return new this({ type: \"bool-literal\", value });\n }\n\n public static dateLiteral(isoStringWithoutFractionalSeconds: string): Expression {\n return new this({ type: \"date-literal\", isoString: isoStringWithoutFractionalSeconds });\n }\n\n public static calendarDateLiteral(isoString: string): Expression {\n return new this({ type: \"calendar-date-literal\", isoString });\n }\n\n public static uuidLiteral(value: string): Expression {\n return new this({ type: \"uuid-literal\", value });\n }\n\n public static dictionaryLiteral(params: Omit<DictionaryLiteral, \"type\">): Expression {\n return new this({ type: \"dictionary-literal\", ...params });\n }\n\n public static arrayLiteral(params: Omit<ArrayLiteral, \"type\">): Expression {\n return new this({ type: \"array-literal\", ...params });\n }\n\n public static dataLiteral(value: string): Expression {\n return new this({ type: \"data-literal\", value });\n }\n\n public static methodCall(params: Omit<MethodCall, \"type\">): Expression {\n return new this({ type: \"method-call\", ...params });\n }\n\n public static methodCallWithTrailingClosure(params: Omit<MethodCallWithTrailingClosure, \"type\">): Expression {\n return new this({ type: \"method-call-with-trailing-closure\", ...params });\n }\n\n public static contextualMethodCall(params: Omit<ContextualMethodCall, \"type\">): Expression {\n return new this({ type: \"contextual-method-call\", ...params });\n }\n\n public static try(expression: Expression): Expression {\n return new this({ type: \"try\", expression });\n }\n\n public static optionalTry(expression: Expression): Expression {\n return new this({ type: \"optional-try\", expression });\n }\n\n public static forceTry(expression: Expression): Expression {\n return new this({ type: \"force-try\", expression });\n }\n\n public static await(expression: Expression): Expression {\n return new this({ type: \"await\", expression });\n }\n\n public static rawValue(value: string): Expression {\n return new this({ type: \"raw-value\", value });\n }\n\n public static nop(): Expression {\n return new this({ type: \"nop\" });\n }\n\n // Helpers\n\n public static nil(): Expression {\n return new this({ type: \"raw-value\", value: \"nil\" });\n }\n\n public static self(): Expression {\n return new this({ type: \"raw-value\", value: \"self\" });\n }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { AstNode, Writer } from \"./core\";\nimport { DeclarationType } from \"./DeclarationType\";\nimport { DocComment } from \"./DocComment\";\nimport { Expression } from \"./Expression\";\nimport { FunctionParameter } from \"./FunctionParameter\";\nimport { Pattern } from \"./Pattern\";\nimport { TypeReference } from \"./TypeReference\";\n\ntype TypealiasDeclaration = {\n type: \"typealias-declaration\";\n accessLevel?: AccessLevel;\n unsafeName: string;\n aliasedType: TypeReference;\n docs?: DocComment;\n};\n\ntype ConstantDeclaration = {\n type: \"constant-declaration\";\n unsafeName: string;\n value: Expression;\n noTrailingNewline?: true;\n};\n\ntype VariableDeclaration = {\n type: \"variable-declaration\";\n unsafeName: string;\n value: Expression;\n noTrailingNewline?: true;\n};\n\ntype FunctionDeclaration = {\n type: \"function-declaration\";\n unsafeName: string;\n accessLevel?: AccessLevel;\n parameters?: FunctionParameter[];\n async?: true;\n throws?: true;\n returnType?: TypeReference;\n body?: CodeBlock;\n docs?: DocComment;\n};\n\ntype VariableAssignment = {\n type: \"variable-assignment\";\n unsafeName: string;\n value: Expression;\n};\n\ntype SelfAssignment = {\n type: \"self-assignment\";\n value: Expression;\n};\n\ntype PropertyAssignment = {\n type: \"property-assignment\";\n unsafeName: string;\n value: Expression;\n};\n\ntype DiscardAssignment = {\n type: \"discard-assignment\";\n value: Expression;\n};\n\ntype Return = {\n type: \"return\";\n expression: Expression;\n};\n\ntype Throw = {\n type: \"throw\";\n expression: Expression;\n};\n\ntype ExpressionStatement = {\n type: \"expression-statement\";\n expression: Expression;\n};\n\ntype ImportStatement = {\n type: \"import\";\n moduleName: string;\n};\n\ntype Switch = {\n type: \"switch\";\n target: Expression;\n cases: {\n pattern: Expression | Pattern;\n body: Statement[];\n }[];\n defaultCase?: Statement[];\n};\n\ntype If = {\n type: \"if\";\n condition: Statement;\n body: Statement[];\n elseIfs?: {\n condition: Statement;\n body: Statement[];\n }[];\n else?: Statement[];\n};\n\ntype Raw = {\n type: \"raw\";\n content: string;\n};\n\ntype InternalStatement =\n | TypealiasDeclaration\n | ConstantDeclaration\n | VariableDeclaration\n | FunctionDeclaration\n | VariableAssignment\n | SelfAssignment\n | PropertyAssignment\n | DiscardAssignment\n | Return\n | Throw\n | ExpressionStatement\n | ImportStatement\n | Switch\n | If\n | Raw;\n\nexport class Statement extends AstNode {\n private internalStatement: InternalStatement;\n\n private constructor(internalStatement: InternalStatement) {\n super();\n this.internalStatement = internalStatement;\n }\n\n public write(writer: Writer): void {\n switch (this.internalStatement.type) {\n case \"typealias-declaration\":\n if (this.internalStatement.docs != null) {\n this.internalStatement.docs.write(writer);\n }\n if (this.internalStatement.accessLevel) {\n writer.write(this.internalStatement.accessLevel);\n writer.write(\" \");\n }\n writer.write(\"typealias \");\n writer.write(this.internalStatement.unsafeName);\n writer.write(\" = \");\n this.internalStatement.aliasedType.write(writer);\n writer.newLine();\n break;\n case \"constant-declaration\":\n writer.write(DeclarationType.Let);\n writer.write(\" \");\n writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n writer.write(\" = \");\n this.internalStatement.value.write(writer);\n if (!this.internalStatement.noTrailingNewline) {\n writer.newLine();\n }\n break;\n case \"variable-declaration\":\n writer.write(DeclarationType.Var);\n writer.write(\" \");\n writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n writer.write(\" = \");\n this.internalStatement.value.write(writer);\n if (!this.internalStatement.noTrailingNewline) {\n writer.newLine();\n }\n break;\n case \"function-declaration\":\n if (this.internalStatement.docs != null) {\n this.internalStatement.docs.write(writer);\n }\n if (this.internalStatement.accessLevel != null) {\n writer.write(this.internalStatement.accessLevel);\n writer.write(\" \");\n }\n writer.write(\"func \");\n writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n writer.write(\"(\");\n this.internalStatement.parameters?.forEach((parameter, parameterIdx) => {\n if (parameterIdx > 0) {\n writer.write(\", \");\n }\n parameter.write(writer);\n });\n writer.write(\")\");\n if (this.internalStatement.async) {\n writer.write(\" async\");\n }\n if (this.internalStatement.throws) {\n writer.write(\" throws\");\n }\n if (this.internalStatement.returnType) {\n writer.write(\" -> \");\n this.internalStatement.returnType.write(writer);\n }\n writer.write(\" \");\n (this.internalStatement.body ?? CodeBlock.empty()).write(writer);\n writer.newLine();\n break;\n case \"variable-assignment\":\n writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n writer.write(\" = \");\n this.internalStatement.value.write(writer);\n writer.newLine();\n break;\n case \"self-assignment\":\n writer.write(\"self = \");\n writer.write(this.internalStatement.value.toString());\n writer.newLine();\n break;\n case \"property-assignment\":\n writer.write(\"self.\");\n writer.write(this.internalStatement.unsafeName);\n writer.write(\" = \");\n this.internalStatement.value.write(writer);\n writer.newLine();\n break;\n case \"discard-assignment\":\n writer.write(\"_ = \");\n this.internalStatement.value.write(writer);\n writer.newLine();\n break;\n case \"return\":\n writer.write(\"return \");\n this.internalStatement.expression.write(writer);\n writer.newLine();\n break;\n case \"throw\":\n writer.write(\"throw \");\n this.internalStatement.expression.write(writer);\n writer.newLine();\n break;\n case \"expression-statement\":\n this.internalStatement.expression.write(writer);\n writer.newLine();\n break;\n case \"import\":\n writer.write(\"import \");\n writer.write(this.internalStatement.moduleName);\n writer.newLine();\n break;\n case \"switch\":\n writer.write(\"switch \");\n this.internalStatement.target.write(writer);\n writer.write(\" {\");\n writer.newLine();\n for (const switchCase of this.internalStatement.cases) {\n writer.write(\"case \");\n switchCase.pattern.write(writer);\n writer.write(\":\");\n writer.newLine();\n if (switchCase.body.length > 0) {\n writer.indent();\n for (const statement of switchCase.body) {\n statement.write(writer);\n }\n writer.dedent();\n }\n }\n if (this.internalStatement.defaultCase) {\n writer.write(\"default:\");\n writer.newLine();\n if (this.internalStatement.defaultCase.length > 0) {\n writer.indent();\n for (const statement of this.internalStatement.defaultCase) {\n statement.write(writer);\n }\n writer.dedent();\n }\n }\n writer.write(\"}\");\n writer.newLine();\n break;\n case \"if\": {\n writer.write(\"if \");\n this.internalStatement.condition.write(writer);\n writer.write(\" \");\n CodeBlock.withStatements(this.internalStatement.body).write(writer);\n for (const elseIf of this.internalStatement.elseIfs ?? []) {\n writer.write(\" else if \");\n elseIf.condition.write(writer);\n writer.write(\" \");\n CodeBlock.withStatements(elseIf.body).write(writer);\n }\n if (this.internalStatement.else) {\n writer.write(\" else \");\n CodeBlock.withStatements(this.internalStatement.else).write(writer);\n }\n writer.newLine();\n break;\n }\n case \"raw\":\n writer.write(this.internalStatement.content);\n writer.newLine();\n break;\n default:\n assertNever(this.internalStatement);\n }\n }\n\n public static typealiasDeclaration(params: Omit<TypealiasDeclaration, \"type\">): Statement {\n return new this({ type: \"typealias-declaration\", ...params });\n }\n\n public static constantDeclaration(params: Omit<ConstantDeclaration, \"type\">): Statement {\n return new this({ type: \"constant-declaration\", ...params });\n }\n\n public static variableDeclaration(params: Omit<VariableDeclaration, \"type\">): Statement {\n return new this({ type: \"variable-declaration\", ...params });\n }\n\n public static functionDeclaration(params: Omit<FunctionDeclaration, \"type\">): Statement {\n return new this({ type: \"function-declaration\", ...params });\n }\n\n public static variableAssignment(unsafeName: string, value: Expression): Statement {\n return new this({ type: \"variable-assignment\", unsafeName, value });\n }\n\n public static selfAssignment(value: Expression): Statement {\n return new this({ type: \"self-assignment\", value });\n }\n\n public static propertyAssignment(unsafeName: string, value: Expression): Statement {\n return new this({ type: \"property-assignment\", unsafeName, value });\n }\n\n public static discardAssignment(value: Expression): Statement {\n return new this({ type: \"discard-assignment\", value });\n }\n\n public static return(expression: Expression): Statement {\n return new this({ type: \"return\", expression });\n }\n\n public static throw(expression: Expression): Statement {\n return new this({ type: \"throw\", expression });\n }\n\n public static expressionStatement(expression: Expression): Statement {\n return new this({ type: \"expression-statement\", expression });\n }\n\n public static import(moduleName: string): Statement {\n return new this({ type: \"import\", moduleName });\n }\n\n public static switch(params: Omit<Switch, \"type\">): Statement {\n return new this({ type: \"switch\", ...params });\n }\n\n public static if(params: Omit<If, \"type\">): Statement {\n return new this({ type: \"if\", ...params });\n }\n\n /**\n * Escape hatch for writing raw Swift code. Intended for use in tests.\n */\n public static raw(content: string): Statement {\n return new this({ type: \"raw\", content });\n }\n}\n","export const DeclarationType = {\n /**\n * Variable declaration.\n */\n Var: \"var\",\n /**\n * Constant declaration.\n */\n Let: \"let\"\n} as const;\n\nexport type DeclarationType = (typeof DeclarationType)[keyof typeof DeclarationType];\n","import { AstNode, Writer } from \"./core\";\n\nexport declare namespace DocComment {\n interface Parameter {\n name: string;\n description: string;\n }\n\n interface Args {\n summary: string;\n description?: string;\n parameters?: Parameter[];\n returns?: string;\n throws?: string[];\n }\n}\n\nexport class DocComment extends AstNode {\n private readonly summary: string;\n private readonly description?: string;\n private readonly parameters: DocComment.Parameter[];\n private readonly returns?: string;\n private readonly throws: string[];\n\n public constructor({ summary, description, parameters, returns, throws }: DocComment.Args) {\n super();\n this.summary = DocComment.sanitizeText(summary);\n this.description = description != null ? DocComment.sanitizeText(description) : undefined;\n this.parameters = (parameters ?? []).map((param) => ({\n name: param.name,\n description: DocComment.sanitizeText(param.description)\n }));\n this.returns = returns != null ? DocComment.sanitizeText(returns) : undefined;\n this.throws = (throws ?? []).map((t) => DocComment.sanitizeText(t));\n }\n\n public write(writer: Writer): void {\n this.writeMultilineText(writer, this.summary);\n if (this.description != null) {\n writer.write(\"///\");\n writer.newLine();\n this.writeMultilineText(writer, this.description);\n }\n if (this.parameters.length > 0) {\n writer.write(\"///\");\n writer.newLine();\n for (const param of this.parameters) {\n const paramLines = param.description.split(\"\\n\");\n paramLines.forEach((line, lineIdx) => {\n if (lineIdx === 0) {\n writer.write(\"/// - Parameter \");\n writer.write(param.name);\n writer.write(\": \");\n writer.write(line);\n } else {\n writer.write(\"/// \");\n writer.write(line);\n }\n writer.newLine();\n });\n }\n }\n if (this.returns != null) {\n const returnLines = this.returns.split(\"\\n\");\n returnLines.forEach((line, lineIdx) => {\n if (lineIdx === 0) {\n writer.write(\"/// - Returns: \");\n writer.write(line);\n } else {\n writer.write(\"/// \");\n writer.write(line);\n }\n writer.newLine();\n });\n }\n if (this.throws.length > 0) {\n for (const throwsDescription of this.throws) {\n const throwsLines = throwsDescription.split(\"\\n\");\n throwsLines.forEach((line, lineIdx) => {\n if (lineIdx === 0) {\n writer.write(\"/// - Throws: \");\n writer.write(line);\n } else {\n writer.write(\"/// \");\n writer.write(line);\n }\n writer.newLine();\n });\n }\n }\n }\n\n private writeMultilineText(writer: Writer, sanitizedText: string) {\n const lines = sanitizedText.split(\"\\n\");\n for (const line of lines) {\n writer.write(\"/// \");\n writer.write(line);\n writer.newLine();\n }\n }\n\n /**\n * Sanitizes text content to ensure it doesn't break Swift doc comment syntax.\n * Handles line endings and binary content that cause compilation issues.\n */\n private static sanitizeText(text: string): string {\n // Normalize line endings - carriage returns break doc comment format\n text = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n // Remove null bytes - they cause \"nul character embedded in middle of file\" warnings\n // This causes a compiler warning (not error) but we should remove it nevertheless\n // biome-ignore lint/suspicious/noControlCharactersInRegex: allow\n text = text.replace(/\\x00/g, \"\");\n\n return text;\n }\n}\n","import { isReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { EnumWithRawValues } from \"./EnumWithRawValues\";\nimport { Initializer } from \"./Initializer\";\nimport { Method } from \"./Method\";\nimport { Protocol } from \"./Protocol\";\nimport { Struct } from \"./Struct\";\nimport { TypeReference } from \"./TypeReference\";\n\nexport declare namespace EnumWithAssociatedValues {\n interface Case {\n unsafeName: string;\n associatedValue: [TypeReference, ...TypeReference[]];\n docs?: DocComment;\n }\n\n interface Args {\n name: string;\n accessLevel?: AccessLevel;\n conformances?: Protocol[];\n cases: Case[];\n initializers?: Initializer[];\n methods?: Method[];\n nestedTypes?: (EnumWithRawValues | Struct)[];\n docs?: DocComment;\n }\n}\n\nexport class EnumWithAssociatedValues extends AstNode {\n public readonly name: string;\n public readonly accessLevel?: AccessLevel;\n public readonly conformances: Protocol[];\n public readonly cases: EnumWithAssociatedValues.Case[];\n public readonly initializers: Initializer[];\n public readonly methods: Method[];\n public readonly nestedTypes: (EnumWithRawValues | Struct)[];\n public readonly docs?: DocComment;\n\n public constructor({\n accessLevel,\n name,\n conformances,\n cases,\n initializers,\n methods,\n nestedTypes,\n docs\n }: EnumWithAssociatedValues.Args) {\n super();\n this.name = name;\n this.accessLevel = accessLevel;\n this.conformances = conformances ?? [];\n this.cases = cases;\n this.initializers = initializers ?? [];\n this.methods = methods ?? [];\n this.nestedTypes = nestedTypes ?? [];\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n writer.write(`enum ${this.name}`);\n this.conformances.forEach((conformance, index) => {\n if (index === 0) {\n writer.write(\": \");\n } else if (index > 0) {\n writer.write(\", \");\n }\n writer.write(conformance);\n });\n writer.write(\" {\");\n writer.newLine();\n writer.indent();\n this.cases.forEach((case_) => {\n if (case_.docs != null) {\n case_.docs.write(writer);\n }\n writer.write(\"case \");\n if (isReservedKeyword(case_.unsafeName)) {\n writer.write(`\\`${case_.unsafeName}\\``);\n } else {\n writer.write(case_.unsafeName);\n }\n writer.write(\"(\");\n case_.associatedValue.forEach((type, index) => {\n if (index > 0) {\n writer.write(\", \");\n }\n type.write(writer);\n });\n writer.write(\")\");\n writer.newLine();\n });\n if (this.initializers.length > 0) {\n writer.newLine();\n this.initializers.forEach((initializer, initializerIdx) => {\n if (initializerIdx > 0) {\n writer.newLine();\n }\n initializer.write(writer);\n writer.newLine();\n });\n }\n if (this.methods.length > 0) {\n writer.newLine();\n this.methods.forEach((method, methodIdx) => {\n if (methodIdx > 0) {\n writer.newLine();\n }\n method.write(writer);\n writer.newLine();\n });\n }\n if (this.nestedTypes.length > 0) {\n writer.newLine();\n this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n if (nestedTypeIdx > 0) {\n writer.newLine();\n }\n nestedType.write(writer);\n writer.newLine();\n });\n }\n writer.dedent();\n writer.write(\"}\");\n }\n}\n","import { escapeSwiftStringLiteral, isReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { Protocol } from \"./Protocol\";\n\nexport declare namespace EnumWithRawValues {\n interface Case {\n unsafeName: string;\n rawValue: string;\n docs?: DocComment;\n }\n\n interface Args {\n name: string;\n accessLevel?: AccessLevel;\n conformances?: (Protocol | \"String\")[];\n cases: Case[];\n docs?: DocComment;\n }\n}\n\nexport class EnumWithRawValues extends AstNode {\n public readonly name: string;\n public readonly accessLevel?: AccessLevel;\n public readonly conformances: (Protocol | \"String\")[];\n public readonly cases: EnumWithRawValues.Case[];\n public readonly docs?: DocComment;\n\n public constructor({ accessLevel, name, conformances, cases, docs }: EnumWithRawValues.Args) {\n super();\n this.name = name;\n this.accessLevel = accessLevel;\n this.conformances = conformances ?? [];\n this.cases = cases;\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n writer.write(`enum ${this.name}`);\n this.conformances.forEach((conformance, index) => {\n if (index === 0) {\n writer.write(\": \");\n } else if (index > 0) {\n writer.write(\", \");\n }\n writer.write(conformance);\n });\n if (this.cases.length === 0) {\n writer.write(\" {}\");\n return;\n }\n writer.write(\" {\");\n writer.newLine();\n writer.indent();\n this.cases.forEach((case_) => {\n if (case_.docs != null) {\n case_.docs.write(writer);\n }\n writer.write(\"case \");\n if (isReservedKeyword(case_.unsafeName)) {\n writer.write(`\\`${case_.unsafeName}\\``);\n } else {\n writer.write(case_.unsafeName);\n }\n if (case_.rawValue !== case_.unsafeName) {\n writer.write(\" = \");\n writer.write(`\"${escapeSwiftStringLiteral(case_.rawValue)}\"`);\n }\n writer.newLine();\n });\n writer.dedent();\n writer.write(\"}\");\n }\n}\n","import { ComputedProperty } from \"./ComputedProperty\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport type { EnumWithRawValues } from \"./EnumWithRawValues\";\nimport { Initializer } from \"./Initializer\";\nimport { Method } from \"./Method\";\nimport { Protocol } from \"./Protocol\";\nimport { Struct } from \"./Struct\";\n\nexport declare namespace Extension {\n interface Args {\n name: string;\n conformances?: Protocol[];\n initializers?: Initializer[];\n computedProperties?: ComputedProperty[];\n methods?: Method[];\n nestedTypes?: (Struct | EnumWithRawValues)[];\n docs?: DocComment;\n }\n}\n\nexport class Extension extends AstNode {\n public readonly name: string;\n public readonly conformances: string[];\n public readonly initializers: Initializer[];\n public readonly computedProperties: ComputedProperty[];\n public readonly methods: Method[];\n public readonly nestedTypes: (Struct | EnumWithRawValues)[];\n public readonly docs?: DocComment;\n\n public constructor({\n name,\n conformances,\n initializers,\n computedProperties,\n methods,\n nestedTypes,\n docs\n }: Extension.Args) {\n super();\n this.name = name;\n this.conformances = conformances ?? [];\n this.initializers = initializers ?? [];\n this.computedProperties = computedProperties ?? [];\n this.methods = methods ?? [];\n this.nestedTypes = nestedTypes ?? [];\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n writer.write(`extension ${this.name}`);\n this.conformances.forEach((conformance, index) => {\n if (index === 0) {\n writer.write(\": \");\n } else if (index > 0) {\n writer.write(\", \");\n }\n writer.write(conformance);\n });\n writer.write(\" {\");\n if (this.initializers.length > 0) {\n writer.newLine();\n writer.indent();\n this.initializers.forEach((initializer, initializerIdx) => {\n if (initializerIdx > 0) {\n writer.newLine();\n }\n initializer.write(writer);\n writer.newLine();\n });\n writer.dedent();\n }\n if (this.computedProperties.length > 0) {\n writer.newLine();\n writer.indent();\n this.computedProperties.forEach((computedProperty, computedPropertyIdx) => {\n if (computedPropertyIdx > 0) {\n writer.newLine();\n }\n computedProperty.write(writer);\n writer.newLine();\n });\n writer.dedent();\n }\n if (this.methods.length > 0) {\n writer.newLine();\n writer.indent();\n this.methods.forEach((method, methodIdx) => {\n if (methodIdx > 0) {\n writer.newLine();\n }\n method.write(writer);\n writer.newLine();\n });\n writer.dedent();\n }\n if (this.nestedTypes.length > 0) {\n writer.newLine();\n writer.indent();\n this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n if (nestedTypeIdx > 0) {\n writer.newLine();\n }\n nestedType.write(writer);\n writer.newLine();\n });\n writer.dedent();\n }\n writer.write(\"}\");\n }\n}\n","import { AstNode, Writer } from \"./core\";\nimport { Expression } from \"./Expression\";\n\nexport declare namespace FunctionArgument {\n interface Args {\n label?: string;\n value: Expression;\n }\n}\n\nexport class FunctionArgument extends AstNode {\n public readonly label?: string;\n public readonly value: Expression;\n\n constructor({ label, value }: FunctionArgument.Args) {\n super();\n this.label = label;\n this.value = value;\n }\n\n public write(writer: Writer): void {\n if (this.label != null) {\n writer.write(this.label);\n writer.write(\": \");\n }\n this.value.write(writer);\n }\n}\n","import { AstNode, Writer } from \"./core\";\nimport { Expression } from \"./Expression\";\nimport { TypeReference } from \"./TypeReference\";\n\nexport declare namespace FunctionParameter {\n interface Args {\n /** Used when calling the function. */\n argumentLabel?: string;\n /** Used within the function’s body. */\n unsafeName: string;\n escaping?: true;\n type: TypeReference;\n defaultValue?: Expression;\n docsContent?: string;\n }\n}\n\nexport class FunctionParameter extends AstNode {\n public readonly argumentLabel?: string;\n public readonly unsafeName: string;\n public readonly escaping?: true;\n public readonly type: TypeReference;\n public readonly defaultValue?: Expression;\n public readonly docsContent?: string;\n\n constructor({ argumentLabel, unsafeName, escaping, type, defaultValue, docsContent }: FunctionParameter.Args) {\n super();\n this.argumentLabel = argumentLabel;\n this.unsafeName = unsafeName;\n this.escaping = escaping;\n this.type = type;\n this.defaultValue = defaultValue;\n this.docsContent = docsContent;\n }\n\n public write(writer: Writer): void {\n if (this.argumentLabel == null) {\n writer.write(\"_ \");\n } else if (this.argumentLabel !== this.unsafeName) {\n writer.write(this.argumentLabel);\n writer.write(\" \");\n }\n // Parameter names don't need to be escaped\n writer.write(this.unsafeName);\n writer.write(\": \");\n if (this.escaping) {\n writer.write(\"@escaping \");\n }\n this.type.write(writer);\n if (this.defaultValue != null) {\n writer.write(\" = \");\n this.defaultValue.write(writer);\n }\n }\n}\n","import { AccessLevel } from \"./AccessLevel\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { FunctionParameter } from \"./FunctionParameter\";\n\nexport declare namespace Initializer {\n interface Args {\n accessLevel?: AccessLevel;\n convenience?: true;\n /** Whether the initializer can return `nil`. Initializers that return nil are said to be failable. */\n failable?: true;\n /** Whether the initializer can throw an error. */\n throws?: true;\n parameters?: FunctionParameter[];\n body?: CodeBlock;\n multiline?: true;\n docs?: DocComment;\n }\n}\n\nexport class Initializer extends AstNode {\n public readonly accessLevel?: AccessLevel;\n public readonly convenience?: true;\n public readonly failable?: true;\n public readonly throws?: true;\n public readonly parameters: FunctionParameter[];\n public readonly body: CodeBlock;\n public readonly multiline?: true;\n public readonly docs?: DocComment;\n\n constructor({ accessLevel, convenience, failable, throws, parameters, body, multiline, docs }: Initializer.Args) {\n super();\n this.accessLevel = accessLevel;\n this.convenience = convenience;\n this.failable = failable;\n this.throws = throws;\n this.parameters = parameters ?? [];\n this.body = body ?? CodeBlock.empty();\n this.multiline = multiline;\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n if (this.convenience) {\n writer.write(\"convenience \");\n }\n writer.write(\"init\");\n if (this.failable) {\n writer.write(\"?\");\n }\n writer.write(\"(\");\n if (this.multiline) {\n writer.newLine();\n writer.indent();\n }\n this.parameters.forEach((parameter, parameterIdx) => {\n if (parameterIdx > 0) {\n writer.write(\",\");\n if (this.multiline) {\n writer.newLine();\n } else {\n writer.write(\" \");\n }\n }\n parameter.write(writer);\n });\n if (this.multiline) {\n writer.newLine();\n writer.dedent();\n }\n writer.write(\") \");\n if (this.throws) {\n writer.write(\"throws \");\n }\n this.body.write(writer);\n }\n}\n","import { AstNode, Writer } from \"./core\";\n\nexport declare namespace LineBreak {\n interface Args {\n /** Number of line breaks to insert (default: 1) */\n count?: number;\n }\n}\n\n/**\n * An AST node for representing line breaks and spacing in Swift files.\n * Can be used as a building block when composing files.\n */\nexport class LineBreak extends AstNode {\n private readonly count: number;\n\n public constructor({ count = 1 }: LineBreak.Args = {}) {\n super();\n this.count = count;\n }\n\n public write(writer: Writer): void {\n for (let i = 0; i < this.count; i++) {\n writer.newLine();\n }\n }\n\n public static single(): LineBreak {\n return new LineBreak({ count: 1 });\n }\n\n public static double(): LineBreak {\n return new LineBreak({ count: 2 });\n }\n\n public static multiple(count: number): LineBreak {\n return new LineBreak({ count });\n }\n}\n","import { escapeReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport { Expression } from \"./Expression\";\nimport { FunctionArgument } from \"./FunctionArgument\";\nimport { FunctionParameter } from \"./FunctionParameter\";\nimport { TypeReference } from \"./TypeReference\";\n\nexport declare namespace Method {\n interface Attribute {\n name: string;\n arguments?: FunctionArgument[];\n }\n\n interface Args {\n attributes?: Attribute[];\n unsafeName: string;\n accessLevel?: AccessLevel;\n static_?: boolean;\n parameters?: FunctionParameter[];\n async?: true;\n throws?: true;\n returnType: TypeReference;\n body?: CodeBlock;\n docs?: DocComment;\n }\n}\n\nexport class Method extends AstNode {\n public readonly attributes: Method.Attribute[];\n public readonly unsafeName: string;\n public readonly accessLevel?: AccessLevel;\n public readonly static_?: boolean;\n public readonly parameters: FunctionParameter[];\n public readonly async?: true;\n public readonly throws?: true;\n public readonly returnType: TypeReference;\n public readonly body: CodeBlock;\n public readonly docs?: DocComment;\n\n public constructor({\n attributes,\n unsafeName,\n accessLevel,\n static_,\n parameters,\n async,\n throws,\n returnType,\n body,\n docs\n }: Method.Args) {\n super();\n this.attributes = attributes ?? [];\n this.unsafeName = unsafeName;\n this.accessLevel = accessLevel;\n this.static_ = static_;\n this.parameters = parameters ?? [];\n this.async = async;\n this.throws = throws;\n this.returnType = returnType;\n this.body = body ?? CodeBlock.empty();\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n this.attributes.forEach((attribute) => {\n if (attribute.arguments?.length) {\n Expression.functionCall({\n unsafeName: `@${attribute.name}`,\n arguments_: attribute.arguments\n }).write(writer);\n } else {\n writer.write(\"@\");\n writer.write(attribute.name);\n }\n writer.write(\" \");\n });\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n if (this.static_) {\n writer.write(\"static \");\n }\n writer.write(\"func \");\n writer.write(escapeReservedKeyword(this.unsafeName));\n writer.write(\"(\");\n this.parameters.forEach((parameter, parameterIdx) => {\n if (parameterIdx > 0) {\n writer.write(\", \");\n }\n parameter.write(writer);\n });\n writer.write(\")\");\n if (this.async) {\n writer.write(\" async\");\n }\n if (this.throws) {\n writer.write(\" throws\");\n }\n writer.write(\" -> \");\n this.returnType.write(writer);\n writer.write(\" \");\n this.body.write(writer);\n }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { AstNode, Writer } from \"./core\";\nimport { DeclarationType } from \"./DeclarationType\";\n\ntype EnumCaseValueBinding = {\n type: \"enum-case-value-binding\";\n caseName: string;\n declarationType: DeclarationType;\n referenceName: string;\n};\n\ntype InternalPattern = EnumCaseValueBinding;\n\nexport class Pattern extends AstNode {\n private internalPattern: InternalPattern;\n\n private constructor(internalPattern: InternalPattern) {\n super();\n this.internalPattern = internalPattern;\n }\n\n public write(writer: Writer): void {\n switch (this.internalPattern.type) {\n case \"enum-case-value-binding\":\n writer.write(\".\");\n writer.write(this.internalPattern.caseName);\n writer.write(\"(\");\n writer.write(this.internalPattern.declarationType);\n writer.write(\" \");\n writer.write(this.internalPattern.referenceName);\n writer.write(\")\");\n break;\n default:\n assertNever(this.internalPattern.type);\n }\n }\n\n public static enumCaseValueBinding(params: Omit<EnumCaseValueBinding, \"type\">): Pattern {\n return new this({\n type: \"enum-case-value-binding\",\n ...params\n });\n }\n}\n","import { isReservedKeyword } from \"../syntax\";\nimport { AccessLevel } from \"./AccessLevel\";\nimport { AstNode, Writer } from \"./core\";\nimport { DeclarationType } from \"./DeclarationType\";\nimport { DocComment } from \"./DocComment\";\nimport { Expression } from \"./Expression\";\nimport { TypeReference } from \"./TypeReference\";\n\nexport declare namespace Property {\n interface Args {\n unsafeName: string;\n accessLevel?: AccessLevel;\n static_?: boolean;\n declarationType: DeclarationType;\n type: TypeReference;\n defaultValue?: Expression;\n docs?: DocComment;\n }\n}\n\nexport class Property extends AstNode {\n public readonly unsafeName: string;\n public readonly accessLevel?: AccessLevel;\n public readonly static_?: boolean;\n public readonly declarationType: DeclarationType;\n public readonly type: TypeReference;\n public readonly defaultValue?: Expression;\n public readonly docs?: DocComment;\n\n constructor({ unsafeName, accessLevel, static_, declarationType, type, defaultValue, docs }: Property.Args) {\n super();\n this.unsafeName = unsafeName;\n this.accessLevel = accessLevel;\n this.static_ = static_;\n this.declarationType = declarationType;\n this.type = type;\n this.defaultValue = defaultValue;\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n if (this.static_) {\n writer.write(\"static \");\n }\n writer.write(this.declarationType);\n writer.write(\" \");\n if (isReservedKeyword(this.unsafeName)) {\n writer.write(`\\`${this.unsafeName}\\``);\n } else {\n writer.write(this.unsafeName);\n }\n writer.write(\": \");\n this.type.write(writer);\n if (this.defaultValue != null) {\n writer.write(\" = \");\n this.defaultValue.write(writer);\n }\n }\n}\n","export const Protocol = {\n CaseIterable: \"CaseIterable\",\n Codable: \"Codable\",\n CodingKey: \"CodingKey\",\n Decodable: \"Decodable\",\n Encodable: \"Encodable\",\n Equatable: \"Equatable\",\n Error: \"Error\",\n Hashable: \"Hashable\",\n Sendable: \"Sendable\",\n MultipartFormDataConvertible: \"MultipartFormDataConvertible\"\n} as const;\n\nexport type Protocol = (typeof Protocol)[keyof typeof Protocol];\n","import { AccessLevel } from \"./AccessLevel\";\nimport { AstNode, Writer } from \"./core\";\nimport { DocComment } from \"./DocComment\";\nimport type { EnumWithRawValues } from \"./EnumWithRawValues\";\nimport { Expression } from \"./Expression\";\nimport { FunctionArgument } from \"./FunctionArgument\";\nimport { Initializer } from \"./Initializer\";\nimport { Method } from \"./Method\";\nimport { Property } from \"./Property\";\nimport { Protocol } from \"./Protocol\";\n\nexport declare namespace Struct {\n interface Attribute {\n name: string;\n arguments?: FunctionArgument[];\n }\n\n interface Args {\n attributes?: Attribute[];\n name: string;\n accessLevel?: AccessLevel;\n conformances?: Protocol[];\n properties: Property[];\n initializers?: Initializer[];\n methods?: Method[];\n nestedTypes?: (Struct | EnumWithRawValues)[];\n docs?: DocComment;\n }\n}\n\nexport class Struct extends AstNode {\n public readonly attributes: Struct.Attribute[];\n public readonly name: string;\n public readonly accessLevel?: AccessLevel;\n public readonly conformances: string[];\n public readonly properties: Property[];\n public readonly initializers: Initializer[];\n public readonly methods: Method[];\n public readonly nestedTypes: (Struct | EnumWithRawValues)[];\n public readonly docs?: DocComment;\n\n public constructor({\n attributes,\n accessLevel,\n name,\n conformances,\n properties,\n initializers,\n methods,\n nestedTypes,\n docs\n }: Struct.Args) {\n super();\n this.attributes = attributes ?? [];\n this.name = name;\n this.accessLevel = accessLevel;\n this.conformances = conformances ?? [];\n this.properties = properties ?? [];\n this.initializers = initializers ?? [];\n this.methods = methods ?? [];\n this.nestedTypes = nestedTypes ?? [];\n this.docs = docs;\n }\n\n public write(writer: Writer): void {\n if (this.docs != null) {\n this.docs.write(writer);\n }\n this.attributes.forEach((attribute) => {\n if (attribute.arguments?.length) {\n Expression.functionCall({\n unsafeName: `@${attribute.name}`,\n arguments_: attribute.arguments\n }).write(writer);\n } else {\n writer.write(\"@\");\n writer.write(attribute.name);\n }\n writer.write(\" \");\n });\n if (this.accessLevel != null) {\n writer.write(this.accessLevel);\n writer.write(\" \");\n }\n writer.write(`struct ${this.name}`);\n this.conformances.forEach((conformance, index) => {\n if (index === 0) {\n writer.write(\": \");\n } else if (index > 0) {\n writer.write(\", \");\n }\n writer.write(conformance);\n });\n writer.write(\" {\");\n writer.newLine();\n writer.indent();\n const hasProperties = this.properties.length > 0;\n const hasInitializers = this.initializers.length > 0;\n const hasMethods = this.methods.length > 0;\n const hasNestedTypes = this.nestedTypes.length > 0;\n this.properties.forEach((property) => {\n property.write(writer);\n writer.newLine();\n });\n let wroteMember = hasProperties;\n if (hasInitializers) {\n if (wroteMember) {\n writer.newLine();\n }\n this.initializers.forEach((initializer, initializerIdx) => {\n if (initializerIdx > 0) {\n writer.newLine();\n }\n initializer.write(writer);\n writer.newLine();\n });\n wroteMember = true;\n }\n if (hasMethods) {\n if (wroteMember) {\n writer.newLine();\n }\n this.methods.forEach((method, methodIdx) => {\n if (methodIdx > 0) {\n writer.newLine();\n }\n method.write(writer);\n writer.newLine();\n });\n wroteMember = true;\n }\n if (hasNestedTypes) {\n if (wroteMember) {\n writer.newLine();\n }\n this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n if (nestedTypeIdx > 0) {\n writer.newLine();\n }\n nestedType.write(writer);\n writer.newLine();\n });\n }\n writer.dedent();\n writer.write(\"}\");\n }\n}\n","import { assertNever, values } from \"@fern-api/core-utils\";\nimport { camelCase, lowerFirst, upperFirst } from \"lodash-es\";\n\nimport { AstNode, Writer } from \"./core\";\n\nconst SwiftType = {\n String: {\n type: \"string\",\n symbolName: \"String\"\n },\n Bool: {\n type: \"bool\",\n symbolName: \"Bool\"\n },\n Int: {\n type: \"int\",\n symbolName: \"Int\"\n },\n Int64: {\n type: \"int64\",\n symbolName: \"Int64\"\n },\n UInt: {\n type: \"uint\",\n symbolName: \"UInt\"\n },\n UInt64: {\n type: \"uint64\",\n symbolName: \"UInt64\"\n },\n Float: {\n type: \"float\",\n symbolName: \"Float\"\n },\n Double: {\n type: \"double\",\n symbolName: \"Double\"\n },\n Void: {\n type: \"void\",\n symbolName: \"Void\"\n },\n // TODO(kafkas): Any doesn't seem to be under the Swift scope i.e. Swift.Any is not valid so we probably wanna move this.\n Any: {\n type: \"any\",\n symbolName: \"Any\"\n }\n} as const;\n\ntype SwiftType = (typeof SwiftType)[keyof typeof SwiftType];\n\nexport const FoundationType = {\n Data: {\n type: \"data\",\n symbolName: \"Data\"\n },\n Date: {\n type: \"date\",\n symbolName: \"Date\"\n },\n UUID: {\n type: \"uuid\",\n symbolName: \"UUID\"\n }\n} as const;\n\nexport type FoundationType = (typeof FoundationType)[keyof typeof FoundationType];\n\ntype Tuple = {\n type: \"tuple\";\n elements: [Type, ...Type[]];\n};\n\ntype Array_ = {\n type: \"array\";\n elementType: Type;\n};\n\ntype Dictionary = {\n type: \"dictionary\";\n keyType: Type;\n valueType: Type;\n};\n\ntype Optional = {\n type: \"optional\";\n valueType: Type;\n};\n\ntype Nullable = {\n type: \"nullable\";\n valueType: Type;\n};\n\n/**\n * A reference to a custom type.\n */\ntype Custom = {\n type: \"custom\";\n /** The name of the custom type. */\n name: string;\n};\n\n/**\n * An existential type that represents any type conforming to a protocol.\n * Maps to Swift's `any Protocol` syntax.\n */\ntype ExistentialAny = {\n type: \"existential-any\";\n protocolName: string;\n};\n\ntype CalendarDate = {\n type: \"calendar-date\";\n};\n\n/**\n * Represents our custom `JSONValue` type.\n */\ntype JsonValue = {\n type: \"json-value\";\n};\n\ntype InternalType =\n | SwiftType\n | FoundationType\n | Tuple\n | Array_\n | Dictionary\n | Optional\n | Nullable\n | Custom\n | ExistentialAny\n | CalendarDate\n | JsonValue;\n\nexport class Type extends AstNode {\n private internalType: InternalType;\n\n private constructor(internalType: InternalType) {\n super();\n this.internalType = internalType;\n }\n\n public get type(): InternalType[\"type\"] {\n return this.internalType.type;\n }\n\n /**\n * This is the type of the value, without any optional wrapping.\n */\n public get nonOptionalType(): Exclude<InternalType[\"type\"], \"optional\"> {\n return this.internalType.type === \"optional\"\n ? this.internalType.valueType.nonOptionalType\n : this.internalType.type;\n }\n\n public get nonNullableType(): Exclude<InternalType[\"type\"], \"nullable\"> {\n return this.internalType.type === \"nullable\"\n ? this.internalType.valueType.nonNullableType\n : this.internalType.type;\n }\n\n public get isOptional(): boolean {\n return this.internalType.type === \"optional\";\n }\n\n public get isNullable(): boolean {\n return this.internalType.type === \"nullable\";\n }\n\n public get isOptionalNullable(): boolean {\n return this.isOptional && this.nonOptional().isNullable;\n }\n\n public nonOptional(): Type {\n return Type.nonOptional(this);\n }\n\n public nonNullable(): Type {\n return Type.nonNullable(this);\n }\n\n public equals(that: Type): boolean {\n switch (this.internalType.type) {\n case \"string\":\n case \"bool\":\n case \"int\":\n case \"int64\":\n case \"uint\":\n case \"uint64\":\n case \"float\":\n case \"double\":\n case \"void\":\n case \"any\":\n case \"data\":\n case \"date\":\n case \"uuid\":\n case \"json-value\":\n return this.internalType.type === that.internalType.type;\n case \"tuple\": {\n if (\n that.internalType.type !== \"tuple\" ||\n this.internalType.elements.length !== that.internalType.elements.length\n ) {\n return false;\n }\n for (let i = 0; i < this.internalType.elements.length; i++) {\n const thisElement = this.internalType.elements[i];\n const thatElement = that.internalType.elements[i];\n if (!thisElement || !thatElement || !thisElement.equals(thatElement)) {\n return false;\n }\n }\n return true;\n }\n case \"array\":\n return (\n that.internalType.type === \"array\" &&\n this.internalType.elementType.equals(that.internalType.elementType)\n );\n case \"dictionary\":\n return (\n that.internalType.type === \"dictionary\" &&\n this.internalType.keyType.equals(that.internalType.keyType) &&\n this.internalType.valueType.equals(that.internalType.valueType)\n );\n case \"optional\":\n return (\n that.internalType.type == \"optional\" &&\n this.internalType.valueType.equals(that.internalType.valueType)\n );\n case \"nullable\":\n return (\n that.internalType.type === \"nullable\" &&\n this.internalType.valueType.equals(that.internalType.valueType)\n );\n case \"custom\":\n return that.internalType.type === \"custom\" && this.internalType.name === that.internalType.name;\n case \"existential-any\":\n return (\n that.internalType.type === \"existential-any\" &&\n this.internalType.protocolName === that.internalType.protocolName\n );\n case \"calendar-date\":\n return that.internalType.type === \"calendar-date\";\n default:\n assertNever(this.internalType);\n }\n }\n\n /**\n * Generates a unique, camelCase identifier suitable for use as an enum case name.\n * This method creates descriptive names that help differentiate between similar types\n * when used as associated values in Swift enums, particularly for undiscriminated unions.\n *\n * Examples:\n * - `string` → \"string\"\n * - `[String]` → \"stringArray\"\n * - `[String: Int]` → \"stringToIntDictionary\"\n * - `(String, Int, Bool)` → \"tupleStringAndIntAndBool\"\n * - `String?` → \"optionalString\"\n *\n * @returns A camelCase string suitable for use as a Swift enum case name\n */\n public toCaseName(): string {\n return Type.toCaseName(this);\n }\n\n public static toCaseName(type: Type): string {\n switch (type.internalType.type) {\n case \"string\":\n return \"string\";\n case \"bool\":\n return \"bool\";\n case \"int\":\n return \"int\";\n case \"int64\":\n return \"int64\";\n case \"uint\":\n return \"uint\";\n case \"uint64\":\n return \"uint64\";\n case \"float\":\n return \"float\";\n case \"double\":\n return \"double\";\n case \"void\":\n return \"void\";\n case \"any\":\n return \"any\";\n case \"data\":\n return \"data\";\n case \"date\":\n return \"date\";\n case \"uuid\":\n return \"uuid\";\n case \"tuple\": {\n const memberDescriptionsJoined = type.internalType.elements\n .map((element) => Type.toCaseName(element))\n .join(\"And\");\n return `tuple${upperFirst(memberDescriptionsJoined)}`;\n }\n case \"array\":\n return `${lowerFirst(Type.toCaseName(type.internalType.elementType))}Array`;\n case \"dictionary\": {\n const keyDescription = lowerFirst(Type.toCaseName(type.internalType.keyType));\n const valueDescription = upperFirst(Type.toCaseName(type.internalType.valueType));\n return `${keyDescription}To${valueDescription}Dictionary`;\n }\n case \"optional\":\n return `optional${upperFirst(Type.toCaseName(type.internalType.valueType))}`;\n case \"nullable\":\n return `nullable${upperFirst(Type.toCaseName(type.internalType.valueType))}`;\n case \"custom\":\n return camelCase(type.internalType.name);\n case \"existential-any\":\n return `any${upperFirst(type.internalType.protocolName)}`;\n case \"calendar-date\":\n return \"calendarDate\";\n case \"json-value\":\n return \"json\";\n default:\n assertNever(type.internalType);\n }\n }\n\n public write(writer: Writer): void {\n switch (this.internalType.type) {\n case \"string\":\n writer.write(\"String\");\n break;\n case \"bool\":\n writer.write(\"Bool\");\n break;\n case \"int\":\n writer.write(\"Int\");\n break;\n case \"int64\":\n writer.write(\"Int64\");\n break;\n case \"uint\":\n writer.write(\"UInt\");\n break;\n case \"uint64\":\n writer.write(\"UInt64\");\n break;\n case \"float\":\n writer.write(\"Float\");\n break;\n case \"double\":\n writer.write(\"Double\");\n break;\n case \"void\":\n writer.write(\"Void\");\n break;\n case \"any\":\n writer.write(\"Any\");\n break;\n case \"data\":\n writer.write(\"Data\");\n break;\n case \"date\":\n writer.write(\"Date\");\n break;\n case \"uuid\":\n writer.write(\"UUID\");\n break;\n case \"tuple\":\n writer.write(\"(\");\n this.internalType.elements.forEach((elementType, index) => {\n if (index > 0) {\n writer.write(\", \");\n }\n elementType.write(writer);\n });\n writer.write(\")\");\n break;\n case \"array\":\n writer.write(\"[\");\n this.internalType.elementType.write(writer);\n writer.write(\"]\");\n break;\n case \"dictionary\":\n writer.write(\"[\");\n this.internalType.keyType.write(writer);\n writer.write(\": \");\n this.internalType.valueType.write(writer);\n writer.write(\"]\");\n break;\n case \"optional\":\n this.internalType.valueType.write(writer);\n writer.write(\"?\");\n break;\n case \"nullable\":\n writer.write(\"Nullable<\");\n this.internalType.valueType.write(writer);\n writer.write(\">\");\n break;\n case \"custom\":\n writer.write(this.internalType.name);\n break;\n case \"existential-any\":\n writer.write(\"any \");\n writer.write(this.internalType.protocolName);\n break;\n case \"calendar-date\":\n writer.write(\"CalendarDate\");\n break;\n case \"json-value\":\n writer.write(\"JSONValue\");\n break;\n default:\n assertNever(this.internalType);\n }\n }\n\n public static primitiveSymbolNames() {\n return values(SwiftType).map((primitive) => primitive.symbolName);\n }\n\n public static foundationSymbolNames() {\n return values(FoundationType).map((foundation) => foundation.symbolName);\n }\n\n public static string(): Type {\n return new this(SwiftType.String);\n }\n\n public static bool(): Type {\n return new this(SwiftType.Bool);\n }\n\n public static int(): Type {\n return new this(SwiftType.Int);\n }\n\n public static uint(): Type {\n return new this(SwiftType.UInt);\n }\n\n public static uint64(): Type {\n return new this(SwiftType.UInt64);\n }\n\n public static int64(): Type {\n return new this(SwiftType.Int64);\n }\n\n public static float(): Type {\n return new this(SwiftType.Float);\n }\n\n public static double(): Type {\n return new this(SwiftType.Double);\n }\n\n public static void(): Type {\n return new this(SwiftType.Void);\n }\n\n public static any(): Type {\n return new this(SwiftType.Any);\n }\n\n public static data(): Type {\n return new this(FoundationType.Data);\n }\n\n public static date(): Type {\n return new this(FoundationType.Date);\n }\n\n public static uuid(): Type {\n return new this(FoundationType.UUID);\n }\n\n public static tuple(elements: [Type, ...Type[]]): Type {\n return new this({ type: \"tuple\", elements });\n }\n\n public static array(elementType: Type): Type {\n return new this({ type: \"array\", elementType });\n }\n\n public static dictionary(keyType: Type, valueType: Type): Type {\n return new this({ type: \"dictionary\", keyType, valueType });\n }\n\n public static optional(valueType: Type): Type {\n if (valueType.internalType.type === \"optional\") {\n return valueType;\n }\n return new this({ type: \"optional\", valueType });\n }\n\n public static nullable(valueType: Type): Type {\n return new this({ type: \"nullable\", valueType });\n }\n\n public static nonOptional(valueType: Type): Type {\n return valueType.internalType.type === \"optional\"\n ? Type.nonOptional(valueType.internalType.valueType)\n : valueType;\n }\n\n public static nonNullable(valueType: Type): Type {\n return valueType.internalType.type === \"nullable\"\n ? Type.nonNullable(valueType.internalType.valueType)\n : valueType;\n }\n\n public static custom(name: string): Type {\n return new this({ type: \"custom\", name });\n }\n\n public static existentialAny(protocolName: string): Type {\n return new this({ type: \"existential-any\", protocolName });\n }\n\n public static calendarDate(): Type {\n return new this({ type: \"calendar-date\" });\n }\n\n /**\n * Represents our custom `JSONValue` type.\n */\n public static jsonValue(): Type {\n return new this({ type: \"json-value\" });\n }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FoundationTypeSymbolName, SwiftTypeSymbolName } from \"../symbol\";\nimport { AstNode, Writer } from \"./core\";\n\ntype Symbol = {\n type: \"symbol\";\n symbol: string;\n};\n\ntype Generic = {\n type: \"generic\";\n reference: TypeReference;\n arguments: TypeReference[];\n};\n\ntype Tuple = {\n type: \"tuple\";\n elements: [TypeReference, ...TypeReference[]];\n};\n\ntype Array_ = {\n type: \"array\";\n elementType: TypeReference;\n};\n\ntype Dictionary = {\n type: \"dictionary\";\n keyType: TypeReference;\n valueType: TypeReference;\n};\n\ntype Optional = {\n type: \"optional\";\n valueType: TypeReference;\n};\n\ntype Nullable = {\n type: \"nullable\";\n valueType: TypeReference;\n};\n\ntype MemberAccess = {\n type: \"member-access\";\n target: TypeReference;\n memberName: string;\n};\n\ntype TypeReferenceVariant = Symbol | Generic | Tuple | Array_ | Dictionary | Optional | Nullable | MemberAccess;\n\nexport class TypeReference extends AstNode {\n public readonly variant: TypeReferenceVariant;\n\n private constructor(variant: TypeReferenceVariant) {\n super();\n this.variant = variant;\n }\n\n public nonOptional(): TypeReference {\n return TypeReference.nonOptional(this);\n }\n\n public nonNullable(): TypeReference {\n return TypeReference.nonNullable(this);\n }\n\n public getReferenceIfSymbolType(): string | null {\n return this.variant.type === \"symbol\" ? this.variant.symbol : null;\n }\n\n public write(writer: Writer): void {\n const { variant } = this;\n\n switch (variant.type) {\n case \"symbol\":\n writer.write(variant.symbol);\n break;\n case \"generic\": {\n variant.reference.write(writer);\n if (variant.arguments.length > 0) {\n writer.write(\"<\");\n variant.arguments.forEach((arg, index) => {\n arg.write(writer);\n if (index < variant.arguments.length - 1) {\n writer.write(\", \");\n }\n });\n writer.write(\">\");\n }\n break;\n }\n case \"tuple\":\n writer.write(\"(\");\n variant.elements.forEach((elementType, index) => {\n if (index > 0) {\n writer.write(\", \");\n }\n elementType.write(writer);\n });\n writer.write(\")\");\n break;\n case \"array\":\n writer.write(\"[\");\n variant.elementType.write(writer);\n writer.write(\"]\");\n break;\n case \"dictionary\":\n writer.write(\"[\");\n variant.keyType.write(writer);\n writer.write(\": \");\n variant.valueType.write(writer);\n writer.write(\"]\");\n break;\n case \"optional\":\n variant.valueType.write(writer);\n writer.write(\"?\");\n break;\n case \"nullable\":\n writer.write(\"Nullable<\");\n variant.valueType.write(writer);\n writer.write(\">\");\n break;\n case \"member-access\":\n variant.target.write(writer);\n writer.write(\".\");\n writer.write(variant.memberName);\n break;\n default:\n assertNever(variant);\n }\n }\n\n public equals(that: TypeReference): boolean {\n switch (this.variant.type) {\n case \"symbol\":\n return that.variant.type === \"symbol\" && this.variant.symbol === that.variant.symbol;\n case \"generic\":\n return (\n that.variant.type === \"generic\" &&\n this.variant.reference.equals(that.variant.reference) &&\n this.variant.arguments.every(\n (arg, index) =>\n that.variant.type === \"generic\" &&\n that.variant.arguments[index] &&\n arg.equals(that.variant.arguments[index])\n )\n );\n case \"tuple\": {\n return (\n that.variant.type === \"tuple\" &&\n this.variant.elements.every(\n (arg, index) =>\n that.variant.type === \"tuple\" &&\n that.variant.elements[index] &&\n arg.equals(that.variant.elements[index])\n )\n );\n }\n case \"array\":\n return that.variant.type === \"array\" && this.variant.elementType.equals(that.variant.elementType);\n case \"dictionary\":\n return (\n that.variant.type === \"dictionary\" &&\n this.variant.keyType.equals(that.variant.keyType) &&\n this.variant.valueType.equals(that.variant.valueType)\n );\n case \"optional\":\n return that.variant.type == \"optional\" && this.variant.valueType.equals(that.variant.valueType);\n case \"nullable\":\n return that.variant.type === \"nullable\" && this.variant.valueType.equals(that.variant.valueType);\n case \"member-access\":\n return (\n that.variant.type === \"member-access\" &&\n this.variant.target.equals(that.variant.target) &&\n this.variant.memberName === that.variant.memberName\n );\n default:\n assertNever(this.variant);\n }\n }\n\n public static symbol(symbolReference: string): TypeReference {\n return new this({ type: \"symbol\", symbol: symbolReference });\n }\n\n public static generic(reference: TypeReference, arguments_: TypeReference[]): TypeReference {\n return new this({ type: \"generic\", reference, arguments: arguments_ });\n }\n\n public static tuple(elements: [TypeReference, ...TypeReference[]]): TypeReference {\n return new this({ type: \"tuple\", elements });\n }\n\n public static array(elementType: TypeReference): TypeReference {\n return new this({ type: \"array\", elementType });\n }\n\n public static dictionary(keyType: TypeReference, valueType: TypeReference): TypeReference {\n return new this({ type: \"dictionary\", keyType, valueType });\n }\n\n public static optional(valueType: TypeReference): TypeReference {\n if (valueType.variant.type === \"optional\") {\n return valueType;\n }\n return new this({ type: \"optional\", valueType });\n }\n\n public static nullable(valueType: TypeReference): TypeReference {\n if (valueType.variant.type === \"nullable\") {\n return valueType;\n }\n return new this({ type: \"nullable\", valueType });\n }\n\n public static memberAccess(target: TypeReference, memberName: string): TypeReference {\n return new this({ type: \"member-access\", target, memberName });\n }\n\n // Helpers\n\n public static nonOptional(valueType: TypeReference): TypeReference {\n return valueType.variant.type === \"optional\"\n ? TypeReference.nonOptional(valueType.variant.valueType)\n : valueType;\n }\n\n public static nonNullable(valueType: TypeReference): TypeReference {\n return valueType.variant.type === \"nullable\"\n ? TypeReference.nonNullable(valueType.variant.valueType)\n : valueType;\n }\n\n public static unqualifiedToSwiftType(symbolName: SwiftTypeSymbolName): TypeReference {\n return TypeReference.symbol(symbolName);\n }\n\n public static unqualifiedToFoundationType(symbolName: FoundationTypeSymbolName): TypeReference {\n return TypeReference.symbol(symbolName);\n }\n}\n","export { type FoundationTypeSymbolName, type SwiftTypeSymbolName, Symbol } from \"./symbol\";\nexport { SymbolRegistry, type TypeSymbolShape } from \"./symbol-registry\";\n","import { TypeSymbolShape } from \"./symbol-registry\";\n\nexport type SwiftTypeSymbolName =\n | \"String\"\n | \"Bool\"\n | \"Int\"\n | \"Int64\"\n | \"UInt\"\n | \"UInt64\"\n | \"Float\"\n | \"Double\"\n | \"Void\"\n | \"Encoder\"\n | \"Decoder\"\n // TODO(kafkas): Any doesn't seem to be under the Swift scope i.e. Swift.Any is not valid so we probably wanna move this.\n | \"Any\";\n\nexport type FoundationTypeSymbolName = \"Data\" | \"Date\" | \"URLSession\" | \"UUID\";\n\nexport class Symbol {\n public static readonly SWIFT_SYMBOL_NAME = \"Swift\";\n public static readonly SWIFT_SYMBOL_ID = Symbol.SWIFT_SYMBOL_NAME;\n\n private static swiftTypeSymbolsByName: Record<SwiftTypeSymbolName, Symbol> = {\n String: Symbol.swiftType(\"String\"),\n Bool: Symbol.swiftType(\"Bool\"),\n Int: Symbol.swiftType(\"Int\"),\n Int64: Symbol.swiftType(\"Int64\"),\n UInt: Symbol.swiftType(\"UInt\"),\n UInt64: Symbol.swiftType(\"UInt64\"),\n Float: Symbol.swiftType(\"Float\"),\n Double: Symbol.swiftType(\"Double\"),\n Void: Symbol.swiftType(\"Void\"),\n Encoder: Symbol.swiftType(\"Encoder\"),\n Decoder: Symbol.swiftType(\"Decoder\"),\n Any: Symbol.swiftType(\"Any\")\n };\n public static swiftTypeSymbols = Object.values(Symbol.swiftTypeSymbolsByName);\n\n public static readonly FOUNDATION_SYMBOL_NAME = \"Foundation\";\n public static readonly FOUNDATION_SYMBOL_ID = Symbol.FOUNDATION_SYMBOL_NAME;\n\n private static foundationTypeSymbolsByName: Record<FoundationTypeSymbolName, Symbol> = {\n Data: Symbol.foundationType(\"Data\"),\n Date: Symbol.foundationType(\"Date\"),\n URLSession: Symbol.foundationType(\"URLSession\"),\n UUID: Symbol.foundationType(\"UUID\")\n };\n public static foundationTypeSymbols = Object.values(Symbol.foundationTypeSymbolsByName);\n\n public static isSwiftSymbol(symbolId: string): boolean {\n return Symbol.SWIFT_SYMBOL_ID === symbolId || symbolId.startsWith(`${Symbol.SWIFT_SYMBOL_ID}.`);\n }\n\n public static isSwiftSymbolName(symbolName: string): symbolName is SwiftTypeSymbolName {\n return symbolName in Symbol.swiftTypeSymbolsByName;\n }\n\n public static isFoundationSymbol(symbolId: string): boolean {\n return Symbol.FOUNDATION_SYMBOL_ID === symbolId || symbolId.startsWith(`${Symbol.FOUNDATION_SYMBOL_ID}.`);\n }\n\n public static isFoundationSymbolName(symbolName: string): symbolName is FoundationTypeSymbolName {\n return symbolName in Symbol.foundationTypeSymbolsByName;\n }\n\n /**\n * Any non-system symbol.\n */\n public static isCustomSymbol(symbolId: string): boolean {\n return !Symbol.isSwiftSymbol(symbolId) && !Symbol.isFoundationSymbol(symbolId);\n }\n\n public static create(symbolId: string, symbolName: string, shape: TypeSymbolShape): Symbol {\n return new Symbol(symbolId, symbolName, shape);\n }\n\n public static swiftType(symbolName: SwiftTypeSymbolName): Symbol {\n return Symbol.create(`${Symbol.SWIFT_SYMBOL_ID}.${symbolName}`, symbolName, { type: \"system\" });\n }\n\n public static foundationType(symbolName: FoundationTypeSymbolName): Symbol {\n return Symbol.create(`${Symbol.FOUNDATION_SYMBOL_ID}.${symbolName}`, symbolName, { type: \"system\" });\n }\n\n public readonly id: string;\n public readonly name: string;\n public readonly shape: TypeSymbolShape;\n\n private constructor(id: string, name: string, shape: TypeSymbolShape) {\n this.id = id;\n this.name = name;\n this.shape = shape;\n }\n\n public get isSwiftSymbol(): boolean {\n return Symbol.isSwiftSymbol(this.id);\n }\n\n public get isFoundationSymbol(): boolean {\n return Symbol.isFoundationSymbol(this.id);\n }\n\n public get isCustomSymbol(): boolean {\n return Symbol.isCustomSymbol(this.id);\n }\n}\n","import { assertNonNull } from \"@fern-api/core-utils\";\nimport { Symbol } from \"..\";\nimport { ModuleSymbol, SymbolGraph, TypeSymbolShape } from \"./symbol-graph\";\n\n/**\n * A symbol registry for a target module used in SDK generation.\n *\n * This registry manages symbol resolution and references within a Swift module,\n * with built-in support for Swift standard library and Foundation framework types.\n * It assumes that the Foundation module is imported throughout the target module.\n */\nexport class SymbolRegistry {\n public static create(): SymbolRegistry {\n const { graph, swiftSymbol, foundationSymbol } = SymbolRegistry.createGraph();\n return new SymbolRegistry(graph, swiftSymbol, foundationSymbol);\n }\n\n private static createGraph(): {\n graph: SymbolGraph;\n swiftSymbol: ModuleSymbol;\n foundationSymbol: ModuleSymbol;\n } {\n const graph = new SymbolGraph();\n\n const createSwiftNode = () => {\n const swiftSymbol = graph.createModuleSymbol({\n symbolId: Symbol.SWIFT_SYMBOL_ID,\n symbolName: Symbol.SWIFT_SYMBOL_NAME\n });\n Symbol.swiftTypeSymbols.forEach((symbol) => {\n const symbolNode = graph.createTypeSymbol({\n symbolId: symbol.id,\n symbolName: symbol.name,\n shape: { type: \"system\" }\n });\n graph.nestSymbol({ parentSymbolId: swiftSymbol.id, childSymbolId: symbolNode.id });\n });\n return swiftSymbol;\n };\n\n const createFoundationNode = () => {\n const foundationSymbol = graph.createModuleSymbol({\n symbolId: Symbol.FOUNDATION_SYMBOL_ID,\n symbolName: Symbol.FOUNDATION_SYMBOL_NAME\n });\n Symbol.foundationTypeSymbols.forEach((symbol) => {\n const symbolNode = graph.createTypeSymbol({\n symbolId: symbol.id,\n symbolName: symbol.name,\n shape: { type: \"system\" }\n });\n graph.nestSymbol({ parentSymbolId: foundationSymbol.id, childSymbolId: symbolNode.id });\n });\n return foundationSymbol;\n };\n\n const swiftSymbol = createSwiftNode();\n const foundationSymbol = createFoundationNode();\n\n return { graph, swiftSymbol, foundationSymbol };\n }\n\n private readonly graph: SymbolGraph;\n private readonly swiftSymbol: ModuleSymbol;\n private readonly foundationSymbol: ModuleSymbol;\n private registeredSourceModule: ModuleSymbol | null;\n private registeredTestModule: ModuleSymbol | null;\n\n private constructor(graph: SymbolGraph, swiftSymbol: ModuleSymbol, foundationSymbol: ModuleSymbol) {\n this.graph = graph;\n this.swiftSymbol = swiftSymbol;\n this.foundationSymbol = foundationSymbol;\n this.registeredSourceModule = null;\n this.registeredTestModule = null;\n }\n\n public getRegisteredSourceModuleSymbolOrThrow(): Symbol {\n assertNonNull(this.registeredSourceModule, \"Module symbol not found.\");\n return Symbol.create(this.registeredSourceModule.id, this.registeredSourceModule.name, { type: \"other\" });\n }\n\n public getRegisteredTestModuleSymbolOrThrow(): Symbol {\n assertNonNull(this.registeredTestModule, \"Module symbol not found.\");\n return Symbol.create(this.registeredTestModule.id, this.registeredTestModule.name, { type: \"other\" });\n }\n\n public getSymbolByIdOrThrow(symbolId: string): Symbol {\n const symbol = this.graph.getSymbolById(symbolId);\n assertNonNull(symbol, `Symbol with ID '${symbolId}' not found in registry.`);\n return Symbol.create(symbol.id, symbol.name, symbol.kind === \"type\" ? symbol.shape : { type: \"other\" });\n }\n\n /**\n * Registers a source module symbol. Use this to register a source module only once.\n * The import relations between the source module and Swift/Foundation will be automatically added.\n *\n * @param symbolName - The symbol name. Must not be `\"Swift\"` or `\"Foundation\"`.\n */\n public registerSourceModule(symbolName: string): Symbol {\n const symbolId = symbolName;\n const moduleSymbol = this.graph.createModuleSymbol({ symbolId, symbolName });\n moduleSymbol.addImport(this.swiftSymbol);\n moduleSymbol.addImport(this.foundationSymbol);\n this.registeredSourceModule = moduleSymbol;\n return Symbol.create(moduleSymbol.id, moduleSymbol.name, { type: \"other\" });\n }\n\n /**\n * Registers a test module symbol. Use this to register a test module only once.\n * The import relations between the test module, source module and Swift/Foundation will be automatically added.\n *\n * @param symbolName - The symbol name. Must not be different from `\"Swift\"`, `\"Foundation\"` or the name of the source module.\n */\n public registerTestModule(symbolName: string): Symbol {\n const symbolId = symbolName;\n const moduleSymbol = this.graph.createModuleSymbol({ symbolId, symbolName });\n moduleSymbol.addImport(this.swiftSymbol);\n moduleSymbol.addImport(this.foundationSymbol);\n assertNonNull(this.registeredSourceModule, \"Cannot register a test module before registering a source module.\");\n moduleSymbol.addImport(this.registeredSourceModule);\n this.registeredTestModule = moduleSymbol;\n return Symbol.create(moduleSymbol.id, moduleSymbol.name, { type: \"other\" });\n }\n\n /**\n * Registers a top-level source module type symbol.\n *\n * @param symbolName - The symbol name.\n * @param shape - The information about the shape of the type.\n */\n public registerSourceModuleType(symbolName: string, shape: TypeSymbolShape): Symbol {\n assertNonNull(this.registeredSourceModule, \"Cannot register a type before registering a module.\");\n const symbolId = this.inferSymbolIdForSourceModuleType(symbolName);\n const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n this.graph.nestSymbol({ parentSymbolId: this.registeredSourceModule.id, childSymbolId: typeSymbol.id });\n return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n }\n\n /**\n * Registers a top-level test module type symbol.\n *\n * @param symbolName - The symbol name.\n * @param shape - The information about the shape of the type.\n */\n public registerTestModuleType(symbolName: string, shape: TypeSymbolShape): Symbol {\n assertNonNull(this.registeredTestModule, \"Cannot register a type before registering a module.\");\n const symbolId = this.inferSymbolIdForTestModuleType(symbolName);\n const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n this.graph.nestSymbol({ parentSymbolId: this.registeredTestModule.id, childSymbolId: typeSymbol.id });\n return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n }\n\n /**\n * Registers a nested type symbol.\n */\n public registerNestedType({\n parentSymbol,\n symbolName,\n shape\n }: {\n parentSymbol: Symbol | string;\n symbolName: string;\n shape: TypeSymbolShape;\n }): Symbol {\n const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n const symbolId = this.inferSymbolIdForNestedType(parentSymbolId, symbolName);\n const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n this.graph.nestSymbol({ parentSymbolId, childSymbolId: typeSymbol.id });\n return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n }\n\n public reference({ fromSymbol, toSymbol }: { fromSymbol: Symbol | string; toSymbol: Symbol | string }) {\n const fromSymbolId = typeof fromSymbol === \"string\" ? fromSymbol : fromSymbol.id;\n const toSymbolId = typeof toSymbol === \"string\" ? toSymbol : toSymbol.id;\n return this.graph.reference({ fromSymbolId, targetSymbolId: toSymbolId });\n }\n\n public resolveReference({ fromSymbol, reference }: { fromSymbol: Symbol | string; reference: string }) {\n const fromSymbolId = typeof fromSymbol === \"string\" ? fromSymbol : fromSymbol.id;\n const symbol = this.graph.resolveReference({ fromSymbolId, reference });\n return symbol\n ? Symbol.create(symbol.id, symbol.name, symbol.kind === \"type\" ? symbol.shape : { type: \"other\" })\n : null;\n }\n\n public inferSymbolIdForSourceModuleType(symbolName: string) {\n assertNonNull(this.registeredSourceModule, \"Cannot get symbol id for a type before registering a module.\");\n return `${this.registeredSourceModule.id}.${symbolName}`;\n }\n\n public inferSymbolIdForTestModuleType(symbolName: string) {\n assertNonNull(this.registeredTestModule, \"Cannot get symbol id for a type before registering a module.\");\n return `${this.registeredTestModule.id}.${symbolName}`;\n }\n\n public inferSymbolIdForNestedType(parentSymbolId: string, symbolName: string) {\n return `${parentSymbolId}.${symbolName}`;\n }\n}\n","export type { ModuleSymbol, Symbol, TypeSymbol, TypeSymbolShape } from \"./symbol\";\nexport { SymbolGraph } from \"./symbol-graph\";\n","import { assertDefined } from \"@fern-api/core-utils\";\nimport { ModuleSymbol, Symbol, TypeSymbol, TypeSymbolShape } from \"./symbol\";\n\nexport class SymbolGraph {\n private readonly symbolsById = new Map<string, Symbol>();\n\n public createModuleSymbol({ symbolId, symbolName }: { symbolId: string; symbolName: string }): ModuleSymbol {\n this.validateSymbolNotExists(symbolId);\n const symbol = new ModuleSymbol(symbolId, symbolName);\n this.symbolsById.set(symbolId, symbol);\n return symbol;\n }\n\n public createTypeSymbol({\n symbolId,\n symbolName,\n shape\n }: {\n symbolId: string;\n symbolName: string;\n shape: TypeSymbolShape;\n }): TypeSymbol {\n this.validateSymbolNotExists(symbolId);\n const symbol = new TypeSymbol(symbolName, symbolId, shape);\n this.symbolsById.set(symbolId, symbol);\n return symbol;\n }\n\n public addImportRelation({\n clientSymbolId,\n importedSymbolId\n }: {\n clientSymbolId: string;\n importedSymbolId: string;\n }): void {\n const clientModuleSymbol = this.getSymbolByIdOrThrow(clientSymbolId);\n const importedModuleSymbol = this.getSymbolByIdOrThrow(importedSymbolId);\n if (clientModuleSymbol.kind !== \"module\" || importedModuleSymbol.kind !== \"module\") {\n throw new Error(\n `Client module '${clientModuleSymbol.id}' and imported module '${importedModuleSymbol.id}' must both be module symbols.`\n );\n }\n clientModuleSymbol.addImport(importedModuleSymbol);\n }\n\n public nestSymbol({ parentSymbolId, childSymbolId }: { parentSymbolId: string; childSymbolId: string }): void {\n const parentSymbol = this.getSymbolByIdOrThrow(parentSymbolId);\n const childSymbol = this.getSymbolByIdOrThrow(childSymbolId);\n parentSymbol.addChild(childSymbol);\n childSymbol.parent = parentSymbol;\n }\n\n public reference({ fromSymbolId, targetSymbolId }: { fromSymbolId: string; targetSymbolId: string }): string {\n const from = this.getSymbolByIdOrThrow(fromSymbolId);\n const target = this.getSymbolByIdOrThrow(targetSymbolId);\n const path = target.qualifiedPath;\n for (let k = 1; k <= path.length; k++) {\n const parts = path.slice(path.length - k);\n const resolved = this.resolvePath(from, parts);\n if (resolved?.id === target.id) {\n return parts.join(\".\");\n }\n }\n return target.qualifiedName;\n }\n\n /**\n * Resolve a raw reference string (e.g., \"Date\", \"Post.Date\", \"Foundation.Date\") from a given scope.\n * Returns the resolved Symbol node or null if it does not resolve unambiguously.\n */\n public resolveReference({ fromSymbolId, reference }: { fromSymbolId: string; reference: string }): Symbol | null {\n const from = this.getSymbolByIdOrThrow(fromSymbolId);\n const parts = reference.split(\".\").filter((p) => p.length > 0);\n return this.resolvePath(from, parts);\n }\n\n private resolvePath(from: Symbol, parts: string[]): Symbol | null {\n const [firstPart, ...restParts] = parts;\n if (firstPart === undefined) {\n return null;\n }\n const first = this.resolveFirstSegment(from, firstPart);\n if (first === null) {\n return null;\n }\n let cur: Symbol | null = first;\n for (let i = 0; i < restParts.length; i++) {\n const part = restParts[i];\n assertDefined(part);\n cur = cur.getChildByName(part) ?? null;\n if (cur === null) {\n return null;\n }\n }\n return cur;\n }\n\n private resolveFirstSegment(from: Symbol, name: string): Symbol | null {\n let cur: Symbol | null = from;\n while (cur !== null) {\n const child = cur.getChildByName(name);\n if (child) {\n return child;\n }\n cur = cur.parent;\n }\n const moduleSymbol = from.kind === \"module\" ? from : from.getNearestModuleAncestorOrThrow();\n // Allow explicit module qualifier (e.g., \"Acme\", \"Foundation\")\n if (moduleSymbol.name === name) {\n return moduleSymbol;\n }\n for (const importedModule of moduleSymbol.imports) {\n if (importedModule.name === name) {\n return importedModule;\n }\n }\n let resolved: Symbol | null = null;\n for (const importedModule of moduleSymbol.imports) {\n const hit = importedModule.getChildByName(name);\n if (hit) {\n if (resolved != null && resolved.id !== hit.id) {\n return null; // ambiguous across imports\n }\n resolved = hit;\n }\n }\n return resolved;\n }\n\n public getSymbolByIdOrThrow(symbolId: string): Symbol {\n const symbol = this.symbolsById.get(symbolId);\n assertDefined(symbol, `A symbol with the ID '${symbolId}' was not found in the registry.`);\n return symbol;\n }\n\n public getSymbolById(symbolId: string): Symbol | null {\n return this.symbolsById.get(symbolId) ?? null;\n }\n\n private validateSymbolNotExists(symbolId: string): void {\n if (this.symbolsById.has(symbolId)) {\n throw new Error(`A symbol with the ID '${symbolId}' already exists in the registry.`);\n }\n }\n}\n","import { assertNonNull } from \"@fern-api/core-utils\";\n\nabstract class AbstractSymbol {\n public readonly id: string;\n public readonly name: string;\n public abstract qualifiedPath: string[];\n protected childrenByName: Map<string, Symbol>;\n\n protected constructor(id: string, name: string) {\n this.id = id;\n this.name = name;\n this.childrenByName = new Map();\n }\n\n public get children() {\n return Array.from(this.childrenByName.values());\n }\n\n public addChild(child: Symbol) {\n if (this.childrenByName.has(child.name)) {\n throw new Error(`A child with the name '${child.name}' already exists in module '${this.name}'.`);\n }\n this.childrenByName.set(child.name, child);\n }\n\n public getChildByName(name: string): Symbol | undefined {\n return this.childrenByName.get(name);\n }\n}\n\nexport class ModuleSymbol extends AbstractSymbol {\n public readonly kind = \"module\";\n public readonly imports: ModuleSymbol[];\n public parent = null;\n\n public constructor(id: string, name: string) {\n super(id, name);\n this.imports = [];\n }\n\n public addImport(moduleSymbol: ModuleSymbol) {\n this.imports.push(moduleSymbol);\n }\n\n public get qualifiedPath(): string[] {\n return [this.name];\n }\n\n public get qualifiedName(): string {\n return this.name;\n }\n}\n\nexport type TypeSymbolShape =\n | {\n type: \"system\";\n }\n | {\n type: \"struct\";\n }\n | {\n type: \"class\";\n }\n | {\n type: \"enum-container\";\n }\n | {\n type: \"enum-with-raw-values\";\n }\n | {\n type: \"enum-with-associated-values\";\n }\n | {\n type: \"protocol\";\n }\n | {\n type: \"other\";\n };\n\nexport class TypeSymbol extends AbstractSymbol {\n public readonly kind = \"type\";\n public readonly shape: TypeSymbolShape;\n public parent: Symbol | null;\n\n public constructor(name: string, id: string, shape: TypeSymbolShape) {\n super(id, name);\n this.parent = null;\n this.shape = shape;\n }\n\n public getNearestModuleAncestorOrThrow(): ModuleSymbol {\n let cur: Symbol | null = this.parent;\n while (cur !== null && cur.kind !== \"module\") {\n cur = cur.parent;\n }\n assertNonNull(cur, `No module ancestor found for type symbol '${this.id}'`);\n return cur;\n }\n\n public get qualifiedPath(): string[] {\n return [...(this.parent?.qualifiedPath ?? []), this.name];\n }\n\n public get qualifiedName(): string {\n return this.qualifiedPath.join(\".\");\n }\n}\n\nexport type Symbol = ModuleSymbol | TypeSymbol;\n","export * from \"./custom-config\";\nexport * from \"./helpers\";\nexport * as swift from \"./swift\";\nexport * from \"./syntax\";\n"],"mappings":"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","names":["require_isFinite","__commonJSMin","exports","module","init_process","init_buffer","isFinite","value","require_maxSafeInteger","__commonJSMin","exports","module","init_process","init_buffer","MAX_SAFE_INTEGER","require_isSafeNumber","__commonJSMin","exports","module","init_process","init_buffer","MAX_SAFE_INTEGER","isSafeNumber","value","require_toOrdinal","__commonJSMin","exports","module","init_process","init_buffer","isFinite","isSafeNumber","toOrdinal","number","num","str","lastTwoDigits","betweenElevenAndThirteen","lastChar","require_makeOrdinal","__commonJSMin","exports","module","init_process","init_buffer","ENDS_WITH_DOUBLE_ZERO_PATTERN","ENDS_WITH_TEEN_PATTERN","ENDS_WITH_Y_PATTERN","ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN","ordinalLessThanThirteen","makeOrdinal","words","replaceWithOrdinalVariant","match","numberWord","require_toWords","__commonJSMin","exports","module","init_process","init_buffer","makeOrdinal","isFinite","isSafeNumber","TEN","ONE_HUNDRED","ONE_THOUSAND","ONE_MILLION","ONE_BILLION","ONE_TRILLION","ONE_QUADRILLION","MAX","LESS_THAN_TWENTY","TENTHS_LESS_THAN_HUNDRED","toWords","number","asOrdinal","words","num","generateWords","remainder","word","require_toWordsOrdinal","__commonJSMin","exports","module","init_process","init_buffer","makeOrdinal","toWords","toWordsOrdinal","number","words","require_src","__commonJSMin","exports","module","init_process","init_buffer","init_process","init_buffer","assertDefined","val","message","assertNonNull","assertNever","x","init_process","init_buffer","init_process","init_buffer","noop","init_process","init_buffer","keys","object","init_process","init_buffer","values","object","enum_with_associated_values_exports","__export","sanitizeForIdentifier","sanitizeToCamelCase","sanitizeToPascalCase","init_process","init_buffer","import_number_to_words","init_process","init_buffer","pascalCase","str","upperFirst_default","camelCase_default","sanitizeToPascalCase","value","sanitized","sanitizeForIdentifier","pascalCase","sanitizeToCamelCase","camelCase_default","originalValue","sanitizedValue","result","convertLeadingNumberToWords","upperFirst_default","match","leadingNumber","rest","e","digitWords","digit","init_process","init_buffer","literal_enum_exports","__export","generateEnumCaseLabel","generateName","sanitizeLiteralValue","init_process","init_buffer","generateName","literalValue","sanitizedLiteralValue","sanitizeLiteralValue","pascalCase","generateEnumCaseLabel","camelCase_default","originalValue","sanitizedValue","init_process","init_buffer","init_process","init_buffer","reservedKeywords","reservedKeywordsSet","isReservedKeyword","word","escapeReservedKeyword","sanitizeSelf","name","swift_exports","__export","AccessLevel","Class","CodeBlock","Comment","ComputedProperty","DeclarationType","DocComment","EnumWithAssociatedValues","EnumWithRawValues","Expression","Extension","FunctionArgument","FunctionParameter","Initializer","LineBreak","Method","Pattern","Property","Protocol","Statement","Struct","Symbol","SymbolRegistry","Type","TypeReference","class_","codeBlock","comment","computedProperty","docComment","enumWithAssociatedValues","enumWithRawValues","extension","functionArgument","functionParameter","initializer","method","property","struct","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","AccessLevel","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","AbstractAstNode","init_process","init_buffer","init_process","init_buffer","CodeBlock","AbstractAstNode","value","__publicField","writer","TAB_SIZE","enableStackTracking","process","AbstractWriter","__publicField","parts","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","input","CodeBlock","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","i","stackLine","each","maxFrames","_a","stop","line","match","fn","path","column","_b","_c","_d","_e","_f","_g","init_process","init_buffer","Writer","AbstractWriter","AstNode","AbstractAstNode","writer","Writer","Class","AstNode","accessLevel","name","final","conformances","properties","initializers","methods","docs","__publicField","writer","conformance","index","property","initializer","initializerIdx","method","methodIdx","init_process","init_buffer","CodeBlock","_CodeBlock","AstNode","args","__publicField","writer","commonCodeBlock","noop","statements","statement","init_process","init_buffer","Comment","AstNode","content","__publicField","writer","line","init_process","init_buffer","init_process","init_buffer","escapeSwiftStringLiteral","rawValue","init_process","init_buffer","Expression","AstNode","internalExpression","__publicField","writer","escapeReservedKeyword","assertNever","target","arguments_","multiline","argument","argumentIdx","dictLiteral","_a","key","value","entryIdx","arrayLiteral","element","elementIdx","unsafeName","params","__spreadValues","left","right","caseName","isoStringWithoutFractionalSeconds","isoString","expression","init_process","init_buffer","init_process","init_buffer","DeclarationType","Statement","AstNode","internalStatement","__publicField","writer","_a","_b","_c","DeclarationType","escapeReservedKeyword","parameter","parameterIdx","CodeBlock","switchCase","statement","elseIf","assertNever","params","__spreadValues","unsafeName","value","expression","moduleName","content","ComputedProperty","AstNode","unsafeName","accessLevel","type","body","docs","__publicField","writer","escapeReservedKeyword","CodeBlock","Expression","Statement","assertNever","init_process","init_buffer","DocComment","_DocComment","AstNode","summary","description","parameters","returns","throws","__publicField","param","t","writer","line","lineIdx","throwsDescription","sanitizedText","lines","text","init_process","init_buffer","EnumWithAssociatedValues","AstNode","accessLevel","name","conformances","cases","initializers","methods","nestedTypes","docs","__publicField","writer","conformance","index","case_","isReservedKeyword","type","initializer","initializerIdx","method","methodIdx","nestedType","nestedTypeIdx","init_process","init_buffer","EnumWithRawValues","AstNode","accessLevel","name","conformances","cases","docs","__publicField","writer","conformance","index","case_","isReservedKeyword","escapeSwiftStringLiteral","init_process","init_buffer","Extension","AstNode","name","conformances","initializers","computedProperties","methods","nestedTypes","docs","__publicField","writer","conformance","index","initializer","initializerIdx","computedProperty","computedPropertyIdx","method","methodIdx","nestedType","nestedTypeIdx","init_process","init_buffer","FunctionArgument","AstNode","label","value","__publicField","writer","init_process","init_buffer","FunctionParameter","AstNode","argumentLabel","unsafeName","escaping","type","defaultValue","docsContent","__publicField","writer","init_process","init_buffer","Initializer","AstNode","accessLevel","convenience","failable","throws","parameters","body","multiline","docs","__publicField","CodeBlock","writer","parameter","parameterIdx","init_process","init_buffer","LineBreak","_LineBreak","AstNode","count","__publicField","writer","i","init_process","init_buffer","Method","AstNode","attributes","unsafeName","accessLevel","static_","parameters","async","throws","returnType","body","docs","__publicField","CodeBlock","writer","attribute","_a","Expression","escapeReservedKeyword","parameter","parameterIdx","init_process","init_buffer","Pattern","AstNode","internalPattern","__publicField","writer","assertNever","params","__spreadValues","init_process","init_buffer","Property","AstNode","unsafeName","accessLevel","static_","declarationType","type","defaultValue","docs","__publicField","writer","isReservedKeyword","init_process","init_buffer","Protocol","init_process","init_buffer","Struct","AstNode","attributes","accessLevel","name","conformances","properties","initializers","methods","nestedTypes","docs","__publicField","writer","attribute","_a","Expression","conformance","index","hasProperties","hasInitializers","hasMethods","hasNestedTypes","property","wroteMember","initializer","initializerIdx","method","methodIdx","nestedType","nestedTypeIdx","init_process","init_buffer","SwiftType","FoundationType","Type","_Type","AstNode","internalType","__publicField","that","i","thisElement","thatElement","assertNever","type","memberDescriptionsJoined","element","upperFirst_default","lowerFirst_default","keyDescription","valueDescription","camelCase_default","writer","elementType","index","values","primitive","foundation","elements","keyType","valueType","name","protocolName","init_process","init_buffer","TypeReference","_TypeReference","AstNode","variant","__publicField","writer","arg","index","elementType","assertNever","that","symbolReference","reference","arguments_","elements","keyType","valueType","target","memberName","symbolName","init_process","init_buffer","init_process","init_buffer","_Symbol","id","name","shape","__publicField","symbolId","symbolName","Symbol","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","AbstractSymbol","id","name","__publicField","child","ModuleSymbol","moduleSymbol","TypeSymbol","shape","cur","assertNonNull","_a","_b","SymbolGraph","__publicField","symbolId","symbolName","symbol","ModuleSymbol","shape","TypeSymbol","clientSymbolId","importedSymbolId","clientModuleSymbol","importedModuleSymbol","parentSymbolId","childSymbolId","parentSymbol","childSymbol","fromSymbolId","targetSymbolId","from","target","path","k","parts","resolved","reference","p","_a","firstPart","restParts","first","cur","i","part","assertDefined","name","child","moduleSymbol","importedModule","hit","SymbolRegistry","_SymbolRegistry","graph","swiftSymbol","foundationSymbol","__publicField","SymbolGraph","createSwiftNode","Symbol","symbol","symbolNode","createFoundationNode","assertNonNull","symbolId","symbolName","moduleSymbol","shape","typeSymbol","parentSymbol","parentSymbolId","fromSymbol","toSymbol","fromSymbolId","toSymbolId","reference","class_","args","Class","codeBlock","CodeBlock","comment","Comment","computedProperty","ComputedProperty","docComment","DocComment","enumWithAssociatedValues","EnumWithAssociatedValues","enumWithRawValues","EnumWithRawValues","extension","Extension","functionArgument","FunctionArgument","functionParameter","FunctionParameter","initializer","Initializer","method","Method","property","Property","struct","Struct","init_process","init_buffer"]}
@@ -1,2 +0,0 @@
1
- import{a as y,e as s,f as t}from"./chunk-JFTYS7SI.js";import{j as p,l as c,n as u}from"./chunk-PYMG6Y4R.js";c();u();var m=class{constructor({context:r}){p(this,"context");this.context=r}getFilePropertyInfo({body:r,value:o}){var l;let e={fileFields:[],bodyPropertyFields:[]},i=(l=this.context.getRecord(o))!=null?l:{};for(let n of r.properties)switch(n.type){case"file":{let a=t.functionArgument({label:s(n.name.camelCase.unsafeName),value:this.getSingleFileProperty({property:n,record:i})});e.fileFields.push(a);break}case"fileArray":{let a=t.functionArgument({label:s(n.name.camelCase.unsafeName),value:this.getArrayFileProperty({property:n,record:i})});e.fileFields.push(a);break}case"bodyProperty":{let a=t.functionArgument({label:s(n.name.name.camelCase.unsafeName),value:this.getBodyProperty({property:n,record:i})});e.bodyPropertyFields.push(a);break}default:y(n)}return e}getSingleFileProperty({property:r,record:o}){let e=this.context.getSingleFileValue({property:r,record:o});return t.Expression.contextualMethodCall({methodName:"init",arguments_:[t.functionArgument({label:"data",value:t.Expression.dataLiteral(e!=null?e:"")})]})}getArrayFileProperty({property:r,record:o}){let e=this.context.getFileArrayValues({property:r,record:o});return t.Expression.arrayLiteral({elements:(e!=null?e:[]).map(i=>t.Expression.contextualMethodCall({methodName:"init",arguments_:[t.functionArgument({label:"data",value:t.Expression.dataLiteral(i)})]})),multiline:!0})}getBodyProperty({property:r,record:o}){let e=o[r.name.wireValue];return e==null?t.Expression.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:r.typeReference,value:e})}};export{m as a};
2
- //# sourceMappingURL=chunk-KIHSBETU.js.map