@wix/cli 1.1.62 → 1.1.64

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 (123) hide show
  1. package/build/{DevCommand-ZNHBPCVV.js → DevCommand-AVJ663GA.js} +72 -40
  2. package/build/DevCommand-AVJ663GA.js.map +1 -0
  3. package/build/{DevCommand-NWZ75YTP.js → DevCommand-IHVIU2N4.js} +12 -12
  4. package/build/{LoginCommand-AQIYGH36.js → LoginCommand-PCBKTT6F.js} +10 -10
  5. package/build/{LogoutCommand-LPI7NUZJ.js → LogoutCommand-YY7MRKCM.js} +7 -7
  6. package/build/PreviewCommand-3OABJYJD.js +70 -0
  7. package/build/PreviewCommand-3OABJYJD.js.map +1 -0
  8. package/build/PublishCommand-ISZPYYXM.js +117 -0
  9. package/build/PublishCommand-ISZPYYXM.js.map +1 -0
  10. package/build/{WhoamiCommand-BWXA3TXF.js → WhoamiCommand-GWPNPHRL.js} +4 -4
  11. package/build/{chunk-2NWGTFAC.js → chunk-2K5KKUL3.js} +5 -3
  12. package/build/{chunk-2NWGTFAC.js.map → chunk-2K5KKUL3.js.map} +1 -1
  13. package/build/{chunk-55EFTE5M.js → chunk-3P5PTIBR.js} +2 -2
  14. package/build/{chunk-4YD2W3LA.js → chunk-4XPWCRGU.js} +276 -278
  15. package/build/{chunk-4YD2W3LA.js.map → chunk-4XPWCRGU.js.map} +1 -1
  16. package/build/{chunk-PF4VD6IT.js → chunk-5WRZJFXK.js} +5 -5
  17. package/build/{chunk-TCSPCAZI.js → chunk-AOWEDNOF.js} +348 -583
  18. package/build/chunk-AOWEDNOF.js.map +1 -0
  19. package/build/{chunk-WJQFCMN3.js → chunk-BCT5PAPG.js} +6 -6
  20. package/build/{chunk-JIH3GSZJ.js → chunk-BEXERG7F.js} +48 -5
  21. package/build/chunk-BEXERG7F.js.map +1 -0
  22. package/build/{chunk-BGKFJNUK.js → chunk-CNXKF7E3.js} +16 -14
  23. package/build/chunk-CNXKF7E3.js.map +1 -0
  24. package/build/{chunk-A6TCWKZD.js → chunk-DUQT5IDQ.js} +4 -4
  25. package/build/{chunk-A6TCWKZD.js.map → chunk-DUQT5IDQ.js.map} +1 -1
  26. package/build/{chunk-G34I4OXF.js → chunk-IC6K6CSD.js} +3 -3
  27. package/build/{chunk-ZIXYUOVJ.js → chunk-JASQWANH.js} +3 -3
  28. package/build/{chunk-OSWRZGLN.js → chunk-JKBX72QC.js} +4 -4
  29. package/build/{chunk-DTRL25IG.js → chunk-JXGBYZK7.js} +14 -17
  30. package/build/chunk-JXGBYZK7.js.map +1 -0
  31. package/build/{chunk-KCTZ5EX4.js → chunk-K74KSKUR.js} +29 -14
  32. package/build/chunk-K74KSKUR.js.map +1 -0
  33. package/build/{chunk-XOFZJ3JQ.js → chunk-KJCRO3PB.js} +9 -5
  34. package/build/{chunk-XOFZJ3JQ.js.map → chunk-KJCRO3PB.js.map} +1 -1
  35. package/build/{chunk-NLMXNKQO.js → chunk-KJXGVQP7.js} +7 -7
  36. package/build/{chunk-ZR5EKZZ3.js → chunk-N4L3XZI3.js} +4 -4
  37. package/build/{PreviewCommand-666UOTAN.js → chunk-NXGJ6P6H.js} +67 -123
  38. package/build/chunk-NXGJ6P6H.js.map +1 -0
  39. package/build/{chunk-YQW75RJ5.js → chunk-PWEJ3IWM.js} +4 -2
  40. package/build/{chunk-YQW75RJ5.js.map → chunk-PWEJ3IWM.js.map} +1 -1
  41. package/build/{chunk-YYH6VZI3.js → chunk-QP2SHVU3.js} +2 -2
  42. package/build/{chunk-ETAVRPIY.js → chunk-QPYNVASM.js} +2 -2
  43. package/build/{chunk-Y5LMYOCJ.js → chunk-TIHCOJHY.js} +4 -4
  44. package/build/{chunk-DVR2CMCO.js → chunk-UHGVP5PT.js} +3 -3
  45. package/build/{chunk-OOWNEBOM.js → chunk-UK7CHIDM.js} +2 -2
  46. package/build/chunk-UQM2YHYJ.js +30 -0
  47. package/build/chunk-UQM2YHYJ.js.map +1 -0
  48. package/build/{chunk-OEYFKLWJ.js → chunk-YHMLI3NZ.js} +2 -2
  49. package/build/{chunk-LWQGSEXR.js → chunk-YX66M2XN.js} +2 -2
  50. package/build/{chunk-45UEHUOD.js → chunk-Z3MJ3WPQ.js} +11 -5
  51. package/build/{chunk-45UEHUOD.js.map → chunk-Z3MJ3WPQ.js.map} +1 -1
  52. package/build/{chunk-4ZQFECEW.js → chunk-ZLPYLX6E.js} +60 -24
  53. package/build/chunk-ZLPYLX6E.js.map +1 -0
  54. package/build/{chunk-D6HNYFE6.js → chunk-ZM6OUS2J.js} +5 -5
  55. package/build/{dev-B7FMRZWG.js → dev-62KN3SLL.js} +26 -26
  56. package/build/dev-62KN3SLL.js.map +1 -0
  57. package/build/index.js +39 -35
  58. package/build/index.js.map +1 -1
  59. package/build/{install-B37NJYMG.js → install-L6C6V6OD.js} +14 -14
  60. package/build/{preview-W5ZYLI5U.js → preview-LDXRFIMB.js} +17 -17
  61. package/build/{publish-KZKBMTND.js → publish-FNN2BROO.js} +19 -19
  62. package/build/{render-command-FWDU3W5M.js → render-command-GLPKMOXW.js} +10 -10
  63. package/build/{render-command-TKO7PYVO.js → render-command-RBG7263F.js} +11 -11
  64. package/build/{render-command-S7D3MWYC.js → render-command-XZMQVFWB.js} +9 -9
  65. package/build/{run-command-YYML7BJX.js → run-command-DDRX6HA4.js} +6 -6
  66. package/build/{src-IMPYJZRW.js → src-5FM5LBPG.js} +35 -11
  67. package/build/src-5FM5LBPG.js.map +1 -0
  68. package/build/{src-XSN6C5L2.js → src-DFC4OJXU.js} +3 -3
  69. package/build/{src-WV4RZ4FT.js → src-NDQ3YSVS.js} +7 -7
  70. package/build/{src-SCGDSQRH.js → src-QDEPJEVY.js} +4 -4
  71. package/build/{src-DVFFJLN5.js → src-RLHCQYHW.js} +2 -2
  72. package/build/{src-GQFPGSHL.js → src-WZQSHEYJ.js} +7 -7
  73. package/build/{src-5VO6B75Q.js → src-YKFH53HG.js} +18 -18
  74. package/build/{sync-types-M76E2RFC.js → sync-types-5QBTKL42.js} +12 -12
  75. package/build/{uninstall-LDNBVTQR.js → uninstall-X66KBPSO.js} +14 -14
  76. package/package.json +2 -2
  77. package/build/DevCommand-ZNHBPCVV.js.map +0 -1
  78. package/build/PreviewCommand-666UOTAN.js.map +0 -1
  79. package/build/chunk-4ZQFECEW.js.map +0 -1
  80. package/build/chunk-BGKFJNUK.js.map +0 -1
  81. package/build/chunk-DTRL25IG.js.map +0 -1
  82. package/build/chunk-JIH3GSZJ.js.map +0 -1
  83. package/build/chunk-KCTZ5EX4.js.map +0 -1
  84. package/build/chunk-TCSPCAZI.js.map +0 -1
  85. package/build/chunk-VXGNI7CP.js +0 -21
  86. package/build/chunk-VXGNI7CP.js.map +0 -1
  87. package/build/dev-B7FMRZWG.js.map +0 -1
  88. package/build/src-IMPYJZRW.js.map +0 -1
  89. /package/build/{DevCommand-NWZ75YTP.js.map → DevCommand-IHVIU2N4.js.map} +0 -0
  90. /package/build/{LoginCommand-AQIYGH36.js.map → LoginCommand-PCBKTT6F.js.map} +0 -0
  91. /package/build/{LogoutCommand-LPI7NUZJ.js.map → LogoutCommand-YY7MRKCM.js.map} +0 -0
  92. /package/build/{WhoamiCommand-BWXA3TXF.js.map → WhoamiCommand-GWPNPHRL.js.map} +0 -0
  93. /package/build/{chunk-55EFTE5M.js.map → chunk-3P5PTIBR.js.map} +0 -0
  94. /package/build/{chunk-PF4VD6IT.js.map → chunk-5WRZJFXK.js.map} +0 -0
  95. /package/build/{chunk-WJQFCMN3.js.map → chunk-BCT5PAPG.js.map} +0 -0
  96. /package/build/{chunk-G34I4OXF.js.map → chunk-IC6K6CSD.js.map} +0 -0
  97. /package/build/{chunk-ZIXYUOVJ.js.map → chunk-JASQWANH.js.map} +0 -0
  98. /package/build/{chunk-OSWRZGLN.js.map → chunk-JKBX72QC.js.map} +0 -0
  99. /package/build/{chunk-NLMXNKQO.js.map → chunk-KJXGVQP7.js.map} +0 -0
  100. /package/build/{chunk-ZR5EKZZ3.js.map → chunk-N4L3XZI3.js.map} +0 -0
  101. /package/build/{chunk-YYH6VZI3.js.map → chunk-QP2SHVU3.js.map} +0 -0
  102. /package/build/{chunk-ETAVRPIY.js.map → chunk-QPYNVASM.js.map} +0 -0
  103. /package/build/{chunk-Y5LMYOCJ.js.map → chunk-TIHCOJHY.js.map} +0 -0
  104. /package/build/{chunk-DVR2CMCO.js.map → chunk-UHGVP5PT.js.map} +0 -0
  105. /package/build/{chunk-OOWNEBOM.js.map → chunk-UK7CHIDM.js.map} +0 -0
  106. /package/build/{chunk-OEYFKLWJ.js.map → chunk-YHMLI3NZ.js.map} +0 -0
  107. /package/build/{chunk-LWQGSEXR.js.map → chunk-YX66M2XN.js.map} +0 -0
  108. /package/build/{chunk-D6HNYFE6.js.map → chunk-ZM6OUS2J.js.map} +0 -0
  109. /package/build/{install-B37NJYMG.js.map → install-L6C6V6OD.js.map} +0 -0
  110. /package/build/{preview-W5ZYLI5U.js.map → preview-LDXRFIMB.js.map} +0 -0
  111. /package/build/{publish-KZKBMTND.js.map → publish-FNN2BROO.js.map} +0 -0
  112. /package/build/{render-command-FWDU3W5M.js.map → render-command-GLPKMOXW.js.map} +0 -0
  113. /package/build/{render-command-TKO7PYVO.js.map → render-command-RBG7263F.js.map} +0 -0
  114. /package/build/{render-command-S7D3MWYC.js.map → render-command-XZMQVFWB.js.map} +0 -0
  115. /package/build/{run-command-YYML7BJX.js.map → run-command-DDRX6HA4.js.map} +0 -0
  116. /package/build/{src-DVFFJLN5.js.map → src-DFC4OJXU.js.map} +0 -0
  117. /package/build/{src-WV4RZ4FT.js.map → src-NDQ3YSVS.js.map} +0 -0
  118. /package/build/{src-GQFPGSHL.js.map → src-QDEPJEVY.js.map} +0 -0
  119. /package/build/{src-SCGDSQRH.js.map → src-RLHCQYHW.js.map} +0 -0
  120. /package/build/{src-XSN6C5L2.js.map → src-WZQSHEYJ.js.map} +0 -0
  121. /package/build/{src-5VO6B75Q.js.map → src-YKFH53HG.js.map} +0 -0
  122. /package/build/{sync-types-M76E2RFC.js.map → sync-types-5QBTKL42.js.map} +0 -0
  123. /package/build/{uninstall-LDNBVTQR.js.map → uninstall-X66KBPSO.js.map} +0 -0
@@ -5,21 +5,21 @@ import {
5
5
  } from "./chunk-EDFOB3LN.js";
6
6
  import {
7
7
  GridAppLayout
8
- } from "./chunk-YYH6VZI3.js";
8
+ } from "./chunk-QP2SHVU3.js";
9
9
  import {
10
10
  extractHttpError
11
- } from "./chunk-4ZQFECEW.js";
11
+ } from "./chunk-ZLPYLX6E.js";
12
12
  import {
13
13
  WIX_LOCK_FILENAME,
14
14
  getSourceFolder
15
15
  } from "./chunk-SEOIN2A6.js";
16
16
  import {
17
17
  pathExists
18
- } from "./chunk-ETAVRPIY.js";
18
+ } from "./chunk-QPYNVASM.js";
19
19
  import {
20
20
  CliError,
21
21
  CliErrorCode
22
- } from "./chunk-YQW75RJ5.js";
22
+ } from "./chunk-PWEJ3IWM.js";
23
23
  import {
24
24
  __toESM,
25
25
  init_esm_shims
@@ -107,4 +107,4 @@ export {
107
107
  isSiteNotPublishedError,
108
108
  loadProjectGridAppContent
109
109
  };
110
- //# sourceMappingURL=chunk-D6HNYFE6.js.map
110
+ //# sourceMappingURL=chunk-ZM6OUS2J.js.map
@@ -2,33 +2,34 @@ import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
3
  import {
4
4
  syncTypesWithAuth
5
- } from "./chunk-PF4VD6IT.js";
5
+ } from "./chunk-5WRZJFXK.js";
6
6
  import {
7
7
  loadProjectGridAppContent
8
- } from "./chunk-D6HNYFE6.js";
8
+ } from "./chunk-ZM6OUS2J.js";
9
9
  import {
10
10
  createLogger,
11
11
  httpRequest
12
- } from "./chunk-WJQFCMN3.js";
12
+ } from "./chunk-BCT5PAPG.js";
13
+ import "./chunk-CNXKF7E3.js";
13
14
  import {
14
15
  authenticate
15
- } from "./chunk-DVR2CMCO.js";
16
+ } from "./chunk-UHGVP5PT.js";
16
17
  import {
17
18
  createI18nT
18
- } from "./chunk-55EFTE5M.js";
19
+ } from "./chunk-3P5PTIBR.js";
19
20
  import {
20
21
  createVeloCLIServer,
21
22
  debounceQueue,
22
23
  require_chokidar
23
- } from "./chunk-TCSPCAZI.js";
24
+ } from "./chunk-AOWEDNOF.js";
24
25
  import {
25
26
  require_normalize_path
26
27
  } from "./chunk-EDFOB3LN.js";
27
- import "./chunk-Y5LMYOCJ.js";
28
+ import "./chunk-TIHCOJHY.js";
28
29
  import "./chunk-OJHDGJWP.js";
29
30
  import {
30
31
  updateFiles
31
- } from "./chunk-OEYFKLWJ.js";
32
+ } from "./chunk-YHMLI3NZ.js";
32
33
  import {
33
34
  GridAppLayout
34
35
  } from "./chunk-6LI4WGAW.js";
@@ -37,27 +38,27 @@ import {
37
38
  GridAppLayout as GridAppLayout2,
38
39
  createApp,
39
40
  pagesDiff
40
- } from "./chunk-YYH6VZI3.js";
41
+ } from "./chunk-QP2SHVU3.js";
41
42
  import {
42
43
  saveProjectModel
43
- } from "./chunk-ZIXYUOVJ.js";
44
+ } from "./chunk-JASQWANH.js";
44
45
  import "./chunk-Y4ZVXLXY.js";
45
- import "./chunk-BGKFJNUK.js";
46
- import "./chunk-G34I4OXF.js";
46
+ import "./chunk-IC6K6CSD.js";
47
47
  import {
48
48
  isHttpError,
49
49
  openBrowser,
50
50
  pLimit
51
- } from "./chunk-XOFZJ3JQ.js";
51
+ } from "./chunk-KJCRO3PB.js";
52
52
  import {
53
53
  ErrorViewer,
54
54
  extractHttpError,
55
55
  writeCrashReport
56
- } from "./chunk-4ZQFECEW.js";
56
+ } from "./chunk-ZLPYLX6E.js";
57
57
  import {
58
58
  renderSync,
59
59
  require_react
60
- } from "./chunk-4YD2W3LA.js";
60
+ } from "./chunk-4XPWCRGU.js";
61
+ import "./chunk-2K5KKUL3.js";
61
62
  import {
62
63
  wixCliCliMessageDisplayed,
63
64
  wixCliCodeHasBeenChanged,
@@ -66,10 +67,9 @@ import {
66
67
  wixCliUserResponseToCliMessage
67
68
  } from "./chunk-WN3D6AOY.js";
68
69
  import "./chunk-W423UTD3.js";
69
- import "./chunk-2NWGTFAC.js";
70
70
  import "./chunk-YU54OBFT.js";
71
71
  import "./chunk-XMTHMR2B.js";
72
- import "./chunk-LWQGSEXR.js";
72
+ import "./chunk-YX66M2XN.js";
73
73
  import {
74
74
  getDebugLogFilePath,
75
75
  getPagesFolder,
@@ -79,14 +79,14 @@ import {
79
79
  import {
80
80
  outputFile,
81
81
  pathExists
82
- } from "./chunk-ETAVRPIY.js";
82
+ } from "./chunk-QPYNVASM.js";
83
83
  import {
84
84
  getTestOverrides
85
85
  } from "./chunk-PX2L3CCA.js";
86
86
  import {
87
87
  CliError,
88
88
  CliErrorCode
89
- } from "./chunk-YQW75RJ5.js";
89
+ } from "./chunk-PWEJ3IWM.js";
90
90
  import {
91
91
  __toESM,
92
92
  init_esm_shims
@@ -146,8 +146,8 @@ async function exit(shouldManuallyExit, isSynchronous, signal) {
146
146
  done();
147
147
  }
148
148
  function addHook(options) {
149
- const { onExit, minimumWait, isSynchronous } = options;
150
- const asyncCallbackConfig = [onExit, minimumWait];
149
+ const { onExit, wait, isSynchronous } = options;
150
+ const asyncCallbackConfig = [onExit, wait];
151
151
  if (isSynchronous) {
152
152
  callbacks.add(onExit);
153
153
  } else {
@@ -177,12 +177,12 @@ function asyncExitHook(onExit, options = {}) {
177
177
  if (typeof onExit !== "function") {
178
178
  throw new TypeError("onExit must be a function");
179
179
  }
180
- if (!(typeof options.minimumWait === "number" && options.minimumWait > 0)) {
181
- throw new TypeError("minimumWait must be set to a positive numeric value");
180
+ if (!(typeof options.wait === "number" && options.wait > 0)) {
181
+ throw new TypeError("wait must be set to a positive numeric value");
182
182
  }
183
183
  return addHook({
184
184
  onExit,
185
- minimumWait: options.minimumWait,
185
+ wait: options.wait,
186
186
  isSynchronous: false
187
187
  });
188
188
  }
@@ -766,7 +766,7 @@ async function dev(initialModel, { biLogger, errorReporter }, {
766
766
  await openLocalEditor(serverPort);
767
767
  const { ctrlCPromise } = keyWatcher.watch();
768
768
  keyWatcher.on("e", () => openLocalEditor(serverPort));
769
- asyncExitHook(server.close, { minimumWait: 500 });
769
+ asyncExitHook(server.close, { wait: 500 });
770
770
  await ctrlCPromise;
771
771
  } finally {
772
772
  keyWatcher?.unwatch();
@@ -776,4 +776,4 @@ async function dev(initialModel, { biLogger, errorReporter }, {
776
776
  export {
777
777
  dev
778
778
  };
779
- //# sourceMappingURL=dev-B7FMRZWG.js.map
779
+ //# sourceMappingURL=dev-62KN3SLL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../cli-site-old/src/dev/index.ts","../../cli-site-old/src/dev/dev.ts","../../../node_modules/exit-hook/index.js","../../cli-site-old/src/environment.ts","../../cli-site-old/src/gridapp/createGridApp.ts","../../cli-site-old/src/gridapp/error-handlers/maxFileSizeErrorHandler.ts","../../cli-site-old/src/gridapp/startGridAppUpdater.ts","../../cli-site-old/src/key-watcher.ts","../../cli-site-old/src/bi.ts","../../cli-site-old/src/dev/sync-all-to-revision.ts","../../cli-site-old/src/sources/index.ts","../../cli-site-old/src/sources/pages-diff.ts"],"sourcesContent":["export { dev } from './dev.js';\n","import { createVeloCLIServer } from '@wix/editor-velo-cli-comm-api';\nimport { openBrowser } from '@wix/user-browser';\nimport { asyncExitHook } from 'exit-hook';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { ErrorViewer } from '@wix/cli-error-reporting';\nimport { writeCrashReport } from '@wix/cli-debug-log';\nimport { getDebugLogFilePath } from '@wix/cli-core-definitions';\nimport type { CommandServices } from '@wix/cli-command-contract';\nimport { createElement } from 'react';\nimport { renderSync } from '@wix/cli-ui-kit';\nimport { isHttpError } from '@wix/cli-http-client';\nimport { getDevEditorBaseUrl } from '../environment.js';\nimport { createMutableGridApp } from '../gridapp/createGridApp.js';\nimport { startGridAppUpdater } from '../gridapp/startGridAppUpdater.js';\nimport { KeyWatcher } from '../key-watcher.js';\nimport type { ProjectModel } from '../model.js';\nimport { saveProjectModel } from '../model.js';\nimport { createLogger } from '../logger.js';\nimport { sitesBiEvents } from '../bi.js';\nimport { createI18nT } from '../i18n.js';\nimport { authenticate } from '../authentication.js';\nimport { syncAllToRevision } from './sync-all-to-revision.js';\n\nexport async function dev(\n initialModel: ProjectModel,\n { biLogger, errorReporter }: CommandServices,\n {\n https = false,\n }: {\n https?: boolean;\n }\n) {\n let model = initialModel;\n const authState = await authenticate({\n metaSiteId: model.metaSiteId,\n biLogger,\n errorReporter,\n });\n\n const t = createI18nT();\n const logger = createLogger({ t });\n const biEvents = sitesBiEvents(biLogger);\n\n const server = createVeloCLIServer({ https });\n\n let gridAppId: string;\n try {\n gridAppId = await createMutableGridApp(model.projectFolder, {\n authState,\n });\n } catch (error) {\n const message = isHttpError(error) && error.response?.data?.message;\n\n throw new CliError({\n code: CliErrorCode.FailedToCreateGridApp({\n error: message,\n }),\n cause: error,\n });\n }\n\n await syncAllToRevision(model, { authState }, logger);\n\n const { close } = startGridAppUpdater(\n model,\n gridAppId,\n {\n authState,\n onError(error) {\n logger.logNewLine();\n errorReporter.reportError(error);\n writeCrashReport(getDebugLogFilePath(model.projectFolder), error);\n renderSync(createElement(ErrorViewer, { error }));\n },\n },\n logger,\n biEvents\n );\n\n const onServerDisconnected = (devEditorUrl: string) => {\n const message = logger.logNoOpenedTab(devEditorUrl);\n biEvents.messageDisplayed({ model, message });\n };\n\n const onSyncDevEditorChanges = async (revision: string) => {\n if (revision !== model.revision) {\n const newModel = { ...model, revision };\n\n await saveProjectModel(newModel);\n const message = logger.logUpdatedLocalCodeToRevision({\n revision: newModel.revision,\n });\n biEvents.messageDisplayed({ message, model });\n\n await syncAllToRevision(newModel, { authState }, logger);\n\n model = newModel;\n }\n };\n\n const openLocalEditor = async (serverPort: number) => {\n biEvents.userResponse({\n action: 'Browser opened',\n message: 'Opening the Local Editor',\n model,\n });\n\n const devEditorUrl = getDevEditorUrl(serverPort);\n\n if (https) {\n await openBrowser(new URL(`https://localhost:${serverPort}`).href);\n } else {\n await openBrowser(devEditorUrl);\n }\n };\n\n const getDevEditorUrl = (serverPort: number) => {\n const url = new URL(model.metaSiteId, getDevEditorBaseUrl());\n\n url.searchParams.append('localPort', serverPort.toString());\n url.searchParams.append('secureSocket', https.toString());\n\n return url.toString();\n };\n\n let keyWatcher: KeyWatcher | undefined;\n try {\n const { port: serverPort } = await server.serve(gridAppId, getDevEditorUrl);\n\n const devEditorUrl = getDevEditorUrl(serverPort);\n\n server.on('disconnected', () => onServerDisconnected(devEditorUrl));\n server.on('syncDevEditorChanges', onSyncDevEditorChanges);\n\n keyWatcher = new KeyWatcher();\n\n logger.logOpeningBrowser(https);\n\n await openLocalEditor(serverPort);\n const { ctrlCPromise } = keyWatcher.watch();\n keyWatcher.on('e', () => openLocalEditor(serverPort));\n\n asyncExitHook(server.close, { wait: 500 });\n await ctrlCPromise;\n } finally {\n keyWatcher?.unwatch();\n await Promise.all([server.close(), close()]);\n }\n}\n","import process from 'node:process';\n\nconst asyncCallbacks = new Set();\nconst callbacks = new Set();\n\nlet isCalled = false;\nlet isRegistered = false;\n\nasync function exit(shouldManuallyExit, isSynchronous, signal) {\n\tif (isCalled) {\n\t\treturn;\n\t}\n\n\tisCalled = true;\n\n\tif (asyncCallbacks.size > 0 && isSynchronous) {\n\t\tconsole.error([\n\t\t\t'SYNCHRONOUS TERMINATION NOTICE:',\n\t\t\t'When explicitly exiting the process via process.exit or via a parent process,',\n\t\t\t'asynchronous tasks in your exitHooks will not run. Either remove these tasks,',\n\t\t\t'use gracefulExit() instead of process.exit(), or ensure your parent process',\n\t\t\t'sends a SIGINT to the process running this code.',\n\t\t].join(' '));\n\t}\n\n\tconst exitCode = 128 + signal;\n\n\tconst done = (force = false) => {\n\t\tif (force === true || shouldManuallyExit === true) {\n\t\t\tprocess.exit(exitCode); // eslint-disable-line unicorn/no-process-exit\n\t\t}\n\t};\n\n\tfor (const callback of callbacks) {\n\t\tcallback(exitCode);\n\t}\n\n\tif (isSynchronous) {\n\t\tdone();\n\t\treturn;\n\t}\n\n\tconst promises = [];\n\tlet forceAfter = 0;\n\tfor (const [callback, wait] of asyncCallbacks) {\n\t\tforceAfter = Math.max(forceAfter, wait);\n\t\tpromises.push(Promise.resolve(callback(exitCode)));\n\t}\n\n\t// Force exit if we exceeded our wait value\n\tconst asyncTimer = setTimeout(() => {\n\t\tdone(true);\n\t}, forceAfter);\n\n\tawait Promise.all(promises);\n\tclearTimeout(asyncTimer);\n\tdone();\n}\n\nfunction addHook(options) {\n\tconst {onExit, wait, isSynchronous} = options;\n\tconst asyncCallbackConfig = [onExit, wait];\n\n\tif (isSynchronous) {\n\t\tcallbacks.add(onExit);\n\t} else {\n\t\tasyncCallbacks.add(asyncCallbackConfig);\n\t}\n\n\tif (!isRegistered) {\n\t\tisRegistered = true;\n\n\t\t// Exit cases that support asynchronous handling\n\t\tprocess.once('beforeExit', exit.bind(undefined, true, false, -128));\n\t\tprocess.once('SIGINT', exit.bind(undefined, true, false, 2));\n\t\tprocess.once('SIGTERM', exit.bind(undefined, true, false, 15));\n\n\t\t// Explicit exit events. Calling will force an immediate exit and run all\n\t\t// synchronous hooks. Explicit exits must not extend the node process\n\t\t// artificially. Will log errors if asynchronous calls exist.\n\t\tprocess.once('exit', exit.bind(undefined, false, true, 0));\n\n\t\t// PM2 Cluster shutdown message. Caught to support async handlers with pm2,\n\t\t// needed because explicitly calling process.exit() doesn't trigger the\n\t\t// beforeExit event, and the exit event cannot support async handlers,\n\t\t// since the event loop is never called after it.\n\t\tprocess.on('message', message => {\n\t\t\tif (message === 'shutdown') {\n\t\t\t\texit(true, true, -128);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn () => {\n\t\tif (isSynchronous) {\n\t\t\tcallbacks.delete(onExit);\n\t\t} else {\n\t\t\tasyncCallbacks.delete(asyncCallbackConfig);\n\t\t}\n\t};\n}\n\nexport default function exitHook(onExit) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\tisSynchronous: true,\n\t});\n}\n\nexport function asyncExitHook(onExit, options = {}) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\tif (!(typeof options.wait === 'number' && options.wait > 0)) {\n\t\tthrow new TypeError('wait must be set to a positive numeric value');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\twait: options.wait,\n\t\tisSynchronous: false,\n\t});\n}\n\nexport function gracefulExit(signal = 0) {\n\texit(true, false, -128 + signal);\n}\n","import { getTestOverrides } from '@wix/cli-test-overrides';\n\nconst DEV_EDITOR_BASE_URL = 'https://wix.com/editor/';\n\nexport function getDevEditorBaseUrl(): string {\n return getTestOverrides().devEditorBaseUrl ?? DEV_EDITOR_BASE_URL;\n}\n","import type { AuthState } from '@wix/cli-auth';\nimport { createApp } from '@wix/ambassador-velo-apps-v1-app/http';\nimport type {\n App,\n CreateAppRequest,\n} from '@wix/ambassador-velo-apps-v1-app/types';\nimport { AppType } from '@wix/ambassador-velo-apps-v1-app/types';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { httpRequest } from '../http-request.js';\nimport { catchFilesMaxSizeError } from './error-handlers/maxFileSizeErrorHandler.js';\nimport { loadProjectGridAppContent } from './loadProjectGridAppContent.js';\n\nasync function createAppWithParams(\n params: CreateAppRequest,\n opts: {\n authState: AuthState;\n }\n): Promise<string> {\n let app: App | undefined;\n\n try {\n const response = await httpRequest(\n { type: 'code', authState: opts.authState },\n createApp(params)\n );\n app = response.data.app;\n } catch (err) {\n catchFilesMaxSizeError(err, params.content?.files);\n\n throw err;\n }\n\n if (!app?.id) {\n throw new CliError({\n code: CliErrorCode.InvalidCreateAppResponse(),\n info: { app },\n cause: null,\n });\n }\n\n return app.id;\n}\n\nexport async function createMutableGridApp(\n projectFolder: string,\n opts: {\n authState: AuthState;\n }\n) {\n const content = await loadProjectGridAppContent(projectFolder);\n\n return createAppWithParams(\n {\n app: {\n mutable: true,\n appType: AppType.VELO_ISOLATED,\n },\n content,\n },\n opts\n );\n}\n","import type { File } from '@wix/ambassador-velo-apps-v1-app/types';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { extractHttpError } from '@wix/cli-http-client';\n\nexport function catchFilesMaxSizeError(err: unknown, files: File[] = []) {\n if (!files.length) {\n return;\n }\n\n const httpError = extractHttpError(err);\n\n if (!httpError) {\n return;\n }\n\n const filesMaxSizeRawViolations =\n httpError.response?.data?.details?.validationError?.fieldViolations?.filter(\n (v: { violatedRule: string }) => v.violatedRule === 'MAX_LENGTH'\n );\n\n if (!filesMaxSizeRawViolations?.length) {\n return;\n }\n\n const maxSizeViolationsData = tryExtractMaxSizeViolationMetadata(\n filesMaxSizeRawViolations\n );\n\n throw new CliError({\n code: CliErrorCode.GridAppFilesMaxLengthExceeded({\n maxSizeViolationsData,\n filePaths: files.map((f) => f.path ?? '[unknown file path]'),\n }),\n cause: httpError,\n });\n}\n\nfunction tryExtractMaxSizeViolationMetadata(\n filesMaxSizeViolations: Array<{ field: string; description: string }>\n) {\n const fileIndexRegex = /\\[(?<fileIndex>\\d+)\\].content/;\n const expectedAndReceivedSizeRegex =\n /has size (?<receivedSize>\\d+), expected (?<expectedSize>\\d+) or less/;\n const violationsData: {\n expectedSize?: number;\n files: Array<{ fileIndex: number; receivedSize: number }>;\n } = {\n expectedSize: undefined,\n files: [],\n };\n\n for (const filesMaxSizeViolation of filesMaxSizeViolations) {\n const fileIndexMatchResult = fileIndexRegex.exec(\n filesMaxSizeViolation.field\n );\n const expectedAndReceivedSizeMatchResult =\n expectedAndReceivedSizeRegex.exec(filesMaxSizeViolation.description);\n\n if (\n !(\n fileIndexMatchResult?.groups?.fileIndex &&\n expectedAndReceivedSizeMatchResult?.groups?.receivedSize &&\n expectedAndReceivedSizeMatchResult.groups.expectedSize\n )\n ) {\n return null;\n }\n\n violationsData.expectedSize ??= Math.trunc(\n parseInt(expectedAndReceivedSizeMatchResult.groups.expectedSize, 10) /\n 1000\n );\n\n violationsData.files.push({\n receivedSize: Math.trunc(\n parseInt(expectedAndReceivedSizeMatchResult.groups.receivedSize, 10) /\n 1000\n ),\n fileIndex: parseInt(fileIndexMatchResult.groups.fileIndex, 10),\n });\n }\n\n return violationsData;\n}\n","import { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { AuthState } from '@wix/cli-auth';\nimport { updateFiles } from '@wix/ambassador-velo-ide-v1-gridapp-filestructure/http';\nimport { GridAppLayout } from '@wix/ambassador-velo-ide-v1-gridapp-filestructure/types';\nimport { getSourceFolder } from '@wix/velo-github-layout-definitions';\nimport { watch } from 'chokidar';\nimport { debounceQueue } from '@wix/debounce-queue';\nimport pLimit from 'p-limit';\nimport normalizePath from 'normalize-path';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { httpRequest } from '../http-request.js';\nimport type { ProjectModel } from '../model.js';\nimport type { Logger } from '../logger.js';\nimport type { SitesBiEvents } from '../bi.js';\nimport { catchFilesMaxSizeError } from './error-handlers/maxFileSizeErrorHandler.js';\n\ntype ChokidarEventParams = [\n 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir',\n string,\n];\n\nconst WATCH_FS_EVENTS_DEBOUNCE_TIME = 1000;\n\nconst getSectionName = (path: string) => {\n if (path.startsWith('src/pages')) {\n return 'public';\n }\n if (path.startsWith('src/backend')) {\n return 'backend';\n }\n return 'other';\n};\n\nexport function startGridAppUpdater(\n model: ProjectModel,\n gridAppId: string,\n opts: {\n onError: (e: CliError) => void;\n authState: AuthState;\n },\n logger: Logger,\n biEvents: SitesBiEvents\n) {\n const { projectFolder } = model;\n const limit = pLimit(1);\n\n const watcher = watch(getSourceFolder(projectFolder), {\n disableGlobbing: true,\n cwd: projectFolder,\n ignoreInitial: true,\n })\n .on(\n 'all',\n debounceQueue(async (events: ChokidarEventParams[]) => {\n await limit(async () => {\n const logSynced = logger.logSyncingLocalCode();\n const { added, changed, removed } =\n normalizeChokidarBatchedEvents(events);\n const addedArray = Array.from(added.values()).map((path) => ({\n path,\n type: 'create',\n }));\n const changedArray = Array.from(changed.values()).map((path) => ({\n path,\n type: 'update',\n }));\n const removedArray = Array.from(removed.values()).map((path) => ({\n path,\n type: 'delete',\n }));\n\n for (const val of [...addedArray, ...changedArray, ...removedArray]) {\n biEvents.file({\n model,\n action: val.type as 'create' | 'update' | 'delete',\n path: val.path,\n oldPath: '',\n sectionName: getSectionName(val.path),\n });\n if (val.type === 'update') {\n biEvents.codeChanged(model, val.path);\n }\n }\n\n try {\n await writeFiles({\n filesToUpdate: await Promise.all(\n addedArray.concat(changedArray).map(async (val) => ({\n path: normalizePath(val.path),\n content: await readFile(\n join(projectFolder, val.path),\n 'utf8'\n ),\n }))\n ),\n removedArray,\n gridAppId,\n authState: opts.authState,\n });\n\n const message = logSynced.success();\n biEvents.messageDisplayed({ message, model });\n biEvents.readyForReloadAfterCodeChanged(model);\n } catch (e) {\n logSynced.fail();\n const error = new CliError({\n code: CliErrorCode.GridAppFailedToUpdateFiles(),\n cause: e,\n info: {\n added,\n changed,\n removed,\n },\n });\n opts.onError(error);\n }\n });\n }, WATCH_FS_EVENTS_DEBOUNCE_TIME)\n )\n .on('error', (e) => {\n const error = new CliError({\n code: CliErrorCode.FailedToWatchFiles(),\n cause: e,\n });\n\n opts.onError(error);\n });\n\n return { close: () => watcher.close() };\n}\n\nfunction normalizeChokidarBatchedEvents(events: ChokidarEventParams[]) {\n return events.reduce(\n (result, [eventType, filePath]) => {\n switch (eventType) {\n case 'add': {\n result.added.add(filePath);\n break;\n }\n case 'change': {\n result.changed.add(filePath);\n break;\n }\n case 'unlink': {\n result.added.delete(filePath);\n result.changed.delete(filePath);\n result.removed.add(filePath);\n break;\n }\n case 'unlinkDir': {\n const filePathAsDir = filePath.endsWith('/')\n ? filePath\n : `${filePath}/`;\n for (const filePath of result.added) {\n if (filePath.startsWith(filePathAsDir)) {\n result.added.delete(filePath);\n }\n }\n for (const filePath of result.changed) {\n if (filePath.startsWith(filePathAsDir)) {\n result.changed.delete(filePath);\n }\n }\n result.removed.add(filePath);\n break;\n }\n case 'addDir': {\n break;\n }\n }\n return result;\n },\n {\n added: new Set<string>(),\n changed: new Set<string>(),\n removed: new Set<string>(),\n }\n );\n}\n\nasync function writeFiles({\n filesToUpdate,\n removedArray,\n gridAppId,\n authState,\n}: {\n filesToUpdate: Array<{ path: string; content: string }>;\n removedArray: Array<{ path: string; type: string }>;\n gridAppId: string;\n authState: AuthState;\n}) {\n try {\n await httpRequest(\n {\n type: 'code',\n authState,\n },\n updateFiles({\n gridAppId,\n layout: GridAppLayout.GITHUB,\n filesToUpdate,\n ignoreForbiddenPaths: true,\n pathsToDelete: removedArray.map((val) => val.path),\n })\n );\n } catch (err) {\n catchFilesMaxSizeError(err, filesToUpdate);\n throw err;\n }\n}\n","import readline from 'node:readline';\nimport { stdin } from 'node:process';\n\ninterface Key {\n ctrl: boolean;\n name: string;\n sequence: string;\n meta: boolean;\n shift: boolean;\n}\n\ntype Callback = (key: Key) => void;\nexport class KeyWatcher {\n private actions = new Map<string, Callback>();\n\n private watchExitProcess() {\n return new Promise<void>((resolve) => {\n this.on('c', (key) => {\n if (key.ctrl) {\n resolve();\n }\n });\n });\n }\n\n on(key: string, callback: Callback) {\n this.actions.set(key, callback);\n }\n\n watch() {\n const rl = readline.createInterface(stdin);\n\n readline.emitKeypressEvents(stdin, rl);\n\n if (stdin.isTTY) {\n // This is required since in test we don't have a terminal and setRawMode is undefined\n stdin.setRawMode(true);\n stdin.setEncoding('utf8');\n }\n\n stdin.on('keypress', this.handleKeyPress);\n\n return {\n ctrlCPromise: this.watchExitProcess(),\n };\n }\n\n unwatch() {\n if (stdin.isTTY) {\n // This is required since in test we don't have a terminal and setRawMode is undefined\n stdin.setRawMode(false);\n }\n stdin.off('keypress', this.handleKeyPress);\n stdin.pause();\n this.actions.clear();\n }\n\n handleKeyPress = (_: string, key: Key) => {\n this.actions.get(key.name)?.(key);\n };\n}\n","import { randomUUID } from 'node:crypto';\nimport {\n wixCliFileFolderCreatedRenamedDeleted,\n wixCliCliMessageDisplayed,\n wixCliCodeHasBeenChanged,\n wixCliUserResponseToCliMessage,\n wixCliReadyForReloadAfterCodeChange,\n} from '@wix/bi-logger-wix-cli/v2';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport type { ProjectModel } from './model.js';\n\nexport const sitesBiEvents = (biLogger: BiLogger) => ({\n file: ({\n model,\n action,\n path,\n sectionName,\n oldPath,\n }: {\n model: ProjectModel;\n action: 'create' | 'update' | 'delete';\n path: string;\n sectionName: string;\n oldPath: string;\n }) => {\n void biLogger.report(\n wixCliFileFolderCreatedRenamedDeleted({\n action,\n path,\n sectionName,\n oldPath,\n siteRevision: Number(model.revision),\n })\n );\n },\n codeChanged: (model: ProjectModel, fileName: string) => {\n void biLogger.report(\n wixCliCodeHasBeenChanged({\n fileName,\n siteRevision: Number(model.revision),\n })\n );\n },\n readyForReloadAfterCodeChanged: (model: ProjectModel) => {\n void biLogger.report(\n wixCliReadyForReloadAfterCodeChange({\n siteRevision: Number(model.revision),\n })\n );\n },\n messageDisplayed: ({\n message,\n model,\n }: {\n message: string;\n model: ProjectModel;\n }) => {\n void biLogger.report(\n wixCliCliMessageDisplayed({\n message,\n messageId: randomUUID(),\n siteRevision: Number(model.revision),\n })\n );\n },\n userResponse: ({\n model,\n action,\n message,\n }: {\n model: ProjectModel;\n action: 'Browser opened';\n message: string;\n }) => {\n void biLogger.report(\n wixCliUserResponseToCliMessage({\n action,\n message,\n messageId: randomUUID(),\n siteRevision: Number(model.revision),\n })\n );\n },\n});\n\nexport type SitesBiEvents = ReturnType<typeof sitesBiEvents>;\n","import { rm } from 'node:fs/promises';\nimport type { AuthState } from '@wix/cli-auth';\nimport { writeCrashReport } from '@wix/cli-debug-log';\nimport { getTypesDir } from '@wix/velo-github-layout-definitions';\nimport { getDebugLogFilePath } from '@wix/cli-core-definitions';\nimport type { ProjectModel } from '../model.js';\nimport { syncPages } from '../sources/index.js';\nimport { syncTypesWithAuth } from '../sync-types/index.js';\nimport type { Logger } from '../logger.js';\n\nexport async function syncAllToRevision(\n model: ProjectModel,\n opts: {\n authState: AuthState;\n },\n logger: Logger\n) {\n const logTypesSynced = logger.logSyncingTypesToRevision(model.revision);\n try {\n await syncTypesWithAuth(model, { authState: opts.authState });\n logTypesSynced.success();\n } catch (error) {\n // As a workaround until the types sync can handle large projects, this error is recoverable\n writeCrashReport(getDebugLogFilePath(model.projectFolder), error);\n logTypesSynced.fail();\n await rm(getTypesDir(model.projectFolder), {\n recursive: true,\n force: true,\n }).catch((e: unknown) => {\n writeCrashReport(getDebugLogFilePath(model.projectFolder), e);\n logger.logRecoverableFailureToRemoveTypesDir(e);\n });\n }\n\n const logPagesSynced = logger.logSyncingPagesToRevision(model.revision);\n try {\n await syncPages(model, { authState: opts.authState });\n logPagesSynced.success();\n } catch (error) {\n logPagesSynced.fail();\n throw error;\n }\n}\n","import { readdir } from 'node:fs/promises';\nimport { pagesDiff } from '@wix/ambassador-velo-apps-v1-app/http';\nimport type { PagesDiffRequest } from '@wix/ambassador-velo-apps-v1-app/types';\nimport { GridAppLayout } from '@wix/ambassador-velo-apps-v1-app/types';\nimport {\n getPagesFolder,\n getSourceFolder,\n} from '@wix/velo-github-layout-definitions';\nimport type { AuthState } from '@wix/cli-auth';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { pathExists } from '@wix/cli-fs';\nimport { httpRequest } from '../http-request.js';\nimport type { ProjectModel } from '../model.js';\nimport { createPages, deletePages, renamePages } from './pages-diff.js';\n\nexport async function syncPages(\n model: ProjectModel,\n opts: {\n authState: AuthState;\n }\n): Promise<void> {\n const pagesFolder = getPagesFolder(model.projectFolder);\n\n if (!(await pathExists(pagesFolder))) {\n throw new CliError({\n code: CliErrorCode.NoPagesDirectoryFound({\n srcDir: getSourceFolder(model.projectFolder),\n }),\n cause: null,\n });\n }\n\n const params: PagesDiffRequest = {\n layout: GridAppLayout.GITHUB,\n sourcePagesPaths: await readdir(pagesFolder),\n targetRevision: model.revision,\n };\n const { data } = await httpRequest(\n {\n authState: opts.authState,\n type: 'code',\n },\n pagesDiff(params)\n ).catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToGetPagesDiff(),\n cause: e,\n info: { ...params },\n });\n });\n\n await Promise.all([\n createPages(model.projectFolder, data.pagesDiff?.created ?? []),\n renamePages(model.projectFolder, data.pagesDiff?.renamed ?? []),\n deletePages(model.projectFolder, data.pagesDiff?.deleted ?? []),\n ]);\n}\n","import { join } from 'node:path';\nimport { rm, rename } from 'node:fs/promises';\nimport type {\n NewPage,\n RenamedPage,\n PageId,\n} from '@wix/ambassador-velo-apps-v1-app/types';\nimport { pathExists, outputFile } from '@wix/cli-fs';\n\nexport async function createPages(\n projectFolder: string,\n pages: NewPage[]\n): Promise<void> {\n await Promise.all(\n pages.map((page) => {\n if (!page.pageId?.path || !page.content) {\n return Promise.resolve();\n }\n\n return outputFile(join(projectFolder, page.pageId.path), page.content);\n })\n );\n}\n\nexport async function renamePages(\n projectFolder: string,\n pages: RenamedPage[]\n): Promise<void> {\n await Promise.all(\n pages.map(async (page) => {\n if (!page.sourcePath?.path || !page.targetPath?.path) {\n return;\n }\n\n const sourcePath = join(projectFolder, page.sourcePath.path);\n const targetPath = join(projectFolder, page.targetPath.path);\n\n if (await pathExists(targetPath)) {\n return rm(sourcePath, { force: true });\n }\n\n return rename(sourcePath, targetPath);\n })\n );\n}\n\nexport async function deletePages(\n projectFolder: string,\n pages: PageId[]\n): Promise<void> {\n await Promise.all(\n pages.map((page) => {\n if (!page.path) {\n return Promise.resolve();\n }\n\n return rm(join(projectFolder, page.path), { force: true });\n })\n );\n}\n"],"mappings":"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","names":["normalizePath","filePath","rm","join","join","GridAppLayout","rm"]}
package/build/index.js CHANGED
@@ -7,17 +7,17 @@ import {
7
7
  createBiLogger,
8
8
  package_default,
9
9
  version
10
- } from "./chunk-A6TCWKZD.js";
10
+ } from "./chunk-DUQT5IDQ.js";
11
11
  import {
12
12
  Argument,
13
13
  Command,
14
14
  createCommand
15
- } from "./chunk-KCTZ5EX4.js";
16
- import "./chunk-G34I4OXF.js";
15
+ } from "./chunk-K74KSKUR.js";
16
+ import "./chunk-IC6K6CSD.js";
17
17
  import {
18
18
  getUserInfo,
19
19
  pTimeout
20
- } from "./chunk-XOFZJ3JQ.js";
20
+ } from "./chunk-KJCRO3PB.js";
21
21
  import {
22
22
  OutdatedVersionMessage,
23
23
  createErrorHandler,
@@ -26,20 +26,20 @@ import {
26
26
  require_prerelease,
27
27
  require_semver,
28
28
  writeCrashReport
29
- } from "./chunk-4ZQFECEW.js";
29
+ } from "./chunk-ZLPYLX6E.js";
30
30
  import {
31
31
  createI18n,
32
32
  render,
33
33
  require_react
34
- } from "./chunk-4YD2W3LA.js";
35
- import "./chunk-WN3D6AOY.js";
36
- import "./chunk-W423UTD3.js";
34
+ } from "./chunk-4XPWCRGU.js";
37
35
  import {
38
36
  source_default
39
- } from "./chunk-2NWGTFAC.js";
37
+ } from "./chunk-2K5KKUL3.js";
38
+ import "./chunk-WN3D6AOY.js";
39
+ import "./chunk-W423UTD3.js";
40
40
  import "./chunk-YU54OBFT.js";
41
41
  import "./chunk-XMTHMR2B.js";
42
- import "./chunk-LWQGSEXR.js";
42
+ import "./chunk-YX66M2XN.js";
43
43
  import {
44
44
  SENTRY_DSN,
45
45
  VERSION_CACHE_FILENAME,
@@ -51,7 +51,7 @@ import {
51
51
  import {
52
52
  pathExists,
53
53
  readJson
54
- } from "./chunk-ETAVRPIY.js";
54
+ } from "./chunk-QPYNVASM.js";
55
55
  import {
56
56
  getTestOverrides,
57
57
  setupTestEnv,
@@ -61,7 +61,7 @@ import {
61
61
  CliError,
62
62
  CliErrorCode,
63
63
  require_lib
64
- } from "./chunk-YQW75RJ5.js";
64
+ } from "./chunk-PWEJ3IWM.js";
65
65
  import {
66
66
  __commonJS,
67
67
  __dirname,
@@ -4273,12 +4273,12 @@ async function importCliSite(projectFolder2) {
4273
4273
  }
4274
4274
  const config = await readWixConfig(projectFolder2);
4275
4275
  if (env.WIX_CLI_SITE_LIVE === "true" && Object.hasOwn(config, "veloAppId")) {
4276
- return import("./src-WV4RZ4FT.js");
4276
+ return import("./src-NDQ3YSVS.js");
4277
4277
  }
4278
4278
  if (env.WIX_CLI_SITE_V2 === "true" && !Object.hasOwn(config, "uiVersion")) {
4279
- return import("./src-IMPYJZRW.js");
4279
+ return import("./src-5FM5LBPG.js");
4280
4280
  }
4281
- return import("./src-5VO6B75Q.js");
4281
+ return import("./src-YKFH53HG.js");
4282
4282
  }
4283
4283
 
4284
4284
  // src/commands/login.tsx
@@ -4300,9 +4300,9 @@ var login = (services) => {
4300
4300
  const i18n = createI18n2();
4301
4301
  return createCommand("login").description(i18n.t("login_command.description")).option("--api-key <token>", i18n.t("login_command.option.api_key")).action(async (options, command) => {
4302
4302
  const { apiKey } = options;
4303
- const { getUserInfo: getUserInfo2 } = await import("./src-GQFPGSHL.js");
4304
- const { LoginCommand } = await import("./LoginCommand-AQIYGH36.js");
4305
- const { renderCommand } = await import("./render-command-S7D3MWYC.js");
4303
+ const { getUserInfo: getUserInfo2 } = await import("./src-WZQSHEYJ.js");
4304
+ const { LoginCommand } = await import("./LoginCommand-PCBKTT6F.js");
4305
+ const { renderCommand } = await import("./render-command-XZMQVFWB.js");
4306
4306
  const userInfo = await getUserInfo2();
4307
4307
  await renderCommand(
4308
4308
  command,
@@ -4318,9 +4318,9 @@ var import_react2 = __toESM(require_react(), 1);
4318
4318
  var logout = (services) => {
4319
4319
  const i18n = createI18n2();
4320
4320
  return createCommand("logout").description(i18n.t("logout_command.description")).action(async (_, command) => {
4321
- const { getUserInfo: getUserInfo2 } = await import("./src-GQFPGSHL.js");
4322
- const { LogoutCommand } = await import("./LogoutCommand-LPI7NUZJ.js");
4323
- const { renderCommand } = await import("./render-command-S7D3MWYC.js");
4321
+ const { getUserInfo: getUserInfo2 } = await import("./src-WZQSHEYJ.js");
4322
+ const { LogoutCommand } = await import("./LogoutCommand-YY7MRKCM.js");
4323
+ const { renderCommand } = await import("./render-command-XZMQVFWB.js");
4324
4324
  const userInfo = await getUserInfo2();
4325
4325
  await renderCommand(
4326
4326
  command,
@@ -4335,9 +4335,9 @@ init_esm_shims();
4335
4335
  var telemetry = () => {
4336
4336
  const t = createI18nT();
4337
4337
  return createCommand("telemetry").description(t("telemetry_command.description")).addArgument(new Argument("<state>", "").choices(["on", "off"])).action(async (state) => {
4338
- const { updateUserConfig } = await import("./src-SCGDSQRH.js");
4339
- const { CliError: CliError2, CliErrorCode: CliErrorCode2 } = await import("./src-DVFFJLN5.js");
4340
- const { createLogger } = await import("./src-XSN6C5L2.js");
4338
+ const { updateUserConfig } = await import("./src-QDEPJEVY.js");
4339
+ const { CliError: CliError2, CliErrorCode: CliErrorCode2 } = await import("./src-RLHCQYHW.js");
4340
+ const { createLogger } = await import("./src-DFC4OJXU.js");
4341
4341
  const logger = createLogger();
4342
4342
  try {
4343
4343
  const telemetryEnabled = state === "on";
@@ -4358,9 +4358,9 @@ var import_react3 = __toESM(require_react(), 1);
4358
4358
  var whoami = (services) => {
4359
4359
  const i18n = createI18n2();
4360
4360
  return createCommand("whoami").description(i18n.t("whoami_command.description")).action(async (_, command) => {
4361
- const { getUserInfo: getUserInfo2 } = await import("./src-GQFPGSHL.js");
4362
- const { WhoamiCommand } = await import("./WhoamiCommand-BWXA3TXF.js");
4363
- const { renderCommand } = await import("./render-command-S7D3MWYC.js");
4361
+ const { getUserInfo: getUserInfo2 } = await import("./src-WZQSHEYJ.js");
4362
+ const { WhoamiCommand } = await import("./WhoamiCommand-GWPNPHRL.js");
4363
+ const { renderCommand } = await import("./render-command-XZMQVFWB.js");
4364
4364
  const userInfo = await getUserInfo2();
4365
4365
  await renderCommand(
4366
4366
  command,
@@ -4457,7 +4457,7 @@ async function createProgram({
4457
4457
  }
4458
4458
  }
4459
4459
  program.addCommand(login({ biLogger, errorReporter: errorReporter2 })).addCommand(whoami({ biLogger, errorReporter: errorReporter2 })).addCommand(logout({ biLogger, errorReporter: errorReporter2 })).addCommand(telemetry());
4460
- return program;
4460
+ return { hasCliAppInstalled: !!cliApp, program };
4461
4461
  }
4462
4462
 
4463
4463
  // src/index.tsx
@@ -4490,17 +4490,20 @@ try {
4490
4490
  writeCrashReport(getDebugLogFilePath(cwd2()), error);
4491
4491
  }
4492
4492
  );
4493
+ const { program, hasCliAppInstalled } = await createProgram({
4494
+ biLogger,
4495
+ errorReporter,
4496
+ projectFolder
4497
+ });
4493
4498
  if (packageDetails?.deprecated) {
4494
4499
  throw new CliError({
4495
- code: CliErrorCode.DeprecatedVersion(packageDetails),
4500
+ code: CliErrorCode.DeprecatedVersion({
4501
+ ...packageDetails,
4502
+ hasCliAppInstalled
4503
+ }),
4496
4504
  cause: void 0
4497
4505
  });
4498
4506
  }
4499
- const program = await createProgram({
4500
- biLogger,
4501
- errorReporter,
4502
- projectFolder
4503
- });
4504
4507
  addCommandInfoToErrorReports(program, { errorReporter });
4505
4508
  await program.parseAsync();
4506
4509
  if (packageDetails?.newestVersion === false) {
@@ -4509,7 +4512,8 @@ try {
4509
4512
  OutdatedVersionMessage,
4510
4513
  {
4511
4514
  currentVersion: packageDetails.currentVersion,
4512
- latestVersion: packageDetails.latestVersion
4515
+ latestVersion: packageDetails.latestVersion,
4516
+ hasCliAppInstalled
4513
4517
  }
4514
4518
  )
4515
4519
  );