rip-lang 3.6.2 → 3.7.0

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.
Binary file
package/docs/index.html CHANGED
@@ -565,6 +565,7 @@
565
565
  <button id="show-tokens" title="Toggle token stream display">Tokens</button>
566
566
  <button id="show-sexp" title="Toggle S-expression display">S-Expressions</button>
567
567
  <button id="show-preamble" title="Toggle preamble code display">Preamble</button>
568
+ <button id="show-types" title="Toggle .d.ts type declarations">Types</button>
568
569
  <button id="show-js" title="Toggle JavaScript output">JS</button>
569
570
  </div>
570
571
  </div>
@@ -934,6 +935,7 @@ console.log "Domain:", domain`;
934
935
  const showTokensBtn = document.getElementById('show-tokens');
935
936
  const showSexpBtn = document.getElementById('show-sexp');
936
937
  const showPreambleBtn = document.getElementById('show-preamble');
938
+ const showTypesBtn = document.getElementById('show-types');
937
939
  const showJSBtn = document.getElementById('show-js');
938
940
  const replOutput = document.getElementById('repl-output');
939
941
  const promptSpan = document.getElementById('prompt');
@@ -982,6 +984,7 @@ console.log "Domain:", domain`;
982
984
  let showTokens = localStorage.getItem('rip-repl-tokens') === 'true';
983
985
  let showSexp = localStorage.getItem('rip-repl-sexp') === 'true';
984
986
  let showPreamble = localStorage.getItem('rip-preamble') === 'true';
987
+ let showTypes = localStorage.getItem('rip-types') === 'true';
985
988
  let showJS = localStorage.getItem('rip-repl-js') !== 'false'; // default true
986
989
 
987
990
  // Format tokens for display — clean, minimal output
@@ -1012,7 +1015,10 @@ console.log "Domain:", domain`;
1012
1015
  function compileCode() {
1013
1016
  try {
1014
1017
  const source = monacoEditor.getValue();
1015
- const result = compile(source, showPreamble ? {} : { skipPreamble: true });
1018
+ const opts = {};
1019
+ if (!showPreamble) opts.skipPreamble = true;
1020
+ if (showTypes) opts.types = 'emit';
1021
+ const result = compile(source, opts);
1016
1022
 
1017
1023
  let parts = [];
1018
1024
 
@@ -1024,6 +1030,10 @@ console.log "Domain:", domain`;
1024
1030
  parts.push(window.toSexpr ? window.toSexpr(result.sexpr, 0, true) : JSON.stringify(result.sexpr, null, 1));
1025
1031
  }
1026
1032
 
1033
+ if (showTypes && result.dts) {
1034
+ parts.push('// .d.ts\n' + result.dts.trim());
1035
+ }
1036
+
1027
1037
  if (showJS) {
1028
1038
  parts.push(result.code);
1029
1039
  }
@@ -1032,7 +1042,8 @@ console.log "Domain:", domain`;
1032
1042
 
1033
1043
  // Update output editor language and content
1034
1044
  const model = outputEditor.getModel();
1035
- monaco.editor.setModelLanguage(model, (showTokens || showSexp) ? 'plaintext' : 'javascript');
1045
+ let lang = (showTokens || showSexp) ? 'plaintext' : (showTypes && !showJS) ? 'typescript' : 'javascript';
1046
+ monaco.editor.setModelLanguage(model, lang);
1036
1047
  outputEditor.setValue(outputText);
1037
1048
  } catch (error) {
1038
1049
  const model = outputEditor.getModel();
@@ -1085,6 +1096,7 @@ console.log "Domain:", domain`;
1085
1096
  showTokensBtn.classList.toggle('active', showTokens);
1086
1097
  showSexpBtn.classList.toggle('active', showSexp);
1087
1098
  showPreambleBtn.classList.toggle('active', showPreamble);
1099
+ showTypesBtn.classList.toggle('active', showTypes);
1088
1100
  showJSBtn.classList.toggle('active', showJS);
1089
1101
 
1090
1102
  // Initialize from URL hash on page load (default to compiler)
@@ -1536,10 +1548,11 @@ console.log "Domain:", domain`;
1536
1548
  monacoEditor.onDidChangeModelContent(compileCode);
1537
1549
 
1538
1550
  const toggles = [
1539
- { btn: showTokensBtn, key: 'rip-repl-tokens', get: () => showTokens, set: v => showTokens = v },
1540
- { btn: showSexpBtn, key: 'rip-repl-sexp', get: () => showSexp, set: v => showSexp = v },
1541
- { btn: showPreambleBtn, key: 'rip-preamble', get: () => showPreamble, set: v => showPreamble = v },
1542
- { btn: showJSBtn, key: 'rip-repl-js', get: () => showJS, set: v => showJS = v },
1551
+ { btn: showTokensBtn, key: 'rip-repl-tokens', get: () => showTokens, set: v => showTokens = v },
1552
+ { btn: showSexpBtn, key: 'rip-repl-sexp', get: () => showSexp, set: v => showSexp = v },
1553
+ { btn: showPreambleBtn, key: 'rip-preamble', get: () => showPreamble, set: v => showPreamble = v },
1554
+ { btn: showTypesBtn, key: 'rip-types', get: () => showTypes, set: v => showTypes = v },
1555
+ { btn: showJSBtn, key: 'rip-repl-js', get: () => showJS, set: v => showJS = v },
1543
1556
  ];
1544
1557
 
1545
1558
  for (const { btn, key, get, set } of toggles) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rip-lang",
3
- "version": "3.6.2",
3
+ "version": "3.7.0",
4
4
  "description": "A modern language that compiles to JavaScript",
5
5
  "type": "module",
6
6
  "main": "src/compiler.js",
@@ -67,7 +67,7 @@
67
67
  "author": "Steve Shreeve <steve.shreeve@gmail.com>",
68
68
  "license": "MIT",
69
69
  "devDependencies": {
70
- "@rip-lang/api": "workspace:*",
71
- "@rip-lang/ui": "workspace:*"
70
+ "@rip-lang/api": "1.1.5",
71
+ "@rip-lang/ui": "0.2.0"
72
72
  }
73
73
  }