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/bin/naide.js ADDED
@@ -0,0 +1,519 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { readFileSync, writeFileSync, unlinkSync, watch as fsWatch, existsSync, mkdirSync, readdirSync, statSync } from 'fs';
4
+ import { resolve, basename, extname, join, relative } from 'path';
5
+ import { compile } from '../src/index.js';
6
+ import { spawn } from 'child_process';
7
+
8
+ const args = process.argv.slice(2);
9
+
10
+ const flags = {
11
+ run: true,
12
+ emit: false,
13
+ ast: false,
14
+ tokens: false,
15
+ output: null,
16
+ help: false,
17
+ mode: null,
18
+ mid: false,
19
+ watch: false,
20
+ };
21
+
22
+ const files = [];
23
+
24
+ for (let i = 0; i < args.length; i++) {
25
+ const arg = args[i];
26
+ switch (arg) {
27
+ case '--emit': case '-e': flags.emit = true; flags.run = false; break;
28
+ case '--ast': flags.ast = true; flags.run = false; break;
29
+ case '--tokens': flags.tokens = true; flags.run = false; break;
30
+ case '--output': case '-o': flags.output = args[++i]; break;
31
+ case '--help': case '-h': flags.help = true; break;
32
+ case '--x': case '-x': flags.mode = 'x'; break;
33
+ case '--mid': flags.mid = true; flags.run = false; break;
34
+ case '--watch': case '-w': flags.watch = true; break;
35
+ default: files.push(arg);
36
+ }
37
+ }
38
+
39
+ // ── VS Code Extension Install ──
40
+ if (files[0] === 'vscode') {
41
+ const os = await import('os');
42
+ const extSrc = new URL('../vscode-naide', import.meta.url).pathname.replace(/^\/([A-Z]:)/, '$1');
43
+ const extName = 'irxk.naide-lang-1.1.0';
44
+ const extDir = join(os.homedir(), '.vscode', 'extensions', extName);
45
+
46
+ if (existsSync(extDir)) {
47
+ console.log(`\n NAIDE VS Code extension already installed at:\n ${extDir}\n`);
48
+ console.log(' To reinstall, delete the folder and run again.');
49
+ process.exit(0);
50
+ }
51
+
52
+ const copyDir = (src, dest) => {
53
+ mkdirSync(dest, { recursive: true });
54
+ for (const entry of readdirSync(src)) {
55
+ const srcPath = join(src, entry);
56
+ const destPath = join(dest, entry);
57
+ if (statSync(srcPath).isDirectory()) {
58
+ copyDir(srcPath, destPath);
59
+ } else {
60
+ writeFileSync(destPath, readFileSync(srcPath));
61
+ }
62
+ }
63
+ };
64
+
65
+ try {
66
+ copyDir(extSrc, extDir);
67
+ console.log(`\n NAIDE VS Code extension installed!
68
+
69
+ Location: ${extDir}
70
+
71
+ Restart VS Code to activate.
72
+ Features: syntax highlighting, LSP diagnostics, autocomplete, hover docs
73
+ `);
74
+ } catch (e) {
75
+ console.error(` Error: ${e.message}`);
76
+ console.log('\n Manual install: copy vscode-naide/ to ~/.vscode/extensions/irxk.naide-lang-1.1.0/');
77
+ process.exit(1);
78
+ }
79
+ process.exit(0);
80
+ }
81
+
82
+ // ── LSP ──
83
+ if (files[0] === 'lsp') {
84
+ await import('../lsp/server.js');
85
+ await new Promise(() => {});
86
+ }
87
+
88
+ // ── REPL ──
89
+ if (files[0] === 'repl' || (files.length === 0 && !flags.help)) {
90
+ const { createInterface } = await import('readline');
91
+ const { transpile } = await import('../src/index.js');
92
+
93
+ console.log(`\n NAIDE REPL v1.6.0 — type NAIDE code, see JavaScript output`);
94
+ console.log(` Type .exit to quit, .eval to toggle eval mode\n`);
95
+
96
+ const rl = createInterface({
97
+ input: process.stdin,
98
+ output: process.stdout,
99
+ prompt: '>>> ',
100
+ });
101
+
102
+ let buffer = '';
103
+ let inBlock = false;
104
+ let evalMode = false;
105
+ const evalContext = {};
106
+
107
+ function processInput(code) {
108
+ try {
109
+ const js = transpile(code)
110
+ .split('\n')
111
+ .filter(l => !l.startsWith('import '))
112
+ .join('\n')
113
+ .trim();
114
+
115
+ if (!js) return;
116
+
117
+ if (evalMode) {
118
+ const evalCode = js.replace(/\bconst\b/g, 'let');
119
+ try {
120
+ const result = (new Function('ctx', `with(ctx){${evalCode}; return typeof __last !== 'undefined' ? __last : undefined}`))(evalContext);
121
+ if (result !== undefined) console.log(result);
122
+ } catch (e) {
123
+ try { (new Function('ctx', `with(ctx){${evalCode}}`))(evalContext); } catch (e2) { console.error(` Error: ${e2.message}`); }
124
+ }
125
+ } else {
126
+ console.log(js);
127
+ }
128
+ } catch (e) {
129
+ console.error(` ${e.message.split('\n')[0]}`);
130
+ }
131
+ }
132
+
133
+ rl.prompt();
134
+ rl.on('line', (line) => {
135
+ if (line.trim() === '.exit') { rl.close(); process.exit(0); }
136
+ if (line.trim() === '.eval') {
137
+ evalMode = !evalMode;
138
+ console.log(` Eval mode: ${evalMode ? 'ON' : 'OFF'}`);
139
+ rl.prompt();
140
+ return;
141
+ }
142
+
143
+ if (inBlock) {
144
+ if (line.trim() === '' && buffer.trim()) {
145
+ processInput(buffer);
146
+ buffer = '';
147
+ inBlock = false;
148
+ rl.setPrompt('>>> ');
149
+ } else {
150
+ buffer += '\n' + line;
151
+ rl.prompt();
152
+ return;
153
+ }
154
+ } else if (line.trim().endsWith(':') && !line.trim().startsWith('#')) {
155
+ buffer = line;
156
+ inBlock = true;
157
+ rl.setPrompt('... ');
158
+ } else if (line.trim()) {
159
+ processInput(line);
160
+ }
161
+ rl.prompt();
162
+ });
163
+
164
+ rl.on('close', () => process.exit(0));
165
+
166
+ // Keep the process running
167
+ await new Promise(() => {});
168
+ }
169
+
170
+ // ── Format ──
171
+ if (files[0] === 'fmt') {
172
+ const targets = files.slice(1);
173
+ if (targets.length === 0) {
174
+ console.log(' Usage: naide fmt <file.naide> [file2.naide ...]');
175
+ process.exit(0);
176
+ }
177
+
178
+ for (const file of targets) {
179
+ const filePath = resolve(file);
180
+ try {
181
+ const source = readFileSync(filePath, 'utf-8');
182
+ const lines = source.split('\n');
183
+ const result = [];
184
+ let prevEmpty = false;
185
+
186
+ for (const line of lines) {
187
+ const trimmed = line.trimEnd();
188
+ if (trimmed === '') {
189
+ if (!prevEmpty) result.push('');
190
+ prevEmpty = true;
191
+ continue;
192
+ }
193
+ prevEmpty = false;
194
+
195
+ const indent = line.match(/^(\s*)/)[1];
196
+ const content = line.trimStart();
197
+ const level = Math.round(indent.length / 2);
198
+ let formatted = ' '.repeat(level) + content;
199
+
200
+ // Remove trailing whitespace
201
+ formatted = formatted.trimEnd();
202
+
203
+ result.push(formatted);
204
+ }
205
+
206
+ // Remove trailing empty lines
207
+ while (result.length > 0 && result[result.length - 1] === '') result.pop();
208
+ const formatted = result.join('\n') + '\n';
209
+
210
+ if (formatted !== source) {
211
+ writeFileSync(filePath, formatted, 'utf-8');
212
+ console.log(` formatted: ${file}`);
213
+ } else {
214
+ console.log(` unchanged: ${file}`);
215
+ }
216
+ } catch (e) {
217
+ console.error(` Error: ${file} — ${e.message}`);
218
+ }
219
+ }
220
+ process.exit(0);
221
+ }
222
+
223
+ if (files[0] === 'init') {
224
+ const dir = files[1] ? resolve(files[1]) : process.cwd();
225
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
226
+ const name = basename(dir === process.cwd() ? dir : dir);
227
+
228
+ if (!existsSync(resolve(dir, 'package.json'))) {
229
+ writeFileSync(resolve(dir, 'package.json'), JSON.stringify({
230
+ name, version: '1.0.0', type: 'module',
231
+ scripts: { start: 'naide app.naide', dev: 'naide -w app.naide', build: 'naide --emit app.naide -o dist/app.mjs' },
232
+ dependencies: { naider: '^1.7.0' }
233
+ }, null, 2) + '\n');
234
+ }
235
+
236
+ if (!existsSync(resolve(dir, 'app.naide'))) {
237
+ writeFileSync(resolve(dir, 'app.naide'), `db "data/"
238
+
239
+ env:
240
+ PORT int default(3000)
241
+
242
+ schema Item:
243
+ id auto
244
+ name str required min(1) max(100)
245
+ done bool default(false)
246
+
247
+ server app port PORT:
248
+ cors "*"
249
+ cookie
250
+ static "/public"
251
+ crud "/api/items" Item
252
+
253
+ get "/":
254
+ ret.text "NAIDE server running"
255
+
256
+ get "/api/health":
257
+ ret {status: "ok", items: ItemStore.count()}
258
+ `);
259
+ }
260
+
261
+ if (!existsSync(resolve(dir, 'public'))) mkdirSync(resolve(dir, 'public'), { recursive: true });
262
+
263
+ console.log(`\n NAIDE project initialized!
264
+
265
+ ${dir === process.cwd() ? '' : ` cd ${basename(dir)}\n`} npm install
266
+ npm run dev
267
+ `);
268
+ process.exit(0);
269
+ }
270
+
271
+ if (files[0] === 'build') {
272
+ const dir = resolve(files[1] || '.');
273
+ const outDir = files[2] ? resolve(files[2]) : null;
274
+
275
+ function walkDir(d) {
276
+ const found = [];
277
+ for (const entry of readdirSync(d)) {
278
+ const full = join(d, entry);
279
+ if (statSync(full).isDirectory()) {
280
+ if (entry === 'node_modules' || entry === '.git' || entry === 'dist') continue;
281
+ found.push(...walkDir(full));
282
+ } else if (entry.endsWith('.naide') || entry.endsWith('.nx')) {
283
+ found.push(full);
284
+ }
285
+ }
286
+ return found;
287
+ }
288
+
289
+ const sourceFiles = walkDir(dir);
290
+ if (sourceFiles.length === 0) {
291
+ console.log(' No .naide or .nx files found.');
292
+ process.exit(0);
293
+ }
294
+
295
+ console.log(`\n NAIDE build — ${sourceFiles.length} file(s)\n`);
296
+ let errors = 0;
297
+ for (const srcFile of sourceFiles) {
298
+ const rel = relative(dir, srcFile);
299
+ const mode = srcFile.endsWith('.nx') ? 'x' : 'naide';
300
+ try {
301
+ const source = readFileSync(srcFile, 'utf-8');
302
+ const { js } = compile(source, { mode });
303
+ const outName = rel.replace(/\.(naide|nx)$/, '.mjs');
304
+ const outPath = outDir ? join(outDir, outName) : join(dir, outName);
305
+ const outDirPath = resolve(outPath, '..');
306
+ if (!existsSync(outDirPath)) mkdirSync(outDirPath, { recursive: true });
307
+ writeFileSync(outPath, js);
308
+ console.log(` ${rel} → ${outDir ? join(relative('.', outDir), outName) : outName}`);
309
+ } catch (e) {
310
+ console.error(` FAIL ${rel}: ${e.message.split('\n')[0]}`);
311
+ errors++;
312
+ }
313
+ }
314
+ console.log(`\n Done. ${sourceFiles.length - errors} compiled, ${errors} failed.`);
315
+ process.exit(errors > 0 ? 1 : 0);
316
+ }
317
+
318
+ // ── Deploy ──
319
+ if (files[0] === 'deploy') {
320
+ const dir = resolve(files[1] || '.');
321
+
322
+ const dockerfileContent = `FROM node:20-alpine
323
+ WORKDIR /app
324
+ COPY package*.json ./
325
+ RUN npm ci --production
326
+ COPY . .
327
+ RUN npx naide build . dist
328
+ EXPOSE 3000
329
+ CMD ["node", "dist/app.mjs"]
330
+ `;
331
+
332
+ const dockerignoreContent = `node_modules
333
+ .git
334
+ *.naide
335
+ *.nx
336
+ .naide_tmp_*
337
+ dist
338
+ `;
339
+
340
+ writeFileSync(resolve(dir, 'Dockerfile'), dockerfileContent);
341
+ writeFileSync(resolve(dir, '.dockerignore'), dockerignoreContent);
342
+
343
+ const pkgPath = resolve(dir, 'package.json');
344
+ if (existsSync(pkgPath)) {
345
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
346
+ if (!pkg.scripts) pkg.scripts = {};
347
+ pkg.scripts['docker:build'] = 'docker build -t naide-app .';
348
+ pkg.scripts['docker:run'] = 'docker run -p 3000:3000 naide-app';
349
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
350
+ }
351
+
352
+ console.log(`\n NAIDE deploy files generated!
353
+
354
+ Files created:
355
+ Dockerfile
356
+ .dockerignore
357
+
358
+ Commands:
359
+ docker build -t naide-app .
360
+ docker run -p 3000:3000 naide-app
361
+
362
+ Or use npm scripts:
363
+ npm run docker:build
364
+ npm run docker:run
365
+ `);
366
+ process.exit(0);
367
+ }
368
+
369
+ if (flags.help) {
370
+ console.log(`
371
+ NAIDE - Node AI Development Environment
372
+ A language designed for AI-speed code generation
373
+
374
+ Usage:
375
+ naide Start interactive REPL
376
+ naide <file.naide> Run a NAIDE file
377
+ naide <file.nx> Run a NAIDE-X file (auto-detected)
378
+ naide init [dir] Create a new NAIDE project
379
+ naide build [dir] [outdir] Transpile all files to JavaScript
380
+ naide repl Start interactive REPL
381
+ naide lsp Start language server (LSP)
382
+ naide vscode Install VS Code extension
383
+ naide deploy [dir] Generate Dockerfile for deployment
384
+ naide fmt <files...> Format NAIDE files
385
+ naide --emit <file> Output generated JavaScript
386
+ naide --mid <file.nx> Output intermediate NAIDE v1 (debug)
387
+ naide -x <file.naide> Force NAIDE-X mode
388
+ naide -w <file.naide> Watch mode (auto-restart on changes)
389
+
390
+ Modes:
391
+ .naide Standard NAIDE (~40% fewer tokens than JS)
392
+ .nx NAIDE-X extreme (~80% fewer tokens than JS)
393
+
394
+ Options:
395
+ -e, --emit Print generated JavaScript
396
+ -o, --output Write generated JavaScript to file
397
+ -x Force NAIDE-X mode
398
+ -w, --watch Watch mode: restart on file changes
399
+ --mid Show intermediate NAIDE v1 (X mode only)
400
+ --ast Print AST
401
+ --tokens Print tokens
402
+ -h, --help Show this help
403
+ `);
404
+ process.exit(0);
405
+ }
406
+
407
+ const runtimeUrl = new URL('../src/runtime.js', import.meta.url).href;
408
+
409
+ for (const file of files) {
410
+ const filePath = resolve(file);
411
+ let source;
412
+ try {
413
+ source = readFileSync(filePath, 'utf-8');
414
+ } catch (err) {
415
+ console.error(`Error: Cannot read file '${file}'`);
416
+ process.exit(1);
417
+ }
418
+
419
+ const ext = extname(file);
420
+ const mode = flags.mode || (ext === '.nx' ? 'x' : 'naide');
421
+
422
+ try {
423
+ if (flags.mid && mode === 'x') {
424
+ const { preprocess } = await import('../src/preprocess.js');
425
+ console.log(preprocess(source));
426
+ continue;
427
+ }
428
+
429
+ const runtimePath = flags.emit || flags.output ? 'naider/runtime' : runtimeUrl;
430
+
431
+ if (flags.watch) {
432
+ const tempFile = resolve(`.naide_tmp_${basename(file, ext)}.mjs`);
433
+ let child = null;
434
+
435
+ function start() {
436
+ try {
437
+ source = readFileSync(filePath, 'utf-8');
438
+ const result = compile(source, { mode, runtimePath });
439
+ writeFileSync(tempFile, result.js, 'utf-8');
440
+ child = spawn(process.execPath, [tempFile], { stdio: 'inherit' });
441
+ child.on('error', (err) => console.error(`[NAIDE] Process error: ${err.message}`));
442
+ child.on('exit', (code) => {
443
+ if (code !== null && code !== 0) console.log(`[NAIDE] Process exited with code ${code}`);
444
+ });
445
+ } catch (err) {
446
+ console.error(`\n${err.message}`);
447
+ }
448
+ }
449
+
450
+ function restart() {
451
+ console.log('\n[NAIDE] Change detected. Restarting...');
452
+ if (child) { child.kill(); child = null; }
453
+ start();
454
+ }
455
+
456
+ console.log(`[NAIDE] Watch mode — ${file}`);
457
+ start();
458
+
459
+ let debounce = null;
460
+ fsWatch(filePath, () => {
461
+ if (debounce) clearTimeout(debounce);
462
+ debounce = setTimeout(restart, 200);
463
+ });
464
+
465
+ process.on('SIGINT', () => {
466
+ if (child) child.kill();
467
+ try { unlinkSync(tempFile); } catch {}
468
+ process.exit(0);
469
+ });
470
+
471
+ process.on('SIGTERM', () => {
472
+ if (child) child.kill();
473
+ process.exit(0);
474
+ });
475
+
476
+ continue;
477
+ }
478
+
479
+ const result = compile(source, { mode, runtimePath });
480
+
481
+ if (flags.tokens) {
482
+ console.log(JSON.stringify(result.tokens, null, 2));
483
+ continue;
484
+ }
485
+
486
+ if (flags.ast) {
487
+ console.log(JSON.stringify(result.ast, null, 2));
488
+ continue;
489
+ }
490
+
491
+ if (flags.output) {
492
+ writeFileSync(flags.output, result.js, 'utf-8');
493
+ console.log(`Written to ${flags.output}`);
494
+ continue;
495
+ }
496
+
497
+ if (flags.emit) {
498
+ console.log(result.js);
499
+ continue;
500
+ }
501
+
502
+ // Run mode
503
+ const tempFile = resolve(`.naide_tmp_${basename(file, ext)}.mjs`);
504
+ writeFileSync(tempFile, result.js, 'utf-8');
505
+
506
+ try {
507
+ await import('file:///' + tempFile.replace(/\\/g, '/'));
508
+ } finally {
509
+ try {
510
+ const { unlinkSync } = await import('fs');
511
+ unlinkSync(tempFile);
512
+ } catch {}
513
+ }
514
+ } catch (err) {
515
+ console.error(`\n${err.message}`);
516
+ if (process.env.NAIDE_DEBUG) console.error(err.stack);
517
+ process.exit(1);
518
+ }
519
+ }
@@ -0,0 +1,21 @@
1
+ # AI-powered API
2
+ # Set AI_KEY or OPENAI_API_KEY env var
3
+
4
+ server app port 3000:
5
+ cors "*"
6
+
7
+ post "/api/ask" (req, res):
8
+ str answer = await ai.ask(req.body.prompt)
9
+ ret {answer}
10
+
11
+ post "/api/summarize" (req, res):
12
+ str summary = await ai.ask("Summarize this text concisely: {req.body.text}")
13
+ ret {summary}
14
+
15
+ post "/api/extract" (req, res):
16
+ map data = await ai.json("Extract name, email, and phone from: {req.body.text}", {name: "string", email: "string", phone: "string"})
17
+ ret data
18
+
19
+ post "/api/chat" (req, res):
20
+ str reply = await ai.chat(req.body.messages)
21
+ ret {reply}
@@ -0,0 +1,21 @@
1
+ -- AI-powered API (NAIDE-X)
2
+ -- Set AI_KEY or OPENAI_API_KEY env var
3
+
4
+ $app:3000
5
+ cors "*"
6
+
7
+ P"/api/ask"(req,res)
8
+ s:answer=~ai.ask(req.body.prompt)
9
+ >{answer}
10
+
11
+ P"/api/summarize"(req,res)
12
+ s:summary=~ai.ask("Summarize: {req.body.text}")
13
+ >{summary}
14
+
15
+ P"/api/extract"(req,res)
16
+ m:data=~ai.json("Extract name, email, phone: {req.body.text}",{name:"string",email:"string",phone:"string"})
17
+ >data
18
+
19
+ P"/api/chat"(req,res)
20
+ s:reply=~ai.chat(req.body.messages)
21
+ >{reply}
@@ -0,0 +1,50 @@
1
+ # NAIDE - Async/Await & エラーハンドリング
2
+ # 非同期処理がシンプル
3
+
4
+ # 非同期関数
5
+ fn.async fetchData(str url) -> any:
6
+ any response = await fetch(url)
7
+ any data = await response.json()
8
+ ret data
9
+
10
+ # パイプで変換チェーン
11
+ fn.async getTopUsers() -> list:
12
+ any data = await fetchData("https://jsonplaceholder.typicode.com/users")
13
+ list result = data
14
+ |> filter((u) => u.name.length > 5)
15
+ |> map((u) => {name: u.name, email: u.email})
16
+ ret result
17
+
18
+ # エラーハンドリング
19
+ fn.async safeFetch(str url) -> map:
20
+ try:
21
+ any data = await fetchData(url)
22
+ ret {ok: true, data: data}
23
+ fail e:
24
+ log.error "Fetch failed: {e.message}"
25
+ ret {ok: false, error: e.message}
26
+
27
+ # await.all で並列実行
28
+ fn.async loadDashboard() -> map:
29
+ list urls = [
30
+ "https://jsonplaceholder.typicode.com/users",
31
+ "https://jsonplaceholder.typicode.com/posts",
32
+ "https://jsonplaceholder.typicode.com/todos"
33
+ ]
34
+ list results = await.all urls.map((url) => fetchData(url))
35
+ ret {
36
+ users: results[0],
37
+ posts: results[1],
38
+ todos: results[2]
39
+ }
40
+
41
+ # 実行
42
+ fn.async main():
43
+ log "Fetching data..."
44
+ map dashboard = await safeFetch("https://jsonplaceholder.typicode.com/users")
45
+ if dashboard.ok:
46
+ log "Got {dashboard.data.length} items"
47
+ else:
48
+ log.error dashboard.error
49
+
50
+ main()
@@ -0,0 +1,40 @@
1
+ -- NAIDE-X async/await
2
+
3
+ ~f fetchData(s:url)a
4
+ a:res=~fetch(url)
5
+ a:data=~res.json()
6
+ >data
7
+
8
+ ~f getTopUsers()l
9
+ a:data=~fetchData("https://jsonplaceholder.typicode.com/users")
10
+ l:result=data
11
+ |>filter((u)=>u.name.length>5)
12
+ |>map((u)=>({name:u.name,email:u.email}))
13
+ >result
14
+
15
+ ~f safeFetch(s:url)m
16
+ !
17
+ a:data=~fetchData(url)
18
+ >{ok:true,data:data}
19
+ !!e
20
+ log.e"Fetch failed: {e.message}"
21
+ >{ok:false,error:e.message}
22
+
23
+ ~f loadDash()m
24
+ l:urls=[
25
+ "https://jsonplaceholder.typicode.com/users",
26
+ "https://jsonplaceholder.typicode.com/posts",
27
+ "https://jsonplaceholder.typicode.com/todos"
28
+ ]
29
+ l:results=~~urls.map((url)=>fetchData(url))
30
+ >{users:results[0],posts:results[1],todos:results[2]}
31
+
32
+ ~f main()
33
+ log"Fetching data..."
34
+ m:dash=~safeFetch("https://jsonplaceholder.typicode.com/users")
35
+ ?dash.ok
36
+ log"Got {dash.data.length} items"
37
+ :
38
+ log.e dash.error
39
+
40
+ main()