lilact 0.28.1 → 0.28.4
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/lilact.development.js +18 -9
- package/dist/lilact.development.js.map +2 -2
- package/dist/lilact.development.min.js +27 -27
- package/dist/lilact.development.min.js.map +3 -3
- package/dist/lilact.production.min.js +27 -27
- package/docs/functions/errors.globalErrorHandler.html +1 -1
- package/docs/functions/errors.scanBlockLabels.html +1 -1
- package/docs/functions/errors.traceError.html +1 -1
- package/docs/functions/run.lazy.html +1 -1
- package/docs/functions/run.require.html +1 -1
- package/docs/functions/run.runScripts.html +1 -1
- package/docs/static/demos/error-nested-5.jsx +2 -3
- package/docs/static/index.html +1 -0
- package/docs/static/lilact.development.js +18 -9
- package/docs/static/lilact.development.js.map +2 -2
- package/docs/static/lilact.development.min.js +27 -27
- package/docs/static/lilact.development.min.js.map +3 -3
- package/docs/static/lilact.production.min.js +27 -27
- package/docs/variables/errors.blocks_info.html +1 -1
- package/docs/variables/errors.error.html +1 -1
- package/examples/demos/error-nested-5.jsx +2 -3
- package/examples/index.html +1 -2
- package/examples/lilact.development.js +18 -9
- package/examples/lilact.development.js.map +2 -2
- package/examples/lilact.development.min.js +27 -27
- package/examples/lilact.development.min.js.map +3 -3
- package/examples/lilact.production.min.js +27 -27
- package/package.json +1 -1
- package/src/errors.jsx +45 -24
- package/src/jsx.js +3 -1
- package/src/run.jsx +9 -17
package/package.json
CHANGED
package/src/errors.jsx
CHANGED
|
@@ -37,6 +37,15 @@ import Lilact from "./lilact.jsx";
|
|
|
37
37
|
import { required_scripts } from "./run.jsx";
|
|
38
38
|
import { css } from "@emotion/css";
|
|
39
39
|
|
|
40
|
+
function isSafari() {
|
|
41
|
+
const userAgent = navigator.userAgent;
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
/Safari/.test(userAgent) &&
|
|
45
|
+
!/Chrome|Chromium|CriOS|FxiOS|EdgiOS|OPiOS/.test(userAgent)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
function number(value) {
|
|
41
50
|
const result = Number(value);
|
|
42
51
|
return Number.isFinite(result) ? result : null;
|
|
@@ -87,22 +96,29 @@ function stackLocation(stack) {
|
|
|
87
96
|
}
|
|
88
97
|
|
|
89
98
|
function browserLocation(error) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
const line = number(
|
|
100
|
+
error?.lineNumber ??
|
|
101
|
+
error?.lineno ??
|
|
102
|
+
error?.line
|
|
103
|
+
);
|
|
104
|
+
const column = number(
|
|
105
|
+
error?.columnNumber ??
|
|
106
|
+
error?.colno ??
|
|
107
|
+
error?.column
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const lineOffset = isSafari() ? 0 : 1;
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
line:
|
|
114
|
+
line == null
|
|
115
|
+
? null
|
|
116
|
+
: Math.max(0, line - lineOffset),
|
|
117
|
+
column:
|
|
118
|
+
column == null
|
|
119
|
+
? null
|
|
120
|
+
: Math.max(0, column - 1),
|
|
121
|
+
};
|
|
106
122
|
}
|
|
107
123
|
|
|
108
124
|
function traceBlock(error) {
|
|
@@ -203,15 +219,20 @@ export function traceError(value, runPath) {
|
|
|
203
219
|
runPath ||
|
|
204
220
|
null;
|
|
205
221
|
|
|
222
|
+
const sameSource =
|
|
223
|
+
!source?.path ||
|
|
224
|
+
!stack?.path ||
|
|
225
|
+
source.path === stack.path;
|
|
226
|
+
|
|
206
227
|
let line =
|
|
207
|
-
|
|
208
|
-
browser.line ??
|
|
209
|
-
null;
|
|
228
|
+
sameSource
|
|
229
|
+
? stack?.line ?? browser.line ?? null
|
|
230
|
+
: browser.line ?? null;
|
|
210
231
|
|
|
211
232
|
let column =
|
|
212
|
-
|
|
213
|
-
browser.column ??
|
|
214
|
-
null;
|
|
233
|
+
sameSource
|
|
234
|
+
? stack?.column ?? browser.column ?? null
|
|
235
|
+
: browser.column ?? null;
|
|
215
236
|
|
|
216
237
|
const result = {
|
|
217
238
|
fileName,
|
|
@@ -253,7 +274,7 @@ export function traceError(value, runPath) {
|
|
|
253
274
|
) {
|
|
254
275
|
result.fileName ||= block.path || runPath || null;
|
|
255
276
|
result.lineNumber ??= block.line;
|
|
256
|
-
result.columnNumber ??= block.
|
|
277
|
+
result.columnNumber ??= block.column;
|
|
257
278
|
result.label = block.desc;
|
|
258
279
|
}
|
|
259
280
|
|
|
@@ -390,7 +411,7 @@ export function scanBlockLabels(code, path) {
|
|
|
390
411
|
Lilact.blocks_info.labels[match[1]] = {
|
|
391
412
|
path,
|
|
392
413
|
line: Number(match[2]),
|
|
393
|
-
|
|
414
|
+
column: Number(match[3]),
|
|
394
415
|
desc: match[4],
|
|
395
416
|
};
|
|
396
417
|
}
|
package/src/jsx.js
CHANGED
|
@@ -950,8 +950,10 @@ function generateSourceMap(json, path, jsx_eols, out_eols, mappings=[])
|
|
|
950
950
|
}
|
|
951
951
|
sourcemap.mappings = mstr.substring(1).replace(/;,/g, ";");
|
|
952
952
|
|
|
953
|
-
|
|
953
|
+
let out = "\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(JSON.stringify(sourcemap));
|
|
954
|
+
out += `\n//# sourceURL=eval:/${path}`;
|
|
954
955
|
|
|
956
|
+
return out;
|
|
955
957
|
}
|
|
956
958
|
|
|
957
959
|
|
package/src/run.jsx
CHANGED
|
@@ -181,20 +181,19 @@ export function run(
|
|
|
181
181
|
path,
|
|
182
182
|
mappings: module.mappings,
|
|
183
183
|
factory: "createComponent",
|
|
184
|
-
appendSourcemap:
|
|
184
|
+
appendSourcemap: true,
|
|
185
185
|
injectTraceLabels: true,
|
|
186
186
|
produceCJS: true,
|
|
187
187
|
blocks_info: Lilact.blocks_info,
|
|
188
188
|
});
|
|
189
|
-
}
|
|
189
|
+
}
|
|
190
|
+
catch (value) {
|
|
190
191
|
const error = asError(value);
|
|
191
|
-
|
|
192
192
|
error.fileName ??= path;
|
|
193
|
+
error.lilact_source ??= {path};
|
|
193
194
|
error.sourcePhase = "transpile";
|
|
194
|
-
|
|
195
195
|
module.error = error;
|
|
196
196
|
Lilact.error = error;
|
|
197
|
-
|
|
198
197
|
throw error;
|
|
199
198
|
}
|
|
200
199
|
|
|
@@ -206,30 +205,23 @@ export function run(
|
|
|
206
205
|
* sourceURL helps when the browser includes eval locations in its stack.
|
|
207
206
|
* It is not used as the authoritative source; the catch block below is.
|
|
208
207
|
*/
|
|
209
|
-
processed += `\n//# sourceURL=eval:/${path}`;
|
|
210
208
|
|
|
211
209
|
try {
|
|
210
|
+
new Function(processed);
|
|
211
|
+
|
|
212
212
|
globalThis.Lilact = Lilact;
|
|
213
213
|
globalThis.createComponent = Lilact.createComponent;
|
|
214
214
|
globalThis.Fragment = Lilact.Fragment;
|
|
215
215
|
|
|
216
216
|
const result = eval(processed);
|
|
217
|
-
|
|
218
217
|
module.loaded = true;
|
|
219
218
|
|
|
220
|
-
return isEmpty(module.exports)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
} catch (value) {
|
|
224
|
-
/*
|
|
225
|
-
* This catch executes in the module whose eval failed, including
|
|
226
|
-
* generated-JavaScript syntax errors. Therefore path is authoritative.
|
|
227
|
-
*/
|
|
219
|
+
return isEmpty(module.exports) ? result : module.exports;
|
|
220
|
+
}
|
|
221
|
+
catch (value) {
|
|
228
222
|
const error = report(value, path);
|
|
229
|
-
|
|
230
223
|
error.sourcePhase ??= "runtime";
|
|
231
224
|
module.error = error;
|
|
232
|
-
|
|
233
225
|
throw error;
|
|
234
226
|
}
|
|
235
227
|
}
|