1 | var imbadevtools = (() => {
|
2 | function iter$__(a) {
|
3 | let v;
|
4 | return a ? (v = a.toIterable) ? v.call(a) : a : [];
|
5 | }
|
6 | var \u03C61 = Symbol.for("#type");
|
7 | var \u03C620 = Symbol.for("#__listeners__");
|
8 | function deserializeData(data, reviver = null) {
|
9 | let objects = {};
|
10 | let reg = /\$\$\d+\$\$/;
|
11 | let lookup = function(value) {
|
12 | return objects[value] || (objects[value] = reviver ? reviver(value) : {});
|
13 | };
|
14 | let parser = function(key, value) {
|
15 | if (typeof value == "string") {
|
16 | if (value[0] == "$" && reg.test(value)) {
|
17 | return lookup(value);
|
18 | }
|
19 | ;
|
20 | } else if (typeof key == "string" && key[0] == "$" && reg.test(key)) {
|
21 | let obj = lookup(key);
|
22 | Object.assign(obj, value);
|
23 | return obj;
|
24 | }
|
25 | ;
|
26 | return value;
|
27 | };
|
28 | let parsed = JSON.parse(data, parser);
|
29 | return parsed;
|
30 | }
|
31 | function patchManifest(prev, curr) {
|
32 | var \u03C67, \u03C66, \u03C611, \u03C618;
|
33 | let origs = {};
|
34 | let diff = {
|
35 | added: [],
|
36 | changed: [],
|
37 | removed: [],
|
38 | all: [],
|
39 | urls: {}
|
40 | };
|
41 | if (prev.assets) {
|
42 | for (let \u03C64 = 0, \u03C65 = iter$__(prev.assets), \u03C68 = \u03C65.length; \u03C64 < \u03C68; \u03C64++) {
|
43 | let item = \u03C65[\u03C64];
|
44 | let ref = item.originalPath || item.path;
|
45 | origs[ref] = item;
|
46 | if (item.url) {
|
47 | (\u03C67 = curr.urls)[\u03C66 = item.url] || (\u03C67[\u03C66] = item);
|
48 | }
|
49 | ;
|
50 | }
|
51 | ;
|
52 | }
|
53 | ;
|
54 | for (let \u03C69 = 0, \u03C610 = iter$__(curr.assets || []), \u03C612 = \u03C610.length; \u03C69 < \u03C612; \u03C69++) {
|
55 | let item = \u03C610[\u03C69];
|
56 | let ref = item.originalPath || item.path;
|
57 | let orig = origs[ref];
|
58 | if (item.url && prev.urls) {
|
59 | prev.urls[item.url] = item;
|
60 | }
|
61 | ;
|
62 | if (orig) {
|
63 | if (orig.hash != item.hash) {
|
64 | orig.invalidated = Date.now();
|
65 | orig.replacedBy = item;
|
66 | item.replaces = orig;
|
67 | diff.changed.push(item);
|
68 | diff.all.push(item);
|
69 | if (orig == prev.main) {
|
70 | diff.main = item;
|
71 | }
|
72 | ;
|
73 | }
|
74 | ;
|
75 | \u03C611 = origs[ref], delete origs[ref], \u03C611;
|
76 | } else {
|
77 | diff.added.push(item);
|
78 | diff.all.push(item);
|
79 | }
|
80 | ;
|
81 | }
|
82 | ;
|
83 | for (let \u03C613 = 0, \u03C614 = Object.keys(origs), \u03C615 = \u03C614.length, path, item; \u03C613 < \u03C615; \u03C613++) {
|
84 | path = \u03C614[\u03C613];
|
85 | item = origs[path];
|
86 | item.removed = Date.now();
|
87 | diff.all.push(item);
|
88 | }
|
89 | ;
|
90 | for (let \u03C616 = 0, \u03C617 = iter$__(diff.all), \u03C619 = \u03C617.length; \u03C616 < \u03C619; \u03C616++) {
|
91 | let item = \u03C617[\u03C616];
|
92 | let typ = diff[\u03C618 = item.type] || (diff[\u03C618] = []);
|
93 | typ.push(item);
|
94 | }
|
95 | ;
|
96 | diff.removed = Object.values(origs);
|
97 | curr.changes = diff;
|
98 | return curr;
|
99 | }
|
100 | function iter$__2(a) {
|
101 | let v;
|
102 | return a ? (v = a.toIterable) ? v.call(a) : a : [];
|
103 | }
|
104 | var doc = globalThis.document;
|
105 | var Manifest = class {
|
106 | constructor() {
|
107 | this.data = {};
|
108 | }
|
109 | get changes() {
|
110 | return this.data.changes || {};
|
111 | }
|
112 | get inputs() {
|
113 | return this.data.inputs;
|
114 | }
|
115 | get outputs() {
|
116 | return this.data.outputs;
|
117 | }
|
118 | get urls() {
|
119 | return this.data.urls;
|
120 | }
|
121 | get main() {
|
122 | return this.data.main;
|
123 | }
|
124 | init(raw) {
|
125 | return this.update(raw);
|
126 | }
|
127 | update(raw) {
|
128 | if (typeof raw == "string") {
|
129 | raw = deserializeData(raw);
|
130 | }
|
131 | ;
|
132 | this.data = patchManifest(this.data, raw);
|
133 | return this.data.changes;
|
134 | }
|
135 | };
|
136 | var DevTools = class {
|
137 | constructor() {
|
138 | this.start();
|
139 | this.manifest = new Manifest({});
|
140 | this.debug = false;
|
141 | this;
|
142 | }
|
143 | log(...params) {
|
144 | if (!this.debug) {
|
145 | return;
|
146 | }
|
147 | ;
|
148 | return console.log(...params);
|
149 | }
|
150 | refresh(changes) {
|
151 | let dirty = {
|
152 | css: [],
|
153 | js: []
|
154 | };
|
155 | for (let sheet of iter$__2(doc.styleSheets)) {
|
156 | let asset;
|
157 | let url = sheet.ownerNode.getAttribute("href");
|
158 | if (asset = this.manifest.urls[url]) {
|
159 | if (asset.replacedBy) {
|
160 | sheet.ownerNode.href = asset.replacedBy.url;
|
161 | }
|
162 | ;
|
163 | }
|
164 | ;
|
165 | }
|
166 | ;
|
167 | for (let el of iter$__2(doc.querySelectorAll("script[src]"))) {
|
168 | let asset1;
|
169 | if (asset1 = this.manifest.urls[el.getAttribute("src")]) {
|
170 | if (asset1.replacedBy) {
|
171 | dirty.js.push(asset1);
|
172 | }
|
173 | ;
|
174 | }
|
175 | ;
|
176 | }
|
177 | ;
|
178 | if (dirty.js.length) {
|
179 | this.log("js changed - reload?", dirty.js);
|
180 | doc.location.reload();
|
181 | }
|
182 | ;
|
183 | return this;
|
184 | }
|
185 | start() {
|
186 | var self = this;
|
187 | if (this.socket) {
|
188 | return;
|
189 | }
|
190 | ;
|
191 | this.socket = new EventSource("/__hmr__");
|
192 | this.socket.onmessage = function(e) {
|
193 | return self.log("sse.onmessage", e);
|
194 | };
|
195 | this.socket.addEventListener("paused", function(e) {
|
196 | self.log("server paused");
|
197 | return true;
|
198 | });
|
199 | this.socket.addEventListener("state", function(e) {
|
200 | let json = JSON.parse(e.data);
|
201 | return self.log("server state", json);
|
202 | });
|
203 | this.socket.addEventListener("init", function(e) {
|
204 | let json = JSON.parse(e.data);
|
205 | self.manifest.init(json);
|
206 | return self.log("hmr init", self.manifest.data);
|
207 | });
|
208 | this.socket.addEventListener("errors", function(e) {
|
209 | let json = JSON.parse(e.data);
|
210 | for (let \u03C612 = 0, \u03C62 = iter$__2(json), \u03C63 = \u03C62.length; \u03C612 < \u03C63; \u03C612++) {
|
211 | let item = \u03C62[\u03C612];
|
212 | console.error("error in " + item.location.file + ": " + item.location.lineText + " (" + item.text + ")");
|
213 | }
|
214 | ;
|
215 | return;
|
216 | });
|
217 | this.socket.addEventListener("manifest", function(e) {
|
218 | let json = JSON.parse(e.data);
|
219 | let changes = self.manifest.update(json);
|
220 | return self.refresh(changes);
|
221 | });
|
222 | this.socket.addEventListener("reload", function(e) {
|
223 | self.log("asked to reload by server");
|
224 | return doc.location.reload();
|
225 | });
|
226 | return this.socket.onerror = function(e) {
|
227 | return self.log("hmr disconnected", e);
|
228 | };
|
229 | }
|
230 | };
|
231 | globalThis.imba_devtools = new DevTools();
|
232 | })();
|