@wix/cli-app 1.1.60 → 1.1.62

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 (102) hide show
  1. package/build/{CreateVersionCommand-Z6F5IKH5.js → CreateVersionCommand-IEF6U34E.js} +15 -15
  2. package/build/{DevCommand-YFEZ4QV5.js → DevCommand-SOODXUEP.js} +438 -299
  3. package/build/DevCommand-SOODXUEP.js.map +1 -0
  4. package/build/{GenerateCommand-KCV4YDNN.js → GenerateCommand-ARNW73TM.js} +108 -43
  5. package/build/{GenerateCommand-KCV4YDNN.js.map → GenerateCommand-ARNW73TM.js.map} +1 -1
  6. package/build/{LogsCommand-VBMGVYNU.js → LogsCommand-7TW36YZX.js} +5 -5
  7. package/build/PreviewCommand-ZZKRP2GF.js +23 -0
  8. package/build/{ReleaseCommand-5F3FPBXT.js → ReleaseCommand-SB2WWSVP.js} +15 -15
  9. package/build/{ServeCommand-G4FF4PT3.js → ServeCommand-GZKF6AN3.js} +14 -14
  10. package/build/{build-XZI3USNB.js → build-LHCSCFBM.js} +38 -9
  11. package/build/build-LHCSCFBM.js.map +1 -0
  12. package/build/{chunk-QVGYU6D4.js → chunk-2DRVDGHR.js} +5 -5
  13. package/build/chunk-2DRVDGHR.js.map +1 -0
  14. package/build/{chunk-USAOCISL.js → chunk-4WKSS3PU.js} +4 -4
  15. package/build/{chunk-CNZ3Q5PF.js → chunk-5R5H3Y2D.js} +105 -161
  16. package/build/chunk-5R5H3Y2D.js.map +1 -0
  17. package/build/chunk-6IX6CDWB.js +27644 -0
  18. package/build/chunk-6IX6CDWB.js.map +1 -0
  19. package/build/{chunk-VZJZSWRE.js → chunk-6US7335E.js} +3 -3
  20. package/build/{chunk-WRWNJYKZ.js → chunk-A3FHJ4EK.js} +3 -3
  21. package/build/{chunk-PKSGXFYA.js → chunk-HKX5ODUN.js} +3 -3
  22. package/build/{chunk-HUWYF2ET.js → chunk-KCNEUOW2.js} +8 -8
  23. package/build/{chunk-O42QDBJU.js → chunk-KJR4P55M.js} +3 -3
  24. package/build/{chunk-5QZS3HT7.js → chunk-KVM6MGID.js} +3 -3
  25. package/build/{chunk-VXE3IWKR.js → chunk-LMFNRK6X.js} +2 -2
  26. package/build/{chunk-DGTJGIY2.js → chunk-LULKQBSP.js} +5125 -2917
  27. package/build/chunk-LULKQBSP.js.map +1 -0
  28. package/build/{chunk-IG6IV6VM.js → chunk-MTEB33GR.js} +3 -3
  29. package/build/{chunk-36W5H7IG.js → chunk-PM4M3SGC.js} +195 -177
  30. package/build/chunk-PM4M3SGC.js.map +1 -0
  31. package/build/{chunk-4VTDNX5T.js → chunk-UE7LDQKD.js} +2 -2
  32. package/build/{chunk-2PTCXTKF.js → chunk-UZXKDHQZ.js} +5 -5
  33. package/build/{chunk-WRPV7SLY.js → chunk-V75TFIXI.js} +193 -20
  34. package/build/chunk-V75TFIXI.js.map +1 -0
  35. package/build/{chunk-7CGRTCDC.js → chunk-YW2RBPPY.js} +3 -3
  36. package/build/{chunk-QZOQAFHK.js → chunk-ZR3N5INU.js} +8 -8
  37. package/build/chunk-ZR3N5INU.js.map +1 -0
  38. package/build/cloudflare-runtime/entry.js +7157 -52
  39. package/build/cloudflare-runtime/getRegisteredExtensions.js +7095 -15
  40. package/build/index.js +20 -20
  41. package/build/platform-sdk/chunk-3U6QUCP3.js +2 -0
  42. package/build/platform-sdk/chunk-3U6QUCP3.js.map +1 -0
  43. package/build/platform-sdk/{chunk-QV4VBCJB.js → chunk-FLUCZ5U6.js} +2 -2
  44. package/build/platform-sdk/chunk-VXQAZIAE.js +2 -0
  45. package/build/platform-sdk/{chunk-EERHWVVD.js.map → chunk-VXQAZIAE.js.map} +1 -1
  46. package/build/platform-sdk/chunk-ZM5O3GFB.js +2 -0
  47. package/build/platform-sdk/chunk-ZM5O3GFB.js.map +1 -0
  48. package/build/platform-sdk/dashboard.js +1 -1
  49. package/build/platform-sdk/dashboard.js.map +1 -1
  50. package/build/platform-sdk/editor.js +2 -2
  51. package/build/platform-sdk/editor.js.map +1 -1
  52. package/build/platform-sdk/sdk-context.js +1 -1
  53. package/build/platform-sdk/sdk-context.js.map +1 -1
  54. package/build/platform-sdk/site.js +1 -1
  55. package/build/platform-sdk/site.js.map +1 -1
  56. package/build/platform-sdk/web-methods.js +1 -1
  57. package/build/platform-sdk/web-methods.js.map +1 -1
  58. package/build/{preview-VAHHFTRZ.js → preview-ZAKEXAJH.js} +13 -13
  59. package/build/{render-command-3AYSQXHN.js → render-command-XMQH723O.js} +6 -6
  60. package/package.json +8 -6
  61. package/schemas/custom-element.json +1 -1
  62. package/templates/custom-element/files/element.module.css.ejs +18 -5
  63. package/templates/custom-element/files/element.tsx.ejs +8 -5
  64. package/templates/custom-element/files/panel.tsx.ejs +25 -12
  65. package/templates/web-method/dependencies.json +5 -0
  66. package/templates/web-method/files/placeholder.ts.ejs +9 -2
  67. package/build/DevCommand-YFEZ4QV5.js.map +0 -1
  68. package/build/PreviewCommand-3OMHWDW6.js +0 -23
  69. package/build/build-XZI3USNB.js.map +0 -1
  70. package/build/chunk-36W5H7IG.js.map +0 -1
  71. package/build/chunk-CNZ3Q5PF.js.map +0 -1
  72. package/build/chunk-DGTJGIY2.js.map +0 -1
  73. package/build/chunk-FTC5AK3Y.js +0 -1367
  74. package/build/chunk-FTC5AK3Y.js.map +0 -1
  75. package/build/chunk-QVGYU6D4.js.map +0 -1
  76. package/build/chunk-QZOQAFHK.js.map +0 -1
  77. package/build/chunk-WRPV7SLY.js.map +0 -1
  78. package/build/platform-sdk/chunk-42XIZ4MH.js +0 -2
  79. package/build/platform-sdk/chunk-42XIZ4MH.js.map +0 -1
  80. package/build/platform-sdk/chunk-7EYXEF6M.js +0 -2
  81. package/build/platform-sdk/chunk-7EYXEF6M.js.map +0 -1
  82. package/build/platform-sdk/chunk-EERHWVVD.js +0 -2
  83. /package/build/{CreateVersionCommand-Z6F5IKH5.js.map → CreateVersionCommand-IEF6U34E.js.map} +0 -0
  84. /package/build/{LogsCommand-VBMGVYNU.js.map → LogsCommand-7TW36YZX.js.map} +0 -0
  85. /package/build/{PreviewCommand-3OMHWDW6.js.map → PreviewCommand-ZZKRP2GF.js.map} +0 -0
  86. /package/build/{ReleaseCommand-5F3FPBXT.js.map → ReleaseCommand-SB2WWSVP.js.map} +0 -0
  87. /package/build/{ServeCommand-G4FF4PT3.js.map → ServeCommand-GZKF6AN3.js.map} +0 -0
  88. /package/build/{chunk-USAOCISL.js.map → chunk-4WKSS3PU.js.map} +0 -0
  89. /package/build/{chunk-VZJZSWRE.js.map → chunk-6US7335E.js.map} +0 -0
  90. /package/build/{chunk-WRWNJYKZ.js.map → chunk-A3FHJ4EK.js.map} +0 -0
  91. /package/build/{chunk-PKSGXFYA.js.map → chunk-HKX5ODUN.js.map} +0 -0
  92. /package/build/{chunk-HUWYF2ET.js.map → chunk-KCNEUOW2.js.map} +0 -0
  93. /package/build/{chunk-O42QDBJU.js.map → chunk-KJR4P55M.js.map} +0 -0
  94. /package/build/{chunk-5QZS3HT7.js.map → chunk-KVM6MGID.js.map} +0 -0
  95. /package/build/{chunk-VXE3IWKR.js.map → chunk-LMFNRK6X.js.map} +0 -0
  96. /package/build/{chunk-IG6IV6VM.js.map → chunk-MTEB33GR.js.map} +0 -0
  97. /package/build/{chunk-4VTDNX5T.js.map → chunk-UE7LDQKD.js.map} +0 -0
  98. /package/build/{chunk-2PTCXTKF.js.map → chunk-UZXKDHQZ.js.map} +0 -0
  99. /package/build/{chunk-7CGRTCDC.js.map → chunk-YW2RBPPY.js.map} +0 -0
  100. /package/build/platform-sdk/{chunk-QV4VBCJB.js.map → chunk-FLUCZ5U6.js.map} +0 -0
  101. /package/build/{preview-VAHHFTRZ.js.map → preview-ZAKEXAJH.js.map} +0 -0
  102. /package/build/{render-command-3AYSQXHN.js.map → render-command-XMQH723O.js.map} +0 -0
@@ -5,24 +5,24 @@ import {
5
5
  SiteState,
6
6
  resolveConfiguredSite,
7
7
  useSiteListClient
8
- } from "./chunk-FTC5AK3Y.js";
8
+ } from "./chunk-6IX6CDWB.js";
9
9
  import {
10
10
  useDebugLog
11
- } from "./chunk-5QZS3HT7.js";
11
+ } from "./chunk-KVM6MGID.js";
12
12
  import {
13
13
  APP_CONFIG_PATH,
14
14
  BiProvider,
15
+ SiteAuthProvider,
15
16
  TimeoutError,
16
17
  openBrowser,
17
18
  pWaitFor,
18
19
  saveAppConfig,
19
20
  useBiLogger,
20
21
  useDevCenterClient,
21
- useHttpClient,
22
22
  useProjectModel,
23
23
  wixCliAction,
24
24
  wixCliAppFlowStepsAnswers
25
- } from "./chunk-DGTJGIY2.js";
25
+ } from "./chunk-LULKQBSP.js";
26
26
  import {
27
27
  Alert,
28
28
  Badge,
@@ -42,9 +42,8 @@ import {
42
42
  useAsyncCallback,
43
43
  useExit,
44
44
  useTranslation,
45
- use_input_default,
46
- z
47
- } from "./chunk-36W5H7IG.js";
45
+ use_input_default
46
+ } from "./chunk-PM4M3SGC.js";
48
47
  import {
49
48
  __toESM,
50
49
  init_esm_shims
@@ -52,12 +51,12 @@ import {
52
51
 
53
52
  // src/site/SiteProvider.tsx
54
53
  init_esm_shims();
55
- var import_react11 = __toESM(require_react(), 1);
54
+ var import_react10 = __toESM(require_react(), 1);
56
55
  var import_variant7 = __toESM(require_lib(), 1);
57
56
 
58
57
  // src/site/ResolveSite.tsx
59
58
  init_esm_shims();
60
- var import_react10 = __toESM(require_react(), 1);
59
+ var import_react9 = __toESM(require_react(), 1);
61
60
  var import_variant6 = __toESM(require_lib(), 1);
62
61
 
63
62
  // ../cli-site-selector/src/index.ts
@@ -65,7 +64,7 @@ init_esm_shims();
65
64
 
66
65
  // ../cli-site-selector/src/SiteSelector.tsx
67
66
  init_esm_shims();
68
- var import_react9 = __toESM(require_react(), 1);
67
+ var import_react8 = __toESM(require_react(), 1);
69
68
  var import_variant5 = __toESM(require_lib(), 1);
70
69
 
71
70
  // ../cli-site-selector/src/SiteTypeSelect.tsx
@@ -167,92 +166,17 @@ var SiteTypeSelect = ({ onSubmit, onError, sites }) => {
167
166
 
168
167
  // ../cli-site-selector/src/CreateDevSite.tsx
169
168
  init_esm_shims();
170
- var import_react6 = __toESM(require_react(), 1);
169
+ var import_react5 = __toESM(require_react(), 1);
171
170
  var import_variant3 = __toESM(require_lib(), 1);
172
171
 
173
172
  // ../cli-site-selector/src/WaitForAppToBeInstalled.tsx
174
173
  init_esm_shims();
175
- var import_react5 = __toESM(require_react(), 1);
176
-
177
- // ../metasite-manager-client/src/index.ts
178
- init_esm_shims();
179
-
180
- // ../metasite-manager-client/src/useMetasiteManagerClient.ts
181
- init_esm_shims();
182
- var import_react3 = __toESM(require_react(), 1);
183
-
184
- // ../metasite-manager-client/src/metasite-manager-client.ts
185
- init_esm_shims();
186
-
187
- // ../metasite-manager-client/src/schemas.ts
188
- init_esm_shims();
189
- var clientSpecMapSchema = z.record(
190
- z.object({
191
- appDefinitionId: z.string().optional(),
192
- permissions: z.object({ revoked: z.boolean() }).optional()
193
- })
194
- );
195
-
196
- // ../metasite-manager-client/src/metasite-manager-client.ts
197
- var MetasiteManagerClient = class {
198
- constructor(httpClient) {
199
- this.httpClient = httpClient;
200
- }
201
- getClientSpecMap = async (metaSiteId) => {
202
- try {
203
- const { data } = await this.httpClient.request({
204
- url: `/_api/msm/v1/meta-site/editor-client-spec-map/${metaSiteId}`
205
- });
206
- return clientSpecMapSchema.parse(data);
207
- } catch (e) {
208
- throw new CliError({
209
- code: CliErrorCode.FailedToGetClientSpecMap(),
210
- cause: e
211
- });
212
- }
213
- };
214
- getSiteInstalledApps = async (metaSiteId) => {
215
- try {
216
- const clientSpecMap = await this.getClientSpecMap(metaSiteId);
217
- return Object.values(clientSpecMap).filter((spec) => spec.appDefinitionId && !spec.permissions?.revoked).map((spec) => spec.appDefinitionId);
218
- } catch (e) {
219
- throw new CliError({
220
- code: CliErrorCode.FailedToGetSiteInstalledApps(),
221
- cause: e
222
- });
223
- }
224
- };
225
- isAppInstalled = async ({
226
- metaSiteId,
227
- appId
228
- }) => {
229
- try {
230
- const clientSpecMap = await this.getClientSpecMap(metaSiteId);
231
- const isInstalled = Object.values(clientSpecMap).some(
232
- (spec) => spec.appDefinitionId === appId && !spec.permissions?.revoked
233
- );
234
- return isInstalled;
235
- } catch (e) {
236
- throw new CliError({
237
- code: CliErrorCode.FailedToCheckIfAppInstalled(),
238
- cause: e
239
- });
240
- }
241
- };
242
- };
243
-
244
- // ../metasite-manager-client/src/useMetasiteManagerClient.ts
245
- function useMetasiteManagerClient() {
246
- const httpClient = useHttpClient({ type: "general" });
247
- return (0, import_react3.useMemo)(() => new MetasiteManagerClient(httpClient), [httpClient]);
248
- }
249
-
250
- // ../cli-site-selector/src/WaitForAppToBeInstalled.tsx
174
+ var import_react4 = __toESM(require_react(), 1);
251
175
  var import_variant2 = __toESM(require_lib(), 1);
252
176
 
253
177
  // ../cli-site-selector/src/OpenBrowser.tsx
254
178
  init_esm_shims();
255
- var import_react4 = __toESM(require_react(), 1);
179
+ var import_react3 = __toESM(require_react(), 1);
256
180
  var OpenBrowser = ({ siteId, appId }) => {
257
181
  const { t } = useTranslation();
258
182
  const bi = useSiteSelectorBi();
@@ -268,11 +192,11 @@ var OpenBrowser = ({ siteId, appId }) => {
268
192
  );
269
193
  }
270
194
  });
271
- return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(Trans, { i18nKey: "install_app_on_site.warning" }), /* @__PURE__ */ import_react4.default.createElement(
195
+ return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(Trans, { i18nKey: "install_app_on_site.warning" }), /* @__PURE__ */ import_react3.default.createElement(
272
196
  Trans,
273
197
  {
274
198
  i18nKey: "install_app_on_site.warning.instructions",
275
- components: [/* @__PURE__ */ import_react4.default.createElement(Key, { value: "Enter" })]
199
+ components: [/* @__PURE__ */ import_react3.default.createElement(Key, { value: "Enter" })]
276
200
  }
277
201
  ));
278
202
  };
@@ -291,13 +215,14 @@ var WaitForAppToBeInstalled = ({
291
215
  onSubmit,
292
216
  onError
293
217
  }) => {
294
- const { isAppInstalled } = useMetasiteManagerClient();
218
+ const { isAppInstalled } = useDevCenterClient();
295
219
  const { status } = useAsync(
296
220
  async ({ signal }) => {
297
- const { appInstallationPollInterval } = getTestOverrides();
221
+ const { pollInterval } = getTestOverrides();
298
222
  try {
299
- await pWaitFor(() => isAppInstalled({ metaSiteId: site.id, appId }), {
300
- interval: appInstallationPollInterval ?? 2e3,
223
+ await pWaitFor(() => isAppInstalled(appId), {
224
+ // Polling interval is set to 6.5 seconds to avoid rate limiting (429)
225
+ interval: pollInterval ?? 6500,
301
226
  timeout: {
302
227
  milliseconds: 60 * 1e3 * 2,
303
228
  signal
@@ -329,8 +254,8 @@ var WaitForAppToBeInstalled = ({
329
254
  );
330
255
  return (0, import_variant2.match)(status, {
331
256
  Error: () => null,
332
- Loading: () => /* @__PURE__ */ import_react5.default.createElement(OpenBrowser, { siteId: site.id, appId }),
333
- Success: () => /* @__PURE__ */ import_react5.default.createElement(Alert, { type: "success" }, /* @__PURE__ */ import_react5.default.createElement(Badge, { skin: "success" }, /* @__PURE__ */ import_react5.default.createElement(Trans, { i18nKey: "general.success" })), " ", /* @__PURE__ */ import_react5.default.createElement(Trans, { i18nKey: "install_app_on_site.finished_successfully" }))
257
+ Loading: () => /* @__PURE__ */ import_react4.default.createElement(OpenBrowser, { siteId: site.id, appId }),
258
+ Success: () => /* @__PURE__ */ import_react4.default.createElement(Alert, { type: "success" }, /* @__PURE__ */ import_react4.default.createElement(Badge, { skin: "success" }, /* @__PURE__ */ import_react4.default.createElement(Trans, { i18nKey: "general.success" })), " ", /* @__PURE__ */ import_react4.default.createElement(Trans, { i18nKey: "install_app_on_site.finished_successfully" }))
334
259
  });
335
260
  };
336
261
 
@@ -345,15 +270,15 @@ var CreateDevSite = ({
345
270
  return (0, import_variant3.match)(status, {
346
271
  NotRequested: () => null,
347
272
  Error: () => null,
348
- Loading: () => /* @__PURE__ */ import_react6.default.createElement(Spinner, { text: t("create_dev_site.loading") }),
349
- Success: ({ result }) => /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(
273
+ Loading: () => /* @__PURE__ */ import_react5.default.createElement(Spinner, { text: t("create_dev_site.loading") }),
274
+ Success: ({ result }) => /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, /* @__PURE__ */ import_react5.default.createElement(
350
275
  Trans,
351
276
  {
352
277
  i18nKey: "create_dev_site.success",
353
- components: [/* @__PURE__ */ import_react6.default.createElement(Text, { skin: "success", bold: true })],
278
+ components: [/* @__PURE__ */ import_react5.default.createElement(Text, { skin: "success", bold: true })],
354
279
  values: { name: result.displayName }
355
280
  }
356
- ), /* @__PURE__ */ import_react6.default.createElement(
281
+ ), /* @__PURE__ */ import_react5.default.createElement(SiteAuthProvider, { siteId: result.id }, /* @__PURE__ */ import_react5.default.createElement(
357
282
  WaitForAppToBeInstalled,
358
283
  {
359
284
  appId,
@@ -361,39 +286,22 @@ var CreateDevSite = ({
361
286
  onSubmit: () => onSubmit(result),
362
287
  onError
363
288
  }
364
- ))
289
+ )))
365
290
  });
366
291
  };
367
292
 
368
- // ../cli-site-selector/src/messages.json
369
- var messages_default = {
370
- "general.loading": "Loading...",
371
- "general.success": "Success",
372
- "site_type_select.label": "Select Development Site",
373
- "site_type_select.create_new_dev_site": "Create a new Development Site",
374
- "site_type_select.create_new_dev_site.disabled": "You have reached the maximum number of {limit} Development Sites",
375
- "site_type_select.pick_existing_site": "Pick an existing site",
376
- "site_type_select.no_sites": "No sites found",
377
- "create_dev_site.loading": "Creating your new Development Site...",
378
- "create_dev_site.success": "Development Site <0>{name}</0> created successfully! \u{1F680}",
379
- "site_list_select.label": "Select Site",
380
- "install_app_on_site.warning": "Your new application needs to be installed on the selected Development Site",
381
- "install_app_on_site.warning.instructions": "Press <0/> to install the application in your browser",
382
- "install_app_on_site.finished_successfully": "App installed on Development Site."
383
- };
384
-
385
293
  // ../cli-site-selector/src/SelectExistingSite.tsx
386
294
  init_esm_shims();
387
- var import_react8 = __toESM(require_react(), 1);
295
+ var import_react7 = __toESM(require_react(), 1);
388
296
  var import_variant4 = __toESM(require_lib(), 1);
389
297
 
390
298
  // ../cli-site-selector/src/SiteListSelect.tsx
391
299
  init_esm_shims();
392
- var import_react7 = __toESM(require_react(), 1);
300
+ var import_react6 = __toESM(require_react(), 1);
393
301
  var SiteListSelect = ({ onSubmit, sites }) => {
394
302
  const { t } = useTranslation();
395
303
  const bi = useSiteSelectorBi();
396
- const handleSubmit = (0, import_react7.useCallback)(
304
+ const handleSubmit = (0, import_react6.useCallback)(
397
305
  (option) => {
398
306
  bi.cliFlowStepAnswered({
399
307
  question: t("site_list_select.label"),
@@ -403,7 +311,7 @@ var SiteListSelect = ({ onSubmit, sites }) => {
403
311
  },
404
312
  [bi, onSubmit, t]
405
313
  );
406
- return /* @__PURE__ */ import_react7.default.createElement(
314
+ return /* @__PURE__ */ import_react6.default.createElement(
407
315
  SelectInput,
408
316
  {
409
317
  label: t("site_list_select.label"),
@@ -419,40 +327,77 @@ var SiteListSelect = ({ onSubmit, sites }) => {
419
327
  };
420
328
 
421
329
  // ../cli-site-selector/src/SelectExistingSite.tsx
330
+ var CheckAppInstalledOnSite = ({ appId, site, onSubmit, onError }) => {
331
+ const { t } = useTranslation();
332
+ const { isAppInstalled } = useDevCenterClient();
333
+ const { status } = useAsync(async () => isAppInstalled(appId), [], {
334
+ onError,
335
+ onSuccess: (isInstalled) => {
336
+ if (isInstalled) {
337
+ onSubmit(site);
338
+ }
339
+ }
340
+ });
341
+ return (0, import_variant4.match)(status, {
342
+ Error: () => null,
343
+ Loading: () => /* @__PURE__ */ import_react7.default.createElement(Spinner, { text: t("general.loading") }),
344
+ Success: ({ result: isInstalled }) => {
345
+ if (isInstalled) {
346
+ return null;
347
+ }
348
+ return /* @__PURE__ */ import_react7.default.createElement(
349
+ WaitForAppToBeInstalled,
350
+ {
351
+ appId,
352
+ site,
353
+ onSubmit: () => onSubmit(site),
354
+ onError
355
+ }
356
+ );
357
+ }
358
+ });
359
+ };
422
360
  var SelectExistingSite = ({
423
361
  sites,
424
362
  appId,
425
363
  onSubmit,
426
364
  onError
427
365
  }) => {
428
- const { t } = useTranslation();
429
- const { isAppInstalled } = useMetasiteManagerClient();
430
- const [siteToInstallAppOn, setSiteToInstallAppOn] = (0, import_react8.useState)(
366
+ const [siteToInstallAppOn, setSiteToInstallAppOn] = (0, import_react7.useState)(
431
367
  null
432
368
  );
433
- const checkAppInstalled = useAsyncCallback(
434
- (_, site) => isAppInstalled({ metaSiteId: site.id, appId }),
369
+ return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(
370
+ SiteListSelect,
435
371
  {
436
- onError
437
- }
438
- );
439
- async function handleSelectSite(site) {
440
- const isInstalled = await checkAppInstalled.execute(site);
441
- if (isInstalled) {
442
- onSubmit(site);
443
- } else {
444
- setSiteToInstallAppOn(site);
372
+ onSubmit: (site) => setSiteToInstallAppOn(site),
373
+ sites
445
374
  }
446
- }
447
- return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement(SiteListSelect, { onSubmit: handleSelectSite, sites }), (0, import_variant4.isType)(checkAppInstalled.status, "Loading") && /* @__PURE__ */ import_react8.default.createElement(Spinner, { text: t("general.loading") }), siteToInstallAppOn && /* @__PURE__ */ import_react8.default.createElement(
448
- WaitForAppToBeInstalled,
375
+ ), siteToInstallAppOn && /* @__PURE__ */ import_react7.default.createElement(SiteAuthProvider, { siteId: siteToInstallAppOn.id }, /* @__PURE__ */ import_react7.default.createElement(
376
+ CheckAppInstalledOnSite,
449
377
  {
450
378
  appId,
451
379
  site: siteToInstallAppOn,
452
380
  onSubmit: () => onSubmit(siteToInstallAppOn),
453
381
  onError
454
382
  }
455
- ));
383
+ )));
384
+ };
385
+
386
+ // ../cli-site-selector/src/messages.json
387
+ var messages_default = {
388
+ "general.loading": "Loading...",
389
+ "general.success": "Success",
390
+ "site_type_select.label": "Select Development Site",
391
+ "site_type_select.create_new_dev_site": "Create a new Development Site",
392
+ "site_type_select.create_new_dev_site.disabled": "You have reached the maximum number of {limit} Development Sites",
393
+ "site_type_select.pick_existing_site": "Pick an existing site",
394
+ "site_type_select.no_sites": "No sites found",
395
+ "create_dev_site.loading": "Creating your new Development Site...",
396
+ "create_dev_site.success": "Development Site <0>{name}</0> created successfully! \u{1F680}",
397
+ "site_list_select.label": "Select Site",
398
+ "install_app_on_site.warning": "Your new application needs to be installed on the selected Development Site",
399
+ "install_app_on_site.warning.instructions": "Press <0/> to install the application in your browser",
400
+ "install_app_on_site.finished_successfully": "App installed on Development Site."
456
401
  };
457
402
 
458
403
  // ../cli-site-selector/src/SiteSelector.tsx
@@ -462,7 +407,7 @@ var SiteSelector = ({
462
407
  onSubmit,
463
408
  onError
464
409
  }) => {
465
- const [siteType, setSiteType] = (0, import_react9.useState)(null);
410
+ const [siteType, setSiteType] = (0, import_react8.useState)(null);
466
411
  const { createDevSite } = useDevCenterClient();
467
412
  const siteListClient = useSiteListClient();
468
413
  const { status } = useAsync(
@@ -487,17 +432,17 @@ var SiteSelector = ({
487
432
  void createSite.execute();
488
433
  }
489
434
  }
490
- return /* @__PURE__ */ import_react9.default.createElement(BiProvider, { value: biLogger }, /* @__PURE__ */ import_react9.default.createElement(I18nProvider, { messages: messages_default }, (0, import_variant5.match)(status, {
435
+ return /* @__PURE__ */ import_react8.default.createElement(BiProvider, { value: biLogger }, /* @__PURE__ */ import_react8.default.createElement(I18nProvider, { messages: messages_default }, (0, import_variant5.match)(status, {
491
436
  Error: () => null,
492
- Loading: () => /* @__PURE__ */ import_react9.default.createElement(Spinner, { text: /* @__PURE__ */ import_react9.default.createElement(Trans, { i18nKey: "general.loading" }) }),
493
- Success: ({ result: sites }) => /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(
437
+ Loading: () => /* @__PURE__ */ import_react8.default.createElement(Spinner, { text: /* @__PURE__ */ import_react8.default.createElement(Trans, { i18nKey: "general.loading" }) }),
438
+ Success: ({ result: sites }) => /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement(
494
439
  SiteTypeSelect,
495
440
  {
496
441
  onSubmit: handleSelectSiteType,
497
442
  onError,
498
443
  sites
499
444
  }
500
- ), siteType === "create-dev-site" && /* @__PURE__ */ import_react9.default.createElement(
445
+ ), siteType === "create-dev-site" && /* @__PURE__ */ import_react8.default.createElement(
501
446
  CreateDevSite,
502
447
  {
503
448
  status: createSite.status,
@@ -505,7 +450,7 @@ var SiteSelector = ({
505
450
  onSubmit,
506
451
  onError
507
452
  }
508
- ), siteType === "select-existing-site" && /* @__PURE__ */ import_react9.default.createElement(
453
+ ), siteType === "select-existing-site" && /* @__PURE__ */ import_react8.default.createElement(
509
454
  SelectExistingSite,
510
455
  {
511
456
  sites,
@@ -523,12 +468,12 @@ var ResolveSite = ({ state, onSubmit }) => {
523
468
  const { t } = useTranslation();
524
469
  const { model } = useProjectModel();
525
470
  const biLogger = useBiLogger();
526
- return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, (0, import_variant6.match)(state, {
471
+ return /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, (0, import_variant6.match)(state, {
527
472
  NotConfigured: (0, import_variant6.constant)(
528
- /* @__PURE__ */ import_react10.default.createElement(Alert, { type: "insight" }, t("general.no_site_id_configured"))
473
+ /* @__PURE__ */ import_react9.default.createElement(Alert, { type: "insight" }, t("general.no_site_id_configured"))
529
474
  ),
530
- NotFound: ({ id }) => /* @__PURE__ */ import_react10.default.createElement(Alert, { type: "error" }, t("general.site_id_not_found", { id }))
531
- }), /* @__PURE__ */ import_react10.default.createElement(
475
+ NotFound: ({ id }) => /* @__PURE__ */ import_react9.default.createElement(Alert, { type: "error" }, t("general.site_id_not_found", { id }))
476
+ }), /* @__PURE__ */ import_react9.default.createElement(
532
477
  SiteSelector,
533
478
  {
534
479
  appId: model.config.appId,
@@ -557,7 +502,7 @@ var SiteProvider = ({ children, siteId }) => {
557
502
  }),
558
503
  []
559
504
  );
560
- const setSite = (0, import_react11.useCallback)(
505
+ const setSite = (0, import_react10.useCallback)(
561
506
  async (site) => {
562
507
  try {
563
508
  await saveAppConfig(projectFolder, { siteId: site.id });
@@ -573,18 +518,18 @@ var SiteProvider = ({ children, siteId }) => {
573
518
  },
574
519
  [merge, projectFolder]
575
520
  );
576
- const handleResolveSite = (0, import_react11.useCallback)(
521
+ const handleResolveSite = (0, import_react10.useCallback)(
577
522
  (site) => setSite(site).catch(exit),
578
523
  [exit, setSite]
579
524
  );
580
525
  return (0, import_variant7.match)(status, {
581
526
  Error: () => null,
582
- Loading: () => /* @__PURE__ */ import_react11.default.createElement(Spinner, { text: t("dev_command.site_provider.loading") }),
527
+ Loading: () => /* @__PURE__ */ import_react10.default.createElement(Spinner, { text: t("dev_command.site_provider.loading") }),
583
528
  Success: ({ result: state }) => {
584
529
  return (0, import_variant7.match)(state, {
585
- NotConfigured: (variant2) => /* @__PURE__ */ import_react11.default.createElement(ResolveSite, { state: variant2, onSubmit: handleResolveSite }),
586
- NotFound: (variant2) => /* @__PURE__ */ import_react11.default.createElement(ResolveSite, { state: variant2, onSubmit: handleResolveSite }),
587
- Resolved: ({ site }) => /* @__PURE__ */ import_react11.default.createElement(
530
+ NotConfigured: (variant2) => /* @__PURE__ */ import_react10.default.createElement(ResolveSite, { state: variant2, onSubmit: handleResolveSite }),
531
+ NotFound: (variant2) => /* @__PURE__ */ import_react10.default.createElement(ResolveSite, { state: variant2, onSubmit: handleResolveSite }),
532
+ Resolved: ({ site }) => /* @__PURE__ */ import_react10.default.createElement(
588
533
  SiteContext.Provider,
589
534
  {
590
535
  value: {
@@ -604,17 +549,17 @@ init_esm_shims();
604
549
 
605
550
  // src/components/Platform/usePlatform.tsx
606
551
  init_esm_shims();
607
- var import_react12 = __toESM(require_react(), 1);
552
+ var import_react11 = __toESM(require_react(), 1);
608
553
  var import_variant8 = __toESM(require_lib(), 1);
609
554
  function usePlatform() {
610
555
  const { model } = useProjectModel();
611
- const isPlatformExists = (0, import_react12.useCallback)(
556
+ const isPlatformExists = (0, import_react11.useCallback)(
612
557
  (platformType) => model.components.some(
613
558
  (component) => component.platforms.some((0, import_variant8.isType)(platformType.type))
614
559
  ),
615
560
  [model.components]
616
561
  );
617
- const hasSinglePlatform = (0, import_react12.useCallback)(
562
+ const hasSinglePlatform = (0, import_react11.useCallback)(
618
563
  (platformType) => model.components.every(
619
564
  (component) => component.platforms.some((0, import_variant8.isType)(platformType.type)) || component.platforms.length === 0
620
565
  ),
@@ -627,9 +572,8 @@ function usePlatform() {
627
572
  }
628
573
 
629
574
  export {
630
- useMetasiteManagerClient,
631
575
  SiteSelector,
632
576
  SiteProvider,
633
577
  usePlatform
634
578
  };
635
- //# sourceMappingURL=chunk-CNZ3Q5PF.js.map
579
+ //# sourceMappingURL=chunk-5R5H3Y2D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/site/SiteProvider.tsx","../src/site/ResolveSite.tsx","../../cli-site-selector/src/index.ts","../../cli-site-selector/src/SiteSelector.tsx","../../cli-site-selector/src/SiteTypeSelect.tsx","../../cli-site-selector/src/bi.ts","../../cli-site-selector/src/CreateDevSite.tsx","../../cli-site-selector/src/WaitForAppToBeInstalled.tsx","../../cli-site-selector/src/OpenBrowser.tsx","../../cli-site-selector/src/SelectExistingSite.tsx","../../cli-site-selector/src/SiteListSelect.tsx","../../cli-site-selector/src/messages.json","../src/site/index.ts","../src/components/Platform/usePlatform.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { match } from 'variant';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { APP_CONFIG_PATH } from '@wix/cli-app-definitions';\nimport { useAsync, useExit, Spinner } from '@wix/cli-ui-kit';\nimport { useSiteListClient } from '@wix/site-list-client';\nimport type { Site } from '@wix/site-list-client';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { saveAppConfig } from '../files/app.config.js';\nimport { useProjectModel } from '../model.js';\nimport { ResolveSite } from './ResolveSite.js';\nimport { SiteContext } from './context.js';\nimport { SiteState } from './site-state.js';\nimport { resolveConfiguredSite } from './resolve-configured-site.js';\n\nexport const SiteProvider: FC<{\n siteId?: string;\n children: ReactNode | ((site: Site) => ReactNode);\n}> = ({ children, siteId }) => {\n const exit = useExit();\n const {\n model: { projectFolder },\n } = useProjectModel();\n const writeDebugLog = useDebugLog();\n const siteListClient = useSiteListClient();\n const { t } = useTranslation();\n\n const { status, merge } = useAsync(\n async () =>\n resolveConfiguredSite({\n projectFolder,\n siteListClient,\n siteId,\n writeDebugLog,\n }),\n []\n );\n\n const setSite = useCallback(\n async (site: Site) => {\n try {\n await saveAppConfig(projectFolder, { siteId: site.id });\n merge({ result: SiteState.Resolved({ site }) });\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToSaveDevelopmentSite({\n path: APP_CONFIG_PATH,\n }),\n cause: e,\n });\n }\n },\n [merge, projectFolder]\n );\n\n const handleResolveSite = useCallback(\n (site: Site) => setSite(site).catch(exit),\n [exit, setSite]\n );\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('dev_command.site_provider.loading')} />,\n Success: ({ result: state }) => {\n return match(state, {\n NotConfigured: (variant) => (\n <ResolveSite state={variant} onSubmit={handleResolveSite} />\n ),\n NotFound: (variant) => (\n <ResolveSite state={variant} onSubmit={handleResolveSite} />\n ),\n Resolved: ({ site }) => (\n <SiteContext.Provider\n value={{\n site,\n setSite,\n }}\n >\n {typeof children === 'function' ? children(site) : children}\n </SiteContext.Provider>\n ),\n });\n },\n });\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { match, constant } from 'variant';\nimport type { Site } from '@wix/site-list-client';\nimport { Alert, useExit } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { SiteSelector } from '@wix/cli-site-selector';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../model.js';\nimport type { SiteState } from './site-state.js';\n\ninterface Props {\n state: SiteState<'NotConfigured' | 'NotFound'>;\n onSubmit: (site: Site) => void;\n}\n\nexport const ResolveSite: FC<Props> = ({ state, onSubmit }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const biLogger = useBiLogger();\n\n return (\n <>\n {match(state, {\n NotConfigured: constant(\n <Alert type=\"insight\">{t('general.no_site_id_configured')}</Alert>\n ),\n NotFound: ({ id }) => (\n <Alert type=\"error\">{t('general.site_id_not_found', { id })}</Alert>\n ),\n })}\n <SiteSelector\n appId={model.config.appId}\n biLogger={biLogger}\n onSubmit={onSubmit}\n onError={exit}\n />\n </>\n );\n};\n","export { SiteSelector } from './SiteSelector.js';\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { match } from 'variant';\nimport { I18nProvider, Trans } from '@wix/cli-i18n';\nimport type { Site } from '@wix/site-list-client';\nimport { Spinner, useAsync, useAsyncCallback } from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useSiteListClient } from '@wix/site-list-client';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { BiProvider } from '@wix/cli-telemetry-react';\nimport { SiteTypeSelect } from './SiteTypeSelect.js';\nimport type { SiteType } from './SiteTypeSelect.js';\nimport { CreateDevSite } from './CreateDevSite.js';\nimport { SelectExistingSite } from './SelectExistingSite.js';\nimport messages from './messages.json';\n\ninterface Props {\n appId: string;\n biLogger: BiLogger;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const SiteSelector: FC<Props> = ({\n appId,\n biLogger,\n onSubmit,\n onError,\n}) => {\n const [siteType, setSiteType] = useState<SiteType | null>(null);\n const { createDevSite } = useDevCenterClient();\n const siteListClient = useSiteListClient();\n\n const { status } = useAsync(\n () =>\n siteListClient.querySites({\n query: {\n cursorPaging: {\n limit: 100,\n },\n },\n }),\n [],\n {\n onError,\n }\n );\n\n const createSite = useAsyncCallback(() => createDevSite(), {\n onError,\n });\n\n function handleSelectSiteType(siteType: SiteType) {\n setSiteType(siteType);\n if (siteType === 'create-dev-site') {\n void createSite.execute();\n }\n }\n\n return (\n <BiProvider value={biLogger}>\n <I18nProvider messages={messages}>\n {match(status, {\n Error: () => null,\n Loading: () => <Spinner text={<Trans i18nKey=\"general.loading\" />} />,\n Success: ({ result: sites }) => (\n <>\n <SiteTypeSelect\n onSubmit={handleSelectSiteType}\n onError={onError}\n sites={sites}\n />\n {siteType === 'create-dev-site' && (\n <CreateDevSite\n status={createSite.status}\n appId={appId}\n onSubmit={onSubmit}\n onError={onError}\n />\n )}\n {siteType === 'select-existing-site' && (\n <SelectExistingSite\n sites={sites}\n appId={appId}\n onSubmit={onSubmit}\n onError={onError}\n />\n )}\n </>\n ),\n })}\n </I18nProvider>\n </BiProvider>\n );\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { SelectOption } from '@wix/cli-ui-kit';\nimport {\n Spinner,\n SelectInput,\n useAsync,\n SelectOptionAvailability,\n} from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport type { Site } from '@wix/site-list-client';\nimport { useSiteSelectorBi } from './bi.js';\n\nexport type SiteType = 'create-dev-site' | 'select-existing-site';\ninterface Props {\n onSubmit: (siteType: SiteType) => void;\n onError: (error: unknown) => void;\n sites: Site[];\n}\n\nexport const SiteTypeSelect: FC<Props> = ({ onSubmit, onError, sites }) => {\n const bi = useSiteSelectorBi();\n const { t } = useTranslation();\n const { getDevSitesCount, getDevSitesLimit } = useDevCenterClient();\n const { status } = useAsync(\n () => Promise.all([getDevSitesCount(), getDevSitesLimit()]),\n [],\n { onError }\n );\n\n const handleSubmit = (option: SelectOption<SiteType>) => {\n void bi.cliFlowStepAnswered({\n question: t('site_type_select.label'),\n answer: option.title,\n });\n onSubmit(option.value);\n };\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('general.loading')} />,\n Success: ({ result: [devSitesCount, devSitesLimit] }) => {\n const isDevSitesLimitReached = devSitesCount >= devSitesLimit;\n const userHasNoSites = sites.length === 0;\n\n return (\n <SelectInput<SiteType>\n label={t('site_type_select.label')}\n options={[\n {\n availability: userHasNoSites\n ? SelectOptionAvailability.Disabled({\n reason: t('site_type_select.no_sites'),\n })\n : SelectOptionAvailability.Enabled(),\n title: t('site_type_select.pick_existing_site'),\n value: 'select-existing-site',\n },\n {\n title: t('site_type_select.create_new_dev_site'),\n value: 'create-dev-site',\n availability: isDevSitesLimitReached\n ? SelectOptionAvailability.Disabled({\n reason: t('site_type_select.create_new_dev_site.disabled', {\n limit: devSitesLimit,\n }),\n })\n : SelectOptionAvailability.Enabled(),\n },\n ]}\n onSubmit={handleSubmit}\n />\n );\n },\n });\n};\n","import { useMemo } from 'react';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport {\n wixCliAction,\n wixCliAppFlowStepsAnswers,\n} from '@wix/bi-logger-dev-tools-data/v2';\n\nfunction siteSelectorBiEvents(biLogger: BiLogger) {\n return {\n cliAction: ({\n question,\n action,\n key,\n additionalInfo,\n }: {\n question: string;\n action: string;\n key: string;\n additionalInfo?: Record<string, unknown>;\n }) => {\n void biLogger.report(\n wixCliAction({\n question,\n action,\n key,\n additionalInfo: JSON.stringify(additionalInfo),\n })\n );\n },\n cliFlowStepAnswered: ({\n question,\n answer,\n additionalInfo,\n }: {\n question: string;\n answer: string;\n additionalInfo?: Record<string, unknown>;\n }) => {\n void biLogger.report(\n wixCliAppFlowStepsAnswers({\n question,\n answer,\n additionalInfo: JSON.stringify(additionalInfo),\n })\n );\n },\n };\n}\n\nexport function useSiteSelectorBi() {\n const biLogger = useBiLogger();\n return useMemo(() => siteSelectorBiEvents(biLogger), [biLogger]);\n}\n","import React from 'react';\nimport type { FC } from 'react';\nimport { match } from 'variant';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport type { AsyncCallbackStatus } from '@wix/cli-ui-kit';\nimport { Text, Spinner } from '@wix/cli-ui-kit';\nimport type { Site } from '@wix/site-list-client';\nimport { SiteAuthProvider } from '@wix/cli-auth';\nimport { WaitForAppToBeInstalled } from './WaitForAppToBeInstalled.js';\n\ninterface Props {\n status: AsyncCallbackStatus<Site>;\n appId: string;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const CreateDevSite: FC<Props> = ({\n status,\n appId,\n onSubmit,\n onError,\n}) => {\n const { t } = useTranslation();\n\n return match(status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => <Spinner text={t('create_dev_site.loading')} />,\n Success: ({ result }) => (\n <>\n <Trans\n i18nKey=\"create_dev_site.success\"\n components={[<Text skin=\"success\" bold />]}\n values={{ name: result.displayName }}\n />\n <SiteAuthProvider siteId={result.id}>\n <WaitForAppToBeInstalled\n appId={appId}\n site={result}\n onSubmit={() => onSubmit(result)}\n onError={onError}\n />\n </SiteAuthProvider>\n </>\n ),\n });\n};\n","import pWaitFor, { TimeoutError } from 'p-wait-for';\nimport React from 'react';\nimport type { FC } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { Alert, Badge, useAsync } from '@wix/cli-ui-kit';\nimport { isType, match, variant } from 'variant';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { Site } from '@wix/site-list-client';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { OpenBrowser } from './OpenBrowser.js';\n\ninterface Props {\n site: Site;\n appId: string;\n onSubmit: () => void;\n onError: (error: unknown) => void;\n}\n\nconst AppInstallData = variant({\n Success: {},\n Canceled: {},\n});\n\nfunction isAbortError(error: unknown) {\n return (\n error &&\n typeof error === 'object' &&\n 'name' in error &&\n error.name === 'AbortError'\n );\n}\n\nexport const WaitForAppToBeInstalled: FC<Props> = ({\n appId,\n site,\n onSubmit,\n onError,\n}) => {\n const { isAppInstalled } = useDevCenterClient();\n\n const { status } = useAsync(\n async ({ signal }) => {\n const { pollInterval } = getTestOverrides();\n\n try {\n await pWaitFor(() => isAppInstalled(appId), {\n // Polling interval is set to 6.5 seconds to avoid rate limiting (429)\n interval: pollInterval ?? 6500,\n timeout: {\n milliseconds: 60 * 1000 * 2,\n signal,\n },\n });\n\n return AppInstallData.Success();\n } catch (error) {\n if (error instanceof TimeoutError) {\n throw new CliError({\n code: CliErrorCode.SiteSelectorTimedout(),\n cause: error,\n });\n }\n\n if (isAbortError(error)) {\n return AppInstallData.Canceled();\n }\n\n throw error;\n }\n },\n [],\n {\n onError,\n onSuccess: (result) => {\n if (isType(result, AppInstallData.Success)) {\n onSubmit();\n }\n },\n }\n );\n\n return match(status, {\n Error: () => null,\n Loading: () => <OpenBrowser siteId={site.id} appId={appId} />,\n Success: () => (\n <Alert type=\"success\">\n <Badge skin=\"success\">\n <Trans i18nKey=\"general.success\" />\n </Badge>{' '}\n <Trans i18nKey=\"install_app_on_site.finished_successfully\" />\n </Alert>\n ),\n });\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Key, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { openBrowser } from '@wix/user-browser';\nimport { useSiteSelectorBi } from './bi.js';\n\ninterface Props {\n siteId: string;\n appId: string;\n}\n\nexport const OpenBrowser: FC<Props> = ({ siteId, appId }) => {\n const { t } = useTranslation();\n const bi = useSiteSelectorBi();\n\n useInput(async (input, key) => {\n if (key.return) {\n bi.cliAction({\n question: t('install_app_on_site.warning.instructions'),\n key: 'enter',\n action: 'install_app_on_site',\n });\n await openBrowser(\n `https://manage.wix.com/installer/install?metaSiteId=${siteId}&appId=${appId}&platform=cli&version=latest`\n );\n }\n });\n\n return (\n <>\n <Trans i18nKey=\"install_app_on_site.warning\" />\n <Trans\n i18nKey=\"install_app_on_site.warning.instructions\"\n components={[<Key value=\"Enter\" />]}\n />\n </>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport type { Site } from '@wix/site-list-client';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { SiteAuthProvider } from '@wix/cli-auth';\nimport { WaitForAppToBeInstalled } from './WaitForAppToBeInstalled.js';\nimport { SiteListSelect } from './SiteListSelect.js';\n\nconst CheckAppInstalledOnSite: FC<{\n site: Site;\n appId: string;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}> = ({ appId, site, onSubmit, onError }) => {\n const { t } = useTranslation();\n const { isAppInstalled } = useDevCenterClient();\n\n const { status } = useAsync(async () => isAppInstalled(appId), [], {\n onError,\n onSuccess: (isInstalled) => {\n if (isInstalled) {\n onSubmit(site);\n }\n },\n });\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('general.loading')} />,\n Success: ({ result: isInstalled }) => {\n if (isInstalled) {\n return null;\n }\n\n return (\n <WaitForAppToBeInstalled\n appId={appId}\n site={site}\n onSubmit={() => onSubmit(site)}\n onError={onError}\n />\n );\n },\n });\n};\n\ninterface Props {\n sites: Site[];\n appId: string;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const SelectExistingSite = ({\n sites,\n appId,\n onSubmit,\n onError,\n}: Props) => {\n const [siteToInstallAppOn, setSiteToInstallAppOn] = useState<Site | null>(\n null\n );\n\n return (\n <>\n <SiteListSelect\n onSubmit={(site) => setSiteToInstallAppOn(site)}\n sites={sites}\n />\n {siteToInstallAppOn && (\n <SiteAuthProvider siteId={siteToInstallAppOn.id}>\n <CheckAppInstalledOnSite\n appId={appId}\n site={siteToInstallAppOn}\n onSubmit={() => onSubmit(siteToInstallAppOn)}\n onError={onError}\n />\n </SiteAuthProvider>\n )}\n </>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { FC } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { SelectOption } from '@wix/cli-ui-kit';\nimport { SelectInput } from '@wix/cli-ui-kit';\nimport type { Site } from '@wix/site-list-client';\nimport { useSiteSelectorBi } from './bi.js';\n\ninterface Props {\n onSubmit: (site: Site) => void;\n sites: Site[];\n}\n\nexport const SiteListSelect: FC<Props> = ({ onSubmit, sites }) => {\n const { t } = useTranslation();\n const bi = useSiteSelectorBi();\n\n const handleSubmit = useCallback(\n (option: SelectOption<Site>) => {\n bi.cliFlowStepAnswered({\n question: t('site_list_select.label'),\n answer: option.title,\n });\n onSubmit(option.value);\n },\n [bi, onSubmit, t]\n );\n\n return (\n <SelectInput<Site>\n label={t('site_list_select.label')}\n options={sites.map((site) => ({\n key: site.id,\n title: site.displayName,\n description: site.viewUrl,\n value: site,\n }))}\n onSubmit={handleSubmit}\n />\n );\n};\n","{\n \"general.loading\": \"Loading...\",\n \"general.success\": \"Success\",\n \"site_type_select.label\": \"Select Development Site\",\n \"site_type_select.create_new_dev_site\": \"Create a new Development Site\",\n \"site_type_select.create_new_dev_site.disabled\": \"You have reached the maximum number of {limit} Development Sites\",\n \"site_type_select.pick_existing_site\": \"Pick an existing site\",\n \"site_type_select.no_sites\": \"No sites found\",\n \"create_dev_site.loading\": \"Creating your new Development Site...\",\n \"create_dev_site.success\": \"Development Site <0>{name}</0> created successfully! 🚀\",\n \"site_list_select.label\": \"Select Site\",\n \"install_app_on_site.warning\": \"Your new application needs to be installed on the selected Development Site\",\n \"install_app_on_site.warning.instructions\": \"Press <0/> to install the application in your browser\",\n \"install_app_on_site.finished_successfully\": \"App installed on Development Site.\"\n}\n","export { SiteProvider } from './SiteProvider.js';\nexport { useSite } from './useSite.js';\n","import { useCallback } from 'react';\nimport { isType } from 'variant';\nimport type { PlatformType } from '@wix/cli-app-definitions';\nimport { useProjectModel } from '../../model.js';\n\nexport function usePlatform() {\n const { model } = useProjectModel();\n\n const isPlatformExists = useCallback(\n (platformType: PlatformType) =>\n model.components.some((component) =>\n component.platforms.some(isType(platformType.type))\n ),\n [model.components]\n );\n\n const hasSinglePlatform = useCallback(\n (platformType: PlatformType) =>\n model.components.every(\n (component) =>\n component.platforms.some(isType(platformType.type)) ||\n component.platforms.length === 0\n ),\n [model.components]\n );\n\n return {\n isPlatformExists,\n hasSinglePlatform,\n };\n}\n"],"mappings":"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","names":["import_react","import_variant","import_react","import_variant","import_react","import_variant","import_react","React","import_react","import_variant","import_react","import_variant","import_react","React","React","React","import_react","import_variant","import_react","React","React","siteType","React","React","React","variant","import_react","import_variant"]}