{"version":3,"file":"generate-app-BTs1u-9l.mjs","sources":["../src/services/generate-app.ts"],"sourcesContent":["import { generateAllApps, generateApp } from \"@powerhousedao/codegen\";\nimport {\n  buildTsMorphProject,\n  getAppMetadata,\n} from \"@powerhousedao/codegen/utils\";\nimport {\n  extractAppDocuments,\n  generateAppFromDocument,\n  getDocument,\n  saveSpec,\n} from \"@powerhousedao/vetra/codegen\";\nimport type { AppModuleDocument } from \"@powerhousedao/vetra/document-models/app-module\";\nimport { dirname } from \"node:path\";\nimport type { GenerateAppArgs } from \"../types.js\";\n\nexport async function startGenerateApp(\n  args: GenerateAppArgs,\n  projectDir: string,\n) {\n  const {\n    name,\n    allowedDocumentTypes = [],\n    disableDragAndDrop,\n    document,\n    dir,\n    all,\n    extract,\n    debug,\n  } = args;\n  if (debug) {\n    console.log({ args });\n  }\n  const project = buildTsMorphProject(projectDir);\n  if (extract) {\n    const docs = extractAppDocuments(project);\n    for (const doc of docs) {\n      const path = await saveSpec(doc, projectDir);\n      console.log(`Wrote ${path}`);\n    }\n    return;\n  }\n  if (all) {\n    await generateAllApps(project);\n  } else if (document) {\n    const doc = (await getDocument(document)) as AppModuleDocument;\n    await generateAppFromDocument(doc, project);\n  } else if (name) {\n    await generateApp(\n      {\n        appName: name,\n        allowedDocumentTypes,\n        isDragAndDropEnabled: !disableDragAndDrop,\n      },\n      project,\n    );\n  } else if (dir) {\n    const appMetadata = getAppMetadata(project, dirname(dir));\n    if (!appMetadata) {\n      throw new Error(`Failed to get data for app in dir \"${dir}\"`);\n    }\n    const {\n      name: appName,\n      id: appId,\n      dirName: appDirName,\n      allowedDocumentTypes,\n      isDragAndDropEnabled,\n    } = appMetadata;\n\n    await generateApp(\n      {\n        appName,\n        appId,\n        appDirName,\n        allowedDocumentTypes,\n        isDragAndDropEnabled,\n      },\n      project,\n    );\n  } else {\n    console.log(\n      \"Please specify one of `name`, `document`, `dir`, `all`, or `extract`.\",\n    );\n    return;\n  }\n  await project.save();\n}\n"],"names":[],"mappings":";;;;;;;AAeA,eAAsB,iBACpB,MACA,YACA;CACA,MAAM,EACJ,MACA,uBAAuB,CAAC,GACxB,oBACA,UACA,KACA,KACA,SACA,UACE;CACJ,IAAI,OACF,QAAQ,IAAI,EAAE,KAAK,CAAC;CAEtB,MAAM,UAAU,oBAAoB,UAAU;CAC9C,IAAI,SAAS;EACX,MAAM,OAAO,oBAAoB,OAAO;EACxC,KAAK,MAAM,OAAO,MAAM;GACtB,MAAM,OAAO,MAAM,SAAS,KAAK,UAAU;GAC3C,QAAQ,IAAI,SAAS,MAAM;EAC7B;EACA;CACF;CACA,IAAI,KACF,MAAM,gBAAgB,OAAO;MACxB,IAAI,UAAU;EACnB,MAAM,MAAO,MAAM,YAAY,QAAQ;EACvC,MAAM,wBAAwB,KAAK,OAAO;CAC5C,OAAO,IAAI,MACT,MAAM,YACJ;EACE,SAAS;EACT;EACA,sBAAsB,CAAC;CACzB,GACA,OACF;MACK,IAAI,KAAK;EACd,MAAM,cAAc,eAAe,SAAS,QAAQ,GAAG,CAAC;EACxD,IAAI,CAAC,aACH,MAAM,IAAI,MAAM,sCAAsC,IAAI,EAAE;EAE9D,MAAM,EACJ,MAAM,SACN,IAAI,OACJ,SAAS,YACT,sBACA,yBACE;EAEJ,MAAM,YACJ;GACE;GACA;GACA;GACA;GACA;EACF,GACA,OACF;CACF,OAAO;EACL,QAAQ,IACN,uEACF;EACA;CACF;CACA,MAAM,QAAQ,KAAK;AACrB","debug_id":"613319d0-0df7-5cc6-87c6-4630f1ae1bd6"}