{"version":3,"file":"generate-editor-CW7Do69u.mjs","sources":["../src/services/generate-editor.ts"],"sourcesContent":["import { generateAllEditors, generateEditor } from \"@powerhousedao/codegen\";\nimport {\n  buildTsMorphProject,\n  getEditorMetadata,\n} from \"@powerhousedao/codegen/utils\";\nimport {\n  extractEditorDocuments,\n  generateEditorFromDocument,\n  getDocument,\n  saveSpec,\n} from \"@powerhousedao/vetra/codegen\";\nimport type { DocumentEditorDocument } from \"@powerhousedao/vetra/document-models/document-editor\";\nimport { dirname } from \"node:path\";\nimport type { GenerateEditorArgs } from \"../types.js\";\n\nexport async function startGenerateEditor(\n  args: GenerateEditorArgs,\n  projectDir: string,\n) {\n  const { name, documentType, document, dir, all, extract, debug } = args;\n  if (debug) {\n    console.log({ args });\n  }\n  const project = buildTsMorphProject(projectDir);\n  if (extract) {\n    const docs = extractEditorDocuments(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 generateAllEditors(project);\n  } else if (document) {\n    const doc = (await getDocument(document)) as DocumentEditorDocument;\n    await generateEditorFromDocument(doc, project);\n  } else if (name) {\n    if (!documentType) {\n      throw new Error(\n        \"Please specify a document type for the new editor to generate.\",\n      );\n    }\n    await generateEditor(\n      { editorName: name, documentTypes: [documentType] },\n      project,\n    );\n  } else if (dir) {\n    const editorArgs = getEditorMetadata(project, dirname(dir));\n    if (!editorArgs) {\n      throw new Error(`Failed to get data for editor in dir \"${dir}\"`);\n    }\n    const {\n      name: editorName,\n      id: editorId,\n      dirName: editorDirName,\n      documentTypes,\n    } = editorArgs;\n    await generateEditor(\n      {\n        editorName,\n        editorId,\n        editorDirName,\n        documentTypes,\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,oBACpB,MACA,YACA;CACA,MAAM,EAAE,MAAM,cAAc,UAAU,KAAK,KAAK,SAAS,UAAU;CACnE,IAAI,OACF,QAAQ,IAAI,EAAE,KAAK,CAAC;CAEtB,MAAM,UAAU,oBAAoB,UAAU;CAC9C,IAAI,SAAS;EACX,MAAM,OAAO,uBAAuB,OAAO;EAC3C,KAAK,MAAM,OAAO,MAAM;GACtB,MAAM,OAAO,MAAM,SAAS,KAAK,UAAU;GAC3C,QAAQ,IAAI,SAAS,MAAM;EAC7B;EACA;CACF;CACA,IAAI,KACF,MAAM,mBAAmB,OAAO;MAC3B,IAAI,UAAU;EACnB,MAAM,MAAO,MAAM,YAAY,QAAQ;EACvC,MAAM,2BAA2B,KAAK,OAAO;CAC/C,OAAO,IAAI,MAAM;EACf,IAAI,CAAC,cACH,MAAM,IAAI,MACR,gEACF;EAEF,MAAM,eACJ;GAAE,YAAY;GAAM,eAAe,CAAC,YAAY;EAAE,GAClD,OACF;CACF,OAAO,IAAI,KAAK;EACd,MAAM,aAAa,kBAAkB,SAAS,QAAQ,GAAG,CAAC;EAC1D,IAAI,CAAC,YACH,MAAM,IAAI,MAAM,yCAAyC,IAAI,EAAE;EAEjE,MAAM,EACJ,MAAM,YACN,IAAI,UACJ,SAAS,eACT,kBACE;EACJ,MAAM,eACJ;GACE;GACA;GACA;GACA;EACF,GACA,OACF;CACF,OAAO;EACL,QAAQ,IACN,uEACF;EACA;CACF;CACA,MAAM,QAAQ,KAAK;AACrB","debug_id":"b204b504-9786-5632-91d5-eaabb22de195"}