{"version":3,"sources":["../src/jsonToString.ts","../src/getCommentString.ts","../src/jsonToYaml.ts"],"sourcesContent":["// eslint-disable-next-line import/no-extraneous-dependencies\nimport { mapValues, omit } from '@lskjs/algos';\nimport { stringify as JSstringify } from 'javascript-stringify';\n\nimport { getCommentString } from './getCommentString';\nimport { jsonToYaml } from './jsonToYaml';\n\nconst KV = {\n  stringify: (json: Record<string, unknown>) =>\n    Object.values(mapValues(json, (value, key) => `${key}=${value}`)).join('\\n'),\n};\n\nexport function jsonToString(json: any, { type = 'keyval', comment = '', indent = 2 } = {}) {\n  const commentString = getCommentString(comment, { type }) || null;\n  if (type === 'keyval' || type === 'keyvalue' || type === 'env' || type === 'dotenv') {\n    return [commentString, KV.stringify(json)].filter(Boolean).join('\\n');\n  }\n  if (type === 'json') {\n    if (typeof json === 'object' && !Array.isArray(json)) {\n      // eslint-disable-next-line no-param-reassign\n      json = {\n        __comment: commentString,\n        ...json,\n      };\n    }\n    return JSON.stringify(json, null, indent);\n  }\n  if (type === 'yaml' || type === 'yml') {\n    let yamlObject;\n    const footer = json.__raw;\n    if (Array.isArray(json)) {\n      yamlObject = json;\n    } else {\n      yamlObject = omit(json, ['__raw']);\n    }\n    return [\n      commentString,\n      jsonToYaml(yamlObject, {\n        indent,\n        noRefs: true,\n      }),\n      footer,\n    ]\n      .filter(Boolean)\n      .join('\\n');\n  }\n\n  const moduleExports = type === 'es6' ? 'export default' : 'module.exports =';\n\n  return [\n    commentString,\n    '/* eslint-disable prettier/prettier */',\n    `${moduleExports} ${JSstringify(json, null, indent)};`,\n  ]\n    .filter(Boolean)\n    .join('\\n');\n}\n\nexport default jsonToString;\n","export function getCommentString(str: string, { type = 'keyval' } = {}) {\n  if (\n    type === 'keyval' ||\n    type === 'keyvalue' ||\n    type === 'env' ||\n    type === 'dotenv' ||\n    type === 'yml' ||\n    type === 'yaml'\n  ) {\n    return [\n      '##',\n      str\n        .split('\\n')\n        .map((s) => ['##', s].filter(Boolean).join(' '))\n        .join('\\n'),\n      '##',\n    ].join('\\n');\n  }\n\n  return [\n    '/**',\n    str\n      .split('\\n')\n      .map((s) => [' *', s].filter(Boolean).join(' '))\n      .join('\\n'),\n    ' */',\n  ].join('\\n');\n}\n\nexport default getCommentString;\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport { dump } from 'js-yaml';\n\nexport function jsonToYaml(data: any, options: any = {}) {\n  // const fn = options.safe ? yaml.safeDump : yaml.dump;\n  return dump(data, { indent: 2, skipInvalid: false, flowLevel: -1, ...options });\n}\n\nexport default jsonToYaml;\n"],"mappings":"+EACA,OAASA,aAAAA,EAAWC,QAAAA,MAAY,eAChC,OAASC,aAAaC,MAAmB,uBCFlC,SAASC,EAAiBC,EAAa,CAAEC,KAAAA,EAAO,QAAQ,EAAK,CAAC,EAAC,CACpE,OACEA,IAAS,UACTA,IAAS,YACTA,IAAS,OACTA,IAAS,UACTA,IAAS,OACTA,IAAS,OAEF,CACL,KACAD,EACGE,MAAM;CAAA,EACNC,IAAKC,GAAM,CAAC,KAAMA,GAAGC,OAAOC,OAAAA,EAASC,KAAK,GAAA,CAAA,EAC1CA,KAAK;CAAA,EACR,MACAA,KAAK;CAAA,EAGF,CACL,MACAP,EACGE,MAAM;CAAA,EACNC,IAAKC,GAAM,CAAC,KAAMA,GAAGC,OAAOC,OAAAA,EAASC,KAAK,GAAA,CAAA,EAC1CA,KAAK;CAAA,EACR,OACAA,KAAK;CAAA,CACT,CA3BgBR,EAAAA,EAAAA,oBCChB,OAASS,QAAAA,MAAY,UAEd,SAASC,EAAWC,EAAWC,EAAe,CAAC,EAAC,CAErD,OAAOC,EAAKF,EAAM,CAAEG,OAAQ,EAAGC,YAAa,GAAOC,UAAW,GAAI,GAAGJ,CAAQ,CAAA,CAC/E,CAHgBF,EAAAA,EAAAA,cFIhB,IAAMO,EAAK,CACTC,UAAYC,GACVC,OAAOC,OAAOC,EAAUH,EAAM,CAACI,EAAOC,IAAQ,GAAGA,CAAAA,IAAOD,CAAAA,EAAO,CAAA,EAAGE,KAAK;CAAA,CAC3E,EAEO,SAASC,EAAaP,EAAW,CAAEQ,KAAAA,EAAO,SAAUC,QAAAA,EAAU,GAAIC,OAAAA,EAAS,CAAC,EAAK,CAAC,EAAC,CACxF,IAAMC,EAAgBC,EAAiBH,EAAS,CAAED,KAAAA,CAAK,CAAA,GAAM,KAC7D,GAAIA,IAAS,UAAYA,IAAS,YAAcA,IAAS,OAASA,IAAS,SACzE,MAAO,CAACG,EAAeb,EAAGC,UAAUC,CAAAA,GAAOa,OAAOC,OAAAA,EAASR,KAAK;CAAA,EAElE,GAAIE,IAAS,OACX,OAAI,OAAOR,GAAS,UAAY,CAACe,MAAMC,QAAQhB,CAAAA,IAE7CA,EAAO,CACLiB,UAAWN,EACX,GAAGX,CACL,GAEKkB,KAAKnB,UAAUC,EAAM,KAAMU,CAAAA,EAEpC,GAAIF,IAAS,QAAUA,IAAS,MAAO,CACrC,IAAIW,EACEC,EAASpB,EAAKqB,MACpB,OAAIN,MAAMC,QAAQhB,CAAAA,EAChBmB,EAAanB,EAEbmB,EAAaG,EAAKtB,EAAM,CAAC,QAAQ,EAE5B,CACLW,EACAY,EAAWJ,EAAY,CACrBT,OAAAA,EACAc,OAAQ,EACV,CAAA,EACAJ,GAECP,OAAOC,OAAAA,EACPR,KAAK;CAAA,CACV,CAIA,MAAO,CACLK,EACA,yCACA,GALoBH,IAAS,MAAQ,iBAAmB,kBAKrDiB,IAAiBC,EAAY1B,EAAM,KAAMU,CAAAA,CAAAA,KAE3CG,OAAOC,OAAAA,EACPR,KAAK;CAAA,CACV,CA5CgBC,EAAAA,EAAAA,gBA8ChB,IAAAoB,EAAepB","names":["mapValues","omit","stringify","JSstringify","getCommentString","str","type","split","map","s","filter","Boolean","join","dump","jsonToYaml","data","options","dump","indent","skipInvalid","flowLevel","KV","stringify","json","Object","values","mapValues","value","key","join","jsonToString","type","comment","indent","commentString","getCommentString","filter","Boolean","Array","isArray","__comment","JSON","yamlObject","footer","__raw","omit","jsonToYaml","noRefs","moduleExports","JSstringify","jsonToString_default"]}