novac 2.1.1 → 2.2.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.
Files changed (138) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +0 -0
  3. package/demo.nv +0 -0
  4. package/demo_builtins.nv +0 -0
  5. package/demo_http.nv +0 -0
  6. package/examples/bf.nv +69 -0
  7. package/examples/math.nv +21 -0
  8. package/kits/birdAPI/kitdef.js +954 -0
  9. package/kits/kitRNG/kitdef.js +740 -0
  10. package/kits/kitSSH/kitdef.js +1272 -0
  11. package/kits/kitadb/kitdef.js +606 -0
  12. package/kits/kitai/kitdef.js +2185 -0
  13. package/kits/kitcanvas/kitdef.js +914 -0
  14. package/kits/kitclippy/kitdef.js +925 -0
  15. package/kits/kitgps/kitdef.js +1862 -0
  16. package/kits/kitlibproc/kitdef.js +3 -2
  17. package/kits/kitmorse/kitdef.js +229 -0
  18. package/kits/kitmpatch/kitdef.js +906 -0
  19. package/kits/kitnet/kitdef.js +1401 -0
  20. package/kits/kitproto/kitdef.js +613 -0
  21. package/kits/kitqr/kitdef.js +637 -0
  22. package/kits/kitrequire/kitdef.js +1599 -0
  23. package/kits/libtea/kitdef.js +2691 -0
  24. package/kits/libterm/kitdef.js +2 -0
  25. package/novac/LICENSE +21 -0
  26. package/novac/README.md +1823 -0
  27. package/novac/bin/novac +950 -0
  28. package/novac/bin/nvc +522 -0
  29. package/novac/bin/nvml +542 -0
  30. package/novac/demo.nv +245 -0
  31. package/novac/demo_builtins.nv +209 -0
  32. package/novac/demo_http.nv +62 -0
  33. package/novac/examples/bf.nv +69 -0
  34. package/novac/examples/math.nv +21 -0
  35. package/novac/kits/kitai/kitdef.js +2185 -0
  36. package/novac/kits/kitansi/kitdef.js +1402 -0
  37. package/novac/kits/kitformat/kitdef.js +1485 -0
  38. package/novac/kits/kitgps/kitdef.js +1862 -0
  39. package/novac/kits/kitlibfs/kitdef.js +231 -0
  40. package/{examples/example-project/nova_modules → novac/kits}/kitlibproc/kitdef.js +3 -2
  41. package/novac/kits/kitmatrix/ex.js +19 -0
  42. package/novac/kits/kitmatrix/kitdef.js +960 -0
  43. package/novac/kits/kitmpatch/kitdef.js +906 -0
  44. package/novac/kits/kitnovacweb/README.md +1572 -0
  45. package/novac/kits/kitnovacweb/demo.nv +12 -0
  46. package/novac/kits/kitnovacweb/demo.nvml +71 -0
  47. package/novac/kits/kitnovacweb/index.nova +12 -0
  48. package/novac/kits/kitnovacweb/kitdef.js +692 -0
  49. package/novac/kits/kitnovacweb/nova.kit.json +8 -0
  50. package/novac/kits/kitnovacweb/nvml/executor.js +739 -0
  51. package/novac/kits/kitnovacweb/nvml/index.js +67 -0
  52. package/novac/kits/kitnovacweb/nvml/lexer.js +263 -0
  53. package/novac/kits/kitnovacweb/nvml/parser.js +508 -0
  54. package/novac/kits/kitnovacweb/nvml/renderer.js +924 -0
  55. package/novac/kits/kitparse/kitdef.js +1688 -0
  56. package/novac/kits/kitregex++/kitdef.js +1353 -0
  57. package/novac/kits/kitrequire/kitdef.js +1599 -0
  58. package/novac/kits/kitx11/kitdef.js +1 -0
  59. package/novac/kits/kitx11/kitx11.js +2472 -0
  60. package/novac/kits/kitx11/kitx11_conn.js +948 -0
  61. package/novac/kits/kitx11/kitx11_worker.js +121 -0
  62. package/novac/kits/libterm/ex.js +285 -0
  63. package/novac/kits/libterm/kitdef.js +1927 -0
  64. package/novac/node_modules/chalk/license +9 -0
  65. package/novac/node_modules/chalk/package.json +83 -0
  66. package/novac/node_modules/chalk/readme.md +297 -0
  67. package/novac/node_modules/chalk/source/index.d.ts +325 -0
  68. package/novac/node_modules/chalk/source/index.js +225 -0
  69. package/novac/node_modules/chalk/source/utilities.js +33 -0
  70. package/novac/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
  71. package/novac/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
  72. package/novac/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
  73. package/novac/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
  74. package/novac/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
  75. package/novac/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
  76. package/novac/node_modules/commander/LICENSE +22 -0
  77. package/novac/node_modules/commander/Readme.md +1176 -0
  78. package/novac/node_modules/commander/esm.mjs +16 -0
  79. package/novac/node_modules/commander/index.js +24 -0
  80. package/novac/node_modules/commander/lib/argument.js +150 -0
  81. package/novac/node_modules/commander/lib/command.js +2777 -0
  82. package/novac/node_modules/commander/lib/error.js +39 -0
  83. package/novac/node_modules/commander/lib/help.js +747 -0
  84. package/novac/node_modules/commander/lib/option.js +380 -0
  85. package/novac/node_modules/commander/lib/suggestSimilar.js +101 -0
  86. package/novac/node_modules/commander/package-support.json +19 -0
  87. package/novac/node_modules/commander/package.json +82 -0
  88. package/novac/node_modules/commander/typings/esm.d.mts +3 -0
  89. package/novac/node_modules/commander/typings/index.d.ts +1113 -0
  90. package/novac/node_modules/node-addon-api/LICENSE.md +9 -0
  91. package/novac/node_modules/node-addon-api/README.md +95 -0
  92. package/novac/node_modules/node-addon-api/common.gypi +21 -0
  93. package/novac/node_modules/node-addon-api/except.gypi +25 -0
  94. package/novac/node_modules/node-addon-api/index.js +14 -0
  95. package/novac/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  96. package/novac/node_modules/node-addon-api/napi-inl.h +7165 -0
  97. package/novac/node_modules/node-addon-api/napi.h +3364 -0
  98. package/novac/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  99. package/novac/node_modules/node-addon-api/node_api.gyp +9 -0
  100. package/novac/node_modules/node-addon-api/noexcept.gypi +26 -0
  101. package/novac/node_modules/node-addon-api/package-support.json +21 -0
  102. package/novac/node_modules/node-addon-api/package.json +480 -0
  103. package/novac/node_modules/node-addon-api/tools/README.md +73 -0
  104. package/novac/node_modules/node-addon-api/tools/check-napi.js +99 -0
  105. package/novac/node_modules/node-addon-api/tools/clang-format.js +71 -0
  106. package/novac/node_modules/node-addon-api/tools/conversion.js +301 -0
  107. package/novac/node_modules/serialize-javascript/LICENSE +27 -0
  108. package/novac/node_modules/serialize-javascript/README.md +149 -0
  109. package/novac/node_modules/serialize-javascript/index.js +297 -0
  110. package/novac/node_modules/serialize-javascript/package.json +33 -0
  111. package/novac/package.json +27 -0
  112. package/novac/scripts/update-bin.js +24 -0
  113. package/novac/src/core/bstd.js +1035 -0
  114. package/novac/src/core/config.js +155 -0
  115. package/novac/src/core/describe.js +187 -0
  116. package/novac/src/core/emitter.js +499 -0
  117. package/novac/src/core/error.js +86 -0
  118. package/novac/src/core/executor.js +5606 -0
  119. package/novac/src/core/formatter.js +686 -0
  120. package/novac/src/core/lexer.js +1026 -0
  121. package/novac/src/core/nova_builtins.js +717 -0
  122. package/novac/src/core/nova_thread_worker.js +166 -0
  123. package/novac/src/core/parser.js +2181 -0
  124. package/novac/src/core/types.js +112 -0
  125. package/novac/src/index.js +28 -0
  126. package/novac/src/runtime/stdlib.js +244 -0
  127. package/package.json +3 -2
  128. package/scripts/update-bin.js +0 -0
  129. package/src/core/bstd.js +835 -361
  130. package/src/core/executor.js +427 -246
  131. package/src/core/lexer.js +19 -2
  132. package/src/core/parser.js +13 -0
  133. package/src/index.js +0 -0
  134. package/examples/example-project/README.md +0 -3
  135. package/examples/example-project/src/main.nova +0 -3
  136. package/src/core/environment.js +0 -0
  137. /package/{kits → novac/kits}/libtea/tf.js +0 -0
  138. /package/{examples/example-project/bin/example-project.nv → novac/node_modules/node-addon-api/nothing.c} +0 -0
package/src/core/lexer.js CHANGED
@@ -433,7 +433,7 @@ const KEYWORDS = new Set([
433
433
  'classic',
434
434
  // misc
435
435
  'import', 'import_builtin', 'from', 'export', 'default', 'namespace',
436
- 'guard','when','with','loop','wait','run',
436
+ 'guard','when','with','loop','wait','run', 'nat',
437
437
  // http / server
438
438
  'server', 'fetch',
439
439
  'post', 'put', 'delete', 'patch', 'head', 'options',
@@ -569,7 +569,7 @@ const OPERATORS = new Map([
569
569
  ['index', { precedence: 14 }],
570
570
  ]);
571
571
 
572
- const PUNCTUATION = new Set(['(',')','{','}','[',']',',','.',':', ';','?','@','#']);
572
+ const PUNCTUATION = new Set(['(',')','{','}','[',']',',','.',':', ';','?','@','#', '\\']);
573
573
  // Note: '...' is already in OPERATORS; '::' as two-char operator below
574
574
 
575
575
  class Lexer {
@@ -706,6 +706,10 @@ class Lexer {
706
706
  if (ident === 'f' && (this.peek() === '"' || this.peek() === "'")) {
707
707
  this.fstring(this.advance()); continue;
708
708
  }
709
+ // raw string prefix
710
+ if (ident === 'r' && (this.peek() === '"' || this.peek() === "'")) {
711
+ this.rstring(this.advance()); continue;
712
+ }
709
713
  // URL literal: http(s)://, ftp://, ws(s)://, content://, localhost(:port)?
710
714
  const col2 = this.column - ident.length - 1;
711
715
  const isScheme = ['http','https','ftp','ws','wss','content'].includes(ident);
@@ -909,6 +913,19 @@ class Lexer {
909
913
  this.addToken('STRING', value, col);
910
914
  }
911
915
 
916
+ rstring(quote) {
917
+ const col = this.column;
918
+ let value = '';
919
+ while (!this.isAtEnd() && this.peek() !== quote) {
920
+ const ch = this.advance();
921
+ if (ch === '\n') { this.line++; this.column = 1; value += ch; continue; }
922
+ value += ch;
923
+ }
924
+ if (this.isAtEnd()) throw this.error('Unterminated raw string literal');
925
+ this.advance(); // consume closing quote
926
+ this.addToken('STRING', value, col);
927
+ }
928
+
912
929
  getDoubleString(q, next) {
913
930
  const col = this.column;
914
931
  let value = '';
@@ -1033,6 +1033,13 @@ class Parser {
1033
1033
  } else if (tok.type === 'PUNCTUATION' && tok.value === '{') {
1034
1034
  left = this.objectLiteral();
1035
1035
 
1036
+ } else if (tok.type === 'PUNCTUATION' && tok.value === '\\') {
1037
+ this.advance();
1038
+ let pattern = this.expression();
1039
+ this.consume('PUNCTUATION', '\\', 'Expected \\ in regex literal');
1040
+ let flags = '';
1041
+ if (this.check('IDENTIFIER')) flags = this.advance().value;
1042
+ left = this.nd({ kind: 'regex_literal', pattern, flags });
1036
1043
  } else if (tok.type === 'NUMBER' || tok.type === 'STRING' || tok.type === 'LITERAL') {
1037
1044
  left = this.nd({ kind: 'value', value: this.advance().value });
1038
1045
 
@@ -1084,9 +1091,15 @@ class Parser {
1084
1091
  } else if (tok.type === 'EOF') {
1085
1092
  return this.nd({ kind: 'EOF' });
1086
1093
 
1094
+ } else if (tok.type === 'KEYWORD' && tok.value === 'nat') {
1095
+ this.advance();
1096
+ left = this.nd({ kind: 'native', value: this.expression() })
1087
1097
  } else if (tok.type === 'KEYWORD' && tok.value === 'run') {
1088
1098
  this.advance();
1089
1099
  left = this.nd({ kind: 'run_expr', code: this.statement() })
1100
+ } else if (tok.value === '=') {
1101
+ this.advance();
1102
+ left = this.nd({ kind: 'ast', ast: this.statement() });
1090
1103
  } else {
1091
1104
  this.error("Unexpected token '" + tok.value + "'");
1092
1105
  }
package/src/index.js CHANGED
File without changes
@@ -1,3 +0,0 @@
1
- # example-project
2
-
3
- This is a Nova project.
@@ -1,3 +0,0 @@
1
- import "kitlibproc"
2
- print(platform())
3
- print(cwd())
File without changes
File without changes