>>> Checkout (Pull) luotu turvallisesti: /mnt/mesh_root/src/x-mesh-basic/pull_t
able_js/table.js
>>> AST-Broker yhdistetty lokaaliin kopioon!
>>> Rivit 17-23 poistettu.
>>> Rivi 16 korvattu.
>>> Muutokset kirjoitettu paikalliseen Pull-kansioon!
----------------------------------------------------
BTARKISTA LINT:B B B B/mnt/mesh_root/src/x-mesh-basic/pull_table_js/lint.sh
BTARKISTA MUUTOKSET:B /mnt/mesh_root/src/x-mesh-basic/pull_table_js/diff.sh
BVIE TUOTANTOON:B B B /mnt/mesh_root/src/x-mesh-basic/pull_table_js/commit.sh
BPERUUTA (REVERT):B B /mnt/mesh_root/src/x-mesh-basic/pull_table_js/revert.sh
----------------------------------------------------
$ ./pull_table_js/diff.shB
--- /mnt/mesh_root/src/x-mesh-basic/ext/table.js2026-07-25 15:02:16.000000000
+0000
+++ /mnt/mesh_root/src/x-mesh-basic/pull_table_js/table.js2026-07-26
19:07:51.000000000 +0000
B B B B Blet t2 = evalExpr(tNames[1], state.memory) || [];
B B B B Blet key = evalExpr(command.substring(onIdx + 4, intoIdx).trim(),
state.memory);
B B B B Blet destVar = command.substring(intoIdx + 6).trim();
-
-B B B B let map = new Map();
-B B B B t1.forEach(row => map.set(row[key], { ...row }));
-B B B B t2.forEach(row => {
-B B B B B B if (map.has(row[key])) map.set(row[key], { ...map.get(row[key]),
...row });
-B B B B B B else map.set(row[key], { ...row });
-B B B B });
-B B B B state.memory[destVar] = Array.from(map.values());
+let map1 = new Map();
+t1.forEach(row => map1.set(row[key], row));
+let result = [];
+t2.forEach(row2 => {
+let row1 = map1.get(row2[key]) || {};
+result.push({ ...row1, ...row2 });
+});
+state.memory[destVar] = result;
B B B}
B B Belse if (command.startsWith('EXTRACT')) {
B B B B B// TABLE EXTRACT FROM T1 WHERE "Ika >= 18" INTO T2
$ ./pull_table_js/commit.shB
[+] OMEGA COMMIT VALMIS: /mnt/mesh_root/src/x-mesh-basic/ext/table.js
$B
[*] KC$C$nnetC$C$n x-mesh-basic (Core + Moduulit)...
[+] KC$C$nnC6s valmis. Suoritetaan CI/CD testiputki...
[+] CI/CD LCPCISTY: Tuotantovalmis.
$B
$ x-gem-editbot archive
[*]: mv /mnt/mesh_root/state/gem-editbot-proposals/gem_2026-07-26T19-07-47-116Z
_68e15029.gem-editbot-script /mnt/mesh_root/state/gem-editbot-proposals/.archiv
e/
[+] Ehdotus arkistoitu: gem_2026-07-26T19-07-47-116Z_68e15029.gem-editbot-scrip
t
$ x-gem-scan-terminal-last.jsB
[*] YhdistetC$C$n vC$lilehteen: B2D57C743E313A5BCED42E50298169EE
[+] Uusi terminaaliajo skannattu ja tallennettu:
B B -> /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-26T19-08-44-116Z
_b5a73d04.gem-terminal-script
$ x-gem-terminal run
[+] HyvC$ksytty. Suoritetaan: gem_2026-07-26T19-08-44-116Z_b5a73d04.gem-termina
l-script
[*] ========= RUN =========
[:] /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-26T19-08-44-116Z_b5
a73d04.gem-terminal-script
[*] ========= FILE START =========
[:] cd /mnt/mesh_root/src/x-mesh-basic
[:] ./x-mesh-basic demo_billing_migration.bas --ext ./ext
[*] ========= FILE END =========
[*] /bin/bash -c ". /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-26T
19-08-44-116Z_b5a73d04.gem-terminal-script"B
[+] CUSTOM EXTENSION LOADED: alias.js
[+] CUSTOM EXTENSION LOADED: api.js
[+] CUSTOM EXTENSION LOADED: crypto.js
[+] CUSTOM EXTENSION LOADED: data.js
[+] CUSTOM EXTENSION LOADED: display.js
[+] CUSTOM EXTENSION LOADED: dump.js
[+] CUSTOM EXTENSION LOADED: etl.js
[+] CUSTOM EXTENSION LOADED: event.js
[+] CUSTOM EXTENSION LOADED: hud.js
[+] CUSTOM EXTENSION LOADED: irc.js
[+] CUSTOM EXTENSION LOADED: js.js
[+] CUSTOM EXTENSION LOADED: lxc.js
[+] CUSTOM EXTENSION LOADED: net.js
[+] CUSTOM EXTENSION LOADED: omega.js
[+] CUSTOM EXTENSION LOADED: pubsub.js
[+] CUSTOM EXTENSION LOADED: report.js
[+] CUSTOM EXTENSION LOADED: retro.js
[+] CUSTOM EXTENSION LOADED: stream.js
[+] CUSTOM EXTENSION LOADED: table.js
[+] CUSTOM EXTENSION LOADED: task.js
[+] CUSTOM EXTENSION LOADED: webserve.js
1. Ladataan Asiakas- ja Laskudata muistiin...
2. Yhdistetaan data (JOIN)...
3. Suodatetaan vain AVOIMET laskut (EXTRACT)...
4. Siivotaan raportti (KEEP COLUMNS)...
------------------------------------------------
RAPORTTI: PERITTAEVIEN LASKUJEN TILA
------------------------------------------------
- Yritys Oy | Summa: 2500 EUR | Email: laskutus@yritys.fi
- Yritys Oy | Summa: 850 EUR | Email: laskutus@yritys.fi
------------------------------------------------
Raakadata (JSON):
[
B {
B B "lasku_id": 551,
B B "nimi": "Yritys Oy",
B B "email": "laskutus@yritys.fi",
B B "summa": 2500
B },
B {
B B "lasku_id": 553,
B B "nimi": "Yritys Oy",
B B "email": "laskutus@yritys.fi",
B B "summa": 850
B }
]
$B