@wandelbots/nova-js 3.8.0 → 3.9.0-pr.280.2a86180

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.
Files changed (64) hide show
  1. package/dist/{AutoReconnectingWebsocket-9Of5_BJe.d.cts → AutoReconnectingWebsocket-DEs8wlLZ.d.cts} +2 -2
  2. package/dist/AutoReconnectingWebsocket-DEs8wlLZ.d.cts.map +1 -0
  3. package/dist/{AutoReconnectingWebsocket-9Of5_BJe.d.mts → AutoReconnectingWebsocket-DEs8wlLZ.d.mts} +2 -2
  4. package/dist/AutoReconnectingWebsocket-DEs8wlLZ.d.mts.map +1 -0
  5. package/dist/LoginWithAuth0-DeirP_w9.mjs.map +1 -1
  6. package/dist/LoginWithAuth0-oZFpwe7m.cjs.map +1 -1
  7. package/dist/index.cjs +3 -3
  8. package/dist/index.d.cts +2 -2
  9. package/dist/index.d.mts +2 -2
  10. package/dist/index.mjs +1 -1
  11. package/dist/lib/{v1 → deprecated/v1}/index.cjs +10 -10
  12. package/dist/lib/deprecated/v1/index.cjs.map +1 -0
  13. package/dist/lib/{v1 → deprecated/v1}/index.d.cts +4 -4
  14. package/dist/lib/deprecated/v1/index.d.cts.map +1 -0
  15. package/dist/lib/{v1 → deprecated/v1}/index.d.mts +4 -4
  16. package/dist/lib/deprecated/v1/index.d.mts.map +1 -0
  17. package/dist/lib/{v1 → deprecated/v1}/index.mjs +4 -4
  18. package/dist/lib/deprecated/v1/index.mjs.map +1 -0
  19. package/dist/lib/v2/index.cjs +151 -3
  20. package/dist/lib/v2/index.cjs.map +1 -1
  21. package/dist/lib/v2/index.d.cts +98 -11
  22. package/dist/lib/v2/index.d.cts.map +1 -1
  23. package/dist/lib/v2/index.d.mts +98 -11
  24. package/dist/lib/v2/index.d.mts.map +1 -1
  25. package/dist/lib/v2/index.mjs +150 -4
  26. package/dist/lib/v2/index.mjs.map +1 -1
  27. package/dist/{NovaClient-B-QdK0HR.cjs → wandelscriptUtils-BvZ8hcul.cjs} +29 -29
  28. package/dist/wandelscriptUtils-BvZ8hcul.cjs.map +1 -0
  29. package/dist/{NovaClient-DLElEQzc.mjs → wandelscriptUtils-CsQAUu_9.mjs} +30 -30
  30. package/dist/wandelscriptUtils-CsQAUu_9.mjs.map +1 -0
  31. package/dist/{NovaClient-4PG1cMau.d.cts → wandelscriptUtils-Cz-yQ2eJ.d.mts} +16 -16
  32. package/dist/wandelscriptUtils-Cz-yQ2eJ.d.mts.map +1 -0
  33. package/dist/{NovaClient-TJ7Bua4l.d.mts → wandelscriptUtils-_Si3ueEd.d.cts} +16 -16
  34. package/dist/wandelscriptUtils-_Si3ueEd.d.cts.map +1 -0
  35. package/package.json +4 -4
  36. package/src/index.ts +2 -2
  37. package/src/lib/AutoReconnectingWebsocket.ts +1 -1
  38. package/src/lib/{v1 → deprecated/v1}/ConnectedMotionGroup.ts +2 -2
  39. package/src/lib/{v1 → deprecated/v1}/JoggerConnection.ts +2 -2
  40. package/src/lib/{v1 → deprecated/v1}/MotionStreamConnection.ts +2 -2
  41. package/src/lib/{v1 → deprecated/v1}/NovaClient.ts +4 -4
  42. package/src/lib/{v1 → deprecated/v1}/ProgramStateConnection.ts +2 -2
  43. package/src/lib/{v1 → deprecated/v1}/mock/MockNovaInstance.ts +1 -1
  44. package/src/lib/{v2 → deprecated/v2}/NovaClient.ts +5 -5
  45. package/src/lib/v2/Nova.ts +201 -0
  46. package/src/lib/v2/NovaAPIClient.ts +154 -0
  47. package/src/lib/v2/index.ts +6 -3
  48. package/dist/AutoReconnectingWebsocket-9Of5_BJe.d.cts.map +0 -1
  49. package/dist/AutoReconnectingWebsocket-9Of5_BJe.d.mts.map +0 -1
  50. package/dist/NovaClient-4PG1cMau.d.cts.map +0 -1
  51. package/dist/NovaClient-B-QdK0HR.cjs.map +0 -1
  52. package/dist/NovaClient-DLElEQzc.mjs.map +0 -1
  53. package/dist/NovaClient-TJ7Bua4l.d.mts.map +0 -1
  54. package/dist/lib/v1/index.cjs.map +0 -1
  55. package/dist/lib/v1/index.d.cts.map +0 -1
  56. package/dist/lib/v1/index.d.mts.map +0 -1
  57. package/dist/lib/v1/index.mjs.map +0 -1
  58. /package/src/lib/{v1 → deprecated/v1}/NovaCellAPIClient.ts +0 -0
  59. /package/src/lib/{v1 → deprecated/v1}/getLatestTrajectories.ts +0 -0
  60. /package/src/lib/{v1 → deprecated/v1}/index.ts +0 -0
  61. /package/src/lib/{v1 → deprecated/v1}/motionStateUpdate.ts +0 -0
  62. /package/src/lib/{v1 → deprecated/v1}/wandelscriptUtils.ts +0 -0
  63. /package/src/lib/{v2 → deprecated/v2}/NovaCellAPIClient.ts +0 -0
  64. /package/src/lib/{v2 → deprecated/v2}/wandelscriptUtils.ts +0 -0
@@ -0,0 +1,201 @@
1
+ /** biome-ignore-all lint/style/noNonNullAssertion: legacy code */
2
+ import type { Configuration as BaseConfiguration } from "@wandelbots/nova-api/v2"
3
+ import type { AxiosRequestConfig } from "axios"
4
+ import axios, { isAxiosError } from "axios"
5
+ import urlJoin from "url-join"
6
+ import { loginWithAuth0 } from "../../LoginWithAuth0"
7
+ import { AutoReconnectingWebsocket } from "../AutoReconnectingWebsocket"
8
+ import { availableStorage } from "../availableStorage"
9
+ import { parseNovaInstanceUrl } from "../converters"
10
+ import { NovaAPIClient } from "./NovaAPIClient"
11
+ import { MockNovaInstance } from "./mock/MockNovaInstance"
12
+
13
+ export type NovaClientConfig = {
14
+ /**
15
+ * Url of the deployed NOVA instance to connect to
16
+ * e.g. https://saeattii.instance.wandelbots.io
17
+ */
18
+ instanceUrl: string
19
+
20
+ /**
21
+ * Id of the cell to connect to
22
+ */
23
+ cellId: string
24
+
25
+ /**
26
+ * Access token for Bearer authentication.
27
+ * If running on a NOVA instance, this can be automatically retrieved from
28
+ * the current session when omitted.
29
+ */
30
+ accessToken?: string
31
+ } & Omit<BaseConfiguration, "isJsonMime" | "basePath">
32
+
33
+ /**
34
+ *
35
+ * Client for connecting to a NOVA instance and controlling robots.
36
+ */
37
+ export class Nova {
38
+ readonly api: NovaAPIClient
39
+ readonly config: NovaClientConfig
40
+ readonly mock?: MockNovaInstance
41
+ readonly instanceUrl: URL
42
+ authPromise: Promise<string | null> | null = null
43
+ accessToken: string | null = null
44
+
45
+ constructor(config: NovaClientConfig) {
46
+ this.config = config
47
+ this.accessToken =
48
+ config.accessToken ||
49
+ availableStorage.getString("wbjs.access_token") ||
50
+ null
51
+
52
+ if (this.config.instanceUrl === "https://mock.example.com") {
53
+ this.mock = new MockNovaInstance()
54
+ }
55
+ this.instanceUrl = parseNovaInstanceUrl(this.config.instanceUrl)
56
+
57
+ // Set up Axios instance with interceptor for token fetching
58
+ const axiosInstance = axios.create({
59
+ baseURL: urlJoin(this.instanceUrl.href, "/api/v2"),
60
+ // TODO - backend needs to set proper CORS headers for this
61
+ headers:
62
+ typeof window !== "undefined" &&
63
+ window.location.origin.includes("localhost")
64
+ ? {}
65
+ : {
66
+ // Identify the client to the backend for logging purposes
67
+ "X-Wandelbots-Client": "Wandelbots-Nova-JS-SDK",
68
+ },
69
+ })
70
+
71
+ axiosInstance.interceptors.request.use(async (request) => {
72
+ if (!request.headers.Authorization) {
73
+ if (this.accessToken) {
74
+ request.headers.Authorization = `Bearer ${this.accessToken}`
75
+ } else if (this.config.username && this.config.password) {
76
+ request.headers.Authorization = `Basic ${btoa(`${config.username}:${config.password}`)}`
77
+ }
78
+ }
79
+ return request
80
+ })
81
+
82
+ if (typeof window !== "undefined") {
83
+ axiosInstance.interceptors.response.use(
84
+ (r) => r,
85
+ async (error) => {
86
+ if (isAxiosError(error)) {
87
+ if (error.response?.status === 401) {
88
+ // If we hit a 401, attempt to login the user and retry with
89
+ // a new access token
90
+ try {
91
+ await this.renewAuthentication()
92
+
93
+ if (error.config) {
94
+ if (this.accessToken) {
95
+ error.config.headers.Authorization = `Bearer ${this.accessToken}`
96
+ } else {
97
+ delete error.config.headers.Authorization
98
+ }
99
+ return axiosInstance.request(error.config)
100
+ }
101
+ } catch (err) {
102
+ return Promise.reject(err)
103
+ }
104
+ } else if (error.response?.status === 503) {
105
+ // Check if the server as a whole is down
106
+ const res = await fetch(window.location.href)
107
+ if (res.status === 503) {
108
+ // Go to 503 page
109
+ window.location.reload()
110
+ }
111
+ }
112
+ }
113
+
114
+ return Promise.reject(error)
115
+ },
116
+ )
117
+ }
118
+
119
+ this.api = new NovaAPIClient(this.config.cellId, {
120
+ ...config,
121
+ basePath: urlJoin(this.instanceUrl.href, "/api/v2"),
122
+ isJsonMime: (mime: string) => {
123
+ return mime === "application/json"
124
+ },
125
+ baseOptions: {
126
+ ...(this.mock
127
+ ? ({
128
+ adapter: (config) => {
129
+ return this.mock!.handleAPIRequest(config)
130
+ },
131
+ } satisfies AxiosRequestConfig)
132
+ : {}),
133
+ ...config.baseOptions,
134
+ },
135
+ axiosInstance,
136
+ })
137
+ }
138
+
139
+ async renewAuthentication(): Promise<void> {
140
+ if (this.authPromise) {
141
+ // Don't double up
142
+ return
143
+ }
144
+
145
+ const storedToken = availableStorage.getString("wbjs.access_token")
146
+ if (storedToken && this.accessToken !== storedToken) {
147
+ // Might be newer than the one we have
148
+ this.accessToken = storedToken
149
+ return
150
+ }
151
+
152
+ // Otherwise, perform login flow
153
+ this.authPromise = loginWithAuth0(this.instanceUrl)
154
+ try {
155
+ this.accessToken = await this.authPromise
156
+ if (this.accessToken) {
157
+ // Cache access token so we don't need to log in every refresh
158
+ availableStorage.setString("wbjs.access_token", this.accessToken)
159
+ } else {
160
+ availableStorage.delete("wbjs.access_token")
161
+ }
162
+ } finally {
163
+ this.authPromise = null
164
+ }
165
+ }
166
+
167
+ makeWebsocketURL(path: string): string {
168
+ const url = new URL(
169
+ urlJoin(
170
+ this.instanceUrl.href,
171
+ `/api/v2/cells/${this.config.cellId}`,
172
+ path,
173
+ ),
174
+ )
175
+ url.protocol = url.protocol.replace("http", "ws")
176
+ url.protocol = url.protocol.replace("https", "wss")
177
+
178
+ // If provided, add basic auth credentials to the URL
179
+ // NOTE - basic auth is deprecated on websockets and doesn't work in Safari
180
+ // use tokens instead
181
+ if (this.accessToken) {
182
+ url.searchParams.append("token", this.accessToken)
183
+ } else if (this.config.username && this.config.password) {
184
+ url.username = this.config.username
185
+ url.password = this.config.password
186
+ }
187
+
188
+ return url.toString()
189
+ }
190
+
191
+ /**
192
+ * Retrieve an AutoReconnectingWebsocket to the given path on the Nova instance.
193
+ * If you explicitly want to reconnect an existing websocket, call `reconnect`
194
+ * on the returned object.
195
+ */
196
+ openReconnectingWebsocket(path: string) {
197
+ return new AutoReconnectingWebsocket(this.makeWebsocketURL(path), {
198
+ mock: this.mock,
199
+ })
200
+ }
201
+ }
@@ -0,0 +1,154 @@
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: legacy code */
2
+ /** biome-ignore-all lint/style/noNonNullAssertion: legacy code */
3
+ import type {
4
+ BaseAPI,
5
+ Configuration as BaseConfiguration,
6
+ } from "@wandelbots/nova-api/v2"
7
+ import {
8
+ ApplicationApi,
9
+ BUSInputsOutputsApi,
10
+ CellApi,
11
+ ControllerApi,
12
+ ControllerInputsOutputsApi,
13
+ JoggingApi,
14
+ KinematicsApi,
15
+ LicenseApi,
16
+ MotionGroupApi,
17
+ MotionGroupModelsApi,
18
+ NOVACloudApi,
19
+ ProgramApi,
20
+ RobotConfigurationsApi,
21
+ StoreCollisionComponentsApi,
22
+ StoreCollisionSetupsApi,
23
+ StoreObjectApi,
24
+ SystemApi,
25
+ TrajectoryCachingApi,
26
+ TrajectoryExecutionApi,
27
+ TrajectoryPlanningApi,
28
+ VersionApi,
29
+ VirtualControllerApi,
30
+ VirtualControllerBehaviorApi,
31
+ VirtualControllerInputsOutputsApi,
32
+ } from "@wandelbots/nova-api/v2"
33
+ import type { AxiosInstance } from "axios"
34
+ import axios from "axios"
35
+
36
+ type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R
37
+ ? (...args: P) => R
38
+ : never
39
+
40
+ type UnwrapAxiosResponseReturn<T> = T extends (...a: any) => any
41
+ ? (
42
+ ...a: Parameters<T>
43
+ ) => Promise<Awaited<ReturnType<T>> extends { data: infer D } ? D : never>
44
+ : never
45
+
46
+ type WithUnwrappedAxiosResponse<T> = {
47
+ [P in keyof T]: UnwrapAxiosResponseReturn<T[P]>
48
+ }
49
+
50
+ /**
51
+ * API client providing type-safe access to all the endpoints of a NOVA
52
+ * instance.
53
+ */
54
+ export class NovaAPIClient {
55
+ constructor(
56
+ readonly cellId: string,
57
+ readonly opts: BaseConfiguration & {
58
+ axiosInstance?: AxiosInstance
59
+ mock?: boolean
60
+ },
61
+ ) {}
62
+
63
+ private withUnwrappedResponsesOnly<T extends BaseAPI>(
64
+ ApiConstructor: new (
65
+ config: BaseConfiguration,
66
+ basePath: string,
67
+ axios: AxiosInstance,
68
+ ) => T,
69
+ ) {
70
+ const apiClient = new ApiConstructor(
71
+ {
72
+ ...this.opts,
73
+ isJsonMime: (mime: string) => {
74
+ return mime === "application/json"
75
+ },
76
+ },
77
+ this.opts.basePath ?? "",
78
+ this.opts.axiosInstance ?? axios.create(),
79
+ ) as {
80
+ [key: string | symbol]: any
81
+ }
82
+
83
+ for (const key of Reflect.ownKeys(Reflect.getPrototypeOf(apiClient)!)) {
84
+ if (key !== "constructor" && typeof apiClient[key] === "function") {
85
+ const originalFunction = apiClient[key]
86
+ apiClient[key] = (...args: any[]) => {
87
+ return originalFunction
88
+ .apply(apiClient, args)
89
+ .then((res: any) => res.data)
90
+ }
91
+ }
92
+ }
93
+
94
+ return apiClient as WithUnwrappedAxiosResponse<T>
95
+ }
96
+
97
+ readonly system = this.withUnwrappedResponsesOnly(SystemApi)
98
+ readonly cell = this.withUnwrappedResponsesOnly(CellApi)
99
+
100
+ readonly motionGroup = this.withUnwrappedResponsesOnly(MotionGroupApi)
101
+ readonly motionGroupModels =
102
+ this.withUnwrappedResponsesOnly(MotionGroupModelsApi)
103
+
104
+ readonly controller = this.withUnwrappedResponsesOnly(ControllerApi)
105
+
106
+ readonly controllerIOs = this.withUnwrappedResponsesOnly(
107
+ ControllerInputsOutputsApi,
108
+ )
109
+
110
+ readonly trajectoryPlanning = this.withUnwrappedResponsesOnly(
111
+ TrajectoryPlanningApi,
112
+ )
113
+ readonly trajectoryExecution = this.withUnwrappedResponsesOnly(
114
+ TrajectoryExecutionApi,
115
+ )
116
+ readonly trajectoryCaching =
117
+ this.withUnwrappedResponsesOnly(TrajectoryCachingApi)
118
+
119
+ readonly application = this.withUnwrappedResponsesOnly(ApplicationApi)
120
+ readonly applicationGlobal = this.withUnwrappedResponsesOnly(ApplicationApi)
121
+
122
+ readonly jogging = this.withUnwrappedResponsesOnly(JoggingApi)
123
+
124
+ readonly kinematics = this.withUnwrappedResponsesOnly(KinematicsApi)
125
+
126
+ readonly busInputsOutputs =
127
+ this.withUnwrappedResponsesOnly(BUSInputsOutputsApi)
128
+
129
+ readonly virtualController =
130
+ this.withUnwrappedResponsesOnly(VirtualControllerApi)
131
+ readonly virtualControllerBehavior = this.withUnwrappedResponsesOnly(
132
+ VirtualControllerBehaviorApi,
133
+ )
134
+ readonly virtualControllerIOs = this.withUnwrappedResponsesOnly(
135
+ VirtualControllerInputsOutputsApi,
136
+ )
137
+
138
+ readonly storeObject = this.withUnwrappedResponsesOnly(StoreObjectApi)
139
+ readonly storeCollisionComponents = this.withUnwrappedResponsesOnly(
140
+ StoreCollisionComponentsApi,
141
+ )
142
+ readonly storeCollisionSetups = this.withUnwrappedResponsesOnly(
143
+ StoreCollisionSetupsApi,
144
+ )
145
+
146
+ readonly program = this.withUnwrappedResponsesOnly(ProgramApi)
147
+
148
+ readonly license = this.withUnwrappedResponsesOnly(LicenseApi)
149
+ readonly novaCloud = this.withUnwrappedResponsesOnly(NOVACloudApi)
150
+ readonly robotConfigurations = this.withUnwrappedResponsesOnly(
151
+ RobotConfigurationsApi,
152
+ )
153
+ readonly version = this.withUnwrappedResponsesOnly(VersionApi)
154
+ }
@@ -1,4 +1,7 @@
1
1
  export * from "@wandelbots/nova-api/v2"
2
- export * from "./NovaCellAPIClient"
3
- export * from "./NovaClient"
4
- export * from "./wandelscriptUtils"
2
+ export * from "../deprecated/v2/NovaCellAPIClient"
3
+ export * from "../deprecated/v2/NovaClient"
4
+ export * from "../deprecated/v2/wandelscriptUtils"
5
+ export { Nova } from "./Nova"
6
+ export type { NovaClientConfig } from "./Nova"
7
+ export { NovaAPIClient } from "./NovaAPIClient"
@@ -1 +0,0 @@
1
- {"version":3,"file":"AutoReconnectingWebsocket-9Of5_BJe.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 +0,0 @@
1
- {"version":3,"file":"AutoReconnectingWebsocket-9Of5_BJe.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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NovaClient-4PG1cMau.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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"}