@wix/cli-app 1.1.74 → 1.1.75

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 (67) hide show
  1. package/build/{CreateVersionCommand-6PXETRX5.js → CreateVersionCommand-RQXPDP24.js} +14 -16
  2. package/build/{CreateVersionCommand-6PXETRX5.js.map → CreateVersionCommand-RQXPDP24.js.map} +1 -1
  3. package/build/{DevCommand-575K76BZ.js → DevCommand-S4Z3WJGP.js} +14 -16
  4. package/build/{DevCommand-575K76BZ.js.map → DevCommand-S4Z3WJGP.js.map} +1 -1
  5. package/build/{GenerateCommand-NKJI6L6F.js → GenerateCommand-KJFVXKF6.js} +575 -476
  6. package/build/GenerateCommand-KJFVXKF6.js.map +1 -0
  7. package/build/{LogsCommand-LDVXIJRM.js → LogsCommand-BIVRFRK5.js} +4 -4
  8. package/build/PreviewCommand-LVAVWK5X.js +21 -0
  9. package/build/{ReleaseCommand-3KMQAZC2.js → ReleaseCommand-D44TLKQN.js} +17 -19
  10. package/build/{ReleaseCommand-3KMQAZC2.js.map → ReleaseCommand-D44TLKQN.js.map} +1 -1
  11. package/build/{ServeCommand-JVEHGEQJ.js → ServeCommand-7CZUCKDQ.js} +15 -17
  12. package/build/{ServeCommand-JVEHGEQJ.js.map → ServeCommand-7CZUCKDQ.js.map} +1 -1
  13. package/build/{build-LGA2RNYK.js → build-QQOQLG6Q.js} +7 -7
  14. package/build/{chunk-UR2P6KAA.js → chunk-3R3L4Z4K.js} +3 -3
  15. package/build/{chunk-A2RC7C33.js → chunk-3T6MWKGJ.js} +3 -3
  16. package/build/{chunk-7DBU2MOT.js → chunk-3TGCMRM2.js} +3 -2
  17. package/build/chunk-3TGCMRM2.js.map +1 -0
  18. package/build/{chunk-KFXL2D65.js → chunk-5MJT77SF.js} +4 -4
  19. package/build/{chunk-KFXL2D65.js.map → chunk-5MJT77SF.js.map} +1 -1
  20. package/build/{chunk-2I5H2XRH.js → chunk-5V425DYH.js} +2 -2
  21. package/build/{chunk-5CXN5MQU.js → chunk-ABAJ2G2M.js} +3 -3
  22. package/build/{chunk-C2J6X76S.js → chunk-ADIVS46Y.js} +4 -4
  23. package/build/{chunk-OBKGCJPS.js → chunk-C64MJGM6.js} +3 -3
  24. package/build/{chunk-YX3VV7BD.js → chunk-FSYOQVCS.js} +54 -11
  25. package/build/chunk-FSYOQVCS.js.map +1 -0
  26. package/build/{chunk-4AUIUNWR.js → chunk-GB3SH2IE.js} +3 -3
  27. package/build/{chunk-HBC2QGBW.js → chunk-I3NQFKY6.js} +33 -14
  28. package/build/{chunk-HBC2QGBW.js.map → chunk-I3NQFKY6.js.map} +1 -1
  29. package/build/{chunk-UEWHA4N4.js → chunk-O6IB7IRT.js} +33 -11
  30. package/build/chunk-O6IB7IRT.js.map +1 -0
  31. package/build/{chunk-MGWDHTIY.js → chunk-S7FXCJ5N.js} +3 -3
  32. package/build/{chunk-D4K6HLR5.js → chunk-TSZ32MNC.js} +629 -97
  33. package/build/chunk-TSZ32MNC.js.map +1 -0
  34. package/build/{chunk-ETZUKD7Z.js → chunk-YEO2M3TJ.js} +5 -7
  35. package/build/{chunk-ETZUKD7Z.js.map → chunk-YEO2M3TJ.js.map} +1 -1
  36. package/build/{chunk-XL6K6NL2.js → chunk-ZILFZBV3.js} +3 -3
  37. package/build/index.js +38 -30
  38. package/build/index.js.map +1 -1
  39. package/build/preview-Q2SJBMOD.js +101 -0
  40. package/build/preview-Q2SJBMOD.js.map +1 -0
  41. package/build/{render-command-RYGIULDT.js → render-command-LPGQHYQY.js} +8 -8
  42. package/package.json +4 -4
  43. package/build/GenerateCommand-NKJI6L6F.js.map +0 -1
  44. package/build/PreviewCommand-PMZTMXBO.js +0 -23
  45. package/build/chunk-7DBU2MOT.js.map +0 -1
  46. package/build/chunk-D4K6HLR5.js.map +0 -1
  47. package/build/chunk-UEWHA4N4.js.map +0 -1
  48. package/build/chunk-YJ5YN5VN.js +0 -579
  49. package/build/chunk-YJ5YN5VN.js.map +0 -1
  50. package/build/chunk-YLAUVJYG.js +0 -60
  51. package/build/chunk-YLAUVJYG.js.map +0 -1
  52. package/build/chunk-YX3VV7BD.js.map +0 -1
  53. package/build/preview-S2TF6RDS.js +0 -138
  54. package/build/preview-S2TF6RDS.js.map +0 -1
  55. /package/build/{LogsCommand-LDVXIJRM.js.map → LogsCommand-BIVRFRK5.js.map} +0 -0
  56. /package/build/{PreviewCommand-PMZTMXBO.js.map → PreviewCommand-LVAVWK5X.js.map} +0 -0
  57. /package/build/{build-LGA2RNYK.js.map → build-QQOQLG6Q.js.map} +0 -0
  58. /package/build/{chunk-UR2P6KAA.js.map → chunk-3R3L4Z4K.js.map} +0 -0
  59. /package/build/{chunk-A2RC7C33.js.map → chunk-3T6MWKGJ.js.map} +0 -0
  60. /package/build/{chunk-2I5H2XRH.js.map → chunk-5V425DYH.js.map} +0 -0
  61. /package/build/{chunk-5CXN5MQU.js.map → chunk-ABAJ2G2M.js.map} +0 -0
  62. /package/build/{chunk-C2J6X76S.js.map → chunk-ADIVS46Y.js.map} +0 -0
  63. /package/build/{chunk-OBKGCJPS.js.map → chunk-C64MJGM6.js.map} +0 -0
  64. /package/build/{chunk-4AUIUNWR.js.map → chunk-GB3SH2IE.js.map} +0 -0
  65. /package/build/{chunk-MGWDHTIY.js.map → chunk-S7FXCJ5N.js.map} +0 -0
  66. /package/build/{chunk-XL6K6NL2.js.map → chunk-ZILFZBV3.js.map} +0 -0
  67. /package/build/{render-command-RYGIULDT.js.map → render-command-LPGQHYQY.js.map} +0 -0
@@ -1,579 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import {
4
- SiteContext,
5
- SiteState,
6
- resolveConfiguredSite,
7
- useSiteListClient
8
- } from "./chunk-D4K6HLR5.js";
9
- import {
10
- useDebugLog
11
- } from "./chunk-XL6K6NL2.js";
12
- import {
13
- APP_CONFIG_PATH,
14
- BiProvider,
15
- SiteAuthProvider,
16
- TimeoutError,
17
- openBrowser,
18
- pWaitFor,
19
- saveAppConfig,
20
- useBiLogger,
21
- useDevCenterClient,
22
- useProjectModel,
23
- wixCliAction,
24
- wixCliAppFlowStepsAnswers
25
- } from "./chunk-KFXL2D65.js";
26
- import {
27
- Alert,
28
- Badge,
29
- CliError,
30
- CliErrorCode,
31
- I18nProvider,
32
- Key,
33
- SelectInput,
34
- SelectOptionAvailability,
35
- Spinner,
36
- Text,
37
- Trans,
38
- getTestOverrides,
39
- require_lib,
40
- require_react,
41
- useAsync,
42
- useAsyncCallback,
43
- useExit,
44
- useTranslation,
45
- use_input_default
46
- } from "./chunk-UEWHA4N4.js";
47
- import {
48
- __toESM,
49
- init_esm_shims
50
- } from "./chunk-PYIAC2GK.js";
51
-
52
- // src/site/SiteProvider.tsx
53
- init_esm_shims();
54
- var import_react10 = __toESM(require_react(), 1);
55
- var import_variant7 = __toESM(require_lib(), 1);
56
-
57
- // src/site/ResolveSite.tsx
58
- init_esm_shims();
59
- var import_react9 = __toESM(require_react(), 1);
60
- var import_variant6 = __toESM(require_lib(), 1);
61
-
62
- // ../cli-site-selector/src/index.ts
63
- init_esm_shims();
64
-
65
- // ../cli-site-selector/src/SiteSelector.tsx
66
- init_esm_shims();
67
- var import_react8 = __toESM(require_react(), 1);
68
- var import_variant5 = __toESM(require_lib(), 1);
69
-
70
- // ../cli-site-selector/src/SiteTypeSelect.tsx
71
- init_esm_shims();
72
- var import_react2 = __toESM(require_react(), 1);
73
- var import_variant = __toESM(require_lib(), 1);
74
-
75
- // ../cli-site-selector/src/bi.ts
76
- init_esm_shims();
77
- var import_react = __toESM(require_react(), 1);
78
- function siteSelectorBiEvents(biLogger) {
79
- return {
80
- cliAction: ({
81
- question,
82
- action,
83
- key,
84
- additionalInfo
85
- }) => {
86
- void biLogger.report(
87
- wixCliAction({
88
- question,
89
- action,
90
- key,
91
- additionalInfo: JSON.stringify(additionalInfo)
92
- })
93
- );
94
- },
95
- cliFlowStepAnswered: ({
96
- question,
97
- answer,
98
- additionalInfo
99
- }) => {
100
- void biLogger.report(
101
- wixCliAppFlowStepsAnswers({
102
- question,
103
- answer,
104
- additionalInfo: JSON.stringify(additionalInfo)
105
- })
106
- );
107
- }
108
- };
109
- }
110
- function useSiteSelectorBi() {
111
- const biLogger = useBiLogger();
112
- return (0, import_react.useMemo)(() => siteSelectorBiEvents(biLogger), [biLogger]);
113
- }
114
-
115
- // ../cli-site-selector/src/SiteTypeSelect.tsx
116
- var SiteTypeSelect = ({ onSubmit, onError, sites }) => {
117
- const bi = useSiteSelectorBi();
118
- const { t } = useTranslation();
119
- const { getDevSitesCount, getDevSitesLimit } = useDevCenterClient();
120
- const { status } = useAsync(
121
- () => Promise.all([getDevSitesCount(), getDevSitesLimit()]),
122
- [],
123
- { onError }
124
- );
125
- const handleSubmit = (option) => {
126
- void bi.cliFlowStepAnswered({
127
- question: t("site_type_select.label"),
128
- answer: option.title
129
- });
130
- onSubmit(option.value);
131
- };
132
- return (0, import_variant.match)(status, {
133
- Error: () => null,
134
- Loading: () => /* @__PURE__ */ import_react2.default.createElement(Spinner, { text: t("general.loading") }),
135
- Success: ({ result: [devSitesCount, devSitesLimit] }) => {
136
- const isDevSitesLimitReached = devSitesCount >= devSitesLimit;
137
- const userHasNoSites = sites.length === 0;
138
- return /* @__PURE__ */ import_react2.default.createElement(
139
- SelectInput,
140
- {
141
- label: t("site_type_select.label"),
142
- options: [
143
- {
144
- availability: userHasNoSites ? SelectOptionAvailability.Disabled({
145
- reason: t("site_type_select.no_sites")
146
- }) : SelectOptionAvailability.Enabled(),
147
- title: t("site_type_select.pick_existing_site"),
148
- value: "select-existing-site"
149
- },
150
- {
151
- title: t("site_type_select.create_new_dev_site"),
152
- value: "create-dev-site",
153
- availability: isDevSitesLimitReached ? SelectOptionAvailability.Disabled({
154
- reason: t("site_type_select.create_new_dev_site.disabled", {
155
- limit: devSitesLimit
156
- })
157
- }) : SelectOptionAvailability.Enabled()
158
- }
159
- ],
160
- onSubmit: handleSubmit
161
- }
162
- );
163
- }
164
- });
165
- };
166
-
167
- // ../cli-site-selector/src/CreateDevSite.tsx
168
- init_esm_shims();
169
- var import_react5 = __toESM(require_react(), 1);
170
- var import_variant3 = __toESM(require_lib(), 1);
171
-
172
- // ../cli-site-selector/src/WaitForAppToBeInstalled.tsx
173
- init_esm_shims();
174
- var import_react4 = __toESM(require_react(), 1);
175
- var import_variant2 = __toESM(require_lib(), 1);
176
-
177
- // ../cli-site-selector/src/OpenBrowser.tsx
178
- init_esm_shims();
179
- var import_react3 = __toESM(require_react(), 1);
180
- var OpenBrowser = ({ siteId, appId }) => {
181
- const { t } = useTranslation();
182
- const bi = useSiteSelectorBi();
183
- use_input_default(async (input, key) => {
184
- if (key.return) {
185
- bi.cliAction({
186
- question: t("install_app_on_site.warning.instructions"),
187
- key: "enter",
188
- action: "install_app_on_site"
189
- });
190
- await openBrowser(
191
- `https://manage.wix.com/installer/install?metaSiteId=${siteId}&appId=${appId}&platform=cli&version=latest`
192
- );
193
- }
194
- });
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(
196
- Trans,
197
- {
198
- i18nKey: "install_app_on_site.warning.instructions",
199
- components: [/* @__PURE__ */ import_react3.default.createElement(Key, { value: "Enter" })]
200
- }
201
- ));
202
- };
203
-
204
- // ../cli-site-selector/src/WaitForAppToBeInstalled.tsx
205
- var AppInstallData = (0, import_variant2.variant)({
206
- Success: {},
207
- Canceled: {}
208
- });
209
- function isAbortError(error) {
210
- return error && typeof error === "object" && "name" in error && error.name === "AbortError";
211
- }
212
- var WaitForAppToBeInstalled = ({
213
- appId,
214
- site,
215
- onSubmit,
216
- onError
217
- }) => {
218
- const { isAppInstalled } = useDevCenterClient();
219
- const { status } = useAsync(
220
- async ({ signal }) => {
221
- const { pollInterval } = getTestOverrides();
222
- try {
223
- await pWaitFor(() => isAppInstalled(appId), {
224
- // Polling interval is set to 6.5 seconds to avoid rate limiting (429)
225
- interval: pollInterval ?? 6500,
226
- timeout: {
227
- milliseconds: 60 * 1e3 * 2,
228
- signal
229
- }
230
- });
231
- return AppInstallData.Success();
232
- } catch (error) {
233
- if (error instanceof TimeoutError) {
234
- throw new CliError({
235
- code: CliErrorCode.SiteSelectorTimedout(),
236
- cause: error
237
- });
238
- }
239
- if (isAbortError(error)) {
240
- return AppInstallData.Canceled();
241
- }
242
- throw error;
243
- }
244
- },
245
- [],
246
- {
247
- onError,
248
- onSuccess: (result) => {
249
- if ((0, import_variant2.isType)(result, AppInstallData.Success)) {
250
- onSubmit();
251
- }
252
- }
253
- }
254
- );
255
- return (0, import_variant2.match)(status, {
256
- Error: () => null,
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" }))
259
- });
260
- };
261
-
262
- // ../cli-site-selector/src/CreateDevSite.tsx
263
- var CreateDevSite = ({
264
- status,
265
- appId,
266
- onSubmit,
267
- onError
268
- }) => {
269
- const { t } = useTranslation();
270
- return (0, import_variant3.match)(status, {
271
- NotRequested: () => null,
272
- Error: () => null,
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(
275
- Trans,
276
- {
277
- i18nKey: "create_dev_site.success",
278
- components: [/* @__PURE__ */ import_react5.default.createElement(Text, { skin: "success", bold: true })],
279
- values: { name: result.displayName }
280
- }
281
- ), /* @__PURE__ */ import_react5.default.createElement(SiteAuthProvider, { siteId: result.id }, /* @__PURE__ */ import_react5.default.createElement(
282
- WaitForAppToBeInstalled,
283
- {
284
- appId,
285
- site: result,
286
- onSubmit: () => onSubmit(result),
287
- onError
288
- }
289
- )))
290
- });
291
- };
292
-
293
- // ../cli-site-selector/src/SelectExistingSite.tsx
294
- init_esm_shims();
295
- var import_react7 = __toESM(require_react(), 1);
296
- var import_variant4 = __toESM(require_lib(), 1);
297
-
298
- // ../cli-site-selector/src/SiteListSelect.tsx
299
- init_esm_shims();
300
- var import_react6 = __toESM(require_react(), 1);
301
- var SiteListSelect = ({ onSubmit, sites }) => {
302
- const { t } = useTranslation();
303
- const bi = useSiteSelectorBi();
304
- const handleSubmit = (0, import_react6.useCallback)(
305
- (option) => {
306
- bi.cliFlowStepAnswered({
307
- question: t("site_list_select.label"),
308
- answer: option.title
309
- });
310
- onSubmit(option.value);
311
- },
312
- [bi, onSubmit, t]
313
- );
314
- return /* @__PURE__ */ import_react6.default.createElement(
315
- SelectInput,
316
- {
317
- label: t("site_list_select.label"),
318
- options: sites.map((site) => ({
319
- key: site.id,
320
- title: site.displayName,
321
- description: site.viewUrl,
322
- value: site
323
- })),
324
- onSubmit: handleSubmit
325
- }
326
- );
327
- };
328
-
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
- };
360
- var SelectExistingSite = ({
361
- sites,
362
- appId,
363
- onSubmit,
364
- onError
365
- }) => {
366
- const [siteToInstallAppOn, setSiteToInstallAppOn] = (0, import_react7.useState)(
367
- null
368
- );
369
- return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(
370
- SiteListSelect,
371
- {
372
- onSubmit: (site) => setSiteToInstallAppOn(site),
373
- sites
374
- }
375
- ), siteToInstallAppOn && /* @__PURE__ */ import_react7.default.createElement(SiteAuthProvider, { siteId: siteToInstallAppOn.id }, /* @__PURE__ */ import_react7.default.createElement(
376
- CheckAppInstalledOnSite,
377
- {
378
- appId,
379
- site: siteToInstallAppOn,
380
- onSubmit: () => onSubmit(siteToInstallAppOn),
381
- onError
382
- }
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."
401
- };
402
-
403
- // ../cli-site-selector/src/SiteSelector.tsx
404
- var SiteSelector = ({
405
- appId,
406
- biLogger,
407
- onSubmit,
408
- onError
409
- }) => {
410
- const [siteType, setSiteType] = (0, import_react8.useState)(null);
411
- const { createDevSite } = useDevCenterClient();
412
- const siteListClient = useSiteListClient();
413
- const { status } = useAsync(
414
- () => siteListClient.querySites({
415
- query: {
416
- cursorPaging: {
417
- limit: 100
418
- }
419
- }
420
- }),
421
- [],
422
- {
423
- onError
424
- }
425
- );
426
- const createSite = useAsyncCallback(() => createDevSite(), {
427
- onError
428
- });
429
- function handleSelectSiteType(siteType2) {
430
- setSiteType(siteType2);
431
- if (siteType2 === "create-dev-site") {
432
- void createSite.execute();
433
- }
434
- }
435
- return /* @__PURE__ */ import_react8.default.createElement(BiProvider, { value: biLogger }, /* @__PURE__ */ import_react8.default.createElement(I18nProvider, { messages: messages_default }, (0, import_variant5.match)(status, {
436
- Error: () => null,
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(
439
- SiteTypeSelect,
440
- {
441
- onSubmit: handleSelectSiteType,
442
- onError,
443
- sites
444
- }
445
- ), siteType === "create-dev-site" && /* @__PURE__ */ import_react8.default.createElement(
446
- CreateDevSite,
447
- {
448
- status: createSite.status,
449
- appId,
450
- onSubmit,
451
- onError
452
- }
453
- ), siteType === "select-existing-site" && /* @__PURE__ */ import_react8.default.createElement(
454
- SelectExistingSite,
455
- {
456
- sites,
457
- appId,
458
- onSubmit,
459
- onError
460
- }
461
- ))
462
- })));
463
- };
464
-
465
- // src/site/ResolveSite.tsx
466
- var ResolveSite = ({ state, onSubmit }) => {
467
- const exit = useExit();
468
- const { t } = useTranslation();
469
- const { model } = useProjectModel();
470
- const biLogger = useBiLogger();
471
- return /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, (0, import_variant6.match)(state, {
472
- NotConfigured: (0, import_variant6.constant)(
473
- /* @__PURE__ */ import_react9.default.createElement(Alert, { type: "insight" }, t("general.no_site_id_configured"))
474
- ),
475
- NotFound: ({ id }) => /* @__PURE__ */ import_react9.default.createElement(Alert, { type: "error" }, t("general.site_id_not_found", { id }))
476
- }), /* @__PURE__ */ import_react9.default.createElement(
477
- SiteSelector,
478
- {
479
- appId: model.config.appId,
480
- biLogger,
481
- onSubmit,
482
- onError: exit
483
- }
484
- ));
485
- };
486
-
487
- // src/site/SiteProvider.tsx
488
- var SiteProvider = ({ children, siteId }) => {
489
- const exit = useExit();
490
- const {
491
- model: { projectFolder }
492
- } = useProjectModel();
493
- const writeDebugLog = useDebugLog();
494
- const siteListClient = useSiteListClient();
495
- const { t } = useTranslation();
496
- const { status, merge } = useAsync(
497
- async () => resolveConfiguredSite({
498
- projectFolder,
499
- siteListClient,
500
- siteId,
501
- writeDebugLog
502
- }),
503
- []
504
- );
505
- const setSite = (0, import_react10.useCallback)(
506
- async (site) => {
507
- try {
508
- await saveAppConfig(projectFolder, { siteId: site.id });
509
- merge({ result: SiteState.Resolved({ site }) });
510
- } catch (e) {
511
- throw new CliError({
512
- code: CliErrorCode.FailedToSaveDevelopmentSite({
513
- path: APP_CONFIG_PATH
514
- }),
515
- cause: e
516
- });
517
- }
518
- },
519
- [merge, projectFolder]
520
- );
521
- const handleResolveSite = (0, import_react10.useCallback)(
522
- (site) => setSite(site).catch(exit),
523
- [exit, setSite]
524
- );
525
- return (0, import_variant7.match)(status, {
526
- Error: () => null,
527
- Loading: () => /* @__PURE__ */ import_react10.default.createElement(Spinner, { text: t("dev_command.site_provider.loading") }),
528
- Success: ({ result: state }) => {
529
- return (0, import_variant7.match)(state, {
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(
533
- SiteContext.Provider,
534
- {
535
- value: {
536
- site,
537
- setSite
538
- }
539
- },
540
- typeof children === "function" ? children(site) : children
541
- )
542
- });
543
- }
544
- });
545
- };
546
-
547
- // src/site/index.ts
548
- init_esm_shims();
549
-
550
- // src/components/Platform/usePlatform.tsx
551
- init_esm_shims();
552
- var import_react11 = __toESM(require_react(), 1);
553
- var import_variant8 = __toESM(require_lib(), 1);
554
- function usePlatform() {
555
- const { model } = useProjectModel();
556
- const isPlatformExists = (0, import_react11.useCallback)(
557
- (platformType) => model.components.some(
558
- (component) => component.platforms.some((0, import_variant8.isType)(platformType.type))
559
- ),
560
- [model.components]
561
- );
562
- const hasSinglePlatform = (0, import_react11.useCallback)(
563
- (platformType) => model.components.every(
564
- (component) => component.platforms.some((0, import_variant8.isType)(platformType.type)) || component.platforms.length === 0
565
- ),
566
- [model.components]
567
- );
568
- return {
569
- isPlatformExists,
570
- hasSinglePlatform
571
- };
572
- }
573
-
574
- export {
575
- SiteSelector,
576
- SiteProvider,
577
- usePlatform
578
- };
579
- //# sourceMappingURL=chunk-YJ5YN5VN.js.map
@@ -1 +0,0 @@
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"]}