{"version":3,"file":"export-swift.cjs","names":["isSchemaObjectFlat","isPrimitive"],"sources":["../../../src/common/schema/export-swift.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { isPrimitive } from '../data'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n  interface TypeMeta {\n    swiftName?: string\n    swiftProtocol?: string\n    swiftDesc?: string\n    swiftDefault?: string\n  }\n}\n\nconst mapSwiftType = {\n  string: 'String',\n  number: 'Double',\n  int: 'Int',\n  boolean: 'Bool',\n} as any\n\nexport function schemaExportSwiftStruct<T>(schema: Type<T>, name: string = 'Example'): string {\n  assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n  let protocol = ''\n  if (schema._meta?.swiftProtocol) {\n    protocol = `: ${schema._meta.swiftProtocol}`\n  }\n\n  const lines: string[] = [\n    `struct ${schema._meta?.swiftName ?? name}${protocol} {`,\n  ]\n\n  objectMap(schema._object!, (key, schema: Type<any>) => {\n    let s = `  var ${key}: ${mapSwiftType[schema.type] ?? schema.type}`\n    if (schema._optional === true)\n      s += '?'\n    if (schema._meta?.swiftDefault || (schema._default != null && isPrimitive(schema._default)))\n      s += ` = ${schema._meta?.swiftDefault ?? JSON.stringify(schema._default)}`\n    lines.push(s)\n  })\n\n  lines.push('}')\n\n  return lines.join('\\n')\n}\n"],"mappings":";;;;;;;AAeA,MAAM,eAAe;CACnB,QAAQ;CACR,QAAQ;CACR,KAAK;CACL,SAAS;CACV;AAED,SAAgB,wBAA2B,QAAiB,OAAe,WAAmB;AAC5F,8BAAOA,+CAAmB,OAAO,EAAE,iCAAiC;CAEpE,IAAI,WAAW;AACf,KAAI,OAAO,OAAO,cAChB,YAAW,KAAK,OAAO,MAAM;CAG/B,MAAM,QAAkB,CACtB,UAAU,OAAO,OAAO,aAAa,OAAO,SAAS,IACtD;AAED,sCAAU,OAAO,UAAW,KAAK,WAAsB;EACrD,IAAI,IAAI,SAAS,IAAI,IAAI,aAAa,OAAO,SAAS,OAAO;AAC7D,MAAI,OAAO,cAAc,KACvB,MAAK;AACP,MAAI,OAAO,OAAO,gBAAiB,OAAO,YAAY,QAAQC,mCAAY,OAAO,SAAS,CACxF,MAAK,MAAM,OAAO,OAAO,gBAAgB,KAAK,UAAU,OAAO,SAAS;AAC1E,QAAM,KAAK,EAAE;GACb;AAEF,OAAM,KAAK,IAAI;AAEf,QAAO,MAAM,KAAK,KAAK"}