rip-lang 3.13.56 → 3.13.58

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 CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.56-blue.svg" alt="Version"></a>
12
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.58-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%2C300%2F1%2C300-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
@@ -6037,6 +6037,16 @@ function _setDataSection() {
6037
6037
  generateAssignment(head, rest, context, sexpr) {
6038
6038
  let [target, value] = rest;
6039
6039
  let op = head === "?=" ? "??=" : head;
6040
+ let optInfo = this._findOptionalInTarget(target);
6041
+ if (optInfo) {
6042
+ let guardCode = this.generate(optInfo.guard, "value");
6043
+ let targetCode2 = this.generate(optInfo.rewritten, "value");
6044
+ let valueCode2 = this.generate(value, "value");
6045
+ if (context === "value") {
6046
+ return `(${guardCode} != null ? (${targetCode2} ${op} ${valueCode2}) : undefined)`;
6047
+ }
6048
+ return `if (${guardCode} != null) ${targetCode2} ${op} ${valueCode2}`;
6049
+ }
6040
6050
  let isFnValue = this.is(value, "->") || this.is(value, "=>") || this.is(value, "def");
6041
6051
  if (target instanceof String && meta(target, "await") !== undefined && !isFnValue) {
6042
6052
  let sigil = meta(target, "await") === true ? "!" : "&";
@@ -8046,6 +8056,20 @@ ${this.indent()}}`;
8046
8056
  }
8047
8057
  return code;
8048
8058
  }
8059
+ _findOptionalInTarget(node) {
8060
+ if (!Array.isArray(node))
8061
+ return null;
8062
+ if (node[0] === "?.")
8063
+ return { guard: node[1], rewritten: [".", node[1], node[2]] };
8064
+ if (node[0] === "optindex")
8065
+ return { guard: node[1], rewritten: ["[]", node[1], node[2]] };
8066
+ if (node[0] === "." || node[0] === "[]") {
8067
+ let inner = this._findOptionalInTarget(node[1]);
8068
+ if (inner)
8069
+ return { guard: inner.guard, rewritten: [node[0], inner.rewritten, node[2]] };
8070
+ }
8071
+ return null;
8072
+ }
8049
8073
  unwrapLogical(code) {
8050
8074
  if (typeof code !== "string")
8051
8075
  return code;
@@ -8679,8 +8703,8 @@ globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
8679
8703
  return new CodeGenerator({}).getComponentRuntime();
8680
8704
  }
8681
8705
  // src/browser.js
8682
- var VERSION = "3.13.55";
8683
- var BUILD_DATE = "2026-02-28@19:43:03GMT";
8706
+ var VERSION = "3.13.56";
8707
+ var BUILD_DATE = "2026-03-01@02:18:54GMT";
8684
8708
  if (typeof globalThis !== "undefined") {
8685
8709
  if (!globalThis.__rip)
8686
8710
  new Function(getReactiveRuntime())();
@@ -9005,7 +9029,7 @@ ${indented}`);
9005
9029
  let sig;
9006
9030
  delete target2[prop];
9007
9031
  sig = target2[SIGNALS]?.get(prop);
9008
- if (sig)
9032
+ if (sig != null)
9009
9033
  sig.value = undefined;
9010
9034
  keysSignal(target2).value = ++_keysVersion;
9011
9035
  return true;