{"version":3,"file":"index.mjs","sources":["../../src/generators/index.ts"],"sourcesContent":["import path from 'node:path';\nimport chalk from 'chalk';\n\nimport { TYPES_ROOT_DIR, GENERATED_OUT_DIR } from './constants';\nimport { saveDefinitionToFileSystem, createLogger, timer } from './utils';\nimport { generateContentTypesDefinitions } from './content-types';\nimport { generateComponentsDefinitions } from './components';\n\nconst GENERATORS = {\n  contentTypes: generateContentTypesDefinitions,\n  components: generateComponentsDefinitions,\n};\n\nexport interface GenerateConfig {\n  strapi: any;\n  pwd: string;\n  rootDir?: string;\n  artifacts?: {\n    contentTypes?: boolean;\n    components?: boolean;\n    services?: boolean;\n    controllers?: boolean;\n    policies?: boolean;\n    middlewares?: boolean;\n  };\n  logger?: {\n    silent?: boolean;\n    debug?: boolean;\n    verbose?: boolean;\n  };\n}\n\n/**\n * Generate types definitions based on the given configuration\n */\nexport const generate = async (config: GenerateConfig = {} as GenerateConfig) => {\n  const { pwd, rootDir = TYPES_ROOT_DIR, strapi, artifacts = {}, logger: loggerConfig } = config;\n  const reports: Record<string, any> = {};\n  const logger = createLogger(loggerConfig);\n  const psTimer = timer().start();\n\n  const registryPwd = path.join(pwd, rootDir, GENERATED_OUT_DIR);\n  const generatorConfig = { strapi, pwd: registryPwd, logger };\n\n  const returnWithMessage = () => {\n    const nbWarnings = chalk.yellow(`${logger.warnings} warning(s)`);\n    const nbErrors = chalk.red(`${logger.errors} error(s)`);\n\n    const status = logger.errors > 0 ? chalk.red('errored') : chalk.green('completed successfully');\n\n    psTimer.end();\n\n    logger.info(`The task ${status} with ${nbWarnings} and ${nbErrors} in ${psTimer.duration}s.`);\n\n    return reports;\n  };\n\n  const enabledArtifacts = Object.keys(artifacts).filter(\n    (p) => (artifacts as Record<string, boolean>)[p] === true\n  );\n\n  logger.info('Starting the type generation process');\n  logger.debug(`Enabled artifacts: ${enabledArtifacts.join(', ')}`);\n\n  for (const artifact of enabledArtifacts) {\n    const boldArtifact = chalk.bold(artifact); // used for log messages\n\n    logger.info(`Generating types for ${boldArtifact}`);\n\n    if (artifact in GENERATORS) {\n      const generator = (GENERATORS as any)[artifact];\n\n      try {\n        const artifactGenTimer = timer().start();\n\n        reports[artifact] = await generator(generatorConfig);\n\n        artifactGenTimer.end();\n\n        logger.debug(`Generated ${boldArtifact} in ${artifactGenTimer.duration}s`);\n      } catch (e) {\n        logger.error(\n          `Failed to generate types for ${boldArtifact}: ${(e as any).message ?? (e as any).toString()}. Exiting`\n        );\n        return returnWithMessage();\n      }\n    } else {\n      logger.warn(`The types generator for ${boldArtifact} is not implemented, skipping`);\n    }\n  }\n\n  for (const artifact of Object.keys(reports)) {\n    const boldArtifact = chalk.bold(artifact); // used for log messages\n\n    const artifactFsTimer = timer().start();\n\n    const report = reports[artifact];\n    const filename = `${artifact}.d.ts`;\n\n    try {\n      const outPath = await saveDefinitionToFileSystem(registryPwd, filename, report.output);\n      const relativeOutPath = path.relative(process.cwd(), outPath);\n\n      artifactFsTimer.end();\n\n      logger.info(`Saved ${boldArtifact} types in ${chalk.bold(relativeOutPath)}`);\n      logger.debug(`Saved ${boldArtifact} in ${artifactFsTimer.duration}s`);\n    } catch (e) {\n      logger.error(\n        `An error occurred while saving ${boldArtifact} types to the filesystem: ${\n          (e as any).message ?? (e as any).toString()\n        }. Exiting`\n      );\n      return returnWithMessage();\n    }\n  }\n\n  return returnWithMessage();\n};\n"],"names":["GENERATORS","contentTypes","generateContentTypesDefinitions","components","generateComponentsDefinitions","generate","config","pwd","rootDir","TYPES_ROOT_DIR","strapi","artifacts","logger","loggerConfig","reports","createLogger","psTimer","timer","start","registryPwd","path","join","GENERATED_OUT_DIR","generatorConfig","returnWithMessage","nbWarnings","chalk","yellow","warnings","nbErrors","red","errors","status","green","end","info","duration","enabledArtifacts","Object","keys","filter","p","debug","artifact","boldArtifact","bold","generator","artifactGenTimer","e","error","message","toString","warn","artifactFsTimer","report","filename","outPath","saveDefinitionToFileSystem","output","relativeOutPath","relative","process","cwd"],"mappings":"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"}