@microsoft/teams-js 2.33.0 → 2.34.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -300,7 +300,10 @@ export declare const enum ApiName {
300
300
  Sharing_ShareWebContent = "sharing.shareWebContent",
301
301
  StageView_Open = "stageView.open",
302
302
  StageView_Self_Close = "stageView.self.close",
303
- Store_Open = "store.open",
303
+ Store_OpenFullStore = "store.openFullStore",
304
+ Store_OpenAppDetail = "store.openAppDetail",
305
+ Store_OpenInContextStore = "store.openInContextStore",
306
+ Store_OpenSpecificStore = "store.openSpecificStore",
304
307
  Tasks_StartTask = "tasks.startTask",
305
308
  Tasks_SubmitTask = "tasks.submitTask",
306
309
  Tasks_UpdateTask = "tasks.updateTask",
@@ -1,41 +1,57 @@
1
+ import { DialogSize } from '../public';
1
2
  import { AppId } from '../public/appId';
2
3
  /**
3
4
  * @beta
4
5
  * @hidden
5
- * Enum of store dialog type
6
+ * @module
7
+ * Namespace to open app store
6
8
  * @internal
7
9
  * Limited to Microsoft-internal use
8
10
  */
9
- export declare enum StoreDialogType {
10
- /**
11
- * open a store without navigation
12
- */
13
- FullStore = "fullstore",
14
- /**
15
- * open a store with navigation to a specific collection
16
- */
17
- SpecificStore = "specificstore",
18
- /**
19
- * open in-context-store
20
- */
21
- InContextStore = "ics",
11
+ /**
12
+ * @beta
13
+ * @hidden
14
+ * Interface for opening the full store function parameters
15
+ * @internal
16
+ * Limited to Microsoft-internal use
17
+ */
18
+ export interface OpenFullStoreParams {
22
19
  /**
23
- * open detail dialog (DD)
20
+ * the store dialog size, defined by {@link DialogSize}, if not present, the host will choose an appropriate size
24
21
  */
25
- AppDetail = "appdetail"
22
+ size?: DialogSize;
26
23
  }
27
24
  /**
28
25
  * @beta
29
26
  * @hidden
30
- * Interface of open full store, copilot store and in-context-store function parameter
27
+ * Interface for opening the in-context store function parameters
31
28
  * @internal
32
29
  * Limited to Microsoft-internal use
33
30
  */
34
- export interface OpenFullStoreAndICSParams {
31
+ export interface OpenInContextStoreParams {
32
+ /**
33
+ * the store dialog size, defined by {@link DialogSize}, if not present, the host will choose an appropriate size
34
+ */
35
+ size?: DialogSize;
36
+ /**
37
+ * The application capability (e.g., "Tab", "Bot", "Messaging", "Connector", "CUSTOMBOT").
38
+ * Defaults to "Tab".
39
+ */
40
+ appCapability?: string;
41
+ /**
42
+ * The application meta capabilities (e.g., ["copilotPlugins", "copilotExtensions"]).
43
+ * Defaults to "[]".
44
+ */
45
+ appMetaCapabilities?: string[];
35
46
  /**
36
- * the store dialog type, defined by {@link StoreDialogType}
47
+ * The installation scope (e.g., "Personal" | "Team").
48
+ * Defaults to "Personal".
37
49
  */
38
- dialogType: StoreDialogType.FullStore | StoreDialogType.InContextStore;
50
+ installationScope?: string;
51
+ /**
52
+ * A list of app IDs to be filtered out.
53
+ */
54
+ filteredOutAppIds?: AppId[];
39
55
  }
40
56
  /**
41
57
  * @beta
@@ -45,14 +61,14 @@ export interface OpenFullStoreAndICSParams {
45
61
  * Limited to Microsoft-internal use
46
62
  */
47
63
  export interface OpenAppDetailParams {
48
- /**
49
- * need to be app detail type, defined by {@link StoreDialogType}
50
- */
51
- dialogType: StoreDialogType.AppDetail;
52
64
  /**
53
65
  * app id of the dialog to open
54
66
  */
55
67
  appId: AppId;
68
+ /**
69
+ * the store dialog size, defined by {@link DialogSize}, if not present, the host will choose an appropriate size
70
+ */
71
+ size?: DialogSize;
56
72
  }
57
73
  /**
58
74
  * @beta
@@ -62,58 +78,47 @@ export interface OpenAppDetailParams {
62
78
  * Limited to Microsoft-internal use
63
79
  */
64
80
  export interface OpenSpecificStoreParams {
65
- /**
66
- * need to be specific store type, defined by {@link StoreDialogType}
67
- */
68
- dialogType: StoreDialogType.SpecificStore;
69
81
  /**
70
82
  * collection id of the plugin store to open
71
83
  */
72
84
  collectionId: string;
85
+ /**
86
+ * the store dialog size, defined by {@link DialogSize}, if not present, the host will choose an appropriate size
87
+ */
88
+ size?: DialogSize;
73
89
  }
74
90
  /**
75
91
  * @beta
76
92
  * @hidden
77
- * Interface of open store function parameters, including OpenFullStoreAndICSParams, OpenAppDetailParams, OpenSpecificStoreParams
93
+ * Api to open a full store without navigation
78
94
  * @internal
79
95
  * Limited to Microsoft-internal use
80
96
  */
81
- export type OpenStoreParams = OpenFullStoreAndICSParams | OpenAppDetailParams | OpenSpecificStoreParams;
97
+ export declare function openFullStore(params: OpenFullStoreParams | undefined): Promise<void>;
82
98
  /**
83
99
  * @beta
84
100
  * @hidden
85
- * error message when getting invalid store dialog type
101
+ * Api to open an app detail dialog
86
102
  * @internal
87
103
  * Limited to Microsoft-internal use
88
104
  */
89
- export declare const errorInvalidDialogType = "Invalid store dialog type, but type needed to specify store to open";
105
+ export declare function openAppDetail(params: OpenAppDetailParams): Promise<void>;
90
106
  /**
91
107
  * @beta
92
108
  * @hidden
93
- * error message when getting wrong app id or missing app id
109
+ * Api to open an in-context-store dialog
94
110
  * @internal
95
111
  * Limited to Microsoft-internal use
96
112
  */
97
- export declare const errorMissingAppId = "No App Id present, but AppId needed to open AppDetail store";
113
+ export declare function openInContextStore(params: OpenInContextStoreParams | undefined): Promise<void>;
98
114
  /**
99
115
  * @beta
100
116
  * @hidden
101
- * error message when getting wrong collection id or missing collection id
102
- * @internal
103
- * Limited to Microsoft-internal use
104
- */
105
- export declare const errorMissingCollectionId = "No Collection Id present, but CollectionId needed to open a store specific to a collection";
106
- /**
107
- * @beta
108
- * @hidden
109
- * Api to open a store
110
- *
111
- * @param openStoreParams - params to call openStoreExperience
112
- *
117
+ * Api to open an store with navigation to a specific collection
113
118
  * @internal
114
119
  * Limited to Microsoft-internal use
115
120
  */
116
- export declare function openStoreExperience(openStoreParams: OpenStoreParams): Promise<void>;
121
+ export declare function openSpecificStore(params: OpenSpecificStoreParams): Promise<void>;
117
122
  /**
118
123
  * Checks if the store capability is supported by the host
119
124
  * @returns boolean to represent whether the store capability is supported
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.4_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{getLogger as n,isFollowingApiVersionTagFormat as i,getApiVersionTag as t}from"./telemetry.js";import{isSdkError as o,ErrorCode as s}from"../public/interfaces.js";import{latestRuntimeApiVersion as r}from"../public/runtime.js";import{isSerializable as a}from"../public/serializable.interface.js";import{UUID as d}from"../public/uuidObject.js";import{version as c}from"../public/version.js";import{GlobalVars as u}from"./globalVars.js";import{callHandler as l}from"./handlers.js";import g from"./hostToAppTelemetry.js";import{serializeMessageRequest as p,deserializeMessageResponse as f,deserializeMessageRequest as m,serializeMessageResponse as w}from"./messageObjects.js";import{tryPolyfillWithNestedAppAuthBridge as h}from"./nestedAppAuthUtils.js";import{getCurrentTimestamp as W,ssrSafeWindow as v}from"./utils.js";import{validateOrigin as M}from"./validOrigins.js";const b=n("communication");class y{}class k{}function I(n,i){if(k.messageListener=n=>function(n){return e(this,void 0,void 0,(function*(){if(!n||!n.data||"object"!=typeof n.data)return void _("Unrecognized message format received by app, message being ignored. Message: %o",n);const e=n.source||n.originalEvent&&n.originalEvent.source,i=n.origin||n.originalEvent&&n.originalEvent.origin;return H(e,i).then((o=>{o?(function(e,n){u.isFramelessWindow||y.parentWindow&&!y.parentWindow.closed&&e!==y.parentWindow?y.childWindow&&!y.childWindow.closed&&e!==y.childWindow||(y.childWindow=e,y.childOrigin=n):(y.parentWindow=e,y.parentOrigin=n);y.parentWindow&&y.parentWindow.closed&&(y.parentWindow=null,y.parentOrigin=null);y.childWindow&&y.childWindow.closed&&(y.childWindow=null,y.childOrigin=null);te(y.parentWindow),te(y.childWindow)}(e,i),e===y.parentWindow?G(n):e===y.childWindow&&function(e){if("id"in e.data&&"func"in e.data){const n=m(e.data),[i,o]=l(n.func,n.args);i&&void 0!==o?(X("Returning message %s from child back to child, action: %s.",ae(n),n.func),se(n.id,n.uuid,Array.isArray(o)?o:[o])):(X("Relaying message %s from child to parent, action: %s. Relayed message will have a new id.",ae(n),n.func),N(t("v2","tasks.startTask"),n.func,n.args,((...e)=>{if(y.childWindow){const i=e.pop();X("Message from parent being relayed to child, id: %s",ae(n)),se(n.id,n.uuid,e,i)}})))}}(n)):_("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin, message: %o, source: %o, origin: %o",n,e,i)}))}))}(n),y.currentWindow=y.currentWindow||v(),y.parentWindow=y.currentWindow.parent!==y.currentWindow.self?y.currentWindow.parent:y.currentWindow.opener,y.topWindow=y.currentWindow.top,(y.parentWindow||n)&&y.currentWindow.addEventListener("message",k.messageListener,!1),!y.parentWindow){const e=y.currentWindow;if(!e.nativeInterface)return Promise.reject(new Error("Initialization Failed. No Parent window found."));u.isFramelessWindow=!0,e.onNativeMessage=G}try{return y.parentOrigin="*",S(i,"initialize",[c,r,n]).then((([e,n,i,t])=>(h(t,y.currentWindow,{onMessage:q,sendPostMessage:U}),{context:e,clientType:n,runtimeConfig:i,clientSupportedSDKVersion:t})))}finally{y.parentOrigin=null}}function T(){y.currentWindow&&y.currentWindow.removeEventListener("message",k.messageListener,!1),y.currentWindow=null,y.parentWindow=null,y.parentOrigin=null,y.childWindow=null,y.childOrigin=null,k.parentMessageQueue=[],k.childMessageQueue=[],k.nextMessageId=0,k.callbacks.clear(),k.promiseCallbacks.clear(),k.portCallbacks.clear(),k.legacyMessageIdsToUuidMap={},g.clearMessages()}function R(e,n,...i){return S(e,n,i).then((([e])=>e))}function E(e,n,...i){return S(e,n,i).then((([e,n])=>{if(!e)throw new Error(n)}))}function O(e,n,i,...t){return S(e,n,t).then((([e,n])=>{if(!e)throw new Error(n||i)}))}function j(e,n,...i){return S(e,n,i).then((([e,n])=>{if(e)throw e;return n}))}function S(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return new Promise((i=>{const o=L(e,n,t);var s;i((s=o.uuid,new Promise((e=>{k.promiseCallbacks.set(s,e)}))))}))}function A(e){return e.map((e=>a(e)?e.serialize():e))}function P(n,i,t,r,a){var d;return e(this,void 0,void 0,(function*(){const e=A(i),[c]=yield S(r,n,e);if(a&&a(c)||!a&&o(c))throw new Error(`${c.errorCode}, message: ${null!==(d=c.message)&&void 0!==d?d:"None"}`);if(t.validate(c))return t.deserialize(c);throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host - ${JSON.stringify(c)}`)}))}function C(n,i,t,r){var a;return e(this,void 0,void 0,(function*(){const e=A(i),[d]=yield S(t,n,e);if(r&&r(d)||!r&&o(d))throw new Error(`${d.errorCode}, message: ${null!==(a=d.message)&&void 0!==a?a:"None"}`);if(void 0!==d)throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host`)}))}function x(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const o=L(e,n,t);return s=o.uuid,new Promise(((e,n)=>{k.portCallbacks.set(s,((i,t)=>{i instanceof MessagePort?e(i):n(t&&t.length>0?t[0]:new Error("Host responded without port or error details."))}))}));var s}function N(e,n,t,o){let s;if(t instanceof Function?o=t:t instanceof Array&&(s=t),!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const r=L(e,n,s);o&&k.callbacks.set(r.uuid,o)}k.parentMessageQueue=[],k.childMessageQueue=[],k.topMessageQueue=[],k.nextMessageId=0,k.callbacks=new Map,k.promiseCallbacks=new Map,k.portCallbacks=new Map,k.legacyMessageIdsToUuidMap={};const $=b.extend("sendNestedAuthRequestToTopWindow");function U(e){const n=$,i=y.topWindow,t=function(e){const n=k.nextMessageId++,i=new d;return k.legacyMessageIdsToUuidMap[n]=i,{id:n,uuid:i,func:"nestedAppAuth.execute",timestamp:Date.now(),monotonicTimestamp:W(),args:[],data:e}}(e);return n("Message %s information: %o",ae(t),{actionName:t.func}),z(i,t)}const Q=b.extend("sendRequestToTargetWindowHelper");function z(e,n){const i=Q,t=ne(e),o=p(n);if(u.isFramelessWindow)y.currentWindow&&y.currentWindow.nativeInterface&&(i("Sending message %s to %s via framelessPostMessage interface",ae(o),t),y.currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(o)));else{const s=ee(e);e&&s?(i("Sending message %s to %s via postMessage",ae(o),t),e.postMessage(o,s)):(i("Adding message %s to %s message queue",ae(o),t),Z(e).push(n))}return n}const F=b.extend("sendMessageToParentHelper");function L(e,n,i){const t=F,o=y.parentWindow,s=function(e,n,i){const t=k.nextMessageId++,o=new d;return k.legacyMessageIdsToUuidMap[t]=o,{id:t,uuid:o,func:n,timestamp:Date.now(),monotonicTimestamp:W(),args:i||[],apiVersionTag:e}}(e,n,i);return g.storeCallbackInformation(s.uuid,{name:n,calledAt:s.timestamp}),t("Message %s information: %o",ae(s),{actionName:n,args:i}),z(o,s)}const _=b.extend("processIncomingMessage");const V=b.extend("processAuthBridgeMessage");function q(e,n){var i,t;const o=V;if(!e||!e.data||"object"!=typeof e.data)return void o("Unrecognized message format received by app, message being ignored. Message: %o",e);const{args:s}=e.data,[,r]=null!=s?s:[],a=(()=>{try{return JSON.parse(r)}catch(e){return null}})();if(!a||"object"!=typeof a||"NestedAppAuthResponse"!==a.messageType)return void o("Unrecognized data format received by app, message being ignored. Message: %o",e);const d=e.source||(null===(i=null==e?void 0:e.originalEvent)||void 0===i?void 0:i.source),c=e.origin||(null===(t=null==e?void 0:e.originalEvent)||void 0===t?void 0:t.origin);d?H(d,c)?(y.topWindow&&!y.topWindow.closed&&d!==y.topWindow||(y.topWindow=d,y.topOrigin=c),y.topWindow&&y.topWindow.closed&&(y.topWindow=null,y.topOrigin=null),te(y.topWindow),n(r)):o("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin"):o("Message being ignored by app because it is coming for a target that is null")}const D=b.extend("shouldProcessIncomingMessage");function H(n,i){return e(this,void 0,void 0,(function*(){if(y.currentWindow&&n===y.currentWindow)return D("Should not process message because it is coming from the current window"),!1;if(y.currentWindow&&y.currentWindow.location&&i&&i===y.currentWindow.location.origin)return!0;{let e;try{e=new URL(i)}catch(e){return D("Message has an invalid origin of %s",i),!1}const n=yield M(e);return n||D("Message has an invalid origin of %s",i),n}}))}const J=b.extend("handleIncomingMessageFromParent");function B(e,n){if(n){const i=[...e].find((([e,i])=>e.toString()===n.toString()));if(i)return i[0]}}function K(e,n){const i=B(n,e.uuid);i&&n.delete(i),e.uuid?k.legacyMessageIdsToUuidMap={}:delete k.legacyMessageIdsToUuidMap[e.id]}function G(e){const n=J,i=W();if("id"in e.data&&"number"==typeof e.data.id){const t=e.data,o=f(t),s=function(e){const n=J;if(!e.uuid)return k.legacyMessageIdsToUuidMap[e.id];{const n=e.uuid,i=B(k.callbacks,n);if(i)return i;const t=B(k.promiseCallbacks,n);if(t)return t;const o=B(k.portCallbacks,n);if(o)return o}n("Received message %s that failed to produce a callbackId",ae(e))}(o);if(s){const t=k.callbacks.get(s);n("Received a response from parent for message %s",s.toString()),g.handlePerformanceMetrics(s,o,n,i),t&&(n("Invoking the registered callback for message %s with arguments %o",s.toString(),o.args),t.apply(null,[...o.args,o.isPartialResponse]),function(e){return!0===e.data.isPartialResponse}(e)||(n("Removing registered callback for message %s",s.toString()),K(o,k.callbacks)));const r=k.promiseCallbacks.get(s);r&&(n("Invoking the registered promise callback for message %s with arguments %o",s.toString(),o.args),r(o.args),n("Removing registered promise callback for message %s",s.toString()),K(o,k.promiseCallbacks));const a=k.portCallbacks.get(s);if(a){let i;n("Invoking the registered port callback for message %s with arguments %o",s.toString(),o.args),e.ports&&e.ports[0]instanceof MessagePort&&(i=e.ports[0]),a(i,o.args),n("Removing registered port callback for message %s",s.toString()),K(o,k.portCallbacks)}o.uuid&&(k.legacyMessageIdsToUuidMap={})}}else if("func"in e.data&&"string"==typeof e.data.func){const t=e.data;g.handleOneWayPerformanceMetrics(t,n,i),n('Received a message from parent %s, action: "%s"',ae(t),t.func),l(t.func,t.args)}else n("Received an unknown message: %O",e)}const X=b.extend("handleIncomingMessageFromChild");function Y(){return y.topWindow!==y.parentWindow}function Z(e){return e===y.topWindow&&Y()?k.topMessageQueue:e===y.parentWindow?k.parentMessageQueue:e===y.childWindow?k.childMessageQueue:[]}function ee(e){return e===y.topWindow&&Y()?y.topOrigin:e===y.parentWindow?y.parentOrigin:e===y.childWindow?y.childOrigin:null}function ne(e){return e===y.topWindow&&Y()?"top":e===y.parentWindow?"parent":e===y.childWindow?"child":null}const ie=b.extend("flushMessageQueue");function te(e){const n=ee(e),i=Z(e),t=ne(e);for(;e&&n&&i.length>0;){const o=i.shift();if(o){const i=p(o);ie("Flushing message %s from %s message queue via postMessage.",ae(i),t),e.postMessage(i,n)}}}function oe(e,n){let i;i=y.currentWindow.setInterval((()=>{0===Z(e).length&&(clearInterval(i),n())}),100)}function se(e,n,i,t){const o=y.childWindow,s=function(e,n,i,t){return{id:e,uuid:n,args:i||[],isPartialResponse:t}}(e,n,i,t),r=w(s),a=ee(o);o&&a&&o.postMessage(r,a)}function re(e,n){const i=y.childWindow,t=function(e,n){return{func:e,args:n||[]}}(e,n),o=ee(i);i&&o?i.postMessage(t,o):Z(i).push(t)}function ae(e){return"uuidAsString"in e?`${e.uuidAsString} (legacy id: ${e.id})`:"uuid"in e&&void 0!==e.uuid?`${e.uuid.toString()} (legacy id: ${e.id})`:`legacy id: ${e.id} (no uuid)`}export{y as Communication,C as callFunctionInHost,P as callFunctionInHostAndHandleResponse,I as initializeCommunication,x as requestPortFromParentWithVersion,j as sendAndHandleSdkError,E as sendAndHandleStatusAndReason,O as sendAndHandleStatusAndReasonWithDefaultError,R as sendAndUnwrap,re as sendMessageEventToChild,N as sendMessageToParent,S as sendMessageToParentAsync,U as sendNestedAuthRequestToTopWindow,T as uninitializeCommunication,oe as waitForMessageQueue};
1
+ import{__awaiter as e}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.4_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{getLogger as n,isFollowingApiVersionTagFormat as i,getApiVersionTag as o}from"./telemetry.js";import{isSdkError as t,ErrorCode as s}from"../public/interfaces.js";import{latestRuntimeApiVersion as r}from"../public/runtime.js";import{isSerializable as a}from"../public/serializable.interface.js";import{UUID as d}from"../public/uuidObject.js";import{version as c}from"../public/version.js";import{GlobalVars as u}from"./globalVars.js";import{callHandler as l}from"./handlers.js";import g from"./hostToAppTelemetry.js";import{serializeMessageRequest as p,deserializeMessageResponse as f,deserializeMessageRequest as m,serializeMessageResponse as w}from"./messageObjects.js";import{tryPolyfillWithNestedAppAuthBridge as h}from"./nestedAppAuthUtils.js";import{getCurrentTimestamp as W,ssrSafeWindow as v}from"./utils.js";import{validateOrigin as M}from"./validOrigins.js";const b=n("communication");class y{}class k{}function I(n,i){if(k.messageListener=n=>function(n){return e(this,void 0,void 0,(function*(){if(!n||!n.data||"object"!=typeof n.data)return void _("Unrecognized message format received by app, message being ignored. Message: %o",n);const e=n.source||n.originalEvent&&n.originalEvent.source,i=n.origin||n.originalEvent&&n.originalEvent.origin;return D(e,i).then((t=>{t?(function(e,n){u.isFramelessWindow||y.parentWindow&&!y.parentWindow.closed&&e!==y.parentWindow?y.childWindow&&!y.childWindow.closed&&e!==y.childWindow||(y.childWindow=e,y.childOrigin=n):(y.parentWindow=e,y.parentOrigin=n);y.parentWindow&&y.parentWindow.closed&&(y.parentWindow=null,y.parentOrigin=null);y.childWindow&&y.childWindow.closed&&(y.childWindow=null,y.childOrigin=null);oe(y.parentWindow),oe(y.childWindow)}(e,i),e===y.parentWindow?G(n):e===y.childWindow&&function(e){if("id"in e.data&&"func"in e.data){const n=m(e.data),[i,t]=l(n.func,n.args);i&&void 0!==t?(X("Handler called in response to message %s from child. Returning response from handler to child, action: %s.",ae(n),n.func),se(n.id,n.uuid,Array.isArray(t)?t:[t])):(X("No handler for message %s from child found; relaying message on to parent, action: %s. Relayed message will have a new id.",ae(n),n.func),N(o("v2","tasks.startTask"),n.func,n.args,((...e)=>{if(y.childWindow){const i=e.pop();X("Message from parent being relayed to child, id: %s",ae(n)),se(n.id,n.uuid,e,i)}})))}}(n)):_("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin, message: %o, source: %o, origin: %o",n,e,i)}))}))}(n),y.currentWindow=y.currentWindow||v(),y.parentWindow=y.currentWindow.parent!==y.currentWindow.self?y.currentWindow.parent:y.currentWindow.opener,y.topWindow=y.currentWindow.top,(y.parentWindow||n)&&y.currentWindow.addEventListener("message",k.messageListener,!1),!y.parentWindow){const e=y.currentWindow;if(!e.nativeInterface)return Promise.reject(new Error("Initialization Failed. No Parent window found."));u.isFramelessWindow=!0,e.onNativeMessage=G}try{return y.parentOrigin="*",j(i,"initialize",[c,r,n]).then((([e,n,i,o])=>(h(o,y.currentWindow,{onMessage:q,sendPostMessage:U}),{context:e,clientType:n,runtimeConfig:i,clientSupportedSDKVersion:o})))}finally{y.parentOrigin=null}}function T(){y.currentWindow&&y.currentWindow.removeEventListener("message",k.messageListener,!1),y.currentWindow=null,y.parentWindow=null,y.parentOrigin=null,y.childWindow=null,y.childOrigin=null,k.parentMessageQueue=[],k.childMessageQueue=[],k.nextMessageId=0,k.callbacks.clear(),k.promiseCallbacks.clear(),k.portCallbacks.clear(),k.legacyMessageIdsToUuidMap={},g.clearMessages()}function R(e,n,...i){return j(e,n,i).then((([e])=>e))}function E(e,n,...i){return j(e,n,i).then((([e,n])=>{if(!e)throw new Error(n)}))}function O(e,n,i,...o){return j(e,n,o).then((([e,n])=>{if(!e)throw new Error(n||i)}))}function S(e,n,...i){return j(e,n,i).then((([e,n])=>{if(e)throw e;return n}))}function j(e,n,o=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return new Promise((i=>{const t=L(e,n,o);var s;i((s=t.uuid,new Promise((e=>{k.promiseCallbacks.set(s,e)}))))}))}function A(e){return e.map((e=>a(e)?e.serialize():e))}function P(n,i,o,r,a){var d;return e(this,void 0,void 0,(function*(){const e=A(i),[c]=yield j(r,n,e);if(a&&a(c)||!a&&t(c))throw new Error(`${c.errorCode}, message: ${null!==(d=c.message)&&void 0!==d?d:"None"}`);if(o.validate(c))return o.deserialize(c);throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host - ${JSON.stringify(c)}`)}))}function C(n,i,o,r){var a;return e(this,void 0,void 0,(function*(){const e=A(i),[d]=yield j(o,n,e);if(r&&r(d)||!r&&t(d))throw new Error(`${d.errorCode}, message: ${null!==(a=d.message)&&void 0!==a?a:"None"}`);if(void 0!==d)throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host`)}))}function x(e,n,o=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const t=L(e,n,o);return s=t.uuid,new Promise(((e,n)=>{k.portCallbacks.set(s,((i,o)=>{i instanceof MessagePort?e(i):n(o&&o.length>0?o[0]:new Error("Host responded without port or error details."))}))}));var s}function N(e,n,o,t){let s;if(o instanceof Function?t=o:o instanceof Array&&(s=o),!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const r=L(e,n,s);t&&k.callbacks.set(r.uuid,t)}k.parentMessageQueue=[],k.childMessageQueue=[],k.topMessageQueue=[],k.nextMessageId=0,k.callbacks=new Map,k.promiseCallbacks=new Map,k.portCallbacks=new Map,k.legacyMessageIdsToUuidMap={};const $=b.extend("sendNestedAuthRequestToTopWindow");function U(e){const n=$,i=y.topWindow,o=function(e){const n=k.nextMessageId++,i=new d;return k.legacyMessageIdsToUuidMap[n]=i,{id:n,uuid:i,func:"nestedAppAuth.execute",timestamp:Date.now(),monotonicTimestamp:W(),args:[],data:e}}(e);return n("Message %s information: %o",ae(o),{actionName:o.func}),z(i,o)}const Q=b.extend("sendRequestToTargetWindowHelper");function z(e,n){const i=Q,o=ne(e),t=p(n);if(u.isFramelessWindow)y.currentWindow&&y.currentWindow.nativeInterface&&(i("Sending message %s to %s via framelessPostMessage interface",ae(t),o),y.currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(t)));else{const s=ee(e);e&&s?(i("Sending message %s to %s via postMessage",ae(t),o),e.postMessage(t,s)):(i("Adding message %s to %s message queue",ae(t),o),Z(e).push(n))}return n}const F=b.extend("sendMessageToParentHelper");function L(e,n,i){const o=F,t=y.parentWindow,s=function(e,n,i){const o=k.nextMessageId++,t=new d;return k.legacyMessageIdsToUuidMap[o]=t,{id:o,uuid:t,func:n,timestamp:Date.now(),monotonicTimestamp:W(),args:i||[],apiVersionTag:e}}(e,n,i);return g.storeCallbackInformation(s.uuid,{name:n,calledAt:s.timestamp}),o("Message %s information: %o",ae(s),{actionName:n,args:i}),z(t,s)}const _=b.extend("processIncomingMessage");const V=b.extend("processAuthBridgeMessage");function q(e,n){var i,o;const t=V;if(!e||!e.data||"object"!=typeof e.data)return void t("Unrecognized message format received by app, message being ignored. Message: %o",e);const{args:s}=e.data,[,r]=null!=s?s:[],a=(()=>{try{return JSON.parse(r)}catch(e){return null}})();if(!a||"object"!=typeof a||"NestedAppAuthResponse"!==a.messageType)return void t("Unrecognized data format received by app, message being ignored. Message: %o",e);const d=e.source||(null===(i=null==e?void 0:e.originalEvent)||void 0===i?void 0:i.source),c=e.origin||(null===(o=null==e?void 0:e.originalEvent)||void 0===o?void 0:o.origin);d?D(d,c)?(y.topWindow&&!y.topWindow.closed&&d!==y.topWindow||(y.topWindow=d,y.topOrigin=c),y.topWindow&&y.topWindow.closed&&(y.topWindow=null,y.topOrigin=null),oe(y.topWindow),n(r)):t("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin"):t("Message being ignored by app because it is coming for a target that is null")}const H=b.extend("shouldProcessIncomingMessage");function D(n,i){return e(this,void 0,void 0,(function*(){if(y.currentWindow&&n===y.currentWindow)return H("Should not process message because it is coming from the current window"),!1;if(y.currentWindow&&y.currentWindow.location&&i&&i===y.currentWindow.location.origin)return!0;{let e;try{e=new URL(i)}catch(e){return H("Message has an invalid origin of %s",i),!1}const n=yield M(e);return n||H("Message has an invalid origin of %s",i),n}}))}const J=b.extend("handleIncomingMessageFromParent");function B(e,n){if(n){const i=[...e].find((([e,i])=>e.toString()===n.toString()));if(i)return i[0]}}function K(e,n){const i=B(n,e.uuid);i&&n.delete(i),e.uuid?k.legacyMessageIdsToUuidMap={}:delete k.legacyMessageIdsToUuidMap[e.id]}function G(e){const n=J,i=W();if("id"in e.data&&"number"==typeof e.data.id){const o=e.data,t=f(o),s=function(e){const n=J;if(!e.uuid)return k.legacyMessageIdsToUuidMap[e.id];{const n=e.uuid,i=B(k.callbacks,n);if(i)return i;const o=B(k.promiseCallbacks,n);if(o)return o;const t=B(k.portCallbacks,n);if(t)return t}n("Received message %s that failed to produce a callbackId",ae(e))}(t);if(s){const o=k.callbacks.get(s);n("Received a response from parent for message %s",s.toString()),g.handlePerformanceMetrics(s,t,n,i),o&&(n("Invoking the registered callback for message %s with arguments %o",s.toString(),t.args),o.apply(null,[...t.args,t.isPartialResponse]),function(e){return!0===e.data.isPartialResponse}(e)||(n("Removing registered callback for message %s",s.toString()),K(t,k.callbacks)));const r=k.promiseCallbacks.get(s);r&&(n("Invoking the registered promise callback for message %s with arguments %o",s.toString(),t.args),r(t.args),n("Removing registered promise callback for message %s",s.toString()),K(t,k.promiseCallbacks));const a=k.portCallbacks.get(s);if(a){let i;n("Invoking the registered port callback for message %s with arguments %o",s.toString(),t.args),e.ports&&e.ports[0]instanceof MessagePort&&(i=e.ports[0]),a(i,t.args),n("Removing registered port callback for message %s",s.toString()),K(t,k.portCallbacks)}t.uuid&&(k.legacyMessageIdsToUuidMap={})}}else if("func"in e.data&&"string"==typeof e.data.func){const o=e.data;g.handleOneWayPerformanceMetrics(o,n,i),n('Received a message from parent %s, action: "%s"',ae(o),o.func),l(o.func,o.args)}else n("Received an unknown message: %O",e)}const X=b.extend("handleIncomingMessageFromChild");function Y(){return y.topWindow!==y.parentWindow}function Z(e){return e===y.topWindow&&Y()?k.topMessageQueue:e===y.parentWindow?k.parentMessageQueue:e===y.childWindow?k.childMessageQueue:[]}function ee(e){return e===y.topWindow&&Y()?y.topOrigin:e===y.parentWindow?y.parentOrigin:e===y.childWindow?y.childOrigin:null}function ne(e){return e===y.topWindow&&Y()?"top":e===y.parentWindow?"parent":e===y.childWindow?"child":null}const ie=b.extend("flushMessageQueue");function oe(e){const n=ee(e),i=Z(e),o=ne(e);for(;e&&n&&i.length>0;){const t=i.shift();if(t){const i=p(t);ie("Flushing message %s from %s message queue via postMessage.",ae(i),o),e.postMessage(i,n)}}}function te(e,n){let i;i=y.currentWindow.setInterval((()=>{0===Z(e).length&&(clearInterval(i),n())}),100)}function se(e,n,i,o){const t=y.childWindow,s=function(e,n,i,o){return{id:e,uuid:n,args:i||[],isPartialResponse:o}}(e,n,i,o),r=w(s),a=ee(t);t&&a&&(X("Sending message %s to %s via postMessage, args = %o",ae(r),ne(t),r.args),t.postMessage(r,a))}function re(e,n){const i=y.childWindow,o=function(e,n){return{func:e,args:n||[]}}(e,n),t=ee(i);i&&t?i.postMessage(o,t):Z(i).push(o)}function ae(e){return"uuidAsString"in e?`${e.uuidAsString} (legacy id: ${e.id})`:"uuid"in e&&void 0!==e.uuid?`${e.uuid.toString()} (legacy id: ${e.id})`:`legacy id: ${e.id} (no uuid)`}export{y as Communication,C as callFunctionInHost,P as callFunctionInHostAndHandleResponse,I as initializeCommunication,x as requestPortFromParentWithVersion,S as sendAndHandleSdkError,E as sendAndHandleStatusAndReason,O as sendAndHandleStatusAndReasonWithDefaultError,R as sendAndUnwrap,re as sendMessageEventToChild,N as sendMessageToParent,j as sendMessageToParentAsync,U as sendNestedAuthRequestToTopWindow,T as uninitializeCommunication,te as waitForMessageQueue};
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.4_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{callFunctionInHost as o}from"../internal/communication.js";import{ensureInitialized as t}from"../internal/internalAPIs.js";import{getApiVersionTag as i}from"../internal/telemetry.js";import{AppId as r}from"../public/appId.js";import{FrameContexts as p,errorNotSupportedOnPlatform as n}from"../public/constants.js";import{runtime as l}from"../public/runtime.js";var s;!function(e){e.FullStore="fullstore",e.SpecificStore="specificstore",e.InContextStore="ics",e.AppDetail="appdetail"}(s||(s={}));const c="Invalid store dialog type, but type needed to specify store to open",d="No App Id present, but AppId needed to open AppDetail store",a="No Collection Id present, but CollectionId needed to open a store specific to a collection";function u(u){return e(this,void 0,void 0,(function*(){if(t(l,p.content,p.sidePanel,p.meetingStage),!f())throw n;if(void 0===u||!Object.values(s).includes(u.dialogType))throw new Error(c);if(u.dialogType===s.AppDetail&&!(u.appId instanceof r))throw new Error(d);if(u.dialogType===s.SpecificStore&&!u.collectionId)throw new Error(a);return o("store.open",[u.dialogType,u.appId,u.collectionId],i("v2","store.open"))}))}function f(){return t(l)&&!!l.supports.store}export{s as StoreDialogType,c as errorInvalidDialogType,d as errorMissingAppId,a as errorMissingCollectionId,f as isSupported,u as openStoreExperience};
1
+ import{__awaiter as t}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.4_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{callFunctionInHost as o}from"../internal/communication.js";import{ensureInitialized as e}from"../internal/internalAPIs.js";import{getApiVersionTag as n}from"../internal/telemetry.js";import{AppId as i}from"../public/appId.js";import{FrameContexts as r,errorNotSupportedOnPlatform as p}from"../public/constants.js";import{runtime as s}from"../public/runtime.js";const l="v2",u="Invalid store dialog size";function c(e){return t(this,void 0,void 0,(function*(){v();const{size:t}=null!=e?e:{};return o("store.openFullStore",[b(t)],n(l,"store.openFullStore"))}))}function d(e){return t(this,void 0,void 0,(function*(){v();const{size:t,appId:r}=e;if(!(r instanceof i))throw new Error("No App Id present, but AppId needed to open AppDetail store");return o("store.openAppDetail",[b(t),r],n(l,"store.openAppDetail"))}))}function f(e){return t(this,void 0,void 0,(function*(){v();const{size:t,appCapability:i,appMetaCapabilities:r,installationScope:p,filteredOutAppIds:s}=null!=e?e:{};return o("store.openInContextStore",[b(t),i,r,p,null==s?void 0:s.map((t=>t.toString()))],n(l,"store.openInContextStore"))}))}function a(e){return t(this,void 0,void 0,(function*(){v();const{size:t,collectionId:i}=e;if(void 0===i)throw new Error("No Collection Id present, but CollectionId needed to open a store specific to a collection");return o("store.openSpecificStore",[b(t),i],n(l,"store.openSpecificStore"))}))}function m(){return e(s)&&!!s.supports.store}function v(){if(e(s,r.content,r.sidePanel,r.meetingStage),!m())throw p}function b(t){if(void 0===t)return;const{width:o,height:e}=t;if(void 0!==o&&"number"==typeof o&&o<0)throw new Error(u);if(void 0!==e&&"number"==typeof e&&e<0)throw new Error(u);return JSON.stringify(t)}export{m as isSupported,d as openAppDetail,c as openFullStore,f as openInContextStore,a as openSpecificStore};
@@ -1 +1 @@
1
- const o="2.33.0";export{o as version};
1
+ const t="2.34.0-beta.0";export{t as version};
@@ -1607,12 +1607,11 @@ __webpack_require__.d(hostEntity_namespaceObject, {
1607
1607
  var store_namespaceObject = {};
1608
1608
  __webpack_require__.r(store_namespaceObject);
1609
1609
  __webpack_require__.d(store_namespaceObject, {
1610
- StoreDialogType: () => (StoreDialogType),
1611
- errorInvalidDialogType: () => (errorInvalidDialogType),
1612
- errorMissingAppId: () => (errorMissingAppId),
1613
- errorMissingCollectionId: () => (errorMissingCollectionId),
1614
1610
  isSupported: () => (store_isSupported),
1615
- openStoreExperience: () => (openStoreExperience)
1611
+ openAppDetail: () => (openAppDetail),
1612
+ openFullStore: () => (openFullStore),
1613
+ openInContextStore: () => (openInContextStore),
1614
+ openSpecificStore: () => (openSpecificStore)
1616
1615
  });
1617
1616
 
1618
1617
  // NAMESPACE OBJECT: ./src/public/appInstallDialog.ts
@@ -4461,7 +4460,7 @@ function isSerializable(arg) {
4461
4460
  * @hidden
4462
4461
  * Package version.
4463
4462
  */
4464
- const version = "2.33.0";
4463
+ const version = "2.34.0-beta.0";
4465
4464
 
4466
4465
  ;// ./src/internal/internalAPIs.ts
4467
4466
 
@@ -8667,14 +8666,14 @@ function handleIncomingMessageFromChild(evt) {
8667
8666
  const message = deserializeMessageRequest(evt.data);
8668
8667
  const [called, result] = callHandler(message.func, message.args);
8669
8668
  if (called && typeof result !== 'undefined') {
8670
- handleIncomingMessageFromChildLogger('Returning message %s from child back to child, action: %s.', getMessageIdsAsLogString(message), message.func);
8669
+ handleIncomingMessageFromChildLogger('Handler called in response to message %s from child. Returning response from handler to child, action: %s.', getMessageIdsAsLogString(message), message.func);
8671
8670
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8672
8671
  // @ts-ignore
8673
8672
  sendMessageResponseToChild(message.id, message.uuid, Array.isArray(result) ? result : [result]);
8674
8673
  }
8675
8674
  else {
8676
8675
  // No handler, proxy to parent
8677
- handleIncomingMessageFromChildLogger('Relaying message %s from child to parent, action: %s. Relayed message will have a new id.', getMessageIdsAsLogString(message), message.func);
8676
+ handleIncomingMessageFromChildLogger('No handler for message %s from child found; relaying message on to parent, action: %s. Relayed message will have a new id.', getMessageIdsAsLogString(message), message.func);
8678
8677
  sendMessageToParent(getApiVersionTag("v2" /* ApiVersionNumber.V_2 */, "tasks.startTask" /* ApiName.Tasks_StartTask */), message.func, message.args, (...args) => {
8679
8678
  if (Communication.childWindow) {
8680
8679
  const isPartialResponse = args.pop();
@@ -8800,6 +8799,7 @@ function sendMessageResponseToChild(id, uuid, args, isPartialResponse) {
8800
8799
  const serializedResponse = serializeMessageResponse(response);
8801
8800
  const targetOrigin = getTargetOrigin(targetWindow);
8802
8801
  if (targetWindow && targetOrigin) {
8802
+ handleIncomingMessageFromChildLogger('Sending message %s to %s via postMessage, args = %o', getMessageIdsAsLogString(serializedResponse), getTargetName(targetWindow), serializedResponse.args);
8803
8803
  targetWindow.postMessage(serializedResponse, targetOrigin);
8804
8804
  }
8805
8805
  }
@@ -13023,95 +13023,76 @@ var store_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _ar
13023
13023
 
13024
13024
 
13025
13025
 
13026
- /**
13027
- * @beta
13028
- * @hidden
13029
- * @module
13030
- * Namespace to open app store
13031
- * @internal
13032
- * Limited to Microsoft-internal use
13033
- */
13034
13026
  const StoreVersionTagNum = "v2" /* ApiVersionNumber.V_2 */;
13027
+ const errorInvalidDialogSize = 'Invalid store dialog size';
13028
+ const errorMissingAppId = 'No App Id present, but AppId needed to open AppDetail store';
13029
+ const errorMissingCollectionId = 'No Collection Id present, but CollectionId needed to open a store specific to a collection';
13035
13030
  /**
13036
13031
  * @beta
13037
13032
  * @hidden
13038
- * Enum of store dialog type
13039
- * @internal
13040
- * Limited to Microsoft-internal use
13041
- */
13042
- var StoreDialogType;
13043
- (function (StoreDialogType) {
13044
- /**
13045
- * open a store without navigation
13046
- */
13047
- StoreDialogType["FullStore"] = "fullstore";
13048
- /**
13049
- * open a store with navigation to a specific collection
13050
- */
13051
- StoreDialogType["SpecificStore"] = "specificstore";
13052
- /**
13053
- * open in-context-store
13054
- */
13055
- StoreDialogType["InContextStore"] = "ics";
13056
- /**
13057
- * open detail dialog (DD)
13058
- */
13059
- StoreDialogType["AppDetail"] = "appdetail";
13060
- })(StoreDialogType || (StoreDialogType = {}));
13061
- /**
13062
- * @beta
13063
- * @hidden
13064
- * error message when getting invalid store dialog type
13033
+ * Api to open a full store without navigation
13065
13034
  * @internal
13066
13035
  * Limited to Microsoft-internal use
13067
13036
  */
13068
- const errorInvalidDialogType = 'Invalid store dialog type, but type needed to specify store to open';
13037
+ function openFullStore(params) {
13038
+ return store_awaiter(this, void 0, void 0, function* () {
13039
+ ensureStoreReady();
13040
+ const { size } = params !== null && params !== void 0 ? params : {};
13041
+ return callFunctionInHost("store.openFullStore" /* ApiName.Store_OpenFullStore */, [serializeValidSize(size)], getApiVersionTag(StoreVersionTagNum, "store.openFullStore" /* ApiName.Store_OpenFullStore */));
13042
+ });
13043
+ }
13069
13044
  /**
13070
13045
  * @beta
13071
13046
  * @hidden
13072
- * error message when getting wrong app id or missing app id
13047
+ * Api to open an app detail dialog
13073
13048
  * @internal
13074
13049
  * Limited to Microsoft-internal use
13075
13050
  */
13076
- const errorMissingAppId = 'No App Id present, but AppId needed to open AppDetail store';
13051
+ function openAppDetail(params) {
13052
+ return store_awaiter(this, void 0, void 0, function* () {
13053
+ ensureStoreReady();
13054
+ const { size, appId } = params;
13055
+ if (!(appId instanceof AppId)) {
13056
+ throw new Error(errorMissingAppId);
13057
+ }
13058
+ return callFunctionInHost("store.openAppDetail" /* ApiName.Store_OpenAppDetail */, [serializeValidSize(size), appId], getApiVersionTag(StoreVersionTagNum, "store.openAppDetail" /* ApiName.Store_OpenAppDetail */));
13059
+ });
13060
+ }
13077
13061
  /**
13078
13062
  * @beta
13079
13063
  * @hidden
13080
- * error message when getting wrong collection id or missing collection id
13064
+ * Api to open an in-context-store dialog
13081
13065
  * @internal
13082
13066
  * Limited to Microsoft-internal use
13083
13067
  */
13084
- const errorMissingCollectionId = 'No Collection Id present, but CollectionId needed to open a store specific to a collection';
13068
+ function openInContextStore(params) {
13069
+ return store_awaiter(this, void 0, void 0, function* () {
13070
+ ensureStoreReady();
13071
+ const { size, appCapability, appMetaCapabilities, installationScope, filteredOutAppIds } = params !== null && params !== void 0 ? params : {};
13072
+ return callFunctionInHost("store.openInContextStore" /* ApiName.Store_OpenInContextStore */, [
13073
+ serializeValidSize(size),
13074
+ appCapability,
13075
+ appMetaCapabilities,
13076
+ installationScope,
13077
+ filteredOutAppIds === null || filteredOutAppIds === void 0 ? void 0 : filteredOutAppIds.map((id) => id.toString()),
13078
+ ], getApiVersionTag(StoreVersionTagNum, "store.openInContextStore" /* ApiName.Store_OpenInContextStore */));
13079
+ });
13080
+ }
13085
13081
  /**
13086
13082
  * @beta
13087
13083
  * @hidden
13088
- * Api to open a store
13089
- *
13090
- * @param openStoreParams - params to call openStoreExperience
13091
- *
13084
+ * Api to open an store with navigation to a specific collection
13092
13085
  * @internal
13093
13086
  * Limited to Microsoft-internal use
13094
13087
  */
13095
- function openStoreExperience(openStoreParams) {
13088
+ function openSpecificStore(params) {
13096
13089
  return store_awaiter(this, void 0, void 0, function* () {
13097
- ensureInitialized(runtime, FrameContexts.content, FrameContexts.sidePanel, FrameContexts.meetingStage);
13098
- if (!store_isSupported()) {
13099
- throw errorNotSupportedOnPlatform;
13100
- }
13101
- if (openStoreParams === undefined || !Object.values(StoreDialogType).includes(openStoreParams.dialogType)) {
13102
- throw new Error(errorInvalidDialogType);
13103
- }
13104
- if (openStoreParams.dialogType === StoreDialogType.AppDetail && !(openStoreParams.appId instanceof AppId)) {
13105
- throw new Error(errorMissingAppId);
13106
- }
13107
- if (openStoreParams.dialogType === StoreDialogType.SpecificStore && !openStoreParams.collectionId) {
13090
+ ensureStoreReady();
13091
+ const { size, collectionId } = params;
13092
+ if (collectionId === undefined) {
13108
13093
  throw new Error(errorMissingCollectionId);
13109
13094
  }
13110
- return callFunctionInHost("store.open" /* ApiName.Store_Open */, [
13111
- openStoreParams.dialogType,
13112
- openStoreParams.appId,
13113
- openStoreParams.collectionId,
13114
- ], getApiVersionTag(StoreVersionTagNum, "store.open" /* ApiName.Store_Open */));
13095
+ return callFunctionInHost("store.openSpecificStore" /* ApiName.Store_OpenSpecificStore */, [serializeValidSize(size), collectionId], getApiVersionTag(StoreVersionTagNum, "store.openSpecificStore" /* ApiName.Store_OpenSpecificStore */));
13115
13096
  });
13116
13097
  }
13117
13098
  /**
@@ -13123,6 +13104,25 @@ function openStoreExperience(openStoreParams) {
13123
13104
  function store_isSupported() {
13124
13105
  return ensureInitialized(runtime) && !!runtime.supports.store;
13125
13106
  }
13107
+ function ensureStoreReady() {
13108
+ ensureInitialized(runtime, FrameContexts.content, FrameContexts.sidePanel, FrameContexts.meetingStage);
13109
+ if (!store_isSupported()) {
13110
+ throw errorNotSupportedOnPlatform;
13111
+ }
13112
+ }
13113
+ function serializeValidSize(size) {
13114
+ if (size === undefined) {
13115
+ return undefined;
13116
+ }
13117
+ const { width, height } = size;
13118
+ if (width !== undefined && typeof width === 'number' && width < 0) {
13119
+ throw new Error(errorInvalidDialogSize);
13120
+ }
13121
+ if (height !== undefined && typeof height === 'number' && height < 0) {
13122
+ throw new Error(errorInvalidDialogSize);
13123
+ }
13124
+ return JSON.stringify(size);
13125
+ }
13126
13126
 
13127
13127
  ;// ./src/private/index.ts
13128
13128