Skip to content

Commit

Permalink
feat: Blueframe support (#276)
Browse files Browse the repository at this point in the history
  • Loading branch information
rentallect authored Mar 31, 2024
1 parent 9b8236f commit 777cf04
Show file tree
Hide file tree
Showing 6 changed files with 169 additions and 19 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
"@auth0/auth0-spa-js": "^2.0.4",
"@azure/msal-browser": "^2.38.0",
"@babel/runtime": "^7.17.9",
"@openziti/ziti-browzer-core": "^0.39.2",
"@openziti/ziti-browzer-core": "^0.40.0",
"bowser": "^2.11.0",
"cookie-interceptor": "^1.0.0",
"core-js": "^3.22.8",
Expand Down
53 changes: 51 additions & 2 deletions src/http/ziti-dummy-websocket-wrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ class ZitiDummyWebSocketWrapper extends EventEmitter {
if (self.onopen) {
self.onopen(event);
}
self.emit(event);
if (self._events.open) {
self._events.open(event);
} else {
self.emit(event);
}
});

self.innerWebSocket.addEventListener('close', (event) => {
Expand All @@ -93,7 +97,11 @@ class ZitiDummyWebSocketWrapper extends EventEmitter {
if (self.onmessage) {
self.onmessage(event);
}
self.emit(event);
if (self._events.message) {
self._events.message(event);
} else {
self.emit(event);
}
});

}, 1, this);
Expand Down Expand Up @@ -140,8 +148,49 @@ class ZitiDummyWebSocketWrapper extends EventEmitter {
this.innerWebSocket.send(data);
}

addEventListener(type, listener, options) {
this.addListener(type, listener);
}

}

['open', 'error', 'close', 'message'].forEach((method) => {
Object.defineProperty(ZitiDummyWebSocketWrapper.prototype, `on${method}`, {
/**
* Return the listener of the event.
*
* @return {(Function|undefined)} The event listener or `undefined`
* @public
*/
get() {
const listeners = this.listeners(method);
for (let i = 0; i < listeners.length; i++) {
if (listeners[i]._listener) return listeners[i]._listener;
}

return undefined;
},
/**
* Add a listener for the event.
*
* @param {Function} listener The listener to add
* @public
*/
set(listener) {
const listeners = this.listeners(method);
for (let i = 0; i < listeners.length; i++) {
//
// Remove only the listeners added via `EventTarget.addEventListener`.
//
if (listeners[i]._listener) this.removeListener(method, listeners[i]);
}
this.addEventListener(method, listener);
}
});
});




export {
ZitiDummyWebSocketWrapper
Expand Down
94 changes: 94 additions & 0 deletions src/http/ziti-event-wrapper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/*
Copyright NetFoundry, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/


/**
* ZitiProgressEventWrapper
*
*/
class ZitiProgressEventWrapper extends Event {

constructor(type) {
super(type);
}

get bubbles() {
return true;
}

get cancelable() {
return false;
}

get composed() {
return true;
}

get target() {
return this._target;
}
set target(target) {
this._target = target;
}

get currentTarget() {
return this._currentTarget;
}
set currentTarget(currentTarget) {
this._currentTarget = currentTarget;
}

get loaded() {
return this._loaded;
}
set loaded(loaded) {
this._loaded = loaded;
}

get status() {
return this._status;
}
set status(status) {
this._status = status;
}

get success() {
return this._success;
}
set success(success) {
this._success = success;
}

get responseType() {
return this._responseType;
}
set responseType(responseType) {
this._responseType = responseType;
}

get responseText() {
return this._responseText;
}
set responseText(responseText) {
this._responseText = responseText;
}

}


export {
ZitiProgressEventWrapper
};
24 changes: 12 additions & 12 deletions src/http/ziti-xhr.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ limitations under the License.
*/

import { isEqual } from "lodash-es";
import { ZitiProgressEventWrapper } from './ziti-event-wrapper';

function ZitiXMLHttpRequest () {

Expand Down Expand Up @@ -459,18 +460,17 @@ function ZitiXMLHttpRequest () {

if (self.readyState === self.DONE && !errorFlag) {

let progressEvent = {
currentTarget: self,
target: self,
loaded: true,
status: self.status,
success: (self.status == 200) ? true : false,
responseType: self.responseType,
responseText: self.responseText,
type: "load"
}

self.dispatchEvent(progressEvent);
let pe = new ZitiProgressEventWrapper("load", {
loaded: true
});
pe.currentTarget = self;
pe.target = self;
pe.status = self.status;
pe.success = (self.status == 200) ? true : false;
pe.responseType = self.responseType;
pe.responseText= self.responseText;

self.dispatchEvent(pe);
// self.dispatchEvent("load");
self.dispatchEvent("loadend");
}
Expand Down
7 changes: 7 additions & 0 deletions src/runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import { defaultOptions } from './options'
import { ZBR_CONSTANTS } from './constants';
import { ZitiXMLHttpRequest } from './http/ziti-xhr';
import { ZitiDummyWebSocketWrapper } from './http/ziti-dummy-websocket-wrapper';
import { ZitiProgressEventWrapper } from './http/ziti-event-wrapper';
import { buildInfo } from './buildInfo'
import { ZitiBrowzerLocalStorage } from './utils/localstorage';
import { Auth0Client } from '@auth0/auth0-spa-js';
Expand Down Expand Up @@ -2358,6 +2359,11 @@ const zitiFetch = async ( urlObj, opts ) => {
}
}

if (opts && opts.method && isEqual(opts.method, 'GET')) {
if (!isUndefined(opts.body)) {
opts.body = undefined;
}
}
return window._ziti_realFetch(urlObj, opts);

if (url.match( regexZBWASM )) { // the request seeks z-b-r/wasm
Expand Down Expand Up @@ -2579,3 +2585,4 @@ window.fetch = zitiFetch;
window.XMLHttpRequest = ZitiXMLHttpRequest;
window.document.zitidomain = zitiDocumentDomain;
window.WebSocket = ZitiDummyWebSocketWrapper;
window.ProgressEvent = ZitiProgressEventWrapper;
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1200,10 +1200,10 @@
"@types/emscripten" "^1.39.6"
"@wasmer/wasi" "^1.0.2"

"@openziti/ziti-browzer-core@^0.39.2":
version "0.39.2"
resolved "https://registry.yarnpkg.com/@openziti/ziti-browzer-core/-/ziti-browzer-core-0.39.2.tgz#61fbac2cf911516c13c338cec67e1e60c4c936a3"
integrity sha512-oheYyxbk6KPtZW20hj01bOj8UO+pp/r1fKAT8VRDUcGSo+hqLyFDV6CcQ80A6JcAXFRO5wZE04yraHEjlbXZvg==
"@openziti/ziti-browzer-core@^0.40.0":
version "0.40.0"
resolved "https://registry.yarnpkg.com/@openziti/ziti-browzer-core/-/ziti-browzer-core-0.40.0.tgz#699c4a70be9d9c8bc0ba8c3f8d269dff846fbd70"
integrity sha512-bonpsIIbXdBhQHnRONW7zPEgiwFEILwzoe9VsMhPcSRkr1wQbLkZkdAMJYqIKw6Bg2Uq9GMsbD9KpAjtGML0Lg==
dependencies:
"@openziti/libcrypto-js" "^0.19.0"
"@openziti/ziti-browzer-edge-client" "^0.6.2"
Expand Down

0 comments on commit 777cf04

Please sign in to comment.