qlfy-postmate 1.0.8 → 1.1.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/lib/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  var u = Object.defineProperty;
2
2
  var g = (r, t, e) => t in r ? u(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
- var h = (r, t, e) => g(r, typeof t != "symbol" ? t + "" : t, e);
4
- const l = "application/x-postmate-v1+json";
3
+ var o = (r, t, e) => g(r, typeof t != "symbol" ? t + "" : t, e);
4
+ const h = "application/x-postmate-v1+json";
5
5
  let y = 0;
6
6
  const P = {
7
7
  handshake: 1,
@@ -12,9 +12,9 @@ const P = {
12
12
  request: 1
13
13
  };
14
14
  function f(r, t) {
15
- return (typeof t != "string" || r.origin === t) && !!r.data && (typeof r.data != "object" || "postmate" in r.data) && r.data.type === l && !!P[r.data.postmate];
15
+ return (typeof t != "string" || r.origin === t) && !!r.data && (typeof r.data != "object" || "postmate" in r.data) && r.data.type === h && !!P[r.data.postmate];
16
16
  }
17
- class E {
17
+ class w {
18
18
  constructor(t) {
19
19
  this.parent = t.parent, this.frame = t.frame, this.child = t.child, this.childOrigin = t.childOrigin, this.events = {}, this.listener = (e) => {
20
20
  if (!f(e, this.childOrigin)) return;
@@ -23,14 +23,14 @@ class E {
23
23
  }, this.parent.addEventListener("message", this.listener, !1);
24
24
  }
25
25
  get(t) {
26
- return new o.Promise((e) => {
26
+ return new l.Promise((e) => {
27
27
  const s = ++y, i = (a) => {
28
28
  a.data.uid === s && a.data.postmate === "reply" && (this.parent.removeEventListener("message", i, !1), e(a.data.value));
29
29
  };
30
30
  this.parent.addEventListener("message", i, !1), this.child.postMessage(
31
31
  {
32
32
  postmate: "request",
33
- type: l,
33
+ type: h,
34
34
  property: t,
35
35
  uid: s
36
36
  },
@@ -42,7 +42,7 @@ class E {
42
42
  this.child.postMessage(
43
43
  {
44
44
  postmate: "call",
45
- type: l,
45
+ type: h,
46
46
  property: t,
47
47
  data: e
48
48
  },
@@ -56,19 +56,19 @@ class E {
56
56
  window.removeEventListener("message", this.listener, !1), this.frame.parentNode.removeChild(this.frame);
57
57
  }
58
58
  }
59
- class w {
59
+ class E {
60
60
  constructor(t) {
61
61
  this.model = t.model, this.parent = t.parent, this.parentOrigin = t.parentOrigin, this.child = t.child, this.child.addEventListener("message", (e) => {
62
62
  if (!f(e, this.parentOrigin)) return;
63
63
  const { postmate: s, property: i, uid: a, data: d } = e.data, n = this.model[i];
64
64
  if (s !== "call") {
65
65
  const m = typeof n == "function" ? n() : n;
66
- o.Promise.resolve(m).then((c) => {
66
+ l.Promise.resolve(m).then((c) => {
67
67
  e.source.postMessage(
68
68
  {
69
69
  property: i,
70
70
  postmate: "reply",
71
- type: l,
71
+ type: h,
72
72
  uid: a,
73
73
  value: c
74
74
  },
@@ -82,14 +82,14 @@ class w {
82
82
  this.parent.postMessage(
83
83
  {
84
84
  postmate: "emit",
85
- type: l,
85
+ type: h,
86
86
  value: { name: t, data: e }
87
87
  },
88
88
  this.parentOrigin
89
89
  );
90
90
  }
91
91
  }
92
- class o {
92
+ class l {
93
93
  constructor({ container: t = document.body, model: e, url: s, name: i, classListArray: a = [] }) {
94
94
  return this.parent = window, this.frame = document.createElement("iframe"), this.frame.name = i || "", this.frame.classList.add(...a), t.appendChild(this.frame), this.child = this.frame.contentWindow, this.model = e || {}, this.sendHandshake(s);
95
95
  }
@@ -101,17 +101,17 @@ class o {
101
101
  return a.origin || `${d}//${n}`;
102
102
  })();
103
103
  let s = 0, i;
104
- return new o.Promise((a, d) => {
104
+ return new l.Promise((a, d) => {
105
105
  const n = (p) => {
106
106
  if (!f(p, e)) return !1;
107
- p.data.postmate === "handshake-reply" ? (clearInterval(i), this.parent.removeEventListener("message", n, !1), this.childOrigin = p.origin, a(new E(this))) : d("Failed handshake");
107
+ p.data.postmate === "handshake-reply" ? (clearInterval(i), this.parent.removeEventListener("message", n, !1), this.childOrigin = p.origin, a(new w(this))) : d("Failed handshake");
108
108
  };
109
109
  this.parent.addEventListener("message", n, !1);
110
110
  const m = () => {
111
111
  s++, this.child.postMessage(
112
112
  {
113
113
  postmate: "handshake",
114
- type: l,
114
+ type: h,
115
115
  model: this.model
116
116
  },
117
117
  e
@@ -128,42 +128,46 @@ class k {
128
128
  return this.child = window, this.model = t, this.parent = window.parent, this.sendHandshakeReply();
129
129
  }
130
130
  sendHandshakeReply() {
131
- return new o.Promise((t, e) => {
131
+ return new l.Promise((t, e) => {
132
132
  this.child.addEventListener("message", (s) => {
133
133
  if (s.data.postmate) {
134
134
  if (s.data.postmate !== "handshake") return e("Handshake Reply Failed");
135
135
  this.child.removeEventListener("message", this, !1), s.source.postMessage(
136
136
  {
137
137
  postmate: "handshake-reply",
138
- type: l
138
+ type: h
139
139
  },
140
140
  s.origin
141
141
  ), this.parentOrigin = s.origin;
142
142
  const i = s.data.model;
143
143
  i && Object.keys(i).forEach((a) => {
144
144
  this.model[a] = i[a];
145
- }), t(new w(this));
145
+ }), t(new E(this));
146
146
  }
147
147
  }, !1);
148
148
  });
149
149
  }
150
150
  }
151
- o.debug = !1;
152
- o.Promise = (() => {
151
+ l.debug = !1;
152
+ l.Promise = (() => {
153
153
  try {
154
154
  return typeof window < "u" ? window.Promise : Promise;
155
155
  } catch {
156
156
  return Promise;
157
157
  }
158
158
  })();
159
- o.Model = k;
159
+ l.Model = k;
160
160
  class C {
161
161
  constructor(t) {
162
- this.childPostmate = null, this.parentPostmate = null, this.isGetData = !1, this.getDataCllBack = null, window.frameElement ? t.error({ status: 500, data: null, message: "未在一体化平台中运行" }) : this.init(t);
162
+ o(this, "childPostmate", null);
163
+ o(this, "parentPostmate", null);
164
+ o(this, "isGetData", !1);
165
+ o(this, "getDataCllBack", null);
166
+ window.top !== window.self ? this.init(t) : t.error({ status: 500, data: null, message: "未在一体化平台中运行" });
163
167
  }
164
168
  init(t) {
165
169
  const e = this;
166
- this.childPostmate = new o.Model({
170
+ this.childPostmate = new l.Model({
167
171
  // 定义子页面可以暴露给父页面的方法
168
172
  baseData(s) {
169
173
  s = JSON.parse(s), e.isGetData ? e.getDataCllBack && e.getDataCllBack({
@@ -204,26 +208,26 @@ class C {
204
208
  class I {
205
209
  constructor(t, e = "", s = "") {
206
210
  /** 连接到的子postmate实例 */
207
- h(this, "postmateParent", null);
211
+ o(this, "postmateParent", null);
208
212
  /** 通讯数据 */
209
- h(this, "dataInfo", {
213
+ o(this, "dataInfo", {
210
214
  loginInfo: null,
211
215
  token: "",
212
216
  isHideHeader: !0
213
217
  });
214
218
  /** iframe Dom */
215
- h(this, "iframeEle", "");
219
+ o(this, "iframeEle", "");
216
220
  /** iframe url */
217
- h(this, "iframeUrl", "");
221
+ o(this, "iframeUrl", "");
218
222
  /** postmate 实例 */
219
- h(this, "handshake", null);
223
+ o(this, "handshake", null);
220
224
  this.dataInfo = t || this.dataInfo, this.iframeEle = e, this.iframeUrl = s, this.iframeEle && this.iframeUrl && this.init();
221
225
  }
222
226
  /** 初始化 */
223
227
  async init(t = "") {
224
228
  this.postmateParent && (this.postmateParent.destroy(), this.postmateParent = null);
225
229
  const e = typeof this.iframeEle == "function" ? this.iframeEle() : this.iframeEle;
226
- new o({
230
+ new l({
227
231
  container: e,
228
232
  url: this.iframeUrl
229
233
  }).then((i) => {
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- (function(r,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r["qlfy-postmate"]={}))})(this,function(r){"use strict";var C=Object.defineProperty;var M=(r,n,d)=>n in r?C(r,n,{enumerable:!0,configurable:!0,writable:!0,value:d}):r[n]=d;var m=(r,n,d)=>M(r,typeof n!="symbol"?n+"":n,d);const n="application/x-postmate-v1+json";let d=0;const y={handshake:1,"handshake-reply":1,call:1,emit:1,reply:1,request:1};function u(o,t){return(typeof t!="string"||o.origin===t)&&!!o.data&&(typeof o.data!="object"||"postmate"in o.data)&&o.data.type===n&&!!y[o.data.postmate]}class P{constructor(t){this.parent=t.parent,this.frame=t.frame,this.child=t.child,this.childOrigin=t.childOrigin,this.events={},this.listener=e=>{if(!u(e,this.childOrigin))return;const{value:s={}}=e.data,{name:i,data:a}=s;e.data.postmate==="emit"&&i in this.events&&this.events[i].call(this,a)},this.parent.addEventListener("message",this.listener,!1)}get(t){return new l.Promise(e=>{const s=++d,i=a=>{a.data.uid===s&&a.data.postmate==="reply"&&(this.parent.removeEventListener("message",i,!1),e(a.data.value))};this.parent.addEventListener("message",i,!1),this.child.postMessage({postmate:"request",type:n,property:t,uid:s},this.childOrigin)})}call(t,e){this.child.postMessage({postmate:"call",type:n,property:t,data:e},this.childOrigin)}on(t,e){this.events[t]=e}destroy(){window.removeEventListener("message",this.listener,!1),this.frame.parentNode.removeChild(this.frame)}}class E{constructor(t){this.model=t.model,this.parent=t.parent,this.parentOrigin=t.parentOrigin,this.child=t.child,this.child.addEventListener("message",e=>{if(!u(e,this.parentOrigin))return;const{postmate:s,property:i,uid:a,data:c}=e.data,h=this.model[i];if(s!=="call"){const p=typeof h=="function"?h():h;l.Promise.resolve(p).then(f=>{e.source.postMessage({property:i,postmate:"reply",type:n,uid:a,value:f},e.origin)})}else i in this.model&&typeof h=="function"&&h(c)})}emit(t,e){this.parent.postMessage({postmate:"emit",type:n,value:{name:t,data:e}},this.parentOrigin)}}class l{constructor({container:t=document.body,model:e,url:s,name:i,classListArray:a=[]}){return this.parent=window,this.frame=document.createElement("iframe"),this.frame.name=i||"",this.frame.classList.add(...a),t.appendChild(this.frame),this.child=this.frame.contentWindow,this.model=e||{},this.sendHandshake(s)}sendHandshake(t){const e=(()=>{const a=document.createElement("a");a.href=t;const c=a.protocol.length>4?a.protocol:window.location.protocol,h=a.host.length?a.port==="80"||a.port==="443"?a.hostname:a.host:window.location.host;return a.origin||`${c}//${h}`})();let s=0,i;return new l.Promise((a,c)=>{const h=g=>{if(!u(g,e))return!1;g.data.postmate==="handshake-reply"?(clearInterval(i),this.parent.removeEventListener("message",h,!1),this.childOrigin=g.origin,a(new P(this))):c("Failed handshake")};this.parent.addEventListener("message",h,!1);const p=()=>{s++,this.child.postMessage({postmate:"handshake",type:n,model:this.model},e),s===5&&clearInterval(i)},f=()=>{p(),i=setInterval(p,500)};this.frame.onload=f,this.frame.attachEvent&&this.frame.attachEvent("onload",f),this.frame.src=t})}}class w{constructor(t){return this.child=window,this.model=t,this.parent=window.parent,this.sendHandshakeReply()}sendHandshakeReply(){return new l.Promise((t,e)=>{this.child.addEventListener("message",s=>{if(s.data.postmate){if(s.data.postmate!=="handshake")return e("Handshake Reply Failed");this.child.removeEventListener("message",this,!1),s.source.postMessage({postmate:"handshake-reply",type:n},s.origin),this.parentOrigin=s.origin;const i=s.data.model;i&&Object.keys(i).forEach(a=>{this.model[a]=i[a]}),t(new E(this))}},!1)})}}l.debug=!1,l.Promise=(()=>{try{return typeof window<"u"?window.Promise:Promise}catch{return Promise}})(),l.Model=w;class k{constructor(t){this.childPostmate=null,this.parentPostmate=null,this.isGetData=!1,this.getDataCllBack=null,window.frameElement?t.error({status:500,data:null,message:"未在一体化平台中运行"}):this.init(t)}init(t){const e=this;this.childPostmate=new l.Model({baseData(s){s=JSON.parse(s),e.isGetData?e.getDataCllBack&&e.getDataCllBack({status:200,message:"success",data:s}):t.success({status:200,message:"success",data:s}),e.isGetData=!1}}).then(s=>{e.parentPostmate=s,e.getData(),t.success({status:200,message:"success",data:{ChildPostmate:s}})}).catch(s=>{t.error({status:500,data:null,message:s})})}getData(t=null){if(!this.parentPostmate){t({status:500,message:"父页面未连接",data:null});return}t?(this.isGetData=!0,this.getDataCllBack=t):(this.isGetData=!1,this.getDataCllBack=null),this.parentPostmate.emit("requestBaseData")}}class D{constructor(t,e="",s=""){m(this,"postmateParent",null);m(this,"dataInfo",{loginInfo:null,token:"",isHideHeader:!0});m(this,"iframeEle","");m(this,"iframeUrl","");m(this,"handshake",null);this.dataInfo=t||this.dataInfo,this.iframeEle=e,this.iframeUrl=s,this.iframeEle&&this.iframeUrl&&this.init()}async init(t=""){this.postmateParent&&(this.postmateParent.destroy(),this.postmateParent=null);const e=typeof this.iframeEle=="function"?this.iframeEle():this.iframeEle;new l({container:e,url:this.iframeUrl}).then(i=>{this.postmateParent=i,i.on("requestBaseData",a=>{this.sendData()}),t&&t()})}setIframeEle(t){this.iframeEle=t,this.iframeEle&&this.iframeUrl&&this.init()}setIframeUrl(t){this.iframeUrl=t,this.iframeEle&&this.iframeUrl&&this.init()}sendData(){this.postmateParent&&this.postmateParent.call("baseData",JSON.stringify(this.dataInfo))}destroy(){this.postmateParent&&(this.postmateParent.destroy(),this.postmateParent=null)}}r.ChildPostmate=k,r.ParentPostmate=D,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
1
+ (function(r,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r["qlfy-postmate"]={}))})(this,function(r){"use strict";var C=Object.defineProperty;var M=(r,n,m)=>n in r?C(r,n,{enumerable:!0,configurable:!0,writable:!0,value:m}):r[n]=m;var d=(r,n,m)=>M(r,typeof n!="symbol"?n+"":n,m);const n="application/x-postmate-v1+json";let m=0;const y={handshake:1,"handshake-reply":1,call:1,emit:1,reply:1,request:1};function u(o,t){return(typeof t!="string"||o.origin===t)&&!!o.data&&(typeof o.data!="object"||"postmate"in o.data)&&o.data.type===n&&!!y[o.data.postmate]}class P{constructor(t){this.parent=t.parent,this.frame=t.frame,this.child=t.child,this.childOrigin=t.childOrigin,this.events={},this.listener=e=>{if(!u(e,this.childOrigin))return;const{value:s={}}=e.data,{name:i,data:a}=s;e.data.postmate==="emit"&&i in this.events&&this.events[i].call(this,a)},this.parent.addEventListener("message",this.listener,!1)}get(t){return new l.Promise(e=>{const s=++m,i=a=>{a.data.uid===s&&a.data.postmate==="reply"&&(this.parent.removeEventListener("message",i,!1),e(a.data.value))};this.parent.addEventListener("message",i,!1),this.child.postMessage({postmate:"request",type:n,property:t,uid:s},this.childOrigin)})}call(t,e){this.child.postMessage({postmate:"call",type:n,property:t,data:e},this.childOrigin)}on(t,e){this.events[t]=e}destroy(){window.removeEventListener("message",this.listener,!1),this.frame.parentNode.removeChild(this.frame)}}class w{constructor(t){this.model=t.model,this.parent=t.parent,this.parentOrigin=t.parentOrigin,this.child=t.child,this.child.addEventListener("message",e=>{if(!u(e,this.parentOrigin))return;const{postmate:s,property:i,uid:a,data:c}=e.data,h=this.model[i];if(s!=="call"){const p=typeof h=="function"?h():h;l.Promise.resolve(p).then(f=>{e.source.postMessage({property:i,postmate:"reply",type:n,uid:a,value:f},e.origin)})}else i in this.model&&typeof h=="function"&&h(c)})}emit(t,e){this.parent.postMessage({postmate:"emit",type:n,value:{name:t,data:e}},this.parentOrigin)}}class l{constructor({container:t=document.body,model:e,url:s,name:i,classListArray:a=[]}){return this.parent=window,this.frame=document.createElement("iframe"),this.frame.name=i||"",this.frame.classList.add(...a),t.appendChild(this.frame),this.child=this.frame.contentWindow,this.model=e||{},this.sendHandshake(s)}sendHandshake(t){const e=(()=>{const a=document.createElement("a");a.href=t;const c=a.protocol.length>4?a.protocol:window.location.protocol,h=a.host.length?a.port==="80"||a.port==="443"?a.hostname:a.host:window.location.host;return a.origin||`${c}//${h}`})();let s=0,i;return new l.Promise((a,c)=>{const h=g=>{if(!u(g,e))return!1;g.data.postmate==="handshake-reply"?(clearInterval(i),this.parent.removeEventListener("message",h,!1),this.childOrigin=g.origin,a(new P(this))):c("Failed handshake")};this.parent.addEventListener("message",h,!1);const p=()=>{s++,this.child.postMessage({postmate:"handshake",type:n,model:this.model},e),s===5&&clearInterval(i)},f=()=>{p(),i=setInterval(p,500)};this.frame.onload=f,this.frame.attachEvent&&this.frame.attachEvent("onload",f),this.frame.src=t})}}class E{constructor(t){return this.child=window,this.model=t,this.parent=window.parent,this.sendHandshakeReply()}sendHandshakeReply(){return new l.Promise((t,e)=>{this.child.addEventListener("message",s=>{if(s.data.postmate){if(s.data.postmate!=="handshake")return e("Handshake Reply Failed");this.child.removeEventListener("message",this,!1),s.source.postMessage({postmate:"handshake-reply",type:n},s.origin),this.parentOrigin=s.origin;const i=s.data.model;i&&Object.keys(i).forEach(a=>{this.model[a]=i[a]}),t(new w(this))}},!1)})}}l.debug=!1,l.Promise=(()=>{try{return typeof window<"u"?window.Promise:Promise}catch{return Promise}})(),l.Model=E;class k{constructor(t){d(this,"childPostmate",null);d(this,"parentPostmate",null);d(this,"isGetData",!1);d(this,"getDataCllBack",null);window.top!==window.self?this.init(t):t.error({status:500,data:null,message:"未在一体化平台中运行"})}init(t){const e=this;this.childPostmate=new l.Model({baseData(s){s=JSON.parse(s),e.isGetData?e.getDataCllBack&&e.getDataCllBack({status:200,message:"success",data:s}):t.success({status:200,message:"success",data:s}),e.isGetData=!1}}).then(s=>{e.parentPostmate=s,e.getData(),t.success({status:200,message:"success",data:{ChildPostmate:s}})}).catch(s=>{t.error({status:500,data:null,message:s})})}getData(t=null){if(!this.parentPostmate){t({status:500,message:"父页面未连接",data:null});return}t?(this.isGetData=!0,this.getDataCllBack=t):(this.isGetData=!1,this.getDataCllBack=null),this.parentPostmate.emit("requestBaseData")}}class D{constructor(t,e="",s=""){d(this,"postmateParent",null);d(this,"dataInfo",{loginInfo:null,token:"",isHideHeader:!0});d(this,"iframeEle","");d(this,"iframeUrl","");d(this,"handshake",null);this.dataInfo=t||this.dataInfo,this.iframeEle=e,this.iframeUrl=s,this.iframeEle&&this.iframeUrl&&this.init()}async init(t=""){this.postmateParent&&(this.postmateParent.destroy(),this.postmateParent=null);const e=typeof this.iframeEle=="function"?this.iframeEle():this.iframeEle;new l({container:e,url:this.iframeUrl}).then(i=>{this.postmateParent=i,i.on("requestBaseData",a=>{this.sendData()}),t&&t()})}setIframeEle(t){this.iframeEle=t,this.iframeEle&&this.iframeUrl&&this.init()}setIframeUrl(t){this.iframeUrl=t,this.iframeEle&&this.iframeUrl&&this.init()}sendData(){this.postmateParent&&this.postmateParent.call("baseData",JSON.stringify(this.dataInfo))}destroy(){this.postmateParent&&(this.postmateParent.destroy(),this.postmateParent=null)}}r.ChildPostmate=k,r.ParentPostmate=D,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qlfy-postmate",
3
- "version": "1.0.8",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "types": "lib/index.d.ts",
6
6
  "module": "lib/index.umd.js",
@@ -1,16 +0,0 @@
1
- /** 子类参数规范接口 */
2
- interface EventObj {
3
- error: (error: any) => void;
4
- success: (parentPostmate: any) => void;
5
- receive: (data: any) => void;
6
- }
7
- export default class ChildPostmate {
8
- childPostmate: any;
9
- parentPostmate: any;
10
- isGetData: boolean;
11
- getDataCllBack: Function | null;
12
- constructor(eventObj: EventObj);
13
- init(eventObj: EventObj): void;
14
- getData(callback?: any): void;
15
- }
16
- export {};