@wix/himalaya-cli 0.1578.0 → 0.1579.0

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 (55) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/calendar/src/index.d.ts +42 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +1 -1
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +1 -1
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +46 -1
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +1 -1
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +1 -1
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/location.mjs +1 -1
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +1 -1
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/photos.mjs +1 -1
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdk-types.mjs +1 -1
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/tasks.mjs +1 -1
  12. package/dist/cli.mjs +44 -38
  13. package/dist/preview-assets.generated.bin +0 -0
  14. package/guides/one-app-section-mappings.md +26 -0
  15. package/guides/sdk-reference.json +43 -1
  16. package/guides/web-page-sdk-reference.md +1 -1
  17. package/package.json +2 -2
  18. package/templates/beauty-salon/dev/index.ts +14 -0
  19. package/templates/beauty-salon/tier5-src/_shared/himi-bookings.ts +21 -0
  20. package/templates/beauty-salon/tier5-src/_shared/himi-copy.ts +8 -3
  21. package/templates/beauty-salon/tier5-src/himi-booking-services/index.ts +36 -12
  22. package/templates/beauty-salon-owner/tier5-src/_shared/himi-copy.ts +8 -3
  23. package/templates/branded-lite/dev/index.ts +14 -0
  24. package/templates/branded-lite/tier5-src/_shared/himi-bookings.ts +21 -0
  25. package/templates/branded-lite/tier5-src/_shared/himi-copy.ts +8 -3
  26. package/templates/branded-lite/tier5-src/himi-booking-services/index.ts +36 -12
  27. package/templates/branded-lite/tier5-src/himi-branded-lite-programs/index.ts +40 -2
  28. package/templates/brandy/tier5-src/_shared/himi-copy.ts +8 -3
  29. package/templates/community-club/tier5-src/_shared/himi-copy.ts +8 -3
  30. package/templates/community-club-owner/tier5-src/_shared/himi-copy.ts +8 -3
  31. package/templates/events-meetups/tier5-src/_shared/himi-copy.ts +8 -3
  32. package/templates/events-meetups-owner/tier5-src/_shared/himi-copy.ts +8 -3
  33. package/templates/gym-fitness/dev/index.ts +14 -0
  34. package/templates/gym-fitness/tier5-src/_shared/himi-bookings.ts +21 -0
  35. package/templates/gym-fitness/tier5-src/_shared/himi-copy.ts +8 -3
  36. package/templates/gym-fitness/tier5-src/himi-booking-services/index.ts +36 -12
  37. package/templates/gym-fitness-owner/tier5-src/_shared/himi-copy.ts +8 -3
  38. package/templates/himi-chat/tier5-src/_shared/himi-copy.ts +8 -3
  39. package/templates/nonprofit-cause/tier5-src/_shared/himi-copy.ts +8 -3
  40. package/templates/nonprofit-cause-owner/tier5-src/_shared/himi-copy.ts +8 -3
  41. package/templates/owner-lite/tier5-src/_shared/himi-copy.ts +8 -3
  42. package/templates/podcast-creator/tier5-src/_shared/himi-copy.ts +8 -3
  43. package/templates/podcast-creator-owner/tier5-src/_shared/himi-copy.ts +8 -3
  44. package/templates/portfolio-creative/tier5-src/_shared/himi-copy.ts +8 -3
  45. package/templates/portfolio-creative-owner/tier5-src/_shared/himi-copy.ts +8 -3
  46. package/templates/restaurant/tier5-src/_shared/himi-copy.ts +8 -3
  47. package/templates/restaurant-owner/tier5-src/_shared/himi-copy.ts +8 -3
  48. package/templates/retail-store/tier5-src/_shared/himi-copy.ts +8 -3
  49. package/templates/retail-store-owner/tier5-src/_shared/himi-copy.ts +8 -3
  50. package/templates/yoga-studio/dev/index.ts +14 -0
  51. package/templates/yoga-studio/tier5-src/_shared/himi-bookings.ts +21 -0
  52. package/templates/yoga-studio/tier5-src/_shared/himi-copy.ts +8 -3
  53. package/templates/yoga-studio/tier5-src/himi-booking-services/index.ts +36 -12
  54. package/templates/yoga-studio/tier5-src/himi-branded-lite-programs/index.ts +40 -2
  55. package/templates/yoga-studio-owner/tier5-src/_shared/himi-copy.ts +8 -3
@@ -23,6 +23,8 @@ export declare function getPermissionStatus(): Promise<PermissionStatus>;
23
23
  export declare function requestPermission(access?: CalendarAccess): Promise<PermissionStatus>;
24
24
  /** Events overlapping [start, end) (epoch ms). Requires full access. */
25
25
  export declare function listEvents(start: number, end: number): Promise<CalendarEvent[]>;
26
+ /** Create an event directly. Needs calendar access — to let the user add an event with
27
+ * NO permission prompt, use {@link presentEditor} (the system editor) instead. */
26
28
  export declare function createEvent(event: NewCalendarEvent): Promise<{
27
29
  id: string | null;
28
30
  }>;
@@ -32,4 +34,44 @@ export declare function updateEvent(id: string, patch: Partial<NewCalendarEvent>
32
34
  export declare function deleteEvent(id: string): Promise<{
33
35
  deleted: boolean;
34
36
  }>;
37
+ /** A calendar the user has, from {@link listCalendars}. `color` is `#RRGGBB` ("" if unknown). */
38
+ export interface CalendarInfo {
39
+ id: string;
40
+ title: string;
41
+ color: string;
42
+ allowsModifications: boolean;
43
+ isPrimary: boolean;
44
+ }
45
+ /** What {@link presentEditor} resolved with. `saved` is false on cancel. `id` is the new
46
+ * event's id when the platform can report it — always `null` on Android (ACTION_INSERT
47
+ * returns no id) and on web, and `null` on iOS without full access. On web, `downloaded`
48
+ * is true when an .ics file was handed to the browser (the user imports it themselves,
49
+ * so `saved` stays false). */
50
+ export interface CalendarEditorResult {
51
+ saved: boolean;
52
+ id: string | null;
53
+ downloaded?: boolean;
54
+ }
55
+ /** How the system viewer was closed. Android reports `done` always (ACTION_VIEW has no result). */
56
+ export type CalendarViewerAction = "done" | "responded" | "deleted";
57
+ /**
58
+ * Open the system event editor prefilled with `event`; the user saves or cancels. Needs
59
+ * NO calendar permission (the OS editor writes the event, not the app). Resolves
60
+ * `{ saved: false, id: null }` on cancel. Web downloads an .ics instead; macOS rejects
61
+ * `unavailable` (no system editor there).
62
+ */
63
+ export declare function presentEditor(event?: Partial<NewCalendarEvent>): Promise<CalendarEditorResult>;
64
+ /**
65
+ * Show an existing event in the system viewer (iOS EKEventViewController, Android
66
+ * ACTION_VIEW). Needs full calendar access — rejects `permission_denied` without it, and
67
+ * `not_found` when the id does not resolve. Web and macOS reject `unavailable`.
68
+ */
69
+ export declare function presentViewer(id: string): Promise<{
70
+ action: CalendarViewerAction;
71
+ }>;
72
+ /** The user's calendars. Needs full access — rejects `permission_denied` without it. */
73
+ export declare function listCalendars(): Promise<CalendarInfo[]>;
74
+ /** One event by id, or `null` when it does not resolve. Needs full access — rejects
75
+ * `permission_denied` without it. */
76
+ export declare function getEvent(id: string): Promise<CalendarEvent | null>;
35
77
  export declare const version = 1;
@@ -5,7 +5,7 @@ export declare const CAPABILITY_REGISTRY: {
5
5
  readonly base44: readonly ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"];
6
6
  readonly biometrics: readonly ["available", "confirm"];
7
7
  readonly browser_auth: readonly ["start"];
8
- readonly calendar: readonly ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"];
8
+ readonly calendar: readonly ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"];
9
9
  readonly calls: readonly ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"];
10
10
  readonly camera: readonly ["capture", "pickDocument", "prepareImage", "scanQR"];
11
11
  readonly clipboard: readonly ["hasImage", "hasText", "readText", "writeImage", "writeText"];
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -101,12 +101,57 @@ async function deleteEvent(id) {
101
101
  const r = await dispatch("capability.calendar.deleteEvent", { id });
102
102
  return { deleted: r?.deleted === true };
103
103
  }
104
+ function draftParams(event) {
105
+ const params = {};
106
+ if (event.title !== void 0 && event.title !== "") params.title = event.title;
107
+ if (typeof event.start === "number" && Number.isFinite(event.start)) params.start = event.start;
108
+ if (typeof event.end === "number" && Number.isFinite(event.end)) params.end = event.end;
109
+ if (event.allDay) params.allDay = true;
110
+ if (event.location) params.location = event.location;
111
+ if (event.notes) params.notes = event.notes;
112
+ return params;
113
+ }
114
+ async function presentEditor(event = {}) {
115
+ const r = await dispatch("capability.calendar.presentEditor", draftParams(event));
116
+ const out = { saved: r?.saved === true, id: typeof r?.id === "string" && r.id !== "" ? r.id : null };
117
+ if (r?.downloaded === true) out.downloaded = true;
118
+ return out;
119
+ }
120
+ async function presentViewer(id) {
121
+ const r = await dispatch("capability.calendar.presentViewer", { id });
122
+ const action = r?.action === "responded" || r?.action === "deleted" ? r.action : "done";
123
+ return { action };
124
+ }
125
+ async function listCalendars() {
126
+ const r = await dispatch("capability.calendar.listCalendars");
127
+ if (!Array.isArray(r?.items)) return [];
128
+ return r.items.flatMap((raw) => {
129
+ const c = raw;
130
+ if (!c || typeof c.id !== "string" || c.id === "") return [];
131
+ return [{
132
+ id: c.id,
133
+ title: typeof c.title === "string" ? c.title : "",
134
+ color: typeof c.color === "string" ? c.color : "",
135
+ allowsModifications: c.allowsModifications === true,
136
+ isPrimary: c.isPrimary === true
137
+ }];
138
+ });
139
+ }
140
+ async function getEvent(id) {
141
+ const r = await dispatch("capability.calendar.getEvent", { id });
142
+ const e = r?.event;
143
+ return e && typeof e.id === "string" && e.id !== "" ? e : null;
144
+ }
104
145
  var version = 1;
105
146
  export {
106
147
  createEvent,
107
148
  deleteEvent,
149
+ getEvent,
108
150
  getPermissionStatus,
151
+ listCalendars,
109
152
  listEvents,
153
+ presentEditor,
154
+ presentViewer,
110
155
  requestPermission,
111
156
  updateEvent,
112
157
  version
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -5,7 +5,7 @@ var CAPABILITY_REGISTRY = {
5
5
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
6
6
  "biometrics": ["available", "confirm"],
7
7
  "browser_auth": ["start"],
8
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
8
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
9
9
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
10
10
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
11
11
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],
@@ -20,7 +20,7 @@ var CAPABILITY_REGISTRY = {
20
20
  "base44": ["authLoginViaEmailPassword", "authLoginViaOtp", "authLoginWithProvider", "authLogout", "authMe", "authRegister", "authResetPassword", "authStatus", "authUpdateMe", "authVerifyOtp", "entitiesBulkCreate", "entitiesCreate", "entitiesDelete", "entitiesFilter", "entitiesGet", "entitiesList", "entitiesUpdate", "functionsInvoke"],
21
21
  "biometrics": ["available", "confirm"],
22
22
  "browser_auth": ["start"],
23
- "calendar": ["createEvent", "deleteEvent", "getPermissionStatus", "listEvents", "requestPermission", "updateEvent"],
23
+ "calendar": ["createEvent", "deleteEvent", "getEvent", "getPermissionStatus", "listCalendars", "listEvents", "presentEditor", "presentViewer", "requestPermission", "updateEvent"],
24
24
  "calls": ["answer", "availability", "getPermissionStatus", "getState", "hangup", "listCalls", "offer", "receiveSignal", "reject", "requestPermission", "setMuted", "setRingback", "setSpeaker", "signalNext", "signalStart", "signalStop", "start", "subscribeEvents"],
25
25
  "camera": ["capture", "pickDocument", "prepareImage", "scanQR"],
26
26
  "clipboard": ["hasImage", "hasText", "readText", "writeImage", "writeText"],