{
  "version": 3,
  "sources": ["../../../../src/packages/write-project-manifest/index.ts"],
  "sourcesContent": ["import { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport {\n  insertComments,\n  type CommentSpecifier,\n} from '../text.comments-parser/index.ts';\nimport type { ProjectManifest } from '../types/index.ts';\nimport JSON5 from 'json5';\nimport writeFileAtomic from 'write-file-atomic';\nimport writeYamlFile from 'write-yaml-file';\n\nconst YAML_FORMAT = {\n  noCompatMode: true,\n  noRefs: true,\n};\n\nexport async function writeProjectManifest(\n  filePath: string,\n  manifest: ProjectManifest,\n  opts?:\n    | {\n        comments?: CommentSpecifier[] | undefined;\n        indent?: string | number | undefined;\n        insertFinalNewline?: boolean | undefined;\n      }\n    | undefined\n): Promise<void> {\n  const fileType = filePath.slice(filePath.lastIndexOf('.') + 1).toLowerCase();\n  if (fileType === 'yaml') {\n    return writeYamlFile(filePath, manifest, YAML_FORMAT);\n  }\n\n  await fs.mkdir(path.dirname(filePath), { recursive: true });\n  const trailingNewline = opts?.insertFinalNewline === false ? '' : '\\n';\n  const indent = opts?.indent ?? '\\t';\n\n  const json =\n    fileType === 'json5'\n      ? stringifyJson5(manifest, indent, opts?.comments)\n      : JSON.stringify(manifest, undefined, indent);\n\n  return writeFileAtomic(filePath, `${json}${trailingNewline}`);\n}\n\nfunction stringifyJson5(\n  obj: object,\n  indent: string | number,\n  comments?: CommentSpecifier[] | undefined\n): string {\n  const json5 = JSON5.stringify(obj, undefined, indent);\n  if (comments) {\n    return insertComments(json5, comments);\n  }\n  return json5;\n}\n"],
  "mappings": "AAAA,SAAS,YAAY,UAAU;AAC/B,OAAO,UAAU;AACjB;AAAA,EACE;AAAA,OAEK;AAEP,OAAO,WAAW;AAClB,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAE1B,MAAM,cAAc;AAAA,EAClB,cAAc;AAAA,EACd,QAAQ;AACV;AAEA,eAAsB,qBACpB,UACA,UACA,MAOe;AACf,QAAM,WAAW,SAAS,MAAM,SAAS,YAAY,GAAG,IAAI,CAAC,EAAE,YAAY;AAC3E,MAAI,aAAa,QAAQ;AACvB,WAAO,cAAc,UAAU,UAAU,WAAW;AAAA,EACtD;AAEA,QAAM,GAAG,MAAM,KAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1D,QAAM,kBAAkB,MAAM,uBAAuB,QAAQ,KAAK;AAClE,QAAM,SAAS,MAAM,UAAU;AAE/B,QAAM,OACJ,aAAa,UACT,eAAe,UAAU,QAAQ,MAAM,QAAQ,IAC/C,KAAK,UAAU,UAAU,QAAW,MAAM;AAEhD,SAAO,gBAAgB,UAAU,GAAG,IAAI,GAAG,eAAe,EAAE;AAC9D;AAEA,SAAS,eACP,KACA,QACA,UACQ;AACR,QAAM,QAAQ,MAAM,UAAU,KAAK,QAAW,MAAM;AACpD,MAAI,UAAU;AACZ,WAAO,eAAe,OAAO,QAAQ;AAAA,EACvC;AACA,SAAO;AACT;",
  "names": []
}
