{"version":3,"file":"getContentDeclarationFileTemplate.cjs","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,EAAE,EACpC,eACG;CACH,MAAM,gEAAoC,IAAI;CAC9C,MAAM,OAAO,aAAa,OAAO,EAAE,CAAC,aAAa,GAAG,aAAa,MAAM,EAAE;CAEzE,MAAM,mBAAmB,OAAO,QAAQ,WAAW,CAChD,QAAQ,GAAG,WAAW,UAAU,OAAU,CAC1C,KAAK,CAAC,UAAU,WAAW;AAU1B,SAAO,OATc,6BAA6B,KAAK,SAAS,GAC5D,WACA,KAAK,UAAU,SAAS,CAOD,IAJzB,OAAO,UAAU,YAAY,OAAO,UAAU,WAC1C,KAAK,UAAU,MAAM,GACrB,MAEwC;GAC9C,CACD,KAAK,GAAG;CAEX,IAAI;AAEJ,KAAI,WACF,WAAU;UACD,WAAW,UAAU,WAAW,WAAW,WAAW,QAC/D,WAAU;EACR;EACA;EACA,aAAa,IAAI,IAAI;EACrB;EACA;EACA;EACD,CAAC,KAAK,KAAK;KAEZ,WAAU;EACR;EACA,WAAW,IAAI,IAAI;EACnB;EACA;EACA;EACD,CAAC,KAAK,KAAK;CAGd,MAAM,QAAQ,2CAA2C,aAAa,gBAAgB,GAAG;CACzF,MAAM,gBAAgB,aAAa,0BAA0B;AAE7D,SAAQ,QAAR;EACE,KAAK,OAoBH,QAAO,GAAG;GAlBR,QAAQ;GACR,GAAI,WAAW,SAAS,CAAC,WAAW,WAAW,SAAS,GAAG,EAAE;GAC7D,GAAI,WAAW,QACX,CAAC,UAAU,KAAK,UAAU,WAAW,MAAM,GAAG,GAC9C,EAAE;GACN,GAAI,WAAW,cACX,CAAC,gBAAgB,KAAK,UAAU,WAAW,YAAY,GAAG,GAC1D,EAAE;GACN,GAAI,WAAW,MAAM,SACjB,CACE,SACA,GAAI,WAAW,KAAkB,KAC9B,QAAQ,OAAO,KAAK,UAAU,IAAI,GACpC,CACF,GACD,EAAE;GACN;GAEiB,CAAC,KAAK,KAAK,CAAC;EAGjC,KAAK,KAmBH,QAAO;GAAC;GAAO,GAAG;IAjBhB,QAAQ;IACR,GAAI,WAAW,SAAS,CAAC,WAAW,WAAW,SAAS,GAAG,EAAE;IAC7D,GAAI,WAAW,QACX,CAAC,UAAU,KAAK,UAAU,WAAW,MAAM,GAAG,GAC9C,EAAE;IACN,GAAI,WAAW,cACX,CAAC,gBAAgB,KAAK,UAAU,WAAW,YAAY,GAAG,GAC1D,EAAE;IACN,GAAI,WAAW,MAAM,SACjB,CACE,SACA,GAAI,WAAW,KAAkB,KAC9B,MAAM,OAAO,KAAK,UAAU,EAAE,GAChC,CACF,GACD,EAAE;IAE4B;GAAE;GAAO;GAAI;GAAG,CAAC,KAAK,KAAK;EAGjE,KAAK,KACH,QAAO;GACL;GACA;GACA,SAAS,KAAK,YAAY,QAAQ,aAAa,cAAc;GAC7D;GACA,kBAAkB,KAAK;GACvB;GACD,CAAC,KAAK,KAAK;EAEd,KAAK,MACH,QAAO;GACL;GACA,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,oBAAoB,KAAK;GACzB;GACD,CAAC,KAAK,KAAK;EAEd,KAAK;EACL,KAAK;EACL,KAAK,QACH,QAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK;EAEjC,QACE,QAAO;GACL;GACA,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,kBAAkB,KAAK;GACvB;GACD,CAAC,KAAK,KAAK"}