@intlayer/docs 6.0.1 → 6.0.2-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/cjs/blog.cjs.map +1 -1
  2. package/dist/cjs/common.cjs +6 -5
  3. package/dist/cjs/common.cjs.map +1 -1
  4. package/dist/cjs/generated/blog.entry.cjs +318 -1863
  5. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  6. package/dist/cjs/generated/docs.entry.cjs +1317 -6282
  7. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  8. package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
  9. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  10. package/dist/cjs/generated/legal.entry.cjs +43 -84
  11. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  12. package/dist/esm/blog.mjs.map +1 -1
  13. package/dist/esm/common.mjs +2 -5
  14. package/dist/esm/common.mjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +318 -1863
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +1317 -6282
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +43 -84
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/blog.d.ts +1 -1
  24. package/dist/types/blog.d.ts.map +1 -1
  25. package/dist/types/common.d.ts +1 -1
  26. package/dist/types/common.d.ts.map +1 -1
  27. package/dist/types/generated/blog.entry.d.ts +1 -1
  28. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  29. package/dist/types/generated/docs.entry.d.ts +2 -1
  30. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  31. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
  32. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  33. package/dist/types/generated/legal.entry.d.ts +1 -1
  34. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  35. package/docs/ar/intlayer_CMS.md +261 -85
  36. package/docs/ar/releases/v6.md +273 -0
  37. package/docs/ar/roadmap.md +1 -3
  38. package/docs/ar/vs_code_extension.md +94 -63
  39. package/docs/de/intlayer_CMS.md +247 -65
  40. package/docs/de/releases/v6.md +298 -0
  41. package/docs/de/roadmap.md +1 -3
  42. package/docs/de/vs_code_extension.md +89 -58
  43. package/docs/en/configuration.md +9 -2
  44. package/docs/en/intlayer_CMS.md +205 -23
  45. package/docs/en/intlayer_cli.md +4 -4
  46. package/docs/en/intlayer_visual_editor.md +7 -6
  47. package/docs/en/intlayer_with_nextjs_14.md +17 -1
  48. package/docs/en/intlayer_with_nextjs_15.md +17 -1
  49. package/docs/en/releases/v6.md +268 -0
  50. package/docs/en/roadmap.md +1 -3
  51. package/docs/en/vs_code_extension.md +79 -49
  52. package/docs/en-GB/intlayer_CMS.md +216 -52
  53. package/docs/en-GB/releases/v6.md +297 -0
  54. package/docs/en-GB/roadmap.md +1 -3
  55. package/docs/en-GB/vs_code_extension.md +79 -48
  56. package/docs/es/intlayer_CMS.md +257 -84
  57. package/docs/es/releases/v6.md +274 -0
  58. package/docs/es/roadmap.md +1 -3
  59. package/docs/es/vs_code_extension.md +90 -60
  60. package/docs/fr/intlayer_CMS.md +250 -68
  61. package/docs/fr/releases/v6.md +274 -0
  62. package/docs/fr/roadmap.md +1 -3
  63. package/docs/fr/vs_code_extension.md +94 -63
  64. package/docs/hi/intlayer_CMS.md +253 -77
  65. package/docs/hi/releases/v6.md +273 -0
  66. package/docs/hi/roadmap.md +1 -3
  67. package/docs/hi/vs_code_extension.md +92 -61
  68. package/docs/it/intlayer_CMS.md +251 -73
  69. package/docs/it/releases/v6.md +273 -0
  70. package/docs/it/roadmap.md +1 -3
  71. package/docs/it/vs_code_extension.md +94 -63
  72. package/docs/ja/intlayer_CMS.md +282 -97
  73. package/docs/ja/releases/v6.md +273 -0
  74. package/docs/ja/roadmap.md +1 -3
  75. package/docs/ja/vs_code_extension.md +99 -68
  76. package/docs/ko/intlayer_CMS.md +267 -93
  77. package/docs/ko/releases/v6.md +273 -0
  78. package/docs/ko/roadmap.md +1 -3
  79. package/docs/ko/vs_code_extension.md +88 -57
  80. package/docs/pt/intlayer_CMS.md +261 -83
  81. package/docs/pt/releases/v6.md +273 -0
  82. package/docs/pt/roadmap.md +1 -3
  83. package/docs/pt/vs_code_extension.md +89 -58
  84. package/docs/ru/intlayer_CMS.md +240 -65
  85. package/docs/ru/releases/v6.md +274 -0
  86. package/docs/ru/roadmap.md +1 -1
  87. package/docs/ru/vs_code_extension.md +83 -52
  88. package/docs/tr/intlayer_CMS.md +278 -96
  89. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  90. package/docs/tr/intlayer_with_tanstack.md +3 -0
  91. package/docs/tr/releases/v6.md +273 -0
  92. package/docs/tr/roadmap.md +1 -1
  93. package/docs/tr/vs_code_extension.md +100 -71
  94. package/docs/zh/intlayer_CMS.md +257 -76
  95. package/docs/zh/releases/v6.md +273 -0
  96. package/docs/zh/roadmap.md +1 -3
  97. package/docs/zh/vs_code_extension.md +99 -68
  98. package/package.json +9 -8
  99. package/src/blog.ts +1 -1
  100. package/src/common.ts +2 -6
  101. package/src/generated/blog.entry.ts +323 -1864
  102. package/src/generated/docs.entry.ts +1317 -6278
  103. package/src/generated/frequentQuestions.entry.ts +202 -1183
  104. package/src/generated/legal.entry.ts +48 -85
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/blog.ts"],"sourcesContent":["import { LocalesValues } from 'intlayer';\nimport {\n defaultLocale,\n FileMetadata,\n getFile,\n getFileBySlug,\n getFileMetadata,\n getFileMetadataBySlug,\n getFileMetadataRecord,\n getFiles,\n} from './common';\nimport { blogEntry } from './generated/blog.entry';\n\nexport type BlogKey = keyof typeof blogEntry;\nexport type Blogs = Record<BlogKey, Record<LocalesValues, Promise<string>>>;\nexport type BlogMetadata = FileMetadata;\n\nexport const getBlogs = async <L extends LocalesValues>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, string>> => await getFiles(blogEntry, locale);\n\nexport const getBlog = async <L extends LocalesValues>(\n docName: BlogKey,\n locale: L = defaultLocale as L\n): Promise<string> => await getFile(blogEntry, docName, locale);\n\nexport const getBlogMetadataRecord = async <L extends LocalesValues>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, FileMetadata>> =>\n await getFileMetadataRecord(blogEntry, locale);\n\nexport const getBlogMetadata = async <\n D extends BlogKey,\n L extends LocalesValues,\n>(\n docName: D,\n locale: L = defaultLocale as L\n): Promise<FileMetadata> => await getFileMetadata(blogEntry, docName, locale);\n\nexport const getBlogMetadataBySlug = async <L extends LocalesValues>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<FileMetadata[]> =>\n await getFileMetadataBySlug(blogEntry, slugs, locale, strict);\n\nexport const getBlogBySlug = async <L extends LocalesValues>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<string[]> => await getFileBySlug(blogEntry, slugs, locale, strict);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBASO;AACP,kBAA0B;AAMnB,MAAM,WAAW,OACtB,SAAY,gCACyB,UAAM,wBAAS,uBAAW,MAAM;AAEhE,MAAM,UAAU,OACrB,SACA,SAAY,gCACQ,UAAM,uBAAQ,uBAAW,SAAS,MAAM;AAEvD,MAAM,wBAAwB,OACnC,SAAY,gCAEZ,UAAM,qCAAsB,uBAAW,MAAM;AAExC,MAAM,kBAAkB,OAI7B,SACA,SAAY,gCACc,UAAM,+BAAgB,uBAAW,SAAS,MAAM;AAErE,MAAM,wBAAwB,OACnC,OACA,SAAY,6BACZ,SAAS,UAET,UAAM,qCAAsB,uBAAW,OAAO,QAAQ,MAAM;AAEvD,MAAM,gBAAgB,OAC3B,OACA,SAAY,6BACZ,SAAS,UACa,UAAM,6BAAc,uBAAW,OAAO,QAAQ,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../src/blog.ts"],"sourcesContent":["import { LocalesValues } from '@intlayer/config';\nimport {\n defaultLocale,\n FileMetadata,\n getFile,\n getFileBySlug,\n getFileMetadata,\n getFileMetadataBySlug,\n getFileMetadataRecord,\n getFiles,\n} from './common';\nimport { blogEntry } from './generated/blog.entry';\n\nexport type BlogKey = keyof typeof blogEntry;\nexport type Blogs = Record<BlogKey, Record<LocalesValues, Promise<string>>>;\nexport type BlogMetadata = FileMetadata;\n\nexport const getBlogs = async <L extends LocalesValues>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, string>> => await getFiles(blogEntry, locale);\n\nexport const getBlog = async <L extends LocalesValues>(\n docName: BlogKey,\n locale: L = defaultLocale as L\n): Promise<string> => await getFile(blogEntry, docName, locale);\n\nexport const getBlogMetadataRecord = async <L extends LocalesValues>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, FileMetadata>> =>\n await getFileMetadataRecord(blogEntry, locale);\n\nexport const getBlogMetadata = async <\n D extends BlogKey,\n L extends LocalesValues,\n>(\n docName: D,\n locale: L = defaultLocale as L\n): Promise<FileMetadata> => await getFileMetadata(blogEntry, docName, locale);\n\nexport const getBlogMetadataBySlug = async <L extends LocalesValues>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<FileMetadata[]> =>\n await getFileMetadataBySlug(blogEntry, slugs, locale, strict);\n\nexport const getBlogBySlug = async <L extends LocalesValues>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<string[]> => await getFileBySlug(blogEntry, slugs, locale, strict);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBASO;AACP,kBAA0B;AAMnB,MAAM,WAAW,OACtB,SAAY,gCACyB,UAAM,wBAAS,uBAAW,MAAM;AAEhE,MAAM,UAAU,OACrB,SACA,SAAY,gCACQ,UAAM,uBAAQ,uBAAW,SAAS,MAAM;AAEvD,MAAM,wBAAwB,OACnC,SAAY,gCAEZ,UAAM,qCAAsB,uBAAW,MAAM;AAExC,MAAM,kBAAkB,OAI7B,SACA,SAAY,gCACc,UAAM,+BAAgB,uBAAW,SAAS,MAAM;AAErE,MAAM,wBAAwB,OACnC,OACA,SAAY,6BACZ,SAAS,UAET,UAAM,qCAAsB,uBAAW,OAAO,QAAQ,MAAM;AAEvD,MAAM,gBAAgB,OAC3B,OACA,SAAY,6BACZ,SAAS,UACa,UAAM,6BAAc,uBAAW,OAAO,QAAQ,MAAM;","names":[]}
@@ -30,9 +30,10 @@ __export(common_exports, {
30
30
  getFiles: () => getFiles
31
31
  });
32
32
  module.exports = __toCommonJS(common_exports);
33
- var import_intlayer = require("intlayer");
33
+ var import_config = require("@intlayer/config");
34
+ var import_core = require("@intlayer/core");
34
35
  var import_path = require("path");
35
- const defaultLocale = import_intlayer.Locales.ENGLISH;
36
+ const defaultLocale = import_config.Locales.ENGLISH;
36
37
  const GITHUB_URL_PREFIX = "https://github.com/aymericzip/intlayer/blob/main/docs";
37
38
  const URL_PREFIX = "https://intlayer.org/";
38
39
  const getFiles = async (files, lang = defaultLocale) => {
@@ -58,7 +59,7 @@ const getFile = async (files, docKey, locale = defaultLocale) => {
58
59
  return file;
59
60
  };
60
61
  const formatMetadata = (docKey, file, locale = defaultLocale) => {
61
- const metadata = (0, import_intlayer.getMarkdownMetadata)(file);
62
+ const metadata = (0, import_core.getMarkdownMetadata)(file);
62
63
  const relativeUrl = (0, import_path.join)("/", ...metadata.slugs ?? []);
63
64
  const slicedDocKey = docKey.slice(1);
64
65
  return {
@@ -68,8 +69,8 @@ const formatMetadata = (docKey, file, locale = defaultLocale) => {
68
69
  "/en/",
69
70
  `/${locale}/`
70
71
  ),
71
- relativeUrl: (0, import_intlayer.getLocalizedUrl)(relativeUrl, locale),
72
- url: (0, import_intlayer.getLocalizedUrl)((0, import_path.join)(URL_PREFIX, relativeUrl), locale)
72
+ relativeUrl: (0, import_core.getLocalizedUrl)(relativeUrl, locale),
73
+ url: (0, import_core.getLocalizedUrl)((0, import_path.join)(URL_PREFIX, relativeUrl), locale)
73
74
  };
74
75
  };
75
76
  const getFileMetadata = async (files, docKey, locale = defaultLocale) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common.ts"],"sourcesContent":["import {\n getLocalizedUrl,\n getMarkdownMetadata,\n Locales,\n LocalesValues,\n} from 'intlayer';\nimport { join } from 'path';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey][defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n const relativeUrl = join('/', ...(metadata.slugs ?? []));\n\n const slicedDocKey = docKey.slice(1);\n\n return {\n ...metadata,\n docKey,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n try {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n } catch (error) {\n throw error;\n }\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const filesEntries = await Promise.all(\n Object.entries(files).map(async ([key]) => [\n key,\n await getFileMetadata(files, key as keyof F, locale),\n ])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/common.ts"],"sourcesContent":["import { Locales, LocalesValues } from '@intlayer/config';\nimport { getLocalizedUrl, getMarkdownMetadata } from '@intlayer/core';\nimport { join } from 'path';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey][defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n const relativeUrl = join('/', ...(metadata.slugs ?? []));\n\n const slicedDocKey = docKey.slice(1);\n\n return {\n ...metadata,\n docKey,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n try {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n } catch (error) {\n throw error;\n }\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const filesEntries = await Promise.all(\n Object.entries(files).map(async ([key]) => [\n key,\n await getFileMetadata(files, key as keyof F, locale),\n ])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":"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","names":[]}