{"version":3,"file":"getContentDeclarationFileTemplate.mjs","names":[],"sources":["../../../src/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.ts"],"sourcesContent":["import { kebabCaseToCamelCase } from '@intlayer/config/utils';\nimport type { Format } from '../utils/getFormatFromExtension';\n\nexport const getContentDeclarationFileTemplate = async (\n  key: string,\n  format: Format,\n  fileParams: Record<string, any> = {},\n  noMetadata?: boolean\n) => {\n  const camelCaseKey = kebabCaseToCamelCase(key);\n  const name = camelCaseKey.charAt(0).toLowerCase() + camelCaseKey.slice(1);\n\n  const fileParamsString = Object.entries(fileParams)\n    .filter(([, value]) => value !== undefined)\n    .map(([paramKey, value]) => {\n      const formattedKey = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(paramKey)\n        ? paramKey\n        : JSON.stringify(paramKey);\n\n      const formattedValue =\n        typeof value === 'object' || typeof value === 'string'\n          ? JSON.stringify(value)\n          : value;\n\n      return `\\n  ${formattedKey}: ${formattedValue},`;\n    })\n    .join('');\n\n  let content: string;\n\n  if (noMetadata) {\n    content = '{}';\n  } else if (format === 'json' || format === 'jsonc' || format === 'json5') {\n    content = [\n      '{',\n      '  \"$schema\": \"https://intlayer.org/schema.json\",',\n      `  \"key\": \"${key}\",${fileParamsString}`,\n      '  \"content\": {',\n      '  }',\n      '}',\n    ].join('\\n');\n  } else {\n    content = [\n      '{',\n      `  key: '${key}',${fileParamsString}`,\n      '  content: {',\n      '  },',\n      '}',\n    ].join('\\n');\n  }\n\n  const jsdoc = `/** @type {import('intlayer').Dictionary${noMetadata ? \"['content']\" : ''}} **/`;\n  const satisfiesType = noMetadata ? \"Dictionary['content']\" : 'Dictionary';\n\n  switch (format) {\n    case 'yaml': {\n      const yamlLines = [\n        `key: ${key}`,\n        ...(fileParams.locale ? [`locale: ${fileParams.locale}`] : []),\n        ...(fileParams.title\n          ? [`title: ${JSON.stringify(fileParams.title)}`]\n          : []),\n        ...(fileParams.description\n          ? [`description: ${JSON.stringify(fileParams.description)}`]\n          : []),\n        ...(fileParams.tags?.length\n          ? [\n              'tags:',\n              ...(fileParams.tags as string[]).map(\n                (tag) => `  - ${JSON.stringify(tag)}`\n              ),\n            ]\n          : []),\n        'content: {}',\n      ];\n      return `${yamlLines.join('\\n')}\\n`;\n    }\n\n    case 'md': {\n      const mdFrontmatterLines = [\n        `key: ${key}`,\n        ...(fileParams.locale ? [`locale: ${fileParams.locale}`] : []),\n        ...(fileParams.title\n          ? [`title: ${JSON.stringify(fileParams.title)}`]\n          : []),\n        ...(fileParams.description\n          ? [`description: ${JSON.stringify(fileParams.description)}`]\n          : []),\n        ...(fileParams.tags?.length\n          ? [\n              'tags:',\n              ...(fileParams.tags as string[]).map(\n                (t) => `  - ${JSON.stringify(t)}`\n              ),\n            ]\n          : []),\n      ];\n      return ['---', ...mdFrontmatterLines, '---', '', ''].join('\\n');\n    }\n\n    case 'ts':\n      return [\n        \"import { type Dictionary } from 'intlayer';\",\n        '',\n        `const ${name}Content = ${content} satisfies ${satisfiesType};`,\n        '',\n        `export default ${name}Content;`,\n        '',\n      ].join('\\n');\n\n    case 'cjs':\n      return [\n        jsdoc,\n        `const ${name}Content = ${content};`,\n        '',\n        `module.exports = ${name}Content;`,\n        '',\n      ].join('\\n');\n\n    case 'json':\n    case 'jsonc':\n    case 'json5':\n      return [content, ''].join('\\n');\n\n    default: // esm\n      return [\n        jsdoc,\n        `const ${name}Content = ${content};`,\n        '',\n        `export default ${name}Content;`,\n        '',\n      ].join('\\n');\n  }\n};\n"],"mappings":";;;AAGA,MAAa,oCAAoC,OAC/C,KACA,QACA,aAAkC,CAAC,GACnC,eACG;CACH,MAAM,eAAe,qBAAqB,GAAG;CAC7C,MAAM,OAAO,aAAa,OAAO,CAAC,EAAE,YAAY,IAAI,aAAa,MAAM,CAAC;CAExE,MAAM,mBAAmB,OAAO,QAAQ,UAAU,EAC/C,QAAQ,GAAG,WAAW,UAAU,MAAS,EACzC,KAAK,CAAC,UAAU,WAAW;EAU1B,OAAO,OATc,6BAA6B,KAAK,QAAQ,IAC3D,WACA,KAAK,UAAU,QAAQ,EAOA,IAJzB,OAAO,UAAU,YAAY,OAAO,UAAU,WAC1C,KAAK,UAAU,KAAK,IACpB,MAEwC;CAChD,CAAC,EACA,KAAK,EAAE;CAEV,IAAI;CAEJ,IAAI,YACF,UAAU;MACL,IAAI,WAAW,UAAU,WAAW,WAAW,WAAW,SAC/D,UAAU;EACR;EACA;EACA,aAAa,IAAI,IAAI;EACrB;EACA;EACA;CACF,EAAE,KAAK,IAAI;MAEX,UAAU;EACR;EACA,WAAW,IAAI,IAAI;EACnB;EACA;EACA;CACF,EAAE,KAAK,IAAI;CAGb,MAAM,QAAQ,2CAA2C,aAAa,gBAAgB,GAAG;CACzF,MAAM,gBAAgB,aAAa,0BAA0B;CAE7D,QAAQ,QAAR;EACE,KAAK,QAoBH,OAAO,GAAG;GAlBR,QAAQ;GACR,GAAI,WAAW,SAAS,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;GAC5D,GAAI,WAAW,QACX,CAAC,UAAU,KAAK,UAAU,WAAW,KAAK,GAAG,IAC7C,CAAC;GACL,GAAI,WAAW,cACX,CAAC,gBAAgB,KAAK,UAAU,WAAW,WAAW,GAAG,IACzD,CAAC;GACL,GAAI,WAAW,MAAM,SACjB,CACE,SACA,GAAI,WAAW,KAAkB,KAC9B,QAAQ,OAAO,KAAK,UAAU,GAAG,GACpC,CACF,IACA,CAAC;GACL;EAEgB,EAAE,KAAK,IAAI,EAAE;EAGjC,KAAK,MAmBH,OAAO;GAAC;GAAO,GAAG;IAjBhB,QAAQ;IACR,GAAI,WAAW,SAAS,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;IAC5D,GAAI,WAAW,QACX,CAAC,UAAU,KAAK,UAAU,WAAW,KAAK,GAAG,IAC7C,CAAC;IACL,GAAI,WAAW,cACX,CAAC,gBAAgB,KAAK,UAAU,WAAW,WAAW,GAAG,IACzD,CAAC;IACL,GAAI,WAAW,MAAM,SACjB,CACE,SACA,GAAI,WAAW,KAAkB,KAC9B,MAAM,OAAO,KAAK,UAAU,CAAC,GAChC,CACF,IACA,CAAC;GAE4B;GAAG;GAAO;GAAI;EAAE,EAAE,KAAK,IAAI;EAGhE,KAAK,MACH,OAAO;GACL;GACA;GACA,SAAS,KAAK,YAAY,QAAQ,aAAa,cAAc;GAC7D;GACA,kBAAkB,KAAK;GACvB;EACF,EAAE,KAAK,IAAI;EAEb,KAAK,OACH,OAAO;GACL;GACA,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,oBAAoB,KAAK;GACzB;EACF,EAAE,KAAK,IAAI;EAEb,KAAK;EACL,KAAK;EACL,KAAK,SACH,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,IAAI;EAEhC,SACE,OAAO;GACL;GACA,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,kBAAkB,KAAK;GACvB;EACF,EAAE,KAAK,IAAI;CACf;AACF"}