@kbapp/js-bridge 1.0.16-alpha.0 → 1.0.17-alpha.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.
package/README.MD CHANGED
@@ -795,12 +795,13 @@ runAction({
795
795
 
796
796
  #### 请求参数
797
797
 
798
- | 参数 | 类型 | 必填 | 说明 |
799
- | ---------- | ----------------------------- | ---- | ------------ |
800
- | `imageUrl` | `string` | | 图片网络地址 |
801
- | `success` | `() => void` | 否 | 成功回调 |
802
- | `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
803
- | `complete` | `() => void` | 否 | 完成回调 |
798
+ | 参数 | 类型 | 必填 | 说明 |
799
+ | -------------- | ----------------------------- | ---- | --------------------------------------- |
800
+ | `imageUrl` | `string` | | 图片网络地址(与 `encodedImage` 二选一) |
801
+ | `encodedImage` | `string` | 否 | 图片 base64(与 `imageUrl` 二选一) |
802
+ | `success` | `() => void` | 否 | 成功回调 |
803
+ | `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
804
+ | `complete` | `() => void` | 否 | 完成回调 |
804
805
 
805
806
  #### 返回值
806
807
 
@@ -819,16 +820,23 @@ Promise<{ errCode: BridgeCode }>
819
820
  ```js
820
821
  import { saveImageToLocal, BridgeCode } from '@kbapp/js-bridge'
821
822
 
822
- saveImageToLocal({
823
- imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
824
- success() {
825
- console.log('保存图片成功')
826
- },
823
+ saveImageToLocal({
824
+ imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
825
+ success() {
826
+ console.log('保存图片成功')
827
+ },
827
828
  fail(error) {
828
829
  console.log('保存图片失败', error)
829
830
  },
830
- })
831
- ```
831
+ })
832
+
833
+ saveImageToLocal({
834
+ encodedImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...',
835
+ success() {
836
+ console.log('保存base64图片成功')
837
+ },
838
+ })
839
+ ```
832
840
 
833
841
  > 支持 Promise 风格调用
834
842
 
@@ -2,6 +2,16 @@ const r = class r {
2
2
  constructor(s) {
3
3
  this.errorCode = s.errorCode, this.errorMsg = s.errorMsg;
4
4
  }
5
+ /**
6
+ *
7
+ * @description 自定义业务错误
8
+ */
9
+ static createBusinessError(s) {
10
+ return new r({
11
+ errorCode: 1004,
12
+ errorMsg: s
13
+ });
14
+ }
5
15
  };
6
16
  r.UNKNOWN = new r({
7
17
  errorCode: 1e3,
@@ -16,7 +26,7 @@ r.UNKNOWN = new r({
16
26
  errorCode: 1003,
17
27
  errorMsg: "请在开吧app内执行"
18
28
  });
19
- let t = r;
29
+ let e = r;
20
30
  export {
21
- t as BridgeCode
31
+ e as BridgeCode
22
32
  };
@@ -1,16 +1,35 @@
1
- import { runBridgeApi as r } from "../core/index.js";
2
- import { wrapAsync as o } from "../utils/wrap-async.js";
3
- const m = o(
4
- (e) => {
5
- r({
1
+ var n = (r, a, o) => new Promise((c, s) => {
2
+ var p = (e) => {
3
+ try {
4
+ m(o.next(e));
5
+ } catch (i) {
6
+ s(i);
7
+ }
8
+ }, t = (e) => {
9
+ try {
10
+ m(o.throw(e));
11
+ } catch (i) {
12
+ s(i);
13
+ }
14
+ }, m = (e) => e.done ? c(e.value) : Promise.resolve(e.value).then(p, t);
15
+ m((o = o.apply(r, a)).next());
16
+ });
17
+ import { runBridgeApi as g } from "../core/index.js";
18
+ import { wrapAsync as d } from "../utils/wrap-async.js";
19
+ import { BridgeCode as u } from "./bridge-code.js";
20
+ const B = d(
21
+ (r) => n(void 0, null, function* () {
22
+ if (!r.imageUrl && !r.encodedImage)
23
+ return Promise.reject(u.createBusinessError("imageUrl or encodedImage is required"));
24
+ g({
6
25
  name: "OpenActRequest",
7
26
  params: {
8
27
  type: 62,
9
- data: e
28
+ data: r
10
29
  }
11
30
  });
12
- }
31
+ })
13
32
  );
14
33
  export {
15
- m as saveImageToLocal
34
+ B as saveImageToLocal
16
35
  };
@@ -11,4 +11,9 @@ export declare class BridgeCode {
11
11
  static UNSUPPORTED_VERSION: BridgeCode;
12
12
  static TIMEOUT: BridgeCode;
13
13
  static UNSUPPORTED_BRIDGE_ENV: BridgeCode;
14
+ /**
15
+ *
16
+ * @description 自定义业务错误
17
+ */
18
+ static createBusinessError(message: string): BridgeCode;
14
19
  }
@@ -1,3 +1,5 @@
1
+ import { BridgeCode } from './bridge-code';
2
+
1
3
  /**
2
4
  *
3
5
  * @description 保存图片到本地
@@ -12,11 +14,13 @@ saveImageToLocal({
12
14
  ```
13
15
  *
14
16
  */
15
- export declare const saveImageToLocal: (params: {
16
- /** 图片url(仅支持网络地址) */
17
- imageUrl: string;
17
+ export declare const saveImageToLocal: (params?: ({
18
+ /** 图片url(网络地址) imageUrl|encodedImage 二选一 */
19
+ imageUrl?: string;
20
+ /** 图片base64 imageBase64|encodedImage 二选一 */
21
+ encodedImage?: string;
18
22
  } & {
19
- success?: ((res: void) => void) | undefined;
20
- fail?: (error: import('./bridge-code').BridgeCode) => void;
23
+ success?: ((res: undefined) => void) | undefined;
24
+ fail?: (error: BridgeCode) => void;
21
25
  complete?: () => void;
22
- }) => Promise<void>;
26
+ }) | undefined) => Promise<undefined>;
package/dist/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(t,l){typeof exports=="object"&&typeof module!="undefined"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(t=typeof globalThis!="undefined"?globalThis:t||self,l(t.kbBridge={}))})(this,function(t){"use strict";var Ee=Object.defineProperty;var b=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var W=(t,l,c)=>l in t?Ee(t,l,{enumerable:!0,configurable:!0,writable:!0,value:c}):t[l]=c,K=(t,l)=>{for(var c in l||(l={}))Q.call(l,c)&&W(t,c,l[c]);if(b)for(var c of b(l))G.call(l,c)&&W(t,c,l[c]);return t};var k=(t,l)=>{var c={};for(var h in t)Q.call(t,h)&&l.indexOf(h)<0&&(c[h]=t[h]);if(t!=null&&b)for(var h of b(t))l.indexOf(h)<0&&G.call(t,h)&&(c[h]=t[h]);return c};var A=(t,l,c)=>new Promise((h,_)=>{var R=d=>{try{p(c.next(d))}catch(E){_(E)}},y=d=>{try{p(c.throw(d))}catch(E){_(E)}},p=d=>d.done?h(d.value):Promise.resolve(d.value).then(R,y);p((c=c.apply(t,l)).next())});var L;function l(e){if(Object.prototype.toString.call(e)!=="[object Object]")return e;const i={};return Object.keys(e).forEach(n=>{const a=e[n];a!=null&&(i[n]=Object.prototype.toString.call(a)==="[object Object]"?l(a):a)}),i}const w=class w{constructor(i){this.errorCode=i.errorCode,this.errorMsg=i.errorMsg}};w.UNKNOWN=new w({errorCode:1e3,errorMsg:"未知错误"}),w.UNSUPPORTED_VERSION=new w({errorCode:1001,errorMsg:"当前开吧版本不支持"}),w.TIMEOUT=new w({errorCode:1002,errorMsg:"执行超时"}),w.UNSUPPORTED_BRIDGE_ENV=new w({errorCode:1003,errorMsg:"请在开吧app内执行"});let c=w;const h=()=>{const e=(o,s,r)=>{var u="";typeof s=="function"&&(r=s,s={});var f={data:s===void 0?null:s};if(typeof r=="function"){var g="dscb"+window.dscb++;window[g]=r,f._dscbstub=g}if(f=JSON.stringify(f),window.flutter_inappwebview?window.flutter_inappwebview.callHandler&&(u=window.flutter_inappwebview.callHandler(""+o,f)):(window._dswk||navigator.userAgent.indexOf("_dsbridge")!=-1)&&(u=prompt("_flutterDsbridge="+o,f)),u instanceof Promise)return u;try{return JSON.parse(u||"{}").data}catch(S){console.error("callHandle异常,JSON.parse错误")}},i=()=>window.navigator.userAgent.includes("Android")?window.flutter_inappwebview&&window.flutter_inappwebview._platformReady:!0,n=(()=>{const o=[],s=setInterval(()=>{i()&&(clearInterval(s),o.forEach(r=>{e.apply(window,r)}),o.length=0)},500);return(...r)=>{o.push(r)}})();var a={default:void 0,callHandler:function(o,s,r){return i()?e(o,s,r):n(o,s,r)},register:function(o,s,r){var u=r?window._dsaf:window._dsf;window._dsInit||(window._dsInit=!0,setTimeout(function(){a.callHandler("_dsb.dsinit")},0)),typeof s=="object"?u._obs[o]=s:u[o]=s},registerHandler:function(o,s){this.register(o,s,!0)}};return function(){if(!window._dsf){var o={_dsf:{_obs:{}},_dsaf:{_obs:{}},dscb:0,jsBridge:a,_handleMessageFromNative:function(r){var u=JSON.parse(r.data),f={id:r.callbackId,complete:!0},g=this._dsf[r.method],S=this._dsaf[r.method],H=function(N,M){f.data=N.apply(M,u),a.callHandler("_dsb.returnValue",f)},j=function(N,M){u.push(function(Se,Re){f.data=Se,f.complete=Re!==!1,a.callHandler("_dsb.returnValue",f)}),N.apply(M,u)};if(g)H(g,this._dsf);else if(S)j(S,this._dsaf);else{var m=r.method.split(".");if(m.length<2)return;var F=m.pop(),J=m.join("."),I=this._dsf._obs,O=I[J]||{},v=O[F];if(v&&typeof v=="function"){H(v,O);return}if(I=this._dsaf._obs,O=I[J]||{},v=O[F],v&&typeof v=="function"){j(v,O);return}}}};for(var s in o)window[s]=o[s]}}(),a},_=(e=>/(kb)/i.test(e)?h():{registerHandler(i,n){throw c.UNSUPPORTED_BRIDGE_ENV},callHandler(i,n,a){throw c.UNSUPPORTED_BRIDGE_ENV}})((L=window==null?void 0:window.navigator)==null?void 0:L.userAgent),R=e=>new Promise((i,n)=>{var a,o,s;try{_.registerHandler(e.name,e.handler),(a=e.success)==null||a.call(e),i()}catch(r){(o=e.fail)==null||o.call(e,r),n(r)}finally{(s=e.complete)==null||s.call(e)}});function y(e){const i=n=>{let a;const o=r=>{var u;(!a||a==="success")&&(a="success",(u=n.success)==null||u.call(n,r))},s=r=>{var u;a||(a="error",(u=n.fail)==null||u.call(n,r))};n.timeout&&setTimeout(()=>{s(c.TIMEOUT)},n.timeout);try{_.callHandler(n.name,n.params,r=>{let u;try{typeof r=="string"?u=JSON.parse(r.replace(/^\s+|\s+$/g,"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\u0000-\u001F\u007F-\u009F]/g,function(f){return f===`
2
- `||f==="\r"?f:f===" "?"\\t":""})):u=r}catch(f){u=r}o(u)})}catch(r){s(r)}};return new Promise((n,a)=>{i({name:e.name,params:l(e.params),timeout:e.timeout,success:o=>{var s,r;(s=e.success)==null||s.call(e,o),(r=e.complete)==null||r.call(e),n(o)},fail:o=>{var s,r;(s=e.fail)==null||s.call(e,o),(r=e.complete)==null||r.call(e),a(o)}})})}function p(e){_.callHandler(e.name,e.params,i=>{})}function d(e){return function(...n){return A(this,null,function*(){const f=n[0]||{},{success:o,fail:s,complete:r}=f,u=k(f,["success","fail","complete"]);try{const g=yield Promise.resolve(e(u));return o==null||o(g),g}catch(g){const S=g!=null&&g.errorCode?g:new c({errorCode:c.UNKNOWN.errorCode,errorMsg:String(g)});throw s==null||s(S),S}finally{r==null||r()}})}}function E(e){const i=new Map;return function(...n){const a=JSON.stringify(n);if(i.has(a))return i.get(a);const o=e(...n);return i.set(a,o),Promise.resolve(o).catch(()=>{i.delete(a)}),o}}class ${}const q=d(E(()=>y({name:"OpenActRequest",timeout:5e3,params:{type:35,data:{}}}))),V=d(e=>A(this,null,function*(){return(yield q()).vcode>=e.minVersion}));function z(e,i){return(...n)=>V({minVersion:e.minVersion}).then(a=>a?i(...n):Promise.reject(new c({errorCode:c.UNSUPPORTED_VERSION.errorCode,errorMsg:`最低版本要求${e.minVersion}`})))}const X=d(()=>{p({name:"OpenActRequest",params:{type:56,data:null}})}),Y=d(()=>{p({name:"OpenActRequest",params:{type:-1,data:{}}})}),U={microphone:{description:"用于发帖上传音频"},location:{description:"获取你选择的位置信息,用于线下导航服务"},camera:{description:"收集你选中的照片或视频信息 ,用于 发表评论、分享视频"}},Z=d(e=>(Object.assign(U,e),R({name:"getPermissionUsage",handler(i,n){n(U[i.permission])}}))),x=/(kb_flutter|kb_dsbridge_flutter|kb_ios|kb_android|kb_dsbridge_android)/i.test(window.navigator.userAgent),ee=d(e=>A(this,null,function*(){const o=e,{kbKey:i}=o,n=k(o,["kbKey"]),{data:a}=yield y({name:"OpenActRequest",timeout:5e3,params:{type:51,data:n}});return a}));var B=(e=>(e[e.FREE=1]="FREE",e[e.FORBID=2]="FORBID",e[e.REQUIRED=3]="REQUIRED",e))(B||{});class C{constructor(){this.textMin=0,this.textMax=1e3,this.imageMax=9,this.imageMin=0,this.audioRqr=1,this.videoRqr=1,this.mediaRqr=2,this.streetRqr=1}}function te(e){const i=new C;return e&&Object.keys(e).forEach(n=>{i[n]=e[n]}),{hint:e==null?void 0:e.placeholder,initialText:e==null?void 0:e.initialText,audio:i.audioRqr!==2,image:i.imageMax!==0,video:i.videoRqr!==2,address:i.streetRqr!==2,asset_video:i.mediaRqr!==2,audio_must:i.audioRqr===3,image_must:i.imageMin>0,asset_video_must:i.mediaRqr===3,max_image_count:i.imageMax,min_image_count:i.imageMin,video_must:i.videoRqr===3,text_must:i.textMin>0,content_max_length:i.textMax,content_min_length:i.textMin}}const ne=d(e=>A(this,null,function*(){var i;return y({name:"OpenActRequest",params:{type:13,data:(i=e==null?void 0:e.postRule)!=null?i:{}}}).then(({data:n})=>{const s=n,{pic:a}=s,o=k(s,["pic"]);return K({images:a},o)})})),ie=d(e=>{p({name:"OpenActRequest",params:{type:69,data:{eventId:e.eventName,trackParams:e.eventParams,ExtEventType:e.eventType}}})}),re=d(e=>{p({name:"OpenActRequest",params:{type:1001,data:e}})}),oe=d(e=>{p({name:"OpenActRequest",params:{type:62,data:e}})}),se=d(e=>{p({name:"OpenActRequest",params:{type:63,data:e}})}),ae=d(()=>y({name:"OpenActRequest",params:{type:26,data:{}}})),ce=d(e=>{p({name:"OpenActRequest",params:{type:71,data:e}})}),de=d(e=>{p({name:"OpenActRequest",params:{type:64,data:e}})}),ue=d(e=>{p({name:"OpenActRequest",params:{type:58,data:e}})}),P="SHARE_EVENT_NAME";class le{}const fe=d(e=>R({name:"CommonShare",handler(i,n){window.dispatchEvent(new Event(P)),"onShareApp"in e&&e.onShareApp?n({type:12,data:e.onShareApp()}):n({type:12,data:e})}})),pe=d(e=>A(this,null,function*(){window.dispatchEvent(new Event(P)),p({name:"OpenActRequest",params:{type:58,data:e}})}));function ge(e){return window.addEventListener(P,e),()=>{window.removeEventListener(P,e)}}const he=d(e=>{p({name:"OpenActRequest",params:{type:68,data:{show:e.showMenu,showActionMode:e.panelStyle||0}}})}),we=d(()=>y({name:"OpenActRequest",params:{type:72}})),Ae=d(()=>A(this,null,function*(){p({name:"OpenActRequest",params:{type:73}})}));class ye{}const D=d(()=>A(this,null,function*(){return(yield y({name:"OpenActRequest",timeout:5e3,params:{type:31,data:{requireLogin:!1}}})).data||null})),T=(()=>{const e=new Set,i=(()=>{let n;const a=o=>{n=setTimeout(()=>A(this,null,function*(){const r=yield D();if(!r)return a(++o);e.forEach(u=>u(r)),e.clear()}),(r=>r===0?0:r<50?600:r<80?1e3:5e3)(o))};return{start(){n&&clearTimeout(n),e.size>0&&a(0)},stop(){n&&clearTimeout(n)}}})();return{addTask(n){e.add(n)},removeTask(n){e.delete(n),e.size===0&&i.stop()},triggerCheckTask(){i.start()}}})(),ve=d(()=>A(this,null,function*(){T.triggerCheckTask(),yield p({name:"OpenActRequest",params:{type:31,data:{requireLogin:!0}}})})),_e=e=>(T.addTask(e),T.triggerCheckTask(),()=>{T.removeTask(e)});t.AppBaseInfo=$,t.AppLoginInfo=ye,t.AppShareModel=le,t.BridgeCode=c,t.IS_KB_APP_ENV=x,t.KbRequirement=B,t.NoteThreadPostRule=C,t.checkForNewVersion=X,t.closeWebView=Y,t.decorateAppVersionSupport=z,t.defineAppShareModel=fe,t.defineAppSharePanelState=he,t.defineBridgeCallback=R,t.definePermissionUsage=Z,t.generateKBSign=ee,t.generatePostEditorParamsByThreadPostRule=te,t.getAppBaseInfo=q,t.getAppLoginInfo=D,t.getAppSubscribeNotifyStatus=we,t.isAppVersionSupport=V,t.onAppSharePanelShow=ge,t.onLoopCheckAppLogin=_e,t.openAppSharePanel=pe,t.openAppSubscribeNotifySettings=Ae,t.openPostEditor=ne,t.reportDAEvent=ie,t.runAction=re,t.runBridgeApi=p,t.runBridgeApiResponse=y,t.saveImageToLocal=oe,t.saveVideoToLocal=se,t.scanQRCode=ae,t.setScreenOrientation=ce,t.setWebViewTitle=de,t.shareImage=ue,t.triggerAppLogin=ve,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
1
+ (function(t,l){typeof exports=="object"&&typeof module!="undefined"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(t=typeof globalThis!="undefined"?globalThis:t||self,l(t.kbBridge={}))})(this,function(t){"use strict";var Ee=Object.defineProperty;var b=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var W=(t,l,c)=>l in t?Ee(t,l,{enumerable:!0,configurable:!0,writable:!0,value:c}):t[l]=c,K=(t,l)=>{for(var c in l||(l={}))Q.call(l,c)&&W(t,c,l[c]);if(b)for(var c of b(l))G.call(l,c)&&W(t,c,l[c]);return t};var m=(t,l)=>{var c={};for(var h in t)Q.call(t,h)&&l.indexOf(h)<0&&(c[h]=t[h]);if(t!=null&&b)for(var h of b(t))l.indexOf(h)<0&&G.call(t,h)&&(c[h]=t[h]);return c};var A=(t,l,c)=>new Promise((h,_)=>{var R=d=>{try{p(c.next(d))}catch(E){_(E)}},y=d=>{try{p(c.throw(d))}catch(E){_(E)}},p=d=>d.done?h(d.value):Promise.resolve(d.value).then(R,y);p((c=c.apply(t,l)).next())});var L;function l(e){if(Object.prototype.toString.call(e)!=="[object Object]")return e;const n={};return Object.keys(e).forEach(r=>{const a=e[r];a!=null&&(n[r]=Object.prototype.toString.call(a)==="[object Object]"?l(a):a)}),n}const w=class w{constructor(n){this.errorCode=n.errorCode,this.errorMsg=n.errorMsg}static createBusinessError(n){return new w({errorCode:1004,errorMsg:n})}};w.UNKNOWN=new w({errorCode:1e3,errorMsg:"未知错误"}),w.UNSUPPORTED_VERSION=new w({errorCode:1001,errorMsg:"当前开吧版本不支持"}),w.TIMEOUT=new w({errorCode:1002,errorMsg:"执行超时"}),w.UNSUPPORTED_BRIDGE_ENV=new w({errorCode:1003,errorMsg:"请在开吧app内执行"});let c=w;const h=()=>{const e=(o,s,i)=>{var u="";typeof s=="function"&&(i=s,s={});var f={data:s===void 0?null:s};if(typeof i=="function"){var g="dscb"+window.dscb++;window[g]=i,f._dscbstub=g}if(f=JSON.stringify(f),window.flutter_inappwebview?window.flutter_inappwebview.callHandler&&(u=window.flutter_inappwebview.callHandler(""+o,f)):(window._dswk||navigator.userAgent.indexOf("_dsbridge")!=-1)&&(u=prompt("_flutterDsbridge="+o,f)),u instanceof Promise)return u;try{return JSON.parse(u||"{}").data}catch(S){console.error("callHandle异常,JSON.parse错误")}},n=()=>window.navigator.userAgent.includes("Android")?window.flutter_inappwebview&&window.flutter_inappwebview._platformReady:!0,r=(()=>{const o=[],s=setInterval(()=>{n()&&(clearInterval(s),o.forEach(i=>{e.apply(window,i)}),o.length=0)},500);return(...i)=>{o.push(i)}})();var a={default:void 0,callHandler:function(o,s,i){return n()?e(o,s,i):r(o,s,i)},register:function(o,s,i){var u=i?window._dsaf:window._dsf;window._dsInit||(window._dsInit=!0,setTimeout(function(){a.callHandler("_dsb.dsinit")},0)),typeof s=="object"?u._obs[o]=s:u[o]=s},registerHandler:function(o,s){this.register(o,s,!0)}};return function(){if(!window._dsf){var o={_dsf:{_obs:{}},_dsaf:{_obs:{}},dscb:0,jsBridge:a,_handleMessageFromNative:function(i){var u=JSON.parse(i.data),f={id:i.callbackId,complete:!0},g=this._dsf[i.method],S=this._dsaf[i.method],H=function(N,M){f.data=N.apply(M,u),a.callHandler("_dsb.returnValue",f)},j=function(N,M){u.push(function(Se,Re){f.data=Se,f.complete=Re!==!1,a.callHandler("_dsb.returnValue",f)}),N.apply(M,u)};if(g)H(g,this._dsf);else if(S)j(S,this._dsaf);else{var k=i.method.split(".");if(k.length<2)return;var F=k.pop(),J=k.join("."),I=this._dsf._obs,O=I[J]||{},v=O[F];if(v&&typeof v=="function"){H(v,O);return}if(I=this._dsaf._obs,O=I[J]||{},v=O[F],v&&typeof v=="function"){j(v,O);return}}}};for(var s in o)window[s]=o[s]}}(),a},_=(e=>/(kb)/i.test(e)?h():{registerHandler(n,r){throw c.UNSUPPORTED_BRIDGE_ENV},callHandler(n,r,a){throw c.UNSUPPORTED_BRIDGE_ENV}})((L=window==null?void 0:window.navigator)==null?void 0:L.userAgent),R=e=>new Promise((n,r)=>{var a,o,s;try{_.registerHandler(e.name,e.handler),(a=e.success)==null||a.call(e),n()}catch(i){(o=e.fail)==null||o.call(e,i),r(i)}finally{(s=e.complete)==null||s.call(e)}});function y(e){const n=r=>{let a;const o=i=>{var u;(!a||a==="success")&&(a="success",(u=r.success)==null||u.call(r,i))},s=i=>{var u;a||(a="error",(u=r.fail)==null||u.call(r,i))};r.timeout&&setTimeout(()=>{s(c.TIMEOUT)},r.timeout);try{_.callHandler(r.name,r.params,i=>{let u;try{typeof i=="string"?u=JSON.parse(i.replace(/^\s+|\s+$/g,"").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\u0000-\u001F\u007F-\u009F]/g,function(f){return f===`
2
+ `||f==="\r"?f:f===" "?"\\t":""})):u=i}catch(f){u=i}o(u)})}catch(i){s(i)}};return new Promise((r,a)=>{n({name:e.name,params:l(e.params),timeout:e.timeout,success:o=>{var s,i;(s=e.success)==null||s.call(e,o),(i=e.complete)==null||i.call(e),r(o)},fail:o=>{var s,i;(s=e.fail)==null||s.call(e,o),(i=e.complete)==null||i.call(e),a(o)}})})}function p(e){_.callHandler(e.name,e.params,n=>{})}function d(e){return function(...r){return A(this,null,function*(){const f=r[0]||{},{success:o,fail:s,complete:i}=f,u=m(f,["success","fail","complete"]);try{const g=yield Promise.resolve(e(u));return o==null||o(g),g}catch(g){const S=g!=null&&g.errorCode?g:new c({errorCode:c.UNKNOWN.errorCode,errorMsg:String(g)});throw s==null||s(S),S}finally{i==null||i()}})}}function E(e){const n=new Map;return function(...r){const a=JSON.stringify(r);if(n.has(a))return n.get(a);const o=e(...r);return n.set(a,o),Promise.resolve(o).catch(()=>{n.delete(a)}),o}}class ${}const q=d(E(()=>y({name:"OpenActRequest",timeout:5e3,params:{type:35,data:{}}}))),V=d(e=>A(this,null,function*(){return(yield q()).vcode>=e.minVersion}));function z(e,n){return(...r)=>V({minVersion:e.minVersion}).then(a=>a?n(...r):Promise.reject(new c({errorCode:c.UNSUPPORTED_VERSION.errorCode,errorMsg:`最低版本要求${e.minVersion}`})))}const X=d(()=>{p({name:"OpenActRequest",params:{type:56,data:null}})}),Y=d(()=>{p({name:"OpenActRequest",params:{type:-1,data:{}}})}),U={microphone:{description:"用于发帖上传音频"},location:{description:"获取你选择的位置信息,用于线下导航服务"},camera:{description:"收集你选中的照片或视频信息 ,用于 发表评论、分享视频"}},Z=d(e=>(Object.assign(U,e),R({name:"getPermissionUsage",handler(n,r){r(U[n.permission])}}))),x=/(kb_flutter|kb_dsbridge_flutter|kb_ios|kb_android|kb_dsbridge_android)/i.test(window.navigator.userAgent),ee=d(e=>A(this,null,function*(){const o=e,{kbKey:n}=o,r=m(o,["kbKey"]),{data:a}=yield y({name:"OpenActRequest",timeout:5e3,params:{type:51,data:r}});return a}));var B=(e=>(e[e.FREE=1]="FREE",e[e.FORBID=2]="FORBID",e[e.REQUIRED=3]="REQUIRED",e))(B||{});class C{constructor(){this.textMin=0,this.textMax=1e3,this.imageMax=9,this.imageMin=0,this.audioRqr=1,this.videoRqr=1,this.mediaRqr=2,this.streetRqr=1}}function te(e){const n=new C;return e&&Object.keys(e).forEach(r=>{n[r]=e[r]}),{hint:e==null?void 0:e.placeholder,initialText:e==null?void 0:e.initialText,audio:n.audioRqr!==2,image:n.imageMax!==0,video:n.videoRqr!==2,address:n.streetRqr!==2,asset_video:n.mediaRqr!==2,audio_must:n.audioRqr===3,image_must:n.imageMin>0,asset_video_must:n.mediaRqr===3,max_image_count:n.imageMax,min_image_count:n.imageMin,video_must:n.videoRqr===3,text_must:n.textMin>0,content_max_length:n.textMax,content_min_length:n.textMin}}const ne=d(e=>A(this,null,function*(){var n;return y({name:"OpenActRequest",params:{type:13,data:(n=e==null?void 0:e.postRule)!=null?n:{}}}).then(({data:r})=>{const s=r,{pic:a}=s,o=m(s,["pic"]);return K({images:a},o)})})),re=d(e=>{p({name:"OpenActRequest",params:{type:69,data:{eventId:e.eventName,trackParams:e.eventParams,ExtEventType:e.eventType}}})}),ie=d(e=>{p({name:"OpenActRequest",params:{type:1001,data:e}})}),oe=d(e=>A(this,null,function*(){if(!e.imageUrl&&!e.encodedImage)return Promise.reject(c.createBusinessError("imageUrl or encodedImage is required"));p({name:"OpenActRequest",params:{type:62,data:e}})})),se=d(e=>{p({name:"OpenActRequest",params:{type:63,data:e}})}),ae=d(()=>y({name:"OpenActRequest",params:{type:26,data:{}}})),ce=d(e=>{p({name:"OpenActRequest",params:{type:71,data:e}})}),de=d(e=>{p({name:"OpenActRequest",params:{type:64,data:e}})}),ue=d(e=>{p({name:"OpenActRequest",params:{type:58,data:e}})}),P="SHARE_EVENT_NAME";class le{}const fe=d(e=>R({name:"CommonShare",handler(n,r){window.dispatchEvent(new Event(P)),"onShareApp"in e&&e.onShareApp?r({type:12,data:e.onShareApp()}):r({type:12,data:e})}})),pe=d(e=>A(this,null,function*(){window.dispatchEvent(new Event(P)),p({name:"OpenActRequest",params:{type:58,data:e}})}));function ge(e){return window.addEventListener(P,e),()=>{window.removeEventListener(P,e)}}const he=d(e=>{p({name:"OpenActRequest",params:{type:68,data:{show:e.showMenu,showActionMode:e.panelStyle||0}}})}),we=d(()=>y({name:"OpenActRequest",params:{type:72}})),Ae=d(()=>A(this,null,function*(){p({name:"OpenActRequest",params:{type:73}})}));class ye{}const D=d(()=>A(this,null,function*(){return(yield y({name:"OpenActRequest",timeout:5e3,params:{type:31,data:{requireLogin:!1}}})).data||null})),T=(()=>{const e=new Set,n=(()=>{let r;const a=o=>{r=setTimeout(()=>A(this,null,function*(){const i=yield D();if(!i)return a(++o);e.forEach(u=>u(i)),e.clear()}),(i=>i===0?0:i<50?600:i<80?1e3:5e3)(o))};return{start(){r&&clearTimeout(r),e.size>0&&a(0)},stop(){r&&clearTimeout(r)}}})();return{addTask(r){e.add(r)},removeTask(r){e.delete(r),e.size===0&&n.stop()},triggerCheckTask(){n.start()}}})(),ve=d(()=>A(this,null,function*(){T.triggerCheckTask(),yield p({name:"OpenActRequest",params:{type:31,data:{requireLogin:!0}}})})),_e=e=>(T.addTask(e),T.triggerCheckTask(),()=>{T.removeTask(e)});t.AppBaseInfo=$,t.AppLoginInfo=ye,t.AppShareModel=le,t.BridgeCode=c,t.IS_KB_APP_ENV=x,t.KbRequirement=B,t.NoteThreadPostRule=C,t.checkForNewVersion=X,t.closeWebView=Y,t.decorateAppVersionSupport=z,t.defineAppShareModel=fe,t.defineAppSharePanelState=he,t.defineBridgeCallback=R,t.definePermissionUsage=Z,t.generateKBSign=ee,t.generatePostEditorParamsByThreadPostRule=te,t.getAppBaseInfo=q,t.getAppLoginInfo=D,t.getAppSubscribeNotifyStatus=we,t.isAppVersionSupport=V,t.onAppSharePanelShow=ge,t.onLoopCheckAppLogin=_e,t.openAppSharePanel=pe,t.openAppSubscribeNotifySettings=Ae,t.openPostEditor=ne,t.reportDAEvent=re,t.runAction=ie,t.runBridgeApi=p,t.runBridgeApiResponse=y,t.saveImageToLocal=oe,t.saveVideoToLocal=se,t.scanQRCode=ae,t.setScreenOrientation=ce,t.setWebViewTitle=de,t.shareImage=ue,t.triggerAppLogin=ve,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
@@ -8,12 +8,13 @@
8
8
 
9
9
  #### 请求参数
10
10
 
11
- | 参数 | 类型 | 必填 | 说明 |
12
- | ---------- | ----------------------------- | ---- | ------------ |
13
- | `imageUrl` | `string` | | 图片网络地址 |
14
- | `success` | `() => void` | 否 | 成功回调 |
15
- | `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
16
- | `complete` | `() => void` | 否 | 完成回调 |
11
+ | 参数 | 类型 | 必填 | 说明 |
12
+ | -------------- | ----------------------------- | ---- | --------------------------------------- |
13
+ | `imageUrl` | `string` | | 图片网络地址(与 `encodedImage` 二选一) |
14
+ | `encodedImage` | `string` | 否 | 图片 base64(与 `imageUrl` 二选一) |
15
+ | `success` | `() => void` | 否 | 成功回调 |
16
+ | `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
17
+ | `complete` | `() => void` | 否 | 完成回调 |
17
18
 
18
19
  #### 返回值
19
20
 
@@ -41,6 +42,13 @@ saveImageToLocal({
41
42
  console.log('保存图片失败', error)
42
43
  },
43
44
  })
45
+
46
+ saveImageToLocal({
47
+ encodedImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...',
48
+ success() {
49
+ console.log('保存base64图片成功')
50
+ },
51
+ })
44
52
  ```
45
53
 
46
54
  > 支持 Promise 风格调用
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.0.16-alpha.0",
6
+ "version": "1.0.17-alpha.0",
7
7
  "description": "开吧客户端桥接",
8
8
  "author": "along",
9
9
  "main": "./dist/umd/index.js",