@jsenv/terminal-recorder 1.5.52 → 1.5.53
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/package.json +2 -2
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@xterm/addon-webgl/lib/addon-webgl.mjs.map +4 -1620
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@xterm/xterm/lib/xterm.mjs.map +4 -3589
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/packages/internal/plugin-supervisor/src/client/supervisor.js +172 -4
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/client_monitoring/client/client_reporter.js +578 -0
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/dependency_status/client/dependency_status.js +59 -0
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/page_switcher/client/page_switcher.js +731 -0
- package/src/.jsenv/chrome@149.0.0/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/server_events/client/server_events_client.js +461 -0
- package/src/.jsenv/chrome@149.0.0/xterm.html +20 -0
- package/src/.jsenv/chrome@149.0.0/xterm.html@L11C7-L15C16.js +5 -0
- package/src/.jsenv/chrome@149.0.0/xterm.html@L17C7-L21C16.js +5 -0
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
let createEventsManager;
|
|
2
|
+
events_manager: {
|
|
3
|
+
createEventsManager = ({ effect = () => {} } = {}) => {
|
|
4
|
+
const callbacksMap = new Map();
|
|
5
|
+
let cleanup;
|
|
6
|
+
const addCallbacks = (namedCallbacks) => {
|
|
7
|
+
let callbacksMapSize = callbacksMap.size;
|
|
8
|
+
Object.keys(namedCallbacks).forEach((eventName) => {
|
|
9
|
+
const callback = namedCallbacks[eventName];
|
|
10
|
+
const existingCallbacks = callbacksMap.get(eventName);
|
|
11
|
+
let callbacks;
|
|
12
|
+
if (existingCallbacks) {
|
|
13
|
+
callbacks = existingCallbacks;
|
|
14
|
+
} else {
|
|
15
|
+
callbacks = [];
|
|
16
|
+
callbacksMap.set(eventName, callbacks);
|
|
17
|
+
}
|
|
18
|
+
callbacks.push(callback);
|
|
19
|
+
});
|
|
20
|
+
if (effect && callbacksMapSize === 0 && callbacksMapSize.size > 0) {
|
|
21
|
+
cleanup = effect();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let removed = false;
|
|
25
|
+
return () => {
|
|
26
|
+
if (removed) return;
|
|
27
|
+
removed = true;
|
|
28
|
+
callbacksMapSize = callbacksMap.size;
|
|
29
|
+
Object.keys(namedCallbacks).forEach((eventName) => {
|
|
30
|
+
const callback = namedCallbacks[eventName];
|
|
31
|
+
const callbacks = callbacksMap.get(eventName);
|
|
32
|
+
if (callbacks) {
|
|
33
|
+
const index = callbacks.indexOf(callback);
|
|
34
|
+
if (index > -1) {
|
|
35
|
+
callbacks.splice(index, 1);
|
|
36
|
+
if (callbacks.length === 0) {
|
|
37
|
+
callbacksMap.delete(eventName);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
namedCallbacks = null; // allow garbage collect
|
|
43
|
+
if (
|
|
44
|
+
cleanup &&
|
|
45
|
+
typeof cleanup === "function" &&
|
|
46
|
+
callbacksMapSize > 0 &&
|
|
47
|
+
callbacksMapSize.size === 0
|
|
48
|
+
) {
|
|
49
|
+
cleanup();
|
|
50
|
+
cleanup = null;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const triggerCallbacks = (event) => {
|
|
56
|
+
const callbacks = callbacksMap.get(event.type);
|
|
57
|
+
if (callbacks) {
|
|
58
|
+
callbacks.forEach((callback) => {
|
|
59
|
+
callback(event);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const destroy = () => {
|
|
65
|
+
callbacksMap.clear();
|
|
66
|
+
if (cleanup) {
|
|
67
|
+
cleanup();
|
|
68
|
+
cleanup = null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
addCallbacks,
|
|
74
|
+
triggerCallbacks,
|
|
75
|
+
destroy,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let createConnectionManager;
|
|
81
|
+
connection_manager: {
|
|
82
|
+
const READY_STATES = {
|
|
83
|
+
CONNECTING: "connecting",
|
|
84
|
+
OPEN: "open",
|
|
85
|
+
CLOSING: "closing",
|
|
86
|
+
CLOSED: "closed",
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
createConnectionManager = (
|
|
90
|
+
attemptConnection,
|
|
91
|
+
{ logs, retry, retryAfter, retryMaxAttempt, retryAllocatedMs },
|
|
92
|
+
) => {
|
|
93
|
+
const readyState = {
|
|
94
|
+
value: READY_STATES.CLOSED,
|
|
95
|
+
goTo: (value) => {
|
|
96
|
+
if (value === readyState.value) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
readyState.value = value;
|
|
100
|
+
readyState.onchange();
|
|
101
|
+
},
|
|
102
|
+
onchange: () => {},
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
let _disconnect = () => {};
|
|
106
|
+
const connect = () => {
|
|
107
|
+
if (
|
|
108
|
+
readyState.value === READY_STATES.CONNECTING ||
|
|
109
|
+
readyState.value === READY_STATES.OPEN
|
|
110
|
+
) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let retryCount = 0;
|
|
115
|
+
let msSpent = 0;
|
|
116
|
+
const attempt = () => {
|
|
117
|
+
readyState.goTo(READY_STATES.CONNECTING);
|
|
118
|
+
let timeout;
|
|
119
|
+
const cancelAttempt = attemptConnection({
|
|
120
|
+
onClosed: () => {
|
|
121
|
+
if (!retry) {
|
|
122
|
+
readyState.goTo(READY_STATES.CLOSED);
|
|
123
|
+
if (logs) {
|
|
124
|
+
console.info(`[jsenv] failed to connect to server`);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (retryCount > retryMaxAttempt) {
|
|
129
|
+
readyState.goTo(READY_STATES.CLOSED);
|
|
130
|
+
if (logs) {
|
|
131
|
+
console.info(
|
|
132
|
+
`[jsenv] could not connect to server after ${retryMaxAttempt} attempt`,
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (retryAllocatedMs && msSpent > retryAllocatedMs) {
|
|
138
|
+
readyState.goTo(READY_STATES.CLOSED);
|
|
139
|
+
if (logs) {
|
|
140
|
+
console.info(
|
|
141
|
+
`[jsenv] could not connect to server in less than ${retryAllocatedMs}ms`,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// if closed while open -> connection lost
|
|
147
|
+
// otherwise it's the attempt to connect for the first time
|
|
148
|
+
// or to reconnect
|
|
149
|
+
if (readyState.value === READY_STATES.OPEN) {
|
|
150
|
+
if (logs) {
|
|
151
|
+
console.info(
|
|
152
|
+
`[jsenv] server connection lost; retrying to connect`,
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
retryCount++;
|
|
157
|
+
timeout = setTimeout(() => {
|
|
158
|
+
msSpent += retryAfter;
|
|
159
|
+
attempt();
|
|
160
|
+
}, retryAfter);
|
|
161
|
+
},
|
|
162
|
+
onOpen: () => {
|
|
163
|
+
readyState.goTo(READY_STATES.OPEN);
|
|
164
|
+
if (logs) {
|
|
165
|
+
// console.info(`[jsenv] connected to server`);
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
_disconnect = () => {
|
|
170
|
+
cancelAttempt();
|
|
171
|
+
clearTimeout(timeout);
|
|
172
|
+
readyState.goTo(READY_STATES.CLOSED);
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
attempt();
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
const disconnect = () => {
|
|
179
|
+
if (
|
|
180
|
+
readyState.value !== READY_STATES.CONNECTING &&
|
|
181
|
+
readyState.value !== READY_STATES.OPEN
|
|
182
|
+
) {
|
|
183
|
+
if (logs) {
|
|
184
|
+
console.warn(
|
|
185
|
+
`disconnect() ignored because connection is ${readyState.value}`,
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return _disconnect();
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const removePageUnloadListener = listenPageUnload(() => {
|
|
194
|
+
if (
|
|
195
|
+
readyState.value === READY_STATES.CONNECTING ||
|
|
196
|
+
readyState.value === READY_STATES.OPEN
|
|
197
|
+
) {
|
|
198
|
+
_disconnect();
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
return {
|
|
203
|
+
readyState,
|
|
204
|
+
connect,
|
|
205
|
+
disconnect,
|
|
206
|
+
destroy: () => {
|
|
207
|
+
removePageUnloadListener();
|
|
208
|
+
disconnect();
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// const listenPageMightFreeze = (callback) => {
|
|
214
|
+
// const removePageHideListener = listenEvent(window, "pagehide", (pageHideEvent) => {
|
|
215
|
+
// if (pageHideEvent.persisted === true) {
|
|
216
|
+
// callback(pageHideEvent)
|
|
217
|
+
// }
|
|
218
|
+
// })
|
|
219
|
+
// return removePageHideListener
|
|
220
|
+
// }
|
|
221
|
+
|
|
222
|
+
// const listenPageFreeze = (callback) => {
|
|
223
|
+
// const removeFreezeListener = listenEvent(document, "freeze", (freezeEvent) => {
|
|
224
|
+
// callback(freezeEvent)
|
|
225
|
+
// })
|
|
226
|
+
// return removeFreezeListener
|
|
227
|
+
// }
|
|
228
|
+
|
|
229
|
+
// const listenPageIsRestored = (callback) => {
|
|
230
|
+
// const removeResumeListener = listenEvent(document, "resume", (resumeEvent) => {
|
|
231
|
+
// removePageshowListener()
|
|
232
|
+
// callback(resumeEvent)
|
|
233
|
+
// })
|
|
234
|
+
// const removePageshowListener = listenEvent(window, "pageshow", (pageshowEvent) => {
|
|
235
|
+
// if (pageshowEvent.persisted === true) {
|
|
236
|
+
// removePageshowListener()
|
|
237
|
+
// removeResumeListener()
|
|
238
|
+
// callback(pageshowEvent)
|
|
239
|
+
// }
|
|
240
|
+
// })
|
|
241
|
+
// return () => {
|
|
242
|
+
// removeResumeListener()
|
|
243
|
+
// removePageshowListener()
|
|
244
|
+
// }
|
|
245
|
+
// }
|
|
246
|
+
|
|
247
|
+
const listenPageUnload = (callback) => {
|
|
248
|
+
const removePageHideListener = listenEvent(
|
|
249
|
+
window,
|
|
250
|
+
"pagehide",
|
|
251
|
+
(pageHideEvent) => {
|
|
252
|
+
if (pageHideEvent.persisted !== true) {
|
|
253
|
+
callback(pageHideEvent);
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
);
|
|
257
|
+
return removePageHideListener;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
const listenEvent = (emitter, event, callback) => {
|
|
261
|
+
emitter.addEventListener(event, callback);
|
|
262
|
+
return () => {
|
|
263
|
+
emitter.removeEventListener(event, callback);
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
let createWebSocketConnection;
|
|
269
|
+
connection_using_websocket: {
|
|
270
|
+
createWebSocketConnection = (
|
|
271
|
+
websocketUrl,
|
|
272
|
+
{
|
|
273
|
+
logs,
|
|
274
|
+
protocols = [],
|
|
275
|
+
useEventsToManageConnection = true,
|
|
276
|
+
retry = false,
|
|
277
|
+
retryAfter = 1000,
|
|
278
|
+
retryMaxAttempt = Infinity,
|
|
279
|
+
retryAllocatedMs = Infinity,
|
|
280
|
+
} = {},
|
|
281
|
+
) => {
|
|
282
|
+
const connectionManager = createConnectionManager(
|
|
283
|
+
({ onClosed, onOpen }) => {
|
|
284
|
+
let socket = new WebSocket(websocketUrl, protocols);
|
|
285
|
+
let interval;
|
|
286
|
+
const cleanup = () => {
|
|
287
|
+
if (socket) {
|
|
288
|
+
socket.onerror = null;
|
|
289
|
+
socket.onopen = null;
|
|
290
|
+
socket.onclose = null;
|
|
291
|
+
socket.onmessage = null;
|
|
292
|
+
socket = null;
|
|
293
|
+
clearInterval(interval);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
socket.onerror = () => {
|
|
297
|
+
cleanup();
|
|
298
|
+
onClosed();
|
|
299
|
+
};
|
|
300
|
+
socket.onopen = () => {
|
|
301
|
+
socket.onopen = null;
|
|
302
|
+
onOpen();
|
|
303
|
+
interval = setInterval(() => {
|
|
304
|
+
socket.send('{"type":"ping"}');
|
|
305
|
+
}, 30_000);
|
|
306
|
+
};
|
|
307
|
+
socket.onclose = () => {
|
|
308
|
+
cleanup();
|
|
309
|
+
onClosed();
|
|
310
|
+
};
|
|
311
|
+
socket.onmessage = (messageEvent) => {
|
|
312
|
+
const event = JSON.parse(messageEvent.data);
|
|
313
|
+
eventsManager.triggerCallbacks(event);
|
|
314
|
+
};
|
|
315
|
+
return () => {
|
|
316
|
+
if (socket) {
|
|
317
|
+
socket.close();
|
|
318
|
+
cleanup();
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
},
|
|
322
|
+
{ logs, retry, retryAfter, retryMaxAttempt, retryAllocatedMs },
|
|
323
|
+
);
|
|
324
|
+
const eventsManager = createEventsManager({
|
|
325
|
+
effect: () => {
|
|
326
|
+
if (useEventsToManageConnection) {
|
|
327
|
+
connectionManager.connect();
|
|
328
|
+
return () => {
|
|
329
|
+
connectionManager.disconnect();
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
return null;
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
return {
|
|
337
|
+
readyState: connectionManager.readyState,
|
|
338
|
+
connect: connectionManager.connect,
|
|
339
|
+
disconnect: connectionManager.disconnect,
|
|
340
|
+
listenEvents: (namedCallbacks) => {
|
|
341
|
+
return eventsManager.addCallbacks(namedCallbacks);
|
|
342
|
+
},
|
|
343
|
+
destroy: () => {
|
|
344
|
+
connectionManager.destroy();
|
|
345
|
+
eventsManager.destroy();
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// let createEventSourceConnection;
|
|
352
|
+
// connection_using_event_source: {
|
|
353
|
+
// createEventSourceConnection = (
|
|
354
|
+
// eventSourceUrl,
|
|
355
|
+
// {
|
|
356
|
+
// withCredentials = true,
|
|
357
|
+
// lastEventId,
|
|
358
|
+
// useEventsToManageConnection = true,
|
|
359
|
+
// retry = false,
|
|
360
|
+
// retryMaxAttempt = Infinity,
|
|
361
|
+
// retryAllocatedMs = Infinity,
|
|
362
|
+
// } = {},
|
|
363
|
+
// ) => {
|
|
364
|
+
// const eventSourceOrigin = new URL(eventSourceUrl).origin;
|
|
365
|
+
// const attemptConnection = ({ onOpen, onClosed }) => {
|
|
366
|
+
// const url = lastEventId
|
|
367
|
+
// ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId)
|
|
368
|
+
// : eventSourceUrl;
|
|
369
|
+
// let eventSource = new EventSource(url, { withCredentials });
|
|
370
|
+
// eventSource.onerror = () => {
|
|
371
|
+
// eventSource.onerror = null;
|
|
372
|
+
// eventSource.onopen = null;
|
|
373
|
+
// eventSource.onmessage = null;
|
|
374
|
+
// eventSource = null;
|
|
375
|
+
// onClosed();
|
|
376
|
+
// };
|
|
377
|
+
// eventSource.onopen = () => {
|
|
378
|
+
// eventSource.onopen = null;
|
|
379
|
+
// onOpen();
|
|
380
|
+
// };
|
|
381
|
+
// eventSource.onmessage = (messageEvent) => {
|
|
382
|
+
// if (messageEvent.origin === eventSourceOrigin) {
|
|
383
|
+
// if (messageEvent.lastEventId) {
|
|
384
|
+
// lastEventId = messageEvent.lastEventId;
|
|
385
|
+
// }
|
|
386
|
+
// const event = JSON.parse(messageEvent.data);
|
|
387
|
+
// eventsManager.triggerCallbacks(event);
|
|
388
|
+
// }
|
|
389
|
+
// };
|
|
390
|
+
// return () => {
|
|
391
|
+
// if (eventSource) {
|
|
392
|
+
// eventSource.close();
|
|
393
|
+
// }
|
|
394
|
+
// };
|
|
395
|
+
// };
|
|
396
|
+
// const connectionManager = createConnectionManager(attemptConnection, {
|
|
397
|
+
// retry,
|
|
398
|
+
// retryMaxAttempt,
|
|
399
|
+
// retryAllocatedMs,
|
|
400
|
+
// });
|
|
401
|
+
// const eventsManager = createEventsManager({
|
|
402
|
+
// effect: () => {
|
|
403
|
+
// if (useEventsToManageConnection) {
|
|
404
|
+
// connectionManager.connect();
|
|
405
|
+
// return () => {
|
|
406
|
+
// connectionManager.disconnect();
|
|
407
|
+
// };
|
|
408
|
+
// }
|
|
409
|
+
// return null;
|
|
410
|
+
// },
|
|
411
|
+
// });
|
|
412
|
+
|
|
413
|
+
// return {
|
|
414
|
+
// readyState: connectionManager.readyState,
|
|
415
|
+
// listenEvents: (namedCallbacks) => {
|
|
416
|
+
// return eventsManager.addCallbacks(namedCallbacks);
|
|
417
|
+
// },
|
|
418
|
+
// destroy: () => {
|
|
419
|
+
// connectionManager.destroy();
|
|
420
|
+
// eventsManager.destroy();
|
|
421
|
+
// },
|
|
422
|
+
// };
|
|
423
|
+
// };
|
|
424
|
+
|
|
425
|
+
// const addLastEventIdIntoUrlSearchParams = (url, lastEventId) => {
|
|
426
|
+
// if (url.indexOf("?") === -1) {
|
|
427
|
+
// url += "?";
|
|
428
|
+
// } else {
|
|
429
|
+
// url += "&";
|
|
430
|
+
// }
|
|
431
|
+
// return `${url}last-event-id=${encodeURIComponent(lastEventId)}`;
|
|
432
|
+
// };
|
|
433
|
+
// }
|
|
434
|
+
|
|
435
|
+
const serverEventsInterface = {
|
|
436
|
+
readyState: {},
|
|
437
|
+
connect: () => {},
|
|
438
|
+
disconnect: () => {},
|
|
439
|
+
listenEvents: () => {},
|
|
440
|
+
setup: ({ logs }) => {
|
|
441
|
+
const websocketScheme = self.location.protocol === "https:" ? "wss" : "ws";
|
|
442
|
+
const websocketUrl = `${websocketScheme}://${self.location.host}/.internal/events.websocket`;
|
|
443
|
+
const websocketConnection = createWebSocketConnection(websocketUrl, {
|
|
444
|
+
logs,
|
|
445
|
+
retry: true,
|
|
446
|
+
retryAllocatedMs: 10_000,
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
const { readyState, connect, disconnect, listenEvents } =
|
|
450
|
+
websocketConnection;
|
|
451
|
+
|
|
452
|
+
serverEventsInterface.readyState = readyState;
|
|
453
|
+
serverEventsInterface.connect = connect;
|
|
454
|
+
serverEventsInterface.disconnect = disconnect;
|
|
455
|
+
serverEventsInterface.listenEvents = listenEvents;
|
|
456
|
+
|
|
457
|
+
connect();
|
|
458
|
+
},
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
window.__server_events__ = serverEventsInterface;
|
|
@@ -7,6 +7,19 @@
|
|
|
7
7
|
</head>
|
|
8
8
|
<body>
|
|
9
9
|
<jsenv-scripts>
|
|
10
|
+
<script src="/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/server_events/client/server_events_client.js" jsenv-injected-by="jsenv:server_events"></script>
|
|
11
|
+
<script jsenv-injected-by="jsenv:server_events" content-indented="" jsenv-cooked-by="jsenv:html_inline_content_analysis">
|
|
12
|
+
window.__server_events__.setup({
|
|
13
|
+
"logs": true
|
|
14
|
+
});
|
|
15
|
+
</script>
|
|
16
|
+
<script src="/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/client_monitoring/client/client_reporter.js" jsenv-injected-by="jsenv:client_monitoring"></script>
|
|
17
|
+
<script jsenv-injected-by="jsenv:client_monitoring" content-indented="" jsenv-cooked-by="jsenv:html_inline_content_analysis">
|
|
18
|
+
window.__client_monitoring__.setup({
|
|
19
|
+
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
22
|
+
<script src="/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/page_switcher/client/page_switcher.js" jsenv-injected-by="jsenv:page_switcher"></script>
|
|
10
23
|
<script src="/@fs/Users/dmail/Documents/dev/jsenv/core/packages/internal/plugin-supervisor/src/client/supervisor.js" jsenv-injected-by="jsenv:supervisor"></script>
|
|
11
24
|
<script jsenv-injected-by="jsenv:supervisor" content-indented="">
|
|
12
25
|
window.__supervisor__.setup({
|
|
@@ -29,6 +42,13 @@
|
|
|
29
42
|
});
|
|
30
43
|
</script>
|
|
31
44
|
<script src="/@fs/Users/dmail/Documents/dev/jsenv/core/packages/backend/server/src/plugins/autoreload_on_server_restart/client/autoreload_on_server_restart.js" jsenv-injected-by="jsenv:autoreload_on_server_restart" data-ws-endpoint="/.internal/events.websocket"></script>
|
|
45
|
+
<script type="module" jsenv-injected-by="jsenv:dependency_status" content-indented="">
|
|
46
|
+
import { initDependencyStatus } from "/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/dependency_status/client/dependency_status.js";
|
|
47
|
+
|
|
48
|
+
initDependencyStatus({
|
|
49
|
+
"problems": []
|
|
50
|
+
});
|
|
51
|
+
</script>
|
|
32
52
|
<script type="module" jsenv-injected-by="jsenv:drop_to_open" content-indented="">
|
|
33
53
|
import { initDropToOpen } from "/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/drop_to_open/client/drop_to_open.js";
|
|
34
54
|
|