cozy-external-bridge 0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Cozy.io
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # cozy-external-bridge
2
+
3
+ This library allows communication between a container app and an app embedded in an iframe. It is used with [cozy-twakechat](https://github.com/cozy/cozy-twakechat/) and [cozy-twakemail](https://github.com/cozy/cozy-twakemail/)
4
+
5
+ ## For container app
6
+
7
+ Just add the `useExternalBridge` hook and it will :
8
+
9
+ - expose a `getContacts` method
10
+ - allow history syncing
11
+
12
+ ```
13
+ import { useExternalBridge } from 'cozy-external-bridge/container'
14
+
15
+ const App = () => {
16
+ useExternalBridge('https://chat.twake.app')
17
+ }
18
+ ```
19
+
20
+ ## For embedded app
21
+
22
+ Import `dist/embedded/bundle.js` script. If you are in the appropriate environment, it should add methods to the `window` object :
23
+
24
+ - window.\_isInsideCozy: () => boolean
25
+ - window.\_startHistorySyncing: () => void
26
+ - window.\_stopHistorySyncing: () => void
27
+ - window.\_getContacts: () => Promise<IoCozyContact>
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extractUrl = void 0;
7
+
8
+ var extractUrl = function extractUrl(url) {
9
+ if (url.startsWith('http')) {
10
+ var objectUrl = new URL(url);
11
+ return objectUrl.pathname + objectUrl.search + objectUrl.hash;
12
+ } else {
13
+ return url;
14
+ }
15
+ };
16
+
17
+ exports.extractUrl = extractUrl;
@@ -0,0 +1,15 @@
1
+ import { extractUrl } from './helpers'
2
+
3
+ describe('extractUrl', () => {
4
+ it('should extract pathname, hash, and search from a URL starting with http', () => {
5
+ const url = 'http://example.com/path#fragment?query=123'
6
+ const expected = '/path#fragment?query=123'
7
+ expect(extractUrl(url)).toBe(expected)
8
+ })
9
+
10
+ it('should return the URL unchanged if it does not start with http', () => {
11
+ const url = '/path?query=123#fragment'
12
+ const expected = '/path?query=123#fragment'
13
+ expect(extractUrl(url)).toBe(expected)
14
+ })
15
+ })
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useExternalBridge = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var Comlink = _interopRequireWildcard(require("comlink"));
15
+
16
+ var _react = require("react");
17
+
18
+ var _reactRouterDom = require("react-router-dom");
19
+
20
+ var _cozyClient = require("cozy-client");
21
+
22
+ var _helpers = require("./helpers");
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ /* eslint-disable no-console */
29
+ var getIframe = function getIframe() {
30
+ var iframe = document.getElementById('embeddedApp');
31
+
32
+ if (iframe === null) {
33
+ throw new Error('No iframe found');
34
+ }
35
+
36
+ return iframe;
37
+ }; // Initial redirection is necessary when we load a page from a direct link
38
+ // to load the iframe to the direct link
39
+
40
+
41
+ var useInitialRedirection = function useInitialRedirection() {
42
+ var location = (0, _reactRouterDom.useLocation)();
43
+ (0, _react.useEffect)(function () {
44
+ var iframe = getIframe();
45
+ var destUrl = new URL(iframe.src);
46
+ destUrl.pathname = location.pathname;
47
+ destUrl.hash = location.hash;
48
+ destUrl.search = location.search;
49
+ var currentIframeUrl = new URL(iframe.src);
50
+
51
+ if (destUrl.toString() !== currentIframeUrl.toString()) {
52
+ iframe.src = destUrl.toString();
53
+ }
54
+ }, []);
55
+ };
56
+
57
+ var useExternalBridge = function useExternalBridge(origin) {
58
+ var client = (0, _cozyClient.useClient)();
59
+ var navigate = (0, _reactRouterDom.useNavigate)();
60
+ useInitialRedirection();
61
+ (0, _react.useEffect)(function () {
62
+ if (!client) return;
63
+ var exposedMethods = {
64
+ // Proof of concepts of Twake <-> Cozy communication
65
+ getContacts: function () {
66
+ var _getContacts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
67
+ var _ref, data;
68
+
69
+ return _regenerator.default.wrap(function _callee$(_context) {
70
+ while (1) {
71
+ switch (_context.prev = _context.next) {
72
+ case 0:
73
+ _context.next = 2;
74
+ return client.query((0, _cozyClient.Q)('io.cozy.contacts'));
75
+
76
+ case 2:
77
+ _ref = _context.sent;
78
+ data = _ref.data;
79
+ return _context.abrupt("return", data);
80
+
81
+ case 5:
82
+ case "end":
83
+ return _context.stop();
84
+ }
85
+ }
86
+ }, _callee);
87
+ }));
88
+
89
+ function getContacts() {
90
+ return _getContacts.apply(this, arguments);
91
+ }
92
+
93
+ return getContacts;
94
+ }(),
95
+ // Proof of concepts of Twake <-> Cozy URL synchronization
96
+ updateHistory: function updateHistory(newUrl) {
97
+ var url = (0, _helpers.extractUrl)(newUrl);
98
+ console.log('🟢 Replacing route:', url);
99
+ navigate(url, {
100
+ replace: true
101
+ });
102
+ }
103
+ };
104
+ Comlink.expose(exposedMethods, Comlink.windowEndpoint(getIframe().contentWindow, self, origin));
105
+ }, [navigate, client, origin]);
106
+ };
107
+
108
+ exports.useExternalBridge = useExternalBridge;
@@ -0,0 +1,2 @@
1
+ (()=>{var t={7:function(t){function e(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){r(t);return}s.done?e(u):Promise.resolve(u).then(n,o)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise(function(o,i){var a=t.apply(r,n);function s(t){e(a,o,i,s,u,"next",t)}function u(t){e(a,o,i,s,u,"throw",t)}s(void 0)})}},t.exports.__esModule=!0,t.exports.default=t.exports},751:function(t){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports},604:function(t,e,r){var n=r(201).default;function o(){"use strict";t.exports=o=function(){return e},t.exports.__esModule=!0,t.exports.default=t.exports;var e={},r=Object.prototype,i=r.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o,i=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new _(n||[]);return i._invoke=(o="suspendedStart",function(e,n){if("executing"===o)throw Error("Generator is already running");if("completed"===o){if("throw"===e)throw n;return j()}for(a.method=e,a.arg=n;;){var i=a.delegate;if(i){var s=function t(e,r){var n=e.iterator[r.method];if(void 0===n){if(r.delegate=null,"throw"===r.method){if(e.iterator.return&&(r.method="return",r.arg=void 0,t(e,r),"throw"===r.method))return h;r.method="throw",r.arg=TypeError("The iterator does not provide a 'throw' method")}return h}var o=p(n,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,h;var i=o.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=void 0),r.delegate=null,h):i:(r.method="throw",r.arg=TypeError("iterator result is not an object"),r.delegate=null,h)}(i,a);if(s){if(s===h)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===o)throw o="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);o="executing";var u=p(t,r,a);if("normal"===u.type){if(o=a.done?"completed":"suspendedYield",u.arg===h)continue;return{value:u.arg,done:a.done}}"throw"===u.type&&(o="completed",a.method="throw",a.arg=u.arg)}}),i}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var h={};function d(){}function y(){}function v(){}var g={};l(g,s,function(){return this});var m=Object.getPrototypeOf,w=m&&m(m(O([])));w&&w!==r&&i.call(w,s)&&(g=w);var b=v.prototype=d.prototype=Object.create(g);function x(t){["next","throw","return"].forEach(function(e){l(t,e,function(t){return this._invoke(e,t)})})}function E(t,e){var r;this._invoke=function(o,a){function s(){return new e(function(r,s){!function r(o,a,s,u){var c=p(t[o],t,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?e.resolve(f.__await).then(function(t){r("next",t,s,u)},function(t){r("throw",t,s,u)}):e.resolve(f).then(function(t){l.value=t,s(l)},function(t){return r("throw",t,s,u)})}u(c.arg)}(o,a,r,s)})}return r=r?r.then(s,s):s()}}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function O(t){if(t){var e=t[s];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return n.next=n}}return{next:j}}function j(){return{value:void 0,done:!0}}return y.prototype=v,l(b,"constructor",v),l(v,"constructor",y),y.displayName=l(v,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,l(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},e.awrap=function(t){return{__await:t}},x(E.prototype),l(E.prototype,u,function(){return this}),e.AsyncIterator=E,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new E(f(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then(function(t){return t.done?t.value:a.next()})},x(b),l(b,c,"Generator"),l(b,s,function(){return this}),l(b,"toString",function(){return"[object Generator]"}),e.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=O,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(S),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(s&&u){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;S(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},201:function(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},434:function(t,e,r){var n=r(604)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},408:function(t,e,r){"use strict";r.r(e),r.d(e,{createEndpoint:()=>o,expose:()=>l,finalizer:()=>a,proxy:()=>b,proxyMarker:()=>n,releaseProxy:()=>i,transfer:()=>w,transferHandlers:()=>c,windowEndpoint:()=>x,wrap:()=>p});let n=Symbol("Comlink.proxy"),o=Symbol("Comlink.endpoint"),i=Symbol("Comlink.releaseProxy"),a=Symbol("Comlink.finalizer"),s=Symbol("Comlink.thrown"),u=t=>"object"==typeof t&&null!==t||"function"==typeof t,c=new Map([["proxy",{canHandle:t=>u(t)&&t[n],serialize(t){let{port1:e,port2:r}=new MessageChannel;return l(t,e),[r,[r]]},deserialize:t=>(t.start(),p(t))}],["throw",{canHandle:t=>u(t)&&s in t,serialize({value:t}){let e;return[t instanceof Error?{isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:{isError:!1,value:t},[]]},deserialize(t){if(t.isError)throw Object.assign(Error(t.value.message),t.value);throw t.value}}]]);function l(t,e=globalThis,r=["*"]){e.addEventListener("message",function n(o){let i;if(!o||!o.data)return;if(!function(t,e){for(let r of t)if(e===r||"*"===r||r instanceof RegExp&&r.test(e))return!0;return!1}(r,o.origin)){console.warn(`Invalid origin '${o.origin}' for comlink proxy`);return}let{id:u,type:c,path:p}=Object.assign({path:[]},o.data),h=(o.data.argumentList||[]).map(L);try{let e=p.slice(0,-1).reduce((t,e)=>t[e],t),r=p.reduce((t,e)=>t[e],t);switch(c){case"GET":i=r;break;case"SET":e[p.slice(-1)[0]]=L(o.data.value),i=!0;break;case"APPLY":i=r.apply(e,h);break;case"CONSTRUCT":{let t=new r(...h);i=b(t)}break;case"ENDPOINT":{let{port1:e,port2:r}=new MessageChannel;l(t,r),i=w(e,[e])}break;case"RELEASE":i=void 0;break;default:return}}catch(t){i={value:t,[s]:0}}Promise.resolve(i).catch(t=>({value:t,[s]:0})).then(r=>{let[o,i]=E(r);e.postMessage(Object.assign(Object.assign({},o),{id:u}),i),"RELEASE"===c&&(e.removeEventListener("message",n),f(e),a in t&&"function"==typeof t[a]&&t[a]())}).catch(t=>{let[r,n]=E({value:TypeError("Unserializable return value"),[s]:0});e.postMessage(Object.assign(Object.assign({},r),{id:u}),n)})}),e.start&&e.start()}function f(t){"MessagePort"===t.constructor.name&&t.close()}function p(t,e){return function t(e,r=[],n=function(){}){let a=!1,s=new Proxy(n,{get(n,o){if(h(a),o===i)return()=>{v&&v.unregister(s),d(e),a=!0};if("then"===o){if(0===r.length)return{then:()=>s};let t=S(e,{type:"GET",path:r.map(t=>t.toString())}).then(L);return t.then.bind(t)}return t(e,[...r,o])},set(t,n,o){h(a);let[i,s]=E(o);return S(e,{type:"SET",path:[...r,n].map(t=>t.toString()),value:i},s).then(L)},apply(n,i,s){h(a);let u=r[r.length-1];if(u===o)return S(e,{type:"ENDPOINT"}).then(L);if("bind"===u)return t(e,r.slice(0,-1));let[c,l]=g(s);return S(e,{type:"APPLY",path:r.map(t=>t.toString()),argumentList:c},l).then(L)},construct(t,n){h(a);let[o,i]=g(n);return S(e,{type:"CONSTRUCT",path:r.map(t=>t.toString()),argumentList:o},i).then(L)}});return!function(t,e){let r=(y.get(e)||0)+1;y.set(e,r),v&&v.register(t,e,t)}(s,e),s}(t,[],e)}function h(t){if(t)throw Error("Proxy has been released and is not useable")}function d(t){return S(t,{type:"RELEASE"}).then(()=>{f(t)})}let y=new WeakMap,v="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{let e=(y.get(t)||0)-1;y.set(t,e),0===e&&d(t)});function g(t){var e;let r=t.map(E);return[r.map(t=>t[0]),(e=r.map(t=>t[1]),Array.prototype.concat.apply([],e))]}let m=new WeakMap;function w(t,e){return m.set(t,e),t}function b(t){return Object.assign(t,{[n]:!0})}function x(t,e=globalThis,r="*"){return{postMessage:(e,n)=>t.postMessage(e,r,n),addEventListener:e.addEventListener.bind(e),removeEventListener:e.removeEventListener.bind(e)}}function E(t){for(let[e,r]of c)if(r.canHandle(t)){let[n,o]=r.serialize(t);return[{type:"HANDLER",name:e,value:n},o]}return[{type:"RAW",value:t},m.get(t)||[]]}function L(t){switch(t.type){case"HANDLER":return c.get(t.name).deserialize(t.value);case"RAW":return t.value}}function S(t,e,r){return new Promise(n=>{let o=[,,,,].fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-");t.addEventListener("message",function e(r){r.data&&r.data.id&&r.data.id===o&&(t.removeEventListener("message",e),n(r.data))}),t.start&&t.start(),t.postMessage(Object.assign({id:o},e),r)})}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.rv=()=>"1.2.7",r.ruid="bundler=rspack@1.2.7",(()=>{"use strict";var t,e=r(751),n=e(r(434)),o=e(r(7)),i=function(t,e){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=a(e);if(r&&r.has(t))return r.get(t);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&Object.prototype.hasOwnProperty.call(t,i)){var s=o?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=t[i]}return n.default=t,r&&r.set(t,n),n}(r(408));function a(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(a=function(t){return t?r:e})(t)}var s=document.referrer,u=function(){try{var t=new URL(s);return t.hostname.endsWith(".mycozy.cloud")||t.hostname.endsWith(".localhost")}catch(t){return!1}},c=history.pushState,l=history.pushState,f=function(){t.updateHistory(document.location.href)},p=function(){var e=(0,o.default)(n.default.mark(function e(){var r;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("\uD83D\uDFE3 Fetching contacts..."),e.next=3,t.getContacts();case 3:return r=e.sent,e.abrupt("return",r);case 5:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}();console.log("\uD83D\uDFE3 Trying to connect to",s),u()?(console.log("\uD83D\uDFE3 Inside Cozy!"),t=i.wrap(i.windowEndpoint(self.parent,self,s)),window._isInsideCozy=u,window._startHistorySyncing=function(){history.pushState=function(e,r,n){c.call(history,e,r,n),n&&t.updateHistory(n.toString())},history.replaceState=function(e,r,n){l.call(history,e,r,n),n&&t.updateHistory(n.toString())},window.addEventListener("popstate",f)},window._stopHistorySyncing=function(){history.pushState=c,history.replaceState=l,window.removeEventListener("popstate",f)},window._getContacts=p):console.log("\uD83D\uDFE3 Not inside Cozy...")})()})();
2
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"./embedded/bundle.js","sources":["webpack://cozy-external-bridge/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://cozy-external-bridge/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://cozy-external-bridge/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://cozy-external-bridge/./node_modules/@babel/runtime/helpers/typeof.js","webpack://cozy-external-bridge/./node_modules/@babel/runtime/regenerator/index.js","webpack://cozy-external-bridge/../../node_modules/comlink/dist/esm/comlink.mjs","webpack://cozy-external-bridge/./dist/embedded/index.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n return createProxy(ep, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar Comlink = _interopRequireWildcard(require(\"comlink\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/* eslint-disable no-console */\nvar documentReferrer = document.referrer;\n\nvar isInsideCozy = function isInsideCozy() {\n try {\n var documentReferrerUrl = new URL(documentReferrer);\n return documentReferrerUrl.hostname.endsWith('.mycozy.cloud') || documentReferrerUrl.hostname.endsWith('.localhost');\n } catch (_unused) {\n return false;\n }\n};\n\nvar availableMethods; // eslint-disable-next-line @typescript-eslint/unbound-method\n\nvar originalPushState = history.pushState; // eslint-disable-next-line @typescript-eslint/unbound-method\n\nvar originalReplaceState = history.pushState;\n\nvar onPopstate = function onPopstate() {\n availableMethods.updateHistory(document.location.href);\n};\n\nvar startHistorySyncing = function startHistorySyncing() {\n history.pushState = function (state, title, url) {\n originalPushState.call(history, state, title, url);\n\n if (url) {\n availableMethods.updateHistory(url.toString());\n }\n };\n\n history.replaceState = function (state, title, url) {\n originalReplaceState.call(history, state, title, url);\n\n if (url) {\n availableMethods.updateHistory(url.toString());\n }\n };\n\n window.addEventListener('popstate', onPopstate);\n};\n\nvar stopHistorySyncing = function stopHistorySyncing() {\n history.pushState = originalPushState;\n history.replaceState = originalReplaceState;\n window.removeEventListener('popstate', onPopstate);\n};\n\nvar getContacts = /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var contacts;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log('🟣 Fetching contacts...');\n _context.next = 3;\n return availableMethods.getContacts();\n\n case 3:\n contacts = _context.sent;\n return _context.abrupt(\"return\", contacts);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function getContacts() {\n return _ref.apply(this, arguments);\n };\n}();\n\nconsole.log('🟣 Trying to connect to', documentReferrer);\n\nif (isInsideCozy()) {\n console.log('🟣 Inside Cozy!');\n availableMethods = Comlink.wrap(Comlink.windowEndpoint(self.parent, self, documentReferrer)); // @ts-expect-error No type\n\n window._isInsideCozy = isInsideCozy; // @ts-expect-error No type\n\n window._startHistorySyncing = startHistorySyncing; // @ts-expect-error No type\n\n window._stopHistorySyncing = stopHistorySyncing; // @ts-expect-error No type\n\n window._getContacts = getContacts;\n} else {\n console.log('🟣 Not inside Cozy...');\n}"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","Promise","module","fn","self","args","arguments","err","undefined","obj","_typeof","_regeneratorRuntime","exports","Op","Object","hasOwn","$Symbol","Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","state","generator","protoGenerator","Generator","context","Context","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","TypeError","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","prototype","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","result","unwrapped","pushTryEntry","locs","entry","resetTryEntry","iterable","iteratorMethod","isNaN","i","next","genFun","ctor","iter","object","keys","skipTempReset","name","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","type","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","proxyMarker","createEndpoint","releaseProxy","finalizer","throwMarker","isObject","val","transferHandlers","Map","port1","port2","MessageChannel","expose","port","serialized","ep","allowedOrigins","callback","ev","returnValue","isAllowedOrigin","origin","allowedOrigin","RegExp","console","id","path","argumentList","fromWireValue","parent","prop","rawValue","proxy","transfer","wireValue","transferables","toWireValue","closeEndPoint","endpoint","target","createProxy","isProxyReleased","Proxy","_target","throwIfProxyReleased","proxyFinalizers","releaseEndpoint","r","requestResponseMessage","p","_thisArg","rawArgumentList","last","processArguments","registerProxy","newCount","proxyCounter","isReleased","WeakMap","FinalizationRegistry","arr","processed","v","Array","transferCache","transfers","windowEndpoint","w","targetOrigin","msg","handler","serializedValue","Math","Number","l","availableMethods","_interopRequireDefault","_regenerator","_asyncToGenerator2","Comlink","_interopRequireWildcard","nodeInterop","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","cacheBabelInterop","cacheNodeInterop","documentReferrer","document","isInsideCozy","documentReferrerUrl","URL","_unused","originalPushState","history","originalReplaceState","onPopstate","getContacts","_ref","_callee","contacts","_context","window","title","url"],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
9
+ var Comlink = _interopRequireWildcard(require("comlink"));
10
+
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+
15
+ /* eslint-disable no-console */
16
+ var documentReferrer = document.referrer;
17
+
18
+ var isInsideCozy = function isInsideCozy() {
19
+ try {
20
+ var documentReferrerUrl = new URL(documentReferrer);
21
+ return documentReferrerUrl.hostname.endsWith('.mycozy.cloud') || documentReferrerUrl.hostname.endsWith('.localhost');
22
+ } catch (_unused) {
23
+ return false;
24
+ }
25
+ };
26
+
27
+ var availableMethods; // eslint-disable-next-line @typescript-eslint/unbound-method
28
+
29
+ var originalPushState = history.pushState; // eslint-disable-next-line @typescript-eslint/unbound-method
30
+
31
+ var originalReplaceState = history.pushState;
32
+
33
+ var onPopstate = function onPopstate() {
34
+ availableMethods.updateHistory(document.location.href);
35
+ };
36
+
37
+ var startHistorySyncing = function startHistorySyncing() {
38
+ history.pushState = function (state, title, url) {
39
+ originalPushState.call(history, state, title, url);
40
+
41
+ if (url) {
42
+ availableMethods.updateHistory(url.toString());
43
+ }
44
+ };
45
+
46
+ history.replaceState = function (state, title, url) {
47
+ originalReplaceState.call(history, state, title, url);
48
+
49
+ if (url) {
50
+ availableMethods.updateHistory(url.toString());
51
+ }
52
+ };
53
+
54
+ window.addEventListener('popstate', onPopstate);
55
+ };
56
+
57
+ var stopHistorySyncing = function stopHistorySyncing() {
58
+ history.pushState = originalPushState;
59
+ history.replaceState = originalReplaceState;
60
+ window.removeEventListener('popstate', onPopstate);
61
+ };
62
+
63
+ var getContacts = /*#__PURE__*/function () {
64
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
65
+ var contacts;
66
+ return _regenerator.default.wrap(function _callee$(_context) {
67
+ while (1) {
68
+ switch (_context.prev = _context.next) {
69
+ case 0:
70
+ console.log('🟣 Fetching contacts...');
71
+ _context.next = 3;
72
+ return availableMethods.getContacts();
73
+
74
+ case 3:
75
+ contacts = _context.sent;
76
+ return _context.abrupt("return", contacts);
77
+
78
+ case 5:
79
+ case "end":
80
+ return _context.stop();
81
+ }
82
+ }
83
+ }, _callee);
84
+ }));
85
+
86
+ return function getContacts() {
87
+ return _ref.apply(this, arguments);
88
+ };
89
+ }();
90
+
91
+ console.log('🟣 Trying to connect to', documentReferrer);
92
+
93
+ if (isInsideCozy()) {
94
+ console.log('🟣 Inside Cozy!');
95
+ availableMethods = Comlink.wrap(Comlink.windowEndpoint(self.parent, self, documentReferrer)); // @ts-expect-error No type
96
+
97
+ window._isInsideCozy = isInsideCozy; // @ts-expect-error No type
98
+
99
+ window._startHistorySyncing = startHistorySyncing; // @ts-expect-error No type
100
+
101
+ window._stopHistorySyncing = stopHistorySyncing; // @ts-expect-error No type
102
+
103
+ window._getContacts = getContacts;
104
+ } else {
105
+ console.log('🟣 Not inside Cozy...');
106
+ }
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _container = require("./container");
8
+
9
+ Object.keys(_container).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _container[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _container[key];
16
+ }
17
+ });
18
+ });
19
+
20
+ var _embedded = require("./embedded");
21
+
22
+ Object.keys(_embedded).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _embedded[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _embedded[key];
29
+ }
30
+ });
31
+ });
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "cozy-external-bridge",
3
+ "description": "Library allows communication between a container app and an app embedded in an iframe",
4
+ "version": "0.1.0",
5
+ "author": {
6
+ "name": "Cozy Cloud",
7
+ "url": "https://github.com/cozy"
8
+ },
9
+ "bugs": {
10
+ "url": "https://github.com/cozy/cozy-libs/issues"
11
+ },
12
+ "dependencies": {
13
+ "comlink": "4.4.1"
14
+ },
15
+ "peerDependencies": {
16
+ "cozy-client": ">=54.0.0",
17
+ "react": ">=16.12.0",
18
+ "react-dom": ">=16.12.0",
19
+ "react-router-dom": ">=6.14.2"
20
+ },
21
+ "devDependencies": {
22
+ "@babel/core": "7.16.12",
23
+ "@rspack/cli": "^1.2.7",
24
+ "@rspack/core": "^1.2.7",
25
+ "@testing-library/react": "10.4.9",
26
+ "@testing-library/react-hooks": "7.0.2",
27
+ "babel-plugin-module-resolver": "^4.0.0",
28
+ "babel-plugin-tsconfig-paths": "^1.0.3",
29
+ "babel-preset-cozy-app": "^2.8.1",
30
+ "cozy-client": "^54.0.0",
31
+ "jest": "26.6.3",
32
+ "react": "16.12.0",
33
+ "react-dom": "16.12.0",
34
+ "react-router-dom": "6.14.2",
35
+ "typescript": "5.5.2"
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "homepage": "https://github.com/cozy/cozy-libs/packages/cozy-external-bridge",
41
+ "keywords": [
42
+ "cozy"
43
+ ],
44
+ "license": "MIT",
45
+ "main": "dist/index.js",
46
+ "exports": {
47
+ ".": "./dist/index.js",
48
+ "./container": "./dist/container/index.js",
49
+ "./embedded": "./dist/embedded/bundle.js"
50
+ },
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/cozy/cozy-libs.git",
54
+ "directory": "packages/cozy-external-bridge"
55
+ },
56
+ "scripts": {
57
+ "build": "yarn build:clean && yarn build:types && babel --extensions .ts,.tsx,.js,.jsx --ignore '**/*.spec.tsx','**/*.spec.ts','**/*.d.ts' ./src -d ./dist --copy-files && yarn build:lib",
58
+ "build:clean": "rm -rf ./dist",
59
+ "build:types": "tsc -p tsconfig-build.json",
60
+ "build:lib": "rspack build",
61
+ "prepublishOnly": "yarn build",
62
+ "test": "jest --config=./tests/jest.config.js"
63
+ },
64
+ "types": "dist/index.d.ts",
65
+ "gitHead": "5f102caed7b799da9ebdd73157c99fb706f7f818"
66
+ }