naider 1.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.
Files changed (359) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +884 -0
  3. package/SPEC-X.nx +276 -0
  4. package/SPEC.naide +431 -0
  5. package/bin/naide.js +519 -0
  6. package/examples/ai-app.naide +21 -0
  7. package/examples/ai-app.nx +21 -0
  8. package/examples/async.naide +50 -0
  9. package/examples/async.nx +40 -0
  10. package/examples/crud.naide +79 -0
  11. package/examples/crud.nx +64 -0
  12. package/examples/fullapp.naide +74 -0
  13. package/examples/fullapp.nx +74 -0
  14. package/examples/hello.naide +33 -0
  15. package/examples/hello.nx +29 -0
  16. package/examples/model.naide +44 -0
  17. package/examples/server.naide +28 -0
  18. package/examples/server.nx +27 -0
  19. package/examples/sql-app.naide +23 -0
  20. package/examples/sql-app.nx +23 -0
  21. package/examples/todo-api.naide +34 -0
  22. package/examples/todo-api.nx +31 -0
  23. package/lsp/server.js +172 -0
  24. package/package.json +56 -0
  25. package/src/generator.js +1313 -0
  26. package/src/index.js +41 -0
  27. package/src/lexer.js +402 -0
  28. package/src/parser.js +1671 -0
  29. package/src/preprocess.js +308 -0
  30. package/src/runtime.js +969 -0
  31. package/src/tokens.js +218 -0
  32. package/vscode-naide/README.md +38 -0
  33. package/vscode-naide/extension.js +41 -0
  34. package/vscode-naide/language-configuration-naide.json +32 -0
  35. package/vscode-naide/language-configuration-nx.json +32 -0
  36. package/vscode-naide/naide-lang-1.1.0.vsix +0 -0
  37. package/vscode-naide/node_modules/.bin/semver +16 -0
  38. package/vscode-naide/node_modules/.bin/semver.cmd +17 -0
  39. package/vscode-naide/node_modules/.bin/semver.ps1 +28 -0
  40. package/vscode-naide/node_modules/.package-lock.json +86 -0
  41. package/vscode-naide/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  42. package/vscode-naide/node_modules/balanced-match/LICENSE.md +21 -0
  43. package/vscode-naide/node_modules/balanced-match/README.md +97 -0
  44. package/vscode-naide/node_modules/balanced-match/index.js +62 -0
  45. package/vscode-naide/node_modules/balanced-match/package.json +48 -0
  46. package/vscode-naide/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  47. package/vscode-naide/node_modules/brace-expansion/LICENSE +21 -0
  48. package/vscode-naide/node_modules/brace-expansion/README.md +157 -0
  49. package/vscode-naide/node_modules/brace-expansion/index.js +394 -0
  50. package/vscode-naide/node_modules/brace-expansion/package.json +49 -0
  51. package/vscode-naide/node_modules/minimatch/LICENSE +15 -0
  52. package/vscode-naide/node_modules/minimatch/README.md +296 -0
  53. package/vscode-naide/node_modules/minimatch/changelog.md +35 -0
  54. package/vscode-naide/node_modules/minimatch/lib/path.js +4 -0
  55. package/vscode-naide/node_modules/minimatch/minimatch.js +996 -0
  56. package/vscode-naide/node_modules/minimatch/package.json +35 -0
  57. package/vscode-naide/node_modules/semver/LICENSE +15 -0
  58. package/vscode-naide/node_modules/semver/README.md +680 -0
  59. package/vscode-naide/node_modules/semver/bin/semver.js +195 -0
  60. package/vscode-naide/node_modules/semver/classes/comparator.js +143 -0
  61. package/vscode-naide/node_modules/semver/classes/index.js +7 -0
  62. package/vscode-naide/node_modules/semver/classes/range.js +577 -0
  63. package/vscode-naide/node_modules/semver/classes/semver.js +350 -0
  64. package/vscode-naide/node_modules/semver/functions/clean.js +8 -0
  65. package/vscode-naide/node_modules/semver/functions/cmp.js +54 -0
  66. package/vscode-naide/node_modules/semver/functions/coerce.js +62 -0
  67. package/vscode-naide/node_modules/semver/functions/compare-build.js +9 -0
  68. package/vscode-naide/node_modules/semver/functions/compare-loose.js +5 -0
  69. package/vscode-naide/node_modules/semver/functions/compare.js +7 -0
  70. package/vscode-naide/node_modules/semver/functions/diff.js +60 -0
  71. package/vscode-naide/node_modules/semver/functions/eq.js +5 -0
  72. package/vscode-naide/node_modules/semver/functions/gt.js +5 -0
  73. package/vscode-naide/node_modules/semver/functions/gte.js +5 -0
  74. package/vscode-naide/node_modules/semver/functions/inc.js +21 -0
  75. package/vscode-naide/node_modules/semver/functions/lt.js +5 -0
  76. package/vscode-naide/node_modules/semver/functions/lte.js +5 -0
  77. package/vscode-naide/node_modules/semver/functions/major.js +5 -0
  78. package/vscode-naide/node_modules/semver/functions/minor.js +5 -0
  79. package/vscode-naide/node_modules/semver/functions/neq.js +5 -0
  80. package/vscode-naide/node_modules/semver/functions/parse.js +18 -0
  81. package/vscode-naide/node_modules/semver/functions/patch.js +5 -0
  82. package/vscode-naide/node_modules/semver/functions/prerelease.js +8 -0
  83. package/vscode-naide/node_modules/semver/functions/rcompare.js +5 -0
  84. package/vscode-naide/node_modules/semver/functions/rsort.js +5 -0
  85. package/vscode-naide/node_modules/semver/functions/satisfies.js +12 -0
  86. package/vscode-naide/node_modules/semver/functions/sort.js +5 -0
  87. package/vscode-naide/node_modules/semver/functions/truncate.js +48 -0
  88. package/vscode-naide/node_modules/semver/functions/valid.js +8 -0
  89. package/vscode-naide/node_modules/semver/index.js +93 -0
  90. package/vscode-naide/node_modules/semver/internal/constants.js +37 -0
  91. package/vscode-naide/node_modules/semver/internal/debug.js +11 -0
  92. package/vscode-naide/node_modules/semver/internal/identifiers.js +29 -0
  93. package/vscode-naide/node_modules/semver/internal/lrucache.js +42 -0
  94. package/vscode-naide/node_modules/semver/internal/parse-options.js +17 -0
  95. package/vscode-naide/node_modules/semver/internal/re.js +223 -0
  96. package/vscode-naide/node_modules/semver/package.json +78 -0
  97. package/vscode-naide/node_modules/semver/preload.js +4 -0
  98. package/vscode-naide/node_modules/semver/range.bnf +17 -0
  99. package/vscode-naide/node_modules/semver/ranges/gtr.js +6 -0
  100. package/vscode-naide/node_modules/semver/ranges/intersects.js +9 -0
  101. package/vscode-naide/node_modules/semver/ranges/ltr.js +6 -0
  102. package/vscode-naide/node_modules/semver/ranges/max-satisfying.js +27 -0
  103. package/vscode-naide/node_modules/semver/ranges/min-satisfying.js +26 -0
  104. package/vscode-naide/node_modules/semver/ranges/min-version.js +63 -0
  105. package/vscode-naide/node_modules/semver/ranges/outside.js +82 -0
  106. package/vscode-naide/node_modules/semver/ranges/simplify.js +49 -0
  107. package/vscode-naide/node_modules/semver/ranges/subset.js +249 -0
  108. package/vscode-naide/node_modules/semver/ranges/to-comparators.js +10 -0
  109. package/vscode-naide/node_modules/semver/ranges/valid.js +13 -0
  110. package/vscode-naide/node_modules/vscode-jsonrpc/License.txt +11 -0
  111. package/vscode-naide/node_modules/vscode-jsonrpc/README.md +69 -0
  112. package/vscode-naide/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
  113. package/vscode-naide/node_modules/vscode-jsonrpc/browser.js +7 -0
  114. package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  115. package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
  116. package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
  117. package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
  118. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  119. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
  120. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  121. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
  122. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
  123. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
  124. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  125. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
  126. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  127. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
  128. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  129. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
  130. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  131. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
  132. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
  133. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
  134. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  135. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
  136. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  137. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
  138. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  139. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
  140. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  141. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
  142. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  143. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
  144. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  145. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
  146. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  147. package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
  148. package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
  149. package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
  150. package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
  151. package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
  152. package/vscode-naide/node_modules/vscode-jsonrpc/node.cmd +5 -0
  153. package/vscode-naide/node_modules/vscode-jsonrpc/node.d.ts +6 -0
  154. package/vscode-naide/node_modules/vscode-jsonrpc/node.js +7 -0
  155. package/vscode-naide/node_modules/vscode-jsonrpc/package.json +45 -0
  156. package/vscode-naide/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
  157. package/vscode-naide/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  158. package/vscode-naide/node_modules/vscode-languageclient/License.txt +11 -0
  159. package/vscode-naide/node_modules/vscode-languageclient/README.md +17 -0
  160. package/vscode-naide/node_modules/vscode-languageclient/browser.d.ts +6 -0
  161. package/vscode-naide/node_modules/vscode-languageclient/browser.js +7 -0
  162. package/vscode-naide/node_modules/vscode-languageclient/lib/browser/main.d.ts +8 -0
  163. package/vscode-naide/node_modules/vscode-languageclient/lib/browser/main.js +37 -0
  164. package/vscode-naide/node_modules/vscode-languageclient/lib/common/api.d.ts +36 -0
  165. package/vscode-naide/node_modules/vscode-languageclient/lib/common/api.js +27 -0
  166. package/vscode-naide/node_modules/vscode-languageclient/lib/common/callHierarchy.d.ts +37 -0
  167. package/vscode-naide/node_modules/vscode-languageclient/lib/common/callHierarchy.js +97 -0
  168. package/vscode-naide/node_modules/vscode-languageclient/lib/common/client.d.ts +476 -0
  169. package/vscode-naide/node_modules/vscode-languageclient/lib/common/client.js +1600 -0
  170. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeAction.d.ts +19 -0
  171. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeAction.js +99 -0
  172. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeConverter.d.ts +78 -0
  173. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeConverter.js +876 -0
  174. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeLens.d.ts +23 -0
  175. package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeLens.js +78 -0
  176. package/vscode-naide/node_modules/vscode-languageclient/lib/common/colorProvider.d.ts +25 -0
  177. package/vscode-naide/node_modules/vscode-languageclient/lib/common/colorProvider.js +74 -0
  178. package/vscode-naide/node_modules/vscode-languageclient/lib/common/completion.d.ts +20 -0
  179. package/vscode-naide/node_modules/vscode-languageclient/lib/common/completion.js +126 -0
  180. package/vscode-naide/node_modules/vscode-languageclient/lib/common/configuration.d.ts +69 -0
  181. package/vscode-naide/node_modules/vscode-languageclient/lib/common/configuration.js +209 -0
  182. package/vscode-naide/node_modules/vscode-languageclient/lib/common/declaration.d.ts +16 -0
  183. package/vscode-naide/node_modules/vscode-languageclient/lib/common/declaration.js +54 -0
  184. package/vscode-naide/node_modules/vscode-languageclient/lib/common/definition.d.ts +16 -0
  185. package/vscode-naide/node_modules/vscode-languageclient/lib/common/definition.js +55 -0
  186. package/vscode-naide/node_modules/vscode-languageclient/lib/common/diagnostic.d.ts +122 -0
  187. package/vscode-naide/node_modules/vscode-languageclient/lib/common/diagnostic.js +814 -0
  188. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentHighlight.d.ts +15 -0
  189. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentHighlight.js +50 -0
  190. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentLink.d.ts +19 -0
  191. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentLink.js +71 -0
  192. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentSymbol.d.ts +17 -0
  193. package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentSymbol.js +104 -0
  194. package/vscode-naide/node_modules/vscode-languageclient/lib/common/executeCommand.d.ts +21 -0
  195. package/vscode-naide/node_modules/vscode-languageclient/lib/common/executeCommand.js +72 -0
  196. package/vscode-naide/node_modules/vscode-languageclient/lib/common/features.d.ts +418 -0
  197. package/vscode-naide/node_modules/vscode-languageclient/lib/common/features.js +291 -0
  198. package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileOperations.d.ts +116 -0
  199. package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileOperations.js +333 -0
  200. package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.d.ts +18 -0
  201. package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js +95 -0
  202. package/vscode-naide/node_modules/vscode-languageclient/lib/common/foldingRange.d.ts +19 -0
  203. package/vscode-naide/node_modules/vscode-languageclient/lib/common/foldingRange.js +65 -0
  204. package/vscode-naide/node_modules/vscode-languageclient/lib/common/formatting.d.ts +39 -0
  205. package/vscode-naide/node_modules/vscode-languageclient/lib/common/formatting.js +182 -0
  206. package/vscode-naide/node_modules/vscode-languageclient/lib/common/hover.d.ts +16 -0
  207. package/vscode-naide/node_modules/vscode-languageclient/lib/common/hover.js +58 -0
  208. package/vscode-naide/node_modules/vscode-languageclient/lib/common/implementation.d.ts +16 -0
  209. package/vscode-naide/node_modules/vscode-languageclient/lib/common/implementation.js +54 -0
  210. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlayHint.d.ts +20 -0
  211. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlayHint.js +92 -0
  212. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineCompletion.d.ts +18 -0
  213. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineCompletion.js +54 -0
  214. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineValue.d.ts +18 -0
  215. package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineValue.js +65 -0
  216. package/vscode-naide/node_modules/vscode-languageclient/lib/common/linkedEditingRange.d.ts +21 -0
  217. package/vscode-naide/node_modules/vscode-languageclient/lib/common/linkedEditingRange.js +53 -0
  218. package/vscode-naide/node_modules/vscode-languageclient/lib/common/notebook.d.ts +96 -0
  219. package/vscode-naide/node_modules/vscode-languageclient/lib/common/notebook.js +851 -0
  220. package/vscode-naide/node_modules/vscode-languageclient/lib/common/progress.d.ts +11 -0
  221. package/vscode-naide/node_modules/vscode-languageclient/lib/common/progress.js +44 -0
  222. package/vscode-naide/node_modules/vscode-languageclient/lib/common/progressPart.d.ts +24 -0
  223. package/vscode-naide/node_modules/vscode-languageclient/lib/common/progressPart.js +96 -0
  224. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.d.ts +6 -0
  225. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js +16 -0
  226. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeAction.d.ts +6 -0
  227. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeAction.js +14 -0
  228. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeLens.d.ts +5 -0
  229. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeLens.js +13 -0
  230. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.d.ts +11 -0
  231. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js +13 -0
  232. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolConverter.d.ts +167 -0
  233. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolConverter.js +1134 -0
  234. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.d.ts +18 -0
  235. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js +25 -0
  236. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.d.ts +5 -0
  237. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js +13 -0
  238. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolInlayHint.d.ts +5 -0
  239. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolInlayHint.js +13 -0
  240. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.d.ts +6 -0
  241. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js +16 -0
  242. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.d.ts +7 -0
  243. package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js +18 -0
  244. package/vscode-naide/node_modules/vscode-languageclient/lib/common/reference.d.ts +20 -0
  245. package/vscode-naide/node_modules/vscode-languageclient/lib/common/reference.js +53 -0
  246. package/vscode-naide/node_modules/vscode-languageclient/lib/common/rename.d.ts +27 -0
  247. package/vscode-naide/node_modules/vscode-languageclient/lib/common/rename.js +113 -0
  248. package/vscode-naide/node_modules/vscode-languageclient/lib/common/selectionRange.d.ts +16 -0
  249. package/vscode-naide/node_modules/vscode-languageclient/lib/common/selectionRange.js +57 -0
  250. package/vscode-naide/node_modules/vscode-languageclient/lib/common/semanticTokens.d.ts +33 -0
  251. package/vscode-naide/node_modules/vscode-languageclient/lib/common/semanticTokens.js +179 -0
  252. package/vscode-naide/node_modules/vscode-languageclient/lib/common/signatureHelp.d.ts +16 -0
  253. package/vscode-naide/node_modules/vscode-languageclient/lib/common/signatureHelp.js +71 -0
  254. package/vscode-naide/node_modules/vscode-languageclient/lib/common/textSynchronization.d.ts +101 -0
  255. package/vscode-naide/node_modules/vscode-languageclient/lib/common/textSynchronization.js +402 -0
  256. package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeDefinition.d.ts +16 -0
  257. package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeDefinition.js +55 -0
  258. package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeHierarchy.d.ts +31 -0
  259. package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeHierarchy.js +96 -0
  260. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/async.d.ts +41 -0
  261. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/async.js +276 -0
  262. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/is.d.ts +12 -0
  263. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/is.js +57 -0
  264. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/uuid.d.ts +22 -0
  265. package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/uuid.js +97 -0
  266. package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceFolder.d.ts +30 -0
  267. package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceFolder.js +148 -0
  268. package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceSymbol.d.ts +19 -0
  269. package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceSymbol.js +79 -0
  270. package/vscode-naide/node_modules/vscode-languageclient/lib/node/main.d.ts +100 -0
  271. package/vscode-naide/node_modules/vscode-languageclient/lib/node/main.js +570 -0
  272. package/vscode-naide/node_modules/vscode-languageclient/lib/node/processes.d.ts +6 -0
  273. package/vscode-naide/node_modules/vscode-languageclient/lib/node/processes.js +47 -0
  274. package/vscode-naide/node_modules/vscode-languageclient/lib/node/terminateProcess.sh +16 -0
  275. package/vscode-naide/node_modules/vscode-languageclient/node.cmd +5 -0
  276. package/vscode-naide/node_modules/vscode-languageclient/node.d.ts +6 -0
  277. package/vscode-naide/node_modules/vscode-languageclient/node.js +7 -0
  278. package/vscode-naide/node_modules/vscode-languageclient/package.json +50 -0
  279. package/vscode-naide/node_modules/vscode-languageserver-protocol/License.txt +11 -0
  280. package/vscode-naide/node_modules/vscode-languageserver-protocol/README.md +16 -0
  281. package/vscode-naide/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
  282. package/vscode-naide/node_modules/vscode-languageserver-protocol/browser.js +7 -0
  283. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
  284. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
  285. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
  286. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
  287. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
  288. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
  289. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
  290. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
  291. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
  292. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
  293. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
  294. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
  295. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
  296. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
  297. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
  298. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
  299. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
  300. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
  301. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
  302. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
  303. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
  304. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
  305. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
  306. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
  307. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
  308. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
  309. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
  310. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
  311. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
  312. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
  313. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
  314. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
  315. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
  316. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
  317. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
  318. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
  319. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
  320. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
  321. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
  322. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
  323. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
  324. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
  325. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
  326. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
  327. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
  328. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
  329. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
  330. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
  331. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
  332. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
  333. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
  334. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
  335. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
  336. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
  337. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
  338. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
  339. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
  340. package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
  341. package/vscode-naide/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
  342. package/vscode-naide/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
  343. package/vscode-naide/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
  344. package/vscode-naide/node_modules/vscode-languageserver-protocol/node.js +7 -0
  345. package/vscode-naide/node_modules/vscode-languageserver-protocol/package.json +45 -0
  346. package/vscode-naide/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
  347. package/vscode-naide/node_modules/vscode-languageserver-types/License.txt +11 -0
  348. package/vscode-naide/node_modules/vscode-languageserver-types/README.md +17 -0
  349. package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
  350. package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
  351. package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
  352. package/vscode-naide/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
  353. package/vscode-naide/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
  354. package/vscode-naide/node_modules/vscode-languageserver-types/package.json +38 -0
  355. package/vscode-naide/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
  356. package/vscode-naide/package-lock.json +96 -0
  357. package/vscode-naide/package.json +59 -0
  358. package/vscode-naide/syntaxes/naide.tmLanguage.json +194 -0
  359. package/vscode-naide/syntaxes/naidex.tmLanguage.json +287 -0
package/README.md ADDED
@@ -0,0 +1,884 @@
1
+ # NAIDE
2
+
3
+ **Node AI Development Environment** — A programming language designed for AI-speed code generation that transpiles to Node.js.
4
+
5
+ NAIDE is built on three principles: one way to write everything (zero ambiguity), keyword-driven intent (the first token decides meaning), and minimal token count (fewer tokens = faster AI generation). It includes built-in declarations for servers, databases, authentication, file uploads, WebSockets, job queues, testing, and more — all with zero external dependencies.
6
+
7
+ Two syntax modes:
8
+
9
+ - **NAIDE** (`.naide`) — Human-readable, ~40% fewer tokens than JavaScript
10
+ - **NAIDE-X** (`.nx`) — AI-only readability, ~80% fewer tokens than JavaScript
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ npm install -g naider
16
+ ```
17
+
18
+ ## Quick Start
19
+
20
+ ```bash
21
+ # Create a new project
22
+ naide init my-app
23
+ cd my-app
24
+ npm install
25
+ npm run dev
26
+ ```
27
+
28
+ Or write a file directly:
29
+
30
+ ```python
31
+ # app.naide
32
+ server app port 3000:
33
+ get "/":
34
+ ret {message: "Hello from NAIDE"}
35
+ ```
36
+
37
+ ```bash
38
+ naide app.naide
39
+ ```
40
+
41
+ ## CLI
42
+
43
+ ```bash
44
+ naide <file> # Run a .naide or .nx file
45
+ naide # Start interactive REPL
46
+ naide repl # Start interactive REPL
47
+ naide init [dir] # Scaffold a new project
48
+ naide build [dir] [outdir] # Transpile all files to JavaScript
49
+ naide fmt <files...> # Format NAIDE files
50
+ naide lsp # Start Language Server (LSP)
51
+ naide vscode # Install VS Code extension
52
+ naide deploy [dir] # Generate Dockerfile for deployment
53
+ naide -w <file> # Watch mode (auto-restart on changes)
54
+ naide --emit <file> # Print generated JavaScript
55
+ naide -o <out.js> <file> # Write JavaScript to file
56
+ naide --mid <file.nx> # Show intermediate NAIDE v1 (debug X mode)
57
+ naide --ast <file> # Print AST
58
+ naide --tokens <file> # Print token stream
59
+ ```
60
+
61
+ ### REPL
62
+
63
+ ```
64
+ $ naide
65
+ NAIDE REPL v1.6.0 — type NAIDE code, see JavaScript output
66
+ Type .exit to quit, .eval to toggle eval mode
67
+
68
+ >>> str name = "hello"
69
+ const name = "hello";
70
+
71
+ >>> fn add(int a, int b) -> int:
72
+ ... ret a + b
73
+ ...
74
+ function add(a, b) {
75
+ return (a + b);
76
+ }
77
+ ```
78
+
79
+ Type `.eval` to switch to evaluation mode (runs the code instead of showing JS).
80
+
81
+ ### Playground
82
+
83
+ Open `playground/index.html` in a browser (via a local server) for a live in-browser transpiler with examples and token count comparison.
84
+
85
+ ### Benchmark
86
+
87
+ ```bash
88
+ node benchmark/compare.js
89
+ ```
90
+
91
+ ```
92
+ Language Tokens Chars Lines Savings
93
+ JavaScript 330 2590 78 —
94
+ NAIDE 66 517 19 -80%
95
+ NAIDE-X 39 435 19 -88%
96
+ ```
97
+
98
+ ## Language Reference
99
+
100
+ ### Variables
101
+
102
+ ```python
103
+ str name = "hello" # immutable (const)
104
+ int count = 42
105
+ num price = 9.99
106
+ bool active = true
107
+ list items = [1, 2, 3]
108
+ map config = {host: "localhost"}
109
+ any data = null
110
+
111
+ mut int counter = 0 # mutable (let)
112
+ mut str label = "init"
113
+ ```
114
+
115
+ Types: `str`, `int`, `num`, `bool`, `list`, `map`, `any`, `json`, `void`
116
+
117
+ ### String Interpolation
118
+
119
+ ```python
120
+ str greeting = "Hello {name}, you have {count} items"
121
+ ```
122
+
123
+ Double-quoted strings with `{expr}` are auto-interpolated.
124
+
125
+ ### Functions
126
+
127
+ ```python
128
+ fn add(int a, int b) -> int:
129
+ ret a + b
130
+
131
+ fn greet(str name, str prefix = "Hello"):
132
+ log "{prefix}, {name}!"
133
+
134
+ fn sum(...int nums) -> int:
135
+ mut int total = 0
136
+ each n in nums:
137
+ total += n
138
+ ret total
139
+
140
+ fn.async fetchUser(str id) -> map:
141
+ any res = await fetch("/api/users/{id}")
142
+ ret await res.json()
143
+ ```
144
+
145
+ ### Control Flow
146
+
147
+ ```python
148
+ if count > 10:
149
+ log "many"
150
+ elif count > 5:
151
+ log "some"
152
+ else:
153
+ log "few"
154
+
155
+ str size = if count > 10 then "big" else "small"
156
+ ```
157
+
158
+ ### Loops
159
+
160
+ ```python
161
+ each item in items:
162
+ log item
163
+
164
+ each key, val in config:
165
+ log "{key}: {val}"
166
+
167
+ for i in 0..10:
168
+ log i
169
+
170
+ while active:
171
+ log "running"
172
+ active = false
173
+ ```
174
+
175
+ ### Pattern Matching
176
+
177
+ ```python
178
+ match status:
179
+ "ok": log "success"
180
+ "error": log "failed"
181
+ _: log "unknown"
182
+ ```
183
+
184
+ ### Error Handling
185
+
186
+ ```python
187
+ try:
188
+ data = await fetchData(url)
189
+ fail e:
190
+ log.error e.message
191
+ ensure:
192
+ log "request completed"
193
+ ```
194
+
195
+ `ensure:` is NAIDE's `finally` — the block always runs, whether the `try` succeeds or fails. `fail` is optional:
196
+
197
+ ```python
198
+ try:
199
+ conn = await openConnection()
200
+ ret await conn.query("SELECT 1")
201
+ ensure:
202
+ conn.close()
203
+ ```
204
+
205
+ ### Type Checking
206
+
207
+ ```python
208
+ if typeof data == "string":
209
+ log "is string"
210
+
211
+ if err instanceof TypeError:
212
+ log "type error"
213
+ ```
214
+
215
+ `typeof` returns the type as a string. `instanceof` checks if a value is an instance of a class/constructor.
216
+
217
+ ### Classes
218
+
219
+ ```python
220
+ model User:
221
+ str name
222
+ str email
223
+ int age = 0
224
+
225
+ fn greet() -> str:
226
+ ret "Hi, I'm {self.name}"
227
+
228
+ model Admin extends User:
229
+ str role = "admin"
230
+ fn permissions() -> list:
231
+ ret ["read", "write", "delete"]
232
+ ```
233
+
234
+ ### Pipe Operator
235
+
236
+ ```python
237
+ list result = data
238
+ |> filter((x) => x.active)
239
+ |> map((x) => x.name)
240
+ |> sort()
241
+ ```
242
+
243
+ ### Imports / Exports
244
+
245
+ ```python
246
+ use express
247
+ use {readFile, writeFile} from "fs/promises"
248
+ use axios from "axios"
249
+
250
+ pub fn helper() -> str:
251
+ ret "exported"
252
+ pub str VERSION = "1.0.0"
253
+ ```
254
+
255
+ ## Server & API Features
256
+
257
+ All features below are zero-dependency — the runtime is bundled with the package.
258
+
259
+ ### server — Express App
260
+
261
+ ```python
262
+ server app port 3000:
263
+ get "/":
264
+ ret {message: "hello"}
265
+ post "/api/data" (req, res):
266
+ ret req.body
267
+ put "/api/data/:id" (req, res):
268
+ ret {updated: true}
269
+ del "/api/data/:id":
270
+ ret {deleted: true}
271
+ patch "/api/data/:id" (req, res):
272
+ ret {patched: true}
273
+ ```
274
+
275
+ ### schema — Data Models
276
+
277
+ ```python
278
+ schema User:
279
+ id auto
280
+ name str required min(2) max(50)
281
+ email str required email unique
282
+ age int optional min(0) max(150)
283
+ role enum("admin", "user") default("user")
284
+ joined timestamp auto
285
+ ```
286
+
287
+ Types: `str`, `int`, `num`, `bool`, `auto` (UUID), `timestamp`, `enum(...)`
288
+ Modifiers: `required`, `optional`, `min(n)`, `max(n)`, `email`, `url`, `unique`, `auto`, `default(val)`
289
+
290
+ ### db — Persistent Storage
291
+
292
+ ```python
293
+ db "data/"
294
+ ```
295
+
296
+ Schemas auto-persist to JSON files (`data/User.json`, etc.). Without `db`, data is in-memory only.
297
+
298
+ ### crud — Auto-generated REST Endpoints
299
+
300
+ ```python
301
+ server app port 3000:
302
+ crud "/api/users" User
303
+ ```
304
+
305
+ Generates GET (list + by-ID), POST, PUT, DELETE with validation. Built-in pagination, search, and sort:
306
+
307
+ ```
308
+ GET /api/users?page=2&limit=10&q=john&sort=name&order=asc
309
+ ```
310
+
311
+ Response: `{ data: [...], total, page, limit, pages }`
312
+
313
+ ### validate — Request Validation
314
+
315
+ ```python
316
+ server app port 3000:
317
+ validate "/api/users" User
318
+ post "/api/users" (req, res):
319
+ user = UserStore.create(req.body) # body is pre-validated
320
+ ret user
321
+ ```
322
+
323
+ Auto-validates POST/PUT/PATCH bodies against the schema. Returns `400` with error details if invalid. Validated data replaces `req.body`.
324
+
325
+ ### auth — JWT Authentication
326
+
327
+ ```python
328
+ server app port 3000:
329
+ auth JWT_SECRET:
330
+ protect "/api/*"
331
+ public "/api/auth/*"
332
+
333
+ post "/api/auth/login" (req, res):
334
+ token = auth.sign({id: user.id})
335
+ ret {token}
336
+ ```
337
+
338
+ ### cors / limit / cookie / session
339
+
340
+ ```python
341
+ server app port 3000:
342
+ cors "*" # CORS middleware
343
+ limit "/api/*" 100 "1m" # rate limiting (100 req/min)
344
+ cookie # cookie parser → req.cookies
345
+ session "my-secret" # cookie sessions → req.session
346
+ ```
347
+
348
+ ### upload — File Uploads
349
+
350
+ ```python
351
+ server app port 3000:
352
+ upload "/api/upload" "avatar" (req, res):
353
+ ret {filename: req.file.filename, size: req.file.size}
354
+ ```
355
+
356
+ Zero-dependency multipart parser. `req.file` = `{filename, contentType, data, size}`.
357
+
358
+ ### view — Template Rendering
359
+
360
+ ```python
361
+ server app port 3000:
362
+ view "./views"
363
+ get "/":
364
+ ret.render "home" {title: "Welcome", items: ["a", "b"]}
365
+ ```
366
+
367
+ Reads `.html` files with `{{variable}}`, `{{if key}}...{{/if}}`, `{{each item in list}}...{{/each}}`.
368
+
369
+ ### sse — Server-Sent Events
370
+
371
+ ```python
372
+ server app port 3000:
373
+ sse "/events"
374
+ post "/api/notify" (req, res):
375
+ sse.broadcast req.body
376
+ ret {ok: true}
377
+ ```
378
+
379
+ `sse.send(data)`, `sse.broadcast(data)`, `sse.count`.
380
+
381
+ ### cache — Response Caching
382
+
383
+ ```python
384
+ server app port 3000:
385
+ cache "/api/*" "5m"
386
+ ```
387
+
388
+ Caches GET responses in memory with TTL. Sets `X-Cache: HIT/MISS`.
389
+
390
+ ### ws — WebSocket
391
+
392
+ ```python
393
+ server app port 3000:
394
+ ws "/chat":
395
+ on "connect":
396
+ send({type: "welcome"})
397
+ on "message" (data):
398
+ broadcast(data)
399
+ on "close":
400
+ log "client left"
401
+ ```
402
+
403
+ Built-in `send(data)` and `broadcast(data)`. Requires `npm install ws`.
404
+
405
+ ### group — Route Groups
406
+
407
+ ```python
408
+ server app port 3000:
409
+ group "/api/v1":
410
+ get "/users":
411
+ ret users
412
+ post "/users" (req, res):
413
+ ret req.body
414
+ ```
415
+
416
+ ### mid — Named Middleware
417
+
418
+ ```python
419
+ fn logger(req, res, next):
420
+ log req.method, req.url
421
+ next()
422
+
423
+ server app port 3000:
424
+ mid logger # apply globally
425
+ mid logger "/api" # apply to path only
426
+ ```
427
+
428
+ ### Route-Level Middleware
429
+
430
+ Apply middleware to specific routes with bracket syntax:
431
+
432
+ ```python
433
+ server app port 3000:
434
+ get "/admin" [authCheck] (req, res):
435
+ ret {admin: true}
436
+
437
+ post "/api/data" [auth, logger, validator] (req, res):
438
+ ret req.body
439
+ ```
440
+
441
+ Compiles to `app.get("/admin", authCheck, (req, res) => { ... })`.
442
+
443
+ ### static — Serve Files
444
+
445
+ ```python
446
+ server app port 3000:
447
+ static "/public"
448
+ ```
449
+
450
+ ### error — Error Handler
451
+
452
+ ```python
453
+ server app port 3000:
454
+ error (err, req, res):
455
+ log.error err.message
456
+ ret.status 500 {error: "Internal error"}
457
+ ```
458
+
459
+ ### openapi — Auto-Generated API Docs
460
+
461
+ ```python
462
+ server app port 3000:
463
+ openapi "/docs"
464
+ ```
465
+
466
+ Generates an OpenAPI 3.1 JSON spec from your schemas, served at the specified path.
467
+
468
+ ### Response Helpers
469
+
470
+ ```python
471
+ ret {data: items} # JSON (default)
472
+ ret.status 404 {error: "nope"} # status code
473
+ ret.redirect "/login" # redirect
474
+ ret.redirect 301 "/new-url" # redirect with status
475
+ ret.html "<h1>Hello</h1>" # HTML
476
+ ret.text "pong" # plain text
477
+ ret.file "/path/to/file" # send file
478
+ ret.download "/path/to/file.zip" # file download
479
+ ret.download "/file.zip" "custom.zip" # download with filename
480
+ ret.render "template" {data} # render template (requires view)
481
+ ```
482
+
483
+ ## Testing
484
+
485
+ Built-in test syntax using Node.js test runner:
486
+
487
+ ```python
488
+ test "user creation":
489
+ user = UserStore.create({name: "Alice", email: "alice@test.com"})
490
+ assert user.name == "Alice"
491
+ assert user.email == "alice@test.com"
492
+
493
+ test "math":
494
+ assert 1 + 1 == 2
495
+ assert 10 > 5
496
+ ```
497
+
498
+ `assert a == b` generates `assert.strictEqual` for better error messages. Run with `node --test`.
499
+
500
+ ## Job Queue
501
+
502
+ In-memory async job queue for background processing:
503
+
504
+ ```python
505
+ queue jobs:
506
+ job "sendEmail" (data):
507
+ log "sending to {data.to}"
508
+ job "resize" (data):
509
+ log "resizing {data.path}"
510
+
511
+ server app port 3000:
512
+ post "/api/notify" (req, res):
513
+ jobs.add("sendEmail", {to: req.body.email})
514
+ ret {queued: true}
515
+ ```
516
+
517
+ ## Scheduled Tasks & Events
518
+
519
+ ```python
520
+ every "5m":
521
+ log "cleanup running"
522
+
523
+ watch User.create (event):
524
+ log "new user: {event.data.name}"
525
+ ```
526
+
527
+ Intervals: `"30s"`, `"5m"`, `"1h"`, `"1d"`.
528
+ `watch` connects to `crud` events automatically.
529
+
530
+ ## Environment Variables
531
+
532
+ ```python
533
+ env:
534
+ PORT int default(3000)
535
+ JWT_SECRET str required
536
+ DB_URL str default("data/")
537
+ ```
538
+
539
+ Variables become constants. Missing `required` vars exit with an error.
540
+
541
+ ## Built-in Functions
542
+
543
+ ```python
544
+ str id = uuid() # UUID
545
+ str hashed = hash("password") # scrypt hash
546
+ bool ok = verify("password", hashed) # timing-safe verify
547
+ str token = sign({id: 1}) # JWT (uses auth secret)
548
+ str token = sign({id: 1}, "my-secret") # JWT (explicit secret)
549
+ ```
550
+
551
+ Auto-imported from the runtime when used.
552
+
553
+ ## HTTP Client
554
+
555
+ ```python
556
+ fn.async getUsers() -> any:
557
+ any users = await api.get("https://api.example.com/users")
558
+ ret users
559
+
560
+ fn.async createUser(map data) -> any:
561
+ any result = await api.post("https://api.example.com/users", data)
562
+ ret result
563
+ ```
564
+
565
+ Methods: `api.get(url)`, `api.post(url, body)`, `api.put(url, body)`, `api.del(url)`, `api.raw(url, opts)`.
566
+
567
+ ## AI / LLM Integration
568
+
569
+ Built-in AI client — zero dependencies, auto-detects provider from API key:
570
+
571
+ ```python
572
+ fn.async main():
573
+ # Simple prompt
574
+ str answer = await ai.ask("Explain NAIDE in one sentence")
575
+
576
+ # Structured JSON output
577
+ map result = await ai.json("List 3 colors", {colors: ["string"]})
578
+
579
+ # Multi-turn chat
580
+ list msgs = [{role: "user", content: "Hi"}, {role: "assistant", content: "Hello!"}, {role: "user", content: "What is 2+2?"}]
581
+ str reply = await ai.chat(msgs)
582
+
583
+ # With options
584
+ str answer2 = await ai.ask("hello", {model: "gpt-4o", maxTokens: 100})
585
+ ```
586
+
587
+ Set `AI_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY` env var. Provider auto-detected: `sk-ant-*` → Anthropic, otherwise OpenAI-compatible.
588
+
589
+ ### AI Streaming
590
+
591
+ ```python
592
+ fn.async main():
593
+ each chunk in await ai.stream("Write a poem"):
594
+ log chunk
595
+ ```
596
+
597
+ Returns an async iterator of text chunks — works with SSE for real-time chat UIs.
598
+
599
+ ### Embeddings & Vector Search (RAG)
600
+
601
+ ```python
602
+ fn.async main():
603
+ # Generate embeddings
604
+ list vec = await ai.embed("hello world")
605
+ list vecs = await ai.embed(["hello", "world"])
606
+
607
+ # Cosine similarity
608
+ num score = ai.similarity(vec1, vec2)
609
+ ```
610
+
611
+ Built-in vector store for RAG:
612
+
613
+ ```python
614
+ fn.async search(str query):
615
+ list qVec = await ai.embed(query)
616
+ list results = vectors.search(qVec, 5)
617
+ ret results
618
+ ```
619
+
620
+ `createVectorStore()` — in-memory vector store with `add(id, embedding, metadata)`, `search(queryEmbedding, topK)`, `remove(id)`, `clear()`.
621
+
622
+ ### Prompt Templates
623
+
624
+ Reusable prompt declarations with default variables:
625
+
626
+ ```python
627
+ prompt summarize {lang: "en"}:
628
+ "Summarize the following text in {lang}:"
629
+ "{text}"
630
+
631
+ fn.async main():
632
+ str p = summarize({text: "hello world"})
633
+ str answer = await ai.ask(p)
634
+ ```
635
+
636
+ Multi-line templates are joined with newlines. Variables use `{name}` syntax.
637
+
638
+ ### AI in Server Routes
639
+
640
+ ```python
641
+ server app port 3000:
642
+ post "/api/ask" (req, res):
643
+ str answer = await ai.ask(req.body.prompt)
644
+ ret {answer}
645
+ ```
646
+
647
+ ## SQL Database
648
+
649
+ SQLite and PostgreSQL support with the same store API:
650
+
651
+ ```python
652
+ db.sql "sqlite" "app.db"
653
+
654
+ schema User:
655
+ id auto
656
+ name str required
657
+ email str required email
658
+
659
+ server app port 3000:
660
+ crud "/api/users" User
661
+ ```
662
+
663
+ Schemas with `db.sql` auto-use SQL storage instead of JSON files. Same API: `getAll`, `getById`, `create`, `update`, `delete`, `where`, `count`, `clear`.
664
+
665
+ PostgreSQL:
666
+
667
+ ```python
668
+ db.sql "postgres" "postgresql://localhost/mydb"
669
+ ```
670
+
671
+ ## Language Server (LSP)
672
+
673
+ Built-in LSP for editor integration — diagnostics, completions, and hover docs:
674
+
675
+ ```bash
676
+ naide lsp
677
+ ```
678
+
679
+ ### VS Code
680
+
681
+ ```bash
682
+ naide vscode
683
+ ```
684
+
685
+ One command installs the extension — syntax highlighting, LSP diagnostics, autocomplete, and hover docs for `.naide` and `.nx` files. Restart VS Code after install.
686
+
687
+ ## Deploy
688
+
689
+ Generate deployment files with one command:
690
+
691
+ ```bash
692
+ naide deploy
693
+ ```
694
+
695
+ Creates `Dockerfile` and `.dockerignore`. Then:
696
+
697
+ ```bash
698
+ docker build -t naide-app .
699
+ docker run -p 3000:3000 naide-app
700
+ ```
701
+
702
+ ## Multi-File Projects
703
+
704
+ Import between NAIDE files — extensions are auto-rewritten to `.mjs` in output:
705
+
706
+ ```python
707
+ # routes.naide
708
+ pub fn.async handleUser(req, res):
709
+ ret {user: req.params.id}
710
+ ```
711
+
712
+ ```python
713
+ # app.naide
714
+ use {handleUser} from "./routes.naide"
715
+
716
+ server app port 3000:
717
+ get "/user/:id" [handleUser] (req, res):
718
+ ret {ok: true}
719
+ ```
720
+
721
+ Build all files with `naide build`, which compiles every `.naide`/`.nx` file to `.mjs`.
722
+
723
+ ## Full Example
724
+
725
+ ```python
726
+ db.sql "sqlite" "app.db"
727
+
728
+ env:
729
+ PORT int default(3000)
730
+ JWT_SECRET str required
731
+
732
+ schema User:
733
+ id auto
734
+ name str required min(2) max(50)
735
+ email str required email
736
+ password str required
737
+
738
+ queue jobs:
739
+ job "welcome" (data):
740
+ log "Welcome email to {data.email}"
741
+
742
+ server app port PORT:
743
+ cors "*"
744
+ cookie
745
+ session JWT_SECRET
746
+ auth JWT_SECRET:
747
+ protect "/api/*"
748
+ public "/api/auth/*"
749
+ limit "/api/*" 100 "1m"
750
+ static "/public"
751
+ cache "/api/users" "1m"
752
+ validate "/api/users" User
753
+ crud "/api/users" User
754
+ openapi "/docs"
755
+
756
+ post "/api/auth/register" (req, res):
757
+ try:
758
+ str hashed = hash(req.body.password)
759
+ user = UserStore.create({...req.body, password: hashed})
760
+ token = auth.sign({id: user.id})
761
+ jobs.add("welcome", {email: user.email})
762
+ ret {token, user}
763
+ fail e:
764
+ ret.status 500 {error: e.message}
765
+ ensure:
766
+ log.info "register attempt handled"
767
+
768
+ post "/api/auth/login" (req, res):
769
+ user = UserStore.where({email: req.body.email})[0]
770
+ if not user:
771
+ ret.status 401 {error: "Invalid credentials"}
772
+ if not verify(req.body.password, user.password):
773
+ ret.status 401 {error: "Invalid credentials"}
774
+ token = auth.sign({id: user.id})
775
+ ret {token}
776
+
777
+ post "/api/ask" (req, res):
778
+ str answer = await ai.ask(req.body.prompt)
779
+ ret {answer}
780
+
781
+ get "/admin" [authCheck] (req, res):
782
+ if typeof req.user == "undefined":
783
+ ret.status 401 {error: "not authenticated"}
784
+ ret {admin: true}
785
+
786
+ get "/old-page":
787
+ ret.redirect 301 "/new-page"
788
+
789
+ get "/download":
790
+ ret.download "/files/report.pdf" "report.pdf"
791
+
792
+ ws "/chat":
793
+ on "message" (data):
794
+ broadcast(data)
795
+
796
+ sse "/events"
797
+
798
+ get "/":
799
+ ret.html "<h1>Welcome</h1>"
800
+
801
+ error (err, req, res):
802
+ log.error err.message
803
+ ret.status 500 {error: "Something went wrong"}
804
+
805
+ watch User.create (event):
806
+ log "new user: {event.data.name}"
807
+
808
+ every "30m":
809
+ log "cleanup"
810
+ ```
811
+
812
+ This generates a complete production API — SQLite database, AI/LLM integration, auth, password hashing, CORS, sessions, rate limiting, CRUD with pagination/search, WebSocket, SSE, file caching, request validation, background jobs, auto-generated API docs, route middleware, file downloads, redirects with status codes, type checking, error handling with ensure/finally, and event-driven hooks — from ~75 lines.
813
+
814
+ ## NAIDE-X Syntax (.nx)
815
+
816
+ Every keyword is a single character. Line-start symbol = intent.
817
+
818
+ ```
819
+ s:name="World" -- str name = "World"
820
+ i:count=42 -- int count = 42
821
+ ~i:counter=0 -- mut int counter = 0
822
+
823
+ f greet(s:who)s -- fn greet(str who) -> str:
824
+ >"Hello, {who}!" -- ret "Hello, {who}!"
825
+
826
+ ~f fetchData(s:url)a -- fn.async fetchData(str url) -> any:
827
+ >~fetch(url) -- ret await fetch(url)
828
+
829
+ ?count>5 -- if count > 5:
830
+ log"many" -- log "many"
831
+ |count>2 -- elif count > 2:
832
+ log"some" -- log "some"
833
+ : -- else:
834
+ log"few" -- log "few"
835
+
836
+ @item<items -- each item in items:
837
+ @i<0..10 -- for i in 0..10:
838
+ *active -- while active:
839
+
840
+ $app:3000 -- server app port 3000:
841
+ G"/users" -- get "/users":
842
+ >users -- ret users
843
+ P"/users"(req,res) -- post "/users" (req, res):
844
+ >req.body -- ret req.body
845
+ ```
846
+
847
+ ### NAIDE-X Cheat Sheet
848
+
849
+ | Symbol | Meaning | Symbol | Meaning |
850
+ |--------|---------|--------|---------|
851
+ | `>` | return | `?` | if |
852
+ | `\|` | elif | `:` | else |
853
+ | `@` | loop | `*` | while |
854
+ | `!` | try | `!!` | catch |
855
+ | `!!!` | ensure/finally | `>.d` | ret.download |
856
+ | `$` | server | `^` | model |
857
+ | `<` | import | `%` | match |
858
+ | `f` | function | `~f` | async function |
859
+ | `+` | export | `~` | await |
860
+ | `G` | GET | `P` | POST |
861
+ | `U` | PUT | `D` | DELETE |
862
+ | `X` | PATCH | `>.s` | ret.status |
863
+ | `>.r` | ret.redirect | `>.h` | ret.html |
864
+ | `>.t` | ret.text | `>.v` | ret.render |
865
+
866
+ Types: `s`=str `i`=int `n`=num `b`=bool `l`=list `m`=map `a`=any
867
+
868
+ High-level keywords work in both modes: `schema`, `crud`, `auth`, `cors`, `limit`, `env`, `every`, `watch`, `static`, `ws`, `db`, `db.sql`, `group`, `cookie`, `error`, `session`, `upload`, `view`, `sse`, `cache`, `patch`, `validate`, `test`, `assert`, `queue`, `openapi`, `typeof`, `instanceof`, `ensure`, `ai`, `prompt`.
869
+
870
+ NAIDE-X log shorthands: `log.e` = error, `log.w` = warn, `log.i` = info, `log.d` = debug.
871
+
872
+ ## Why NAIDE?
873
+
874
+ AI code generation speed depends on:
875
+
876
+ 1. **Token count** — fewer output tokens = faster generation
877
+ 2. **Predictability** — one way to write everything = better next-token prediction
878
+ 3. **Context window** — shorter code = more room for complex projects
879
+
880
+ NAIDE-X is designed as an **AI-internal representation** — the AI thinks in NAIDE-X, users receive standard JavaScript.
881
+
882
+ ## License
883
+
884
+ MIT