{"version":3,"file":"index.mjs","sources":["../../../src/generators/components/index.ts"],"sourcesContent":["import * as ts from 'typescript';\nimport { pipe, values, sortBy, map } 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_COMPONENT_PLACEHOLDER_COMMENT = `/*\n * The app doesn't have any components yet.\n */\n`;\n\n/**\n * Generate type definitions for Strapi Components\n */\nexport const generateComponentsDefinitions = async (\n  options: GeneratorOptions = {} as GeneratorOptions\n) => {\n  const { strapi } = options;\n\n  const { components } = strapi;\n\n  const componentsDefinitions = pipe(\n    values,\n    sortBy('uid'),\n    map((component: any) => ({\n      uid: component.uid,\n      definition: models.schema.generateSchemaDefinition(component),\n    }))\n  )(components);\n\n  options.logger.debug(`Found ${componentsDefinitions.length} components.`);\n\n  if (componentsDefinitions.length === 0) {\n    return { output: NO_COMPONENT_PLACEHOLDER_COMMENT, stats: {} };\n  }\n\n  const formattedSchemasDefinitions = componentsDefinitions.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('ComponentSchemas', componentsDefinitions),\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_COMPONENT_PLACEHOLDER_COMMENT","generateComponentsDefinitions","options","strapi","components","componentsDefinitions","pipe","values","sortBy","map","component","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,mCAAmC,CAAC;;;AAG1C,CAAC;AAED;;AAEC,IACM,MAAMC,6BAAAA,GAAgC,OAC3CC,OAAAA,GAA4B,EAAsB,GAAA;IAElD,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;IAEnB,MAAM,EAAEE,UAAU,EAAE,GAAGD,MAAAA;IAEvB,MAAME,qBAAAA,GAAwBC,KAC5BC,MAAAA,EACAC,MAAAA,CAAO,QACPC,GAAAA,CAAI,CAACC,aAAoB;AACvBC,YAAAA,GAAAA,EAAKD,UAAUC,GAAG;AAClBC,YAAAA,UAAAA,EAAYC,wBAAsC,CAACH,SAAAA;AACrD,SAAA,CAAA,CAAA,CAAA,CACAN,UAAAA,CAAAA;IAEFF,OAAAA,CAAQY,MAAM,CAACC,KAAK,CAAC,CAAC,MAAM,EAAEV,qBAAAA,CAAsBW,MAAM,CAAC,YAAY,CAAC,CAAA;IAExE,IAAIX,qBAAAA,CAAsBW,MAAM,KAAK,CAAA,EAAG;QACtC,OAAO;YAAEC,MAAAA,EAAQjB,gCAAAA;AAAkCkB,YAAAA,KAAAA,EAAO;AAAG,SAAA;AAC/D,IAAA;AAEA,IAAA,MAAMC,2BAAAA,GAA8Bd,qBAAAA,CAAsBe,MAAM,CAAQ,CAACC,GAAAA,EAAKC,GAAAA,GAAAA;QAC5ED,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,kBAAA,EAAoBrB,qBAAAA;AACvD,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;;;;"}