@apps-in-toss/web-framework 0.0.0-dev.1742899149233 → 0.0.0-dev.1743134070910

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.
@@ -1,14 +1,14 @@
1
1
  [
2
2
  {
3
3
  "platform": "ios",
4
- "totalModuleCount": 360,
5
- "duration": 391.0235,
6
- "size": 131203
4
+ "totalModuleCount": 1602,
5
+ "duration": 1117.031417,
6
+ "size": 409089
7
7
  },
8
8
  {
9
9
  "platform": "android",
10
- "totalModuleCount": 360,
11
- "duration": 390.18612499999995,
12
- "size": 130939
10
+ "totalModuleCount": 1602,
11
+ "duration": 1114.343834,
12
+ "size": 408290
13
13
  }
14
14
  ]
@@ -4,6 +4,7 @@ export * from './share';
4
4
  export * from './setSecureScreen';
5
5
  export * from './setScreenAwakeMode';
6
6
  export * from './getNetworkStatus';
7
+ export * from './setIosSwipeGestureEnabled';
7
8
  export * from './getLocale';
8
9
  export * from './getSchemeUri';
9
10
  export * from './getDeviceId';
@@ -1 +1 @@
1
- export const createEvents=()=>({emit(event,args){for(let callbacks=this.events[event]||[],i=0,length=callbacks.length;i<length;i++){callbacks[i](args)}},events:{},on(event,cb){var _this_events,_event;((_this_events=this.events)[_event=event]||(_this_events[_event]=[])).push(cb);return()=>{var _this_events_event;this.events[event]=(_this_events_event=this.events[event])===null||_this_events_event===void 0?void 0:_this_events_event.filter(i=>cb!==i)}}});const createEventId=()=>Math.random().toString(36).substring(2,15);const deserializeError=value=>{if(value&&value.__isError){const err=new Error(value.message);err.name=value.name;err.stack=value.stack;return err}return value};window.__BEDROCK_NATIVE_EMITTER=createEvents();export function closeView(...args){if(!window.ReactNativeWebView){throw new Error("This closeView is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`closeView/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`closeView/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"closeView",eventId,args}))})}export function generateHapticFeedback(...args){if(!window.ReactNativeWebView){throw new Error("This generateHapticFeedback is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`generateHapticFeedback/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`generateHapticFeedback/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"generateHapticFeedback",eventId,args}))})}export function share(...args){if(!window.ReactNativeWebView){throw new Error("This share is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`share/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`share/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"share",eventId,args}))})}export function setSecureScreen(...args){if(!window.ReactNativeWebView){throw new Error("This setSecureScreen is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setSecureScreen/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setSecureScreen/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setSecureScreen",eventId,args}))})}export function setScreenAwakeMode(...args){if(!window.ReactNativeWebView){throw new Error("This setScreenAwakeMode is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setScreenAwakeMode/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setScreenAwakeMode/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setScreenAwakeMode",eventId,args}))})}export function getNetworkStatus(...args){if(!window.ReactNativeWebView){throw new Error("This getNetworkStatus is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getNetworkStatus/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getNetworkStatus/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getNetworkStatus",eventId,args}))})}export function getLocale(){if(!window.ReactNativeWebView){throw new Error("This getLocale is not available in browser environment")}if("getLocale"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getLocale"]}throw new Error("getLocale is not a constant handler")}export function getSchemeUri(){if(!window.ReactNativeWebView){throw new Error("This getSchemeUri is not available in browser environment")}if("getSchemeUri"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getSchemeUri"]}throw new Error("getSchemeUri is not a constant handler")}export function getDeviceId(){if(!window.ReactNativeWebView){throw new Error("This getDeviceId is not available in browser environment")}if("getDeviceId"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getDeviceId"]}throw new Error("getDeviceId is not a constant handler")}export function getPlatformOS(){if(!window.ReactNativeWebView){throw new Error("This getPlatformOS is not available in browser environment")}if("getPlatformOS"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getPlatformOS"]}throw new Error("getPlatformOS is not a constant handler")}export function setClipboardText(...args){if(!window.ReactNativeWebView){throw new Error("This setClipboardText is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setClipboardText/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setClipboardText/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setClipboardText",eventId,args}))})}export function getClipboardText(...args){if(!window.ReactNativeWebView){throw new Error("This getClipboardText is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getClipboardText/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getClipboardText/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getClipboardText",eventId,args}))})}export function fetchContacts(...args){if(!window.ReactNativeWebView){throw new Error("This fetchContacts is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchContacts/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchContacts/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"fetchContacts",eventId,args}))})}export function fetchAlbumPhotos(...args){if(!window.ReactNativeWebView){throw new Error("This fetchAlbumPhotos is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchAlbumPhotos/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchAlbumPhotos/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"fetchAlbumPhotos",eventId,args}))})}export var Accuracy=function(Accuracy){Accuracy[Accuracy["Lowest"]=1]="Lowest";Accuracy[Accuracy["Low"]=2]="Low";Accuracy[Accuracy["Balanced"]=3]="Balanced";Accuracy[Accuracy["High"]=4]="High";Accuracy[Accuracy["Highest"]=5]="Highest";Accuracy[Accuracy["BestForNavigation"]=6]="BestForNavigation";return Accuracy}({});export function getCurrentLocation(...args){if(!window.ReactNativeWebView){throw new Error("This getCurrentLocation is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getCurrentLocation/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getCurrentLocation/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getCurrentLocation",eventId,args}))})}export function openCamera(...args){if(!window.ReactNativeWebView){throw new Error("This openCamera is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`openCamera/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`openCamera/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"openCamera",eventId,args}))})}export function appLogin(...args){if(!window.ReactNativeWebView){throw new Error("This appLogin is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`appLogin/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`appLogin/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"appLogin",eventId,args}))})}export function checkoutPayment(...args){if(!window.ReactNativeWebView){throw new Error("This checkoutPayment is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`checkoutPayment/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`checkoutPayment/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"checkoutPayment",eventId,args}))})}export function executePayment(...args){if(!window.ReactNativeWebView){throw new Error("This executePayment is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`executePayment/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`executePayment/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"executePayment",eventId,args}))})}export function getOperationalEnvironment(){if(!window.ReactNativeWebView){throw new Error("This getOperationalEnvironment is not available in browser environment")}if("getOperationalEnvironment"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getOperationalEnvironment"]}throw new Error("getOperationalEnvironment is not a constant handler")}export function startUpdateLocation({onEvent,onError,options}){if(!window.ReactNativeWebView){onError(new Error("This startUpdateLocation is not available in browser environment"));return()=>{}}const eventId=createEventId();const removes=[window.__BEDROCK_NATIVE_EMITTER.on(`startUpdateLocation/onEvent/${eventId}`,response=>{onEvent(response)}),window.__BEDROCK_NATIVE_EMITTER.on(`startUpdateLocation/onError/${eventId}`,error=>{onError(deserializeError(error))})];window.ReactNativeWebView.postMessage(JSON.stringify({type:"addEventListener",functionName:"startUpdateLocation",eventId,args:options}));return()=>{window.ReactNativeWebView.postMessage(JSON.stringify({type:"removeEventListener",functionName:"startUpdateLocation",eventId}));for(const remove of removes){remove()}}}
1
+ export const createEvents=()=>({emit(event,args){for(let callbacks=this.events[event]||[],i=0,length=callbacks.length;i<length;i++){callbacks[i](args)}},events:{},on(event,cb){var _this_events,_event;((_this_events=this.events)[_event=event]||(_this_events[_event]=[])).push(cb);return()=>{var _this_events_event;this.events[event]=(_this_events_event=this.events[event])===null||_this_events_event===void 0?void 0:_this_events_event.filter(i=>cb!==i)}}});const createEventId=()=>Math.random().toString(36).substring(2,15);const deserializeError=value=>{if(value&&value.__isError){const err=new Error(value.message);err.name=value.name;err.stack=value.stack;return err}return value};window.__BEDROCK_NATIVE_EMITTER=createEvents();export function closeView(...args){if(!window.ReactNativeWebView){throw new Error("This closeView is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`closeView/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`closeView/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"closeView",eventId,args}))})}export function generateHapticFeedback(...args){if(!window.ReactNativeWebView){throw new Error("This generateHapticFeedback is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`generateHapticFeedback/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`generateHapticFeedback/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"generateHapticFeedback",eventId,args}))})}export function share(...args){if(!window.ReactNativeWebView){throw new Error("This share is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`share/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`share/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"share",eventId,args}))})}export function setSecureScreen(...args){if(!window.ReactNativeWebView){throw new Error("This setSecureScreen is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setSecureScreen/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setSecureScreen/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setSecureScreen",eventId,args}))})}export function setScreenAwakeMode(...args){if(!window.ReactNativeWebView){throw new Error("This setScreenAwakeMode is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setScreenAwakeMode/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setScreenAwakeMode/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setScreenAwakeMode",eventId,args}))})}export function getNetworkStatus(...args){if(!window.ReactNativeWebView){throw new Error("This getNetworkStatus is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getNetworkStatus/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getNetworkStatus/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getNetworkStatus",eventId,args}))})}export function setIosSwipeGestureEnabled(...args){if(!window.ReactNativeWebView){throw new Error("This setIosSwipeGestureEnabled is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setIosSwipeGestureEnabled/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setIosSwipeGestureEnabled/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setIosSwipeGestureEnabled",eventId,args}))})}export function getLocale(){if(!window.ReactNativeWebView){throw new Error("This getLocale is not available in browser environment")}if("getLocale"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getLocale"]}throw new Error("getLocale is not a constant handler")}export function getSchemeUri(){if(!window.ReactNativeWebView){throw new Error("This getSchemeUri is not available in browser environment")}if("getSchemeUri"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getSchemeUri"]}throw new Error("getSchemeUri is not a constant handler")}export function getDeviceId(){if(!window.ReactNativeWebView){throw new Error("This getDeviceId is not available in browser environment")}if("getDeviceId"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getDeviceId"]}throw new Error("getDeviceId is not a constant handler")}export function getPlatformOS(){if(!window.ReactNativeWebView){throw new Error("This getPlatformOS is not available in browser environment")}if("getPlatformOS"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getPlatformOS"]}throw new Error("getPlatformOS is not a constant handler")}export function setClipboardText(...args){if(!window.ReactNativeWebView){throw new Error("This setClipboardText is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setClipboardText/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`setClipboardText/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"setClipboardText",eventId,args}))})}export function getClipboardText(...args){if(!window.ReactNativeWebView){throw new Error("This getClipboardText is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getClipboardText/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getClipboardText/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getClipboardText",eventId,args}))})}export function fetchContacts(...args){if(!window.ReactNativeWebView){throw new Error("This fetchContacts is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchContacts/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchContacts/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"fetchContacts",eventId,args}))})}export function fetchAlbumPhotos(...args){if(!window.ReactNativeWebView){throw new Error("This fetchAlbumPhotos is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchAlbumPhotos/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`fetchAlbumPhotos/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"fetchAlbumPhotos",eventId,args}))})}export var Accuracy=function(Accuracy){Accuracy[Accuracy["Lowest"]=1]="Lowest";Accuracy[Accuracy["Low"]=2]="Low";Accuracy[Accuracy["Balanced"]=3]="Balanced";Accuracy[Accuracy["High"]=4]="High";Accuracy[Accuracy["Highest"]=5]="Highest";Accuracy[Accuracy["BestForNavigation"]=6]="BestForNavigation";return Accuracy}({});export function getCurrentLocation(...args){if(!window.ReactNativeWebView){throw new Error("This getCurrentLocation is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getCurrentLocation/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`getCurrentLocation/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"getCurrentLocation",eventId,args}))})}export function openCamera(...args){if(!window.ReactNativeWebView){throw new Error("This openCamera is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`openCamera/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`openCamera/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"openCamera",eventId,args}))})}export function appLogin(...args){if(!window.ReactNativeWebView){throw new Error("This appLogin is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`appLogin/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`appLogin/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"appLogin",eventId,args}))})}export function checkoutPayment(...args){if(!window.ReactNativeWebView){throw new Error("This checkoutPayment is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`checkoutPayment/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`checkoutPayment/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"checkoutPayment",eventId,args}))})}export function executePayment(...args){if(!window.ReactNativeWebView){throw new Error("This executePayment is not available in browser environment")}const eventId=createEventId();const emitters=[];const unsubscribe=()=>{for(const emitter of emitters){emitter()}};return new Promise((resolve,reject)=>{emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`executePayment/resolve/${eventId}`,args=>{unsubscribe();resolve(args)}));emitters.push(window.__BEDROCK_NATIVE_EMITTER.on(`executePayment/reject/${eventId}`,error=>{unsubscribe();reject(deserializeError(error))}));window.ReactNativeWebView.postMessage(JSON.stringify({type:"method",functionName:"executePayment",eventId,args}))})}export function getOperationalEnvironment(){if(!window.ReactNativeWebView){throw new Error("This getOperationalEnvironment is not available in browser environment")}if("getOperationalEnvironment"in window.__CONSTANT_HANDLER_MAP){return window.__CONSTANT_HANDLER_MAP["getOperationalEnvironment"]}throw new Error("getOperationalEnvironment is not a constant handler")}export function startUpdateLocation({onEvent,onError,options}){if(!window.ReactNativeWebView){onError(new Error("This startUpdateLocation is not available in browser environment"));return()=>{}}const eventId=createEventId();const removes=[window.__BEDROCK_NATIVE_EMITTER.on(`startUpdateLocation/onEvent/${eventId}`,response=>{onEvent(response)}),window.__BEDROCK_NATIVE_EMITTER.on(`startUpdateLocation/onError/${eventId}`,error=>{onError(deserializeError(error))})];window.ReactNativeWebView.postMessage(JSON.stringify({type:"addEventListener",functionName:"startUpdateLocation",eventId,args:options}));return()=>{window.ReactNativeWebView.postMessage(JSON.stringify({type:"removeEventListener",functionName:"startUpdateLocation",eventId}));for(const remove of removes){remove()}}}
package/dist-web/index.js CHANGED
@@ -10,14 +10,14 @@ var NativeWindow = class {
10
10
  * @param message 전송할 메시지(JSON 문자열)
11
11
  * @example
12
12
  * const nativeWindow = new NativeWindow();
13
- * nativeWindow.postMessage(JSON.stringify({ type: 'method', functionName: 'getDeviceId' }));
13
+ * nativeWindow.postMessage({ type: 'method', functionName: 'getDeviceId', eventId: '123', args: [] });
14
14
  */
15
15
  postMessage(message) {
16
16
  const webView = this._window.ReactNativeWebView;
17
17
  if (!webView) {
18
18
  throw new Error("ReactNativeWebView is not available in browser environment");
19
19
  }
20
- webView.postMessage(message);
20
+ webView.postMessage(JSON.stringify(message));
21
21
  }
22
22
  /**
23
23
  * __BEDROCK_NATIVE_EMITTER를 이용해 이벤트 리스너를 등록합니다.
@@ -92,14 +92,12 @@ function createAsyncBridge(method) {
92
92
  reject(deserializeError(error));
93
93
  })
94
94
  );
95
- nativeWindow.postMessage(
96
- JSON.stringify({
97
- type: "method",
98
- functionName: method,
99
- eventId,
100
- args: [args]
101
- })
102
- );
95
+ nativeWindow.postMessage({
96
+ type: "method",
97
+ functionName: method,
98
+ eventId,
99
+ args: [args]
100
+ });
103
101
  });
104
102
  };
105
103
  }
@@ -123,22 +121,18 @@ function createEventBridge(method) {
123
121
  args.onError(deserializeError(error));
124
122
  })
125
123
  ];
126
- nativeWindow.postMessage(
127
- JSON.stringify({
128
- type: "addEventListener",
129
- functionName: method,
130
- eventId,
131
- args: args.options
132
- })
133
- );
124
+ nativeWindow.postMessage({
125
+ type: "addEventListener",
126
+ functionName: method,
127
+ eventId,
128
+ args: args.options
129
+ });
134
130
  return () => {
135
- nativeWindow.postMessage(
136
- JSON.stringify({
137
- type: "removeEventListener",
138
- functionName: method,
139
- eventId
140
- })
141
- );
131
+ nativeWindow.postMessage({
132
+ type: "removeEventListener",
133
+ functionName: method,
134
+ eventId
135
+ });
142
136
  removes.forEach((remove) => remove());
143
137
  };
144
138
  };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @public
3
+ * @category 화면 제어
4
+ * @name setIosSwipeGestureEnabled
5
+ * @description
6
+ * `setIosSwipeGestureEnabled` 함수는 iOS에서 화면을 스와이프하여 뒤로가기 기능을 활성화하거나 비활성화할 수 있어요.
7
+ *
8
+ * @param {object} options 스와이프하여 뒤로가기 기능을 활성화하거나 비활성화하는 옵션이에요.
9
+ * @param {boolean} options.isEnabled 화면을 스와이프하여 뒤로가기 기능을 활성화하거나 비활성화할 수 있어요. `true`를 설정하면 스와이프로 뒤로갈 수 있고, `false`를 설정하면 스와이프 뒤로가기 기능이 비활성화돼요.
10
+ *
11
+ * @returns {void}
12
+ *
13
+ * @example
14
+ *
15
+ * ### iOS에서 화면 스와이프로 뒤로가기 기능을 활성화하거나 비활성화하기
16
+ *
17
+ * **스와이프 끄기** 버튼을 눌러 화면 스와이프로 뒤로가기 기능을 비활성화하거나, **스와이프 켜기** 버튼을 눌러 화면 스와이프로 뒤로가기 기능을 활성화할 수 있어요.
18
+ *
19
+ *
20
+ * ```tsx
21
+ * import { setIosSwipeGestureEnabled } from '@apps-in-toss/web-framework';
22
+ *
23
+ *
24
+ * function Page() {
25
+ * return (
26
+ * <>
27
+ * <input type="button" value="스와이프 끄기" onClick={() => setIosSwipeGestureEnabled({ isEnabled: false })} />
28
+ * <input type="button" value="스와이프 켜기" onClick={() => setIosSwipeGestureEnabled({ isEnabled: true })} />
29
+ * </>
30
+ * );
31
+ * }
32
+ * ```
33
+ *
34
+ */
35
+ export declare function setIosSwipeGestureEnabled(options: {
36
+ isEnabled: boolean;
37
+ }): Promise<void>;
38
+
39
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apps-in-toss/web-framework",
3
3
  "type": "module",
4
- "version": "0.0.0-dev.1742899149233",
4
+ "version": "0.0.0-dev.1743134070910",
5
5
  "description": "Web Framework for Apps In Toss",
6
6
  "scripts": {
7
7
  "prepack": "yarn build",
@@ -50,7 +50,7 @@
50
50
  "config.d.ts"
51
51
  ],
52
52
  "devDependencies": {
53
- "@apps-in-toss/framework": "0.0.0-dev.1742899149233",
53
+ "@apps-in-toss/framework": "0.0.0-dev.1743134070910",
54
54
  "@babel/plugin-proposal-class-properties": "^7.16.7",
55
55
  "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
56
56
  "@babel/plugin-proposal-numeric-separator": "^7.16.7",
@@ -66,11 +66,11 @@
66
66
  "@babel/types": "^7.26.9",
67
67
  "@clack/prompts": "^0.10.0",
68
68
  "@hono/node-server": "^1.13.8",
69
- "@react-native-bedrock/bridgepack": "0.0.0-dev.1742898766908",
70
- "@react-native-bedrock/cli": "0.0.0-dev.1742898766908",
71
- "@react-native-bedrock/mpack-next": "0.0.0-dev.1742898766908",
72
- "@react-native-bedrock/native": "0.0.0-dev.1742898766908",
73
- "@toss-design-system/react-native": "^0",
69
+ "@react-native-bedrock/bridgepack": "0.0.14",
70
+ "@react-native-bedrock/cli": "0.0.14",
71
+ "@react-native-bedrock/mpack-next": "0.0.14",
72
+ "@react-native-bedrock/native": "0.0.14",
73
+ "@toss-design-system/react-native": "^0.4.1",
74
74
  "@types/babel__core": "^7.20.5",
75
75
  "@types/babel__traverse": "^7",
76
76
  "@types/debug": "^4",
@@ -79,6 +79,7 @@
79
79
  "clipanion": "^4.0.0-rc.4",
80
80
  "cosmiconfig": "^9.0.0",
81
81
  "cosmiconfig-typescript-loader": "^5.1.0",
82
+ "dts-bundle-generator": "^9.5.1",
82
83
  "es-toolkit": "^1.32.0",
83
84
  "eslint": "^9.7.0",
84
85
  "execa": "^9.5.2",
@@ -87,7 +88,7 @@
87
88
  "picocolors": "^1.1.1",
88
89
  "react": "18.2.0",
89
90
  "react-native": "0.72.6",
90
- "react-native-bedrock": "0.0.0-dev.1742898766908",
91
+ "react-native-bedrock": "0.0.14",
91
92
  "tsup": "^8.3.5",
92
93
  "typescript": "4.9.5",
93
94
  "uuidv7": "^1.0.2",
@@ -95,11 +96,12 @@
95
96
  "zod": "^3.24.1"
96
97
  },
97
98
  "dependencies": {
98
- "@apps-in-toss/cli": "0.0.0-dev.1742899149233",
99
+ "@apps-in-toss/cli": "0.0.0-dev.1743134070910",
100
+ "@apps-in-toss/plugins": "0.0.0-dev.1743134070910",
99
101
  "@babel/core": "7.23.9"
100
102
  },
101
103
  "publishConfig": {
102
104
  "access": "public"
103
105
  },
104
- "gitHead": "2122be053a29fde2590cbdd1096d74691878770a"
106
+ "gitHead": "5acf03f70ea94cd53a91b74d34b1a196e45604f3"
105
107
  }
@@ -1,6 +0,0 @@
1
- export * from './bridge.js'
2
- import {
3
- require_typescript
4
- } from "./chunk-EXHALAXL.js";
5
- import "./chunk-MTTRU5WU.js";
6
- export default require_typescript();
package/dist/index.d.ts DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * 런타임에서 브릿지 함수를 생성하는 createBridge 함수입니다.
3
- *
4
- * @param options.type - 'async'이면 비동기 메서드 호출,
5
- * 'event'이면 이벤트 리스너 생성,
6
- * 'constant'이면 상수 값을 반환하는 동기 함수 생성
7
- * @param options.method - 브릿지로 호출할 메서드 이름
8
- */
9
- declare function createBridge<T>({ type, method }: {
10
- type: 'async' | 'event' | 'constant';
11
- method: string;
12
- }): any;
13
-
14
- export { createBridge };
package/dist/index.js DELETED
@@ -1,124 +0,0 @@
1
- export * from './bridge.js'
2
-
3
- // src-web/createBridge.ts
4
- var NativeWindow = class {
5
- /**
6
- * ReactNativeWebView를 이용해 메시지를 전송합니다.
7
- * @param message 전송할 메시지(JSON 문자열)
8
- */
9
- postMessage(message) {
10
- const webView = window.ReactNativeWebView;
11
- if (!webView) {
12
- throw new Error("ReactNativeWebView is not available in browser environment");
13
- }
14
- webView.postMessage(message);
15
- }
16
- /**
17
- * __BEDROCK_NATIVE_EMITTER를 이용해 이벤트 리스너를 등록합니다.
18
- * @param event 이벤트 이름
19
- * @param callback 데이터가 도착했을 때 호출되는 콜백
20
- * @returns 리스너 해제 함수
21
- */
22
- on(event, callback) {
23
- const emitter = window.__BEDROCK_NATIVE_EMITTER;
24
- if (!emitter) {
25
- throw new Error("__BEDROCK_NATIVE_EMITTER is not available");
26
- }
27
- return emitter.on(event, callback);
28
- }
29
- /**
30
- * __CONSTANT_HANDLER_MAP에 등록된 상수 값을 반환합니다.
31
- * @param method 상수 핸들러 이름
32
- * @returns 상수 값
33
- */
34
- getConstant(method) {
35
- const constantHandlerMap = window.__CONSTANT_HANDLER_MAP;
36
- if (constantHandlerMap && method in constantHandlerMap) {
37
- return constantHandlerMap[method];
38
- }
39
- throw new Error(`${method} is not a constant handler`);
40
- }
41
- };
42
- var nativeWindow = new NativeWindow();
43
- var createEventId = () => Math.random().toString(36).substring(2, 15);
44
- var deserializeError = (value) => {
45
- if (value && value.__isError) {
46
- const err = new Error(value.message);
47
- err.name = value.name;
48
- err.stack = value.stack;
49
- return err;
50
- }
51
- return value;
52
- };
53
- function createBridge({ type, method }) {
54
- if (type === "async") {
55
- return (args) => {
56
- const eventId = createEventId();
57
- const emitters = [];
58
- const unsubscribe = () => {
59
- emitters.forEach((remove) => remove());
60
- };
61
- return new Promise((resolve, reject) => {
62
- emitters.push(
63
- nativeWindow.on(`${method}/resolve/${eventId}`, (data) => {
64
- unsubscribe();
65
- resolve(data);
66
- })
67
- );
68
- emitters.push(
69
- nativeWindow.on(`${method}/reject/${eventId}`, (error) => {
70
- unsubscribe();
71
- reject(deserializeError(error));
72
- })
73
- );
74
- nativeWindow.postMessage(
75
- JSON.stringify({
76
- type: "method",
77
- functionName: method,
78
- eventId,
79
- args
80
- })
81
- );
82
- });
83
- };
84
- } else if (type === "event") {
85
- return (args) => {
86
- const eventId = createEventId();
87
- const removes = [
88
- nativeWindow.on(`${method}/onEvent/${eventId}`, (data) => {
89
- args.onEvent(data);
90
- }),
91
- nativeWindow.on(`${method}/onError/${eventId}`, (error) => {
92
- args.onError(deserializeError(error));
93
- })
94
- ];
95
- nativeWindow.postMessage(
96
- JSON.stringify({
97
- type: "addEventListener",
98
- functionName: method,
99
- eventId,
100
- args: args.options
101
- })
102
- );
103
- return () => {
104
- nativeWindow.postMessage(
105
- JSON.stringify({
106
- type: "removeEventListener",
107
- functionName: method,
108
- eventId
109
- })
110
- );
111
- removes.forEach((remove) => remove());
112
- };
113
- };
114
- } else if (type === "constant") {
115
- return function() {
116
- return nativeWindow.getConstant(method);
117
- };
118
- } else {
119
- throw new Error("Unsupported bridge type");
120
- }
121
- }
122
- export {
123
- createBridge
124
- };