rip-lang 3.14.3 → 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 +234 -131
- package/docs/dist/rip.min.js +82 -66
- package/docs/dist/rip.min.js.br +0 -0
- package/package.json +1 -1
- package/src/compiler.js +98 -32
- package/src/lexer.js +1 -1
package/docs/dist/rip.js
CHANGED
|
@@ -5382,7 +5382,7 @@ function __schema(descriptor) {
|
|
|
5382
5382
|
"THIS"
|
|
5383
5383
|
]);
|
|
5384
5384
|
var TAGGABLE = new Set(["IDENTIFIER", "PROPERTY", ")", "CALL_END", "]", "INDEX_END"]);
|
|
5385
|
-
var CONTROL_IN_IMPLICIT = new Set(["IF", "TRY", "FINALLY", "CATCH", "CLASS", "SWITCH", "COMPONENT"]);
|
|
5385
|
+
var CONTROL_IN_IMPLICIT = new Set(["IF", "TRY", "FINALLY", "CATCH", "CLASS", "SWITCH", "COMPONENT", "FOR"]);
|
|
5386
5386
|
var SINGLE_LINERS = new Set(["ELSE", "->", "=>", "TRY", "FINALLY", "THEN"]);
|
|
5387
5387
|
var SINGLE_CLOSERS = new Set(["TERMINATOR", "CATCH", "FINALLY", "ELSE", "OUTDENT", "LEADING_WHEN"]);
|
|
5388
5388
|
var LINE_BREAK = new Set(["INDENT", "OUTDENT", "TERMINATOR"]);
|
|
@@ -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
|
}
|
|
@@ -12572,7 +12570,25 @@ export default ${expr[1]}`;
|
|
|
12572
12570
|
}
|
|
12573
12571
|
}
|
|
12574
12572
|
}
|
|
12575
|
-
|
|
12573
|
+
if (!isConstructor && !sideEffectOnly && isLast && loopStmts.includes(h)) {
|
|
12574
|
+
if (this.containsYield(stmt)) {
|
|
12575
|
+
code += this.indent() + this.addSemicolon(stmt, this.emit(stmt, "statement")) + `
|
|
12576
|
+
`;
|
|
12577
|
+
return;
|
|
12578
|
+
}
|
|
12579
|
+
code += this.indent() + `const _result = [];
|
|
12580
|
+
`;
|
|
12581
|
+
this.comprehensionTarget = "_result";
|
|
12582
|
+
let saved = this._skipCompTargetInit;
|
|
12583
|
+
this._skipCompTargetInit = true;
|
|
12584
|
+
code += this.emit(stmt, "value");
|
|
12585
|
+
this._skipCompTargetInit = saved;
|
|
12586
|
+
this.comprehensionTarget = null;
|
|
12587
|
+
code += this.indent() + `return _result;
|
|
12588
|
+
`;
|
|
12589
|
+
return;
|
|
12590
|
+
}
|
|
12591
|
+
let needsReturn = !isConstructor && !sideEffectOnly && isLast && !noRetStmts.includes(h) && !this.hasExplicitControlFlow(stmt);
|
|
12576
12592
|
let ctx = needsReturn ? "value" : "statement";
|
|
12577
12593
|
let sc = this.emit(stmt, ctx);
|
|
12578
12594
|
if (needsReturn)
|
|
@@ -12698,9 +12714,41 @@ ${this.indent()}}`;
|
|
|
12698
12714
|
}
|
|
12699
12715
|
emitComprehensionWithTarget(expr, iterators, guards, targetVar) {
|
|
12700
12716
|
let code = "";
|
|
12701
|
-
|
|
12717
|
+
if (!this._skipCompTargetInit)
|
|
12718
|
+
code += this.indent() + `${targetVar} = [];
|
|
12719
|
+
`;
|
|
12720
|
+
let hasCtrl = (node) => {
|
|
12721
|
+
if (typeof node === "string" && (node === "break" || node === "continue"))
|
|
12722
|
+
return true;
|
|
12723
|
+
if (!Array.isArray(node))
|
|
12724
|
+
return false;
|
|
12725
|
+
if (["break", "continue", "return", "throw"].includes(node[0]))
|
|
12726
|
+
return true;
|
|
12727
|
+
if (node[0] === "if")
|
|
12728
|
+
return node.slice(1).some(hasCtrl);
|
|
12729
|
+
return node.some(hasCtrl);
|
|
12730
|
+
};
|
|
12731
|
+
let emitBody = () => {
|
|
12732
|
+
let loopTypes = ["for-in", "for-of", "for-as", "while", "loop"];
|
|
12733
|
+
if (this.is(expr, "block")) {
|
|
12734
|
+
for (let i = 0;i < expr.length - 1; i++) {
|
|
12735
|
+
let s = expr[i + 1], isLast = i === expr.length - 2;
|
|
12736
|
+
if (!isLast || hasCtrl(s) || Array.isArray(s) && loopTypes.includes(s[0])) {
|
|
12737
|
+
code += this.indent() + this.emit(s, "statement") + `;
|
|
12738
|
+
`;
|
|
12739
|
+
} else {
|
|
12740
|
+
code += this.indent() + `${targetVar}.push(${this.emit(s, "value")});
|
|
12741
|
+
`;
|
|
12742
|
+
}
|
|
12743
|
+
}
|
|
12744
|
+
} else if (hasCtrl(expr)) {
|
|
12745
|
+
code += this.indent() + this.emit(expr, "statement") + `;
|
|
12746
|
+
`;
|
|
12747
|
+
} else {
|
|
12748
|
+
code += this.indent() + `${targetVar}.push(${this.emit(expr, "value")});
|
|
12702
12749
|
`;
|
|
12703
|
-
|
|
12750
|
+
}
|
|
12751
|
+
};
|
|
12704
12752
|
if (iterators.length === 1) {
|
|
12705
12753
|
let [iterType, vars, iterable, stepOrOwn] = iterators[0];
|
|
12706
12754
|
if (iterType === "for-in") {
|
|
@@ -12711,14 +12759,61 @@ ${this.indent()}}`;
|
|
|
12711
12759
|
if (setup)
|
|
12712
12760
|
code += this.indent() + setup + `
|
|
12713
12761
|
`;
|
|
12714
|
-
if (guards
|
|
12762
|
+
if (guards?.length > 0) {
|
|
12715
12763
|
code += this.indent() + `if (${guards.map((g) => this.emit(g, "value")).join(" && ")}) {
|
|
12716
12764
|
`;
|
|
12717
12765
|
this.indentLevel++;
|
|
12718
12766
|
}
|
|
12719
|
-
|
|
12767
|
+
emitBody();
|
|
12768
|
+
if (guards?.length > 0) {
|
|
12769
|
+
this.indentLevel--;
|
|
12770
|
+
code += this.indent() + `}
|
|
12771
|
+
`;
|
|
12772
|
+
}
|
|
12773
|
+
this.indentLevel--;
|
|
12774
|
+
code += this.indent() + `}
|
|
12720
12775
|
`;
|
|
12721
|
-
|
|
12776
|
+
return code;
|
|
12777
|
+
}
|
|
12778
|
+
if (iterType === "for-of") {
|
|
12779
|
+
let { header, own, vv, oc, kvp } = this._forOfHeader(vars, iterable, stepOrOwn);
|
|
12780
|
+
code += this.indent() + header + ` {
|
|
12781
|
+
`;
|
|
12782
|
+
this.indentLevel++;
|
|
12783
|
+
if (own)
|
|
12784
|
+
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kvp})) continue;
|
|
12785
|
+
`;
|
|
12786
|
+
if (vv)
|
|
12787
|
+
code += this.indent() + `let ${vv} = ${oc}[${kvp}];
|
|
12788
|
+
`;
|
|
12789
|
+
if (guards?.length > 0) {
|
|
12790
|
+
code += this.indent() + `if (${guards.map((g) => this.emit(g, "value")).join(" && ")}) {
|
|
12791
|
+
`;
|
|
12792
|
+
this.indentLevel++;
|
|
12793
|
+
}
|
|
12794
|
+
emitBody();
|
|
12795
|
+
if (guards?.length > 0) {
|
|
12796
|
+
this.indentLevel--;
|
|
12797
|
+
code += this.indent() + `}
|
|
12798
|
+
`;
|
|
12799
|
+
}
|
|
12800
|
+
this.indentLevel--;
|
|
12801
|
+
code += this.indent() + `}
|
|
12802
|
+
`;
|
|
12803
|
+
return code;
|
|
12804
|
+
}
|
|
12805
|
+
if (iterType === "for-as") {
|
|
12806
|
+
let { header } = this._forAsHeader(vars, iterable, stepOrOwn);
|
|
12807
|
+
code += this.indent() + header + ` {
|
|
12808
|
+
`;
|
|
12809
|
+
this.indentLevel++;
|
|
12810
|
+
if (guards?.length > 0) {
|
|
12811
|
+
code += this.indent() + `if (${guards.map((g) => this.emit(g, "value")).join(" && ")}) {
|
|
12812
|
+
`;
|
|
12813
|
+
this.indentLevel++;
|
|
12814
|
+
}
|
|
12815
|
+
emitBody();
|
|
12816
|
+
if (guards?.length > 0) {
|
|
12722
12817
|
this.indentLevel--;
|
|
12723
12818
|
code += this.indent() + `}
|
|
12724
12819
|
`;
|
|
@@ -12729,8 +12824,10 @@ ${this.indent()}}`;
|
|
|
12729
12824
|
return code;
|
|
12730
12825
|
}
|
|
12731
12826
|
}
|
|
12732
|
-
|
|
12827
|
+
code = "";
|
|
12828
|
+
code += this.indent() + `${targetVar} = ${this.emit(["comprehension", expr, iterators, guards || []], "value")};
|
|
12733
12829
|
`;
|
|
12830
|
+
return code;
|
|
12734
12831
|
}
|
|
12735
12832
|
emitComprehensionAsLoop(expr, iterators, guards) {
|
|
12736
12833
|
let code = "";
|
|
@@ -12784,7 +12881,7 @@ ${this.indent()}}`;
|
|
|
12784
12881
|
code += this.indent() + `if (!Object.hasOwn(${oc}, ${kvp})) continue;
|
|
12785
12882
|
`;
|
|
12786
12883
|
if (vv)
|
|
12787
|
-
code += this.indent() +
|
|
12884
|
+
code += this.indent() + `let ${vv} = ${oc}[${kvp}];
|
|
12788
12885
|
`;
|
|
12789
12886
|
emitBody();
|
|
12790
12887
|
this.indentLevel--;
|
|
@@ -13835,8 +13932,8 @@ globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
|
|
|
13835
13932
|
return new CodeEmitter({}).getComponentRuntime();
|
|
13836
13933
|
}
|
|
13837
13934
|
// src/browser.js
|
|
13838
|
-
var VERSION = "3.14.
|
|
13839
|
-
var BUILD_DATE = "2026-04-
|
|
13935
|
+
var VERSION = "3.14.5";
|
|
13936
|
+
var BUILD_DATE = "2026-04-24@12:50:45GMT";
|
|
13840
13937
|
if (typeof globalThis !== "undefined") {
|
|
13841
13938
|
if (!globalThis.__rip)
|
|
13842
13939
|
new Function(getReactiveRuntime())();
|
|
@@ -14351,10 +14448,10 @@ ${indented}`);
|
|
|
14351
14448
|
_depth++;
|
|
14352
14449
|
return (() => {
|
|
14353
14450
|
try {
|
|
14354
|
-
for (
|
|
14451
|
+
for (let seg2 of segs) {
|
|
14355
14452
|
if (!(obj != null))
|
|
14356
14453
|
return;
|
|
14357
|
-
obj = obj[resolveIndex(
|
|
14454
|
+
obj = obj[resolveIndex(seg2, obj)];
|
|
14358
14455
|
}
|
|
14359
14456
|
return obj;
|
|
14360
14457
|
} finally {
|
|
@@ -14370,8 +14467,8 @@ ${indented}`);
|
|
|
14370
14467
|
return (() => {
|
|
14371
14468
|
try {
|
|
14372
14469
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14373
|
-
|
|
14374
|
-
key = resolveIndex(
|
|
14470
|
+
let seg2 = segs[i2];
|
|
14471
|
+
key = resolveIndex(seg2, obj);
|
|
14375
14472
|
if (i2 === segs.length - 1) {
|
|
14376
14473
|
obj[key] = value;
|
|
14377
14474
|
} else {
|
|
@@ -14434,9 +14531,9 @@ ${indented}`);
|
|
|
14434
14531
|
try {
|
|
14435
14532
|
return (() => {
|
|
14436
14533
|
const result = [];
|
|
14437
|
-
for (
|
|
14438
|
-
|
|
14439
|
-
result.push(target[
|
|
14534
|
+
for (let k2 in obj) {
|
|
14535
|
+
let v2 = obj[k2];
|
|
14536
|
+
result.push(target[k2] = v2);
|
|
14440
14537
|
}
|
|
14441
14538
|
return result;
|
|
14442
14539
|
})();
|
|
@@ -14454,10 +14551,10 @@ ${indented}`);
|
|
|
14454
14551
|
try {
|
|
14455
14552
|
segs = walk(path);
|
|
14456
14553
|
obj = proxy;
|
|
14457
|
-
for (
|
|
14554
|
+
for (let seg2 of segs) {
|
|
14458
14555
|
if (!(obj != null))
|
|
14459
14556
|
return [];
|
|
14460
|
-
obj = obj[resolveIndex(
|
|
14557
|
+
obj = obj[resolveIndex(seg2, obj)];
|
|
14461
14558
|
}
|
|
14462
14559
|
if (!(obj != null && typeof obj === "object"))
|
|
14463
14560
|
return [];
|
|
@@ -14480,8 +14577,8 @@ ${indented}`);
|
|
|
14480
14577
|
return false;
|
|
14481
14578
|
obj = proxy;
|
|
14482
14579
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14483
|
-
|
|
14484
|
-
key = resolveIndex(
|
|
14580
|
+
let seg2 = segs[i2];
|
|
14581
|
+
key = resolveIndex(seg2, obj);
|
|
14485
14582
|
if (i2 === segs.length - 1) {
|
|
14486
14583
|
t = raw(obj);
|
|
14487
14584
|
keysSignal(t).value;
|
|
@@ -14510,8 +14607,8 @@ ${indented}`);
|
|
|
14510
14607
|
return (() => {
|
|
14511
14608
|
const result = [];
|
|
14512
14609
|
for (let i2 = 0;i2 < segs.length; i2++) {
|
|
14513
|
-
|
|
14514
|
-
key = resolveIndex(
|
|
14610
|
+
let seg2 = segs[i2];
|
|
14611
|
+
key = resolveIndex(seg2, obj);
|
|
14515
14612
|
if (i2 === segs.length - 1) {
|
|
14516
14613
|
delete obj[key];
|
|
14517
14614
|
return;
|
|
@@ -14553,9 +14650,9 @@ ${indented}`);
|
|
|
14553
14650
|
saved = storage.getItem(storageKey);
|
|
14554
14651
|
if (saved) {
|
|
14555
14652
|
savedData = JSON.parse(saved);
|
|
14556
|
-
for (
|
|
14557
|
-
|
|
14558
|
-
app.data[
|
|
14653
|
+
for (let k2 in savedData) {
|
|
14654
|
+
let v2 = savedData[k2];
|
|
14655
|
+
app.data[k2] = v2;
|
|
14559
14656
|
}
|
|
14560
14657
|
}
|
|
14561
14658
|
} catch {}
|
|
@@ -14715,9 +14812,11 @@ ${indented}`);
|
|
|
14715
14812
|
compiled = new Map;
|
|
14716
14813
|
notify = function(event, path) {
|
|
14717
14814
|
let watcher;
|
|
14718
|
-
|
|
14719
|
-
|
|
14815
|
+
const _result = [];
|
|
14816
|
+
for (let watcher2 of watchers) {
|
|
14817
|
+
_result.push(watcher2(event, path));
|
|
14720
14818
|
}
|
|
14819
|
+
return _result;
|
|
14721
14820
|
};
|
|
14722
14821
|
return { read: function(path) {
|
|
14723
14822
|
return files.get(path);
|
|
@@ -14739,12 +14838,12 @@ ${indented}`);
|
|
|
14739
14838
|
let path, prefix, rest, result;
|
|
14740
14839
|
result = [];
|
|
14741
14840
|
prefix = dir ? dir + "/" : "";
|
|
14742
|
-
for ([
|
|
14743
|
-
if (
|
|
14744
|
-
rest =
|
|
14841
|
+
for (let [path2] of files) {
|
|
14842
|
+
if (path2.startsWith(prefix)) {
|
|
14843
|
+
rest = path2.slice(prefix.length);
|
|
14745
14844
|
if (rest.includes("/"))
|
|
14746
14845
|
continue;
|
|
14747
|
-
result.push(
|
|
14846
|
+
result.push(path2);
|
|
14748
14847
|
}
|
|
14749
14848
|
}
|
|
14750
14849
|
return result;
|
|
@@ -14752,17 +14851,19 @@ ${indented}`);
|
|
|
14752
14851
|
let path, prefix, result;
|
|
14753
14852
|
result = [];
|
|
14754
14853
|
prefix = dir ? dir + "/" : "";
|
|
14755
|
-
for ([
|
|
14756
|
-
if (
|
|
14757
|
-
result.push(
|
|
14854
|
+
for (let [path2] of files) {
|
|
14855
|
+
if (path2.startsWith(prefix))
|
|
14856
|
+
result.push(path2);
|
|
14758
14857
|
}
|
|
14759
14858
|
return result;
|
|
14760
14859
|
}, load: function(obj) {
|
|
14761
14860
|
let content, key;
|
|
14762
|
-
|
|
14763
|
-
|
|
14764
|
-
|
|
14861
|
+
const _result = [];
|
|
14862
|
+
for (let key2 in obj) {
|
|
14863
|
+
let content2 = obj[key2];
|
|
14864
|
+
_result.push(files.set(key2, content2));
|
|
14765
14865
|
}
|
|
14866
|
+
return _result;
|
|
14766
14867
|
}, watch: function(fn) {
|
|
14767
14868
|
watchers.push(fn);
|
|
14768
14869
|
return function() {
|
|
@@ -14798,15 +14899,15 @@ ${indented}`);
|
|
|
14798
14899
|
};
|
|
14799
14900
|
matchRoute = function(path, routes) {
|
|
14800
14901
|
let i, match, name, params, route;
|
|
14801
|
-
for (
|
|
14802
|
-
match = path.match(
|
|
14902
|
+
for (let route2 of routes) {
|
|
14903
|
+
match = path.match(route2.regex.regex);
|
|
14803
14904
|
if (match) {
|
|
14804
14905
|
params = {};
|
|
14805
|
-
for (let i2 = 0;i2 <
|
|
14806
|
-
|
|
14807
|
-
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]);
|
|
14808
14909
|
}
|
|
14809
|
-
return { route, params };
|
|
14910
|
+
return { route: route2, params };
|
|
14810
14911
|
}
|
|
14811
14912
|
}
|
|
14812
14913
|
return null;
|
|
@@ -14816,14 +14917,14 @@ ${indented}`);
|
|
|
14816
14917
|
routes = [];
|
|
14817
14918
|
layouts = new Map;
|
|
14818
14919
|
allFiles = components.listAll(root);
|
|
14819
|
-
for (
|
|
14820
|
-
rel =
|
|
14920
|
+
for (let filePath2 of allFiles) {
|
|
14921
|
+
rel = filePath2.slice(root.length + 1);
|
|
14821
14922
|
if (!rel.endsWith(".rip"))
|
|
14822
14923
|
continue;
|
|
14823
14924
|
name = rel.split("/").pop();
|
|
14824
14925
|
if (name === "_layout.rip") {
|
|
14825
14926
|
dir = rel === "_layout.rip" ? "" : rel.slice(0, -"/_layout.rip".length);
|
|
14826
|
-
layouts.set(dir,
|
|
14927
|
+
layouts.set(dir, filePath2);
|
|
14827
14928
|
continue;
|
|
14828
14929
|
}
|
|
14829
14930
|
if (name.startsWith("_"))
|
|
@@ -14835,7 +14936,7 @@ ${indented}`);
|
|
|
14835
14936
|
continue;
|
|
14836
14937
|
urlPattern = fileToPattern(rel);
|
|
14837
14938
|
regex = patternToRegex(urlPattern);
|
|
14838
|
-
routes.push({ pattern: urlPattern, regex, file:
|
|
14939
|
+
routes.push({ pattern: urlPattern, regex, file: filePath2, rel });
|
|
14839
14940
|
}
|
|
14840
14941
|
routes.sort(function(a, b) {
|
|
14841
14942
|
let aCatch, aDyn, bCatch, bDyn;
|
|
@@ -14860,10 +14961,10 @@ ${indented}`);
|
|
|
14860
14961
|
if (layouts.has(""))
|
|
14861
14962
|
chain.push(layouts.get(""));
|
|
14862
14963
|
for (let i2 = 0;i2 < segments.length; i2++) {
|
|
14863
|
-
|
|
14964
|
+
let seg2 = segments[i2];
|
|
14864
14965
|
if (i2 === segments.length - 1)
|
|
14865
14966
|
break;
|
|
14866
|
-
dir = dir ? dir + "/" +
|
|
14967
|
+
dir = dir ? dir + "/" + seg2 : seg2;
|
|
14867
14968
|
if (layouts.has(dir))
|
|
14868
14969
|
chain.push(layouts.get(dir));
|
|
14869
14970
|
}
|
|
@@ -14926,8 +15027,8 @@ ${indented}`);
|
|
|
14926
15027
|
_query.value = Object.fromEntries(new URLSearchParams(queryStr));
|
|
14927
15028
|
return _hash.value = hash;
|
|
14928
15029
|
});
|
|
14929
|
-
for (
|
|
14930
|
-
|
|
15030
|
+
for (let cb2 of navCallbacks) {
|
|
15031
|
+
cb2(router.current);
|
|
14931
15032
|
}
|
|
14932
15033
|
return true;
|
|
14933
15034
|
}
|
|
@@ -15022,28 +15123,28 @@ ${indented}`);
|
|
|
15022
15123
|
if (a.length !== b.length)
|
|
15023
15124
|
return false;
|
|
15024
15125
|
for (let i2 = 0;i2 < a.length; i2++) {
|
|
15025
|
-
|
|
15026
|
-
if (
|
|
15126
|
+
let item2 = a[i2];
|
|
15127
|
+
if (item2 !== b[i2])
|
|
15027
15128
|
return false;
|
|
15028
15129
|
}
|
|
15029
15130
|
return true;
|
|
15030
15131
|
};
|
|
15031
15132
|
findComponent = function(mod) {
|
|
15032
15133
|
let key, val;
|
|
15033
|
-
for (
|
|
15034
|
-
|
|
15035
|
-
if (typeof
|
|
15036
|
-
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;
|
|
15037
15138
|
}
|
|
15038
15139
|
return typeof mod.default === "function" ? mod.default : undefined;
|
|
15039
15140
|
};
|
|
15040
15141
|
findAllComponents = function(mod) {
|
|
15041
15142
|
let key, result, val;
|
|
15042
15143
|
result = {};
|
|
15043
|
-
for (
|
|
15044
|
-
|
|
15045
|
-
if (typeof
|
|
15046
|
-
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;
|
|
15047
15148
|
}
|
|
15048
15149
|
}
|
|
15049
15150
|
return result;
|
|
@@ -15058,17 +15159,17 @@ ${indented}`);
|
|
|
15058
15159
|
buildComponentMap = function(components, root = "components") {
|
|
15059
15160
|
let fileName, map, name, path;
|
|
15060
15161
|
map = {};
|
|
15061
|
-
for (
|
|
15062
|
-
if (!
|
|
15162
|
+
for (let path2 of components.listAll(root)) {
|
|
15163
|
+
if (!path2.endsWith(".rip"))
|
|
15063
15164
|
continue;
|
|
15064
|
-
fileName =
|
|
15165
|
+
fileName = path2.split("/").pop();
|
|
15065
15166
|
if (fileName.startsWith("_"))
|
|
15066
15167
|
continue;
|
|
15067
|
-
name = fileToComponentName(
|
|
15168
|
+
name = fileToComponentName(path2);
|
|
15068
15169
|
if (map[name]) {
|
|
15069
|
-
console.warn(`[Rip] Component name collision: ${name} (${map[name]} vs ${
|
|
15170
|
+
console.warn(`[Rip] Component name collision: ${name} (${map[name]} vs ${path2})`);
|
|
15070
15171
|
}
|
|
15071
|
-
map[name] =
|
|
15172
|
+
map[name] = path2;
|
|
15072
15173
|
}
|
|
15073
15174
|
return map;
|
|
15074
15175
|
};
|
|
@@ -15079,12 +15180,12 @@ ${indented}`);
|
|
|
15079
15180
|
if (currentPath) {
|
|
15080
15181
|
parts = currentPath.split("/");
|
|
15081
15182
|
parts.pop();
|
|
15082
|
-
for (
|
|
15083
|
-
if (
|
|
15183
|
+
for (let seg2 of specifier.split("/")) {
|
|
15184
|
+
if (seg2 === "..") {
|
|
15084
15185
|
parts.pop();
|
|
15085
15186
|
} else {
|
|
15086
|
-
if (!(
|
|
15087
|
-
parts.push(
|
|
15187
|
+
if (!(seg2 === ".")) {
|
|
15188
|
+
parts.push(seg2);
|
|
15088
15189
|
}
|
|
15089
15190
|
}
|
|
15090
15191
|
}
|
|
@@ -15096,9 +15197,9 @@ ${indented}`);
|
|
|
15096
15197
|
return `components/_lib/${clean}`;
|
|
15097
15198
|
if (components.exists(`components/${clean}`))
|
|
15098
15199
|
return `components/${clean}`;
|
|
15099
|
-
for (
|
|
15100
|
-
if (
|
|
15101
|
-
return
|
|
15200
|
+
for (let p2 of components.listAll("components")) {
|
|
15201
|
+
if (p2.endsWith(`/${basename}`))
|
|
15202
|
+
return p2;
|
|
15102
15203
|
}
|
|
15103
15204
|
return null;
|
|
15104
15205
|
};
|
|
@@ -15120,8 +15221,8 @@ ${indented}`);
|
|
|
15120
15221
|
ripImportRe = /^(\s*import\s+(?:\{([^}]+)\}\s+from\s+|.*?\s+from\s+)?['"])([^'"]*\.rip)(['"];?\s*)$/gm;
|
|
15121
15222
|
matches = Array.from(js.matchAll(ripImportRe));
|
|
15122
15223
|
for (let _i = matches.length - 1;_i >= 0; _i--) {
|
|
15123
|
-
|
|
15124
|
-
[full, pre, namedImports, specifier, post] =
|
|
15224
|
+
let m2 = matches[_i];
|
|
15225
|
+
[full, pre, namedImports, specifier, post] = m2;
|
|
15125
15226
|
storePath = resolveStorePath(specifier, path, components);
|
|
15126
15227
|
if (storePath === path)
|
|
15127
15228
|
continue;
|
|
@@ -15143,34 +15244,34 @@ ${indented}`);
|
|
|
15143
15244
|
blobUrl = resolver.blobUrls?.[storePath];
|
|
15144
15245
|
if (blobUrl) {
|
|
15145
15246
|
replacement = `${pre}${blobUrl}${post}`;
|
|
15146
|
-
js = js.slice(0,
|
|
15247
|
+
js = js.slice(0, m2.index) + replacement + js.slice(m2.index + full.length);
|
|
15147
15248
|
if (namedImports) {
|
|
15148
|
-
for (
|
|
15149
|
-
importedNames.add(
|
|
15249
|
+
for (let n2 of namedImports.split(",")) {
|
|
15250
|
+
importedNames.add(n2.trim().split(/\s+as\s+/).pop().trim());
|
|
15150
15251
|
}
|
|
15151
15252
|
}
|
|
15152
15253
|
}
|
|
15153
15254
|
}
|
|
15154
15255
|
}
|
|
15155
15256
|
needed = {};
|
|
15156
|
-
for (
|
|
15157
|
-
|
|
15158
|
-
if (importedNames.has(
|
|
15257
|
+
for (let name2 in resolver.map) {
|
|
15258
|
+
let depPath2 = resolver.map[name2];
|
|
15259
|
+
if (importedNames.has(name2))
|
|
15159
15260
|
continue;
|
|
15160
|
-
if (
|
|
15161
|
-
if (!resolver.classes[
|
|
15162
|
-
depSource = components.read(
|
|
15261
|
+
if (depPath2 !== path && js.includes(`new ${name2}(`)) {
|
|
15262
|
+
if (!resolver.classes[name2]) {
|
|
15263
|
+
depSource = components.read(depPath2);
|
|
15163
15264
|
if (depSource) {
|
|
15164
|
-
depMod = await compileAndImport(depSource, compile2, components,
|
|
15265
|
+
depMod = await compileAndImport(depSource, compile2, components, depPath2, resolver);
|
|
15165
15266
|
found = findAllComponents(depMod);
|
|
15166
|
-
for (
|
|
15167
|
-
|
|
15168
|
-
resolver.classes[
|
|
15267
|
+
for (let k2 in found) {
|
|
15268
|
+
let v2 = found[k2];
|
|
15269
|
+
resolver.classes[k2] = v2;
|
|
15169
15270
|
}
|
|
15170
15271
|
}
|
|
15171
15272
|
}
|
|
15172
|
-
if (resolver.classes[
|
|
15173
|
-
needed[
|
|
15273
|
+
if (resolver.classes[name2])
|
|
15274
|
+
needed[name2] = true;
|
|
15174
15275
|
}
|
|
15175
15276
|
}
|
|
15176
15277
|
names = Object.keys(needed);
|
|
@@ -15193,9 +15294,9 @@ ${indented}`);
|
|
|
15193
15294
|
mod = await import(url);
|
|
15194
15295
|
if (resolver) {
|
|
15195
15296
|
found = findAllComponents(mod);
|
|
15196
|
-
for (
|
|
15197
|
-
|
|
15198
|
-
resolver.classes[
|
|
15297
|
+
for (let k2 in found) {
|
|
15298
|
+
let v2 = found[k2];
|
|
15299
|
+
resolver.classes[k2] = v2;
|
|
15199
15300
|
}
|
|
15200
15301
|
}
|
|
15201
15302
|
if (components && path)
|
|
@@ -15242,12 +15343,12 @@ ${indented}`);
|
|
|
15242
15343
|
let inst;
|
|
15243
15344
|
cacheComponent();
|
|
15244
15345
|
for (let _i = layoutInstances.length - 1;_i >= 0; _i--) {
|
|
15245
|
-
|
|
15246
|
-
if (
|
|
15247
|
-
|
|
15248
|
-
if (
|
|
15249
|
-
|
|
15250
|
-
|
|
15346
|
+
let inst2 = layoutInstances[_i];
|
|
15347
|
+
if (inst2.beforeUnmount)
|
|
15348
|
+
inst2.beforeUnmount();
|
|
15349
|
+
if (inst2.unmounted)
|
|
15350
|
+
inst2.unmounted();
|
|
15351
|
+
inst2._target?.remove();
|
|
15251
15352
|
}
|
|
15252
15353
|
layoutInstances = [];
|
|
15253
15354
|
return mountPoint = container;
|
|
@@ -15304,11 +15405,11 @@ ${indented}`);
|
|
|
15304
15405
|
if (layoutsChanged && layoutFiles.length > 0) {
|
|
15305
15406
|
container.innerHTML = "";
|
|
15306
15407
|
mp = container;
|
|
15307
|
-
for (
|
|
15308
|
-
layoutSource = components.read(
|
|
15408
|
+
for (let layoutFile2 of layoutFiles) {
|
|
15409
|
+
layoutSource = components.read(layoutFile2);
|
|
15309
15410
|
if (!layoutSource)
|
|
15310
15411
|
continue;
|
|
15311
|
-
layoutMod = await compileAndImport(layoutSource, compile2, components,
|
|
15412
|
+
layoutMod = await compileAndImport(layoutSource, compile2, components, layoutFile2, resolver);
|
|
15312
15413
|
if (gen2 !== generation) {
|
|
15313
15414
|
router.navigating = false;
|
|
15314
15415
|
return;
|
|
@@ -15320,7 +15421,7 @@ ${indented}`);
|
|
|
15320
15421
|
if (inst.beforeMount)
|
|
15321
15422
|
inst.beforeMount();
|
|
15322
15423
|
wrapper = document.createElement("div");
|
|
15323
|
-
wrapper.setAttribute("data-layout",
|
|
15424
|
+
wrapper.setAttribute("data-layout", layoutFile2);
|
|
15324
15425
|
mp.appendChild(wrapper);
|
|
15325
15426
|
inst.mount(wrapper);
|
|
15326
15427
|
layoutInstances.push(inst);
|
|
@@ -15370,10 +15471,10 @@ ${indented}`);
|
|
|
15370
15471
|
onError({ status: 500, message: err.message, error: err });
|
|
15371
15472
|
handled = false;
|
|
15372
15473
|
for (let _i = layoutInstances.length - 1;_i >= 0; _i--) {
|
|
15373
|
-
|
|
15374
|
-
if (
|
|
15474
|
+
let inst2 = layoutInstances[_i];
|
|
15475
|
+
if (inst2.onError) {
|
|
15375
15476
|
try {
|
|
15376
|
-
|
|
15477
|
+
inst2.onError(err);
|
|
15377
15478
|
handled = true;
|
|
15378
15479
|
break;
|
|
15379
15480
|
} catch (boundaryErr) {
|
|
@@ -15432,11 +15533,13 @@ ${indented}`);
|
|
|
15432
15533
|
});
|
|
15433
15534
|
es.addEventListener("css", function() {
|
|
15434
15535
|
let link;
|
|
15435
|
-
|
|
15436
|
-
|
|
15536
|
+
const _result = [];
|
|
15537
|
+
for (let link2 of document.querySelectorAll('link[rel="stylesheet"]')) {
|
|
15538
|
+
url = new URL(link2.href);
|
|
15437
15539
|
url.searchParams.set("_t", Date.now());
|
|
15438
|
-
|
|
15540
|
+
link2.href = url.toString();
|
|
15439
15541
|
}
|
|
15542
|
+
return _result;
|
|
15440
15543
|
});
|
|
15441
15544
|
return es.onerror = function() {
|
|
15442
15545
|
es.close();
|