@intlayer/chokidar 8.1.0 → 8.1.2

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/assets/installSkills/skills/angular.md +131 -24
  2. package/dist/assets/installSkills/skills/astro.md +17 -2
  3. package/dist/assets/installSkills/skills/cli.md +42 -4
  4. package/dist/assets/installSkills/skills/config.md +53 -3
  5. package/dist/assets/installSkills/skills/content.md +247 -5
  6. package/dist/assets/installSkills/skills/next_js.md +93 -13
  7. package/dist/assets/installSkills/skills/preact.md +82 -0
  8. package/dist/assets/installSkills/skills/react.md +77 -9
  9. package/dist/assets/installSkills/skills/remote_content.md +23 -2
  10. package/dist/assets/installSkills/skills/solid.md +87 -0
  11. package/dist/assets/installSkills/skills/svelte.md +61 -10
  12. package/dist/assets/installSkills/skills/usage.md +18 -83
  13. package/dist/assets/installSkills/skills/vue.md +19 -6
  14. package/dist/cjs/_virtual/_utils_asset.cjs +1 -1
  15. package/dist/cjs/build.cjs +51 -0
  16. package/dist/cjs/buildIntlayerDictionary/buildIntlayerDictionary.cjs +1 -1
  17. package/dist/cjs/buildIntlayerDictionary/writeDynamicDictionary.cjs +1 -1
  18. package/dist/cjs/buildIntlayerDictionary/writeFetchDictionary.cjs +1 -1
  19. package/dist/cjs/buildIntlayerDictionary/writeMergedDictionary.cjs +1 -1
  20. package/dist/cjs/buildIntlayerDictionary/writeRemoteDictionary.cjs +1 -1
  21. package/dist/cjs/buildIntlayerDictionary/writeUnmergedDictionary.cjs +1 -1
  22. package/dist/cjs/cleanOutputDir.cjs +1 -1
  23. package/dist/cjs/cleanRemovedContentDeclaration.cjs +4 -4
  24. package/dist/cjs/cli.cjs +21 -0
  25. package/dist/cjs/createDictionaryEntryPoint/createDictionaryEntryPoint.cjs +1 -1
  26. package/dist/cjs/createDictionaryEntryPoint/generateDictionaryListContent.cjs +1 -1
  27. package/dist/cjs/createDictionaryEntryPoint/getBuiltDictionariesPath.cjs +2 -2
  28. package/dist/cjs/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.cjs +2 -2
  29. package/dist/cjs/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.cjs +2 -2
  30. package/dist/cjs/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.cjs +2 -2
  31. package/dist/cjs/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.cjs +2 -2
  32. package/dist/cjs/createType/createModuleAugmentation.cjs +1 -1
  33. package/dist/cjs/filterInvalidDictionaries.cjs +1 -1
  34. package/dist/cjs/handleAdditionalContentDeclarationFile.cjs +1 -1
  35. package/dist/cjs/handleContentDeclarationFileChange.cjs +3 -3
  36. package/dist/cjs/handleContentDeclarationFileMoved.cjs +1 -1
  37. package/dist/cjs/handleUnlinkedContentDeclarationFile.cjs +2 -2
  38. package/dist/cjs/index.cjs +20 -20
  39. package/dist/cjs/initConfig/index.cjs +1 -1
  40. package/dist/cjs/installSkills/index.cjs +88 -71
  41. package/dist/cjs/installSkills/index.cjs.map +1 -1
  42. package/dist/cjs/listGitFiles.cjs +2 -2
  43. package/dist/cjs/listProjects.cjs +1 -1
  44. package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs +1 -1
  45. package/dist/cjs/loadDictionaries/index.cjs +1 -1
  46. package/dist/cjs/loadDictionaries/loadContentDeclaration.cjs +1 -1
  47. package/dist/cjs/loadDictionaries/loadDictionaries.cjs +1 -1
  48. package/dist/cjs/prepareIntlayer.cjs +4 -4
  49. package/dist/cjs/transformFiles/transformFiles.cjs +2 -2
  50. package/dist/cjs/utils/formatter.cjs +1 -1
  51. package/dist/cjs/utils/index.cjs +46 -0
  52. package/dist/cjs/watcher.cjs +3 -3
  53. package/dist/cjs/writeContentDeclaration/processContentDeclarationContent.cjs +2 -2
  54. package/dist/cjs/writeContentDeclaration/writeContentDeclaration.cjs +2 -2
  55. package/dist/cjs/writeContentDeclaration/writeJSFile.cjs +3 -3
  56. package/dist/esm/_virtual/_utils_asset.mjs +1 -1
  57. package/dist/esm/build.mjs +24 -0
  58. package/dist/esm/buildIntlayerDictionary/buildIntlayerDictionary.mjs +1 -1
  59. package/dist/esm/buildIntlayerDictionary/writeDynamicDictionary.mjs +1 -1
  60. package/dist/esm/buildIntlayerDictionary/writeFetchDictionary.mjs +1 -1
  61. package/dist/esm/buildIntlayerDictionary/writeMergedDictionary.mjs +1 -1
  62. package/dist/esm/buildIntlayerDictionary/writeRemoteDictionary.mjs +1 -1
  63. package/dist/esm/buildIntlayerDictionary/writeUnmergedDictionary.mjs +1 -1
  64. package/dist/esm/cleanOutputDir.mjs +1 -1
  65. package/dist/esm/cleanRemovedContentDeclaration.mjs +4 -4
  66. package/dist/esm/cli.mjs +8 -0
  67. package/dist/esm/createDictionaryEntryPoint/createDictionaryEntryPoint.mjs +1 -1
  68. package/dist/esm/createDictionaryEntryPoint/generateDictionaryListContent.mjs +1 -1
  69. package/dist/esm/createDictionaryEntryPoint/getBuiltDictionariesPath.mjs +2 -2
  70. package/dist/esm/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs +2 -2
  71. package/dist/esm/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs +2 -2
  72. package/dist/esm/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs +2 -2
  73. package/dist/esm/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs +2 -2
  74. package/dist/esm/createType/createModuleAugmentation.mjs +1 -1
  75. package/dist/esm/filterInvalidDictionaries.mjs +1 -1
  76. package/dist/esm/handleAdditionalContentDeclarationFile.mjs +1 -1
  77. package/dist/esm/handleContentDeclarationFileChange.mjs +3 -3
  78. package/dist/esm/handleContentDeclarationFileMoved.mjs +1 -1
  79. package/dist/esm/handleUnlinkedContentDeclarationFile.mjs +2 -2
  80. package/dist/esm/index.mjs +20 -20
  81. package/dist/esm/initConfig/index.mjs +1 -1
  82. package/dist/esm/installSkills/index.mjs +88 -70
  83. package/dist/esm/installSkills/index.mjs.map +1 -1
  84. package/dist/esm/listGitFiles.mjs +2 -2
  85. package/dist/esm/listProjects.mjs +1 -1
  86. package/dist/esm/loadDictionaries/getIntlayerBundle.mjs +1 -1
  87. package/dist/esm/loadDictionaries/index.mjs +1 -1
  88. package/dist/esm/loadDictionaries/loadContentDeclaration.mjs +1 -1
  89. package/dist/esm/loadDictionaries/loadDictionaries.mjs +1 -1
  90. package/dist/esm/prepareIntlayer.mjs +4 -4
  91. package/dist/esm/transformFiles/transformFiles.mjs +2 -2
  92. package/dist/esm/utils/formatter.mjs +1 -1
  93. package/dist/esm/utils/index.mjs +20 -0
  94. package/dist/esm/watcher.mjs +3 -3
  95. package/dist/esm/writeContentDeclaration/processContentDeclarationContent.mjs +2 -2
  96. package/dist/esm/writeContentDeclaration/writeContentDeclaration.mjs +2 -2
  97. package/dist/esm/writeContentDeclaration/writeJSFile.mjs +3 -3
  98. package/dist/types/build.d.ts +29 -0
  99. package/dist/types/cli.d.ts +8 -0
  100. package/dist/types/index.d.ts +16 -16
  101. package/dist/types/installSkills/index.d.ts +43 -1
  102. package/dist/types/installSkills/index.d.ts.map +1 -1
  103. package/dist/types/utils/index.d.ts +19 -0
  104. package/package.json +44 -12
@@ -1,12 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
3
  const require__utils_asset = require('../_virtual/_utils_asset.cjs');
4
- let node_fs = require("node:fs");
5
4
  let node_path = require("node:path");
6
5
  node_path = require_runtime.__toESM(node_path);
7
6
  let _intlayer_core = require("@intlayer/core");
8
- let node_https = require("node:https");
9
- node_https = require_runtime.__toESM(node_https);
7
+ let node_fs = require("node:fs");
10
8
 
11
9
  //#region src/installSkills/index.ts
12
10
  const SKILLS_METADATA = {
@@ -18,6 +16,8 @@ const SKILLS_METADATA = {
18
16
  Angular: "Angular-specific syntax and Injectable Function usage",
19
17
  NextJS: "Next.js-specific usage (Server & Client components)",
20
18
  Vue: "Vue-specific composables and syntax",
19
+ Preact: "Preact-specific syntax and hooks usage",
20
+ Solid: "Integrates Intlayer internationalization with SolidJS components. Use when the user asks to \"setup SolidJS i18n\", use the \"useIntlayer\" hook in Solid, or manage locales in a SolidJS application.",
21
21
  Svelte: "Svelte-specific stores and syntax",
22
22
  Astro: "Astro-specific usage and getIntlayer",
23
23
  CLI: "Intlayer CLI commands and usage"
@@ -28,14 +28,54 @@ const SKILLS = Object.keys(SKILLS_METADATA);
28
28
  */
29
29
  const SKILL_FILENAME_MAP = {};
30
30
  /**
31
- * Helper to convert CamelCase to snake_case for directory naming
31
+ * Configuration for Platform paths to keep code clean.
32
+ */
33
+ const PLATFORM_DIRS = {
34
+ Cursor: ".cursor/skills",
35
+ Windsurf: ".windsurf/skills",
36
+ Trae: ".trae/skills",
37
+ OpenCode: ".opencode/skills",
38
+ GitHub: ".github/skills",
39
+ Claude: ".claude/skills",
40
+ VSCode: ".vscode/skills",
41
+ Antigravity: ".agent/skills",
42
+ Augment: ".augment/skills",
43
+ OpenClaw: "skills",
44
+ Cline: ".cline/skills",
45
+ CodeBuddy: ".codebuddy/skills",
46
+ CommandCode: ".commandcode/skills",
47
+ Continue: ".continue/skills",
48
+ Crush: ".crush/skills",
49
+ Droid: ".factory/skills",
50
+ Goose: ".goose/skills",
51
+ Junie: ".junie/skills",
52
+ IFlow: ".iflow/skills",
53
+ KiloCode: ".kilocode/skills",
54
+ Kiro: ".kiro/skills",
55
+ Kode: ".kode/skills",
56
+ MCPJam: ".mcpjam/skills",
57
+ MistralVibe: ".vibe/skills",
58
+ Mux: ".mux/skills",
59
+ OpenHands: ".openhands/skills",
60
+ Pi: ".pi/skills",
61
+ Qoder: ".qoder/skills",
62
+ Qwen: ".qwen/skills",
63
+ RooCode: ".roo/skills",
64
+ TraeCN: ".trae/skills",
65
+ Zencoder: ".zencoder/skills",
66
+ Neovate: ".neovate/skills",
67
+ Pochi: ".pochi/skills",
68
+ Other: "skills"
69
+ };
70
+ /**
71
+ * Helper to convert CamelCase to kebab-case for directory naming
32
72
  */
33
- const camelToSnakeCase = (str) => str.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase();
73
+ const camelToKebabCase = (str) => str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
34
74
  /**
35
75
  * Reads the raw markdown content for a specific skill from the assets folder.
36
76
  */
37
77
  const getSkillContent = (skill) => {
38
- const fileName = `./skills/${SKILL_FILENAME_MAP[skill] ?? camelToSnakeCase(skill)}.md`;
78
+ const fileName = `./skills/${SKILL_FILENAME_MAP[skill] ?? camelToKebabCase(skill)}.md`;
39
79
  try {
40
80
  return require__utils_asset.readAsset(fileName);
41
81
  } catch {
@@ -55,88 +95,65 @@ const getLicenceContent = () => {
55
95
  }
56
96
  };
57
97
  /**
58
- * Fetches the content of a URL (supporting redirects).
98
+ * Fetches the content of a URL using native fetch.
59
99
  */
60
- const fetchUrl = (url) => new Promise((resolve, reject) => {
61
- node_https.default.get(url, (res) => {
62
- const { statusCode } = res;
63
- if (statusCode === 301 || statusCode === 302) {
64
- const redirectUrl = res.headers.location;
65
- if (redirectUrl) return fetchUrl(redirectUrl).then(resolve).catch(reject);
66
- }
67
- if (statusCode !== 200) return reject(/* @__PURE__ */ new Error(`Failed to fetch ${url}: Status Code ${statusCode}`));
68
- let data = "";
69
- res.on("data", (chunk) => {
70
- data += chunk;
71
- });
72
- res.on("end", () => {
73
- resolve(data);
74
- });
75
- }).on("error", (err) => {
76
- reject(err);
77
- });
78
- });
100
+ const fetchUrlContent = async (url) => {
101
+ const response = await fetch(url);
102
+ if (!response.ok) throw new Error(`Failed to fetch ${url}: ${response.statusText}`);
103
+ return response.text();
104
+ };
79
105
  /**
80
106
  * Installs skills using the "Agent Skills" directory standard.
81
107
  * Standard: <PROJECT_ROOT>/<CONFIG_DIR>/skills/<SKILL_NAME>/SKILL.md
82
108
  */
83
109
  const installSkills = async (projectRoot, platform, skills) => {
84
- let skillsBaseDir = "";
85
- let useAgentStructure = true;
86
- switch (platform) {
87
- case "Cursor":
88
- skillsBaseDir = node_path.default.join(projectRoot, ".cursor/skills");
89
- break;
90
- case "Windsurf":
91
- skillsBaseDir = node_path.default.join(projectRoot, ".windsurf/skills");
92
- break;
93
- case "OpenCode":
94
- skillsBaseDir = node_path.default.join(projectRoot, ".opencode/skills");
95
- break;
96
- case "GitHub":
97
- skillsBaseDir = node_path.default.join(projectRoot, ".github/skills");
98
- break;
99
- case "Claude":
100
- skillsBaseDir = node_path.default.join(projectRoot, ".claude/skills");
101
- break;
102
- default:
103
- skillsBaseDir = node_path.default.join(projectRoot, "skills");
104
- useAgentStructure = false;
105
- }
110
+ const relativeDir = PLATFORM_DIRS[platform] ?? "skills";
111
+ const skillsBaseDir = node_path.default.join(projectRoot, relativeDir);
112
+ const useAgentStructure = platform !== "VSCode";
106
113
  await node_fs.promises.mkdir(skillsBaseDir, { recursive: true });
107
114
  const createdSkills = [];
108
115
  const licenceContent = getLicenceContent();
109
116
  for (const skill of skills) {
110
- const skillName = `intlayer_${SKILL_FILENAME_MAP[skill] ?? camelToSnakeCase(skill)}`;
117
+ const skillName = `intlayer-${SKILL_FILENAME_MAP[skill] ?? camelToKebabCase(skill)}`;
111
118
  const skillContent = getSkillContent(skill);
112
119
  if (!skillContent) continue;
113
120
  const urls = Array.from(new Set(skillContent.match(/https:\/\/intlayer\.org\/doc\/[^\s)]+\.md/g) || []));
114
121
  if (useAgentStructure) {
115
122
  const skillDir = node_path.default.join(skillsBaseDir, skillName);
116
- await node_fs.promises.mkdir(skillDir, { recursive: true });
117
- const filePath = node_path.default.join(skillDir, "SKILL.md");
118
- await node_fs.promises.writeFile(filePath, skillContent, "utf-8");
119
- if (licenceContent) {
120
- const licencePath = node_path.default.join(skillDir, "LICENCE.md");
121
- await node_fs.promises.writeFile(licencePath, licenceContent, "utf-8");
122
- }
123
- const referenceDir = node_path.default.join(skillDir, "reference");
123
+ const referenceDir = node_path.default.join(skillDir, "references");
124
124
  await node_fs.promises.mkdir(referenceDir, { recursive: true });
125
- for (const url of urls) try {
126
- const content = await fetchUrl(url);
127
- const metadata = (0, _intlayer_core.getMarkdownMetadata)(content);
128
- let fileName = "";
129
- if (Array.isArray(metadata.slugs)) fileName = metadata.slugs.filter((slug) => slug !== "doc").join("_");
130
- else fileName = new URL(url).pathname.split("/").filter((part) => part !== "" && part !== "doc").map((part, index, array) => {
131
- if (index === array.length - 1) return part.replace(".md", "");
132
- return part;
133
- }).join("_");
134
- fileName = fileName ? `${fileName}.md` : "index.md";
135
- const docPath = node_path.default.join(referenceDir, fileName);
136
- await node_fs.promises.writeFile(docPath, content, "utf-8");
137
- } catch (error) {
138
- console.warn(`Warning: Could not fetch documentation for ${skill} from ${url}:`, error);
125
+ if (licenceContent) await node_fs.promises.writeFile(node_path.default.join(skillDir, "LICENCE.md"), licenceContent, "utf-8");
126
+ let updatedSkillContent = skillContent;
127
+ const downloadPromises = urls.map(async (url) => {
128
+ try {
129
+ const content = await fetchUrlContent(url);
130
+ const metadata = (0, _intlayer_core.getMarkdownMetadata)(content);
131
+ let fileName = "";
132
+ if (Array.isArray(metadata.slugs)) fileName = metadata.slugs.filter((slug) => slug !== "doc").join("_");
133
+ else fileName = new URL(url).pathname.split("/").filter((part) => part && part !== "doc").map((part) => part.replace(".md", "")).join("_");
134
+ fileName = fileName ? `${fileName}.md` : "index.md";
135
+ return {
136
+ url,
137
+ localRefPath: `references/${fileName}`,
138
+ fileName,
139
+ content,
140
+ success: true
141
+ };
142
+ } catch (error) {
143
+ console.warn(`Warning: Failed to download ref ${url} for skill ${skill}`, error);
144
+ return {
145
+ url,
146
+ success: false
147
+ };
148
+ }
149
+ });
150
+ const results = await Promise.all(downloadPromises);
151
+ for (const res of results) if (res.success && res.fileName && res.content && res.localRefPath) {
152
+ await node_fs.promises.writeFile(node_path.default.join(referenceDir, res.fileName), res.content, "utf-8");
153
+ updatedSkillContent = updatedSkillContent.replaceAll(res.url, res.localRefPath);
139
154
  }
155
+ const filePath = node_path.default.join(skillDir, "SKILL.md");
156
+ await node_fs.promises.writeFile(filePath, updatedSkillContent, "utf-8");
140
157
  createdSkills.push(`${skillName}/SKILL.md`);
141
158
  } else {
142
159
  const fileName = `${skillName}.md`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["readAsset","path","fs"],"sources":["../../../src/installSkills/index.ts"],"sourcesContent":["import { promises as fs } from 'node:fs';\nimport https from 'node:https';\nimport path from 'node:path';\nimport { readAsset } from 'utils:asset';\nimport { getMarkdownMetadata } from '@intlayer/core';\n\nexport const SKILLS_METADATA = {\n Usage: 'How to use Intlayer in your project',\n RemoteContent: 'How to use Intlayer with Remote/CMS/Server-side content',\n Config: 'Intlayer configuration documentation',\n Content: 'Reference for all Intlayer content node types (t, enu, etc.)',\n React: 'React-specific syntax and hooks usage',\n Angular: 'Angular-specific syntax and Injectable Function usage',\n NextJS: 'Next.js-specific usage (Server & Client components)',\n Vue: 'Vue-specific composables and syntax',\n Svelte: 'Svelte-specific stores and syntax',\n Astro: 'Astro-specific usage and getIntlayer',\n CLI: 'Intlayer CLI commands and usage',\n} as const;\n\nexport const SKILLS = Object.keys(\n SKILLS_METADATA\n) as (keyof typeof SKILLS_METADATA)[];\n\nexport type Skill = (typeof SKILLS)[number];\n\nexport type Platform =\n | 'Cursor'\n | 'Windsurf'\n | 'OpenCode'\n | 'GitHub'\n | 'Claude'\n | 'VSCode'\n | 'Other';\n\n/**\n * Maps specific skill keys to special filenames if they differ from standard snake_case.\n */\nconst SKILL_FILENAME_MAP: Partial<Record<Skill, string>> = {};\n\n/**\n * Helper to convert CamelCase to snake_case for directory naming\n */\nconst camelToSnakeCase = (str: string) =>\n str.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();\n\n/**\n * Reads the raw markdown content for a specific skill from the assets folder.\n */\nconst getSkillContent = (skill: Skill): string => {\n const baseName = SKILL_FILENAME_MAP[skill] ?? camelToSnakeCase(skill);\n // Source files are flat: ./skills/vue.md\n const fileName = `./skills/${baseName}.md`;\n\n try {\n return readAsset(fileName);\n } catch {\n console.warn(\n `Warning: Could not read asset for skill: ${skill} at ${fileName}`\n );\n return '';\n }\n};\n\n/**\n * Reads the licence content from the assets folder.\n */\nconst getLicenceContent = (): string => {\n try {\n return readAsset('./LICENCE.md');\n } catch {\n console.warn('Warning: Could not read LICENCE.md asset');\n return '';\n }\n};\n\n/**\n * Fetches the content of a URL (supporting redirects).\n */\nconst fetchUrl = (url: string): Promise<string> =>\n new Promise((resolve, reject) => {\n https\n .get(url, (res) => {\n const { statusCode } = res;\n\n if (statusCode === 301 || statusCode === 302) {\n const redirectUrl = res.headers.location;\n if (redirectUrl) {\n return fetchUrl(redirectUrl).then(resolve).catch(reject);\n }\n }\n\n if (statusCode !== 200) {\n return reject(\n new Error(`Failed to fetch ${url}: Status Code ${statusCode}`)\n );\n }\n\n let data = '';\n res.on('data', (chunk) => {\n data += chunk;\n });\n res.on('end', () => {\n resolve(data);\n });\n })\n .on('error', (err) => {\n reject(err);\n });\n });\n\n/**\n * Installs skills using the \"Agent Skills\" directory standard.\n * Standard: <PROJECT_ROOT>/<CONFIG_DIR>/skills/<SKILL_NAME>/SKILL.md\n */\nexport const installSkills = async (\n projectRoot: string,\n platform: Platform,\n skills: Skill[]\n): Promise<string> => {\n let skillsBaseDir = '';\n let useAgentStructure = true;\n\n // Determine the root configuration directory based on Platform\n switch (platform) {\n case 'Cursor':\n skillsBaseDir = path.join(projectRoot, '.cursor/skills');\n break;\n case 'Windsurf':\n skillsBaseDir = path.join(projectRoot, '.windsurf/skills');\n break;\n case 'OpenCode':\n skillsBaseDir = path.join(projectRoot, '.opencode/skills');\n break;\n case 'GitHub': // GitHub Copilot Workspace\n skillsBaseDir = path.join(projectRoot, '.github/skills');\n break;\n case 'Claude': // Claude Desktop / Agent\n skillsBaseDir = path.join(projectRoot, '.claude/skills');\n break;\n default:\n // Fallback for generic editors (VSCode, etc.) -> Flat files\n skillsBaseDir = path.join(projectRoot, 'skills');\n useAgentStructure = false;\n }\n\n // Ensure the base directory exists\n await fs.mkdir(skillsBaseDir, { recursive: true });\n\n const createdSkills: string[] = [];\n const licenceContent = getLicenceContent();\n\n for (const skill of skills) {\n const baseName = SKILL_FILENAME_MAP[skill] ?? camelToSnakeCase(skill);\n const skillName = `intlayer_${baseName}`;\n const skillContent = getSkillContent(skill);\n\n if (!skillContent) continue;\n\n const urls = Array.from(\n new Set(\n skillContent.match(/https:\\/\\/intlayer\\.org\\/doc\\/[^\\s)]+\\.md/g) || []\n )\n );\n\n if (useAgentStructure) {\n // Agent Standard: .../skills/<skill-name>/SKILL.md\n const skillDir = path.join(skillsBaseDir, skillName);\n await fs.mkdir(skillDir, { recursive: true });\n\n const filePath = path.join(skillDir, 'SKILL.md');\n await fs.writeFile(filePath, skillContent, 'utf-8');\n\n if (licenceContent) {\n const licencePath = path.join(skillDir, 'LICENCE.md');\n await fs.writeFile(licencePath, licenceContent, 'utf-8');\n }\n\n // Fetch and save documentation files\n const referenceDir = path.join(skillDir, 'reference');\n await fs.mkdir(referenceDir, { recursive: true });\n\n for (const url of urls) {\n try {\n const content = await fetchUrl(url);\n const metadata = getMarkdownMetadata<{\n slugs?: string[];\n }>(content);\n\n let fileName = '';\n\n if (Array.isArray(metadata.slugs)) {\n fileName = metadata.slugs\n .filter((slug) => slug !== 'doc')\n .join('_');\n } else {\n const urlPath = new URL(url).pathname;\n fileName = urlPath\n .split('/')\n .filter((part) => part !== '' && part !== 'doc')\n .map((part, index, array) => {\n if (index === array.length - 1) {\n return part.replace('.md', '');\n }\n return part;\n })\n .join('_');\n }\n\n fileName = fileName ? `${fileName}.md` : 'index.md';\n\n const docPath = path.join(referenceDir, fileName);\n await fs.writeFile(docPath, content, 'utf-8');\n } catch (error) {\n console.warn(\n `Warning: Could not fetch documentation for ${skill} from ${url}:`,\n error\n );\n }\n }\n\n createdSkills.push(`${skillName}/SKILL.md`);\n } else {\n // Flat Structure (Generic): .../skills/<skill-name>.md\n const fileName = `${skillName}.md`;\n const filePath = path.join(skillsBaseDir, fileName);\n await fs.writeFile(filePath, skillContent, 'utf-8');\n createdSkills.push(fileName);\n }\n }\n\n if (createdSkills.length === 0) {\n return `No skill files were created. Check your asset paths.`;\n }\n\n return `Created ${createdSkills.length} skills in ${skillsBaseDir}`;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["readAsset","path","fs"],"sources":["../../../src/installSkills/index.ts"],"sourcesContent":["import { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport { readAsset } from 'utils:asset';\nimport { getMarkdownMetadata } from '@intlayer/core';\n\nexport const SKILLS_METADATA = {\n Usage: 'How to use Intlayer in your project',\n RemoteContent: 'How to use Intlayer with Remote/CMS/Server-side content',\n Config: 'Intlayer configuration documentation',\n Content: 'Reference for all Intlayer content node types (t, enu, etc.)',\n React: 'React-specific syntax and hooks usage',\n Angular: 'Angular-specific syntax and Injectable Function usage',\n NextJS: 'Next.js-specific usage (Server & Client components)',\n Vue: 'Vue-specific composables and syntax',\n Preact: 'Preact-specific syntax and hooks usage',\n Solid:\n 'Integrates Intlayer internationalization with SolidJS components. Use when the user asks to \"setup SolidJS i18n\", use the \"useIntlayer\" hook in Solid, or manage locales in a SolidJS application.',\n Svelte: 'Svelte-specific stores and syntax',\n Astro: 'Astro-specific usage and getIntlayer',\n CLI: 'Intlayer CLI commands and usage',\n} as const;\n\nexport const SKILLS = Object.keys(\n SKILLS_METADATA\n) as (keyof typeof SKILLS_METADATA)[];\n\nexport type Skill = (typeof SKILLS)[number];\n\n/**\n * Maps specific skill keys to special filenames if they differ from standard snake_case.\n */\nconst SKILL_FILENAME_MAP: Partial<Record<Skill, string>> = {};\n\n/**\n * Configuration for Platform paths to keep code clean.\n */\nconst PLATFORM_DIRS = {\n Cursor: '.cursor/skills',\n Windsurf: '.windsurf/skills',\n Trae: '.trae/skills',\n OpenCode: '.opencode/skills',\n GitHub: '.github/skills',\n Claude: '.claude/skills',\n VSCode: '.vscode/skills', // Fixed: VSCode usually uses .vscode, not .github\n Antigravity: '.agent/skills',\n Augment: '.augment/skills',\n OpenClaw: 'skills',\n Cline: '.cline/skills',\n CodeBuddy: '.codebuddy/skills',\n CommandCode: '.commandcode/skills',\n Continue: '.continue/skills',\n Crush: '.crush/skills',\n Droid: '.factory/skills',\n Goose: '.goose/skills',\n Junie: '.junie/skills',\n IFlow: '.iflow/skills',\n KiloCode: '.kilocode/skills',\n Kiro: '.kiro/skills',\n Kode: '.kode/skills',\n MCPJam: '.mcpjam/skills',\n MistralVibe: '.vibe/skills',\n Mux: '.mux/skills',\n OpenHands: '.openhands/skills',\n Pi: '.pi/skills',\n Qoder: '.qoder/skills',\n Qwen: '.qwen/skills',\n RooCode: '.roo/skills',\n TraeCN: '.trae/skills',\n Zencoder: '.zencoder/skills',\n Neovate: '.neovate/skills',\n Pochi: '.pochi/skills',\n Other: 'skills',\n};\n\nexport type Platform = keyof typeof PLATFORM_DIRS;\n\n/**\n * Helper to convert CamelCase to kebab-case for directory naming\n */\nconst camelToKebabCase = (str: string) =>\n str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Reads the raw markdown content for a specific skill from the assets folder.\n */\nconst getSkillContent = (skill: Skill): string => {\n const baseName = SKILL_FILENAME_MAP[skill] ?? camelToKebabCase(skill);\n const fileName = `./skills/${baseName}.md`;\n\n try {\n return readAsset(fileName);\n } catch {\n console.warn(\n `Warning: Could not read asset for skill: ${skill} at ${fileName}`\n );\n return '';\n }\n};\n\n/**\n * Reads the licence content from the assets folder.\n */\nconst getLicenceContent = (): string => {\n try {\n return readAsset('./LICENCE.md');\n } catch {\n console.warn('Warning: Could not read LICENCE.md asset');\n return '';\n }\n};\n\n/**\n * Fetches the content of a URL using native fetch.\n */\nconst fetchUrlContent = async (url: string): Promise<string> => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch ${url}: ${response.statusText}`);\n }\n return response.text();\n};\n\n/**\n * Installs skills using the \"Agent Skills\" directory standard.\n * Standard: <PROJECT_ROOT>/<CONFIG_DIR>/skills/<SKILL_NAME>/SKILL.md\n */\nexport const installSkills = async (\n projectRoot: string,\n platform: Platform,\n skills: Skill[]\n): Promise<string> => {\n // 1. Determine destination directory\n const relativeDir = PLATFORM_DIRS[platform] ?? 'skills';\n const skillsBaseDir = path.join(projectRoot, relativeDir);\n\n const useAgentStructure = platform !== 'VSCode';\n\n // Ensure the base directory exists\n await fs.mkdir(skillsBaseDir, { recursive: true });\n\n const createdSkills: string[] = [];\n const licenceContent = getLicenceContent();\n\n for (const skill of skills) {\n const baseName = SKILL_FILENAME_MAP[skill] ?? camelToKebabCase(skill);\n const skillName = `intlayer-${baseName}`;\n const skillContent = getSkillContent(skill);\n\n if (!skillContent) continue;\n\n // Extract unique URLs\n const urls = Array.from(\n new Set(\n skillContent.match(/https:\\/\\/intlayer\\.org\\/doc\\/[^\\s)]+\\.md/g) || []\n )\n );\n\n if (useAgentStructure) {\n // Agent Standard: .../skills/<skill-name>/SKILL.md\n const skillDir = path.join(skillsBaseDir, skillName);\n const referenceDir = path.join(skillDir, 'references');\n\n // Ensure directories exist\n await fs.mkdir(referenceDir, { recursive: true });\n\n // Write License\n if (licenceContent) {\n await fs.writeFile(\n path.join(skillDir, 'LICENCE.md'),\n licenceContent,\n 'utf-8'\n );\n }\n\n let updatedSkillContent = skillContent;\n\n // Parallel download of references\n const downloadPromises = urls.map(async (url) => {\n try {\n const content = await fetchUrlContent(url);\n const metadata = getMarkdownMetadata<{ slugs?: string[] }>(content);\n\n let fileName = '';\n\n // Determine filename from slugs or URL path\n if (Array.isArray(metadata.slugs)) {\n fileName = metadata.slugs\n .filter((slug) => slug !== 'doc')\n .join('_');\n } else {\n const urlPath = new URL(url).pathname;\n fileName = urlPath\n .split('/')\n .filter((part) => part && part !== 'doc')\n .map((part) => part.replace('.md', '')) // Clean extension for joining\n .join('_');\n }\n\n // Ensure it ends with .md\n fileName = fileName ? `${fileName}.md` : 'index.md';\n const localRefPath = `references/${fileName}`;\n\n return {\n url,\n localRefPath,\n fileName,\n content,\n success: true,\n };\n } catch (error) {\n console.warn(\n `Warning: Failed to download ref ${url} for skill ${skill}`,\n error\n );\n return { url, success: false };\n }\n });\n\n const results = await Promise.all(downloadPromises);\n\n // Process results: Write files and update content string\n for (const res of results) {\n if (res.success && res.fileName && res.content && res.localRefPath) {\n // Write the reference file\n await fs.writeFile(\n path.join(referenceDir, res.fileName),\n res.content,\n 'utf-8'\n );\n\n // Update the main content to point to local file\n updatedSkillContent = updatedSkillContent.replaceAll(\n res.url,\n res.localRefPath\n );\n }\n }\n\n // Write the main SKILL.md\n const filePath = path.join(skillDir, 'SKILL.md');\n await fs.writeFile(filePath, updatedSkillContent, 'utf-8');\n createdSkills.push(`${skillName}/SKILL.md`);\n } else {\n // Flat Structure (Generic/VSCode): .../skills/<skill-name>.md\n const fileName = `${skillName}.md`;\n const filePath = path.join(skillsBaseDir, fileName);\n\n await fs.writeFile(filePath, skillContent, 'utf-8');\n createdSkills.push(fileName);\n }\n }\n\n if (createdSkills.length === 0) {\n return `No skill files were created. Check your asset paths.`;\n }\n\n return `Created ${createdSkills.length} skills in ${skillsBaseDir}`;\n};\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
- let node_fs = require("node:fs");
4
- let node_path = require("node:path");
5
3
  let _intlayer_config = require("@intlayer/config");
4
+ let node_path = require("node:path");
6
5
  let _intlayer_config_built = require("@intlayer/config/built");
7
6
  _intlayer_config_built = require_runtime.__toESM(_intlayer_config_built);
7
+ let node_fs = require("node:fs");
8
8
  let simple_git = require("simple-git");
9
9
  simple_git = require_runtime.__toESM(simple_git);
10
10
 
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ let _intlayer_config = require("@intlayer/config");
3
4
  let node_path = require("node:path");
4
5
  let fast_glob = require("fast-glob");
5
6
  fast_glob = require_runtime.__toESM(fast_glob);
6
- let _intlayer_config = require("@intlayer/config");
7
7
  let simple_git = require("simple-git");
8
8
  simple_git = require_runtime.__toESM(simple_git);
9
9
 
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ let _intlayer_config = require("@intlayer/config");
3
4
  let node_fs_promises = require("node:fs/promises");
4
5
  let node_path = require("node:path");
5
- let _intlayer_config = require("@intlayer/config");
6
6
  let node_module = require("node:module");
7
7
 
8
8
  //#region src/loadDictionaries/getIntlayerBundle.ts
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_loadDictionaries_loadContentDeclaration = require('./loadContentDeclaration.cjs');
3
- const require_loadDictionaries_loadLocalDictionaries = require('./loadLocalDictionaries.cjs');
4
3
  const require_loadDictionaries_loadRemoteDictionaries = require('./loadRemoteDictionaries.cjs');
5
4
  const require_loadDictionaries_loadDictionaries = require('./loadDictionaries.cjs');
5
+ const require_loadDictionaries_loadLocalDictionaries = require('./loadLocalDictionaries.cjs');
6
6
 
7
7
  exports.formatDistantDictionaries = require_loadDictionaries_loadRemoteDictionaries.formatDistantDictionaries;
8
8
  exports.formatLocalDictionaries = require_loadDictionaries_loadContentDeclaration.formatLocalDictionaries;
@@ -4,9 +4,9 @@ const require_utils_parallelize = require('../utils/parallelize.cjs');
4
4
  const require_filterInvalidDictionaries = require('../filterInvalidDictionaries.cjs');
5
5
  const require_buildIntlayerDictionary_processContentDeclaration = require('../buildIntlayerDictionary/processContentDeclaration.cjs');
6
6
  const require_loadDictionaries_getIntlayerBundle = require('./getIntlayerBundle.cjs');
7
+ let _intlayer_config = require("@intlayer/config");
7
8
  let node_fs_promises = require("node:fs/promises");
8
9
  let node_path = require("node:path");
9
- let _intlayer_config = require("@intlayer/config");
10
10
 
11
11
  //#region src/loadDictionaries/loadContentDeclaration.ts
12
12
  const formatLocalDictionaries = (dictionariesRecord, configuration) => Object.entries(dictionariesRecord).map(([relativePath, dict]) => ({
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
3
  const require_filterInvalidDictionaries = require('../filterInvalidDictionaries.cjs');
4
- const require_formatDictionary = require('../formatDictionary.cjs');
5
4
  const require_loadDictionaries_loadContentDeclaration = require('./loadContentDeclaration.cjs');
5
+ const require_formatDictionary = require('../formatDictionary.cjs');
6
6
  const require_loadDictionaries_loadRemoteDictionaries = require('./loadRemoteDictionaries.cjs');
7
7
  const require_loadDictionaries_log = require('./log.cjs');
8
8
  let _intlayer_config_client = require("@intlayer/config/client");
@@ -1,18 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
- const require_cleanOutputDir = require('./cleanOutputDir.cjs');
4
- const require_createDictionaryEntryPoint_createDictionaryEntryPoint = require('./createDictionaryEntryPoint/createDictionaryEntryPoint.cjs');
5
3
  const require_buildIntlayerDictionary_buildIntlayerDictionary = require('./buildIntlayerDictionary/buildIntlayerDictionary.cjs');
4
+ const require_createDictionaryEntryPoint_createDictionaryEntryPoint = require('./createDictionaryEntryPoint/createDictionaryEntryPoint.cjs');
6
5
  const require_createType_createModuleAugmentation = require('./createType/createModuleAugmentation.cjs');
7
6
  const require_createType_createType = require('./createType/createType.cjs');
8
- const require_listDictionariesPath = require('./listDictionariesPath.cjs');
9
7
  const require_loadDictionaries_loadDictionaries = require('./loadDictionaries/loadDictionaries.cjs');
10
8
  const require_buildIntlayerDictionary_writeRemoteDictionary = require('./buildIntlayerDictionary/writeRemoteDictionary.cjs');
9
+ const require_cleanOutputDir = require('./cleanOutputDir.cjs');
10
+ const require_listDictionariesPath = require('./listDictionariesPath.cjs');
11
11
  const require_utils_runOnce = require('./utils/runOnce.cjs');
12
12
  const require_writeConfiguration_index = require('./writeConfiguration/index.cjs');
13
+ let _intlayer_config = require("@intlayer/config");
13
14
  let node_fs_promises = require("node:fs/promises");
14
15
  let node_path = require("node:path");
15
- let _intlayer_config = require("@intlayer/config");
16
16
  let _intlayer_config_package_json = require("@intlayer/config/package.json");
17
17
  _intlayer_config_package_json = require_runtime.__toESM(_intlayer_config_package_json);
18
18
 
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- const require_transformFiles_extractDictionaryKey = require('./extractDictionaryKey.cjs');
4
3
  const require_writeContentDeclaration_detectFormatCommand = require('../writeContentDeclaration/detectFormatCommand.cjs');
5
4
  const require_writeContentDeclaration_writeContentDeclaration = require('../writeContentDeclaration/writeContentDeclaration.cjs');
5
+ const require_transformFiles_extractDictionaryKey = require('./extractDictionaryKey.cjs');
6
+ let _intlayer_config = require("@intlayer/config");
6
7
  let node_fs_promises = require("node:fs/promises");
7
8
  node_fs_promises = require_runtime.__toESM(node_fs_promises);
8
9
  let node_path = require("node:path");
9
- let _intlayer_config = require("@intlayer/config");
10
10
  let ts_morph = require("ts-morph");
11
11
  let node_child_process = require("node:child_process");
12
12
 
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- let node_path = require("node:path");
4
3
  let _intlayer_config = require("@intlayer/config");
4
+ let node_path = require("node:path");
5
5
  let _intlayer_core = require("@intlayer/core");
6
6
  let _intlayer_config_built = require("@intlayer/config/built");
7
7
  _intlayer_config_built = require_runtime.__toESM(_intlayer_config_built);
@@ -0,0 +1,46 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_utils_pLimit = require('./pLimit.cjs');
3
+ const require_utils_parallelize = require('./parallelize.cjs');
4
+ const require_utils_formatter = require('./formatter.cjs');
5
+ const require_utils_autoDecorateContent = require('./autoDecorateContent.cjs');
6
+ const require_utils_resolveObjectPromises = require('./resolveObjectPromises.cjs');
7
+ const require_utils_getFileHash = require('./getFileHash.cjs');
8
+ const require_utils_sortAlphabetically = require('./sortAlphabetically.cjs');
9
+ const require_utils_runOnce = require('./runOnce.cjs');
10
+ const require_utils_getFormatFromExtension = require('./getFormatFromExtension.cjs');
11
+ const require_utils_buildFilesList = require('./buildFilesList.cjs');
12
+ const require_utils_splitTextByLine = require('./splitTextByLine.cjs');
13
+ const require_utils_getChunk = require('./getChunk.cjs');
14
+ const require_utils_chunkJSON = require('./chunkJSON.cjs');
15
+ const require_utils_getComponentTransformPattern = require('./getComponentTransformPattern.cjs');
16
+ const require_utils_parallelizeGlobal = require('./parallelizeGlobal.cjs');
17
+ const require_utils_reduceObjectFormat = require('./reduceObjectFormat.cjs');
18
+ const require_utils_runParallel_index = require('./runParallel/index.cjs');
19
+ const require_utils_verifyIdenticObjectFormat = require('./verifyIdenticObjectFormat.cjs');
20
+
21
+ exports.Queue = require_utils_pLimit.Queue;
22
+ exports.assembleJSON = require_utils_chunkJSON.assembleJSON;
23
+ exports.autoDecorateContent = require_utils_autoDecorateContent.autoDecorateContent;
24
+ exports.buildFilesList = require_utils_buildFilesList.buildFilesList;
25
+ exports.chunkJSON = require_utils_chunkJSON.chunkJSON;
26
+ exports.formatLocale = require_utils_formatter.formatLocale;
27
+ exports.formatPath = require_utils_formatter.formatPath;
28
+ exports.getChunk = require_utils_getChunk.getChunk;
29
+ exports.getComponentTransformPattern = require_utils_getComponentTransformPattern.getComponentTransformPattern;
30
+ exports.getComponentTransformPatternSync = require_utils_getComponentTransformPattern.getComponentTransformPatternSync;
31
+ exports.getExtensionFromFormat = require_utils_getFormatFromExtension.getExtensionFromFormat;
32
+ exports.getFileHash = require_utils_getFileHash.getFileHash;
33
+ exports.getFormatFromExtension = require_utils_getFormatFromExtension.getFormatFromExtension;
34
+ exports.getGlobalLimiter = require_utils_parallelizeGlobal.getGlobalLimiter;
35
+ exports.getTaskLimiter = require_utils_parallelizeGlobal.getTaskLimiter;
36
+ exports.pLimit = require_utils_pLimit.pLimit;
37
+ exports.parallelize = require_utils_parallelize.parallelize;
38
+ exports.parallelizeGlobal = require_utils_parallelizeGlobal.parallelizeGlobal;
39
+ exports.reconstructFromSingleChunk = require_utils_chunkJSON.reconstructFromSingleChunk;
40
+ exports.reduceObjectFormat = require_utils_reduceObjectFormat.reduceObjectFormat;
41
+ exports.resolveObjectPromises = require_utils_resolveObjectPromises.resolveObjectPromises;
42
+ exports.runOnce = require_utils_runOnce.runOnce;
43
+ exports.runParallel = require_utils_runParallel_index.runParallel;
44
+ exports.sortAlphabetically = require_utils_sortAlphabetically.sortAlphabetically;
45
+ exports.splitTextByLines = require_utils_splitTextByLine.splitTextByLines;
46
+ exports.verifyIdenticObjectFormat = require_utils_verifyIdenticObjectFormat.verifyIdenticObjectFormat;
@@ -1,14 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ const require_prepareIntlayer = require('./prepareIntlayer.cjs');
4
+ const require_writeContentDeclaration_writeContentDeclaration = require('./writeContentDeclaration/writeContentDeclaration.cjs');
3
5
  const require_handleAdditionalContentDeclarationFile = require('./handleAdditionalContentDeclarationFile.cjs');
4
6
  const require_handleContentDeclarationFileChange = require('./handleContentDeclarationFileChange.cjs');
5
7
  const require_handleContentDeclarationFileMoved = require('./handleContentDeclarationFileMoved.cjs');
6
8
  const require_handleUnlinkedContentDeclarationFile = require('./handleUnlinkedContentDeclarationFile.cjs');
7
- const require_prepareIntlayer = require('./prepareIntlayer.cjs');
8
- const require_writeContentDeclaration_writeContentDeclaration = require('./writeContentDeclaration/writeContentDeclaration.cjs');
9
+ let _intlayer_config = require("@intlayer/config");
9
10
  let node_fs_promises = require("node:fs/promises");
10
11
  let node_path = require("node:path");
11
- let _intlayer_config = require("@intlayer/config");
12
12
  let chokidar = require("chokidar");
13
13
 
14
14
  //#region src/watcher.ts
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- let node_fs = require("node:fs");
4
- let node_path = require("node:path");
5
3
  let _intlayer_config = require("@intlayer/config");
4
+ let node_path = require("node:path");
6
5
  let _intlayer_core = require("@intlayer/core");
7
6
  let _intlayer_types = require("@intlayer/types");
7
+ let node_fs = require("node:fs");
8
8
 
9
9
  //#region src/writeContentDeclaration/processContentDeclarationContent.ts
10
10
  /**
@@ -4,11 +4,11 @@ const require_utils_getFormatFromExtension = require('../utils/getFormatFromExte
4
4
  const require_writeContentDeclaration_processContentDeclarationContent = require('./processContentDeclarationContent.cjs');
5
5
  const require_writeContentDeclaration_transformJSONFile = require('./transformJSONFile.cjs');
6
6
  const require_writeContentDeclaration_writeJSFile = require('./writeJSFile.cjs');
7
- let node_fs = require("node:fs");
7
+ let _intlayer_unmerged_dictionaries_entry = require("@intlayer/unmerged-dictionaries-entry");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
10
- let _intlayer_unmerged_dictionaries_entry = require("@intlayer/unmerged-dictionaries-entry");
11
10
  let _intlayer_core = require("@intlayer/core");
11
+ let node_fs = require("node:fs");
12
12
  let node_util = require("node:util");
13
13
 
14
14
  //#region src/writeContentDeclaration/writeContentDeclaration.ts
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- const require_getContentDeclarationFileTemplate_getContentDeclarationFileTemplate = require('../getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.cjs');
4
3
  const require_writeContentDeclaration_detectFormatCommand = require('./detectFormatCommand.cjs');
5
4
  const require_writeContentDeclaration_transformJSFile = require('./transformJSFile.cjs');
6
5
  const require_utils_getFormatFromExtension = require('../utils/getFormatFromExtension.cjs');
7
- let node_fs = require("node:fs");
6
+ const require_getContentDeclarationFileTemplate_getContentDeclarationFileTemplate = require('../getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.cjs');
7
+ let _intlayer_config = require("@intlayer/config");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
10
- let _intlayer_config = require("@intlayer/config");
10
+ let node_fs = require("node:fs");
11
11
  let node_child_process = require("node:child_process");
12
12
 
13
13
  //#region src/writeContentDeclaration/writeJSFile.ts
@@ -1,5 +1,5 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
1
  import { basename, dirname, join, relative, resolve, sep } from "node:path";
2
+ import { existsSync, readFileSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
 
5
5
  //#region \0utils:asset
@@ -0,0 +1,24 @@
1
+ import { buildDictionary } from "./buildIntlayerDictionary/buildIntlayerDictionary.mjs";
2
+ import { processContentDeclaration } from "./buildIntlayerDictionary/processContentDeclaration.mjs";
3
+ import { generateDictionaryListContent } from "./createDictionaryEntryPoint/generateDictionaryListContent.mjs";
4
+ import { getBuiltDictionariesPath } from "./createDictionaryEntryPoint/getBuiltDictionariesPath.mjs";
5
+ import { getBuiltDynamicDictionariesPath } from "./createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs";
6
+ import { getBuiltFetchDictionariesPath } from "./createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs";
7
+ import { getBuiltRemoteDictionariesPath } from "./createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs";
8
+ import { getBuiltUnmergedDictionariesPath } from "./createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs";
9
+ import { createDictionaryEntryPoint } from "./createDictionaryEntryPoint/createDictionaryEntryPoint.mjs";
10
+ import { createModuleAugmentation, getTypeName } from "./createType/createModuleAugmentation.mjs";
11
+ import { createTypes, generateTypeScriptType } from "./createType/createType.mjs";
12
+ import { formatLocalDictionaries, loadContentDeclarations } from "./loadDictionaries/loadContentDeclaration.mjs";
13
+ import { formatDistantDictionaries, loadRemoteDictionaries } from "./loadDictionaries/loadRemoteDictionaries.mjs";
14
+ import { loadDictionaries } from "./loadDictionaries/loadDictionaries.mjs";
15
+ import { loadLocalDictionaries } from "./loadDictionaries/loadLocalDictionaries.mjs";
16
+ import { isCachedConfigurationUpToDate, writeConfiguration } from "./writeConfiguration/index.mjs";
17
+ import { prepareIntlayer } from "./prepareIntlayer.mjs";
18
+ import { detectExportedComponentName } from "./writeContentDeclaration/detectExportedComponentName.mjs";
19
+ import { detectFormatCommand } from "./writeContentDeclaration/detectFormatCommand.mjs";
20
+ import { transformJSFile } from "./writeContentDeclaration/transformJSFile.mjs";
21
+ import { writeJSFile } from "./writeContentDeclaration/writeJSFile.mjs";
22
+ import { writeContentDeclaration } from "./writeContentDeclaration/writeContentDeclaration.mjs";
23
+
24
+ export { buildDictionary, createDictionaryEntryPoint, createModuleAugmentation, createTypes, detectExportedComponentName, detectFormatCommand, formatDistantDictionaries, formatLocalDictionaries, generateDictionaryListContent, generateTypeScriptType, getBuiltDictionariesPath, getBuiltDynamicDictionariesPath, getBuiltFetchDictionariesPath, getBuiltRemoteDictionariesPath, getBuiltUnmergedDictionariesPath, getTypeName, isCachedConfigurationUpToDate, loadContentDeclarations, loadDictionaries, loadLocalDictionaries, loadRemoteDictionaries, prepareIntlayer, processContentDeclaration, transformJSFile, writeConfiguration, writeContentDeclaration, writeJSFile };
@@ -2,8 +2,8 @@ import { writeDynamicDictionary } from "./writeDynamicDictionary.mjs";
2
2
  import { writeFetchDictionary } from "./writeFetchDictionary.mjs";
3
3
  import { writeMergedDictionaries } from "./writeMergedDictionary.mjs";
4
4
  import { writeUnmergedDictionaries } from "./writeUnmergedDictionary.mjs";
5
- import { getUnmergedDictionaries } from "@intlayer/unmerged-dictionaries-entry";
6
5
  import { DefaultValues, getConfiguration } from "@intlayer/config";
6
+ import { getUnmergedDictionaries } from "@intlayer/unmerged-dictionaries-entry";
7
7
 
8
8
  //#region src/buildIntlayerDictionary/buildIntlayerDictionary.ts
9
9
  /**
@@ -1,9 +1,9 @@
1
1
  import { parallelize } from "../utils/parallelize.mjs";
2
2
  import { writeFileIfChanged } from "../writeFileIfChanged.mjs";
3
3
  import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs";
4
+ import { colorizePath, getConfiguration, normalizePath } from "@intlayer/config";
4
5
  import { mkdir } from "node:fs/promises";
5
6
  import { relative, resolve } from "node:path";
6
- import { colorizePath, getConfiguration, normalizePath } from "@intlayer/config";
7
7
  import { getPerLocaleDictionary } from "@intlayer/core";
8
8
 
9
9
  //#region src/buildIntlayerDictionary/writeDynamicDictionary.ts
@@ -1,8 +1,8 @@
1
1
  import { parallelize } from "../utils/parallelize.mjs";
2
2
  import { writeFileIfChanged } from "../writeFileIfChanged.mjs";
3
+ import { colorizePath, getConfiguration, normalizePath } from "@intlayer/config";
3
4
  import { mkdir } from "node:fs/promises";
4
5
  import { relative, resolve } from "node:path";
5
- import { colorizePath, getConfiguration, normalizePath } from "@intlayer/config";
6
6
 
7
7
  //#region src/buildIntlayerDictionary/writeFetchDictionary.ts
8
8
  /**
@@ -1,8 +1,8 @@
1
1
  import { parallelize } from "../utils/parallelize.mjs";
2
2
  import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs";
3
+ import { colorizePath, getConfiguration } from "@intlayer/config";
3
4
  import { mkdir } from "node:fs/promises";
4
5
  import { resolve } from "node:path";
5
- import { colorizePath, getConfiguration } from "@intlayer/config";
6
6
  import { mergeDictionaries, normalizeDictionaries } from "@intlayer/core";
7
7
 
8
8
  //#region src/buildIntlayerDictionary/writeMergedDictionary.ts
@@ -3,9 +3,9 @@ import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs";
3
3
  import { filterInvalidDictionaries } from "../filterInvalidDictionaries.mjs";
4
4
  import { groupDictionariesByKey } from "./writeUnmergedDictionary.mjs";
5
5
  import { formatDistantDictionaries } from "../loadDictionaries/loadRemoteDictionaries.mjs";
6
+ import { colorizePath, getConfiguration, x } from "@intlayer/config";
6
7
  import { mkdir } from "node:fs/promises";
7
8
  import { resolve } from "node:path";
8
- import { colorizePath, getConfiguration, x } from "@intlayer/config";
9
9
  import { orderDictionaries } from "@intlayer/core";
10
10
 
11
11
  //#region src/buildIntlayerDictionary/writeRemoteDictionary.ts
@@ -1,9 +1,9 @@
1
1
  import { parallelize } from "../utils/parallelize.mjs";
2
2
  import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs";
3
3
  import { filterInvalidDictionaries } from "../filterInvalidDictionaries.mjs";
4
+ import { colorizePath, x } from "@intlayer/config";
4
5
  import { mkdir } from "node:fs/promises";
5
6
  import { resolve } from "node:path";
6
- import { colorizePath, x } from "@intlayer/config";
7
7
  import { orderDictionaries } from "@intlayer/core";
8
8
 
9
9
  //#region src/buildIntlayerDictionary/writeUnmergedDictionary.ts
@@ -1,6 +1,6 @@
1
- import { existsSync } from "node:fs";
2
1
  import { rm } from "node:fs/promises";
3
2
  import { getAppLogger } from "@intlayer/config/client";
3
+ import { existsSync } from "node:fs";
4
4
 
5
5
  //#region src/cleanOutputDir.ts
6
6
  const cleanOutputDir = async (configuration) => {