@wandelbots/nova-js 3.5.3 → 3.5.4-pr.dev-verifydeps.251.76e86c6
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/dist/{AutoReconnectingWebsocket-By6EZkXv.d.mts → AutoReconnectingWebsocket-BgMrjNxO.d.mts} +1 -2
- package/dist/AutoReconnectingWebsocket-BgMrjNxO.d.mts.map +1 -0
- package/dist/{AutoReconnectingWebsocket-dO-Xkvgo.d.cts → AutoReconnectingWebsocket-COmdtugu.d.cts} +1 -2
- package/dist/AutoReconnectingWebsocket-COmdtugu.d.cts.map +1 -0
- package/dist/{LoginWithAuth0-BAGhME4k.mjs → LoginWithAuth0-CEUVGw1-.mjs} +2 -6
- package/dist/{LoginWithAuth0-BAGhME4k.mjs.map → LoginWithAuth0-CEUVGw1-.mjs.map} +1 -1
- package/dist/{LoginWithAuth0-qpkGkrJo.cjs → LoginWithAuth0-DHgYqs1M.cjs} +84 -93
- package/dist/{LoginWithAuth0-qpkGkrJo.cjs.map → LoginWithAuth0-DHgYqs1M.cjs.map} +1 -1
- package/dist/{NovaClient-CZDpg0Pn.d.cts → NovaClient-36BPI1Yp.d.cts} +4 -7
- package/dist/NovaClient-36BPI1Yp.d.cts.map +1 -0
- package/dist/{NovaClient-D8C3LxqM.d.mts → NovaClient-BabUDOEg.d.mts} +4 -7
- package/dist/NovaClient-BabUDOEg.d.mts.map +1 -0
- package/dist/{NovaClient-DImFdEQS.mjs → NovaClient-D9uLoAgV.mjs} +5 -13
- package/dist/NovaClient-D9uLoAgV.mjs.map +1 -0
- package/dist/{NovaClient-CKpbwv53.cjs → NovaClient-Db0vg1kb.cjs} +35 -43
- package/dist/NovaClient-Db0vg1kb.cjs.map +1 -0
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -4
- package/dist/index.mjs.map +1 -1
- package/dist/lib/v1/index.cjs +17 -17
- package/dist/lib/v1/index.cjs.map +1 -1
- package/dist/lib/v1/index.d.cts +3 -3
- package/dist/lib/v1/index.d.cts.map +1 -1
- package/dist/lib/v1/index.d.mts +3 -3
- package/dist/lib/v1/index.d.mts.map +1 -1
- package/dist/lib/v1/index.mjs +11 -14
- package/dist/lib/v1/index.mjs.map +1 -1
- package/dist/lib/v2/index.cjs +11 -19
- package/dist/lib/v2/index.cjs.map +1 -1
- package/dist/lib/v2/index.d.cts +1 -1
- package/dist/lib/v2/index.d.cts.map +1 -1
- package/dist/lib/v2/index.d.mts +1 -1
- package/dist/lib/v2/index.d.mts.map +1 -1
- package/dist/lib/v2/index.mjs +5 -16
- package/dist/lib/v2/index.mjs.map +1 -1
- package/package.json +21 -15
- package/dist/AutoReconnectingWebsocket-By6EZkXv.d.mts.map +0 -1
- package/dist/AutoReconnectingWebsocket-dO-Xkvgo.d.cts.map +0 -1
- package/dist/NovaClient-CKpbwv53.cjs.map +0 -1
- package/dist/NovaClient-CZDpg0Pn.d.cts.map +0 -1
- package/dist/NovaClient-D8C3LxqM.d.mts.map +0 -1
- package/dist/NovaClient-DImFdEQS.mjs.map +0 -1
package/dist/{AutoReconnectingWebsocket-By6EZkXv.d.mts → AutoReconnectingWebsocket-BgMrjNxO.d.mts}
RENAMED
|
@@ -2,7 +2,6 @@ import ReconnectingWebSocket from "reconnecting-websocket";
|
|
|
2
2
|
import { AxiosResponse, InternalAxiosRequestConfig } from "axios";
|
|
3
3
|
|
|
4
4
|
//#region src/lib/v1/mock/MockNovaInstance.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Ultra-simplified mock Nova server for testing stuff
|
|
8
7
|
*/
|
|
@@ -66,4 +65,4 @@ declare class AutoReconnectingWebsocket extends ReconnectingWebSocket {
|
|
|
66
65
|
}
|
|
67
66
|
//#endregion
|
|
68
67
|
export { MockNovaInstance as n, MockNovaInstance$1 as r, AutoReconnectingWebsocket as t };
|
|
69
|
-
//# sourceMappingURL=AutoReconnectingWebsocket-
|
|
68
|
+
//# sourceMappingURL=AutoReconnectingWebsocket-BgMrjNxO.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoReconnectingWebsocket-BgMrjNxO.d.mts","names":[],"sources":["../src/lib/v1/mock/MockNovaInstance.ts","../src/lib/v2/mock/MockNovaInstance.ts","../src/lib/AutoReconnectingWebsocket.ts"],"mappings":";;;;;;AAeA;cAAa,kBAAA;EAAA,SACF,WAAA,EAAa,yBAAA;EAEhB,gBAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,aAAA;EAg8BX,yBAAA,CAA0B,MAAA,EAAQ,yBAAA;EAkOlC,sBAAA,CAAuB,MAAA,EAAQ,yBAAA,EAA2B,OAAA;AAAA;;;;;AAvqC5D;cCAa,gBAAA;EAAA,SACF,WAAA,EAAa,yBAAA;EAEhB,gBAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,aAAA;EAyCX,yBAAA,CAA0B,MAAA,EAAQ,yBAAA;EA+BlC,sBAAA,CAAuB,MAAA,EAAQ,yBAAA,EAA2B,OAAA;AAAA;;;cCxF/C,yBAAA,SAAkC,qBAAA;EAAA,SAOlC,IAAA;IACP,IAAA,GAAO,kBAAA,GAAsB,gBAAA;IAC7B,SAAA;EAAA;EARJ,oBAAA,GAAuB,YAAA;EACvB,SAAA;EACA,QAAA;cAGE,SAAA,UACS,IAAA;IACP,IAAA,GAAO,kBAAA,GAAsB,gBAAA;IAC7B,SAAA;EAAA;EA4CJ,SAAA,CAAU,SAAA;EAMV,QAAA,CAAS,IAAA;EF7CH;;;;EEyDN,OAAA,CAAA;EFy4BA;;;EE93BM,MAAA,CAAA,GAAM,OAAA;EFgmCmB;;;EEllCzB,MAAA,CAAA,GAAM,OAAA;EFklC6D;;;;ACvqC3E;ECqGQ,YAAA,CAAA,GAAY,OAAA,CAAA,YAAA;;;;;EA4BZ,WAAA,CAAA,GAAW,OAAA,CAAA,YAAA;AAAA"}
|
package/dist/{AutoReconnectingWebsocket-dO-Xkvgo.d.cts → AutoReconnectingWebsocket-COmdtugu.d.cts}
RENAMED
|
@@ -2,7 +2,6 @@ import ReconnectingWebSocket from "reconnecting-websocket";
|
|
|
2
2
|
import { AxiosResponse, InternalAxiosRequestConfig } from "axios";
|
|
3
3
|
|
|
4
4
|
//#region src/lib/v1/mock/MockNovaInstance.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Ultra-simplified mock Nova server for testing stuff
|
|
8
7
|
*/
|
|
@@ -66,4 +65,4 @@ declare class AutoReconnectingWebsocket extends ReconnectingWebSocket {
|
|
|
66
65
|
}
|
|
67
66
|
//#endregion
|
|
68
67
|
export { MockNovaInstance as n, MockNovaInstance$1 as r, AutoReconnectingWebsocket as t };
|
|
69
|
-
//# sourceMappingURL=AutoReconnectingWebsocket-
|
|
68
|
+
//# sourceMappingURL=AutoReconnectingWebsocket-COmdtugu.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoReconnectingWebsocket-COmdtugu.d.cts","names":[],"sources":["../src/lib/v1/mock/MockNovaInstance.ts","../src/lib/v2/mock/MockNovaInstance.ts","../src/lib/AutoReconnectingWebsocket.ts"],"mappings":";;;;;;AAeA;cAAa,kBAAA;EAAA,SACF,WAAA,EAAa,yBAAA;EAEhB,gBAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,aAAA;EAg8BX,yBAAA,CAA0B,MAAA,EAAQ,yBAAA;EAkOlC,sBAAA,CAAuB,MAAA,EAAQ,yBAAA,EAA2B,OAAA;AAAA;;;;;AAvqC5D;cCAa,gBAAA;EAAA,SACF,WAAA,EAAa,yBAAA;EAEhB,gBAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,aAAA;EAyCX,yBAAA,CAA0B,MAAA,EAAQ,yBAAA;EA+BlC,sBAAA,CAAuB,MAAA,EAAQ,yBAAA,EAA2B,OAAA;AAAA;;;cCxF/C,yBAAA,SAAkC,qBAAA;EAAA,SAOlC,IAAA;IACP,IAAA,GAAO,kBAAA,GAAsB,gBAAA;IAC7B,SAAA;EAAA;EARJ,oBAAA,GAAuB,YAAA;EACvB,SAAA;EACA,QAAA;cAGE,SAAA,UACS,IAAA;IACP,IAAA,GAAO,kBAAA,GAAsB,gBAAA;IAC7B,SAAA;EAAA;EA4CJ,SAAA,CAAU,SAAA;EAMV,QAAA,CAAS,IAAA;EF7CH;;;;EEyDN,OAAA,CAAA;EFy4BA;;;EE93BM,MAAA,CAAA,GAAM,OAAA;EFgmCmB;;;EEllCzB,MAAA,CAAA,GAAM,OAAA;EFklC6D;;;;ACvqC3E;ECqGQ,YAAA,CAAA,GAAY,OAAA,CAAA,YAAA;;;;;EA4BZ,WAAA,CAAA,GAAW,OAAA,CAAA,YAAA;AAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ReconnectingWebSocket from "reconnecting-websocket";
|
|
2
|
-
|
|
3
2
|
//#region src/lib/AutoReconnectingWebsocket.ts
|
|
4
3
|
var AutoReconnectingWebsocket = class extends ReconnectingWebSocket {
|
|
5
4
|
constructor(targetUrl, opts = {}) {
|
|
@@ -113,7 +112,6 @@ var AutoReconnectingWebsocket = class extends ReconnectingWebSocket {
|
|
|
113
112
|
});
|
|
114
113
|
}
|
|
115
114
|
};
|
|
116
|
-
|
|
117
115
|
//#endregion
|
|
118
116
|
//#region src/lib/availableStorage.ts
|
|
119
117
|
/**
|
|
@@ -152,7 +150,6 @@ var AvailableStorage = class {
|
|
|
152
150
|
}
|
|
153
151
|
};
|
|
154
152
|
const availableStorage = new AvailableStorage();
|
|
155
|
-
|
|
156
153
|
//#endregion
|
|
157
154
|
//#region src/lib/converters.ts
|
|
158
155
|
/**
|
|
@@ -237,7 +234,6 @@ const XYZ_TO_VECTOR = {
|
|
|
237
234
|
y: 1,
|
|
238
235
|
z: 2
|
|
239
236
|
};
|
|
240
|
-
|
|
241
237
|
//#endregion
|
|
242
238
|
//#region src/LoginWithAuth0.ts
|
|
243
239
|
/**
|
|
@@ -295,7 +291,7 @@ const loginWithAuth0 = async (instanceUrl) => {
|
|
|
295
291
|
} else await auth0Client.loginWithRedirect();
|
|
296
292
|
return await auth0Client.getTokenSilently();
|
|
297
293
|
};
|
|
298
|
-
|
|
299
294
|
//#endregion
|
|
300
295
|
export { isSameCoordinateSystem as a, parseUrl as c, tryParseUrl as d, tryStringifyJson as f, degreesToRadians as i, radiansToDegrees as l, AutoReconnectingWebsocket as m, loginWithAuth0 as n, makeUrlQueryString as o, availableStorage as p, XYZ_TO_VECTOR as r, parseNovaInstanceUrl as s, getAuth0Config as t, tryParseJson as u };
|
|
301
|
-
|
|
296
|
+
|
|
297
|
+
//# sourceMappingURL=LoginWithAuth0-CEUVGw1-.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginWithAuth0-BAGhME4k.mjs","names":[],"sources":["../src/lib/AutoReconnectingWebsocket.ts","../src/lib/availableStorage.ts","../src/lib/converters.ts","../src/LoginWithAuth0.ts"],"sourcesContent":["import ReconnectingWebSocket, { type ErrorEvent } from \"reconnecting-websocket\"\nimport type * as v1 from \"./v1/mock/MockNovaInstance\"\nimport type * as v2 from \"./v2/mock/MockNovaInstance\"\n\nexport class AutoReconnectingWebsocket extends ReconnectingWebSocket {\n receivedFirstMessage?: MessageEvent\n targetUrl: string\n disposed = false\n\n constructor(\n targetUrl: string,\n readonly opts: {\n mock?: v1.MockNovaInstance | v2.MockNovaInstance\n onDispose?: () => void\n } = {},\n ) {\n console.log(\"Opening websocket to\", targetUrl)\n\n super(() => this.targetUrl || targetUrl, undefined, {\n startClosed: true,\n })\n\n // Reconnecting websocket doesn't set this properly with startClosed\n Object.defineProperty(this, \"url\", {\n get() {\n return this.targetUrl\n },\n })\n\n this.targetUrl = targetUrl\n\n this.addEventListener(\"open\", () => {\n console.log(`Websocket to ${this.url} opened`)\n })\n\n this.addEventListener(\"message\", (ev) => {\n if (!this.receivedFirstMessage) {\n this.receivedFirstMessage = ev\n }\n })\n\n this.addEventListener(\"close\", () => {\n console.log(`Websocket to ${this.url} closed`)\n })\n\n const origReconnect = this.reconnect\n this.reconnect = () => {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketConnection(this)\n } else {\n origReconnect.apply(this)\n }\n }\n\n this.reconnect()\n }\n\n changeUrl(targetUrl: string) {\n this.receivedFirstMessage = undefined\n this.targetUrl = targetUrl\n this.reconnect()\n }\n\n sendJson(data: unknown) {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketMessage(this, JSON.stringify(data))\n } else {\n this.send(JSON.stringify(data))\n }\n }\n\n /**\n * Permanently close this websocket and indicate that\n * this object should not be used again.\n **/\n dispose() {\n this.close()\n this.disposed = true\n if (this.opts.onDispose) {\n this.opts.onDispose()\n }\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the OPEN state. */\n async opened() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.OPEN) {\n resolve()\n } else {\n this.addEventListener(\"open\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the CLOSED state. */\n async closed() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.CLOSED) {\n resolve()\n } else {\n this.addEventListener(\"close\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves when the first message\n * is received from the websocket. Resolves immediately if\n * the first message has already been received.\n */\n async firstMessage() {\n if (this.receivedFirstMessage) {\n return this.receivedFirstMessage\n }\n\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.receivedFirstMessage = ev\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n\n /**\n * Returns a promise that resolves when the next message\n * is received from the websocket.\n */\n async nextMessage() {\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n}\n","/**\n * Safety wrapper around browser localStorage providing context availability\n * checks and JSON parsing\n */\nclass AvailableStorage {\n available = typeof window !== \"undefined\" && !!window.localStorage\n\n getJSON<T>(key: string): Partial<T> | null {\n if (!this.available) return null\n\n const result = window.localStorage.getItem(key)\n if (result === null) return null\n\n try {\n return JSON.parse(result)\n } catch (err) {\n return null\n }\n }\n\n setJSON(key: string, obj: unknown) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, JSON.stringify(obj))\n }\n\n delete(key: string) {\n if (!this.available) return null\n\n window.localStorage.removeItem(key)\n }\n\n setString(key: string, value: string) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, value)\n }\n\n getString(key: string): string | null {\n if (!this.available) return null\n\n return window.localStorage.getItem(key)\n }\n}\n\nexport const availableStorage = new AvailableStorage()\n","export type URLParseOptions = {\n /**\n * Ignore any scheme in the input string and force this scheme instead.\n */\n scheme?: \"http\" | \"https\"\n /**\n * If the input string does not include a scheme, use this as the default\n * scheme.\n */\n defaultScheme?: \"http\" | \"https\"\n}\n\n/**\n * Parse a string as a URL, with options to enforce or default the scheme.\n */\nexport function parseUrl(url: string, options: URLParseOptions = {}): URL {\n const { scheme, defaultScheme } = options\n\n const schemeRegex = /^[a-zA-Z]+:\\/\\//\n\n if (scheme) {\n // Force the scheme by removing any existing scheme and prepending the desired one\n url = url.replace(schemeRegex, \"\")\n url = `${scheme}://${url}`\n } else if (defaultScheme && !schemeRegex.test(url)) {\n // No scheme is present, add the default one\n url = `${defaultScheme}://${url}`\n }\n\n return new URL(url)\n}\n\n/**\n * Attempt to parse a string as a URL; return undefined if we can't\n */\nexport function tryParseUrl(\n url: string,\n options: URLParseOptions = {},\n): URL | undefined {\n try {\n return parseUrl(url, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Permissively parse a NOVA instance URL from a config variable.\n * If scheme is not specified, defaults to https for *.wandelbots.io hosts,\n * and http otherwise.\n * Throws an error if a valid URL could not be determined.\n */\nexport function parseNovaInstanceUrl(url: string): URL {\n const testUrl = tryParseUrl(url, { defaultScheme: \"http\" })\n if (testUrl?.host.endsWith(\".wandelbots.io\")) {\n return parseUrl(url, { defaultScheme: \"https\" })\n } else {\n return parseUrl(url, { defaultScheme: \"http\" })\n }\n}\n\n/** Try to parse something as JSON; return undefined if we can't */\n// biome-ignore lint/suspicious/noExplicitAny: it's json\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\n/** Try to turn something into JSON; return undefined if we can't */\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n\n/**\n * Converts object parameters to query string.\n * e.g. { a: \"1\", b: \"2\" } => \"?a=1&b=2\"\n * {} => \"\"\n */\nexport function makeUrlQueryString(obj: Record<string, string>): string {\n const str = new URLSearchParams(obj).toString()\n return str ? `?${str}` : \"\"\n}\n\n/** Convert radians to degrees */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\n/** Convert degrees to radians */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\n/**\n * Check for coordinate system id equivalence, accounting for the \"world\" default\n * on empty/undefined values.\n */\nexport function isSameCoordinateSystem(\n firstCoordSystem: string | undefined,\n secondCoordSystem: string | undefined,\n) {\n if (!firstCoordSystem) firstCoordSystem = \"world\"\n if (!secondCoordSystem) secondCoordSystem = \"world\"\n\n return firstCoordSystem === secondCoordSystem\n}\n\n/**\n * Helpful const for converting {x, y, z} to [x, y, z] and vice versa\n */\nexport const XYZ_TO_VECTOR = { x: 0, y: 1, z: 2 }\n","/**\n * Mapping of stages to Auth0 configurations.\n * The client ids are public identifiers for a specific auth0 application\n * and are safe to include in client-side code.\n * https://auth0.com/docs/get-started/applications/application-settings\n */\nconst auth0ConfigMap = {\n dev: {\n domain: `https://auth.portal.dev.wandelbots.io`,\n clientId: \"fLbJD0RLp5r2Dpucm5j8BjwMR6Hunfha\",\n },\n stg: {\n domain: `https://auth.portal.stg.wandelbots.io`,\n clientId: \"joVDeD9e786WzFNSGCqoVq7HNkWt5j6s\",\n },\n prod: {\n domain: `https://auth.portal.wandelbots.io`,\n clientId: \"J7WJUi38xVQdJAEBNRT9Xw1b0fXDb4J2\",\n },\n}\n\n/** Determine which Auth0 configuration to use based on instance URL */\nexport const getAuth0Config = (instanceUrl: URL) => {\n if (instanceUrl.host.endsWith(\".dev.wandelbots.io\")) return auth0ConfigMap.dev\n if (instanceUrl.host.endsWith(\".stg.wandelbots.io\")) return auth0ConfigMap.stg\n if (instanceUrl.host.endsWith(\".wandelbots.io\")) return auth0ConfigMap.prod\n throw new Error(\n `Unable to authenticate with NOVA instance \"${instanceUrl}\". Auth0 login is only supported for cloud instances with hosts of the form \"**.wandelbots.io\".`,\n )\n}\n\n/**\n * Initializes Auth0 login process using redirect if necessary and retrieves an access token.\n * Returns null when an access token should not be needed to authenticate (i.e. cookie auth\n * when deployed on the instance domain)\n */\nexport const loginWithAuth0 = async (\n instanceUrl: URL,\n): Promise<string | null> => {\n if (typeof window === \"undefined\") {\n throw new Error(\n `Access token must be set to use NovaClient when not in a browser environment.`,\n )\n }\n\n if (instanceUrl.origin === window.location.origin) {\n // When deployed on the instance itself, our auth is handled by cookies\n // and no access token is needed-- just need to reload the page and it'll\n // login again / set cookie as needed\n window.location.reload()\n throw new Error(\n \"Failed to reload page to get auth details, please refresh manually\",\n )\n }\n\n // If we're on localhost or another domain, we need to do the full oauth flow\n // Note this will ONLY work for origins which are whitelisted as a redirect_uri\n // in the auth0 config, currently\n const { Auth0Client } = await import(\"@auth0/auth0-spa-js\")\n\n const auth0Config = getAuth0Config(instanceUrl)\n\n const auth0Client = new Auth0Client({\n domain: auth0Config.domain,\n clientId: auth0Config.clientId ?? \"\",\n useRefreshTokens: false,\n authorizationParams: {\n audience: \"nova-api\",\n redirect_uri: window.location.origin,\n },\n })\n\n // If the URL includes a redirect result, handle it\n if (\n window.location.search.includes(\"code=\") &&\n window.location.search.includes(\"state=\")\n ) {\n const { appState } = await auth0Client.handleRedirectCallback()\n // Return to the URL the user was originally on before the redirect\n window.history.replaceState(\n {},\n document.title,\n appState?.returnTo || window.location.pathname,\n )\n } else {\n // Initiate login with redirect\n await auth0Client.loginWithRedirect()\n }\n\n // Once logged in, retrieve the access token silently\n const accessToken = await auth0Client.getTokenSilently()\n return accessToken\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LoginWithAuth0-CEUVGw1-.mjs","names":[],"sources":["../src/lib/AutoReconnectingWebsocket.ts","../src/lib/availableStorage.ts","../src/lib/converters.ts","../src/LoginWithAuth0.ts"],"sourcesContent":["import ReconnectingWebSocket, { type ErrorEvent } from \"reconnecting-websocket\"\nimport type * as v1 from \"./v1/mock/MockNovaInstance\"\nimport type * as v2 from \"./v2/mock/MockNovaInstance\"\n\nexport class AutoReconnectingWebsocket extends ReconnectingWebSocket {\n receivedFirstMessage?: MessageEvent\n targetUrl: string\n disposed = false\n\n constructor(\n targetUrl: string,\n readonly opts: {\n mock?: v1.MockNovaInstance | v2.MockNovaInstance\n onDispose?: () => void\n } = {},\n ) {\n console.log(\"Opening websocket to\", targetUrl)\n\n super(() => this.targetUrl || targetUrl, undefined, {\n startClosed: true,\n })\n\n // Reconnecting websocket doesn't set this properly with startClosed\n Object.defineProperty(this, \"url\", {\n get() {\n return this.targetUrl\n },\n })\n\n this.targetUrl = targetUrl\n\n this.addEventListener(\"open\", () => {\n console.log(`Websocket to ${this.url} opened`)\n })\n\n this.addEventListener(\"message\", (ev) => {\n if (!this.receivedFirstMessage) {\n this.receivedFirstMessage = ev\n }\n })\n\n this.addEventListener(\"close\", () => {\n console.log(`Websocket to ${this.url} closed`)\n })\n\n const origReconnect = this.reconnect\n this.reconnect = () => {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketConnection(this)\n } else {\n origReconnect.apply(this)\n }\n }\n\n this.reconnect()\n }\n\n changeUrl(targetUrl: string) {\n this.receivedFirstMessage = undefined\n this.targetUrl = targetUrl\n this.reconnect()\n }\n\n sendJson(data: unknown) {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketMessage(this, JSON.stringify(data))\n } else {\n this.send(JSON.stringify(data))\n }\n }\n\n /**\n * Permanently close this websocket and indicate that\n * this object should not be used again.\n **/\n dispose() {\n this.close()\n this.disposed = true\n if (this.opts.onDispose) {\n this.opts.onDispose()\n }\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the OPEN state. */\n async opened() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.OPEN) {\n resolve()\n } else {\n this.addEventListener(\"open\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the CLOSED state. */\n async closed() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.CLOSED) {\n resolve()\n } else {\n this.addEventListener(\"close\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves when the first message\n * is received from the websocket. Resolves immediately if\n * the first message has already been received.\n */\n async firstMessage() {\n if (this.receivedFirstMessage) {\n return this.receivedFirstMessage\n }\n\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.receivedFirstMessage = ev\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n\n /**\n * Returns a promise that resolves when the next message\n * is received from the websocket.\n */\n async nextMessage() {\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n}\n","/**\n * Safety wrapper around browser localStorage providing context availability\n * checks and JSON parsing\n */\nclass AvailableStorage {\n available = typeof window !== \"undefined\" && !!window.localStorage\n\n getJSON<T>(key: string): Partial<T> | null {\n if (!this.available) return null\n\n const result = window.localStorage.getItem(key)\n if (result === null) return null\n\n try {\n return JSON.parse(result)\n } catch (err) {\n return null\n }\n }\n\n setJSON(key: string, obj: unknown) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, JSON.stringify(obj))\n }\n\n delete(key: string) {\n if (!this.available) return null\n\n window.localStorage.removeItem(key)\n }\n\n setString(key: string, value: string) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, value)\n }\n\n getString(key: string): string | null {\n if (!this.available) return null\n\n return window.localStorage.getItem(key)\n }\n}\n\nexport const availableStorage = new AvailableStorage()\n","export type URLParseOptions = {\n /**\n * Ignore any scheme in the input string and force this scheme instead.\n */\n scheme?: \"http\" | \"https\"\n /**\n * If the input string does not include a scheme, use this as the default\n * scheme.\n */\n defaultScheme?: \"http\" | \"https\"\n}\n\n/**\n * Parse a string as a URL, with options to enforce or default the scheme.\n */\nexport function parseUrl(url: string, options: URLParseOptions = {}): URL {\n const { scheme, defaultScheme } = options\n\n const schemeRegex = /^[a-zA-Z]+:\\/\\//\n\n if (scheme) {\n // Force the scheme by removing any existing scheme and prepending the desired one\n url = url.replace(schemeRegex, \"\")\n url = `${scheme}://${url}`\n } else if (defaultScheme && !schemeRegex.test(url)) {\n // No scheme is present, add the default one\n url = `${defaultScheme}://${url}`\n }\n\n return new URL(url)\n}\n\n/**\n * Attempt to parse a string as a URL; return undefined if we can't\n */\nexport function tryParseUrl(\n url: string,\n options: URLParseOptions = {},\n): URL | undefined {\n try {\n return parseUrl(url, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Permissively parse a NOVA instance URL from a config variable.\n * If scheme is not specified, defaults to https for *.wandelbots.io hosts,\n * and http otherwise.\n * Throws an error if a valid URL could not be determined.\n */\nexport function parseNovaInstanceUrl(url: string): URL {\n const testUrl = tryParseUrl(url, { defaultScheme: \"http\" })\n if (testUrl?.host.endsWith(\".wandelbots.io\")) {\n return parseUrl(url, { defaultScheme: \"https\" })\n } else {\n return parseUrl(url, { defaultScheme: \"http\" })\n }\n}\n\n/** Try to parse something as JSON; return undefined if we can't */\n// biome-ignore lint/suspicious/noExplicitAny: it's json\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\n/** Try to turn something into JSON; return undefined if we can't */\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n\n/**\n * Converts object parameters to query string.\n * e.g. { a: \"1\", b: \"2\" } => \"?a=1&b=2\"\n * {} => \"\"\n */\nexport function makeUrlQueryString(obj: Record<string, string>): string {\n const str = new URLSearchParams(obj).toString()\n return str ? `?${str}` : \"\"\n}\n\n/** Convert radians to degrees */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\n/** Convert degrees to radians */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\n/**\n * Check for coordinate system id equivalence, accounting for the \"world\" default\n * on empty/undefined values.\n */\nexport function isSameCoordinateSystem(\n firstCoordSystem: string | undefined,\n secondCoordSystem: string | undefined,\n) {\n if (!firstCoordSystem) firstCoordSystem = \"world\"\n if (!secondCoordSystem) secondCoordSystem = \"world\"\n\n return firstCoordSystem === secondCoordSystem\n}\n\n/**\n * Helpful const for converting {x, y, z} to [x, y, z] and vice versa\n */\nexport const XYZ_TO_VECTOR = { x: 0, y: 1, z: 2 }\n","/**\n * Mapping of stages to Auth0 configurations.\n * The client ids are public identifiers for a specific auth0 application\n * and are safe to include in client-side code.\n * https://auth0.com/docs/get-started/applications/application-settings\n */\nconst auth0ConfigMap = {\n dev: {\n domain: `https://auth.portal.dev.wandelbots.io`,\n clientId: \"fLbJD0RLp5r2Dpucm5j8BjwMR6Hunfha\",\n },\n stg: {\n domain: `https://auth.portal.stg.wandelbots.io`,\n clientId: \"joVDeD9e786WzFNSGCqoVq7HNkWt5j6s\",\n },\n prod: {\n domain: `https://auth.portal.wandelbots.io`,\n clientId: \"J7WJUi38xVQdJAEBNRT9Xw1b0fXDb4J2\",\n },\n}\n\n/** Determine which Auth0 configuration to use based on instance URL */\nexport const getAuth0Config = (instanceUrl: URL) => {\n if (instanceUrl.host.endsWith(\".dev.wandelbots.io\")) return auth0ConfigMap.dev\n if (instanceUrl.host.endsWith(\".stg.wandelbots.io\")) return auth0ConfigMap.stg\n if (instanceUrl.host.endsWith(\".wandelbots.io\")) return auth0ConfigMap.prod\n throw new Error(\n `Unable to authenticate with NOVA instance \"${instanceUrl}\". Auth0 login is only supported for cloud instances with hosts of the form \"**.wandelbots.io\".`,\n )\n}\n\n/**\n * Initializes Auth0 login process using redirect if necessary and retrieves an access token.\n * Returns null when an access token should not be needed to authenticate (i.e. cookie auth\n * when deployed on the instance domain)\n */\nexport const loginWithAuth0 = async (\n instanceUrl: URL,\n): Promise<string | null> => {\n if (typeof window === \"undefined\") {\n throw new Error(\n `Access token must be set to use NovaClient when not in a browser environment.`,\n )\n }\n\n if (instanceUrl.origin === window.location.origin) {\n // When deployed on the instance itself, our auth is handled by cookies\n // and no access token is needed-- just need to reload the page and it'll\n // login again / set cookie as needed\n window.location.reload()\n throw new Error(\n \"Failed to reload page to get auth details, please refresh manually\",\n )\n }\n\n // If we're on localhost or another domain, we need to do the full oauth flow\n // Note this will ONLY work for origins which are whitelisted as a redirect_uri\n // in the auth0 config, currently\n const { Auth0Client } = await import(\"@auth0/auth0-spa-js\")\n\n const auth0Config = getAuth0Config(instanceUrl)\n\n const auth0Client = new Auth0Client({\n domain: auth0Config.domain,\n clientId: auth0Config.clientId ?? \"\",\n useRefreshTokens: false,\n authorizationParams: {\n audience: \"nova-api\",\n redirect_uri: window.location.origin,\n },\n })\n\n // If the URL includes a redirect result, handle it\n if (\n window.location.search.includes(\"code=\") &&\n window.location.search.includes(\"state=\")\n ) {\n const { appState } = await auth0Client.handleRedirectCallback()\n // Return to the URL the user was originally on before the redirect\n window.history.replaceState(\n {},\n document.title,\n appState?.returnTo || window.location.pathname,\n )\n } else {\n // Initiate login with redirect\n await auth0Client.loginWithRedirect()\n }\n\n // Once logged in, retrieve the access token silently\n const accessToken = await auth0Client.getTokenSilently()\n return accessToken\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -6,16 +6,12 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
19
15
|
}
|
|
20
16
|
return to;
|
|
21
17
|
};
|
|
@@ -23,11 +19,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
23
19
|
value: mod,
|
|
24
20
|
enumerable: true
|
|
25
21
|
}) : target, mod));
|
|
26
|
-
|
|
27
22
|
//#endregion
|
|
28
23
|
let reconnecting_websocket = require("reconnecting-websocket");
|
|
29
24
|
reconnecting_websocket = __toESM(reconnecting_websocket);
|
|
30
|
-
|
|
31
25
|
//#region src/lib/AutoReconnectingWebsocket.ts
|
|
32
26
|
var AutoReconnectingWebsocket = class extends reconnecting_websocket.default {
|
|
33
27
|
constructor(targetUrl, opts = {}) {
|
|
@@ -141,7 +135,6 @@ var AutoReconnectingWebsocket = class extends reconnecting_websocket.default {
|
|
|
141
135
|
});
|
|
142
136
|
}
|
|
143
137
|
};
|
|
144
|
-
|
|
145
138
|
//#endregion
|
|
146
139
|
//#region src/lib/availableStorage.ts
|
|
147
140
|
/**
|
|
@@ -180,7 +173,6 @@ var AvailableStorage = class {
|
|
|
180
173
|
}
|
|
181
174
|
};
|
|
182
175
|
const availableStorage = new AvailableStorage();
|
|
183
|
-
|
|
184
176
|
//#endregion
|
|
185
177
|
//#region src/lib/converters.ts
|
|
186
178
|
/**
|
|
@@ -265,7 +257,6 @@ const XYZ_TO_VECTOR = {
|
|
|
265
257
|
y: 1,
|
|
266
258
|
z: 2
|
|
267
259
|
};
|
|
268
|
-
|
|
269
260
|
//#endregion
|
|
270
261
|
//#region src/LoginWithAuth0.ts
|
|
271
262
|
/**
|
|
@@ -323,96 +314,96 @@ const loginWithAuth0 = async (instanceUrl) => {
|
|
|
323
314
|
} else await auth0Client.loginWithRedirect();
|
|
324
315
|
return await auth0Client.getTokenSilently();
|
|
325
316
|
};
|
|
326
|
-
|
|
327
317
|
//#endregion
|
|
328
|
-
Object.defineProperty(exports,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
318
|
+
Object.defineProperty(exports, "AutoReconnectingWebsocket", {
|
|
319
|
+
enumerable: true,
|
|
320
|
+
get: function() {
|
|
321
|
+
return AutoReconnectingWebsocket;
|
|
322
|
+
}
|
|
333
323
|
});
|
|
334
|
-
Object.defineProperty(exports,
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
324
|
+
Object.defineProperty(exports, "XYZ_TO_VECTOR", {
|
|
325
|
+
enumerable: true,
|
|
326
|
+
get: function() {
|
|
327
|
+
return XYZ_TO_VECTOR;
|
|
328
|
+
}
|
|
339
329
|
});
|
|
340
|
-
Object.defineProperty(exports,
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
330
|
+
Object.defineProperty(exports, "__toESM", {
|
|
331
|
+
enumerable: true,
|
|
332
|
+
get: function() {
|
|
333
|
+
return __toESM;
|
|
334
|
+
}
|
|
345
335
|
});
|
|
346
|
-
Object.defineProperty(exports,
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
336
|
+
Object.defineProperty(exports, "availableStorage", {
|
|
337
|
+
enumerable: true,
|
|
338
|
+
get: function() {
|
|
339
|
+
return availableStorage;
|
|
340
|
+
}
|
|
351
341
|
});
|
|
352
|
-
Object.defineProperty(exports,
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
342
|
+
Object.defineProperty(exports, "degreesToRadians", {
|
|
343
|
+
enumerable: true,
|
|
344
|
+
get: function() {
|
|
345
|
+
return degreesToRadians;
|
|
346
|
+
}
|
|
357
347
|
});
|
|
358
|
-
Object.defineProperty(exports,
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
348
|
+
Object.defineProperty(exports, "getAuth0Config", {
|
|
349
|
+
enumerable: true,
|
|
350
|
+
get: function() {
|
|
351
|
+
return getAuth0Config;
|
|
352
|
+
}
|
|
363
353
|
});
|
|
364
|
-
Object.defineProperty(exports,
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
354
|
+
Object.defineProperty(exports, "isSameCoordinateSystem", {
|
|
355
|
+
enumerable: true,
|
|
356
|
+
get: function() {
|
|
357
|
+
return isSameCoordinateSystem;
|
|
358
|
+
}
|
|
369
359
|
});
|
|
370
|
-
Object.defineProperty(exports,
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
360
|
+
Object.defineProperty(exports, "loginWithAuth0", {
|
|
361
|
+
enumerable: true,
|
|
362
|
+
get: function() {
|
|
363
|
+
return loginWithAuth0;
|
|
364
|
+
}
|
|
375
365
|
});
|
|
376
|
-
Object.defineProperty(exports,
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
366
|
+
Object.defineProperty(exports, "makeUrlQueryString", {
|
|
367
|
+
enumerable: true,
|
|
368
|
+
get: function() {
|
|
369
|
+
return makeUrlQueryString;
|
|
370
|
+
}
|
|
381
371
|
});
|
|
382
|
-
Object.defineProperty(exports,
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
372
|
+
Object.defineProperty(exports, "parseNovaInstanceUrl", {
|
|
373
|
+
enumerable: true,
|
|
374
|
+
get: function() {
|
|
375
|
+
return parseNovaInstanceUrl;
|
|
376
|
+
}
|
|
387
377
|
});
|
|
388
|
-
Object.defineProperty(exports,
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
378
|
+
Object.defineProperty(exports, "parseUrl", {
|
|
379
|
+
enumerable: true,
|
|
380
|
+
get: function() {
|
|
381
|
+
return parseUrl;
|
|
382
|
+
}
|
|
393
383
|
});
|
|
394
|
-
Object.defineProperty(exports,
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
384
|
+
Object.defineProperty(exports, "radiansToDegrees", {
|
|
385
|
+
enumerable: true,
|
|
386
|
+
get: function() {
|
|
387
|
+
return radiansToDegrees;
|
|
388
|
+
}
|
|
399
389
|
});
|
|
400
|
-
Object.defineProperty(exports,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
390
|
+
Object.defineProperty(exports, "tryParseJson", {
|
|
391
|
+
enumerable: true,
|
|
392
|
+
get: function() {
|
|
393
|
+
return tryParseJson;
|
|
394
|
+
}
|
|
405
395
|
});
|
|
406
|
-
Object.defineProperty(exports,
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
396
|
+
Object.defineProperty(exports, "tryParseUrl", {
|
|
397
|
+
enumerable: true,
|
|
398
|
+
get: function() {
|
|
399
|
+
return tryParseUrl;
|
|
400
|
+
}
|
|
411
401
|
});
|
|
412
|
-
Object.defineProperty(exports,
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
402
|
+
Object.defineProperty(exports, "tryStringifyJson", {
|
|
403
|
+
enumerable: true,
|
|
404
|
+
get: function() {
|
|
405
|
+
return tryStringifyJson;
|
|
406
|
+
}
|
|
417
407
|
});
|
|
418
|
-
|
|
408
|
+
|
|
409
|
+
//# sourceMappingURL=LoginWithAuth0-DHgYqs1M.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginWithAuth0-qpkGkrJo.cjs","names":["ReconnectingWebSocket"],"sources":["../src/lib/AutoReconnectingWebsocket.ts","../src/lib/availableStorage.ts","../src/lib/converters.ts","../src/LoginWithAuth0.ts"],"sourcesContent":["import ReconnectingWebSocket, { type ErrorEvent } from \"reconnecting-websocket\"\nimport type * as v1 from \"./v1/mock/MockNovaInstance\"\nimport type * as v2 from \"./v2/mock/MockNovaInstance\"\n\nexport class AutoReconnectingWebsocket extends ReconnectingWebSocket {\n receivedFirstMessage?: MessageEvent\n targetUrl: string\n disposed = false\n\n constructor(\n targetUrl: string,\n readonly opts: {\n mock?: v1.MockNovaInstance | v2.MockNovaInstance\n onDispose?: () => void\n } = {},\n ) {\n console.log(\"Opening websocket to\", targetUrl)\n\n super(() => this.targetUrl || targetUrl, undefined, {\n startClosed: true,\n })\n\n // Reconnecting websocket doesn't set this properly with startClosed\n Object.defineProperty(this, \"url\", {\n get() {\n return this.targetUrl\n },\n })\n\n this.targetUrl = targetUrl\n\n this.addEventListener(\"open\", () => {\n console.log(`Websocket to ${this.url} opened`)\n })\n\n this.addEventListener(\"message\", (ev) => {\n if (!this.receivedFirstMessage) {\n this.receivedFirstMessage = ev\n }\n })\n\n this.addEventListener(\"close\", () => {\n console.log(`Websocket to ${this.url} closed`)\n })\n\n const origReconnect = this.reconnect\n this.reconnect = () => {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketConnection(this)\n } else {\n origReconnect.apply(this)\n }\n }\n\n this.reconnect()\n }\n\n changeUrl(targetUrl: string) {\n this.receivedFirstMessage = undefined\n this.targetUrl = targetUrl\n this.reconnect()\n }\n\n sendJson(data: unknown) {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketMessage(this, JSON.stringify(data))\n } else {\n this.send(JSON.stringify(data))\n }\n }\n\n /**\n * Permanently close this websocket and indicate that\n * this object should not be used again.\n **/\n dispose() {\n this.close()\n this.disposed = true\n if (this.opts.onDispose) {\n this.opts.onDispose()\n }\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the OPEN state. */\n async opened() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.OPEN) {\n resolve()\n } else {\n this.addEventListener(\"open\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the CLOSED state. */\n async closed() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.CLOSED) {\n resolve()\n } else {\n this.addEventListener(\"close\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves when the first message\n * is received from the websocket. Resolves immediately if\n * the first message has already been received.\n */\n async firstMessage() {\n if (this.receivedFirstMessage) {\n return this.receivedFirstMessage\n }\n\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.receivedFirstMessage = ev\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n\n /**\n * Returns a promise that resolves when the next message\n * is received from the websocket.\n */\n async nextMessage() {\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n}\n","/**\n * Safety wrapper around browser localStorage providing context availability\n * checks and JSON parsing\n */\nclass AvailableStorage {\n available = typeof window !== \"undefined\" && !!window.localStorage\n\n getJSON<T>(key: string): Partial<T> | null {\n if (!this.available) return null\n\n const result = window.localStorage.getItem(key)\n if (result === null) return null\n\n try {\n return JSON.parse(result)\n } catch (err) {\n return null\n }\n }\n\n setJSON(key: string, obj: unknown) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, JSON.stringify(obj))\n }\n\n delete(key: string) {\n if (!this.available) return null\n\n window.localStorage.removeItem(key)\n }\n\n setString(key: string, value: string) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, value)\n }\n\n getString(key: string): string | null {\n if (!this.available) return null\n\n return window.localStorage.getItem(key)\n }\n}\n\nexport const availableStorage = new AvailableStorage()\n","export type URLParseOptions = {\n /**\n * Ignore any scheme in the input string and force this scheme instead.\n */\n scheme?: \"http\" | \"https\"\n /**\n * If the input string does not include a scheme, use this as the default\n * scheme.\n */\n defaultScheme?: \"http\" | \"https\"\n}\n\n/**\n * Parse a string as a URL, with options to enforce or default the scheme.\n */\nexport function parseUrl(url: string, options: URLParseOptions = {}): URL {\n const { scheme, defaultScheme } = options\n\n const schemeRegex = /^[a-zA-Z]+:\\/\\//\n\n if (scheme) {\n // Force the scheme by removing any existing scheme and prepending the desired one\n url = url.replace(schemeRegex, \"\")\n url = `${scheme}://${url}`\n } else if (defaultScheme && !schemeRegex.test(url)) {\n // No scheme is present, add the default one\n url = `${defaultScheme}://${url}`\n }\n\n return new URL(url)\n}\n\n/**\n * Attempt to parse a string as a URL; return undefined if we can't\n */\nexport function tryParseUrl(\n url: string,\n options: URLParseOptions = {},\n): URL | undefined {\n try {\n return parseUrl(url, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Permissively parse a NOVA instance URL from a config variable.\n * If scheme is not specified, defaults to https for *.wandelbots.io hosts,\n * and http otherwise.\n * Throws an error if a valid URL could not be determined.\n */\nexport function parseNovaInstanceUrl(url: string): URL {\n const testUrl = tryParseUrl(url, { defaultScheme: \"http\" })\n if (testUrl?.host.endsWith(\".wandelbots.io\")) {\n return parseUrl(url, { defaultScheme: \"https\" })\n } else {\n return parseUrl(url, { defaultScheme: \"http\" })\n }\n}\n\n/** Try to parse something as JSON; return undefined if we can't */\n// biome-ignore lint/suspicious/noExplicitAny: it's json\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\n/** Try to turn something into JSON; return undefined if we can't */\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n\n/**\n * Converts object parameters to query string.\n * e.g. { a: \"1\", b: \"2\" } => \"?a=1&b=2\"\n * {} => \"\"\n */\nexport function makeUrlQueryString(obj: Record<string, string>): string {\n const str = new URLSearchParams(obj).toString()\n return str ? `?${str}` : \"\"\n}\n\n/** Convert radians to degrees */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\n/** Convert degrees to radians */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\n/**\n * Check for coordinate system id equivalence, accounting for the \"world\" default\n * on empty/undefined values.\n */\nexport function isSameCoordinateSystem(\n firstCoordSystem: string | undefined,\n secondCoordSystem: string | undefined,\n) {\n if (!firstCoordSystem) firstCoordSystem = \"world\"\n if (!secondCoordSystem) secondCoordSystem = \"world\"\n\n return firstCoordSystem === secondCoordSystem\n}\n\n/**\n * Helpful const for converting {x, y, z} to [x, y, z] and vice versa\n */\nexport const XYZ_TO_VECTOR = { x: 0, y: 1, z: 2 }\n","/**\n * Mapping of stages to Auth0 configurations.\n * The client ids are public identifiers for a specific auth0 application\n * and are safe to include in client-side code.\n * https://auth0.com/docs/get-started/applications/application-settings\n */\nconst auth0ConfigMap = {\n dev: {\n domain: `https://auth.portal.dev.wandelbots.io`,\n clientId: \"fLbJD0RLp5r2Dpucm5j8BjwMR6Hunfha\",\n },\n stg: {\n domain: `https://auth.portal.stg.wandelbots.io`,\n clientId: \"joVDeD9e786WzFNSGCqoVq7HNkWt5j6s\",\n },\n prod: {\n domain: `https://auth.portal.wandelbots.io`,\n clientId: \"J7WJUi38xVQdJAEBNRT9Xw1b0fXDb4J2\",\n },\n}\n\n/** Determine which Auth0 configuration to use based on instance URL */\nexport const getAuth0Config = (instanceUrl: URL) => {\n if (instanceUrl.host.endsWith(\".dev.wandelbots.io\")) return auth0ConfigMap.dev\n if (instanceUrl.host.endsWith(\".stg.wandelbots.io\")) return auth0ConfigMap.stg\n if (instanceUrl.host.endsWith(\".wandelbots.io\")) return auth0ConfigMap.prod\n throw new Error(\n `Unable to authenticate with NOVA instance \"${instanceUrl}\". Auth0 login is only supported for cloud instances with hosts of the form \"**.wandelbots.io\".`,\n )\n}\n\n/**\n * Initializes Auth0 login process using redirect if necessary and retrieves an access token.\n * Returns null when an access token should not be needed to authenticate (i.e. cookie auth\n * when deployed on the instance domain)\n */\nexport const loginWithAuth0 = async (\n instanceUrl: URL,\n): Promise<string | null> => {\n if (typeof window === \"undefined\") {\n throw new Error(\n `Access token must be set to use NovaClient when not in a browser environment.`,\n )\n }\n\n if (instanceUrl.origin === window.location.origin) {\n // When deployed on the instance itself, our auth is handled by cookies\n // and no access token is needed-- just need to reload the page and it'll\n // login again / set cookie as needed\n window.location.reload()\n throw new Error(\n \"Failed to reload page to get auth details, please refresh manually\",\n )\n }\n\n // If we're on localhost or another domain, we need to do the full oauth flow\n // Note this will ONLY work for origins which are whitelisted as a redirect_uri\n // in the auth0 config, currently\n const { Auth0Client } = await import(\"@auth0/auth0-spa-js\")\n\n const auth0Config = getAuth0Config(instanceUrl)\n\n const auth0Client = new Auth0Client({\n domain: auth0Config.domain,\n clientId: auth0Config.clientId ?? \"\",\n useRefreshTokens: false,\n authorizationParams: {\n audience: \"nova-api\",\n redirect_uri: window.location.origin,\n },\n })\n\n // If the URL includes a redirect result, handle it\n if (\n window.location.search.includes(\"code=\") &&\n window.location.search.includes(\"state=\")\n ) {\n const { appState } = await auth0Client.handleRedirectCallback()\n // Return to the URL the user was originally on before the redirect\n window.history.replaceState(\n {},\n document.title,\n appState?.returnTo || window.location.pathname,\n )\n } else {\n // Initiate login with redirect\n await auth0Client.loginWithRedirect()\n }\n\n // Once logged in, retrieve the access token silently\n const accessToken = await auth0Client.getTokenSilently()\n return accessToken\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LoginWithAuth0-DHgYqs1M.cjs","names":["ReconnectingWebSocket"],"sources":["../src/lib/AutoReconnectingWebsocket.ts","../src/lib/availableStorage.ts","../src/lib/converters.ts","../src/LoginWithAuth0.ts"],"sourcesContent":["import ReconnectingWebSocket, { type ErrorEvent } from \"reconnecting-websocket\"\nimport type * as v1 from \"./v1/mock/MockNovaInstance\"\nimport type * as v2 from \"./v2/mock/MockNovaInstance\"\n\nexport class AutoReconnectingWebsocket extends ReconnectingWebSocket {\n receivedFirstMessage?: MessageEvent\n targetUrl: string\n disposed = false\n\n constructor(\n targetUrl: string,\n readonly opts: {\n mock?: v1.MockNovaInstance | v2.MockNovaInstance\n onDispose?: () => void\n } = {},\n ) {\n console.log(\"Opening websocket to\", targetUrl)\n\n super(() => this.targetUrl || targetUrl, undefined, {\n startClosed: true,\n })\n\n // Reconnecting websocket doesn't set this properly with startClosed\n Object.defineProperty(this, \"url\", {\n get() {\n return this.targetUrl\n },\n })\n\n this.targetUrl = targetUrl\n\n this.addEventListener(\"open\", () => {\n console.log(`Websocket to ${this.url} opened`)\n })\n\n this.addEventListener(\"message\", (ev) => {\n if (!this.receivedFirstMessage) {\n this.receivedFirstMessage = ev\n }\n })\n\n this.addEventListener(\"close\", () => {\n console.log(`Websocket to ${this.url} closed`)\n })\n\n const origReconnect = this.reconnect\n this.reconnect = () => {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketConnection(this)\n } else {\n origReconnect.apply(this)\n }\n }\n\n this.reconnect()\n }\n\n changeUrl(targetUrl: string) {\n this.receivedFirstMessage = undefined\n this.targetUrl = targetUrl\n this.reconnect()\n }\n\n sendJson(data: unknown) {\n if (this.opts.mock) {\n this.opts.mock.handleWebsocketMessage(this, JSON.stringify(data))\n } else {\n this.send(JSON.stringify(data))\n }\n }\n\n /**\n * Permanently close this websocket and indicate that\n * this object should not be used again.\n **/\n dispose() {\n this.close()\n this.disposed = true\n if (this.opts.onDispose) {\n this.opts.onDispose()\n }\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the OPEN state. */\n async opened() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.OPEN) {\n resolve()\n } else {\n this.addEventListener(\"open\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves once the websocket\n * is in the CLOSED state. */\n async closed() {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState === WebSocket.CLOSED) {\n resolve()\n } else {\n this.addEventListener(\"close\", () => resolve())\n this.addEventListener(\"error\", reject)\n }\n })\n }\n\n /**\n * Returns a promise that resolves when the first message\n * is received from the websocket. Resolves immediately if\n * the first message has already been received.\n */\n async firstMessage() {\n if (this.receivedFirstMessage) {\n return this.receivedFirstMessage\n }\n\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.receivedFirstMessage = ev\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n\n /**\n * Returns a promise that resolves when the next message\n * is received from the websocket.\n */\n async nextMessage() {\n return new Promise<MessageEvent>((resolve, reject) => {\n const onMessage = (ev: MessageEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n resolve(ev)\n }\n\n const onError = (ev: ErrorEvent) => {\n this.removeEventListener(\"message\", onMessage)\n this.removeEventListener(\"error\", onError)\n reject(ev)\n }\n\n this.addEventListener(\"message\", onMessage)\n this.addEventListener(\"error\", onError)\n })\n }\n}\n","/**\n * Safety wrapper around browser localStorage providing context availability\n * checks and JSON parsing\n */\nclass AvailableStorage {\n available = typeof window !== \"undefined\" && !!window.localStorage\n\n getJSON<T>(key: string): Partial<T> | null {\n if (!this.available) return null\n\n const result = window.localStorage.getItem(key)\n if (result === null) return null\n\n try {\n return JSON.parse(result)\n } catch (err) {\n return null\n }\n }\n\n setJSON(key: string, obj: unknown) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, JSON.stringify(obj))\n }\n\n delete(key: string) {\n if (!this.available) return null\n\n window.localStorage.removeItem(key)\n }\n\n setString(key: string, value: string) {\n if (!this.available) return null\n\n window.localStorage.setItem(key, value)\n }\n\n getString(key: string): string | null {\n if (!this.available) return null\n\n return window.localStorage.getItem(key)\n }\n}\n\nexport const availableStorage = new AvailableStorage()\n","export type URLParseOptions = {\n /**\n * Ignore any scheme in the input string and force this scheme instead.\n */\n scheme?: \"http\" | \"https\"\n /**\n * If the input string does not include a scheme, use this as the default\n * scheme.\n */\n defaultScheme?: \"http\" | \"https\"\n}\n\n/**\n * Parse a string as a URL, with options to enforce or default the scheme.\n */\nexport function parseUrl(url: string, options: URLParseOptions = {}): URL {\n const { scheme, defaultScheme } = options\n\n const schemeRegex = /^[a-zA-Z]+:\\/\\//\n\n if (scheme) {\n // Force the scheme by removing any existing scheme and prepending the desired one\n url = url.replace(schemeRegex, \"\")\n url = `${scheme}://${url}`\n } else if (defaultScheme && !schemeRegex.test(url)) {\n // No scheme is present, add the default one\n url = `${defaultScheme}://${url}`\n }\n\n return new URL(url)\n}\n\n/**\n * Attempt to parse a string as a URL; return undefined if we can't\n */\nexport function tryParseUrl(\n url: string,\n options: URLParseOptions = {},\n): URL | undefined {\n try {\n return parseUrl(url, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Permissively parse a NOVA instance URL from a config variable.\n * If scheme is not specified, defaults to https for *.wandelbots.io hosts,\n * and http otherwise.\n * Throws an error if a valid URL could not be determined.\n */\nexport function parseNovaInstanceUrl(url: string): URL {\n const testUrl = tryParseUrl(url, { defaultScheme: \"http\" })\n if (testUrl?.host.endsWith(\".wandelbots.io\")) {\n return parseUrl(url, { defaultScheme: \"https\" })\n } else {\n return parseUrl(url, { defaultScheme: \"http\" })\n }\n}\n\n/** Try to parse something as JSON; return undefined if we can't */\n// biome-ignore lint/suspicious/noExplicitAny: it's json\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\n/** Try to turn something into JSON; return undefined if we can't */\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n\n/**\n * Converts object parameters to query string.\n * e.g. { a: \"1\", b: \"2\" } => \"?a=1&b=2\"\n * {} => \"\"\n */\nexport function makeUrlQueryString(obj: Record<string, string>): string {\n const str = new URLSearchParams(obj).toString()\n return str ? `?${str}` : \"\"\n}\n\n/** Convert radians to degrees */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\n/** Convert degrees to radians */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\n/**\n * Check for coordinate system id equivalence, accounting for the \"world\" default\n * on empty/undefined values.\n */\nexport function isSameCoordinateSystem(\n firstCoordSystem: string | undefined,\n secondCoordSystem: string | undefined,\n) {\n if (!firstCoordSystem) firstCoordSystem = \"world\"\n if (!secondCoordSystem) secondCoordSystem = \"world\"\n\n return firstCoordSystem === secondCoordSystem\n}\n\n/**\n * Helpful const for converting {x, y, z} to [x, y, z] and vice versa\n */\nexport const XYZ_TO_VECTOR = { x: 0, y: 1, z: 2 }\n","/**\n * Mapping of stages to Auth0 configurations.\n * The client ids are public identifiers for a specific auth0 application\n * and are safe to include in client-side code.\n * https://auth0.com/docs/get-started/applications/application-settings\n */\nconst auth0ConfigMap = {\n dev: {\n domain: `https://auth.portal.dev.wandelbots.io`,\n clientId: \"fLbJD0RLp5r2Dpucm5j8BjwMR6Hunfha\",\n },\n stg: {\n domain: `https://auth.portal.stg.wandelbots.io`,\n clientId: \"joVDeD9e786WzFNSGCqoVq7HNkWt5j6s\",\n },\n prod: {\n domain: `https://auth.portal.wandelbots.io`,\n clientId: \"J7WJUi38xVQdJAEBNRT9Xw1b0fXDb4J2\",\n },\n}\n\n/** Determine which Auth0 configuration to use based on instance URL */\nexport const getAuth0Config = (instanceUrl: URL) => {\n if (instanceUrl.host.endsWith(\".dev.wandelbots.io\")) return auth0ConfigMap.dev\n if (instanceUrl.host.endsWith(\".stg.wandelbots.io\")) return auth0ConfigMap.stg\n if (instanceUrl.host.endsWith(\".wandelbots.io\")) return auth0ConfigMap.prod\n throw new Error(\n `Unable to authenticate with NOVA instance \"${instanceUrl}\". Auth0 login is only supported for cloud instances with hosts of the form \"**.wandelbots.io\".`,\n )\n}\n\n/**\n * Initializes Auth0 login process using redirect if necessary and retrieves an access token.\n * Returns null when an access token should not be needed to authenticate (i.e. cookie auth\n * when deployed on the instance domain)\n */\nexport const loginWithAuth0 = async (\n instanceUrl: URL,\n): Promise<string | null> => {\n if (typeof window === \"undefined\") {\n throw new Error(\n `Access token must be set to use NovaClient when not in a browser environment.`,\n )\n }\n\n if (instanceUrl.origin === window.location.origin) {\n // When deployed on the instance itself, our auth is handled by cookies\n // and no access token is needed-- just need to reload the page and it'll\n // login again / set cookie as needed\n window.location.reload()\n throw new Error(\n \"Failed to reload page to get auth details, please refresh manually\",\n )\n }\n\n // If we're on localhost or another domain, we need to do the full oauth flow\n // Note this will ONLY work for origins which are whitelisted as a redirect_uri\n // in the auth0 config, currently\n const { Auth0Client } = await import(\"@auth0/auth0-spa-js\")\n\n const auth0Config = getAuth0Config(instanceUrl)\n\n const auth0Client = new Auth0Client({\n domain: auth0Config.domain,\n clientId: auth0Config.clientId ?? \"\",\n useRefreshTokens: false,\n authorizationParams: {\n audience: \"nova-api\",\n redirect_uri: window.location.origin,\n },\n })\n\n // If the URL includes a redirect result, handle it\n if (\n window.location.search.includes(\"code=\") &&\n window.location.search.includes(\"state=\")\n ) {\n const { appState } = await auth0Client.handleRedirectCallback()\n // Return to the URL the user was originally on before the redirect\n window.history.replaceState(\n {},\n document.title,\n appState?.returnTo || window.location.pathname,\n )\n } else {\n // Initiate login with redirect\n await auth0Client.loginWithRedirect()\n }\n\n // Once logged in, retrieve the access token silently\n const accessToken = await auth0Client.getTokenSilently()\n return accessToken\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as MockNovaInstance, t as AutoReconnectingWebsocket } from "./AutoReconnectingWebsocket-
|
|
1
|
+
import { r as MockNovaInstance, t as AutoReconnectingWebsocket } from "./AutoReconnectingWebsocket-COmdtugu.cjs";
|
|
2
2
|
import { AxiosInstance } from "axios";
|
|
3
3
|
import * as _wandelbots_nova_api_v10 from "@wandelbots/nova-api/v1";
|
|
4
4
|
import { ApplicationApi, CellApi, Configuration, ControllerApi, ControllerIOsApi, ControllerInstance, CoordinateSystemsApi, DeviceConfigurationApi, Joints, LibraryProgramApi, LibraryProgramMetadataApi, LibraryRecipeApi, LibraryRecipeMetadataApi, MotionApi, MotionGroupApi, MotionGroupInfosApi, MotionGroupJoggingApi, MotionGroupKinematicApi, MotionGroupPhysical, MotionGroupSpecification, MotionGroupStateResponse, Mounting, Pose, ProgramApi, ProgramValuesApi, RobotControllerState, RobotTcp, SafetySetup, StoreCollisionComponentsApi, StoreCollisionScenesApi, StoreObjectApi, SystemApi, TcpPose, VirtualRobotApi, VirtualRobotBehaviorApi, VirtualRobotModeApi, VirtualRobotSetupApi } from "@wandelbots/nova-api/v1";
|
|
@@ -147,11 +147,8 @@ declare class JoggerConnection {
|
|
|
147
147
|
direction,
|
|
148
148
|
velocityRadsPerSec
|
|
149
149
|
}: {
|
|
150
|
-
/** Index of the joint to rotate */
|
|
151
|
-
|
|
152
|
-
/** Direction of rotation ("+" or "-") */
|
|
153
|
-
direction: "+" | "-";
|
|
154
|
-
/** Speed of the rotation in radians per second */
|
|
150
|
+
/** Index of the joint to rotate */joint: number; /** Direction of rotation ("+" or "-") */
|
|
151
|
+
direction: "+" | "-"; /** Speed of the rotation in radians per second */
|
|
155
152
|
velocityRadsPerSec: number;
|
|
156
153
|
}): Promise<void>;
|
|
157
154
|
/**
|
|
@@ -347,4 +344,4 @@ declare class NovaClient {
|
|
|
347
344
|
}
|
|
348
345
|
//#endregion
|
|
349
346
|
export { WithUnwrappedAxiosResponse as a, MotionStreamConnection as c, poseToWandelscriptString as d, WithCellId as i, ConnectedMotionGroup as l, NovaClientConfig as n, JoggerConnection as o, NovaCellAPIClient as r, JoggerConnectionOpts as s, NovaClient as t, MotionGroupOption as u };
|
|
350
|
-
//# sourceMappingURL=NovaClient-
|
|
347
|
+
//# sourceMappingURL=NovaClient-36BPI1Yp.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NovaClient-36BPI1Yp.d.cts","names":[],"sources":["../src/lib/v1/wandelscriptUtils.ts","../src/lib/v1/ConnectedMotionGroup.ts","../src/lib/v1/MotionStreamConnection.ts","../src/lib/v1/JoggerConnection.ts","../src/lib/v1/NovaCellAPIClient.ts","../src/lib/v1/NovaClient.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as MockNovaInstance, t as AutoReconnectingWebsocket } from "./AutoReconnectingWebsocket-
|
|
1
|
+
import { r as MockNovaInstance, t as AutoReconnectingWebsocket } from "./AutoReconnectingWebsocket-BgMrjNxO.mjs";
|
|
2
2
|
import { AxiosInstance } from "axios";
|
|
3
3
|
import * as THREE from "three";
|
|
4
4
|
import * as _wandelbots_nova_api_v10 from "@wandelbots/nova-api/v1";
|
|
@@ -147,11 +147,8 @@ declare class JoggerConnection {
|
|
|
147
147
|
direction,
|
|
148
148
|
velocityRadsPerSec
|
|
149
149
|
}: {
|
|
150
|
-
/** Index of the joint to rotate */
|
|
151
|
-
|
|
152
|
-
/** Direction of rotation ("+" or "-") */
|
|
153
|
-
direction: "+" | "-";
|
|
154
|
-
/** Speed of the rotation in radians per second */
|
|
150
|
+
/** Index of the joint to rotate */joint: number; /** Direction of rotation ("+" or "-") */
|
|
151
|
+
direction: "+" | "-"; /** Speed of the rotation in radians per second */
|
|
155
152
|
velocityRadsPerSec: number;
|
|
156
153
|
}): Promise<void>;
|
|
157
154
|
/**
|
|
@@ -347,4 +344,4 @@ declare class NovaClient {
|
|
|
347
344
|
}
|
|
348
345
|
//#endregion
|
|
349
346
|
export { WithUnwrappedAxiosResponse as a, MotionStreamConnection as c, poseToWandelscriptString as d, WithCellId as i, ConnectedMotionGroup as l, NovaClientConfig as n, JoggerConnection as o, NovaCellAPIClient as r, JoggerConnectionOpts as s, NovaClient as t, MotionGroupOption as u };
|
|
350
|
-
//# sourceMappingURL=NovaClient-
|
|
347
|
+
//# sourceMappingURL=NovaClient-BabUDOEg.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NovaClient-BabUDOEg.d.mts","names":[],"sources":["../src/lib/v1/wandelscriptUtils.ts","../src/lib/v1/ConnectedMotionGroup.ts","../src/lib/v1/MotionStreamConnection.ts","../src/lib/v1/JoggerConnection.ts","../src/lib/v1/NovaCellAPIClient.ts","../src/lib/v1/NovaClient.ts"],"mappings":"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"}
|