@jsenv/core 27.0.0-alpha.39 → 27.0.0-alpha.41

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.
@@ -0,0 +1,188 @@
1
+ {
2
+ "version": 3,
3
+ "file": "event_source_client.js",
4
+ "sources": [
5
+ "../node_modules/@jsenv/utils/event_source/event_source.js",
6
+ "../src/plugins/import_meta_hot/client/import_meta_hot.js",
7
+ "../src/plugins/autoreload/dev_sse/client/autoreload_preference.js",
8
+ "../src/plugins/autoreload/dev_sse/client/url_helpers.js",
9
+ "../node_modules/@jsenv/utils/html_ast/html_attribute_src_set.js",
10
+ "../src/plugins/autoreload/dev_sse/client/reload.js",
11
+ "../src/plugins/autoreload/dev_sse/client/event_source_client.js"
12
+ ],
13
+ "sourcesContent": [
14
+ "/* eslint-env browser */\n\nexport const createEventSourceConnection = (\n eventSourceUrl,\n events = {},\n { retryMaxAttempt = Infinity, retryAllocatedMs = Infinity, lastEventId } = {},\n) => {\n const { EventSource } = window\n if (typeof EventSource !== \"function\") {\n return () => {}\n }\n\n const eventSourceOrigin = new URL(eventSourceUrl).origin\n Object.keys(events).forEach((eventName) => {\n const eventCallback = events[eventName]\n events[eventName] = (e) => {\n if (e.origin === eventSourceOrigin) {\n if (e.lastEventId) {\n lastEventId = e.lastEventId\n }\n eventCallback(e)\n }\n }\n })\n\n const status = {\n value: \"default\",\n goTo: (value) => {\n if (value === status.value) {\n return\n }\n status.value = value\n status.onchange()\n },\n onchange: () => {},\n }\n let _disconnect = () => {}\n\n const attemptConnection = (url) => {\n const eventSource = new EventSource(url, {\n withCredentials: true,\n })\n _disconnect = () => {\n if (status.value !== \"connecting\" && status.value !== \"connected\") {\n console.warn(\n `disconnect() ignored because connection is ${status.value}`,\n )\n return\n }\n eventSource.onerror = undefined\n eventSource.close()\n Object.keys(events).forEach((eventName) => {\n eventSource.removeEventListener(eventName, events[eventName])\n })\n status.goTo(\"disconnected\")\n }\n let retryCount = 0\n let firstRetryMs = Date.now()\n eventSource.onerror = (errorEvent) => {\n if (errorEvent.target.readyState === EventSource.CONNECTING) {\n if (retryCount > retryMaxAttempt) {\n console.info(`could not connect after ${retryMaxAttempt} attempt`)\n _disconnect()\n return\n }\n\n if (retryCount === 0) {\n firstRetryMs = Date.now()\n } else {\n const allRetryDuration = Date.now() - firstRetryMs\n if (retryAllocatedMs && allRetryDuration > retryAllocatedMs) {\n console.info(\n `could not connect in less than ${retryAllocatedMs} ms`,\n )\n _disconnect()\n return\n }\n }\n\n retryCount++\n status.goTo(\"connecting\")\n return\n }\n\n if (errorEvent.target.readyState === EventSource.CLOSED) {\n _disconnect()\n return\n }\n }\n eventSource.onopen = () => {\n status.goTo(\"connected\")\n }\n Object.keys(events).forEach((eventName) => {\n eventSource.addEventListener(eventName, events[eventName])\n })\n if (!events.hasOwnProperty(\"welcome\")) {\n eventSource.addEventListener(\"welcome\", (e) => {\n if (e.origin === eventSourceOrigin && e.lastEventId) {\n lastEventId = e.lastEventId\n }\n })\n }\n status.goTo(\"connecting\")\n }\n\n let connect = () => {\n attemptConnection(eventSourceUrl)\n connect = () => {\n attemptConnection(\n lastEventId\n ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId)\n : eventSourceUrl,\n )\n }\n }\n\n const removePageUnloadListener = listenPageUnload(() => {\n if (status.value === \"connecting\" || status.value === \"connected\") {\n _disconnect()\n }\n })\n\n const destroy = () => {\n removePageUnloadListener()\n _disconnect()\n }\n\n return {\n status,\n connect,\n disconnect: () => _disconnect(),\n destroy,\n }\n}\n\nconst addLastEventIdIntoUrlSearchParams = (url, lastEventId) => {\n if (url.indexOf(\"?\") === -1) {\n url += \"?\"\n } else {\n url += \"&\"\n }\n return `${url}last-event-id=${encodeURIComponent(lastEventId)}`\n}\n\n// const listenPageMightFreeze = (callback) => {\n// const removePageHideListener = listenEvent(window, \"pagehide\", (pageHideEvent) => {\n// if (pageHideEvent.persisted === true) {\n// callback(pageHideEvent)\n// }\n// })\n// return removePageHideListener\n// }\n\n// const listenPageFreeze = (callback) => {\n// const removeFreezeListener = listenEvent(document, \"freeze\", (freezeEvent) => {\n// callback(freezeEvent)\n// })\n// return removeFreezeListener\n// }\n\n// const listenPageIsRestored = (callback) => {\n// const removeResumeListener = listenEvent(document, \"resume\", (resumeEvent) => {\n// removePageshowListener()\n// callback(resumeEvent)\n// })\n// const removePageshowListener = listenEvent(window, \"pageshow\", (pageshowEvent) => {\n// if (pageshowEvent.persisted === true) {\n// removePageshowListener()\n// removeResumeListener()\n// callback(pageshowEvent)\n// }\n// })\n// return () => {\n// removeResumeListener()\n// removePageshowListener()\n// }\n// }\n\nconst listenPageUnload = (callback) => {\n const removePageHideListener = listenEvent(\n window,\n \"pagehide\",\n (pageHideEvent) => {\n if (pageHideEvent.persisted !== true) {\n callback(pageHideEvent)\n }\n },\n )\n return removePageHideListener\n}\n\nconst listenEvent = (emitter, event, callback) => {\n emitter.addEventListener(event, callback)\n return () => {\n emitter.removeEventListener(event, callback)\n }\n}\n",
15
+ "/*\n * https://vitejs.dev/guide/api-hmr.html#hot-accept-deps-cb\n * https://modern-web.dev/docs/dev-server/plugins/hmr/\n */\n\nexport const urlHotMetas = {}\n\nexport const createImportMetaHot = (importMetaUrl) => {\n const data = {}\n const url = asUrlWithoutHmrQuery(importMetaUrl)\n\n return {\n data,\n accept: (firstArg, secondArg) => {\n if (!firstArg) {\n addUrlMeta(url, {\n dependencies: [url],\n acceptCallback: () => {},\n })\n return\n }\n if (typeof firstArg === \"function\") {\n addUrlMeta(url, {\n dependencies: [url],\n acceptCallback: firstArg,\n })\n return\n }\n if (typeof firstArg === \"string\") {\n addUrlMeta(url, {\n dependencies: [firstArg],\n acceptCallback: secondArg,\n })\n return\n }\n if (Array.isArray(firstArg)) {\n addUrlMeta(url, {\n dependencies: firstArg,\n acceptCallback: secondArg,\n })\n return\n }\n throw new Error(\n `invalid call to import.meta.hot.accept(), received ${firstArg}`,\n )\n },\n dispose: (callback) => {\n addUrlMeta(url, {\n disposeCallback: () => {\n return callback(data)\n },\n })\n },\n decline: () => {\n addUrlMeta(url, {\n declined: true,\n })\n },\n invalidate: () => {\n addUrlMeta(url, {\n invalidated: true,\n })\n },\n }\n}\n\nconst addUrlMeta = (url, meta) => {\n urlHotMetas[url] = {\n ...urlHotMetas[url],\n ...meta,\n }\n}\n\nconst asUrlWithoutHmrQuery = (url) => {\n const urlObject = new URL(url)\n if (urlObject.searchParams.has(\"hmr\")) {\n urlObject.searchParams.delete(\"hmr\")\n urlObject.searchParams.delete(\"v\")\n return urlObject.href\n }\n return url\n}\n",
16
+ "export const isAutoreloadEnabled = () => {\n const value = window.localStorage.getItem(\"autoreload\")\n if (value === \"0\") {\n return false\n }\n return true\n}\n\nexport const setAutoreloadPreference = (value) => {\n window.localStorage.setItem(\"autoreload\", value ? \"1\" : \"0\")\n}\n",
17
+ "export const compareTwoUrlPaths = (url, otherUrl) => {\n if (url === otherUrl) {\n return true\n }\n const urlObject = new URL(url)\n const otherUrlObject = new URL(otherUrl)\n return (\n urlObject.origin === otherUrlObject.origin &&\n urlObject.pathname === otherUrlObject.pathname\n )\n}\n\nexport const injectQuery = (url, query) => {\n const urlObject = new URL(url)\n const { searchParams } = urlObject\n Object.keys(query).forEach((key) => {\n searchParams.set(key, query[key])\n })\n return String(urlObject)\n}\n",
18
+ "export const htmlAttributeSrcSet = {\n parse: (srcset) => {\n const srcCandidates = []\n srcset.split(\",\").forEach((set) => {\n const [specifier, descriptor] = set.trim().split(\" \")\n srcCandidates.push({\n specifier,\n descriptor,\n })\n })\n return srcCandidates\n },\n stringify: (srcCandidates) => {\n const srcset = srcCandidates\n .map(({ specifier, descriptor }) => `${specifier} ${descriptor}`)\n .join(\", \")\n return srcset\n },\n}\n",
19
+ "import { htmlAttributeSrcSet } from \"@jsenv/utils/html_ast/html_attribute_src_set.js\"\n\nimport { injectQuery, compareTwoUrlPaths } from \"./url_helpers.js\"\n\nexport const reloadHtmlPage = () => {\n window.location.reload(true)\n}\n\n// This function can consider everything as hot reloadable:\n// - no need to check [hot-accept]and [hot-decline] attributes for instance\n// This is because if something should full reload, we receive \"full_reload\"\n// from server and this function is not called\nexport const reloadDOMNodesUsingUrl = (urlToReload) => {\n const mutations = []\n const shouldReloadUrl = (urlCandidate) => {\n return compareTwoUrlPaths(urlCandidate, urlToReload)\n }\n const visitNodeAttributeAsUrl = (node, attributeName) => {\n let attribute = node[attributeName]\n if (!attribute) {\n return\n }\n if (SVGAnimatedString && attribute instanceof SVGAnimatedString) {\n attribute = attribute.animVal\n }\n if (!shouldReloadUrl(attribute)) {\n return\n }\n mutations.push(() => {\n node[attributeName] = injectQuery(attribute, { hmr: Date.now() })\n })\n }\n Array.from(document.querySelectorAll(`link[rel=\"stylesheet\"]`)).forEach(\n (link) => {\n visitNodeAttributeAsUrl(link, \"href\")\n },\n )\n Array.from(document.querySelectorAll(`link[rel=\"icon\"]`)).forEach((link) => {\n visitNodeAttributeAsUrl(link, \"href\")\n })\n Array.from(document.querySelector(\"script\")).forEach((script) => {\n visitNodeAttributeAsUrl(script, \"src\")\n })\n // There is no real need to update a.href because the ressource will be fetched when clicked.\n // But in a scenario where the ressource was already visited and is in browser cache, adding\n // the dynamic query param ensure the cache is invalidated\n Array.from(document.querySelectorAll(\"a\")).forEach((a) => {\n visitNodeAttributeAsUrl(a, \"href\")\n })\n // About iframes:\n // - By default iframe itself and everything inside trigger a parent page full-reload\n // - Adding [hot-accept] on the iframe means parent page won't reload when iframe full/hot reload\n // In that case and if there is code in the iframe and parent doing post message communication:\n // you must put import.meta.hot.decline() for code involved in communication.\n // (both in parent and iframe)\n Array.from(document.querySelectorAll(\"img\")).forEach((img) => {\n visitNodeAttributeAsUrl(img, \"src\")\n const srcset = img.srcset\n if (srcset) {\n const srcCandidates = htmlAttributeSrcSet.parse(srcset)\n srcCandidates.forEach((srcCandidate) => {\n const url = new URL(srcCandidate.specifier, `${window.location.href}`)\n if (shouldReloadUrl(url)) {\n srcCandidate.specifier = injectQuery(url, { hmr: Date.now() })\n }\n })\n mutations.push(() => {\n img.srcset = htmlAttributeSrcSet.stringify(srcCandidates)\n })\n }\n })\n Array.from(document.querySelectorAll(\"source\")).forEach((source) => {\n visitNodeAttributeAsUrl(source, \"src\")\n })\n // svg image tag\n Array.from(document.querySelectorAll(\"image\")).forEach((image) => {\n visitNodeAttributeAsUrl(image, \"href\")\n })\n // svg use\n Array.from(document.querySelectorAll(\"use\")).forEach((use) => {\n visitNodeAttributeAsUrl(use, \"href\")\n })\n mutations.forEach((mutation) => {\n mutation()\n })\n}\n\nexport const reloadJsImport = async (url) => {\n const urlWithHmr = injectQuery(url, { hmr: Date.now() })\n const namespace = await import(urlWithHmr)\n return namespace\n}\n\nexport const reloadAllCss = () => {\n const links = Array.from(document.getElementsByTagName(\"link\"))\n links.forEach((link) => {\n if (link.rel === \"stylesheet\") {\n link.href = injectQuery(link.href, { hmr: Date.now() })\n }\n })\n}\n",
20
+ "import { createEventSourceConnection } from \"@jsenv/utils/event_source/event_source.js\"\nimport { urlHotMetas } from \"../../../import_meta_hot/client/import_meta_hot.js\"\nimport {\n isAutoreloadEnabled,\n setAutoreloadPreference,\n} from \"./autoreload_preference.js\"\nimport { compareTwoUrlPaths } from \"./url_helpers.js\"\nimport {\n reloadHtmlPage,\n reloadDOMNodesUsingUrl,\n reloadJsImport,\n} from \"./reload.js\"\n\nconst reloadMessages = []\nconst reloadMessagesSignal = { onchange: () => {} }\nlet pendingCallbacks = []\nlet running = false\nconst addToHotQueue = async (callback) => {\n pendingCallbacks.push(callback)\n dequeue()\n}\nconst dequeue = async () => {\n if (running) {\n return\n }\n const callbacks = pendingCallbacks.slice()\n pendingCallbacks = []\n running = true\n await callbacks.reduce(async (previous, callback) => {\n await previous\n await callback()\n }, Promise.resolve())\n running = false\n if (pendingCallbacks.length) {\n dequeue()\n }\n}\n\nconst applyReloadMessageEffects = async () => {\n const someEffectIsFullReload = reloadMessages.some(\n (reloadMessage) => reloadMessage.type === \"full\",\n )\n if (someEffectIsFullReload) {\n reloadHtmlPage()\n return\n }\n\n const onApplied = (reloadMessage) => {\n const index = reloadMessages.indexOf(reloadMessage)\n reloadMessages.splice(index, 1)\n reloadMessagesSignal.onchange()\n }\n const setReloadMessagePromise = (reloadMessage, promise) => {\n reloadMessage.status = \"pending\"\n promise.then(\n () => {\n onApplied(reloadMessage)\n },\n (e) => {\n // TODO: reuse error display from html supervisor\n console.error(e)\n console.error(\n `[hmr] Failed to reload after ${reloadMessage.reason}.\nThis could be due to syntax errors or importing non-existent modules (see errors above)`,\n )\n reloadMessage.status = \"failed\"\n reloadMessagesSignal.onchange()\n },\n )\n }\n reloadMessages.forEach((reloadMessage) => {\n if (reloadMessage.type === \"hot\") {\n const promise = addToHotQueue(() => {\n return applyHotReload(reloadMessage)\n })\n setReloadMessagePromise(reloadMessage, promise)\n } else {\n setReloadMessagePromise(reloadMessage, Promise.resolve())\n }\n })\n reloadMessagesSignal.onchange() // reload status is \"pending\"\n}\n\nconst applyHotReload = async ({ hotInstructions }) => {\n await hotInstructions.reduce(\n async (previous, { type, boundary, acceptedBy }) => {\n await previous\n\n const urlToFetch = new URL(boundary, `${window.location.origin}/`).href\n const urlHotMeta = urlHotMetas[urlToFetch]\n // TODO: we should return when there is no url hot meta because\n // it means code was not executed (code splitting with dynamic import)\n // if (!urlHotMeta) {return }\n\n if (type === \"prune\") {\n console.group(`[jsenv] prune: ${boundary} (inside ${acceptedBy})`)\n } else if (acceptedBy === boundary) {\n console.group(`[jsenv] hot reloading: ${boundary}`)\n } else {\n console.group(`[jsenv] hot reloading: ${acceptedBy} inside ${boundary}`)\n }\n if (urlHotMeta && urlHotMeta.disposeCallback) {\n console.log(`call dispose callback`)\n await urlHotMeta.disposeCallback()\n }\n if (type === \"prune\") {\n delete urlHotMetas[urlToFetch]\n console.log(`cleanup pruned url`)\n console.groupEnd()\n return null\n }\n if (type === \"js_module\") {\n console.log(`importing js module`)\n const namespace = await reloadJsImport(urlToFetch)\n if (urlHotMeta && urlHotMeta.acceptCallback) {\n await urlHotMeta.acceptCallback(namespace)\n }\n console.log(`js module import done`)\n console.groupEnd()\n return namespace\n }\n if (type === \"html\") {\n if (!compareTwoUrlPaths(urlToFetch, window.location.href)) {\n // we are not in that HTML page\n return null\n }\n console.log(`reloading url`)\n const urlToReload = new URL(acceptedBy, `${window.location.origin}/`)\n .href\n reloadDOMNodesUsingUrl(urlToReload)\n console.log(`url reloaded`)\n console.groupEnd()\n return null\n }\n console.warn(`unknown update type: \"${type}\"`)\n return null\n },\n Promise.resolve(),\n )\n}\n\nconst addReloadMessage = (reloadMessage) => {\n reloadMessages.push(reloadMessage)\n if (isAutoreloadEnabled()) {\n applyReloadMessageEffects()\n } else {\n reloadMessagesSignal.onchange()\n }\n}\n\nconst eventsourceConnection = createEventSourceConnection(\n document.location.href,\n {\n reload: ({ data }) => {\n const reloadMessage = JSON.parse(data)\n addReloadMessage(reloadMessage)\n },\n },\n {\n retryMaxAttempt: Infinity,\n retryAllocatedMs: 20 * 1000,\n },\n)\n\nconst { status, connect, disconnect } = eventsourceConnection\nconnect()\nwindow.__jsenv_event_source_client__ = {\n status,\n connect,\n disconnect,\n isAutoreloadEnabled,\n setAutoreloadPreference,\n urlHotMetas,\n reloadMessages,\n reloadMessagesSignal,\n applyReloadMessageEffects,\n addReloadMessage,\n}\n\n// const findHotMetaUrl = (originalFileRelativeUrl) => {\n// return Object.keys(urlHotMetas).find((compileUrl) => {\n// return (\n// parseCompiledUrl(compileUrl).fileRelativeUrl === originalFileRelativeUrl\n// )\n// })\n// }\n"
21
+ ],
22
+ "names": [
23
+ "createEventSourceConnection",
24
+ "eventSourceUrl",
25
+ "events",
26
+ "retryMaxAttempt",
27
+ "Infinity",
28
+ "retryAllocatedMs",
29
+ "lastEventId",
30
+ "EventSource",
31
+ "window",
32
+ "eventSourceOrigin",
33
+ "URL",
34
+ "origin",
35
+ "Object",
36
+ "keys",
37
+ "forEach",
38
+ "eventName",
39
+ "eventCallback",
40
+ "e",
41
+ "status",
42
+ "value",
43
+ "goTo",
44
+ "onchange",
45
+ "_disconnect",
46
+ "attemptConnection",
47
+ "url",
48
+ "eventSource",
49
+ "withCredentials",
50
+ "console",
51
+ "warn",
52
+ "onerror",
53
+ "undefined",
54
+ "close",
55
+ "removeEventListener",
56
+ "retryCount",
57
+ "firstRetryMs",
58
+ "Date",
59
+ "now",
60
+ "errorEvent",
61
+ "target",
62
+ "readyState",
63
+ "CONNECTING",
64
+ "info",
65
+ "allRetryDuration",
66
+ "CLOSED",
67
+ "onopen",
68
+ "addEventListener",
69
+ "hasOwnProperty",
70
+ "connect",
71
+ "addLastEventIdIntoUrlSearchParams",
72
+ "removePageUnloadListener",
73
+ "listenPageUnload",
74
+ "destroy",
75
+ "disconnect",
76
+ "indexOf",
77
+ "encodeURIComponent",
78
+ "callback",
79
+ "removePageHideListener",
80
+ "listenEvent",
81
+ "pageHideEvent",
82
+ "persisted",
83
+ "emitter",
84
+ "event",
85
+ "urlHotMetas",
86
+ "isAutoreloadEnabled",
87
+ "localStorage",
88
+ "getItem",
89
+ "setAutoreloadPreference",
90
+ "setItem",
91
+ "compareTwoUrlPaths",
92
+ "otherUrl",
93
+ "urlObject",
94
+ "otherUrlObject",
95
+ "pathname",
96
+ "injectQuery",
97
+ "query",
98
+ "searchParams",
99
+ "key",
100
+ "set",
101
+ "String",
102
+ "htmlAttributeSrcSet",
103
+ "parse",
104
+ "srcset",
105
+ "srcCandidates",
106
+ "split",
107
+ "specifier",
108
+ "descriptor",
109
+ "trim",
110
+ "push",
111
+ "stringify",
112
+ "map",
113
+ "join",
114
+ "reloadHtmlPage",
115
+ "location",
116
+ "reload",
117
+ "urlToReload",
118
+ "urlCandidate",
119
+ "visitNodeAttributeAsUrl",
120
+ "node",
121
+ "attributeName",
122
+ "attribute",
123
+ "SVGAnimatedString",
124
+ "animVal",
125
+ "shouldReloadUrl",
126
+ "mutations",
127
+ "hmr",
128
+ "Array",
129
+ "querySelectorAll",
130
+ "link",
131
+ "querySelector",
132
+ "script",
133
+ "from",
134
+ "a",
135
+ "img",
136
+ "srcCandidate",
137
+ "href",
138
+ "document",
139
+ "source",
140
+ "image",
141
+ "use",
142
+ "mutation",
143
+ "reloadJsImport",
144
+ "namespace",
145
+ "urlWithHmr",
146
+ "reloadMessages",
147
+ "addToHotQueue",
148
+ "pendingCallbacks",
149
+ "dequeue",
150
+ "running",
151
+ "callbacks",
152
+ "slice",
153
+ "previous",
154
+ "applyReloadMessageEffects",
155
+ "someEffectIsFullReload",
156
+ "some",
157
+ "reloadMessage",
158
+ "type",
159
+ "onApplied",
160
+ "index",
161
+ "splice",
162
+ "setReloadMessagePromise",
163
+ "promise",
164
+ "error",
165
+ "reason",
166
+ "Promise",
167
+ "resolve",
168
+ "applyHotReload",
169
+ "hotInstructions",
170
+ "reduce",
171
+ "boundary",
172
+ "acceptedBy",
173
+ "urlToFetch",
174
+ "group",
175
+ "urlHotMeta",
176
+ "disposeCallback",
177
+ "log",
178
+ "acceptCallback",
179
+ "groupEnd",
180
+ "addReloadMessage",
181
+ "reloadMessagesSignal",
182
+ "eventsourceConnection",
183
+ "data",
184
+ "JSON",
185
+ "__jsenv_event_source_client__"
186
+ ],
187
+ "mappings": "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"
188
+ }