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/SPEC-X.nx ADDED
@@ -0,0 +1,276 @@
1
+ -- ============================================
2
+ -- NAIDE-X Language Specification
3
+ -- ~80% fewer tokens than JavaScript
4
+ -- AI-only readability. Maximum generation speed.
5
+ -- ============================================
6
+ -- Rule: first char of line = intent
7
+ -- > return ? if | elif : else
8
+ -- @ loop * while ! try !! catch !!! ensure
9
+ -- $ server ^ model < import % match X patch
10
+ -- f func ~f async + export
11
+ -- s:i:n:b:l:m:a: typed vars
12
+ -- ~ await ~~ await.all
13
+ -- ============================================
14
+
15
+ -- Types: s=str i=int n=num b=bool l=list m=map a=any
16
+ s:name="hello"
17
+ i:count=42
18
+ n:price=9.99
19
+ b:active=true
20
+ l:items=[1,2,3]
21
+ m:cfg={host:"localhost",port:3000}
22
+ a:data=null
23
+
24
+ -- Mutable: ~ prefix
25
+ ~i:counter=0
26
+ ~s:label="init"
27
+
28
+ -- String interpolation: "{expr}" (double quotes)
29
+ s:greet="Hello {name}, count is {count}"
30
+
31
+ -- Functions: f name(TYPE:param,...)RETTYPE
32
+ f add(i:a,i:b)i
33
+ >a+b
34
+
35
+ f sayHi(s:who)
36
+ log"Hi {who}"
37
+
38
+ f greet2(s:name,s:prefix="Hello")
39
+ log"{prefix}, {name}!"
40
+
41
+ -- Async: ~f
42
+ ~f fetchUser(s:id)m
43
+ a:res=~fetch("/api/users/{id}")
44
+ a:data=~res.json()
45
+ >data
46
+
47
+ -- Return: >
48
+ -- Return with status: >.s CODE BODY
49
+
50
+ -- If/elif/else: ? | :
51
+ ?count>10
52
+ log"many"
53
+ |count>5
54
+ log"some"
55
+ :
56
+ log"few"
57
+
58
+ -- Inline ternary (same as NAIDE v1)
59
+ -- s:size=if count>10 then "big" else "small"
60
+
61
+ -- Each: @var<collection
62
+ @item<items
63
+ log item
64
+
65
+ -- Each with key: @key,val<collection
66
+ @k,v<cfg
67
+ log"{k}: {v}"
68
+
69
+ -- For range: @var<start..end
70
+ @i<0..10
71
+ log i
72
+
73
+ -- While: *condition
74
+ *active
75
+ log"running"
76
+ active=false
77
+
78
+ -- Match: %value
79
+ s:status="ok"
80
+ %status
81
+ "ok": log "success"
82
+ "error": log "failed"
83
+ _: log "unknown"
84
+
85
+ -- Try/catch/ensure: ! / !!var / !!!
86
+ ~f safe(s:url)m
87
+ !
88
+ a:data=~fetch(url)
89
+ >{ok:true,data:data}
90
+ !!e
91
+ log.e"fail: {e.message}"
92
+ >{ok:false,error:e.message}
93
+ !!!
94
+ log"request done"
95
+
96
+ -- typeof / instanceof
97
+ ?typeof x=="string"
98
+ log"is string"
99
+ ?err instanceof TypeError
100
+ log"type error"
101
+
102
+ -- Pipe: |> (same)
103
+ l:result=[1,2,3,4,5]
104
+ |>filter((x)=>x>2)
105
+ |>map((x)=>x*10)
106
+
107
+ -- Model: ^Name
108
+ ^User
109
+ s:name
110
+ s:email
111
+ i:age=0
112
+ f greet()s
113
+ >"Hi, I'm {self.name}"
114
+ ~f save()
115
+ log"Saving {self.name}..."
116
+
117
+ -- Inheritance: ^Child<Parent
118
+ ^Admin<User
119
+ s:role="admin"
120
+ f perms()l
121
+ >["read","write","delete"]
122
+
123
+ -- DB persistence: db "path/"
124
+ db "data/"
125
+
126
+ -- SQL database: db.sql "driver" "connection"
127
+ -- db.sql "sqlite" "app.db"
128
+ -- db.sql "postgres" "postgresql://localhost/mydb"
129
+
130
+ -- Environment variables
131
+ env:
132
+ PORT int default(3000)
133
+ JWT_SECRET str required
134
+
135
+ -- Schema: types + modifiers
136
+ schema User:
137
+ id auto
138
+ name str required min(2) max(50)
139
+ email str required email unique
140
+ role enum("admin","user") default("user")
141
+ joined timestamp auto
142
+
143
+ -- Server with high-level features
144
+ $app:PORT
145
+ cors "*"
146
+ auth JWT_SECRET:
147
+ protect "/api/*"
148
+ public "/api/auth/*"
149
+ limit "/api/*" 100 "1m"
150
+ static "/public"
151
+ crud "/api/users" User
152
+ cookie
153
+ session JWT_SECRET
154
+ cache "/api/*" "5m"
155
+ view "./views"
156
+ sse "/events"
157
+ upload "/api/upload" "avatar" (req,res):
158
+ >{file:req.file.filename}
159
+ -- Route middleware: [mid1, mid2]
160
+ G"/admin"[authCheck](req,res)
161
+ >{admin:true}
162
+ P"/api/secure"[auth,logger](req,res)
163
+ >req.body
164
+ group "/api/v1":
165
+ G"/status"
166
+ >{version:"1.0"}
167
+ G"/"
168
+ >.h "<h1>Welcome</h1>"
169
+ P"/api/auth/register"(req,res)
170
+ s:hashed=hash(req.body.password)
171
+ user=UserStore.create({...req.body,password:hashed})
172
+ token=auth.sign({id:user.id})
173
+ >{token,user}
174
+ P"/api/auth/login"(req,res)
175
+ user=UserStore.where({email:req.body.email})[0]
176
+ ?not user
177
+ >.s 401 {error:"Invalid credentials"}
178
+ ?not verify(req.body.password,user.password)
179
+ >.s 401 {error:"Invalid credentials"}
180
+ token=sign({id:user.id})
181
+ >{token}
182
+ ws "/chat":
183
+ on "connect":
184
+ send({type:"welcome"})
185
+ on "message" (data):
186
+ broadcast(data)
187
+
188
+ -- Error handler
189
+ error (err, req, res):
190
+ log.e err.message
191
+ >.s 500 {error:"Internal error"}
192
+
193
+ -- HTTP client (auto-imported)
194
+ -- api.get(url) api.post(url,body) api.put(url,body) api.del(url) api.raw(url,opts)
195
+
196
+ -- Return helpers
197
+ -- >expr → JSON
198
+ -- >.s CODE expr → status code
199
+ -- >.r "/path" → redirect
200
+ -- >.h "<html>" → HTML
201
+ -- >.t "text" → plain text
202
+ -- >.f "/file" → send file
203
+ -- >.d "/file" → download
204
+ -- >.v "tmpl" {} → render template
205
+
206
+ -- Built-in functions (auto-imported)
207
+ -- uuid() → UUID
208
+ -- hash("password") → scrypt hash
209
+ -- verify("pw",hashed) → verify
210
+ -- sign({id:1}) → JWT (uses auth secret)
211
+ -- sign({id:1},"secret") → JWT (explicit)
212
+
213
+ -- Validate: auto-validate POST/PUT/PATCH bodies
214
+ -- validate "/api/users" User
215
+
216
+ -- Test (node:test)
217
+ test "math":
218
+ assert 1+1==2
219
+ assert 2*3==6
220
+
221
+ -- Queue (async job queue)
222
+ queue jobs:
223
+ job "notify" (data):
224
+ log data.msg
225
+
226
+ -- OpenAPI: auto-generate spec from schemas
227
+ -- openapi "/docs"
228
+
229
+ -- AI / LLM integration (auto-imported, zero-dep)
230
+ -- s:answer=~ai.ask("Explain NAIDE")
231
+ -- m:result=~ai.json("List 3 colors",{colors:["string"]})
232
+ -- s:reply=~ai.chat(msgs)
233
+ -- s:a=~ai.ask("hi",{model:"gpt-4o",maxTokens:100})
234
+ -- Streaming: ~f main(): @chunk<~ai.stream("poem") ...
235
+ -- Embed: l:vec=~ai.embed("hello")
236
+ -- Similarity: n:score=ai.similarity(a,b)
237
+
238
+ -- Prompt template
239
+ -- prompt summarize {lang:"en"}:
240
+ -- "Summarize in {lang}: {text}"
241
+
242
+ -- Inter-file import (.naide/.nx → .mjs auto-rewrite)
243
+ -- <{handler}"./routes.naide"
244
+
245
+ -- Scheduled tasks
246
+ every "5m":
247
+ log"cleanup"
248
+
249
+ -- Event watch
250
+ watch User.create (event):
251
+ log"new: {event.data.name}"
252
+
253
+ -- Import: <module or <{names}"module"
254
+ -- <express
255
+ -- <{readFile,writeFile}"fs/promises"
256
+
257
+ -- Export: + prefix
258
+ +f helper()s
259
+ >"exported"
260
+ +s:VER="1.0.0"
261
+
262
+ -- Log: log, log.e, log.w, log.i, log.d
263
+ log"info"
264
+ log.e"error"
265
+ log.w"warning"
266
+ log.i"info level"
267
+ log.d"debug level"
268
+
269
+ -- Null safe: ?. and ?? (same)
270
+ a:val=data?.nested?.value??"default"
271
+
272
+ -- Await all: ~~[expr1,expr2]
273
+
274
+ -- Spread: ...
275
+ l:combined=[...items,4,5,6]
276
+ m:merged={...cfg,debug:true}
package/SPEC.naide ADDED
@@ -0,0 +1,431 @@
1
+ # ============================================
2
+ # NAIDE Language Specification
3
+ # Node AI Development Environment
4
+ # ============================================
5
+ # AIが最速でコード生成できるように設計された言語
6
+ #
7
+ # 設計原則:
8
+ # 1. 1つの書き方しかない (曖昧さゼロ)
9
+ # 2. キーワード駆動 (行頭で意図が確定)
10
+ # 3. 最小トークン数 (生成量削減 = 高速)
11
+ # 4. よく使うパターンが組み込み
12
+ # 5. インデントベース (波括弧不要)
13
+ # ============================================
14
+
15
+
16
+ # ---- 変数宣言 ----
17
+ # 型名 変数名 = 値 (不変 const)
18
+ str name = "hello"
19
+ int count = 42
20
+ num price = 9.99
21
+ bool active = true
22
+ list items = [1, 2, 3]
23
+ map config = {host: "localhost", port: 3000}
24
+ any data = null
25
+
26
+ # 可変変数 (let)
27
+ mut int counter = 0
28
+ mut str label = "initial"
29
+
30
+
31
+ # ---- 文字列補間 ----
32
+ # ダブルクォートで {式} が自動展開
33
+ str greeting = "Hello {name}, count is {count}"
34
+
35
+
36
+ # ---- 関数 ----
37
+ # fn 名前(型 引数) -> 戻り型:
38
+ fn add(int a, int b) -> int:
39
+ ret a + b
40
+
41
+ # 戻り値なし
42
+ fn sayHi(str who):
43
+ log "Hi {who}"
44
+
45
+ # デフォルト引数
46
+ fn greet(str name, str prefix = "Hello"):
47
+ log "{prefix}, {name}!"
48
+
49
+ # 可変長引数
50
+ fn sum(...int nums) -> int:
51
+ mut int total = 0
52
+ each n in nums:
53
+ total += n
54
+ ret total
55
+
56
+
57
+ # ---- 非同期関数 ----
58
+ fn.async fetchUser(str id) -> map:
59
+ any res = await fetch("/api/users/{id}")
60
+ any data = await res.json()
61
+ ret data
62
+
63
+
64
+ # ---- 条件分岐 ----
65
+ if count > 10:
66
+ log "many"
67
+ elif count > 5:
68
+ log "some"
69
+ else:
70
+ log "few"
71
+
72
+ # インライン三項
73
+ str size = if count > 10 then "big" else "small"
74
+
75
+
76
+ # ---- ループ ----
77
+ # each: コレクション反復
78
+ each item in items:
79
+ log item
80
+
81
+ # each with key (Object.entries)
82
+ each key, val in config:
83
+ log "{key}: {val}"
84
+
85
+ # for: 範囲ループ
86
+ for i in 0..10:
87
+ log i
88
+
89
+ # while
90
+ while active:
91
+ log "running"
92
+ active = false
93
+
94
+
95
+ # ---- パターンマッチ ----
96
+ str status = "ok"
97
+ match status:
98
+ "ok": log "success"
99
+ "error": log "failed"
100
+ _: log "unknown"
101
+
102
+
103
+ # ---- エラーハンドリング ----
104
+ fn.async safeFetch(str url) -> map:
105
+ try:
106
+ any data = await fetch(url)
107
+ ret {ok: true, data: data}
108
+ fail e:
109
+ log.error e.message
110
+ ret {ok: false, error: e.message}
111
+ ensure:
112
+ log "request completed"
113
+
114
+ # try/ensure (finally) — fail ブロックなしでも使える
115
+ fn.async withCleanup():
116
+ any conn = null
117
+ try:
118
+ conn = await openConnection()
119
+ ret await conn.query("SELECT 1")
120
+ ensure:
121
+ if conn:
122
+ conn.close()
123
+
124
+
125
+ # ---- 型チェック ----
126
+ # typeof: 型を文字列で返す
127
+ if typeof data == "string":
128
+ log "data is a string"
129
+
130
+ # instanceof: インスタンス判定
131
+ if err instanceof TypeError:
132
+ log "type error occurred"
133
+
134
+
135
+ # ---- パイプ演算子 ----
136
+ # データ変換チェーンが読みやすい
137
+ list result = [1, 2, 3, 4, 5]
138
+ |> filter((x) => x > 2)
139
+ |> map((x) => x * 10)
140
+
141
+
142
+ # ---- クラス (model) ----
143
+ model User:
144
+ str name
145
+ str email
146
+ int age = 0
147
+
148
+ fn greet() -> str:
149
+ ret "Hi, I'm {self.name}"
150
+
151
+ fn.async save():
152
+ log "Saving {self.name}..."
153
+
154
+ # 継承
155
+ model Admin extends User:
156
+ str role = "admin"
157
+
158
+ fn permissions() -> list:
159
+ ret ["read", "write", "delete"]
160
+
161
+
162
+ # ---- データベース永続化 ----
163
+ # db ディレクトリパス → スキーマストアがJSONファイルに自動保存
164
+ db "data/"
165
+
166
+ # SQLデータベース — スキーマストアがSQLテーブルに自動保存
167
+ # db.sql "sqlite" "app.db" # SQLite (better-sqlite3)
168
+ # db.sql "postgres" "postgres://localhost/mydb" # PostgreSQL
169
+
170
+
171
+ # ---- 環境変数 ----
172
+ env:
173
+ PORT int default(3000)
174
+ JWT_SECRET str required
175
+ DB_URL str default("sqlite:data.db")
176
+
177
+
178
+ # ---- スキーマ定義 ----
179
+ # 型: str, int, num, bool, auto(UUID), timestamp, enum(...)
180
+ # 修飾: required, optional, min(n), max(n), email, url, unique, auto, default(val)
181
+ schema User:
182
+ id auto
183
+ name str required min(2) max(50)
184
+ email str required email unique
185
+ age int optional min(0) max(150)
186
+ role enum("admin", "user") default("user")
187
+ joined timestamp auto
188
+
189
+
190
+ # ---- サーバー定義 ----
191
+ server app port PORT:
192
+ # CORS
193
+ cors "*"
194
+
195
+ # JWT認証
196
+ auth JWT_SECRET:
197
+ protect "/api/*"
198
+ public "/api/auth/*"
199
+
200
+ # レート制限
201
+ limit "/api/*" 100 "1m"
202
+
203
+ # 静的ファイル配信
204
+ static "/public"
205
+
206
+ # CRUD自動生成 (ページネーション・検索・ソート付き)
207
+ crud "/api/users" User
208
+
209
+ # クッキーパーサー
210
+ cookie
211
+
212
+ # セッション管理 (cookie-based, ゼロ依存)
213
+ session JWT_SECRET
214
+
215
+ # レスポンスキャッシュ
216
+ cache "/api/*" "5m"
217
+
218
+ # テンプレートエンジン
219
+ view "./views"
220
+
221
+ # Server-Sent Events
222
+ sse "/events"
223
+
224
+ # ファイルアップロード (ゼロ依存)
225
+ upload "/api/upload" "avatar" (req, res):
226
+ ret {file: req.file.filename, size: req.file.size}
227
+
228
+ # 名前付きミドルウェア適用
229
+ # mid myMiddleware
230
+ # mid myMiddleware "/api"
231
+
232
+ # ルートミドルウェア (ルートごとにミドルウェア適用)
233
+ get "/admin" [authCheck] (req, res):
234
+ ret {admin: true}
235
+
236
+ post "/api/secure" [auth, logger] (req, res):
237
+ ret req.body
238
+
239
+ # ルートグループ
240
+ group "/api/v1":
241
+ get "/status":
242
+ ret {version: "1.0"}
243
+
244
+ # ルート
245
+ get "/":
246
+ ret.html "<h1>Welcome</h1>"
247
+
248
+ post "/api/auth/register" (req, res):
249
+ str hashed = hash(req.body.password)
250
+ user = UserStore.create({...req.body, password: hashed})
251
+ token = auth.sign({id: user.id})
252
+ ret {token, user}
253
+
254
+ post "/api/auth/login" (req, res):
255
+ user = UserStore.where({email: req.body.email})[0]
256
+ if not user:
257
+ ret.status 401 {error: "Invalid credentials"}
258
+ if not verify(req.body.password, user.password):
259
+ ret.status 401 {error: "Invalid credentials"}
260
+ token = sign({id: user.id})
261
+ ret {token}
262
+
263
+ # WebSocket
264
+ ws "/chat":
265
+ on "connect":
266
+ send({type: "welcome"})
267
+ on "message" (data):
268
+ broadcast(data)
269
+ on "close":
270
+ log "client left"
271
+
272
+ # エラーハンドラー
273
+ error (err, req, res):
274
+ log.error err.message
275
+ ret.status 500 {error: "Internal error"}
276
+
277
+
278
+ # ---- HTTPクライアント (自動インポート) ----
279
+ # any data = await api.get("https://api.example.com/users")
280
+ # any result = await api.post("https://api.example.com/users", {name: "test"})
281
+ # any result = await api.put(url, body)
282
+ # any result = await api.del(url)
283
+ # any raw = await api.raw(url, opts)
284
+
285
+
286
+ # ---- HTTPメソッド ----
287
+ # get, post, put, del, patch がサーバー内で使える
288
+ # patch "/api/users/:id" (req, res):
289
+ # ret {updated: true}
290
+
291
+
292
+ # ---- リクエストバリデーション ----
293
+ # validate パス スキーマ名 → POST/PUT/PATCHのボディをスキーマで自動検証
294
+ # server app port 3000:
295
+ # validate "/api/users" User
296
+
297
+
298
+ # ---- テスト (node:test ベース) ----
299
+ test "math operations":
300
+ assert 1 + 1 == 2
301
+ assert 10 - 3 == 7
302
+
303
+ test "string operations":
304
+ str name = "NAIDE"
305
+ assert name == "NAIDE"
306
+
307
+
308
+ # ---- ジョブキュー (インメモリ非同期) ----
309
+ queue jobs:
310
+ job "sendEmail" (data):
311
+ log "sending to {data.to}"
312
+ job "resize" (data):
313
+ log "resizing {data.path}"
314
+
315
+
316
+ # ---- OpenAPI 自動生成 ----
317
+ # server app port 3000:
318
+ # openapi "/docs" # スキーマからOpenAPI仕様を自動生成して配信
319
+
320
+
321
+ # ---- レスポンスヘルパー ----
322
+ # ret {data} → JSON応答
323
+ # ret.status 404 {error} → ステータスコード付き
324
+ # ret.redirect "/login" → リダイレクト
325
+ # ret.redirect 301 "/new" → ステータス付きリダイレクト
326
+ # ret.html "<h1>Hi</h1>" → HTML応答
327
+ # ret.text "pong" → テキスト応答
328
+ # ret.file "/path/to/file" → ファイル送信
329
+ # ret.download "/file.zip" → ファイルダウンロード
330
+ # ret.download "/file" "name" → 名前付きダウンロード
331
+ # ret.render "template" {data} → テンプレート描画
332
+
333
+
334
+ # ---- 組み込み関数 (自動インポート) ----
335
+ # str id = uuid() → UUID生成
336
+ # str h = hash("password") → パスワードハッシュ (scrypt)
337
+ # bool ok = verify("password", h) → パスワード検証
338
+ # str token = sign({id: 1}) → JWT署名 (auth秘密鍵を自動使用)
339
+ # str token = sign({id: 1}, "secret") → JWT署名 (明示的秘密鍵)
340
+
341
+
342
+ # ---- AI / LLM 統合 (ゼロ依存、Node 18+ fetch) ----
343
+ # APIキー: AI_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY のいずれかを環境変数に設定
344
+ # プロバイダー自動判定: sk-ant-* → Anthropic、それ以外 → OpenAI互換
345
+
346
+ # シンプルなプロンプト
347
+ # str answer = await ai.ask("Explain NAIDE")
348
+
349
+ # 構造化JSON出力
350
+ # map result = await ai.json("List 3 colors", {colors: ["string"]})
351
+
352
+ # マルチターンチャット
353
+ # list msgs = [{role: "user", content: "Hi"}]
354
+ # str reply = await ai.chat(msgs)
355
+
356
+ # オプション付き
357
+ # str answer = await ai.ask("hello", {model: "gpt-4o", maxTokens: 100})
358
+
359
+ # サーバールート内で使用
360
+ # server app port 3000:
361
+ # post "/api/ask" (req, res):
362
+ # str answer = await ai.ask(req.body.prompt)
363
+ # ret {answer}
364
+
365
+ # ストリーミング (SSEリアルタイム応答)
366
+ # each chunk in await ai.stream("Write a poem"):
367
+ # log chunk
368
+
369
+ # エンベディング (ベクトル生成)
370
+ # list vec = await ai.embed("hello world")
371
+ # list vecs = await ai.embed(["hello", "world"])
372
+
373
+ # コサイン類似度
374
+ # num score = ai.similarity(vec1, vec2)
375
+
376
+
377
+ # ---- プロンプトテンプレート ----
378
+ # 再利用可能なプロンプト定義
379
+ prompt summarize {lang: "en"}:
380
+ "Summarize in {lang}:"
381
+ "{text}"
382
+
383
+ # 使用例:
384
+ # str p = summarize({text: "hello world"})
385
+ # str answer = await ai.ask(p)
386
+
387
+
388
+ # ---- スケジュールタスク ----
389
+ every "5m":
390
+ log "cleanup running"
391
+
392
+
393
+ # ---- イベント監視 ----
394
+ watch User.create (event):
395
+ log "new user: {event.data.name}"
396
+
397
+
398
+ # ---- インポート ----
399
+ # use モジュール名
400
+ # use {名前1, 名前2} from "モジュール"
401
+ # use モジュール from "パッケージ"
402
+ # use モジュール as 別名
403
+ # use {handler} from "./routes.naide" # NAIDEファイル間インポート (.mjs に自動変換)
404
+
405
+
406
+ # ---- ログ ----
407
+ log "info message"
408
+ log.error "error message"
409
+ log.warn "warning"
410
+ log.info "info level"
411
+ log.debug "debug level"
412
+
413
+
414
+ # ---- 公開 (export) ----
415
+ pub fn helper() -> str:
416
+ ret "exported"
417
+
418
+ pub str VERSION = "1.0.0"
419
+
420
+
421
+ # ---- null安全 ----
422
+ any val = data?.nested?.value ?? "default"
423
+
424
+
425
+ # ---- await.all (Promise.all) ----
426
+ # list results = await.all [expr1, expr2, expr3]
427
+
428
+
429
+ # ---- スプレッド ----
430
+ list combined = [...items, 4, 5, 6]
431
+ map merged = {...config, debug: true}