{"version":3,"file":"index.mjs","sources":["../../../src/generators/content-types/index.ts"],"sourcesContent":["import * as ts from 'typescript';\nimport { values, pipe, map, sortBy } from 'lodash/fp';\n\nimport { models } from '../common';\nimport { emitDefinitions, format, generateSharedExtensionDefinition } from '../utils';\nimport type { GeneratorOptions } from '../utils';\n\nconst { factory } = ts;\n\nconst NO_CONTENT_TYPE_PLACEHOLDER_COMMENT = `/*\n * The app doesn't have any content-types yet.\n */\n`;\n\n/**\n * Generate type definitions for Strapi Content-Types\n */\nexport const generateContentTypesDefinitions = async (\n  options: GeneratorOptions = {} as GeneratorOptions\n) => {\n  const { strapi } = options;\n\n  const { contentTypes } = strapi;\n\n  const contentTypesDefinitions = pipe(\n    values,\n    sortBy('uid'),\n    map((contentType: any) => ({\n      uid: contentType.uid,\n      definition: models.schema.generateSchemaDefinition(contentType),\n    }))\n  )(contentTypes);\n\n  options.logger.debug(`Found ${contentTypesDefinitions.length} content-types.`);\n\n  if (contentTypesDefinitions.length === 0) {\n    return { output: NO_CONTENT_TYPE_PLACEHOLDER_COMMENT, stats: {} };\n  }\n\n  const formattedSchemasDefinitions = contentTypesDefinitions.reduce<any[]>((acc, def) => {\n    acc.push(\n      // Definition\n      def.definition,\n\n      // Add a newline between each interface declaration\n      factory.createIdentifier('\\n')\n    );\n\n    return acc;\n  }, []);\n\n  const allDefinitions = [\n    // Imports\n    ...models.imports.generateImportDefinition(),\n\n    // Add a newline after the import statement\n    factory.createIdentifier('\\n'),\n\n    // Schemas\n    ...formattedSchemasDefinitions,\n\n    // Global\n    generateSharedExtensionDefinition('ContentTypeSchemas', contentTypesDefinitions),\n  ];\n\n  const output = emitDefinitions(allDefinitions);\n  const formattedOutput = await format(output);\n\n  return { output: formattedOutput, stats: {} };\n};\n"],"names":["factory","ts","NO_CONTENT_TYPE_PLACEHOLDER_COMMENT","generateContentTypesDefinitions","options","strapi","contentTypes","contentTypesDefinitions","pipe","values","sortBy","map","contentType","uid","definition","models","logger","debug","length","output","stats","formattedSchemasDefinitions","reduce","acc","def","push","createIdentifier","allDefinitions","generateSharedExtensionDefinition","emitDefinitions","formattedOutput","format"],"mappings":";;;;;;;AAOA,MAAM,EAAEA,OAAO,EAAE,GAAGC,EAAAA;AAEpB,MAAMC,sCAAsC,CAAC;;;AAG7C,CAAC;AAED;;AAEC,IACM,MAAMC,+BAAAA,GAAkC,OAC7CC,OAAAA,GAA4B,EAAsB,GAAA;IAElD,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;IAEnB,MAAM,EAAEE,YAAY,EAAE,GAAGD,MAAAA;IAEzB,MAAME,uBAAAA,GAA0BC,KAC9BC,MAAAA,EACAC,MAAAA,CAAO,QACPC,GAAAA,CAAI,CAACC,eAAsB;AACzBC,YAAAA,GAAAA,EAAKD,YAAYC,GAAG;AACpBC,YAAAA,UAAAA,EAAYC,wBAAsC,CAACH,WAAAA;AACrD,SAAA,CAAA,CAAA,CAAA,CACAN,YAAAA,CAAAA;IAEFF,OAAAA,CAAQY,MAAM,CAACC,KAAK,CAAC,CAAC,MAAM,EAAEV,uBAAAA,CAAwBW,MAAM,CAAC,eAAe,CAAC,CAAA;IAE7E,IAAIX,uBAAAA,CAAwBW,MAAM,KAAK,CAAA,EAAG;QACxC,OAAO;YAAEC,MAAAA,EAAQjB,mCAAAA;AAAqCkB,YAAAA,KAAAA,EAAO;AAAG,SAAA;AAClE,IAAA;AAEA,IAAA,MAAMC,2BAAAA,GAA8Bd,uBAAAA,CAAwBe,MAAM,CAAQ,CAACC,GAAAA,EAAKC,GAAAA,GAAAA;QAC9ED,GAAAA,CAAIE,IAAI;QAEND,GAAAA,CAAIV,UAAU;AAGdd,QAAAA,OAAAA,CAAQ0B,gBAAgB,CAAC,IAAA,CAAA,CAAA;QAG3B,OAAOH,GAAAA;AACT,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAMI,cAAAA,GAAiB;;WAElBZ,wBAAuC,EAAA;;AAG1Cf,QAAAA,OAAAA,CAAQ0B,gBAAgB,CAAC,IAAA,CAAA;;AAGtBL,QAAAA,GAAAA,2BAAAA;;AAGHO,QAAAA,iCAAAA,CAAkC,oBAAA,EAAsBrB,uBAAAA;AACzD,KAAA;AAED,IAAA,MAAMY,SAASU,eAAAA,CAAgBF,cAAAA,CAAAA;IAC/B,MAAMG,eAAAA,GAAkB,MAAMC,MAAAA,CAAOZ,MAAAA,CAAAA;IAErC,OAAO;QAAEA,MAAAA,EAAQW,eAAAA;AAAiBV,QAAAA,KAAAA,EAAO;AAAG,KAAA;AAC9C;;;;"}