rip-lang 3.14.4 → 3.14.5
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/README.md +1 -1
- package/docs/dist/rip.js +122 -124
- package/docs/dist/rip.min.js +59 -59
- package/docs/dist/rip.min.js.br +0 -0
- package/package.json +1 -1
- package/src/compiler.js +21 -23
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
<a href="https://github.com/shreeve/rip-lang/commits/main"><img src="https://img.shields.io/badge/version-3.14.
|
|
12
|
+
<a href="https://github.com/shreeve/rip-lang/commits/main"><img src="https://img.shields.io/badge/version-3.14.5-blue.svg" alt="Version"></a>
|
|
13
13
|
<a href="#zero-dependencies"><img src="https://img.shields.io/badge/dependencies-ZERO-brightgreen.svg" alt="Dependencies"></a>
|
|
14
14
|
<a href="#"><img src="https://img.shields.io/badge/tests-1%2C436%2F1%2C436-brightgreen.svg" alt="Tests"></a>
|
|
15
15
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a>
|
package/docs/dist/rip.js
CHANGED
|
@@ -11414,7 +11414,7 @@ function _setDataSection() {
|
|
|
11414
11414
|
this.indentLevel++;
|
|
11415
11415
|
let lines = [];
|
|
11416
11416
|
if (!noVar)
|
|
11417
|
-
lines.push(
|
|
11417
|
+
lines.push(`let ${itemVarPattern} = ${iterCode}[${idxName}];`);
|
|
11418
11418
|
if (guard) {
|
|
11419
11419
|
lines.push(`if (${this.emit(guard, "value")}) {`);
|
|
11420
11420
|
this.indentLevel++;
|
|
@@ -11433,7 +11433,7 @@ ${this.indent()}}`;
|
|
|
11433
11433
|
if (noVar) {
|
|
11434
11434
|
return guard ? loopHeader + `{ if (${this.emit(guard, "value")}) ${this.emit(body, "statement")}; }` : loopHeader + `{ ${this.emit(body, "statement")}; }`;
|
|
11435
11435
|
}
|
|
11436
|
-
return guard ? loopHeader + `{ ${itemVarPattern} = ${iterCode}[${idxName}]; if (${this.emit(guard, "value")}) ${this.emit(body, "statement")}; }` : loopHeader + `{ ${itemVarPattern} = ${iterCode}[${idxName}]; ${this.emit(body, "statement")}; }`;
|
|
11436
|
+
return guard ? loopHeader + `{ let ${itemVarPattern} = ${iterCode}[${idxName}]; if (${this.emit(guard, "value")}) ${this.emit(body, "statement")}; }` : loopHeader + `{ let ${itemVarPattern} = ${iterCode}[${idxName}]; ${this.emit(body, "statement")}; }`;
|
|
11437
11437
|
}
|
|
11438
11438
|
if (indexVar) {
|
|
11439
11439
|
let iterCode = this.emit(iterable, "value");
|
|
@@ -11442,7 +11442,7 @@ ${this.indent()}}`;
|
|
|
11442
11442
|
code2 += `{
|
|
11443
11443
|
`;
|
|
11444
11444
|
this.indentLevel++;
|
|
11445
|
-
code2 += this.indent() +
|
|
11445
|
+
code2 += this.indent() + `let ${itemVarPattern} = ${iterCode}[${indexVar}];
|
|
11446
11446
|
`;
|
|
11447
11447
|
if (guard) {
|
|
11448
11448
|
code2 += this.indent() + `if (${this.unwrap(this.emit(guard, "value"))}) {
|
|
@@ -11462,7 +11462,7 @@ ${this.indent()}}`;
|
|
|
11462
11462
|
this.indentLevel--;
|
|
11463
11463
|
code2 += this.indent() + "}";
|
|
11464
11464
|
} else {
|
|
11465
|
-
code2 += guard ? `{ ${itemVarPattern} = ${iterCode}[${indexVar}]; if (${this.unwrap(this.emit(guard, "value"))}) ${this.emit(body, "statement")}; }` : `{ ${itemVarPattern} = ${iterCode}[${indexVar}]; ${this.emit(body, "statement")}; }`;
|
|
11465
|
+
code2 += guard ? `{ let ${itemVarPattern} = ${iterCode}[${indexVar}]; if (${this.unwrap(this.emit(guard, "value"))}) ${this.emit(body, "statement")}; }` : `{ let ${itemVarPattern} = ${iterCode}[${indexVar}]; ${this.emit(body, "statement")}; }`;
|
|
11466
11466
|
}
|
|
11467
11467
|
return code2;
|
|
11468
11468
|
}
|
|
@@ -11482,8 +11482,7 @@ ${this.indent()}}`;
|
|
|
11482
11482
|
return code2;
|
|
11483
11483
|
}
|
|
11484
11484
|
}
|
|
11485
|
-
let
|
|
11486
|
-
let code = `for (${bind}${itemVarPattern} of ${this.emit(iterable, "value")}) `;
|
|
11485
|
+
let code = `for (let ${itemVarPattern} of ${this.emit(iterable, "value")}) `;
|
|
11487
11486
|
code += guard ? this.emitLoopBodyWithGuard(body, guard) : this.emitLoopBody(body);
|
|
11488
11487
|
return code;
|
|
11489
11488
|
}
|
|
@@ -11495,7 +11494,7 @@ ${this.indent()}}`;
|
|
|
11495
11494
|
}
|
|
11496
11495
|
let [keyVar, valueVar] = Array.isArray(vars) ? vars : [vars];
|
|
11497
11496
|
let objCode = this.emit(obj, "value");
|
|
11498
|
-
let code = `for (${keyVar} in ${objCode}) `;
|
|
11497
|
+
let code = `for (let ${keyVar} in ${objCode}) `;
|
|
11499
11498
|
if (own && !valueVar && !guard) {
|
|
11500
11499
|
if (this.is(body, "block")) {
|
|
11501
11500
|
this.indentLevel++;
|
|
@@ -11515,7 +11514,7 @@ ${this.indent()}}`;
|
|
|
11515
11514
|
let lines = [];
|
|
11516
11515
|
if (own)
|
|
11517
11516
|
lines.push(`if (!Object.hasOwn(${objCode}, ${keyVar})) continue;`);
|
|
11518
|
-
lines.push(
|
|
11517
|
+
lines.push(`let ${valueVar} = ${objCode}[${keyVar}];`);
|
|
11519
11518
|
if (guard) {
|
|
11520
11519
|
lines.push(`if (${this.emit(guard, "value")}) {`);
|
|
11521
11520
|
this.indentLevel++;
|
|
@@ -11534,7 +11533,7 @@ ${this.indent()}}`;
|
|
|
11534
11533
|
let inline = "";
|
|
11535
11534
|
if (own)
|
|
11536
11535
|
inline += `if (!Object.hasOwn(${objCode}, ${keyVar})) continue; `;
|
|
11537
|
-
inline +=
|
|
11536
|
+
inline += `let ${valueVar} = ${objCode}[${keyVar}]; `;
|
|
11538
11537
|
if (guard)
|
|
11539
11538
|
inline += `if (${this.emit(guard, "value")}) `;
|
|
11540
11539
|
inline += `${this.emit(body, "statement")};`;
|
|
@@ -11582,7 +11581,7 @@ ${this.indent()}}`;
|
|
|
11582
11581
|
itemVarPattern = this.emitDestructuringPattern(firstVar);
|
|
11583
11582
|
else
|
|
11584
11583
|
itemVarPattern = firstVar;
|
|
11585
|
-
let code = `for ${awaitKw}(${itemVarPattern} of ${iterCode}) `;
|
|
11584
|
+
let code = `for ${awaitKw}(let ${itemVarPattern} of ${iterCode}) `;
|
|
11586
11585
|
if (needsTempVar && destructStmts.length > 0) {
|
|
11587
11586
|
let stmts = this.unwrapBlock(body);
|
|
11588
11587
|
let allStmts = this.withIndent(() => [
|
|
@@ -11934,30 +11933,29 @@ ${this.indent()}}`;
|
|
|
11934
11933
|
let isPlus1 = !isNeg && (step === "1" || step === 1 || str(step) === "1");
|
|
11935
11934
|
let update = isMinus1 ? `${idxN}--` : isPlus1 ? `${idxN}++` : `${idxN} += ${stc}`;
|
|
11936
11935
|
let header = isNeg ? `for (let ${idxN} = ${ic}.length - 1; ${idxN} >= 0; ${update})` : `for (let ${idxN} = 0; ${idxN} < ${ic}.length; ${update})`;
|
|
11937
|
-
return { header, setup: noVar ? null :
|
|
11936
|
+
return { header, setup: noVar ? null : `let ${ivp} = ${ic}[${idxN}];` };
|
|
11938
11937
|
}
|
|
11939
11938
|
if (indexVar) {
|
|
11940
11939
|
let ic = this.emit(iterable, "value");
|
|
11941
11940
|
return {
|
|
11942
11941
|
header: `for (let ${indexVar} = 0; ${indexVar} < ${ic}.length; ${indexVar}++)`,
|
|
11943
|
-
setup:
|
|
11942
|
+
setup: `let ${ivp} = ${ic}[${indexVar}];`
|
|
11944
11943
|
};
|
|
11945
11944
|
}
|
|
11946
|
-
|
|
11947
|
-
return { header: `for (${bind}${ivp} of ${this.emit(iterable, "value")})`, setup: null };
|
|
11945
|
+
return { header: `for (let ${ivp} of ${this.emit(iterable, "value")})`, setup: null };
|
|
11948
11946
|
}
|
|
11949
11947
|
_forOfHeader(vars, iterable, own) {
|
|
11950
11948
|
let va = Array.isArray(vars) ? vars : [vars];
|
|
11951
11949
|
let [kv, vv] = va;
|
|
11952
11950
|
let kvp = this.is(kv, "array") || this.is(kv, "object") ? this.emitDestructuringPattern(kv) : kv;
|
|
11953
11951
|
let oc = this.emit(iterable, "value");
|
|
11954
|
-
return { header: `for (${kvp} in ${oc})`, own, vv, oc, kvp };
|
|
11952
|
+
return { header: `for (let ${kvp} in ${oc})`, own, vv, oc, kvp };
|
|
11955
11953
|
}
|
|
11956
11954
|
_forAsHeader(vars, iterable, isAwait) {
|
|
11957
11955
|
let va = Array.isArray(vars) ? vars : [vars];
|
|
11958
11956
|
let [fv] = va;
|
|
11959
11957
|
let ivp = this.is(fv, "array") || this.is(fv, "object") ? this.emitDestructuringPattern(fv) : fv;
|
|
11960
|
-
return { header: `for ${isAwait ? "await " : ""}(${ivp} of ${this.emit(iterable, "value")})` };
|
|
11958
|
+
return { header: `for ${isAwait ? "await " : ""}(let ${ivp} of ${this.emit(iterable, "value")})` };
|
|
11961
11959
|
}
|
|
11962
11960
|
emitComprehension(head, rest, context) {
|
|
11963
11961
|
let [expr, iterators, guards] = rest;
|
|
@@ -11991,7 +11989,7 @@ ${this.indent()}}`;
|
|
|
11991
11989
|
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kvp})) continue;
|
|
11992
11990
|
`;
|
|
11993
11991
|
if (vv)
|
|
11994
|
-
code += this.indent() +
|
|
11992
|
+
code += this.indent() + `let ${vv} = ${oc}[${kvp}];
|
|
11995
11993
|
`;
|
|
11996
11994
|
} else if (iterType === "for-as") {
|
|
11997
11995
|
let { header } = this._forAsHeader(vars, iterable, iter[3]);
|
|
@@ -12073,14 +12071,14 @@ ${this.indent()}}`;
|
|
|
12073
12071
|
if (iterType === "for-of") {
|
|
12074
12072
|
let [kv, vv] = vars;
|
|
12075
12073
|
let oc = this.emit(iterable, "value");
|
|
12076
|
-
code += this.indent() + `for (${kv} in ${oc}) {
|
|
12074
|
+
code += this.indent() + `for (let ${kv} in ${oc}) {
|
|
12077
12075
|
`;
|
|
12078
12076
|
this.indentLevel++;
|
|
12079
12077
|
if (own)
|
|
12080
12078
|
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kv})) continue;
|
|
12081
12079
|
`;
|
|
12082
12080
|
if (vv)
|
|
12083
|
-
code += this.indent() +
|
|
12081
|
+
code += this.indent() + `let ${vv} = ${oc}[${kv}];
|
|
12084
12082
|
`;
|
|
12085
12083
|
}
|
|
12086
12084
|
}
|
|
@@ -12786,7 +12784,7 @@ ${this.indent()}}`;
|
|
|
12786
12784
|
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kvp})) continue;
|
|
12787
12785
|
`;
|
|
12788
12786
|
if (vv)
|
|
12789
|
-
code += this.indent() +
|
|
12787
|
+
code += this.indent() + `let ${vv} = ${oc}[${kvp}];
|
|
12790
12788
|
`;
|
|
12791
12789
|
if (guards?.length > 0) {
|
|
12792
12790
|
code += this.indent() + `if (${guards.map((g) => this.emit(g, "value")).join(" && ")}) {
|
|
@@ -12883,7 +12881,7 @@ ${this.indent()}}`;
|
|
|
12883
12881
|
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kvp})) continue;
|
|
12884
12882
|
`;
|
|
12885
12883
|
if (vv)
|
|
12886
|
-
code += this.indent() +
|
|
12884
|
+
code += this.indent() + `let ${vv} = ${oc}[${kvp}];
|
|
12887
12885
|
`;
|
|
12888
12886
|
emitBody();
|
|
12889
12887
|
this.indentLevel--;
|
|
@@ -13934,8 +13932,8 @@ globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
|
|
|
13934
13932
|
return new CodeEmitter({}).getComponentRuntime();
|
|
13935
13933
|
}
|
|
13936
13934
|
// src/browser.js
|
|
13937
|
-
var VERSION = "3.14.
|
|
13938
|
-
var BUILD_DATE = "2026-04-
|
|
13935
|
+
var VERSION = "3.14.5";
|
|
13936
|
+
var BUILD_DATE = "2026-04-24@12:50:45GMT";
|
|
13939
13937
|
if (typeof globalThis !== "undefined") {
|
|
13940
13938
|
if (!globalThis.__rip)
|
|
13941
13939
|
new Function(getReactiveRuntime())();
|
|
@@ -14450,10 +14448,10 @@ ${indented}`);
|
|
|
14450
14448
|
_depth++;
|
|
14451
14449
|
return (() => {
|
|
14452
14450
|
try {
|
|
14453
|
-
for (
|
|
14451
|
+
for (let seg2 of segs) {
|
|
14454
14452
|
if (!(obj != null))
|
|
14455
14453
|
return;
|
|
14456
|
-
obj = obj[resolveIndex(
|
|
14454
|
+
obj = obj[resolveIndex(seg2, obj)];
|
|
14457
14455
|
}
|
|
14458
14456
|
return obj;
|
|
14459
14457
|
} finally {
|
|
@@ -14469,8 +14467,8 @@ ${indented}`);
|
|
|
14469
14467
|
return (() => {
|
|
14470
14468
|
try {
|
|
14471
14469
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14472
|
-
|
|
14473
|
-
key = resolveIndex(
|
|
14470
|
+
let seg2 = segs[i2];
|
|
14471
|
+
key = resolveIndex(seg2, obj);
|
|
14474
14472
|
if (i2 === segs.length - 1) {
|
|
14475
14473
|
obj[key] = value;
|
|
14476
14474
|
} else {
|
|
@@ -14533,9 +14531,9 @@ ${indented}`);
|
|
|
14533
14531
|
try {
|
|
14534
14532
|
return (() => {
|
|
14535
14533
|
const result = [];
|
|
14536
|
-
for (
|
|
14537
|
-
|
|
14538
|
-
result.push(target[
|
|
14534
|
+
for (let k2 in obj) {
|
|
14535
|
+
let v2 = obj[k2];
|
|
14536
|
+
result.push(target[k2] = v2);
|
|
14539
14537
|
}
|
|
14540
14538
|
return result;
|
|
14541
14539
|
})();
|
|
@@ -14553,10 +14551,10 @@ ${indented}`);
|
|
|
14553
14551
|
try {
|
|
14554
14552
|
segs = walk(path);
|
|
14555
14553
|
obj = proxy;
|
|
14556
|
-
for (
|
|
14554
|
+
for (let seg2 of segs) {
|
|
14557
14555
|
if (!(obj != null))
|
|
14558
14556
|
return [];
|
|
14559
|
-
obj = obj[resolveIndex(
|
|
14557
|
+
obj = obj[resolveIndex(seg2, obj)];
|
|
14560
14558
|
}
|
|
14561
14559
|
if (!(obj != null && typeof obj === "object"))
|
|
14562
14560
|
return [];
|
|
@@ -14579,8 +14577,8 @@ ${indented}`);
|
|
|
14579
14577
|
return false;
|
|
14580
14578
|
obj = proxy;
|
|
14581
14579
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14582
|
-
|
|
14583
|
-
key = resolveIndex(
|
|
14580
|
+
let seg2 = segs[i2];
|
|
14581
|
+
key = resolveIndex(seg2, obj);
|
|
14584
14582
|
if (i2 === segs.length - 1) {
|
|
14585
14583
|
t = raw(obj);
|
|
14586
14584
|
keysSignal(t).value;
|
|
@@ -14609,8 +14607,8 @@ ${indented}`);
|
|
|
14609
14607
|
return (() => {
|
|
14610
14608
|
const result = [];
|
|
14611
14609
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14612
|
-
|
|
14613
|
-
key = resolveIndex(
|
|
14610
|
+
let seg2 = segs[i2];
|
|
14611
|
+
key = resolveIndex(seg2, obj);
|
|
14614
14612
|
if (i2 === segs.length - 1) {
|
|
14615
14613
|
delete obj[key];
|
|
14616
14614
|
return;
|
|
@@ -14652,9 +14650,9 @@ ${indented}`);
|
|
|
14652
14650
|
saved = storage.getItem(storageKey);
|
|
14653
14651
|
if (saved) {
|
|
14654
14652
|
savedData = JSON.parse(saved);
|
|
14655
|
-
for (
|
|
14656
|
-
|
|
14657
|
-
app.data[
|
|
14653
|
+
for (let k2 in savedData) {
|
|
14654
|
+
let v2 = savedData[k2];
|
|
14655
|
+
app.data[k2] = v2;
|
|
14658
14656
|
}
|
|
14659
14657
|
}
|
|
14660
14658
|
} catch {}
|
|
@@ -14815,8 +14813,8 @@ ${indented}`);
|
|
|
14815
14813
|
notify = function(event, path) {
|
|
14816
14814
|
let watcher;
|
|
14817
14815
|
const _result = [];
|
|
14818
|
-
for (
|
|
14819
|
-
_result.push(
|
|
14816
|
+
for (let watcher2 of watchers) {
|
|
14817
|
+
_result.push(watcher2(event, path));
|
|
14820
14818
|
}
|
|
14821
14819
|
return _result;
|
|
14822
14820
|
};
|
|
@@ -14840,12 +14838,12 @@ ${indented}`);
|
|
|
14840
14838
|
let path, prefix, rest, result;
|
|
14841
14839
|
result = [];
|
|
14842
14840
|
prefix = dir ? dir + "/" : "";
|
|
14843
|
-
for ([
|
|
14844
|
-
if (
|
|
14845
|
-
rest =
|
|
14841
|
+
for (let [path2] of files) {
|
|
14842
|
+
if (path2.startsWith(prefix)) {
|
|
14843
|
+
rest = path2.slice(prefix.length);
|
|
14846
14844
|
if (rest.includes("/"))
|
|
14847
14845
|
continue;
|
|
14848
|
-
result.push(
|
|
14846
|
+
result.push(path2);
|
|
14849
14847
|
}
|
|
14850
14848
|
}
|
|
14851
14849
|
return result;
|
|
@@ -14853,17 +14851,17 @@ ${indented}`);
|
|
|
14853
14851
|
let path, prefix, result;
|
|
14854
14852
|
result = [];
|
|
14855
14853
|
prefix = dir ? dir + "/" : "";
|
|
14856
|
-
for ([
|
|
14857
|
-
if (
|
|
14858
|
-
result.push(
|
|
14854
|
+
for (let [path2] of files) {
|
|
14855
|
+
if (path2.startsWith(prefix))
|
|
14856
|
+
result.push(path2);
|
|
14859
14857
|
}
|
|
14860
14858
|
return result;
|
|
14861
14859
|
}, load: function(obj) {
|
|
14862
14860
|
let content, key;
|
|
14863
14861
|
const _result = [];
|
|
14864
|
-
for (
|
|
14865
|
-
|
|
14866
|
-
_result.push(files.set(
|
|
14862
|
+
for (let key2 in obj) {
|
|
14863
|
+
let content2 = obj[key2];
|
|
14864
|
+
_result.push(files.set(key2, content2));
|
|
14867
14865
|
}
|
|
14868
14866
|
return _result;
|
|
14869
14867
|
}, watch: function(fn) {
|
|
@@ -14901,15 +14899,15 @@ ${indented}`);
|
|
|
14901
14899
|
};
|
|
14902
14900
|
matchRoute = function(path, routes) {
|
|
14903
14901
|
let i, match, name, params, route;
|
|
14904
|
-
for (
|
|
14905
|
-
match = path.match(
|
|
14902
|
+
for (let route2 of routes) {
|
|
14903
|
+
match = path.match(route2.regex.regex);
|
|
14906
14904
|
if (match) {
|
|
14907
14905
|
params = {};
|
|
14908
|
-
for (let i2 = 0;i2 <
|
|
14909
|
-
|
|
14910
|
-
params[
|
|
14906
|
+
for (let i2 = 0;i2 < route2.regex.names.length; i2++) {
|
|
14907
|
+
let name2 = route2.regex.names[i2];
|
|
14908
|
+
params[name2] = decodeURIComponent(match[i2 + 1]);
|
|
14911
14909
|
}
|
|
14912
|
-
return { route, params };
|
|
14910
|
+
return { route: route2, params };
|
|
14913
14911
|
}
|
|
14914
14912
|
}
|
|
14915
14913
|
return null;
|
|
@@ -14919,14 +14917,14 @@ ${indented}`);
|
|
|
14919
14917
|
routes = [];
|
|
14920
14918
|
layouts = new Map;
|
|
14921
14919
|
allFiles = components.listAll(root);
|
|
14922
|
-
for (
|
|
14923
|
-
rel =
|
|
14920
|
+
for (let filePath2 of allFiles) {
|
|
14921
|
+
rel = filePath2.slice(root.length + 1);
|
|
14924
14922
|
if (!rel.endsWith(".rip"))
|
|
14925
14923
|
continue;
|
|
14926
14924
|
name = rel.split("/").pop();
|
|
14927
14925
|
if (name === "_layout.rip") {
|
|
14928
14926
|
dir = rel === "_layout.rip" ? "" : rel.slice(0, -"/_layout.rip".length);
|
|
14929
|
-
layouts.set(dir,
|
|
14927
|
+
layouts.set(dir, filePath2);
|
|
14930
14928
|
continue;
|
|
14931
14929
|
}
|
|
14932
14930
|
if (name.startsWith("_"))
|
|
@@ -14938,7 +14936,7 @@ ${indented}`);
|
|
|
14938
14936
|
continue;
|
|
14939
14937
|
urlPattern = fileToPattern(rel);
|
|
14940
14938
|
regex = patternToRegex(urlPattern);
|
|
14941
|
-
routes.push({ pattern: urlPattern, regex, file:
|
|
14939
|
+
routes.push({ pattern: urlPattern, regex, file: filePath2, rel });
|
|
14942
14940
|
}
|
|
14943
14941
|
routes.sort(function(a, b) {
|
|
14944
14942
|
let aCatch, aDyn, bCatch, bDyn;
|
|
@@ -14963,10 +14961,10 @@ ${indented}`);
|
|
|
14963
14961
|
if (layouts.has(""))
|
|
14964
14962
|
chain.push(layouts.get(""));
|
|
14965
14963
|
for (let i2 = 0;i2 < segments.length; i2++) {
|
|
14966
|
-
|
|
14964
|
+
let seg2 = segments[i2];
|
|
14967
14965
|
if (i2 === segments.length - 1)
|
|
14968
14966
|
break;
|
|
14969
|
-
dir = dir ? dir + "/" +
|
|
14967
|
+
dir = dir ? dir + "/" + seg2 : seg2;
|
|
14970
14968
|
if (layouts.has(dir))
|
|
14971
14969
|
chain.push(layouts.get(dir));
|
|
14972
14970
|
}
|
|
@@ -15029,8 +15027,8 @@ ${indented}`);
|
|
|
15029
15027
|
_query.value = Object.fromEntries(new URLSearchParams(queryStr));
|
|
15030
15028
|
return _hash.value = hash;
|
|
15031
15029
|
});
|
|
15032
|
-
for (
|
|
15033
|
-
|
|
15030
|
+
for (let cb2 of navCallbacks) {
|
|
15031
|
+
cb2(router.current);
|
|
15034
15032
|
}
|
|
15035
15033
|
return true;
|
|
15036
15034
|
}
|
|
@@ -15125,28 +15123,28 @@ ${indented}`);
|
|
|
15125
15123
|
if (a.length !== b.length)
|
|
15126
15124
|
return false;
|
|
15127
15125
|
for (let i2 = 0;i2 < a.length; i2++) {
|
|
15128
|
-
|
|
15129
|
-
if (
|
|
15126
|
+
let item2 = a[i2];
|
|
15127
|
+
if (item2 !== b[i2])
|
|
15130
15128
|
return false;
|
|
15131
15129
|
}
|
|
15132
15130
|
return true;
|
|
15133
15131
|
};
|
|
15134
15132
|
findComponent = function(mod) {
|
|
15135
15133
|
let key, val;
|
|
15136
|
-
for (
|
|
15137
|
-
|
|
15138
|
-
if (typeof
|
|
15139
|
-
return
|
|
15134
|
+
for (let key2 in mod) {
|
|
15135
|
+
let val2 = mod[key2];
|
|
15136
|
+
if (typeof val2 === "function" && (val2.prototype?.mount || val2.prototype?._create))
|
|
15137
|
+
return val2;
|
|
15140
15138
|
}
|
|
15141
15139
|
return typeof mod.default === "function" ? mod.default : undefined;
|
|
15142
15140
|
};
|
|
15143
15141
|
findAllComponents = function(mod) {
|
|
15144
15142
|
let key, result, val;
|
|
15145
15143
|
result = {};
|
|
15146
|
-
for (
|
|
15147
|
-
|
|
15148
|
-
if (typeof
|
|
15149
|
-
result[
|
|
15144
|
+
for (let key2 in mod) {
|
|
15145
|
+
let val2 = mod[key2];
|
|
15146
|
+
if (typeof val2 === "function" && (val2.prototype?.mount || val2.prototype?._create)) {
|
|
15147
|
+
result[key2] = val2;
|
|
15150
15148
|
}
|
|
15151
15149
|
}
|
|
15152
15150
|
return result;
|
|
@@ -15161,17 +15159,17 @@ ${indented}`);
|
|
|
15161
15159
|
buildComponentMap = function(components, root = "components") {
|
|
15162
15160
|
let fileName, map, name, path;
|
|
15163
15161
|
map = {};
|
|
15164
|
-
for (
|
|
15165
|
-
if (!
|
|
15162
|
+
for (let path2 of components.listAll(root)) {
|
|
15163
|
+
if (!path2.endsWith(".rip"))
|
|
15166
15164
|
continue;
|
|
15167
|
-
fileName =
|
|
15165
|
+
fileName = path2.split("/").pop();
|
|
15168
15166
|
if (fileName.startsWith("_"))
|
|
15169
15167
|
continue;
|
|
15170
|
-
name = fileToComponentName(
|
|
15168
|
+
name = fileToComponentName(path2);
|
|
15171
15169
|
if (map[name]) {
|
|
15172
|
-
console.warn(`[Rip] Component name collision: ${name} (${map[name]} vs ${
|
|
15170
|
+
console.warn(`[Rip] Component name collision: ${name} (${map[name]} vs ${path2})`);
|
|
15173
15171
|
}
|
|
15174
|
-
map[name] =
|
|
15172
|
+
map[name] = path2;
|
|
15175
15173
|
}
|
|
15176
15174
|
return map;
|
|
15177
15175
|
};
|
|
@@ -15182,12 +15180,12 @@ ${indented}`);
|
|
|
15182
15180
|
if (currentPath) {
|
|
15183
15181
|
parts = currentPath.split("/");
|
|
15184
15182
|
parts.pop();
|
|
15185
|
-
for (
|
|
15186
|
-
if (
|
|
15183
|
+
for (let seg2 of specifier.split("/")) {
|
|
15184
|
+
if (seg2 === "..") {
|
|
15187
15185
|
parts.pop();
|
|
15188
15186
|
} else {
|
|
15189
|
-
if (!(
|
|
15190
|
-
parts.push(
|
|
15187
|
+
if (!(seg2 === ".")) {
|
|
15188
|
+
parts.push(seg2);
|
|
15191
15189
|
}
|
|
15192
15190
|
}
|
|
15193
15191
|
}
|
|
@@ -15199,9 +15197,9 @@ ${indented}`);
|
|
|
15199
15197
|
return `components/_lib/${clean}`;
|
|
15200
15198
|
if (components.exists(`components/${clean}`))
|
|
15201
15199
|
return `components/${clean}`;
|
|
15202
|
-
for (
|
|
15203
|
-
if (
|
|
15204
|
-
return
|
|
15200
|
+
for (let p2 of components.listAll("components")) {
|
|
15201
|
+
if (p2.endsWith(`/${basename}`))
|
|
15202
|
+
return p2;
|
|
15205
15203
|
}
|
|
15206
15204
|
return null;
|
|
15207
15205
|
};
|
|
@@ -15223,8 +15221,8 @@ ${indented}`);
|
|
|
15223
15221
|
ripImportRe = /^(\s*import\s+(?:\{([^}]+)\}\s+from\s+|.*?\s+from\s+)?['"])([^'"]*\.rip)(['"];?\s*)$/gm;
|
|
15224
15222
|
matches = Array.from(js.matchAll(ripImportRe));
|
|
15225
15223
|
for (let _i = matches.length - 1;_i >= 0; _i--) {
|
|
15226
|
-
|
|
15227
|
-
[full, pre, namedImports, specifier, post] =
|
|
15224
|
+
let m2 = matches[_i];
|
|
15225
|
+
[full, pre, namedImports, specifier, post] = m2;
|
|
15228
15226
|
storePath = resolveStorePath(specifier, path, components);
|
|
15229
15227
|
if (storePath === path)
|
|
15230
15228
|
continue;
|
|
@@ -15246,34 +15244,34 @@ ${indented}`);
|
|
|
15246
15244
|
blobUrl = resolver.blobUrls?.[storePath];
|
|
15247
15245
|
if (blobUrl) {
|
|
15248
15246
|
replacement = `${pre}${blobUrl}${post}`;
|
|
15249
|
-
js = js.slice(0,
|
|
15247
|
+
js = js.slice(0, m2.index) + replacement + js.slice(m2.index + full.length);
|
|
15250
15248
|
if (namedImports) {
|
|
15251
|
-
for (
|
|
15252
|
-
importedNames.add(
|
|
15249
|
+
for (let n2 of namedImports.split(",")) {
|
|
15250
|
+
importedNames.add(n2.trim().split(/\s+as\s+/).pop().trim());
|
|
15253
15251
|
}
|
|
15254
15252
|
}
|
|
15255
15253
|
}
|
|
15256
15254
|
}
|
|
15257
15255
|
}
|
|
15258
15256
|
needed = {};
|
|
15259
|
-
for (
|
|
15260
|
-
|
|
15261
|
-
if (importedNames.has(
|
|
15257
|
+
for (let name2 in resolver.map) {
|
|
15258
|
+
let depPath2 = resolver.map[name2];
|
|
15259
|
+
if (importedNames.has(name2))
|
|
15262
15260
|
continue;
|
|
15263
|
-
if (
|
|
15264
|
-
if (!resolver.classes[
|
|
15265
|
-
depSource = components.read(
|
|
15261
|
+
if (depPath2 !== path && js.includes(`new ${name2}(`)) {
|
|
15262
|
+
if (!resolver.classes[name2]) {
|
|
15263
|
+
depSource = components.read(depPath2);
|
|
15266
15264
|
if (depSource) {
|
|
15267
|
-
depMod = await compileAndImport(depSource, compile2, components,
|
|
15265
|
+
depMod = await compileAndImport(depSource, compile2, components, depPath2, resolver);
|
|
15268
15266
|
found = findAllComponents(depMod);
|
|
15269
|
-
for (
|
|
15270
|
-
|
|
15271
|
-
resolver.classes[
|
|
15267
|
+
for (let k2 in found) {
|
|
15268
|
+
let v2 = found[k2];
|
|
15269
|
+
resolver.classes[k2] = v2;
|
|
15272
15270
|
}
|
|
15273
15271
|
}
|
|
15274
15272
|
}
|
|
15275
|
-
if (resolver.classes[
|
|
15276
|
-
needed[
|
|
15273
|
+
if (resolver.classes[name2])
|
|
15274
|
+
needed[name2] = true;
|
|
15277
15275
|
}
|
|
15278
15276
|
}
|
|
15279
15277
|
names = Object.keys(needed);
|
|
@@ -15296,9 +15294,9 @@ ${indented}`);
|
|
|
15296
15294
|
mod = await import(url);
|
|
15297
15295
|
if (resolver) {
|
|
15298
15296
|
found = findAllComponents(mod);
|
|
15299
|
-
for (
|
|
15300
|
-
|
|
15301
|
-
resolver.classes[
|
|
15297
|
+
for (let k2 in found) {
|
|
15298
|
+
let v2 = found[k2];
|
|
15299
|
+
resolver.classes[k2] = v2;
|
|
15302
15300
|
}
|
|
15303
15301
|
}
|
|
15304
15302
|
if (components && path)
|
|
@@ -15345,12 +15343,12 @@ ${indented}`);
|
|
|
15345
15343
|
let inst;
|
|
15346
15344
|
cacheComponent();
|
|
15347
15345
|
for (let _i = layoutInstances.length - 1;_i >= 0; _i--) {
|
|
15348
|
-
|
|
15349
|
-
if (
|
|
15350
|
-
|
|
15351
|
-
if (
|
|
15352
|
-
|
|
15353
|
-
|
|
15346
|
+
let inst2 = layoutInstances[_i];
|
|
15347
|
+
if (inst2.beforeUnmount)
|
|
15348
|
+
inst2.beforeUnmount();
|
|
15349
|
+
if (inst2.unmounted)
|
|
15350
|
+
inst2.unmounted();
|
|
15351
|
+
inst2._target?.remove();
|
|
15354
15352
|
}
|
|
15355
15353
|
layoutInstances = [];
|
|
15356
15354
|
return mountPoint = container;
|
|
@@ -15407,11 +15405,11 @@ ${indented}`);
|
|
|
15407
15405
|
if (layoutsChanged && layoutFiles.length > 0) {
|
|
15408
15406
|
container.innerHTML = "";
|
|
15409
15407
|
mp = container;
|
|
15410
|
-
for (
|
|
15411
|
-
layoutSource = components.read(
|
|
15408
|
+
for (let layoutFile2 of layoutFiles) {
|
|
15409
|
+
layoutSource = components.read(layoutFile2);
|
|
15412
15410
|
if (!layoutSource)
|
|
15413
15411
|
continue;
|
|
15414
|
-
layoutMod = await compileAndImport(layoutSource, compile2, components,
|
|
15412
|
+
layoutMod = await compileAndImport(layoutSource, compile2, components, layoutFile2, resolver);
|
|
15415
15413
|
if (gen2 !== generation) {
|
|
15416
15414
|
router.navigating = false;
|
|
15417
15415
|
return;
|
|
@@ -15423,7 +15421,7 @@ ${indented}`);
|
|
|
15423
15421
|
if (inst.beforeMount)
|
|
15424
15422
|
inst.beforeMount();
|
|
15425
15423
|
wrapper = document.createElement("div");
|
|
15426
|
-
wrapper.setAttribute("data-layout",
|
|
15424
|
+
wrapper.setAttribute("data-layout", layoutFile2);
|
|
15427
15425
|
mp.appendChild(wrapper);
|
|
15428
15426
|
inst.mount(wrapper);
|
|
15429
15427
|
layoutInstances.push(inst);
|
|
@@ -15473,10 +15471,10 @@ ${indented}`);
|
|
|
15473
15471
|
onError({ status: 500, message: err.message, error: err });
|
|
15474
15472
|
handled = false;
|
|
15475
15473
|
for (let _i = layoutInstances.length - 1;_i >= 0; _i--) {
|
|
15476
|
-
|
|
15477
|
-
if (
|
|
15474
|
+
let inst2 = layoutInstances[_i];
|
|
15475
|
+
if (inst2.onError) {
|
|
15478
15476
|
try {
|
|
15479
|
-
|
|
15477
|
+
inst2.onError(err);
|
|
15480
15478
|
handled = true;
|
|
15481
15479
|
break;
|
|
15482
15480
|
} catch (boundaryErr) {
|
|
@@ -15536,10 +15534,10 @@ ${indented}`);
|
|
|
15536
15534
|
es.addEventListener("css", function() {
|
|
15537
15535
|
let link;
|
|
15538
15536
|
const _result = [];
|
|
15539
|
-
for (
|
|
15540
|
-
url = new URL(
|
|
15537
|
+
for (let link2 of document.querySelectorAll('link[rel="stylesheet"]')) {
|
|
15538
|
+
url = new URL(link2.href);
|
|
15541
15539
|
url.searchParams.set("_t", Date.now());
|
|
15542
|
-
|
|
15540
|
+
link2.href = url.toString();
|
|
15543
15541
|
}
|
|
15544
15542
|
return _result;
|
|
15545
15543
|
});
|