@intlayer/cli 8.4.3 → 8.4.5

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 (301) hide show
  1. package/dist/cjs/IntlayerEventListener.cjs +186 -1
  2. package/dist/cjs/IntlayerEventListener.cjs.map +1 -1
  3. package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
  4. package/dist/cjs/_virtual/_utils_asset.cjs +98 -0
  5. package/dist/cjs/auth/login.cjs +90 -2
  6. package/dist/cjs/auth/login.cjs.map +1 -1
  7. package/dist/cjs/build.cjs +30 -1
  8. package/dist/cjs/build.cjs.map +1 -1
  9. package/dist/cjs/ci.cjs +76 -1
  10. package/dist/cjs/ci.cjs.map +1 -1
  11. package/dist/cjs/cli.cjs +485 -1
  12. package/dist/cjs/cli.cjs.map +1 -1
  13. package/dist/cjs/config.cjs +15 -1
  14. package/dist/cjs/config.cjs.map +1 -1
  15. package/dist/cjs/editor.cjs +50 -1
  16. package/dist/cjs/editor.cjs.map +1 -1
  17. package/dist/cjs/extract.cjs +108 -1
  18. package/dist/cjs/extract.cjs.map +1 -1
  19. package/dist/cjs/fill/deepMergeContent.cjs +27 -1
  20. package/dist/cjs/fill/deepMergeContent.cjs.map +1 -1
  21. package/dist/cjs/fill/fill.cjs +84 -1
  22. package/dist/cjs/fill/fill.cjs.map +1 -1
  23. package/dist/cjs/fill/formatAutoFilledFilePath.cjs +32 -1
  24. package/dist/cjs/fill/formatAutoFilledFilePath.cjs.map +1 -1
  25. package/dist/cjs/fill/formatFillData.cjs +87 -1
  26. package/dist/cjs/fill/formatFillData.cjs.map +1 -1
  27. package/dist/cjs/fill/getAvailableLocalesInDictionary.cjs +26 -1
  28. package/dist/cjs/fill/getAvailableLocalesInDictionary.cjs.map +1 -1
  29. package/dist/cjs/fill/getFilterMissingContentPerLocale.cjs +51 -1
  30. package/dist/cjs/fill/getFilterMissingContentPerLocale.cjs.map +1 -1
  31. package/dist/cjs/fill/index.cjs +6 -1
  32. package/dist/cjs/fill/listTranslationsTasks.cjs +72 -1
  33. package/dist/cjs/fill/listTranslationsTasks.cjs.map +1 -1
  34. package/dist/cjs/fill/translateDictionary.cjs +240 -1
  35. package/dist/cjs/fill/translateDictionary.cjs.map +1 -1
  36. package/dist/cjs/fill/writeFill.cjs +55 -1
  37. package/dist/cjs/fill/writeFill.cjs.map +1 -1
  38. package/dist/cjs/getTargetDictionary.cjs +36 -1
  39. package/dist/cjs/getTargetDictionary.cjs.map +1 -1
  40. package/dist/cjs/index.cjs +44 -1
  41. package/dist/cjs/init.cjs +22 -1
  42. package/dist/cjs/init.cjs.map +1 -1
  43. package/dist/cjs/initMCP.cjs +69 -1
  44. package/dist/cjs/initMCP.cjs.map +1 -1
  45. package/dist/cjs/initSkills.cjs +93 -1
  46. package/dist/cjs/initSkills.cjs.map +1 -1
  47. package/dist/cjs/listContentDeclaration.cjs +42 -1
  48. package/dist/cjs/listContentDeclaration.cjs.map +1 -1
  49. package/dist/cjs/listProjects.cjs +28 -1
  50. package/dist/cjs/listProjects.cjs.map +1 -1
  51. package/dist/cjs/liveSync.cjs +153 -8
  52. package/dist/cjs/liveSync.cjs.map +1 -1
  53. package/dist/cjs/pull.cjs +153 -1
  54. package/dist/cjs/pull.cjs.map +1 -1
  55. package/dist/cjs/push/pullLog.cjs +105 -3
  56. package/dist/cjs/push/pullLog.cjs.map +1 -1
  57. package/dist/cjs/push/push.cjs +212 -1
  58. package/dist/cjs/push/push.cjs.map +1 -1
  59. package/dist/cjs/pushConfig.cjs +22 -1
  60. package/dist/cjs/pushConfig.cjs.map +1 -1
  61. package/dist/cjs/pushLog.cjs +86 -3
  62. package/dist/cjs/pushLog.cjs.map +1 -1
  63. package/dist/cjs/reviewDoc/reviewDoc.cjs +73 -1
  64. package/dist/cjs/reviewDoc/reviewDoc.cjs.map +1 -1
  65. package/dist/cjs/reviewDoc/reviewDocBlockAware.cjs +98 -1
  66. package/dist/cjs/reviewDoc/reviewDocBlockAware.cjs.map +1 -1
  67. package/dist/cjs/searchDoc.cjs +41 -1
  68. package/dist/cjs/searchDoc.cjs.map +1 -1
  69. package/dist/cjs/test/index.cjs +7 -1
  70. package/dist/cjs/test/listMissingTranslations.cjs +52 -1
  71. package/dist/cjs/test/listMissingTranslations.cjs.map +1 -1
  72. package/dist/cjs/test/test.cjs +56 -1
  73. package/dist/cjs/test/test.cjs.map +1 -1
  74. package/dist/cjs/translateDoc/index.cjs +9 -1
  75. package/dist/cjs/translateDoc/translateDoc.cjs +79 -1
  76. package/dist/cjs/translateDoc/translateDoc.cjs.map +1 -1
  77. package/dist/cjs/translateDoc/translateFile.cjs +106 -2
  78. package/dist/cjs/translateDoc/translateFile.cjs.map +1 -1
  79. package/dist/cjs/translateDoc/validation.cjs +49 -5
  80. package/dist/cjs/translateDoc/validation.cjs.map +1 -1
  81. package/dist/cjs/translation-alignment/alignBlocks.cjs +67 -1
  82. package/dist/cjs/translation-alignment/alignBlocks.cjs.map +1 -1
  83. package/dist/cjs/translation-alignment/computeSimilarity.cjs +25 -1
  84. package/dist/cjs/translation-alignment/computeSimilarity.cjs.map +1 -1
  85. package/dist/cjs/translation-alignment/fingerprintBlock.cjs +23 -1
  86. package/dist/cjs/translation-alignment/fingerprintBlock.cjs.map +1 -1
  87. package/dist/cjs/translation-alignment/index.cjs +22 -1
  88. package/dist/cjs/translation-alignment/mapChangedLinesToBlocks.cjs +18 -1
  89. package/dist/cjs/translation-alignment/mapChangedLinesToBlocks.cjs.map +1 -1
  90. package/dist/cjs/translation-alignment/normalizeBlock.cjs +22 -1
  91. package/dist/cjs/translation-alignment/normalizeBlock.cjs.map +1 -1
  92. package/dist/cjs/translation-alignment/pipeline.cjs +37 -1
  93. package/dist/cjs/translation-alignment/pipeline.cjs.map +1 -1
  94. package/dist/cjs/translation-alignment/planActions.cjs +46 -1
  95. package/dist/cjs/translation-alignment/planActions.cjs.map +1 -1
  96. package/dist/cjs/translation-alignment/rebuildDocument.cjs +49 -2
  97. package/dist/cjs/translation-alignment/rebuildDocument.cjs.map +1 -1
  98. package/dist/cjs/translation-alignment/segmentDocument.cjs +66 -5
  99. package/dist/cjs/translation-alignment/segmentDocument.cjs.map +1 -1
  100. package/dist/cjs/utils/calculateChunks.cjs +89 -2
  101. package/dist/cjs/utils/calculateChunks.cjs.map +1 -1
  102. package/dist/cjs/utils/checkAccess.cjs +83 -1
  103. package/dist/cjs/utils/checkAccess.cjs.map +1 -1
  104. package/dist/cjs/utils/checkConfigConsistency.cjs +16 -1
  105. package/dist/cjs/utils/checkConfigConsistency.cjs.map +1 -1
  106. package/dist/cjs/utils/checkFileModifiedRange.cjs +81 -1
  107. package/dist/cjs/utils/checkFileModifiedRange.cjs.map +1 -1
  108. package/dist/cjs/utils/checkLastUpdateTime.cjs +19 -1
  109. package/dist/cjs/utils/checkLastUpdateTime.cjs.map +1 -1
  110. package/dist/cjs/utils/chunkInference.cjs +45 -1
  111. package/dist/cjs/utils/chunkInference.cjs.map +1 -1
  112. package/dist/cjs/utils/fixChunkStartEndChars.cjs +27 -3
  113. package/dist/cjs/utils/fixChunkStartEndChars.cjs.map +1 -1
  114. package/dist/cjs/utils/formatTimeDiff.cjs +20 -1
  115. package/dist/cjs/utils/formatTimeDiff.cjs.map +1 -1
  116. package/dist/cjs/utils/getIsFileUpdatedRecently.cjs +16 -1
  117. package/dist/cjs/utils/getIsFileUpdatedRecently.cjs.map +1 -1
  118. package/dist/cjs/utils/getOutputFilePath.cjs +74 -1
  119. package/dist/cjs/utils/getOutputFilePath.cjs.map +1 -1
  120. package/dist/cjs/utils/getParentPackageJSON.cjs +20 -1
  121. package/dist/cjs/utils/getParentPackageJSON.cjs.map +1 -1
  122. package/dist/cjs/utils/listSpecialChars.cjs +54 -2
  123. package/dist/cjs/utils/listSpecialChars.cjs.map +1 -1
  124. package/dist/cjs/utils/mapChunksBetweenFiles.cjs +102 -1
  125. package/dist/cjs/utils/mapChunksBetweenFiles.cjs.map +1 -1
  126. package/dist/cjs/utils/openBrowser.cjs +19 -1
  127. package/dist/cjs/utils/openBrowser.cjs.map +1 -1
  128. package/dist/cjs/utils/reorderParagraphs.cjs +91 -3
  129. package/dist/cjs/utils/reorderParagraphs.cjs.map +1 -1
  130. package/dist/cjs/utils/setupAI.cjs +66 -1
  131. package/dist/cjs/utils/setupAI.cjs.map +1 -1
  132. package/dist/cjs/watch.cjs +47 -1
  133. package/dist/cjs/watch.cjs.map +1 -1
  134. package/dist/esm/IntlayerEventListener.mjs +183 -1
  135. package/dist/esm/IntlayerEventListener.mjs.map +1 -1
  136. package/dist/esm/_virtual/_rolldown/runtime.mjs +8 -0
  137. package/dist/esm/_virtual/_utils_asset.mjs +97 -0
  138. package/dist/esm/auth/login.mjs +86 -2
  139. package/dist/esm/auth/login.mjs.map +1 -1
  140. package/dist/esm/build.mjs +28 -1
  141. package/dist/esm/build.mjs.map +1 -1
  142. package/dist/esm/ci.mjs +74 -1
  143. package/dist/esm/ci.mjs.map +1 -1
  144. package/dist/esm/cli.mjs +482 -1
  145. package/dist/esm/cli.mjs.map +1 -1
  146. package/dist/esm/config.mjs +13 -1
  147. package/dist/esm/config.mjs.map +1 -1
  148. package/dist/esm/editor.mjs +50 -1
  149. package/dist/esm/editor.mjs.map +1 -0
  150. package/dist/esm/extract.mjs +104 -1
  151. package/dist/esm/extract.mjs.map +1 -1
  152. package/dist/esm/fill/deepMergeContent.mjs +25 -1
  153. package/dist/esm/fill/deepMergeContent.mjs.map +1 -1
  154. package/dist/esm/fill/fill.mjs +81 -1
  155. package/dist/esm/fill/fill.mjs.map +1 -1
  156. package/dist/esm/fill/formatAutoFilledFilePath.mjs +30 -1
  157. package/dist/esm/fill/formatAutoFilledFilePath.mjs.map +1 -1
  158. package/dist/esm/fill/formatFillData.mjs +85 -1
  159. package/dist/esm/fill/formatFillData.mjs.map +1 -1
  160. package/dist/esm/fill/getAvailableLocalesInDictionary.mjs +24 -1
  161. package/dist/esm/fill/getAvailableLocalesInDictionary.mjs.map +1 -1
  162. package/dist/esm/fill/getFilterMissingContentPerLocale.mjs +49 -1
  163. package/dist/esm/fill/getFilterMissingContentPerLocale.mjs.map +1 -1
  164. package/dist/esm/fill/index.mjs +4 -1
  165. package/dist/esm/fill/listTranslationsTasks.mjs +69 -1
  166. package/dist/esm/fill/listTranslationsTasks.mjs.map +1 -1
  167. package/dist/esm/fill/translateDictionary.mjs +237 -1
  168. package/dist/esm/fill/translateDictionary.mjs.map +1 -1
  169. package/dist/esm/fill/writeFill.mjs +53 -1
  170. package/dist/esm/fill/writeFill.mjs.map +1 -1
  171. package/dist/esm/getTargetDictionary.mjs +33 -1
  172. package/dist/esm/getTargetDictionary.mjs.map +1 -1
  173. package/dist/esm/index.mjs +20 -1
  174. package/dist/esm/init.mjs +19 -1
  175. package/dist/esm/init.mjs.map +1 -1
  176. package/dist/esm/initMCP.mjs +65 -1
  177. package/dist/esm/initMCP.mjs.map +1 -1
  178. package/dist/esm/initSkills.mjs +87 -1
  179. package/dist/esm/initSkills.mjs.map +1 -1
  180. package/dist/esm/listContentDeclaration.mjs +39 -1
  181. package/dist/esm/listContentDeclaration.mjs.map +1 -1
  182. package/dist/esm/listProjects.mjs +26 -1
  183. package/dist/esm/listProjects.mjs.map +1 -1
  184. package/dist/esm/liveSync.mjs +150 -8
  185. package/dist/esm/liveSync.mjs.map +1 -1
  186. package/dist/esm/pull.mjs +150 -1
  187. package/dist/esm/pull.mjs.map +1 -1
  188. package/dist/esm/push/pullLog.mjs +102 -3
  189. package/dist/esm/push/pullLog.mjs.map +1 -1
  190. package/dist/esm/push/push.mjs +208 -1
  191. package/dist/esm/push/push.mjs.map +1 -1
  192. package/dist/esm/pushConfig.mjs +20 -1
  193. package/dist/esm/pushConfig.mjs.map +1 -1
  194. package/dist/esm/pushLog.mjs +83 -3
  195. package/dist/esm/pushLog.mjs.map +1 -1
  196. package/dist/esm/reviewDoc/reviewDoc.mjs +69 -1
  197. package/dist/esm/reviewDoc/reviewDoc.mjs.map +1 -1
  198. package/dist/esm/reviewDoc/reviewDocBlockAware.mjs +95 -1
  199. package/dist/esm/reviewDoc/reviewDocBlockAware.mjs.map +1 -1
  200. package/dist/esm/searchDoc.mjs +39 -1
  201. package/dist/esm/searchDoc.mjs.map +1 -1
  202. package/dist/esm/test/index.mjs +4 -1
  203. package/dist/esm/test/listMissingTranslations.mjs +49 -1
  204. package/dist/esm/test/listMissingTranslations.mjs.map +1 -1
  205. package/dist/esm/test/test.mjs +53 -1
  206. package/dist/esm/test/test.mjs.map +1 -1
  207. package/dist/esm/translateDoc/index.mjs +5 -1
  208. package/dist/esm/translateDoc/translateDoc.mjs +75 -1
  209. package/dist/esm/translateDoc/translateDoc.mjs.map +1 -1
  210. package/dist/esm/translateDoc/translateFile.mjs +103 -2
  211. package/dist/esm/translateDoc/translateFile.mjs.map +1 -1
  212. package/dist/esm/translateDoc/validation.mjs +46 -5
  213. package/dist/esm/translateDoc/validation.mjs.map +1 -1
  214. package/dist/esm/translation-alignment/alignBlocks.mjs +66 -1
  215. package/dist/esm/translation-alignment/alignBlocks.mjs.map +1 -1
  216. package/dist/esm/translation-alignment/computeSimilarity.mjs +22 -1
  217. package/dist/esm/translation-alignment/computeSimilarity.mjs.map +1 -1
  218. package/dist/esm/translation-alignment/fingerprintBlock.mjs +20 -1
  219. package/dist/esm/translation-alignment/fingerprintBlock.mjs.map +1 -1
  220. package/dist/esm/translation-alignment/index.mjs +11 -1
  221. package/dist/esm/translation-alignment/mapChangedLinesToBlocks.mjs +16 -1
  222. package/dist/esm/translation-alignment/mapChangedLinesToBlocks.mjs.map +1 -1
  223. package/dist/esm/translation-alignment/normalizeBlock.mjs +20 -1
  224. package/dist/esm/translation-alignment/normalizeBlock.mjs.map +1 -1
  225. package/dist/esm/translation-alignment/pipeline.mjs +35 -1
  226. package/dist/esm/translation-alignment/pipeline.mjs.map +1 -1
  227. package/dist/esm/translation-alignment/planActions.mjs +44 -1
  228. package/dist/esm/translation-alignment/planActions.mjs.map +1 -1
  229. package/dist/esm/translation-alignment/rebuildDocument.mjs +46 -2
  230. package/dist/esm/translation-alignment/rebuildDocument.mjs.map +1 -1
  231. package/dist/esm/translation-alignment/segmentDocument.mjs +64 -5
  232. package/dist/esm/translation-alignment/segmentDocument.mjs.map +1 -1
  233. package/dist/esm/utils/calculateChunks.mjs +87 -2
  234. package/dist/esm/utils/calculateChunks.mjs.map +1 -1
  235. package/dist/esm/utils/checkAccess.mjs +79 -1
  236. package/dist/esm/utils/checkAccess.mjs.map +1 -1
  237. package/dist/esm/utils/checkConfigConsistency.mjs +14 -1
  238. package/dist/esm/utils/checkConfigConsistency.mjs.map +1 -1
  239. package/dist/esm/utils/checkFileModifiedRange.mjs +80 -1
  240. package/dist/esm/utils/checkFileModifiedRange.mjs.map +1 -1
  241. package/dist/esm/utils/checkLastUpdateTime.mjs +17 -1
  242. package/dist/esm/utils/checkLastUpdateTime.mjs.map +1 -1
  243. package/dist/esm/utils/chunkInference.mjs +43 -1
  244. package/dist/esm/utils/chunkInference.mjs.map +1 -1
  245. package/dist/esm/utils/fixChunkStartEndChars.mjs +25 -3
  246. package/dist/esm/utils/fixChunkStartEndChars.mjs.map +1 -1
  247. package/dist/esm/utils/formatTimeDiff.mjs +18 -1
  248. package/dist/esm/utils/formatTimeDiff.mjs.map +1 -1
  249. package/dist/esm/utils/getIsFileUpdatedRecently.mjs +14 -1
  250. package/dist/esm/utils/getIsFileUpdatedRecently.mjs.map +1 -1
  251. package/dist/esm/utils/getOutputFilePath.mjs +72 -1
  252. package/dist/esm/utils/getOutputFilePath.mjs.map +1 -1
  253. package/dist/esm/utils/getParentPackageJSON.mjs +18 -1
  254. package/dist/esm/utils/getParentPackageJSON.mjs.map +1 -1
  255. package/dist/esm/utils/listSpecialChars.mjs +52 -2
  256. package/dist/esm/utils/listSpecialChars.mjs.map +1 -1
  257. package/dist/esm/utils/mapChunksBetweenFiles.mjs +100 -1
  258. package/dist/esm/utils/mapChunksBetweenFiles.mjs.map +1 -1
  259. package/dist/esm/utils/openBrowser.mjs +17 -1
  260. package/dist/esm/utils/openBrowser.mjs.map +1 -1
  261. package/dist/esm/utils/reorderParagraphs.mjs +90 -3
  262. package/dist/esm/utils/reorderParagraphs.mjs.map +1 -1
  263. package/dist/esm/utils/setupAI.mjs +63 -1
  264. package/dist/esm/utils/setupAI.mjs.map +1 -1
  265. package/dist/esm/watch.mjs +45 -1
  266. package/dist/esm/watch.mjs.map +1 -1
  267. package/dist/types/fill/fill.d.ts +1 -1
  268. package/dist/types/fill/translateDictionary.d.ts +1 -1
  269. package/dist/types/getTargetDictionary.d.ts +19 -2
  270. package/dist/types/getTargetDictionary.d.ts.map +1 -0
  271. package/dist/types/index.d.ts +2 -2
  272. package/dist/types/reviewDoc/reviewDocBlockAware.d.ts +1 -1
  273. package/dist/types/test/index.d.ts +2 -2
  274. package/dist/types/test/listMissingTranslations.d.ts +28 -2
  275. package/dist/types/test/listMissingTranslations.d.ts.map +1 -0
  276. package/dist/types/test/test.d.ts +11 -2
  277. package/dist/types/test/test.d.ts.map +1 -0
  278. package/dist/types/translateDoc/index.d.ts +1 -1
  279. package/dist/types/translateDoc/translateDoc.d.ts +1 -1
  280. package/dist/types/translateDoc/translateFile.d.ts +1 -1
  281. package/dist/types/translateDoc/types.d.ts +48 -2
  282. package/dist/types/translateDoc/types.d.ts.map +1 -0
  283. package/dist/types/utils/chunkInference.d.ts +1 -1
  284. package/dist/types/utils/setupAI.d.ts +21 -2
  285. package/dist/types/utils/setupAI.d.ts.map +1 -0
  286. package/package.json +12 -12
  287. package/dist/cjs/_utils_asset-ghp_Cjwk.cjs +0 -2
  288. package/dist/cjs/chunk-Bmb41Sf3.cjs +0 -1
  289. package/dist/esm/_utils_asset-B187VPMw.mjs +0 -2
  290. package/dist/esm/editor-D8BGlLzF.mjs +0 -2
  291. package/dist/esm/editor-D8BGlLzF.mjs.map +0 -1
  292. package/dist/types/getTargetDictionary-RBSRtaQj.d.ts +0 -19
  293. package/dist/types/getTargetDictionary-RBSRtaQj.d.ts.map +0 -1
  294. package/dist/types/listMissingTranslations-DxKw7nqI.d.ts +0 -28
  295. package/dist/types/listMissingTranslations-DxKw7nqI.d.ts.map +0 -1
  296. package/dist/types/setupAI-Bosjx7ah.d.ts +0 -21
  297. package/dist/types/setupAI-Bosjx7ah.d.ts.map +0 -1
  298. package/dist/types/test-DUTiJR5_.d.ts +0 -11
  299. package/dist/types/test-DUTiJR5_.d.ts.map +0 -1
  300. package/dist/types/types-BKvc3FmV.d.ts +0 -48
  301. package/dist/types/types-BKvc3FmV.d.ts.map +0 -1
@@ -1,4 +1,61 @@
1
- import{openBrowser as e}from"../utils/openBrowser.mjs";import{logConfigDetails as t}from"@intlayer/chokidar/cli";import*as n from"@intlayer/config/colors";import{colorize as r,colorizePath as i,getAppLogger as a}from"@intlayer/config/logger";import{getConfiguration as o}from"@intlayer/config/node";import s from"node:http";import{URL as c}from"node:url";const l=async l=>{let u=o(l.configOptions);t(l?.configOptions);let d=a(u),f=l.cmsUrl??u.editor.cmsURL;return new Promise(t=>{let a=s.createServer((e,o)=>{let s=new c(e.url??``,`http://${e.headers.host}`);if(o.setHeader(`Access-Control-Allow-Origin`,`*`),o.setHeader(`Access-Control-Allow-Methods`,`GET, OPTIONS`),o.setHeader(`Access-Control-Allow-Headers`,`Content-Type`),e.method===`OPTIONS`){o.writeHead(204),o.end();return}if(s.pathname===`/callback`){let e=s.searchParams.get(`clientId`),c=s.searchParams.get(`clientSecret`);e&&c?(d(``),d(`Log in successful. Client ID and Client Secret received.`),d(``),d([`1. Insert the Client ID and Client Secret in your`,i(`.env`),`file:`]),d(r(`--------------------------------`,n.GREY_DARK)),d([r(`INTLAYER_CLIENT_ID=`,n.GREY_LIGHT),r(e,n.BLUE)].join(``)),d([r(`INTLAYER_CLIENT_SECRET=`,n.GREY_LIGHT),r(c,n.BLUE)].join(``)),d(r(`--------------------------------`,n.GREY_DARK)),d(``),d(`2. Insert in your Intlayer configuration file:`),d(r(`--------------------------------`,n.GREY_DARK)),[`${n.GREY_LIGHT}{`,` editor: {`,` cmsURL: '${i(f,void 0,n.GREY_LIGHT)}',`,` clientId: '${r(`process.env.INTLAYER_CLIENT_ID`,n.BLUE,n.GREY_LIGHT)}',`,` clientSecret: '${r(`process.env.INTLAYER_CLIENT_SECRET`,n.BLUE,n.GREY_LIGHT)}',`,` },`,`}`].forEach(e=>{d(e)}),d(r(`--------------------------------`,n.GREY_DARK)),o.writeHead(200,{"Content-Type":`text/html`}),o.end(`
1
+ import { openBrowser } from "../utils/openBrowser.mjs";
2
+ import { logConfigDetails } from "@intlayer/chokidar/cli";
3
+ import * as ANSIColors from "@intlayer/config/colors";
4
+ import { colorize, colorizePath, getAppLogger } from "@intlayer/config/logger";
5
+ import { getConfiguration } from "@intlayer/config/node";
6
+ import http from "node:http";
7
+ import { URL } from "node:url";
8
+
9
+ //#region src/auth/login.ts
10
+ const login = async (options) => {
11
+ const configuration = getConfiguration(options.configOptions);
12
+ logConfigDetails(options?.configOptions);
13
+ const logger = getAppLogger(configuration);
14
+ const cmsUrl = options.cmsUrl ?? configuration.editor.cmsURL;
15
+ return new Promise((resolve) => {
16
+ const server = http.createServer((req, res) => {
17
+ const url = new URL(req.url ?? "", `http://${req.headers.host}`);
18
+ res.setHeader("Access-Control-Allow-Origin", "*");
19
+ res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
20
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type");
21
+ if (req.method === "OPTIONS") {
22
+ res.writeHead(204);
23
+ res.end();
24
+ return;
25
+ }
26
+ if (url.pathname === "/callback") {
27
+ const clientId = url.searchParams.get("clientId");
28
+ const clientSecret = url.searchParams.get("clientSecret");
29
+ if (clientId && clientSecret) {
30
+ logger("");
31
+ logger("Log in successful. Client ID and Client Secret received.");
32
+ logger("");
33
+ logger([
34
+ "1. Insert the Client ID and Client Secret in your",
35
+ colorizePath(".env"),
36
+ "file:"
37
+ ]);
38
+ logger(colorize("--------------------------------", ANSIColors.GREY_DARK));
39
+ logger([colorize("INTLAYER_CLIENT_ID=", ANSIColors.GREY_LIGHT), colorize(clientId, ANSIColors.BLUE)].join(""));
40
+ logger([colorize("INTLAYER_CLIENT_SECRET=", ANSIColors.GREY_LIGHT), colorize(clientSecret, ANSIColors.BLUE)].join(""));
41
+ logger(colorize("--------------------------------", ANSIColors.GREY_DARK));
42
+ logger("");
43
+ logger("2. Insert in your Intlayer configuration file:");
44
+ logger(colorize("--------------------------------", ANSIColors.GREY_DARK));
45
+ [
46
+ `${ANSIColors.GREY_LIGHT}{`,
47
+ ` editor: {`,
48
+ ` cmsURL: '${colorizePath(cmsUrl, void 0, ANSIColors.GREY_LIGHT)}',`,
49
+ ` clientId: '${colorize("process.env.INTLAYER_CLIENT_ID", ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,
50
+ ` clientSecret: '${colorize("process.env.INTLAYER_CLIENT_SECRET", ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,
51
+ ` },`,
52
+ `}`
53
+ ].forEach((line) => {
54
+ logger(line);
55
+ });
56
+ logger(colorize("--------------------------------", ANSIColors.GREY_DARK));
57
+ res.writeHead(200, { "Content-Type": "text/html" });
58
+ res.end(`
2
59
  <!DOCTYPE html>
3
60
  <html lang="en" data-theme="dark">
4
61
  <head>
@@ -70,5 +127,32 @@ import{openBrowser as e}from"../utils/openBrowser.mjs";import{logConfigDetails a
70
127
  <\/script>
71
128
  </body>
72
129
  </html>
73
- `),a.close(()=>{t(),process.exit(0)})):(o.writeHead(400,{"Content-Type":`text/plain`}),o.end(`Missing parameters`))}else o.writeHead(404,{"Content-Type":`text/plain`}),o.end(`Not found`)});a.listen(0,()=>{let t=a.address(),n=typeof t==`object`&&t?t.port:0,r=Math.random().toString(36).substring(7),o=`${f??process.env.INTLAYER_SITE_URL??`http://localhost:3000`}/en/auth/cli-login?port=${n}&state=${r}`;d(`Opening browser for login...`),d(`If browser does not open, visit: ${i(o)}`),e(o)})})};export{l as login};
130
+ `);
131
+ server.close(() => {
132
+ resolve();
133
+ process.exit(0);
134
+ });
135
+ } else {
136
+ res.writeHead(400, { "Content-Type": "text/plain" });
137
+ res.end("Missing parameters");
138
+ }
139
+ } else {
140
+ res.writeHead(404, { "Content-Type": "text/plain" });
141
+ res.end("Not found");
142
+ }
143
+ });
144
+ server.listen(0, () => {
145
+ const address = server.address();
146
+ const port = typeof address === "object" && address ? address.port : 0;
147
+ const state = Math.random().toString(36).substring(7);
148
+ const loginUrl = `${cmsUrl ?? process.env.INTLAYER_SITE_URL ?? "http://localhost:3000"}/en/auth/cli-login?port=${port}&state=${state}`;
149
+ logger("Opening browser for login...");
150
+ logger(`If browser does not open, visit: ${colorizePath(loginUrl)}`);
151
+ openBrowser(loginUrl);
152
+ });
153
+ });
154
+ };
155
+
156
+ //#endregion
157
+ export { login };
74
158
  //# sourceMappingURL=login.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.mjs","names":[],"sources":["../../../src/auth/login.ts"],"sourcesContent":["import http from 'node:http';\nimport { URL } from 'node:url';\nimport { logConfigDetails } from '@intlayer/chokidar/cli';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, colorizePath, getAppLogger } from '@intlayer/config/logger';\nimport {\n type GetConfigurationOptions,\n getConfiguration,\n} from '@intlayer/config/node';\nimport { openBrowser } from '../utils/openBrowser';\n\ntype LoginOptions = {\n cmsUrl?: string;\n configOptions?: GetConfigurationOptions;\n};\n\nexport const login = async (options: LoginOptions) => {\n const configuration = getConfiguration(options.configOptions);\n logConfigDetails(options?.configOptions);\n\n const logger = getAppLogger(configuration);\n\n const cmsUrl = options.cmsUrl ?? configuration.editor.cmsURL;\n\n return new Promise<void>((resolve) => {\n const server = http.createServer((req, res) => {\n const url = new URL(req.url ?? '', `http://${req.headers.host}`);\n\n // Set CORS headers\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type');\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204);\n res.end();\n return;\n }\n\n if (url.pathname === '/callback') {\n const clientId = url.searchParams.get('clientId');\n const clientSecret = url.searchParams.get('clientSecret');\n\n if (clientId && clientSecret) {\n logger('');\n logger('Log in successful. Client ID and Client Secret received.');\n\n logger('');\n logger([\n '1. Insert the Client ID and Client Secret in your',\n colorizePath('.env'),\n 'file:',\n ]);\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n logger(\n [\n colorize('INTLAYER_CLIENT_ID=', ANSIColors.GREY_LIGHT),\n colorize(clientId, ANSIColors.BLUE),\n ].join('')\n );\n logger(\n [\n colorize('INTLAYER_CLIENT_SECRET=', ANSIColors.GREY_LIGHT),\n colorize(clientSecret, ANSIColors.BLUE),\n ].join('')\n );\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n logger('');\n logger('2. Insert in your Intlayer configuration file:');\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n [\n `${ANSIColors.GREY_LIGHT}{`,\n ` editor: {`,\n ` cmsURL: '${colorizePath(cmsUrl, undefined, ANSIColors.GREY_LIGHT)}',`,\n ` clientId: '${colorize('process.env.INTLAYER_CLIENT_ID', ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,\n ` clientSecret: '${colorize('process.env.INTLAYER_CLIENT_SECRET', ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,\n ` },`,\n `}`,\n ].forEach((line) => {\n logger(line);\n });\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n\n res.writeHead(200, { 'Content-Type': 'text/html' });\n res.end(`\n <!DOCTYPE html>\n <html lang=\"en\" data-theme=\"dark\">\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Intlayer CLI Login</title>\n <style>\n :root {\n --color-background: rgba(23, 23, 23);\n --color-card: rgba(39, 39, 39);\n --color-text: rgba(255, 245, 237);\n --color-neutral: rgba(93, 93, 93);\n --font-sans: \"Inter\", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n }\n \n * {\n box-sizing: border-box;\n }\n \n body {\n font-family: var(--font-sans);\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n margin: 0;\n padding: 1rem;\n background-color: var(--color-background);\n color: var(--color-text);\n }\n \n .container {\n text-align: center;\n padding: 2rem;\n border-radius: 1rem;\n background-color: var(--color-card);\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n max-width: 400px;\n width: 100%;\n }\n \n h1 {\n margin: 0 0 1rem 0;\n font-size: 1.5rem;\n font-weight: 700;\n color: var(--color-text);\n }\n \n p {\n color: var(--color-neutral);\n margin: 0 0 1.5rem 0;\n line-height: 1.5;\n }\n </style>\n </head>\n <body>\n <div class=\"container\">\n <h1>Login Successful</h1>\n <p>You have successfully logged in to Intlayer CLI. You can now close this tab and return to your terminal.</p>\n </div>\n <script>\n // Attempt to close the window\n window.close();\n \n // Fallback: if window.close() doesn't work, show a message\n setTimeout(() => {\n window.close();\n }, 1000);\n </script>\n </body>\n </html>\n `);\n\n server.close(() => {\n resolve();\n process.exit(0);\n });\n } else {\n res.writeHead(400, { 'Content-Type': 'text/plain' });\n res.end('Missing parameters');\n }\n } else {\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not found');\n }\n });\n\n server.listen(0, () => {\n const address = server.address();\n const port = typeof address === 'object' && address ? address.port : 0;\n const state = Math.random().toString(36).substring(7);\n\n const websiteUrl =\n cmsUrl ?? process.env.INTLAYER_SITE_URL ?? 'http://localhost:3000';\n const loginUrl = `${websiteUrl}/en/auth/cli-login?port=${port}&state=${state}`;\n\n logger('Opening browser for login...');\n logger(`If browser does not open, visit: ${colorizePath(loginUrl)}`);\n\n openBrowser(loginUrl);\n });\n });\n};\n"],"mappings":"mWAgBA,MAAa,EAAQ,KAAO,IAA0B,CACpD,IAAM,EAAgB,EAAiB,EAAQ,cAAc,CAC7D,EAAiB,GAAS,cAAc,CAExC,IAAM,EAAS,EAAa,EAAc,CAEpC,EAAS,EAAQ,QAAU,EAAc,OAAO,OAEtD,OAAO,IAAI,QAAe,GAAY,CACpC,IAAM,EAAS,EAAK,cAAc,EAAK,IAAQ,CAC7C,IAAM,EAAM,IAAI,EAAI,EAAI,KAAO,GAAI,UAAU,EAAI,QAAQ,OAAO,CAOhE,GAJA,EAAI,UAAU,8BAA+B,IAAI,CACjD,EAAI,UAAU,+BAAgC,eAAe,CAC7D,EAAI,UAAU,+BAAgC,eAAe,CAEzD,EAAI,SAAW,UAAW,CAC5B,EAAI,UAAU,IAAI,CAClB,EAAI,KAAK,CACT,OAGF,GAAI,EAAI,WAAa,YAAa,CAChC,IAAM,EAAW,EAAI,aAAa,IAAI,WAAW,CAC3C,EAAe,EAAI,aAAa,IAAI,eAAe,CAErD,GAAY,GACd,EAAO,GAAG,CACV,EAAO,2DAA2D,CAElE,EAAO,GAAG,CACV,EAAO,CACL,oDACA,EAAa,OAAO,CACpB,QACD,CAAC,CACF,EACE,EAAS,mCAAoC,EAAW,UAAU,CACnE,CACD,EACE,CACE,EAAS,sBAAuB,EAAW,WAAW,CACtD,EAAS,EAAU,EAAW,KAAK,CACpC,CAAC,KAAK,GAAG,CACX,CACD,EACE,CACE,EAAS,0BAA2B,EAAW,WAAW,CAC1D,EAAS,EAAc,EAAW,KAAK,CACxC,CAAC,KAAK,GAAG,CACX,CACD,EACE,EAAS,mCAAoC,EAAW,UAAU,CACnE,CACD,EAAO,GAAG,CACV,EAAO,iDAAiD,CACxD,EACE,EAAS,mCAAoC,EAAW,UAAU,CACnE,CACD,CACE,GAAG,EAAW,WAAW,GACzB,cACA,iBAAiB,EAAa,EAAQ,IAAA,GAAW,EAAW,WAAW,CAAC,IACxE,mBAAmB,EAAS,iCAAkC,EAAW,KAAM,EAAW,WAAW,CAAC,IACtG,uBAAuB,EAAS,qCAAsC,EAAW,KAAM,EAAW,WAAW,CAAC,IAC9G,OACA,IACD,CAAC,QAAS,GAAS,CAClB,EAAO,EAAK,EACZ,CACF,EACE,EAAS,mCAAoC,EAAW,UAAU,CACnE,CAED,EAAI,UAAU,IAAK,CAAE,eAAgB,YAAa,CAAC,CACnD,EAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwEN,CAEF,EAAO,UAAY,CACjB,GAAS,CACT,QAAQ,KAAK,EAAE,EACf,GAEF,EAAI,UAAU,IAAK,CAAE,eAAgB,aAAc,CAAC,CACpD,EAAI,IAAI,qBAAqB,OAG/B,EAAI,UAAU,IAAK,CAAE,eAAgB,aAAc,CAAC,CACpD,EAAI,IAAI,YAAY,EAEtB,CAEF,EAAO,OAAO,MAAS,CACrB,IAAM,EAAU,EAAO,SAAS,CAC1B,EAAO,OAAO,GAAY,UAAY,EAAU,EAAQ,KAAO,EAC/D,EAAQ,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,UAAU,EAAE,CAI/C,EAAW,GADf,GAAU,QAAQ,IAAI,mBAAqB,wBACd,0BAA0B,EAAK,SAAS,IAEvE,EAAO,+BAA+B,CACtC,EAAO,oCAAoC,EAAa,EAAS,GAAG,CAEpE,EAAY,EAAS,EACrB,EACF"}
1
+ {"version":3,"file":"login.mjs","names":[],"sources":["../../../src/auth/login.ts"],"sourcesContent":["import http from 'node:http';\nimport { URL } from 'node:url';\nimport { logConfigDetails } from '@intlayer/chokidar/cli';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, colorizePath, getAppLogger } from '@intlayer/config/logger';\nimport {\n type GetConfigurationOptions,\n getConfiguration,\n} from '@intlayer/config/node';\nimport { openBrowser } from '../utils/openBrowser';\n\ntype LoginOptions = {\n cmsUrl?: string;\n configOptions?: GetConfigurationOptions;\n};\n\nexport const login = async (options: LoginOptions) => {\n const configuration = getConfiguration(options.configOptions);\n logConfigDetails(options?.configOptions);\n\n const logger = getAppLogger(configuration);\n\n const cmsUrl = options.cmsUrl ?? configuration.editor.cmsURL;\n\n return new Promise<void>((resolve) => {\n const server = http.createServer((req, res) => {\n const url = new URL(req.url ?? '', `http://${req.headers.host}`);\n\n // Set CORS headers\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type');\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204);\n res.end();\n return;\n }\n\n if (url.pathname === '/callback') {\n const clientId = url.searchParams.get('clientId');\n const clientSecret = url.searchParams.get('clientSecret');\n\n if (clientId && clientSecret) {\n logger('');\n logger('Log in successful. Client ID and Client Secret received.');\n\n logger('');\n logger([\n '1. Insert the Client ID and Client Secret in your',\n colorizePath('.env'),\n 'file:',\n ]);\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n logger(\n [\n colorize('INTLAYER_CLIENT_ID=', ANSIColors.GREY_LIGHT),\n colorize(clientId, ANSIColors.BLUE),\n ].join('')\n );\n logger(\n [\n colorize('INTLAYER_CLIENT_SECRET=', ANSIColors.GREY_LIGHT),\n colorize(clientSecret, ANSIColors.BLUE),\n ].join('')\n );\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n logger('');\n logger('2. Insert in your Intlayer configuration file:');\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n [\n `${ANSIColors.GREY_LIGHT}{`,\n ` editor: {`,\n ` cmsURL: '${colorizePath(cmsUrl, undefined, ANSIColors.GREY_LIGHT)}',`,\n ` clientId: '${colorize('process.env.INTLAYER_CLIENT_ID', ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,\n ` clientSecret: '${colorize('process.env.INTLAYER_CLIENT_SECRET', ANSIColors.BLUE, ANSIColors.GREY_LIGHT)}',`,\n ` },`,\n `}`,\n ].forEach((line) => {\n logger(line);\n });\n logger(\n colorize('--------------------------------', ANSIColors.GREY_DARK)\n );\n\n res.writeHead(200, { 'Content-Type': 'text/html' });\n res.end(`\n <!DOCTYPE html>\n <html lang=\"en\" data-theme=\"dark\">\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Intlayer CLI Login</title>\n <style>\n :root {\n --color-background: rgba(23, 23, 23);\n --color-card: rgba(39, 39, 39);\n --color-text: rgba(255, 245, 237);\n --color-neutral: rgba(93, 93, 93);\n --font-sans: \"Inter\", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n }\n \n * {\n box-sizing: border-box;\n }\n \n body {\n font-family: var(--font-sans);\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n margin: 0;\n padding: 1rem;\n background-color: var(--color-background);\n color: var(--color-text);\n }\n \n .container {\n text-align: center;\n padding: 2rem;\n border-radius: 1rem;\n background-color: var(--color-card);\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n max-width: 400px;\n width: 100%;\n }\n \n h1 {\n margin: 0 0 1rem 0;\n font-size: 1.5rem;\n font-weight: 700;\n color: var(--color-text);\n }\n \n p {\n color: var(--color-neutral);\n margin: 0 0 1.5rem 0;\n line-height: 1.5;\n }\n </style>\n </head>\n <body>\n <div class=\"container\">\n <h1>Login Successful</h1>\n <p>You have successfully logged in to Intlayer CLI. You can now close this tab and return to your terminal.</p>\n </div>\n <script>\n // Attempt to close the window\n window.close();\n \n // Fallback: if window.close() doesn't work, show a message\n setTimeout(() => {\n window.close();\n }, 1000);\n </script>\n </body>\n </html>\n `);\n\n server.close(() => {\n resolve();\n process.exit(0);\n });\n } else {\n res.writeHead(400, { 'Content-Type': 'text/plain' });\n res.end('Missing parameters');\n }\n } else {\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not found');\n }\n });\n\n server.listen(0, () => {\n const address = server.address();\n const port = typeof address === 'object' && address ? address.port : 0;\n const state = Math.random().toString(36).substring(7);\n\n const websiteUrl =\n cmsUrl ?? process.env.INTLAYER_SITE_URL ?? 'http://localhost:3000';\n const loginUrl = `${websiteUrl}/en/auth/cli-login?port=${port}&state=${state}`;\n\n logger('Opening browser for login...');\n logger(`If browser does not open, visit: ${colorizePath(loginUrl)}`);\n\n openBrowser(loginUrl);\n });\n });\n};\n"],"mappings":";;;;;;;;;AAgBA,MAAa,QAAQ,OAAO,YAA0B;CACpD,MAAM,gBAAgB,iBAAiB,QAAQ,cAAc;AAC7D,kBAAiB,SAAS,cAAc;CAExC,MAAM,SAAS,aAAa,cAAc;CAE1C,MAAM,SAAS,QAAQ,UAAU,cAAc,OAAO;AAEtD,QAAO,IAAI,SAAe,YAAY;EACpC,MAAM,SAAS,KAAK,cAAc,KAAK,QAAQ;GAC7C,MAAM,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,OAAO;AAGhE,OAAI,UAAU,+BAA+B,IAAI;AACjD,OAAI,UAAU,gCAAgC,eAAe;AAC7D,OAAI,UAAU,gCAAgC,eAAe;AAE7D,OAAI,IAAI,WAAW,WAAW;AAC5B,QAAI,UAAU,IAAI;AAClB,QAAI,KAAK;AACT;;AAGF,OAAI,IAAI,aAAa,aAAa;IAChC,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;IACjD,MAAM,eAAe,IAAI,aAAa,IAAI,eAAe;AAEzD,QAAI,YAAY,cAAc;AAC5B,YAAO,GAAG;AACV,YAAO,2DAA2D;AAElE,YAAO,GAAG;AACV,YAAO;MACL;MACA,aAAa,OAAO;MACpB;MACD,CAAC;AACF,YACE,SAAS,oCAAoC,WAAW,UAAU,CACnE;AACD,YACE,CACE,SAAS,uBAAuB,WAAW,WAAW,EACtD,SAAS,UAAU,WAAW,KAAK,CACpC,CAAC,KAAK,GAAG,CACX;AACD,YACE,CACE,SAAS,2BAA2B,WAAW,WAAW,EAC1D,SAAS,cAAc,WAAW,KAAK,CACxC,CAAC,KAAK,GAAG,CACX;AACD,YACE,SAAS,oCAAoC,WAAW,UAAU,CACnE;AACD,YAAO,GAAG;AACV,YAAO,iDAAiD;AACxD,YACE,SAAS,oCAAoC,WAAW,UAAU,CACnE;AACD;MACE,GAAG,WAAW,WAAW;MACzB;MACA,iBAAiB,aAAa,QAAQ,QAAW,WAAW,WAAW,CAAC;MACxE,mBAAmB,SAAS,kCAAkC,WAAW,MAAM,WAAW,WAAW,CAAC;MACtG,uBAAuB,SAAS,sCAAsC,WAAW,MAAM,WAAW,WAAW,CAAC;MAC9G;MACA;MACD,CAAC,SAAS,SAAS;AAClB,aAAO,KAAK;OACZ;AACF,YACE,SAAS,oCAAoC,WAAW,UAAU,CACnE;AAED,SAAI,UAAU,KAAK,EAAE,gBAAgB,aAAa,CAAC;AACnD,SAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwEN;AAEF,YAAO,YAAY;AACjB,eAAS;AACT,cAAQ,KAAK,EAAE;OACf;WACG;AACL,SAAI,UAAU,KAAK,EAAE,gBAAgB,cAAc,CAAC;AACpD,SAAI,IAAI,qBAAqB;;UAE1B;AACL,QAAI,UAAU,KAAK,EAAE,gBAAgB,cAAc,CAAC;AACpD,QAAI,IAAI,YAAY;;IAEtB;AAEF,SAAO,OAAO,SAAS;GACrB,MAAM,UAAU,OAAO,SAAS;GAChC,MAAM,OAAO,OAAO,YAAY,YAAY,UAAU,QAAQ,OAAO;GACrE,MAAM,QAAQ,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,UAAU,EAAE;GAIrD,MAAM,WAAW,GADf,UAAU,QAAQ,IAAI,qBAAqB,wBACd,0BAA0B,KAAK,SAAS;AAEvE,UAAO,+BAA+B;AACtC,UAAO,oCAAoC,aAAa,SAAS,GAAG;AAEpE,eAAY,SAAS;IACrB;GACF"}
@@ -1,2 +1,29 @@
1
- import{logConfigDetails as e}from"@intlayer/chokidar/cli";import{runParallel as t}from"@intlayer/chokidar/utils";import{getConfiguration as n}from"@intlayer/config/node";import{buildAndWatchIntlayer as r}from"@intlayer/chokidar/watcher";const i=async i=>{let a=n(i?.configOptions);e(i?.configOptions);let o=null;i?.with&&(o=t(i.with),o.result.catch(()=>{})),await r({persistent:i?.watch??!1,skipPrepare:i?.skipPrepare??!1,configuration:a}),!i?.watch&&o&&o.kill()};export{i as build};
1
+ import { logConfigDetails } from "@intlayer/chokidar/cli";
2
+ import { runParallel } from "@intlayer/chokidar/utils";
3
+ import { getConfiguration } from "@intlayer/config/node";
4
+ import { buildAndWatchIntlayer } from "@intlayer/chokidar/watcher";
5
+
6
+ //#region src/build.ts
7
+ /**
8
+ * Get locales dictionaries .content.{json|ts|tsx|js|jsx|mjs|cjs} and build the JSON dictionaries in the .intlayer directory.
9
+ * Watch mode available to get the change in the .content.{json|ts|tsx|js|jsx|mjs|cjs}
10
+ */
11
+ const build = async (options) => {
12
+ const config = getConfiguration(options?.configOptions);
13
+ logConfigDetails(options?.configOptions);
14
+ let parallelProcess = null;
15
+ if (options?.with) {
16
+ parallelProcess = runParallel(options.with);
17
+ parallelProcess.result.catch(() => {});
18
+ }
19
+ await buildAndWatchIntlayer({
20
+ persistent: options?.watch ?? false,
21
+ skipPrepare: options?.skipPrepare ?? false,
22
+ configuration: config
23
+ });
24
+ if (!options?.watch && parallelProcess) parallelProcess.kill();
25
+ };
26
+
27
+ //#endregion
28
+ export { build };
2
29
  //# sourceMappingURL=build.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.mjs","names":[],"sources":["../../src/build.ts"],"sourcesContent":["import { logConfigDetails } from '@intlayer/chokidar/cli';\nimport { type ParallelHandle, runParallel } from '@intlayer/chokidar/utils';\nimport { buildAndWatchIntlayer } from '@intlayer/chokidar/watcher';\nimport {\n type GetConfigurationOptions,\n getConfiguration,\n} from '@intlayer/config/node';\n\ntype BuildOptions = {\n watch?: boolean;\n skipPrepare?: boolean;\n with?: string | string[];\n configOptions?: GetConfigurationOptions;\n};\n\n/**\n * Get locales dictionaries .content.{json|ts|tsx|js|jsx|mjs|cjs} and build the JSON dictionaries in the .intlayer directory.\n * Watch mode available to get the change in the .content.{json|ts|tsx|js|jsx|mjs|cjs}\n */\nexport const build = async (options?: BuildOptions) => {\n const config = getConfiguration(options?.configOptions);\n logConfigDetails(options?.configOptions);\n\n let parallelProcess: ParallelHandle | null = null;\n\n if (options?.with) {\n parallelProcess = runParallel(options.with);\n // Handle the promise to avoid unhandled rejection\n parallelProcess.result.catch(() => {\n // Parallel process failed or was terminated\n });\n }\n\n await buildAndWatchIntlayer({\n persistent: options?.watch ?? false,\n skipPrepare: options?.skipPrepare ?? false,\n configuration: config,\n });\n\n if (!options?.watch && parallelProcess) {\n parallelProcess.kill();\n }\n};\n"],"mappings":"6OAmBA,MAAa,EAAQ,KAAO,IAA2B,CACrD,IAAM,EAAS,EAAiB,GAAS,cAAc,CACvD,EAAiB,GAAS,cAAc,CAExC,IAAI,EAAyC,KAEzC,GAAS,OACX,EAAkB,EAAY,EAAQ,KAAK,CAE3C,EAAgB,OAAO,UAAY,GAEjC,EAGJ,MAAM,EAAsB,CAC1B,WAAY,GAAS,OAAS,GAC9B,YAAa,GAAS,aAAe,GACrC,cAAe,EAChB,CAAC,CAEE,CAAC,GAAS,OAAS,GACrB,EAAgB,MAAM"}
1
+ {"version":3,"file":"build.mjs","names":[],"sources":["../../src/build.ts"],"sourcesContent":["import { logConfigDetails } from '@intlayer/chokidar/cli';\nimport { type ParallelHandle, runParallel } from '@intlayer/chokidar/utils';\nimport { buildAndWatchIntlayer } from '@intlayer/chokidar/watcher';\nimport {\n type GetConfigurationOptions,\n getConfiguration,\n} from '@intlayer/config/node';\n\ntype BuildOptions = {\n watch?: boolean;\n skipPrepare?: boolean;\n with?: string | string[];\n configOptions?: GetConfigurationOptions;\n};\n\n/**\n * Get locales dictionaries .content.{json|ts|tsx|js|jsx|mjs|cjs} and build the JSON dictionaries in the .intlayer directory.\n * Watch mode available to get the change in the .content.{json|ts|tsx|js|jsx|mjs|cjs}\n */\nexport const build = async (options?: BuildOptions) => {\n const config = getConfiguration(options?.configOptions);\n logConfigDetails(options?.configOptions);\n\n let parallelProcess: ParallelHandle | null = null;\n\n if (options?.with) {\n parallelProcess = runParallel(options.with);\n // Handle the promise to avoid unhandled rejection\n parallelProcess.result.catch(() => {\n // Parallel process failed or was terminated\n });\n }\n\n await buildAndWatchIntlayer({\n persistent: options?.watch ?? false,\n skipPrepare: options?.skipPrepare ?? false,\n configuration: config,\n });\n\n if (!options?.watch && parallelProcess) {\n parallelProcess.kill();\n }\n};\n"],"mappings":";;;;;;;;;;AAmBA,MAAa,QAAQ,OAAO,YAA2B;CACrD,MAAM,SAAS,iBAAiB,SAAS,cAAc;AACvD,kBAAiB,SAAS,cAAc;CAExC,IAAI,kBAAyC;AAE7C,KAAI,SAAS,MAAM;AACjB,oBAAkB,YAAY,QAAQ,KAAK;AAE3C,kBAAgB,OAAO,YAAY,GAEjC;;AAGJ,OAAM,sBAAsB;EAC1B,YAAY,SAAS,SAAS;EAC9B,aAAa,SAAS,eAAe;EACrC,eAAe;EAChB,CAAC;AAEF,KAAI,CAAC,SAAS,SAAS,gBACrB,iBAAgB,MAAM"}
package/dist/esm/ci.mjs CHANGED
@@ -1,2 +1,75 @@
1
- import{normalize as e,resolve as t}from"node:path";import{listProjects as n}from"@intlayer/chokidar/cli";import{logger as r}from"@intlayer/config/logger";import{spawnSync as i}from"node:child_process";const a=()=>{let e=process.env.npm_config_user_agent;return e?.startsWith(`bun`)?{command:`bun`,args:[`intlayer`]}:e?.startsWith(`pnpm`)?{command:`pnpm`,args:[`exec`,`intlayer`]}:e?.startsWith(`yarn`)?{command:`yarn`,args:[`run`,`intlayer`]}:{command:`npx`,args:[`intlayer`]}},o=async o=>{let s=process.env.INTLAYER_PROJECT_CREDENTIALS,c={};if(s)try{c=JSON.parse(s)}catch{r(`INTLAYER_PROJECT_CREDENTIALS is not valid JSON. Proceeding without credentials.`,{level:`warn`})}let l=process.cwd(),{projectsPath:u}=await n();if(u.length===0){r(`No Intlayer projects found.`,{level:`warn`});return}let d=u.find(e=>l===e),f=d?[d]:u,{command:p,args:m}=a(),h=[...m,...o];r(`CI: Using package manager: ${p}`,{level:`info`,isVerbose:!0}),r(d?`CI: Detected project context: ${d}`:`CI: No specific project context detected. Iterating over ${f.length} discovered projects...`,{level:`info`});let g=!1;for(let n of f){let a=Object.entries(c).find(([r])=>t(r)===n||n.endsWith(e(r)))?.[1];r(`\nCI: Executing for ${n}...`,{level:`info`});let o={...process.env};a?(o.INTLAYER_CLIENT_ID=a.clientId,o.INTLAYER_CLIENT_SECRET=a.clientSecret):s&&r(`CI: No matching credentials found for ${n} in INTLAYER_PROJECT_CREDENTIALS.`,{isVerbose:!0}),i(p,h,{cwd:n,stdio:`inherit`,env:o}).status!==0&&(r(`CI: Failed for ${n}`,{level:`error`}),g=!0)}g&&process.exit(1)};export{o as runCI};
1
+ import { normalize, resolve } from "node:path";
2
+ import { listProjects } from "@intlayer/chokidar/cli";
3
+ import { logger } from "@intlayer/config/logger";
4
+ import { spawnSync } from "node:child_process";
5
+
6
+ //#region src/ci.ts
7
+ const getPackageManagerCommand = () => {
8
+ const userAgent = process.env.npm_config_user_agent;
9
+ if (userAgent?.startsWith("bun")) return {
10
+ command: "bun",
11
+ args: ["intlayer"]
12
+ };
13
+ if (userAgent?.startsWith("pnpm")) return {
14
+ command: "pnpm",
15
+ args: ["exec", "intlayer"]
16
+ };
17
+ if (userAgent?.startsWith("yarn")) return {
18
+ command: "yarn",
19
+ args: ["run", "intlayer"]
20
+ };
21
+ return {
22
+ command: "npx",
23
+ args: ["intlayer"]
24
+ };
25
+ };
26
+ const runCI = async (commands) => {
27
+ const credentialsEnv = process.env.INTLAYER_PROJECT_CREDENTIALS;
28
+ let credentials = {};
29
+ if (credentialsEnv) try {
30
+ credentials = JSON.parse(credentialsEnv);
31
+ } catch {
32
+ logger("INTLAYER_PROJECT_CREDENTIALS is not valid JSON. Proceeding without credentials.", { level: "warn" });
33
+ }
34
+ const cwd = process.cwd();
35
+ const { projectsPath } = await listProjects();
36
+ if (projectsPath.length === 0) {
37
+ logger("No Intlayer projects found.", { level: "warn" });
38
+ return;
39
+ }
40
+ const currentProject = projectsPath.find((p) => cwd === p);
41
+ const projectsToRun = currentProject ? [currentProject] : projectsPath;
42
+ const { command, args: pmArgs } = getPackageManagerCommand();
43
+ const finalArgs = [...pmArgs, ...commands];
44
+ logger(`CI: Using package manager: ${command}`, {
45
+ level: "info",
46
+ isVerbose: true
47
+ });
48
+ if (currentProject) logger(`CI: Detected project context: ${currentProject}`, { level: "info" });
49
+ else logger(`CI: No specific project context detected. Iterating over ${projectsToRun.length} discovered projects...`, { level: "info" });
50
+ let hasError = false;
51
+ for (const projectPath of projectsToRun) {
52
+ const creds = Object.entries(credentials).find(([key]) => {
53
+ return resolve(key) === projectPath || projectPath.endsWith(normalize(key));
54
+ })?.[1];
55
+ logger(`\nCI: Executing for ${projectPath}...`, { level: "info" });
56
+ const envVars = { ...process.env };
57
+ if (creds) {
58
+ envVars.INTLAYER_CLIENT_ID = creds.clientId;
59
+ envVars.INTLAYER_CLIENT_SECRET = creds.clientSecret;
60
+ } else if (credentialsEnv) logger(`CI: No matching credentials found for ${projectPath} in INTLAYER_PROJECT_CREDENTIALS.`, { isVerbose: true });
61
+ if (spawnSync(command, finalArgs, {
62
+ cwd: projectPath,
63
+ stdio: "inherit",
64
+ env: envVars
65
+ }).status !== 0) {
66
+ logger(`CI: Failed for ${projectPath}`, { level: "error" });
67
+ hasError = true;
68
+ }
69
+ }
70
+ if (hasError) process.exit(1);
71
+ };
72
+
73
+ //#endregion
74
+ export { runCI };
2
75
  //# sourceMappingURL=ci.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ci.mjs","names":[],"sources":["../../src/ci.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { normalize, resolve } from 'node:path';\nimport { listProjects } from '@intlayer/chokidar/cli';\nimport { logger } from '@intlayer/config/logger';\n\n// Helper to detect the package manager used to run the command\nconst getPackageManagerCommand = () => {\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent?.startsWith('bun')) {\n return { command: 'bun', args: ['intlayer'] }; // Bun runs local bins natively\n }\n if (userAgent?.startsWith('pnpm')) {\n return { command: 'pnpm', args: ['exec', 'intlayer'] }; // pnpm requires 'exec'\n }\n if (userAgent?.startsWith('yarn')) {\n return { command: 'yarn', args: ['run', 'intlayer'] }; // yarn requires 'run' or 'exec'\n }\n\n // Default fallback\n return { command: 'npx', args: ['intlayer'] };\n};\n\nexport const runCI = async (commands: string[]) => {\n const credentialsEnv = process.env.INTLAYER_PROJECT_CREDENTIALS;\n let credentials: Record<string, { clientId: string; clientSecret: string }> =\n {};\n\n // Parse Credentials (Optional now)\n if (credentialsEnv) {\n try {\n credentials = JSON.parse(credentialsEnv);\n } catch {\n logger(\n 'INTLAYER_PROJECT_CREDENTIALS is not valid JSON. Proceeding without credentials.',\n {\n level: 'warn',\n }\n );\n }\n }\n\n const cwd = process.cwd();\n\n // Discover Projects\n const { projectsPath } = await listProjects();\n\n if (projectsPath.length === 0) {\n logger('No Intlayer projects found.', { level: 'warn' });\n return;\n }\n\n // 3. Determine Context: Single Project vs All Projects\n // Check if the current directory matches one of the discovered project paths\n const currentProject = projectsPath.find((p) => cwd === p);\n const projectsToRun = currentProject ? [currentProject] : projectsPath;\n\n const { command, args: pmArgs } = getPackageManagerCommand();\n const finalArgs = [...pmArgs, ...commands];\n\n logger(`CI: Using package manager: ${command}`, {\n level: 'info',\n isVerbose: true,\n });\n\n if (currentProject) {\n logger(`CI: Detected project context: ${currentProject}`, {\n level: 'info',\n });\n } else {\n logger(\n `CI: No specific project context detected. Iterating over ${projectsToRun.length} discovered projects...`,\n {\n level: 'info',\n }\n );\n }\n\n let hasError = false;\n\n // Iterate and Execute\n for (const projectPath of projectsToRun) {\n // Attempt to match credentials to the project path\n // We check if the key (relative or absolute) matches the resolved project path\n const credsEntry = Object.entries(credentials).find(([key]) => {\n const absKey = resolve(key);\n return absKey === projectPath || projectPath.endsWith(normalize(key));\n });\n\n const creds = credsEntry?.[1];\n\n logger(`\\nCI: Executing for ${projectPath}...`, {\n level: 'info',\n });\n\n const envVars = { ...process.env };\n\n if (creds) {\n envVars.INTLAYER_CLIENT_ID = creds.clientId;\n envVars.INTLAYER_CLIENT_SECRET = creds.clientSecret;\n } else if (credentialsEnv) {\n logger(\n `CI: No matching credentials found for ${projectPath} in INTLAYER_PROJECT_CREDENTIALS.`,\n { isVerbose: true }\n );\n }\n\n const result = spawnSync(command, finalArgs, {\n cwd: projectPath,\n stdio: 'inherit',\n env: envVars,\n });\n\n if (result.status !== 0) {\n logger(`CI: Failed for ${projectPath}`, {\n level: 'error',\n });\n hasError = true;\n }\n }\n\n if (hasError) process.exit(1);\n};\n"],"mappings":"yMAMA,MAAM,MAAiC,CACrC,IAAM,EAAY,QAAQ,IAAI,sBAa9B,OAXI,GAAW,WAAW,MAAM,CACvB,CAAE,QAAS,MAAO,KAAM,CAAC,WAAW,CAAE,CAE3C,GAAW,WAAW,OAAO,CACxB,CAAE,QAAS,OAAQ,KAAM,CAAC,OAAQ,WAAW,CAAE,CAEpD,GAAW,WAAW,OAAO,CACxB,CAAE,QAAS,OAAQ,KAAM,CAAC,MAAO,WAAW,CAAE,CAIhD,CAAE,QAAS,MAAO,KAAM,CAAC,WAAW,CAAE,EAGlC,EAAQ,KAAO,IAAuB,CACjD,IAAM,EAAiB,QAAQ,IAAI,6BAC/B,EACF,EAAE,CAGJ,GAAI,EACF,GAAI,CACF,EAAc,KAAK,MAAM,EAAe,MAClC,CACN,EACE,kFACA,CACE,MAAO,OACR,CACF,CAIL,IAAM,EAAM,QAAQ,KAAK,CAGnB,CAAE,gBAAiB,MAAM,GAAc,CAE7C,GAAI,EAAa,SAAW,EAAG,CAC7B,EAAO,8BAA+B,CAAE,MAAO,OAAQ,CAAC,CACxD,OAKF,IAAM,EAAiB,EAAa,KAAM,GAAM,IAAQ,EAAE,CACpD,EAAgB,EAAiB,CAAC,EAAe,CAAG,EAEpD,CAAE,UAAS,KAAM,GAAW,GAA0B,CACtD,EAAY,CAAC,GAAG,EAAQ,GAAG,EAAS,CAE1C,EAAO,8BAA8B,IAAW,CAC9C,MAAO,OACP,UAAW,GACZ,CAAC,CAGA,EADE,EACK,iCAAiC,IAKtC,4DAA4D,EAAc,OAAO,yBALzB,CACxD,MAAO,OACR,CAOA,CAGH,IAAI,EAAW,GAGf,IAAK,IAAM,KAAe,EAAe,CAQvC,IAAM,EALa,OAAO,QAAQ,EAAY,CAAC,MAAM,CAAC,KACrC,EAAQ,EAAI,GACT,GAAe,EAAY,SAAS,EAAU,EAAI,CAAC,CACrE,GAEyB,GAE3B,EAAO,uBAAuB,EAAY,KAAM,CAC9C,MAAO,OACR,CAAC,CAEF,IAAM,EAAU,CAAE,GAAG,QAAQ,IAAK,CAE9B,GACF,EAAQ,mBAAqB,EAAM,SACnC,EAAQ,uBAAyB,EAAM,cAC9B,GACT,EACE,yCAAyC,EAAY,mCACrD,CAAE,UAAW,GAAM,CACpB,CAGY,EAAU,EAAS,EAAW,CAC3C,IAAK,EACL,MAAO,UACP,IAAK,EACN,CAAC,CAES,SAAW,IACpB,EAAO,kBAAkB,IAAe,CACtC,MAAO,QACR,CAAC,CACF,EAAW,IAIX,GAAU,QAAQ,KAAK,EAAE"}
1
+ {"version":3,"file":"ci.mjs","names":[],"sources":["../../src/ci.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { normalize, resolve } from 'node:path';\nimport { listProjects } from '@intlayer/chokidar/cli';\nimport { logger } from '@intlayer/config/logger';\n\n// Helper to detect the package manager used to run the command\nconst getPackageManagerCommand = () => {\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent?.startsWith('bun')) {\n return { command: 'bun', args: ['intlayer'] }; // Bun runs local bins natively\n }\n if (userAgent?.startsWith('pnpm')) {\n return { command: 'pnpm', args: ['exec', 'intlayer'] }; // pnpm requires 'exec'\n }\n if (userAgent?.startsWith('yarn')) {\n return { command: 'yarn', args: ['run', 'intlayer'] }; // yarn requires 'run' or 'exec'\n }\n\n // Default fallback\n return { command: 'npx', args: ['intlayer'] };\n};\n\nexport const runCI = async (commands: string[]) => {\n const credentialsEnv = process.env.INTLAYER_PROJECT_CREDENTIALS;\n let credentials: Record<string, { clientId: string; clientSecret: string }> =\n {};\n\n // Parse Credentials (Optional now)\n if (credentialsEnv) {\n try {\n credentials = JSON.parse(credentialsEnv);\n } catch {\n logger(\n 'INTLAYER_PROJECT_CREDENTIALS is not valid JSON. Proceeding without credentials.',\n {\n level: 'warn',\n }\n );\n }\n }\n\n const cwd = process.cwd();\n\n // Discover Projects\n const { projectsPath } = await listProjects();\n\n if (projectsPath.length === 0) {\n logger('No Intlayer projects found.', { level: 'warn' });\n return;\n }\n\n // 3. Determine Context: Single Project vs All Projects\n // Check if the current directory matches one of the discovered project paths\n const currentProject = projectsPath.find((p) => cwd === p);\n const projectsToRun = currentProject ? [currentProject] : projectsPath;\n\n const { command, args: pmArgs } = getPackageManagerCommand();\n const finalArgs = [...pmArgs, ...commands];\n\n logger(`CI: Using package manager: ${command}`, {\n level: 'info',\n isVerbose: true,\n });\n\n if (currentProject) {\n logger(`CI: Detected project context: ${currentProject}`, {\n level: 'info',\n });\n } else {\n logger(\n `CI: No specific project context detected. Iterating over ${projectsToRun.length} discovered projects...`,\n {\n level: 'info',\n }\n );\n }\n\n let hasError = false;\n\n // Iterate and Execute\n for (const projectPath of projectsToRun) {\n // Attempt to match credentials to the project path\n // We check if the key (relative or absolute) matches the resolved project path\n const credsEntry = Object.entries(credentials).find(([key]) => {\n const absKey = resolve(key);\n return absKey === projectPath || projectPath.endsWith(normalize(key));\n });\n\n const creds = credsEntry?.[1];\n\n logger(`\\nCI: Executing for ${projectPath}...`, {\n level: 'info',\n });\n\n const envVars = { ...process.env };\n\n if (creds) {\n envVars.INTLAYER_CLIENT_ID = creds.clientId;\n envVars.INTLAYER_CLIENT_SECRET = creds.clientSecret;\n } else if (credentialsEnv) {\n logger(\n `CI: No matching credentials found for ${projectPath} in INTLAYER_PROJECT_CREDENTIALS.`,\n { isVerbose: true }\n );\n }\n\n const result = spawnSync(command, finalArgs, {\n cwd: projectPath,\n stdio: 'inherit',\n env: envVars,\n });\n\n if (result.status !== 0) {\n logger(`CI: Failed for ${projectPath}`, {\n level: 'error',\n });\n hasError = true;\n }\n }\n\n if (hasError) process.exit(1);\n};\n"],"mappings":";;;;;;AAMA,MAAM,iCAAiC;CACrC,MAAM,YAAY,QAAQ,IAAI;AAE9B,KAAI,WAAW,WAAW,MAAM,CAC9B,QAAO;EAAE,SAAS;EAAO,MAAM,CAAC,WAAW;EAAE;AAE/C,KAAI,WAAW,WAAW,OAAO,CAC/B,QAAO;EAAE,SAAS;EAAQ,MAAM,CAAC,QAAQ,WAAW;EAAE;AAExD,KAAI,WAAW,WAAW,OAAO,CAC/B,QAAO;EAAE,SAAS;EAAQ,MAAM,CAAC,OAAO,WAAW;EAAE;AAIvD,QAAO;EAAE,SAAS;EAAO,MAAM,CAAC,WAAW;EAAE;;AAG/C,MAAa,QAAQ,OAAO,aAAuB;CACjD,MAAM,iBAAiB,QAAQ,IAAI;CACnC,IAAI,cACF,EAAE;AAGJ,KAAI,eACF,KAAI;AACF,gBAAc,KAAK,MAAM,eAAe;SAClC;AACN,SACE,mFACA,EACE,OAAO,QACR,CACF;;CAIL,MAAM,MAAM,QAAQ,KAAK;CAGzB,MAAM,EAAE,iBAAiB,MAAM,cAAc;AAE7C,KAAI,aAAa,WAAW,GAAG;AAC7B,SAAO,+BAA+B,EAAE,OAAO,QAAQ,CAAC;AACxD;;CAKF,MAAM,iBAAiB,aAAa,MAAM,MAAM,QAAQ,EAAE;CAC1D,MAAM,gBAAgB,iBAAiB,CAAC,eAAe,GAAG;CAE1D,MAAM,EAAE,SAAS,MAAM,WAAW,0BAA0B;CAC5D,MAAM,YAAY,CAAC,GAAG,QAAQ,GAAG,SAAS;AAE1C,QAAO,8BAA8B,WAAW;EAC9C,OAAO;EACP,WAAW;EACZ,CAAC;AAEF,KAAI,eACF,QAAO,iCAAiC,kBAAkB,EACxD,OAAO,QACR,CAAC;KAEF,QACE,4DAA4D,cAAc,OAAO,0BACjF,EACE,OAAO,QACR,CACF;CAGH,IAAI,WAAW;AAGf,MAAK,MAAM,eAAe,eAAe;EAQvC,MAAM,QALa,OAAO,QAAQ,YAAY,CAAC,MAAM,CAAC,SAAS;AAE7D,UADe,QAAQ,IAAI,KACT,eAAe,YAAY,SAAS,UAAU,IAAI,CAAC;IACrE,GAEyB;AAE3B,SAAO,uBAAuB,YAAY,MAAM,EAC9C,OAAO,QACR,CAAC;EAEF,MAAM,UAAU,EAAE,GAAG,QAAQ,KAAK;AAElC,MAAI,OAAO;AACT,WAAQ,qBAAqB,MAAM;AACnC,WAAQ,yBAAyB,MAAM;aAC9B,eACT,QACE,yCAAyC,YAAY,oCACrD,EAAE,WAAW,MAAM,CACpB;AASH,MANe,UAAU,SAAS,WAAW;GAC3C,KAAK;GACL,OAAO;GACP,KAAK;GACN,CAAC,CAES,WAAW,GAAG;AACvB,UAAO,kBAAkB,eAAe,EACtC,OAAO,SACR,CAAC;AACF,cAAW;;;AAIf,KAAI,SAAU,SAAQ,KAAK,EAAE"}