@jsenv/cli 0.2.12 → 0.2.15

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 (117) hide show
  1. package/package.json +2 -2
  2. package/template-node-package/package.json +4 -4
  3. package/template-web/.jsenv/craft/index.html +2 -2
  4. package/template-web/.jsenv/craft/main.css.js +2 -2
  5. package/template-web/.jsenv/craft/main.js +4 -4
  6. package/template-web/.jsenv/shape/index.html +1 -1
  7. package/template-web/package.json +7 -7
  8. package/template-web-components/.jsenv/craft/app/app_custom_element.css.js +2 -2
  9. package/template-web-components/.jsenv/craft/app/app_custom_element.js +3 -3
  10. package/template-web-components/.jsenv/craft/app/custom_elements_redefine.js +1 -1
  11. package/template-web-components/.jsenv/craft/index.html +2 -2
  12. package/template-web-components/.jsenv/craft/main.js +2 -2
  13. package/template-web-components/.jsenv/shape/index.html +1 -1
  14. package/template-web-components/package.json +7 -7
  15. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/computeKey.js +38 -0
  16. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/computeKey.js.map +11 -0
  17. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/constants.js +13 -0
  18. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/index.js +210 -0
  19. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/index.js.map +11 -0
  20. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/catchError.js +17 -0
  21. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/catchError.js.map +11 -0
  22. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/debounceRendering.js +21 -0
  23. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/debounceRendering.js.map +11 -0
  24. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/signaturesForType.js +2 -0
  25. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/unmount.js +20 -0
  26. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/unmount.js.map +11 -0
  27. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/vnode.js +68 -0
  28. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/vnode.js.map +11 -0
  29. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/core/src/runtime/vnodesForComponent.js +3 -0
  30. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/@prefresh/utils/src/index.js +43 -0
  31. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/debug/dist/debug.module.js +2 -0
  32. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/debug/dist/debug.module.js.map +181 -0
  33. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/devtools/dist/devtools.module.js +2 -0
  34. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/devtools/dist/devtools.module.js.map +29 -0
  35. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/dist/preact.module.js +2 -0
  36. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/dist/preact.module.js.map +270 -0
  37. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/hooks/dist/hooks.module.js +195 -0
  38. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/hooks/dist/hooks.module.js.map +168 -0
  39. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +2 -0
  40. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +77 -0
  41. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/packages/internal/ast/src/html/html_src_set.js +18 -0
  42. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/packages/internal/plugin-supervisor/src/client/supervisor.js +1360 -0
  43. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/packages/related/plugin-preact/src/client/preact_refresh.js +36 -0
  44. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/packages/related/plugin-preact/src/client/preact_refresh.js.map +11 -0
  45. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/src/plugins/autoreload/client/autoreload.js +382 -0
  46. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/src/plugins/autoreload/client/autoreload.js.map +11 -0
  47. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/src/plugins/import_meta_hot/client/import_meta_hot.js +81 -0
  48. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/src/plugins/ribbon/client/ribbon.js +93 -0
  49. package/template-web-preact/.jsenv/chrome@131.00/@fs/Users/dmail/Documents/dev/core/src/plugins/server_events/client/server_events_client.js +461 -0
  50. package/template-web-preact/.jsenv/chrome@131.00/app/app.css +43 -0
  51. package/template-web-preact/.jsenv/chrome@131.00/app/app.jsx +95 -0
  52. package/template-web-preact/.jsenv/chrome@131.00/app/app.jsx.map +44 -0
  53. package/template-web-preact/.jsenv/chrome@131.00/app/counter.jsx +45 -0
  54. package/template-web-preact/.jsenv/chrome@131.00/app/counter.jsx.map +33 -0
  55. package/template-web-preact/.jsenv/chrome@131.00/index.html +68 -0
  56. package/template-web-preact/.jsenv/chrome@131.00/index.html@L11C7-L15C16.js +5 -0
  57. package/template-web-preact/.jsenv/chrome@131.00/index.html@L7C5-L21C13.css +10 -0
  58. package/template-web-preact/.jsenv/chrome@131.00/main.jsx +10 -0
  59. package/template-web-preact/.jsenv/chrome@131.00/main.jsx.map +24 -0
  60. package/template-web-preact/.jsenv/chrome@131.00/preact_logo.svg +6 -0
  61. package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/preact/dist/preact.module.js +16 -16
  62. package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/preact/hooks/dist/hooks.module.js +3 -3
  63. package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +2 -2
  64. package/template-web-preact/.jsenv/craft/app/app.css.js +2 -2
  65. package/template-web-preact/.jsenv/craft/app/app.jsx +6 -6
  66. package/template-web-preact/.jsenv/craft/app/counter.jsx +3 -3
  67. package/template-web-preact/.jsenv/craft/index.html +2 -2
  68. package/template-web-preact/.jsenv/craft/main.jsx +3 -3
  69. package/template-web-preact/.jsenv/shape/index.html +3 -3
  70. package/template-web-preact/.jsenv/shape/main.jsx +1 -1
  71. package/template-web-preact/.jsenv/shape/main.nomodule.jsx +1 -1
  72. package/template-web-preact/.jsenv/shape/vendors.js +1 -1
  73. package/template-web-preact/.jsenv/shape/vendors.nomodule.js +1 -1
  74. package/template-web-preact/dist/index.html +2 -2
  75. package/template-web-preact/dist/js/main.nomodule.js +1 -1
  76. package/template-web-preact/dist/js/vendors.nomodule.js +1 -1
  77. package/template-web-preact/package.json +10 -10
  78. package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react-dom/react-dom/client.jsx +1 -1
  79. package/template-web-react/.jsenv/craft/app/app.css.js +2 -2
  80. package/template-web-react/.jsenv/craft/app/app.jsx +6 -6
  81. package/template-web-react/.jsenv/craft/app/counter.jsx +2 -2
  82. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/index.production.js__compile_info__.json +3 -3
  83. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/index.production.map +1 -1
  84. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/jsx-runtime.production.js__compile_info__.json +3 -3
  85. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/jsx-runtime.production.map +1 -1
  86. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react-dom/client.production.js__compile_info__.json +3 -3
  87. package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react-dom/client.production.map +1 -1
  88. package/template-web-react/.jsenv/craft/cjs_to_esm/__compile_context__.json +1 -1
  89. package/template-web-react/.jsenv/craft/index.html +2 -2
  90. package/template-web-react/.jsenv/craft/main.jsx +4 -4
  91. package/template-web-react/.jsenv/shape/index.html +1 -1
  92. package/template-web-react/package.json +8 -8
  93. /package/template-web/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/inline_content.js +0 -0
  94. /package/template-web/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/new_stylesheet.js +0 -0
  95. /package/template-web/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  96. /package/template-web/.jsenv/shape/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  97. /package/template-web-components/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/inline_content.js +0 -0
  98. /package/template-web-components/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/new_stylesheet.js +0 -0
  99. /package/template-web-components/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/independent/custom-elements-redefine/src/main.js +0 -0
  100. /package/template-web-components/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  101. /package/template-web-components/.jsenv/shape/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  102. /package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/inline_content.js +0 -0
  103. /package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/new_stylesheet.js +0 -0
  104. /package/template-web-preact/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  105. /package/template-web-preact/.jsenv/shape/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  106. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/inline_content.js +0 -0
  107. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/dist/js/new_stylesheet.js +0 -0
  108. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/index.js +0 -0
  109. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/jsx-runtime.js +0 -0
  110. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/react/jsx-runtime.jsx +0 -0
  111. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/react.jsx +0 -0
  112. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react-dom/client.js +0 -0
  113. /package/template-web-react/.jsenv/craft/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -0
  114. /package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/index.production.js +0 -0
  115. /package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react/jsx-runtime.production.js +0 -0
  116. /package/template-web-react/.jsenv/craft/cjs_to_esm/@fs/Users/dmail/Documents/{Dev → dev}/core/node_modules/react-dom/client.production.js +0 -0
  117. /package/template-web-react/.jsenv/shape/@fs/Users/dmail/Documents/{Dev → dev}/core/packages/internal/js-module-fallback/dist/js/s.js +0 -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 = ["jsenv"],
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}${self.location.pathname}${self.location.search}`;
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;
@@ -0,0 +1,43 @@
1
+ .app {
2
+ text-align: center;
3
+ }
4
+
5
+ .app_logo {
6
+ pointer-events: none;
7
+ height: 40vmin;
8
+ }
9
+
10
+ @media (prefers-reduced-motion: no-preference) {
11
+ .app_logo {
12
+ animation: 20s linear infinite app_logo_spin;
13
+ }
14
+ }
15
+
16
+ .app_header {
17
+ color: #fff;
18
+ background-color: #282c34;
19
+ flex-direction: column;
20
+ justify-content: center;
21
+ align-items: center;
22
+ min-height: 100vh;
23
+ font-size: calc(10px + 2vmin);
24
+ display: flex;
25
+ }
26
+
27
+ .app_link {
28
+ color: #61dafb;
29
+ }
30
+
31
+ @keyframes app_logo_spin {
32
+ from {
33
+ transform: rotate(0);
34
+ }
35
+
36
+ to {
37
+ transform: rotate(360deg);
38
+ }
39
+ }
40
+
41
+ button {
42
+ font-size: calc(10px + 2vmin);
43
+ }