@jsenv/core 24.0.2 → 24.2.2
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/jsenv_event_source_client.js +338 -0
- package/dist/jsenv_event_source_client.js.map +126 -0
- package/dist/jsenv_exploring_index.js.map +7 -7
- package/dist/jsenv_redirector.js +1388 -0
- package/dist/jsenv_redirector.js.map +384 -0
- package/dist/jsenv_toolbar.js +37 -504
- package/dist/jsenv_toolbar.js.map +37 -112
- package/dist/jsenv_toolbar_injector.js +31 -126
- package/dist/jsenv_toolbar_injector.js.map +11 -30
- package/{LICENSE → license} +0 -0
- package/package.json +2 -3
- package/src/buildProject.js +2 -0
- package/src/dev_server.js +108 -57
- package/src/internal/compiling/compile-directory/getOrGenerateCompiledFile.js +1 -2
- package/src/internal/compiling/compileFile.js +51 -23
- package/src/internal/compiling/createCompiledFileService.js +8 -0
- package/src/internal/compiling/html_source_file_service.js +43 -9
- package/src/internal/compiling/jsenvCompilerForHtml.js +146 -107
- package/src/internal/compiling/startCompileServer.js +10 -1
- package/src/internal/dev_server/event_source_client/event_source_client.js +63 -0
- package/src/internal/dev_server/event_source_client/event_source_client_file_info.js +17 -0
- package/src/internal/{toolbar/eventsource/connectEventSource.js → dev_server/event_source_client/event_source_connection.js} +47 -78
- package/src/internal/dev_server/event_source_client/file_changes.js +82 -0
- package/src/internal/dev_server/event_source_client/livereload_preference.js +13 -0
- package/src/internal/{exploring → dev_server/exploring}/exploring.css +0 -0
- package/src/internal/{exploring → dev_server/exploring}/exploring.html +1 -1
- package/src/internal/{exploring → dev_server/exploring}/exploring.js +0 -0
- package/src/internal/dev_server/exploring/exploring_file_info.js +21 -0
- package/src/internal/{exploring → dev_server/exploring}/fetchExploringJson.js +1 -1
- package/src/internal/{exploring/exploring.redirector.html → dev_server/redirector/redirector.html} +1 -1
- package/src/internal/{exploring/exploring.redirector.js → dev_server/redirector/redirector.js} +4 -2
- package/src/internal/dev_server/redirector/redirector_file_info.js +24 -0
- package/src/internal/{toolbar → dev_server/toolbar}/animation/toolbar.animation.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/backtolist/toolbar.backtolist.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/compilation/compilation.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/compilation/toolbar.compilation.js +1 -1
- package/src/internal/{toolbar → dev_server/toolbar}/eventsource/eventsource.css +0 -0
- package/src/internal/dev_server/toolbar/eventsource/toolbar.eventsource.js +83 -0
- package/src/internal/{toolbar → dev_server/toolbar}/execution/execution.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/execution/toolbar.execution.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/focus/focus.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/focus/toolbar.focus.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/jsenv-logo.svg +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/notification/toolbar.notification.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/responsive/overflow-menu.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/responsive/toolbar.responsive.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/settings/settings.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/settings/toolbar.settings.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/theme/jsenv-theme.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/theme/light-theme.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/theme/toolbar.theme.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/toolbar.html +4 -37
- package/src/internal/{toolbar → dev_server/toolbar}/toolbar.injector.js +3 -92
- package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.js +0 -0
- package/src/internal/dev_server/toolbar/toolbar_file_info.js +37 -0
- package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.css +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/animation.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/dom.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/fetching.js +2 -2
- package/src/internal/{toolbar → dev_server/toolbar}/util/jsenvLogger.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/preferences.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/responsive.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/util/util.js +0 -0
- package/src/internal/{toolbar → dev_server/toolbar}/variant/variant.js +0 -0
- package/src/internal/jsenvInternalFiles.js +0 -58
- package/src/internal/toolbar/eventsource/connectCompileServerEventSource.js +0 -74
- package/src/internal/toolbar/eventsource/toolbar.eventsource.js +0 -239
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { connectEventSource } from "./connectEventSource.js"
|
|
2
|
-
import { jsenvLogger } from "../util/jsenvLogger.js"
|
|
3
|
-
|
|
4
|
-
export const connectCompileServerEventSource = (
|
|
5
|
-
fileRelativeUrl,
|
|
6
|
-
{
|
|
7
|
-
onFileModified,
|
|
8
|
-
onFileRemoved,
|
|
9
|
-
onConnecting,
|
|
10
|
-
onConnectionCancelled,
|
|
11
|
-
onConnectionFailed,
|
|
12
|
-
onConnected,
|
|
13
|
-
lastEventId,
|
|
14
|
-
},
|
|
15
|
-
) => {
|
|
16
|
-
const eventSourceUrl = `${window.origin}/${fileRelativeUrl}`
|
|
17
|
-
|
|
18
|
-
let cancel = () => {}
|
|
19
|
-
|
|
20
|
-
const connect = () => {
|
|
21
|
-
return new Promise((resolve) => {
|
|
22
|
-
cancel = connectEventSource(
|
|
23
|
-
eventSourceUrl,
|
|
24
|
-
{
|
|
25
|
-
"file-modified": ({ data }) => {
|
|
26
|
-
jsenvLogger.debug(`${data} modified`)
|
|
27
|
-
onFileModified(data)
|
|
28
|
-
},
|
|
29
|
-
"file-removed": ({ data }) => {
|
|
30
|
-
jsenvLogger.debug(`${data} removed`)
|
|
31
|
-
onFileRemoved(data)
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
connecting: ({ cancel }) => {
|
|
36
|
-
jsenvLogger.debug(`connecting to ${eventSourceUrl}`)
|
|
37
|
-
onConnecting({
|
|
38
|
-
cancel: () => {
|
|
39
|
-
cancel()
|
|
40
|
-
},
|
|
41
|
-
})
|
|
42
|
-
},
|
|
43
|
-
connected: ({ cancel }) => {
|
|
44
|
-
jsenvLogger.debug(`connected to ${eventSourceUrl}`)
|
|
45
|
-
resolve(true)
|
|
46
|
-
onConnected({
|
|
47
|
-
cancel: () => {
|
|
48
|
-
cancel()
|
|
49
|
-
},
|
|
50
|
-
})
|
|
51
|
-
},
|
|
52
|
-
cancelled: ({ connect }) => {
|
|
53
|
-
jsenvLogger.debug(`disconnected from ${eventSourceUrl}`)
|
|
54
|
-
resolve(false)
|
|
55
|
-
onConnectionCancelled({ connect })
|
|
56
|
-
},
|
|
57
|
-
failed: ({ connect }) => {
|
|
58
|
-
jsenvLogger.debug(`disconnected from ${eventSourceUrl}`)
|
|
59
|
-
resolve(false)
|
|
60
|
-
onConnectionFailed({ connect })
|
|
61
|
-
},
|
|
62
|
-
retryMaxAttempt: Infinity,
|
|
63
|
-
retryAllocatedMs: 20 * 1000,
|
|
64
|
-
lastEventId,
|
|
65
|
-
},
|
|
66
|
-
)
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return {
|
|
71
|
-
connect,
|
|
72
|
-
disconnect: () => cancel(),
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import { removeForceHideElement } from "../util/dom.js"
|
|
2
|
-
import { createPromiseAndHooks } from "../util/util.js"
|
|
3
|
-
import { createPreference } from "../util/preferences.js"
|
|
4
|
-
import { enableVariant } from "../variant/variant.js"
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
toggleTooltip,
|
|
8
|
-
removeAutoShowTooltip,
|
|
9
|
-
autoShowTooltip,
|
|
10
|
-
} from "../tooltip/tooltip.js"
|
|
11
|
-
import { connectCompileServerEventSource } from "./connectCompileServerEventSource.js"
|
|
12
|
-
|
|
13
|
-
const livereloadingPreference = createPreference("livereloading")
|
|
14
|
-
let eventSourceState = "default"
|
|
15
|
-
let livereloadingAvailableOnServer = false
|
|
16
|
-
|
|
17
|
-
export const initToolbarEventSource = ({
|
|
18
|
-
executedFileRelativeUrl,
|
|
19
|
-
livereloading,
|
|
20
|
-
}) => {
|
|
21
|
-
const getLivereloadCallback = (originalFileProjectRelativeUrl) => {
|
|
22
|
-
const callbacks = window.parent.__jsenv__.livereloadingCallbacks
|
|
23
|
-
return callbacks[originalFileProjectRelativeUrl]
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
removeForceHideElement(document.querySelector("#eventsource-indicator"))
|
|
27
|
-
connectEventSource({ executedFileRelativeUrl, getLivereloadCallback })
|
|
28
|
-
livereloadingAvailableOnServer = livereloading
|
|
29
|
-
if (!livereloadingAvailableOnServer) {
|
|
30
|
-
disableLivereloadSetting()
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const livereloadCheckbox = document.querySelector("#toggle-livereload")
|
|
34
|
-
livereloadCheckbox.checked = shouldLivereload()
|
|
35
|
-
livereloadCheckbox.onchange = () => {
|
|
36
|
-
livereloadingPreference.set(livereloadCheckbox.checked)
|
|
37
|
-
updateEventSourceIndicator()
|
|
38
|
-
}
|
|
39
|
-
updateEventSourceIndicator()
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const shouldLivereload = () => {
|
|
43
|
-
return livereloadingAvailableOnServer && getLivereloadingPreference()
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const disableLivereloadSetting = () => {
|
|
47
|
-
document
|
|
48
|
-
.querySelector(".settings-livereload")
|
|
49
|
-
.setAttribute("data-disabled", "true")
|
|
50
|
-
document
|
|
51
|
-
.querySelector(".settings-livereload")
|
|
52
|
-
.setAttribute("title", `Livereload not available: disabled by server`)
|
|
53
|
-
document.querySelector("#toggle-livereload").disabled = true
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const parentEventSource = window.parent.__jsenv_eventsource__()
|
|
57
|
-
const latestChangeMap = parentEventSource.latestChangeMap
|
|
58
|
-
let eventSourceHooks = {}
|
|
59
|
-
let eventSourceConnection
|
|
60
|
-
let connectionReadyPromise
|
|
61
|
-
|
|
62
|
-
const handleFileChange = ({ file, eventType, livereloadCallback }) => {
|
|
63
|
-
latestChangeMap[file] = eventType
|
|
64
|
-
updateEventSourceIndicator()
|
|
65
|
-
|
|
66
|
-
if (shouldLivereload()) {
|
|
67
|
-
if (livereloadCallback) {
|
|
68
|
-
livereloadCallback({
|
|
69
|
-
file,
|
|
70
|
-
latestChangeMap,
|
|
71
|
-
reloadPage,
|
|
72
|
-
})
|
|
73
|
-
} else if (
|
|
74
|
-
file.endsWith(".css") ||
|
|
75
|
-
file.endsWith(".scss") ||
|
|
76
|
-
file.endsWith(".sass")
|
|
77
|
-
) {
|
|
78
|
-
reloadAllCss()
|
|
79
|
-
delete latestChangeMap[file]
|
|
80
|
-
updateEventSourceIndicator()
|
|
81
|
-
} else {
|
|
82
|
-
reloadPage()
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const reloadAllCss = () => {
|
|
88
|
-
const links = Array.from(window.parent.document.getElementsByTagName("link"))
|
|
89
|
-
links.forEach((link) => {
|
|
90
|
-
if (link.rel === "stylesheet") {
|
|
91
|
-
const url = new URL(link.href)
|
|
92
|
-
url.searchParams.set("t", Date.now())
|
|
93
|
-
link.href = String(url)
|
|
94
|
-
}
|
|
95
|
-
})
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const reloadPage = () => {
|
|
99
|
-
window.parent.location.reload(true)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const reloadChanges = () => {
|
|
103
|
-
const fullReloadRequired = Object.keys(latestChangeMap).some(
|
|
104
|
-
(key) => !key.endsWith(".css"),
|
|
105
|
-
)
|
|
106
|
-
if (fullReloadRequired) {
|
|
107
|
-
reloadPage()
|
|
108
|
-
return
|
|
109
|
-
}
|
|
110
|
-
const cssReloadRequired = Object.keys(latestChangeMap).some((key) =>
|
|
111
|
-
key.endsWith(".css"),
|
|
112
|
-
)
|
|
113
|
-
if (cssReloadRequired) {
|
|
114
|
-
reloadAllCss()
|
|
115
|
-
Object.keys(latestChangeMap).forEach((key) => {
|
|
116
|
-
if (key.endsWith(".css")) {
|
|
117
|
-
delete latestChangeMap[key]
|
|
118
|
-
}
|
|
119
|
-
updateEventSourceIndicator()
|
|
120
|
-
})
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const connectEventSource = ({
|
|
125
|
-
executedFileRelativeUrl,
|
|
126
|
-
getLivereloadCallback,
|
|
127
|
-
}) => {
|
|
128
|
-
updateEventSourceIndicator()
|
|
129
|
-
connectionReadyPromise = createPromiseAndHooks()
|
|
130
|
-
|
|
131
|
-
eventSourceConnection = connectCompileServerEventSource(
|
|
132
|
-
executedFileRelativeUrl,
|
|
133
|
-
{
|
|
134
|
-
onFileModified: (file) => {
|
|
135
|
-
handleFileChange({
|
|
136
|
-
file,
|
|
137
|
-
eventType: "modified",
|
|
138
|
-
livereloadCallback: getLivereloadCallback(file),
|
|
139
|
-
})
|
|
140
|
-
},
|
|
141
|
-
onFileRemoved: (file) => {
|
|
142
|
-
handleFileChange({
|
|
143
|
-
file,
|
|
144
|
-
eventType: "removed",
|
|
145
|
-
livereloadCallback: getLivereloadCallback(file),
|
|
146
|
-
})
|
|
147
|
-
},
|
|
148
|
-
onFileAdded: (file) => {
|
|
149
|
-
handleFileChange({
|
|
150
|
-
file,
|
|
151
|
-
eventType: "added",
|
|
152
|
-
livereloadCallback: getLivereloadCallback(file),
|
|
153
|
-
})
|
|
154
|
-
},
|
|
155
|
-
onConnecting: ({ cancel }) => {
|
|
156
|
-
eventSourceState = "connecting"
|
|
157
|
-
eventSourceHooks = { abort: cancel }
|
|
158
|
-
updateEventSourceIndicator()
|
|
159
|
-
},
|
|
160
|
-
onConnectionCancelled: ({ connect }) => {
|
|
161
|
-
eventSourceState = "disabled"
|
|
162
|
-
eventSourceHooks = { connect }
|
|
163
|
-
updateEventSourceIndicator()
|
|
164
|
-
},
|
|
165
|
-
onConnectionFailed: ({ connect }) => {
|
|
166
|
-
eventSourceState = "failed"
|
|
167
|
-
eventSourceHooks = { reconnect: connect }
|
|
168
|
-
updateEventSourceIndicator()
|
|
169
|
-
},
|
|
170
|
-
onConnected: ({ cancel }) => {
|
|
171
|
-
eventSourceState = "connected"
|
|
172
|
-
eventSourceHooks = { disconnect: cancel }
|
|
173
|
-
updateEventSourceIndicator()
|
|
174
|
-
connectionReadyPromise.resolve()
|
|
175
|
-
parentEventSource.disconnect()
|
|
176
|
-
},
|
|
177
|
-
lastEventId: parentEventSource.lastEventId,
|
|
178
|
-
},
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
eventSourceConnection.connect()
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const getLivereloadingPreference = () => {
|
|
185
|
-
return livereloadingPreference.has() ? livereloadingPreference.get() : true
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
export const disconnectEventSource = () => {
|
|
189
|
-
if (eventSourceConnection) {
|
|
190
|
-
eventSourceConnection.disconnect()
|
|
191
|
-
eventSourceConnection = undefined
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export const waitEventSourceReady = () => connectionReadyPromise
|
|
196
|
-
|
|
197
|
-
const updateEventSourceIndicator = () => {
|
|
198
|
-
const { connect, abort, reconnect } = eventSourceHooks
|
|
199
|
-
|
|
200
|
-
const eventSourceIndicator = document.querySelector("#eventsource-indicator")
|
|
201
|
-
const changeCount = Object.keys(latestChangeMap).length
|
|
202
|
-
enableVariant(eventSourceIndicator, {
|
|
203
|
-
eventsource: eventSourceState,
|
|
204
|
-
livereload: shouldLivereload() ? "on" : "off",
|
|
205
|
-
changes: changeCount > 0 ? "yes" : "no",
|
|
206
|
-
})
|
|
207
|
-
|
|
208
|
-
const variantNode = document.querySelector(
|
|
209
|
-
"#eventsource-indicator > [data-when-active]",
|
|
210
|
-
)
|
|
211
|
-
variantNode.querySelector("button").onclick = () => {
|
|
212
|
-
toggleTooltip(eventSourceIndicator)
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
if (eventSourceState === "disabled") {
|
|
216
|
-
variantNode.querySelector("a").onclick = connect
|
|
217
|
-
} else if (eventSourceState === "connecting") {
|
|
218
|
-
variantNode.querySelector("a").onclick = abort
|
|
219
|
-
} else if (eventSourceState === "connected") {
|
|
220
|
-
removeAutoShowTooltip(eventSourceIndicator)
|
|
221
|
-
if (changeCount) {
|
|
222
|
-
const changeLink = variantNode.querySelector(".eventsource-changes-link")
|
|
223
|
-
changeLink.innerHTML = changeCount
|
|
224
|
-
changeLink.onclick = () => {
|
|
225
|
-
console.log(
|
|
226
|
-
JSON.stringify(latestChangeMap, null, " "),
|
|
227
|
-
latestChangeMap,
|
|
228
|
-
)
|
|
229
|
-
// eslint-disable-next-line no-alert
|
|
230
|
-
window.parent.alert(JSON.stringify(latestChangeMap, null, " "))
|
|
231
|
-
}
|
|
232
|
-
variantNode.querySelector(".eventsource-reload-link").onclick =
|
|
233
|
-
reloadChanges
|
|
234
|
-
}
|
|
235
|
-
} else if (eventSourceState === "failed") {
|
|
236
|
-
autoShowTooltip(eventSourceIndicator)
|
|
237
|
-
variantNode.querySelector("a").onclick = reconnect
|
|
238
|
-
}
|
|
239
|
-
}
|