@strapi/cloud-cli 5.12.1 → 5.12.3

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 (323) hide show
  1. package/dist/bin.d.ts.map +1 -0
  2. package/dist/bin.js +5 -18
  3. package/dist/bin.js.map +1 -1
  4. package/dist/bin.mjs +3 -16
  5. package/dist/bin.mjs.map +1 -1
  6. package/dist/cloud/command.d.ts.map +1 -0
  7. package/dist/cloud/command.js +14 -0
  8. package/dist/cloud/command.js.map +1 -0
  9. package/dist/cloud/command.mjs +12 -0
  10. package/dist/cloud/command.mjs.map +1 -0
  11. package/dist/config/api.d.ts.map +1 -0
  12. package/dist/config/api.js +11 -0
  13. package/dist/config/api.js.map +1 -0
  14. package/dist/config/api.mjs +9 -0
  15. package/dist/config/api.mjs.map +1 -0
  16. package/dist/config/local.d.ts.map +1 -0
  17. package/dist/config/local.js +60 -0
  18. package/dist/config/local.js.map +1 -0
  19. package/dist/config/local.mjs +55 -0
  20. package/dist/config/local.mjs.map +1 -0
  21. package/dist/create-project/action.d.ts.map +1 -0
  22. package/dist/create-project/action.js +95 -0
  23. package/dist/create-project/action.js.map +1 -0
  24. package/dist/create-project/action.mjs +93 -0
  25. package/dist/create-project/action.mjs.map +1 -0
  26. package/dist/create-project/command.d.ts.map +1 -0
  27. package/dist/create-project/command.js +14 -0
  28. package/dist/create-project/command.js.map +1 -0
  29. package/dist/create-project/command.mjs +12 -0
  30. package/dist/create-project/command.mjs.map +1 -0
  31. package/dist/create-project/index.d.ts.map +1 -0
  32. package/dist/create-project/index.js +18 -0
  33. package/dist/create-project/index.js.map +1 -0
  34. package/dist/create-project/index.mjs +12 -0
  35. package/dist/create-project/index.mjs.map +1 -0
  36. package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
  37. package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
  38. package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
  39. package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
  40. package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
  41. package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
  42. package/dist/create-project/utils/project-questions.utils.js +63 -0
  43. package/dist/create-project/utils/project-questions.utils.js.map +1 -0
  44. package/dist/create-project/utils/project-questions.utils.mjs +59 -0
  45. package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
  46. package/dist/deploy-project/action.d.ts.map +1 -0
  47. package/dist/deploy-project/action.js +287 -0
  48. package/dist/deploy-project/action.js.map +1 -0
  49. package/dist/deploy-project/action.mjs +266 -0
  50. package/dist/deploy-project/action.mjs.map +1 -0
  51. package/dist/deploy-project/command.d.ts.map +1 -0
  52. package/dist/deploy-project/command.js +14 -0
  53. package/dist/deploy-project/command.js.map +1 -0
  54. package/dist/deploy-project/command.mjs +12 -0
  55. package/dist/deploy-project/command.mjs.map +1 -0
  56. package/dist/deploy-project/index.d.ts.map +1 -0
  57. package/dist/deploy-project/index.js +18 -0
  58. package/dist/deploy-project/index.js.map +1 -0
  59. package/dist/deploy-project/index.mjs +12 -0
  60. package/dist/deploy-project/index.mjs.map +1 -0
  61. package/dist/environment/command.d.ts.map +1 -0
  62. package/dist/environment/command.js +15 -0
  63. package/dist/environment/command.js.map +1 -0
  64. package/dist/environment/command.mjs +13 -0
  65. package/dist/environment/command.mjs.map +1 -0
  66. package/dist/environment/link/action.d.ts.map +1 -0
  67. package/dist/environment/link/action.js +117 -0
  68. package/dist/environment/link/action.js.map +1 -0
  69. package/dist/environment/link/action.mjs +115 -0
  70. package/dist/environment/link/action.mjs.map +1 -0
  71. package/dist/environment/link/command.d.ts.map +1 -0
  72. package/dist/environment/link/command.js +13 -0
  73. package/dist/environment/link/command.js.map +1 -0
  74. package/dist/environment/link/command.mjs +11 -0
  75. package/dist/environment/link/command.mjs.map +1 -0
  76. package/dist/environment/link/index.d.ts.map +1 -0
  77. package/dist/environment/link/index.js +18 -0
  78. package/dist/environment/link/index.js.map +1 -0
  79. package/dist/environment/link/index.mjs +12 -0
  80. package/dist/environment/link/index.mjs.map +1 -0
  81. package/dist/environment/list/action.d.ts.map +1 -0
  82. package/dist/environment/list/action.js +57 -0
  83. package/dist/environment/list/action.js.map +1 -0
  84. package/dist/environment/list/action.mjs +55 -0
  85. package/dist/environment/list/action.mjs.map +1 -0
  86. package/dist/environment/list/command.d.ts.map +1 -0
  87. package/dist/environment/list/command.js +13 -0
  88. package/dist/environment/list/command.js.map +1 -0
  89. package/dist/environment/list/command.mjs +11 -0
  90. package/dist/environment/list/command.mjs.map +1 -0
  91. package/dist/environment/list/index.d.ts.map +1 -0
  92. package/dist/environment/list/index.js +18 -0
  93. package/dist/environment/list/index.js.map +1 -0
  94. package/dist/environment/list/index.mjs +12 -0
  95. package/dist/environment/list/index.mjs.map +1 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +59 -29
  98. package/dist/index.js.map +1 -1
  99. package/dist/index.mjs +60 -25
  100. package/dist/index.mjs.map +1 -1
  101. package/dist/link/action.d.ts.map +1 -0
  102. package/dist/link/action.js +146 -0
  103. package/dist/link/action.js.map +1 -0
  104. package/dist/link/action.mjs +144 -0
  105. package/dist/link/action.mjs.map +1 -0
  106. package/dist/link/command.d.ts.map +1 -0
  107. package/dist/link/command.js +13 -0
  108. package/dist/link/command.js.map +1 -0
  109. package/dist/link/command.mjs +11 -0
  110. package/dist/link/command.mjs.map +1 -0
  111. package/dist/link/index.d.ts.map +1 -0
  112. package/dist/link/index.js +18 -0
  113. package/dist/link/index.js.map +1 -0
  114. package/dist/link/index.mjs +12 -0
  115. package/dist/link/index.mjs.map +1 -0
  116. package/dist/list-projects/action.d.ts.map +1 -0
  117. package/dist/list-projects/action.js +34 -0
  118. package/dist/list-projects/action.js.map +1 -0
  119. package/dist/list-projects/action.mjs +32 -0
  120. package/dist/list-projects/action.mjs.map +1 -0
  121. package/dist/list-projects/command.d.ts.map +1 -0
  122. package/dist/list-projects/command.js +13 -0
  123. package/dist/list-projects/command.js.map +1 -0
  124. package/dist/list-projects/command.mjs +11 -0
  125. package/dist/list-projects/command.mjs.map +1 -0
  126. package/dist/list-projects/index.d.ts.map +1 -0
  127. package/dist/list-projects/index.js +18 -0
  128. package/dist/list-projects/index.js.map +1 -0
  129. package/dist/list-projects/index.mjs +12 -0
  130. package/dist/list-projects/index.mjs.map +1 -0
  131. package/dist/login/action.d.ts.map +1 -0
  132. package/dist/login/action.js +177 -0
  133. package/dist/login/action.js.map +1 -0
  134. package/dist/login/action.mjs +172 -0
  135. package/dist/login/action.mjs.map +1 -0
  136. package/dist/login/command.d.ts.map +1 -0
  137. package/dist/login/command.js +14 -0
  138. package/dist/login/command.js.map +1 -0
  139. package/dist/login/command.mjs +12 -0
  140. package/dist/login/command.mjs.map +1 -0
  141. package/dist/login/index.d.ts.map +1 -0
  142. package/dist/login/index.js +18 -0
  143. package/dist/login/index.js.map +1 -0
  144. package/dist/login/index.mjs +12 -0
  145. package/dist/login/index.mjs.map +1 -0
  146. package/dist/logout/action.d.ts.map +1 -0
  147. package/dist/logout/action.js +46 -0
  148. package/dist/logout/action.js.map +1 -0
  149. package/dist/logout/action.mjs +44 -0
  150. package/dist/logout/action.mjs.map +1 -0
  151. package/dist/logout/command.d.ts.map +1 -0
  152. package/dist/logout/command.js +14 -0
  153. package/dist/logout/command.js.map +1 -0
  154. package/dist/logout/command.mjs +12 -0
  155. package/dist/logout/command.mjs.map +1 -0
  156. package/dist/logout/index.d.ts.map +1 -0
  157. package/dist/logout/index.js +18 -0
  158. package/dist/logout/index.js.map +1 -0
  159. package/dist/logout/index.mjs +12 -0
  160. package/dist/logout/index.mjs.map +1 -0
  161. package/dist/package.json.js +129 -0
  162. package/dist/package.json.js.map +1 -0
  163. package/dist/package.json.mjs +105 -0
  164. package/dist/package.json.mjs.map +1 -0
  165. package/dist/services/build-logs.d.ts.map +1 -0
  166. package/dist/services/build-logs.js +67 -0
  167. package/dist/services/build-logs.js.map +1 -0
  168. package/dist/services/build-logs.mjs +65 -0
  169. package/dist/services/build-logs.mjs.map +1 -0
  170. package/dist/services/cli-api.d.ts.map +1 -0
  171. package/dist/services/cli-api.js +146 -0
  172. package/dist/services/cli-api.js.map +1 -0
  173. package/dist/services/cli-api.mjs +143 -0
  174. package/dist/services/cli-api.mjs.map +1 -0
  175. package/dist/services/index.d.ts.map +1 -0
  176. package/dist/services/index.js +14 -0
  177. package/dist/services/index.js.map +1 -0
  178. package/dist/services/index.mjs +6 -0
  179. package/dist/services/index.mjs.map +1 -0
  180. package/dist/services/logger.d.ts.map +1 -0
  181. package/dist/services/logger.js +128 -0
  182. package/dist/services/logger.js.map +1 -0
  183. package/dist/services/logger.mjs +107 -0
  184. package/dist/services/logger.mjs.map +1 -0
  185. package/dist/services/notification.d.ts.map +1 -0
  186. package/dist/services/notification.js +37 -0
  187. package/dist/services/notification.js.map +1 -0
  188. package/dist/services/notification.mjs +35 -0
  189. package/dist/services/notification.mjs.map +1 -0
  190. package/dist/services/strapi-info-save.d.ts.map +1 -0
  191. package/dist/services/strapi-info-save.js +53 -0
  192. package/dist/services/strapi-info-save.js.map +1 -0
  193. package/dist/services/strapi-info-save.mjs +47 -0
  194. package/dist/services/strapi-info-save.mjs.map +1 -0
  195. package/dist/services/token.d.ts.map +1 -0
  196. package/dist/services/token.js +126 -0
  197. package/dist/services/token.js.map +1 -0
  198. package/dist/services/token.mjs +124 -0
  199. package/dist/services/token.mjs.map +1 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/utils/analytics.d.ts.map +1 -0
  202. package/dist/utils/analytics.js +12 -0
  203. package/dist/utils/analytics.js.map +1 -0
  204. package/dist/utils/analytics.mjs +10 -0
  205. package/dist/utils/analytics.mjs.map +1 -0
  206. package/dist/utils/compress-files.d.ts.map +1 -0
  207. package/dist/utils/compress-files.js +102 -0
  208. package/dist/utils/compress-files.js.map +1 -0
  209. package/dist/utils/compress-files.mjs +78 -0
  210. package/dist/utils/compress-files.mjs.map +1 -0
  211. package/dist/utils/get-local-config.d.ts.map +1 -0
  212. package/dist/utils/get-local-config.js +37 -0
  213. package/dist/utils/get-local-config.js.map +1 -0
  214. package/dist/utils/get-local-config.mjs +34 -0
  215. package/dist/utils/get-local-config.mjs.map +1 -0
  216. package/dist/utils/helpers.d.ts.map +1 -0
  217. package/dist/utils/helpers.js +33 -0
  218. package/dist/utils/helpers.js.map +1 -0
  219. package/dist/utils/helpers.mjs +31 -0
  220. package/dist/utils/helpers.mjs.map +1 -0
  221. package/dist/utils/pkg.d.ts.map +1 -0
  222. package/dist/utils/pkg.js +65 -0
  223. package/dist/utils/pkg.js.map +1 -0
  224. package/dist/utils/pkg.mjs +43 -0
  225. package/dist/utils/pkg.mjs.map +1 -0
  226. package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
  227. package/package.json +5 -5
  228. package/dist/chunks/index-Cs4iEXVp.mjs +0 -1869
  229. package/dist/chunks/index-Cs4iEXVp.mjs.map +0 -1
  230. package/dist/chunks/index-DuvtFoFz.js +0 -1896
  231. package/dist/chunks/index-DuvtFoFz.js.map +0 -1
  232. package/dist/src/bin.d.ts.map +0 -1
  233. package/dist/src/cloud/command.d.ts.map +0 -1
  234. package/dist/src/config/api.d.ts.map +0 -1
  235. package/dist/src/config/local.d.ts.map +0 -1
  236. package/dist/src/create-project/action.d.ts.map +0 -1
  237. package/dist/src/create-project/command.d.ts.map +0 -1
  238. package/dist/src/create-project/index.d.ts.map +0 -1
  239. package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
  240. package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
  241. package/dist/src/deploy-project/action.d.ts.map +0 -1
  242. package/dist/src/deploy-project/command.d.ts.map +0 -1
  243. package/dist/src/deploy-project/index.d.ts.map +0 -1
  244. package/dist/src/environment/command.d.ts.map +0 -1
  245. package/dist/src/environment/link/action.d.ts.map +0 -1
  246. package/dist/src/environment/link/command.d.ts.map +0 -1
  247. package/dist/src/environment/link/index.d.ts.map +0 -1
  248. package/dist/src/environment/list/action.d.ts.map +0 -1
  249. package/dist/src/environment/list/command.d.ts.map +0 -1
  250. package/dist/src/environment/list/index.d.ts.map +0 -1
  251. package/dist/src/index.d.ts.map +0 -1
  252. package/dist/src/link/action.d.ts.map +0 -1
  253. package/dist/src/link/command.d.ts.map +0 -1
  254. package/dist/src/link/index.d.ts.map +0 -1
  255. package/dist/src/list-projects/action.d.ts.map +0 -1
  256. package/dist/src/list-projects/command.d.ts.map +0 -1
  257. package/dist/src/list-projects/index.d.ts.map +0 -1
  258. package/dist/src/login/action.d.ts.map +0 -1
  259. package/dist/src/login/command.d.ts.map +0 -1
  260. package/dist/src/login/index.d.ts.map +0 -1
  261. package/dist/src/logout/action.d.ts.map +0 -1
  262. package/dist/src/logout/command.d.ts.map +0 -1
  263. package/dist/src/logout/index.d.ts.map +0 -1
  264. package/dist/src/services/build-logs.d.ts.map +0 -1
  265. package/dist/src/services/cli-api.d.ts.map +0 -1
  266. package/dist/src/services/index.d.ts.map +0 -1
  267. package/dist/src/services/logger.d.ts.map +0 -1
  268. package/dist/src/services/notification.d.ts.map +0 -1
  269. package/dist/src/services/strapi-info-save.d.ts.map +0 -1
  270. package/dist/src/services/token.d.ts.map +0 -1
  271. package/dist/src/types.d.ts.map +0 -1
  272. package/dist/src/utils/analytics.d.ts.map +0 -1
  273. package/dist/src/utils/compress-files.d.ts.map +0 -1
  274. package/dist/src/utils/get-local-config.d.ts.map +0 -1
  275. package/dist/src/utils/helpers.d.ts.map +0 -1
  276. package/dist/src/utils/pkg.d.ts.map +0 -1
  277. package/dist/src/utils/tests/compress-files.test.d.ts.map +0 -1
  278. /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
  279. /package/dist/{src/cloud → cloud}/command.d.ts +0 -0
  280. /package/dist/{src/config → config}/api.d.ts +0 -0
  281. /package/dist/{src/config → config}/local.d.ts +0 -0
  282. /package/dist/{src/create-project → create-project}/action.d.ts +0 -0
  283. /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
  284. /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
  285. /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
  286. /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
  287. /package/dist/{src/deploy-project → deploy-project}/action.d.ts +0 -0
  288. /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
  289. /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
  290. /package/dist/{src/environment → environment}/command.d.ts +0 -0
  291. /package/dist/{src/environment → environment}/link/action.d.ts +0 -0
  292. /package/dist/{src/environment → environment}/link/command.d.ts +0 -0
  293. /package/dist/{src/environment → environment}/link/index.d.ts +0 -0
  294. /package/dist/{src/environment → environment}/list/action.d.ts +0 -0
  295. /package/dist/{src/environment → environment}/list/command.d.ts +0 -0
  296. /package/dist/{src/environment → environment}/list/index.d.ts +0 -0
  297. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  298. /package/dist/{src/link → link}/action.d.ts +0 -0
  299. /package/dist/{src/link → link}/command.d.ts +0 -0
  300. /package/dist/{src/link → link}/index.d.ts +0 -0
  301. /package/dist/{src/list-projects → list-projects}/action.d.ts +0 -0
  302. /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
  303. /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
  304. /package/dist/{src/login → login}/action.d.ts +0 -0
  305. /package/dist/{src/login → login}/command.d.ts +0 -0
  306. /package/dist/{src/login → login}/index.d.ts +0 -0
  307. /package/dist/{src/logout → logout}/action.d.ts +0 -0
  308. /package/dist/{src/logout → logout}/command.d.ts +0 -0
  309. /package/dist/{src/logout → logout}/index.d.ts +0 -0
  310. /package/dist/{src/services → services}/build-logs.d.ts +0 -0
  311. /package/dist/{src/services → services}/cli-api.d.ts +0 -0
  312. /package/dist/{src/services → services}/index.d.ts +0 -0
  313. /package/dist/{src/services → services}/logger.d.ts +0 -0
  314. /package/dist/{src/services → services}/notification.d.ts +0 -0
  315. /package/dist/{src/services → services}/strapi-info-save.d.ts +0 -0
  316. /package/dist/{src/services → services}/token.d.ts +0 -0
  317. /package/dist/{src/types.d.ts → types.d.ts} +0 -0
  318. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  319. /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
  320. /package/dist/{src/utils → utils}/get-local-config.d.ts +0 -0
  321. /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
  322. /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
  323. /package/dist/{src/utils → utils}/tests/compress-files.test.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","sources":["../../src/services/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport stringify from 'fast-safe-stringify';\n\nimport ora from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n silent?: boolean;\n debug?: boolean;\n timestamp?: boolean;\n}\n\nexport interface Logger {\n warnings: number;\n errors: number;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n progressBar: (\n totalSize: number,\n text: string\n ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst stringifyArg = (arg: unknown) => {\n return typeof arg === 'object' ? stringify(arg) : arg;\n};\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n const { silent = false, debug = false, timestamp = true } = options;\n\n const state = { errors: 0, warning: 0 };\n\n return {\n get warnings() {\n return state.warning;\n },\n\n get errors() {\n return state.errors;\n },\n\n async debug(...args) {\n if (silent || !debug) {\n return;\n }\n\n console.log(\n chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n info(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n log(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n success(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n warn(...args) {\n state.warning += 1;\n\n if (silent) {\n return;\n }\n\n console.warn(\n chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n error(...args) {\n state.errors += 1;\n\n if (silent) {\n return;\n }\n\n console.error(\n chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n // @ts-expect-error – returning a subpart of ora is fine because the types tell us what is what.\n spinner(text: string) {\n if (silent) {\n return {\n succeed() {\n return this;\n },\n fail() {\n return this;\n },\n start() {\n return this;\n },\n text: '',\n isSpinning: false,\n };\n }\n\n return ora(text);\n },\n\n progressBar(totalSize: number, text: string) {\n if (silent) {\n return {\n start() {\n return this;\n },\n stop() {\n return this;\n },\n update() {\n return this;\n },\n };\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591',\n hideCursor: true,\n forceRedraw: true,\n });\n\n progressBar.start(totalSize, 0);\n\n return progressBar;\n },\n };\n};\n\nexport { createLogger };\n"],"names":["stringifyArg","arg","stringify","createLogger","options","silent","debug","timestamp","state","errors","warning","warnings","args","console","log","chalk","cyan","Date","toISOString","map","info","blue","success","green","warn","yellow","error","red","spinner","text","succeed","fail","start","isSpinning","ora","progressBar","totalSize","stop","update","cliProgress","SingleBar","format","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/services/notification.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS3D,wBAAgB,0BAA0B,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,SAClD,MAAM,SAAS,MAAM,aAAa,cAAc,UAmC9D"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var EventSource = require('eventsource');
4
+
5
+ function notificationServiceFactory({ logger }) {
6
+ return (url, token, cliConfig)=>{
7
+ const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);
8
+ const es = new EventSource(url, {
9
+ headers: {
10
+ Authorization: `Bearer ${token}`
11
+ }
12
+ });
13
+ let timeoutId;
14
+ const resetTimeout = ()=>{
15
+ clearTimeout(timeoutId);
16
+ timeoutId = setTimeout(()=>{
17
+ logger.log('We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.');
18
+ es.close();
19
+ }, CONN_TIMEOUT); // 5 minutes
20
+ };
21
+ es.onopen = resetTimeout;
22
+ es.onmessage = (event)=>{
23
+ resetTimeout();
24
+ const data = JSON.parse(event.data);
25
+ if (data.message) {
26
+ logger.log(data.message);
27
+ }
28
+ // Close connection when a specific event is received
29
+ if (data.event === 'deploymentFinished' || data.event === 'deploymentFailed') {
30
+ es.close();
31
+ }
32
+ };
33
+ };
34
+ }
35
+
36
+ exports.notificationServiceFactory = notificationServiceFactory;
37
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = resetTimeout;\n es.onmessage = (event: Event) => {\n resetTimeout();\n const data = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (data.event === 'deploymentFinished' || data.event === 'deploymentFailed') {\n es.close();\n }\n };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","onopen","onmessage","event","data","JSON","parse","message"],"mappings":";;;;AAUO,SAASA,0BAAAA,CAA2B,EAAEC,MAAM,EAAc,EAAA;IAC/D,OAAO,CAACC,KAAaC,KAAeC,EAAAA,SAAAA,GAAAA;QAClC,MAAMC,YAAAA,GAAeC,MAAOF,CAAAA,SAAAA,CAAUG,8BAA8B,CAAA;QAEpE,MAAMC,EAAAA,GAAK,IAAIC,WAAAA,CAAYP,GAAK,EAAA;YAC9BQ,OAAS,EAAA;AACPC,gBAAAA,aAAAA,EAAe,CAAC,OAAO,EAAER,KAAAA,CAAM;AACjC;AACF,SAAA,CAAA;QACA,IAAIS,SAAAA;AAEJ,QAAA,MAAMC,YAAe,GAAA,IAAA;YACnBC,YAAaF,CAAAA,SAAAA,CAAAA;AACbA,YAAAA,SAAAA,GAAYG,UAAW,CAAA,IAAA;AACrBd,gBAAAA,MAAAA,CAAOe,GAAG,CACR,6HAAA,CAAA;AAEFR,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACV,aAAA,EAAGZ;AACL,SAAA;AAEAG,QAAAA,EAAAA,CAAGU,MAAM,GAAGL,YAAAA;QACZL,EAAGW,CAAAA,SAAS,GAAG,CAACC,KAAAA,GAAAA;AACdP,YAAAA,YAAAA,EAAAA;AACA,YAAA,MAAMQ,IAAOC,GAAAA,IAAAA,CAAKC,KAAK,CAACH,MAAMC,IAAI,CAAA;YAElC,IAAIA,IAAAA,CAAKG,OAAO,EAAE;gBAChBvB,MAAOe,CAAAA,GAAG,CAACK,IAAAA,CAAKG,OAAO,CAAA;AACzB;;AAGA,YAAA,IAAIH,KAAKD,KAAK,KAAK,wBAAwBC,IAAKD,CAAAA,KAAK,KAAK,kBAAoB,EAAA;AAC5EZ,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACV;AACF,SAAA;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,35 @@
1
+ import EventSource from 'eventsource';
2
+
3
+ function notificationServiceFactory({ logger }) {
4
+ return (url, token, cliConfig)=>{
5
+ const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);
6
+ const es = new EventSource(url, {
7
+ headers: {
8
+ Authorization: `Bearer ${token}`
9
+ }
10
+ });
11
+ let timeoutId;
12
+ const resetTimeout = ()=>{
13
+ clearTimeout(timeoutId);
14
+ timeoutId = setTimeout(()=>{
15
+ logger.log('We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.');
16
+ es.close();
17
+ }, CONN_TIMEOUT); // 5 minutes
18
+ };
19
+ es.onopen = resetTimeout;
20
+ es.onmessage = (event)=>{
21
+ resetTimeout();
22
+ const data = JSON.parse(event.data);
23
+ if (data.message) {
24
+ logger.log(data.message);
25
+ }
26
+ // Close connection when a specific event is received
27
+ if (data.event === 'deploymentFinished' || data.event === 'deploymentFailed') {
28
+ es.close();
29
+ }
30
+ };
31
+ };
32
+ }
33
+
34
+ export { notificationServiceFactory };
35
+ //# sourceMappingURL=notification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.mjs","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = resetTimeout;\n es.onmessage = (event: Event) => {\n resetTimeout();\n const data = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (data.event === 'deploymentFinished' || data.event === 'deploymentFailed') {\n es.close();\n }\n };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","onopen","onmessage","event","data","JSON","parse","message"],"mappings":";;AAUO,SAASA,0BAAAA,CAA2B,EAAEC,MAAM,EAAc,EAAA;IAC/D,OAAO,CAACC,KAAaC,KAAeC,EAAAA,SAAAA,GAAAA;QAClC,MAAMC,YAAAA,GAAeC,MAAOF,CAAAA,SAAAA,CAAUG,8BAA8B,CAAA;QAEpE,MAAMC,EAAAA,GAAK,IAAIC,WAAAA,CAAYP,GAAK,EAAA;YAC9BQ,OAAS,EAAA;AACPC,gBAAAA,aAAAA,EAAe,CAAC,OAAO,EAAER,KAAAA,CAAM;AACjC;AACF,SAAA,CAAA;QACA,IAAIS,SAAAA;AAEJ,QAAA,MAAMC,YAAe,GAAA,IAAA;YACnBC,YAAaF,CAAAA,SAAAA,CAAAA;AACbA,YAAAA,SAAAA,GAAYG,UAAW,CAAA,IAAA;AACrBd,gBAAAA,MAAAA,CAAOe,GAAG,CACR,6HAAA,CAAA;AAEFR,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACV,aAAA,EAAGZ;AACL,SAAA;AAEAG,QAAAA,EAAAA,CAAGU,MAAM,GAAGL,YAAAA;QACZL,EAAGW,CAAAA,SAAS,GAAG,CAACC,KAAAA,GAAAA;AACdP,YAAAA,YAAAA,EAAAA;AACA,YAAA,MAAMQ,IAAOC,GAAAA,IAAAA,CAAKC,KAAK,CAACH,MAAMC,IAAI,CAAA;YAElC,IAAIA,IAAAA,CAAKG,OAAO,EAAE;gBAChBvB,MAAOe,CAAAA,GAAG,CAACK,IAAAA,CAAKG,OAAO,CAAA;AACzB;;AAGA,YAAA,IAAIH,KAAKD,KAAK,KAAK,wBAAwBC,IAAKD,CAAAA,KAAK,KAAK,kBAAoB,EAAA;AAC5EZ,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACV;AACF,SAAA;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-info-save.d.ts","sourceRoot":"","sources":["../../src/services/strapi-info-save.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;CACnC,CAAC;AAGF,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;CAChD,CAAC;AAKF,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,iBAK7F;AAED,wBAAsB,QAAQ,CAAC,EAC7B,aAAa,GACd,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAOtD;AAED,wBAAsB,KAAK,CACzB,SAAS,EAAE,UAAU,EACrB,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,iBASnD;AAED,wBAAsB,YAAY,CAAC,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,iBAMpF"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var fse = require('fs-extra');
4
+ var path = require('path');
5
+ var lodash = require('lodash');
6
+
7
+ const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';
8
+ const getFilePath = (directoryPath)=>path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);
9
+ async function save(data, { directoryPath } = {}) {
10
+ const pathToFile = getFilePath(directoryPath);
11
+ // Ensure the directory exists and creates it if not
12
+ await fse.ensureDir(path.dirname(pathToFile));
13
+ await fse.writeJson(pathToFile, data, {
14
+ encoding: 'utf8'
15
+ });
16
+ }
17
+ async function retrieve({ directoryPath } = {}) {
18
+ const pathToFile = getFilePath(directoryPath);
19
+ const pathExists = await fse.pathExists(pathToFile);
20
+ if (!pathExists) {
21
+ return {};
22
+ }
23
+ return fse.readJSON(pathToFile, {
24
+ encoding: 'utf8'
25
+ });
26
+ }
27
+ async function patch(patchData, { directoryPath } = {}) {
28
+ const pathToFile = getFilePath(directoryPath);
29
+ const existingData = await retrieve({
30
+ directoryPath
31
+ });
32
+ if (!existingData) {
33
+ throw new Error('No configuration data found to patch.');
34
+ }
35
+ const newData = lodash.merge(existingData, patchData);
36
+ await fse.writeJson(pathToFile, newData, {
37
+ encoding: 'utf8'
38
+ });
39
+ }
40
+ async function deleteConfig({ directoryPath } = {}) {
41
+ const pathToFile = getFilePath(directoryPath);
42
+ const pathExists = await fse.pathExists(pathToFile);
43
+ if (pathExists) {
44
+ await fse.remove(pathToFile);
45
+ }
46
+ }
47
+
48
+ exports.LOCAL_SAVE_FILENAME = LOCAL_SAVE_FILENAME;
49
+ exports.deleteConfig = deleteConfig;
50
+ exports.patch = patch;
51
+ exports.retrieve = retrieve;
52
+ exports.save = save;
53
+ //# sourceMappingURL=strapi-info-save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-info-save.js","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aACnBC,GAAAA,IAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAQC,CAAAA,GAAG,EAAIN,EAAAA,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,GAAIC,CAAAA,SAAS,CAACR,IAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,GAAIG,CAAAA,SAAS,CAACJ,UAAAA,EAAYD,IAAM,EAAA;QAAEM,QAAU,EAAA;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAS,CAAA,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAa,GAAA,MAAMN,GAAIM,CAAAA,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAY,EAAA;AACf,QAAA,OAAO,EAAC;AACV;IACA,OAAON,GAAAA,CAAIO,QAAQ,CAACR,UAAY,EAAA;QAAEK,QAAU,EAAA;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAS,CAAA;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAc,EAAA;AACjB,QAAA,MAAM,IAAIC,KAAM,CAAA,uCAAA,CAAA;AAClB;IACA,MAAMC,OAAAA,GAAUC,aAAMH,YAAcD,EAAAA,SAAAA,CAAAA;AACpC,IAAA,MAAMT,GAAIG,CAAAA,SAAS,CAACJ,UAAAA,EAAYa,OAAS,EAAA;QAAER,QAAU,EAAA;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAa,CAAA,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAa,GAAA,MAAMN,GAAIM,CAAAA,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAY,EAAA;QACd,MAAMN,GAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB;AACF;;;;;;;;"}
@@ -0,0 +1,47 @@
1
+ import fse__default from 'fs-extra';
2
+ import path__default from 'path';
3
+ import { merge } from 'lodash';
4
+
5
+ const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';
6
+ const getFilePath = (directoryPath)=>path__default.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);
7
+ async function save(data, { directoryPath } = {}) {
8
+ const pathToFile = getFilePath(directoryPath);
9
+ // Ensure the directory exists and creates it if not
10
+ await fse__default.ensureDir(path__default.dirname(pathToFile));
11
+ await fse__default.writeJson(pathToFile, data, {
12
+ encoding: 'utf8'
13
+ });
14
+ }
15
+ async function retrieve({ directoryPath } = {}) {
16
+ const pathToFile = getFilePath(directoryPath);
17
+ const pathExists = await fse__default.pathExists(pathToFile);
18
+ if (!pathExists) {
19
+ return {};
20
+ }
21
+ return fse__default.readJSON(pathToFile, {
22
+ encoding: 'utf8'
23
+ });
24
+ }
25
+ async function patch(patchData, { directoryPath } = {}) {
26
+ const pathToFile = getFilePath(directoryPath);
27
+ const existingData = await retrieve({
28
+ directoryPath
29
+ });
30
+ if (!existingData) {
31
+ throw new Error('No configuration data found to patch.');
32
+ }
33
+ const newData = merge(existingData, patchData);
34
+ await fse__default.writeJson(pathToFile, newData, {
35
+ encoding: 'utf8'
36
+ });
37
+ }
38
+ async function deleteConfig({ directoryPath } = {}) {
39
+ const pathToFile = getFilePath(directoryPath);
40
+ const pathExists = await fse__default.pathExists(pathToFile);
41
+ if (pathExists) {
42
+ await fse__default.remove(pathToFile);
43
+ }
44
+ }
45
+
46
+ export { LOCAL_SAVE_FILENAME, deleteConfig, patch, retrieve, save };
47
+ //# sourceMappingURL=strapi-info-save.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-info-save.mjs","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aACnBC,GAAAA,aAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAQC,CAAAA,GAAG,EAAIN,EAAAA,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,YAAIC,CAAAA,SAAS,CAACR,aAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,YAAIG,CAAAA,SAAS,CAACJ,UAAAA,EAAYD,IAAM,EAAA;QAAEM,QAAU,EAAA;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAS,CAAA,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAa,GAAA,MAAMN,YAAIM,CAAAA,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAY,EAAA;AACf,QAAA,OAAO,EAAC;AACV;IACA,OAAON,YAAAA,CAAIO,QAAQ,CAACR,UAAY,EAAA;QAAEK,QAAU,EAAA;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAS,CAAA;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAc,EAAA;AACjB,QAAA,MAAM,IAAIC,KAAM,CAAA,uCAAA,CAAA;AAClB;IACA,MAAMC,OAAAA,GAAUC,MAAMH,YAAcD,EAAAA,SAAAA,CAAAA;AACpC,IAAA,MAAMT,YAAIG,CAAAA,SAAS,CAACJ,UAAAA,EAAYa,OAAS,EAAA;QAAER,QAAU,EAAA;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAa,CAAA,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAYC,CAAAA,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAa,GAAA,MAAMN,YAAIM,CAAAA,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAY,EAAA;QACd,MAAMN,YAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/services/token.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,UAAU,CAAC;AAS3D,wBAAsB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;CAAE;qBAGtD,MAAM;;6BA6BE,MAAM,WAAW,MAAM,KAAG,QAAQ,IAAI,CAAC;0BA6C1C,MAAM;;yBAoClC,UAAU,eACF,CAAC,GAAG,EAAE,UAAU,KAAK,QAAQ,OAAO,CAAC;GAyBrD"}
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ var jwksClient = require('jwks-rsa');
4
+ var jwt = require('jsonwebtoken');
5
+ var local = require('../config/local.js');
6
+ var cliApi = require('./cli-api.js');
7
+
8
+ let cliConfig;
9
+ async function tokenServiceFactory({ logger }) {
10
+ const cloudApiService = await cliApi.cloudApiFactory({
11
+ logger
12
+ });
13
+ async function saveToken(str) {
14
+ const appConfig = await local.getLocalConfig();
15
+ if (!appConfig) {
16
+ logger.error('There was a problem saving your token. Please try again.');
17
+ return;
18
+ }
19
+ appConfig.token = str;
20
+ try {
21
+ await local.saveLocalConfig(appConfig);
22
+ } catch (e) {
23
+ logger.debug(e);
24
+ logger.error('There was a problem saving your token. Please try again.');
25
+ }
26
+ }
27
+ async function retrieveToken() {
28
+ const appConfig = await local.getLocalConfig();
29
+ if (appConfig.token) {
30
+ // check if token is still valid
31
+ if (await isTokenValid(appConfig.token)) {
32
+ return appConfig.token;
33
+ }
34
+ }
35
+ return undefined;
36
+ }
37
+ async function validateToken(idToken, jwksUrl) {
38
+ const client = jwksClient({
39
+ jwksUri: jwksUrl
40
+ });
41
+ // Get the Key from the JWKS using the token header's Key ID (kid)
42
+ const getKey = (header, callback)=>{
43
+ client.getSigningKey(header.kid, (e, key)=>{
44
+ if (e) {
45
+ callback(e);
46
+ } else if (key) {
47
+ const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;
48
+ callback(null, publicKey);
49
+ } else {
50
+ callback(new Error('Key not found'));
51
+ }
52
+ });
53
+ };
54
+ const decodedToken = jwt.decode(idToken, {
55
+ complete: true
56
+ });
57
+ if (!decodedToken) {
58
+ if (typeof idToken === 'undefined' || idToken === '') {
59
+ logger.warn('You need to be logged in to use this feature. Please log in and try again.');
60
+ } else {
61
+ logger.error('There seems to be a problem with your login information. Please try logging in again.');
62
+ }
63
+ return Promise.reject(new Error('Invalid token'));
64
+ }
65
+ // Verify the JWT token signature using the JWKS Key
66
+ return new Promise((resolve, reject)=>{
67
+ jwt.verify(idToken, getKey, (err)=>{
68
+ if (err) {
69
+ reject(err);
70
+ }
71
+ if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {
72
+ reject(new Error('Token is expired'));
73
+ }
74
+ resolve();
75
+ });
76
+ });
77
+ }
78
+ async function isTokenValid(token) {
79
+ try {
80
+ const config = await cloudApiService.config();
81
+ cliConfig = config.data;
82
+ if (token) {
83
+ await validateToken(token, cliConfig.jwksUrl);
84
+ return true;
85
+ }
86
+ return false;
87
+ } catch (e) {
88
+ logger.debug(e);
89
+ return false;
90
+ }
91
+ }
92
+ async function eraseToken() {
93
+ const appConfig = await local.getLocalConfig();
94
+ if (!appConfig) {
95
+ return;
96
+ }
97
+ delete appConfig.token;
98
+ try {
99
+ await local.saveLocalConfig(appConfig);
100
+ } catch (e) {
101
+ logger.debug(e);
102
+ logger.error('There was an issue removing your login information. Please try logging out again.');
103
+ throw e;
104
+ }
105
+ }
106
+ async function getValidToken(ctx, loginAction) {
107
+ let token = await retrieveToken();
108
+ while(!token || !await isTokenValid(token)){
109
+ logger.log(token ? 'Oops! Your token seems expired or invalid. Please login again.' : "We couldn't find a valid token. You need to be logged in to use this feature.");
110
+ if (!await loginAction(ctx)) return null;
111
+ token = await retrieveToken();
112
+ }
113
+ return token;
114
+ }
115
+ return {
116
+ saveToken,
117
+ retrieveToken,
118
+ validateToken,
119
+ isTokenValid,
120
+ eraseToken,
121
+ getValidToken
122
+ };
123
+ }
124
+
125
+ exports.tokenServiceFactory = tokenServiceFactory;
126
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import jwksClient from 'jwks-rsa';
2
+ import jwt from 'jsonwebtoken';
3
+ import { getLocalConfig, saveLocalConfig } from '../config/local.mjs';
4
+ import { cloudApiFactory } from './cli-api.mjs';
5
+
6
+ let cliConfig;
7
+ async function tokenServiceFactory({ logger }) {
8
+ const cloudApiService = await cloudApiFactory({
9
+ logger
10
+ });
11
+ async function saveToken(str) {
12
+ const appConfig = await getLocalConfig();
13
+ if (!appConfig) {
14
+ logger.error('There was a problem saving your token. Please try again.');
15
+ return;
16
+ }
17
+ appConfig.token = str;
18
+ try {
19
+ await saveLocalConfig(appConfig);
20
+ } catch (e) {
21
+ logger.debug(e);
22
+ logger.error('There was a problem saving your token. Please try again.');
23
+ }
24
+ }
25
+ async function retrieveToken() {
26
+ const appConfig = await getLocalConfig();
27
+ if (appConfig.token) {
28
+ // check if token is still valid
29
+ if (await isTokenValid(appConfig.token)) {
30
+ return appConfig.token;
31
+ }
32
+ }
33
+ return undefined;
34
+ }
35
+ async function validateToken(idToken, jwksUrl) {
36
+ const client = jwksClient({
37
+ jwksUri: jwksUrl
38
+ });
39
+ // Get the Key from the JWKS using the token header's Key ID (kid)
40
+ const getKey = (header, callback)=>{
41
+ client.getSigningKey(header.kid, (e, key)=>{
42
+ if (e) {
43
+ callback(e);
44
+ } else if (key) {
45
+ const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;
46
+ callback(null, publicKey);
47
+ } else {
48
+ callback(new Error('Key not found'));
49
+ }
50
+ });
51
+ };
52
+ const decodedToken = jwt.decode(idToken, {
53
+ complete: true
54
+ });
55
+ if (!decodedToken) {
56
+ if (typeof idToken === 'undefined' || idToken === '') {
57
+ logger.warn('You need to be logged in to use this feature. Please log in and try again.');
58
+ } else {
59
+ logger.error('There seems to be a problem with your login information. Please try logging in again.');
60
+ }
61
+ return Promise.reject(new Error('Invalid token'));
62
+ }
63
+ // Verify the JWT token signature using the JWKS Key
64
+ return new Promise((resolve, reject)=>{
65
+ jwt.verify(idToken, getKey, (err)=>{
66
+ if (err) {
67
+ reject(err);
68
+ }
69
+ if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {
70
+ reject(new Error('Token is expired'));
71
+ }
72
+ resolve();
73
+ });
74
+ });
75
+ }
76
+ async function isTokenValid(token) {
77
+ try {
78
+ const config = await cloudApiService.config();
79
+ cliConfig = config.data;
80
+ if (token) {
81
+ await validateToken(token, cliConfig.jwksUrl);
82
+ return true;
83
+ }
84
+ return false;
85
+ } catch (e) {
86
+ logger.debug(e);
87
+ return false;
88
+ }
89
+ }
90
+ async function eraseToken() {
91
+ const appConfig = await getLocalConfig();
92
+ if (!appConfig) {
93
+ return;
94
+ }
95
+ delete appConfig.token;
96
+ try {
97
+ await saveLocalConfig(appConfig);
98
+ } catch (e) {
99
+ logger.debug(e);
100
+ logger.error('There was an issue removing your login information. Please try logging out again.');
101
+ throw e;
102
+ }
103
+ }
104
+ async function getValidToken(ctx, loginAction) {
105
+ let token = await retrieveToken();
106
+ while(!token || !await isTokenValid(token)){
107
+ logger.log(token ? 'Oops! Your token seems expired or invalid. Please login again.' : "We couldn't find a valid token. You need to be logged in to use this feature.");
108
+ if (!await loginAction(ctx)) return null;
109
+ token = await retrieveToken();
110
+ }
111
+ return token;
112
+ }
113
+ return {
114
+ saveToken,
115
+ retrieveToken,
116
+ validateToken,
117
+ isTokenValid,
118
+ eraseToken,
119
+ getValidToken
120
+ };
121
+ }
122
+
123
+ export { tokenServiceFactory };
124
+ //# sourceMappingURL=token.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.mjs","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":";;;;;AAOA,IAAIA,SAAAA;AAMG,eAAeC,mBAAAA,CAAoB,EAAEC,MAAM,EAAoC,EAAA;IACpF,MAAMC,eAAAA,GAAkB,MAAMC,eAAgB,CAAA;AAAEF,QAAAA;AAAO,KAAA,CAAA;AAEvD,IAAA,eAAeG,UAAUC,GAAW,EAAA;AAClC,QAAA,MAAMC,YAAY,MAAMC,cAAAA,EAAAA;AAExB,QAAA,IAAI,CAACD,SAAW,EAAA;AACdL,YAAAA,MAAAA,CAAOO,KAAK,CAAC,0DAAA,CAAA;AACb,YAAA;AACF;AAEAF,QAAAA,SAAAA,CAAUG,KAAK,GAAGJ,GAAAA;QAElB,IAAI;AACF,YAAA,MAAMK,eAAgBJ,CAAAA,SAAAA,CAAAA;AACxB,SAAA,CAAE,OAAOK,CAAoB,EAAA;AAC3BV,YAAAA,MAAAA,CAAOW,KAAK,CAACD,CAAAA,CAAAA;AACbV,YAAAA,MAAAA,CAAOO,KAAK,CAAC,0DAAA,CAAA;AACf;AACF;IAEA,eAAeK,aAAAA,GAAAA;AACb,QAAA,MAAMP,YAAY,MAAMC,cAAAA,EAAAA;QACxB,IAAID,SAAAA,CAAUG,KAAK,EAAE;;AAEnB,YAAA,IAAI,MAAMK,YAAAA,CAAaR,SAAUG,CAAAA,KAAK,CAAG,EAAA;AACvC,gBAAA,OAAOH,UAAUG,KAAK;AACxB;AACF;QACA,OAAOM,SAAAA;AACT;IAEA,eAAeC,aAAAA,CAAcC,OAAe,EAAEC,OAAe,EAAA;AAC3D,QAAA,MAAMC,SAAqBC,UAAW,CAAA;YACpCC,OAASH,EAAAA;AACX,SAAA,CAAA;;QAGA,MAAMI,MAAAA,GAAS,CAACC,MAAmBC,EAAAA,QAAAA,GAAAA;AACjCL,YAAAA,MAAAA,CAAOM,aAAa,CAACF,MAAAA,CAAOG,GAAG,EAAE,CAACf,CAAiBgB,EAAAA,GAAAA,GAAAA;AACjD,gBAAA,IAAIhB,CAAG,EAAA;oBACLa,QAASb,CAAAA,CAAAA,CAAAA;AACX,iBAAA,MAAO,IAAIgB,GAAK,EAAA;AACd,oBAAA,MAAMC,YAAY,WAAeD,IAAAA,GAAAA,GAAMA,IAAIC,SAAS,GAAGD,IAAIE,YAAY;AACvEL,oBAAAA,QAAAA,CAAS,IAAMI,EAAAA,SAAAA,CAAAA;iBACV,MAAA;AACLJ,oBAAAA,QAAAA,CAAS,IAAIM,KAAM,CAAA,eAAA,CAAA,CAAA;AACrB;AACF,aAAA,CAAA;AACF,SAAA;AAEA,QAAA,MAAMC,YAAeC,GAAAA,GAAAA,CAAIC,MAAM,CAAChB,OAAS,EAAA;YAAEiB,QAAU,EAAA;AAAK,SAAA,CAAA;AAC1D,QAAA,IAAI,CAACH,YAAc,EAAA;AACjB,YAAA,IAAI,OAAOd,OAAAA,KAAY,WAAeA,IAAAA,OAAAA,KAAY,EAAI,EAAA;AACpDhB,gBAAAA,MAAAA,CAAOkC,IAAI,CAAC,4EAAA,CAAA;aACP,MAAA;AACLlC,gBAAAA,MAAAA,CAAOO,KAAK,CACV,uFAAA,CAAA;AAEJ;AACA,YAAA,OAAO4B,OAAQC,CAAAA,MAAM,CAAC,IAAIP,KAAM,CAAA,eAAA,CAAA,CAAA;AAClC;;QAGA,OAAO,IAAIM,OAAc,CAAA,CAACE,OAASD,EAAAA,MAAAA,GAAAA;AACjCL,YAAAA,GAAAA,CAAIO,MAAM,CAACtB,OAASK,EAAAA,MAAAA,EAAQ,CAACkB,GAAAA,GAAAA;AAC3B,gBAAA,IAAIA,GAAK,EAAA;oBACPH,MAAOG,CAAAA,GAAAA,CAAAA;AACT;gBACA,IAAIT,YAAAA,CAAaU,OAAO,CAACC,GAAG,GAAGC,IAAKC,CAAAA,KAAK,CAACC,IAAAA,CAAKC,GAAG,EAAA,GAAK,IAAO,CAAA,EAAA;AAC5DT,oBAAAA,MAAAA,CAAO,IAAIP,KAAM,CAAA,kBAAA,CAAA,CAAA;AACnB;AACAQ,gBAAAA,OAAAA,EAAAA;AACF,aAAA,CAAA;AACF,SAAA,CAAA;AACF;AAEA,IAAA,eAAexB,aAAaL,KAAa,EAAA;QACvC,IAAI;YACF,MAAMsC,MAAAA,GAAS,MAAM7C,eAAAA,CAAgB6C,MAAM,EAAA;AAE3ChD,YAAAA,SAAAA,GAAYgD,OAAOC,IAAI;AACvB,YAAA,IAAIvC,KAAO,EAAA;gBACT,MAAMO,aAAAA,CAAcP,KAAOV,EAAAA,SAAAA,CAAUmB,OAAO,CAAA;gBAC5C,OAAO,IAAA;AACT;YACA,OAAO,KAAA;AACT,SAAA,CAAE,OAAOP,CAAG,EAAA;AACVV,YAAAA,MAAAA,CAAOW,KAAK,CAACD,CAAAA,CAAAA;YACb,OAAO,KAAA;AACT;AACF;IAEA,eAAesC,UAAAA,GAAAA;AACb,QAAA,MAAM3C,YAAY,MAAMC,cAAAA,EAAAA;AACxB,QAAA,IAAI,CAACD,SAAW,EAAA;AACd,YAAA;AACF;AAEA,QAAA,OAAOA,UAAUG,KAAK;QAEtB,IAAI;AACF,YAAA,MAAMC,eAAgBJ,CAAAA,SAAAA,CAAAA;AACxB,SAAA,CAAE,OAAOK,CAAoB,EAAA;AAC3BV,YAAAA,MAAAA,CAAOW,KAAK,CAACD,CAAAA,CAAAA;AACbV,YAAAA,MAAAA,CAAOO,KAAK,CACV,mFAAA,CAAA;YAEF,MAAMG,CAAAA;AACR;AACF;IAEA,eAAeuC,aAAAA,CACbC,GAAe,EACfC,WAAkD,EAAA;AAElD,QAAA,IAAI3C,QAAQ,MAAMI,aAAAA,EAAAA;AAElB,QAAA,MAAO,CAACJ,KAAAA,IAAS,CAAE,MAAMK,aAAaL,KAAS,CAAA,CAAA;YAC7CR,MAAOoD,CAAAA,GAAG,CACR5C,KAAAA,GACI,gEACA,GAAA,+EAAA,CAAA;AAEN,YAAA,IAAI,CAAE,MAAM2C,WAAYD,CAAAA,GAAAA,CAAAA,EAAO,OAAO,IAAA;AACtC1C,YAAAA,KAAAA,GAAQ,MAAMI,aAAAA,EAAAA;AAChB;QAEA,OAAOJ,KAAAA;AACT;IAEA,OAAO;AACLL,QAAAA,SAAAA;AACAS,QAAAA,aAAAA;AACAG,QAAAA,aAAAA;AACAF,QAAAA,YAAAA;AACAmC,QAAAA,UAAAA;AACAC,QAAAA;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE;QACf,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,iBAAiB,EAAE;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8BAA8B,EAAE,MAAM,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;CACjB,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,mBAAmB,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE1E,QAAA,MAAM,UAAU,QACT,UAAU,mBACE,eAAe,aACrB,MAAM,aACN,YAAY,kBAOxB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const trackEvent = async (ctx, cloudApiService, eventName, eventData)=>{
4
+ try {
5
+ await cloudApiService.track(eventName, eventData);
6
+ } catch (e) {
7
+ ctx.logger.debug(`Failed to track ${eventName}`, e);
8
+ }
9
+ };
10
+
11
+ exports.trackEvent = trackEvent;
12
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":";;AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,SAAU,CAAA,CAAC,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
@@ -0,0 +1,10 @@
1
+ const trackEvent = async (ctx, cloudApiService, eventName, eventData)=>{
2
+ try {
3
+ await cloudApiService.track(eventName, eventData);
4
+ } catch (e) {
5
+ ctx.logger.debug(`Failed to track ${eventName}`, e);
6
+ }
7
+ };
8
+
9
+ export { trackEvent };
10
+ //# sourceMappingURL=analytics.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.mjs","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":"AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,SAAU,CAAA,CAAC,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-files.d.ts","sourceRoot":"","sources":["../../src/utils/compress-files.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,aAAa,eAAgB,MAAM,QAAQ,MAAM,kBAAkB,MAAM,EAAE,KAAG,OAgBnF,CAAC;AAwCF,QAAA,MAAM,kBAAkB,gBACT,MAAM,oBACD,MAAM,YACd,MAAM,KACf,QAAQ,IAAI,CAWd,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}