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
@@ -0,0 +1,851 @@
1
+ "use strict";
2
+ /* --------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ * ------------------------------------------------------------------------------------------ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.NotebookDocumentSyncFeature = void 0;
8
+ const vscode = require("vscode");
9
+ const minimatch = require("minimatch");
10
+ const proto = require("vscode-languageserver-protocol");
11
+ const UUID = require("./utils/uuid");
12
+ const Is = require("./utils/is");
13
+ function ensure(target, key) {
14
+ if (target[key] === void 0) {
15
+ target[key] = {};
16
+ }
17
+ return target[key];
18
+ }
19
+ var Converter;
20
+ (function (Converter) {
21
+ let c2p;
22
+ (function (c2p) {
23
+ function asVersionedNotebookDocumentIdentifier(notebookDocument, base) {
24
+ return {
25
+ version: notebookDocument.version,
26
+ uri: base.asUri(notebookDocument.uri)
27
+ };
28
+ }
29
+ c2p.asVersionedNotebookDocumentIdentifier = asVersionedNotebookDocumentIdentifier;
30
+ function asNotebookDocument(notebookDocument, cells, base) {
31
+ const result = proto.NotebookDocument.create(base.asUri(notebookDocument.uri), notebookDocument.notebookType, notebookDocument.version, asNotebookCells(cells, base));
32
+ if (Object.keys(notebookDocument.metadata).length > 0) {
33
+ result.metadata = asMetadata(notebookDocument.metadata);
34
+ }
35
+ return result;
36
+ }
37
+ c2p.asNotebookDocument = asNotebookDocument;
38
+ function asNotebookCells(cells, base) {
39
+ return cells.map(cell => asNotebookCell(cell, base));
40
+ }
41
+ c2p.asNotebookCells = asNotebookCells;
42
+ function asMetadata(metadata) {
43
+ const seen = new Set();
44
+ return deepCopy(seen, metadata);
45
+ }
46
+ c2p.asMetadata = asMetadata;
47
+ function asNotebookCell(cell, base) {
48
+ const result = proto.NotebookCell.create(asNotebookCellKind(cell.kind), base.asUri(cell.document.uri));
49
+ if (Object.keys(cell.metadata).length > 0) {
50
+ result.metadata = asMetadata(cell.metadata);
51
+ }
52
+ if (cell.executionSummary !== undefined && (Is.number(cell.executionSummary.executionOrder) && Is.boolean(cell.executionSummary.success))) {
53
+ result.executionSummary = {
54
+ executionOrder: cell.executionSummary.executionOrder,
55
+ success: cell.executionSummary.success
56
+ };
57
+ }
58
+ return result;
59
+ }
60
+ c2p.asNotebookCell = asNotebookCell;
61
+ function asNotebookCellKind(kind) {
62
+ switch (kind) {
63
+ case vscode.NotebookCellKind.Markup:
64
+ return proto.NotebookCellKind.Markup;
65
+ case vscode.NotebookCellKind.Code:
66
+ return proto.NotebookCellKind.Code;
67
+ }
68
+ }
69
+ function deepCopy(seen, value) {
70
+ if (seen.has(value)) {
71
+ throw new Error(`Can't deep copy cyclic structures.`);
72
+ }
73
+ if (Array.isArray(value)) {
74
+ const result = [];
75
+ for (const elem of value) {
76
+ if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {
77
+ result.push(deepCopy(seen, elem));
78
+ }
79
+ else {
80
+ if (elem instanceof RegExp) {
81
+ throw new Error(`Can't transfer regular expressions to the server`);
82
+ }
83
+ result.push(elem);
84
+ }
85
+ }
86
+ return result;
87
+ }
88
+ else {
89
+ const props = Object.keys(value);
90
+ const result = Object.create(null);
91
+ for (const prop of props) {
92
+ const elem = value[prop];
93
+ if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {
94
+ result[prop] = deepCopy(seen, elem);
95
+ }
96
+ else {
97
+ if (elem instanceof RegExp) {
98
+ throw new Error(`Can't transfer regular expressions to the server`);
99
+ }
100
+ result[prop] = elem;
101
+ }
102
+ }
103
+ return result;
104
+ }
105
+ }
106
+ function asTextContentChange(event, base) {
107
+ const params = base.asChangeTextDocumentParams(event, event.document.uri, event.document.version);
108
+ return { document: params.textDocument, changes: params.contentChanges };
109
+ }
110
+ c2p.asTextContentChange = asTextContentChange;
111
+ function asNotebookDocumentChangeEvent(event, base) {
112
+ const result = Object.create(null);
113
+ if (event.metadata) {
114
+ result.metadata = Converter.c2p.asMetadata(event.metadata);
115
+ }
116
+ if (event.cells !== undefined) {
117
+ const cells = Object.create(null);
118
+ const changedCells = event.cells;
119
+ if (changedCells.structure) {
120
+ cells.structure = {
121
+ array: {
122
+ start: changedCells.structure.array.start,
123
+ deleteCount: changedCells.structure.array.deleteCount,
124
+ cells: changedCells.structure.array.cells !== undefined ? changedCells.structure.array.cells.map(cell => Converter.c2p.asNotebookCell(cell, base)) : undefined
125
+ },
126
+ didOpen: changedCells.structure.didOpen !== undefined
127
+ ? changedCells.structure.didOpen.map(cell => base.asOpenTextDocumentParams(cell.document).textDocument)
128
+ : undefined,
129
+ didClose: changedCells.structure.didClose !== undefined
130
+ ? changedCells.structure.didClose.map(cell => base.asCloseTextDocumentParams(cell.document).textDocument)
131
+ : undefined
132
+ };
133
+ }
134
+ if (changedCells.data !== undefined) {
135
+ cells.data = changedCells.data.map(cell => Converter.c2p.asNotebookCell(cell, base));
136
+ }
137
+ if (changedCells.textContent !== undefined) {
138
+ cells.textContent = changedCells.textContent.map(event => Converter.c2p.asTextContentChange(event, base));
139
+ }
140
+ if (Object.keys(cells).length > 0) {
141
+ result.cells = cells;
142
+ }
143
+ }
144
+ return result;
145
+ }
146
+ c2p.asNotebookDocumentChangeEvent = asNotebookDocumentChangeEvent;
147
+ })(c2p = Converter.c2p || (Converter.c2p = {}));
148
+ })(Converter || (Converter = {}));
149
+ var $NotebookCell;
150
+ (function ($NotebookCell) {
151
+ function computeDiff(originalCells, modifiedCells, compareMetadata) {
152
+ const originalLength = originalCells.length;
153
+ const modifiedLength = modifiedCells.length;
154
+ let startIndex = 0;
155
+ while (startIndex < modifiedLength && startIndex < originalLength && equals(originalCells[startIndex], modifiedCells[startIndex], compareMetadata)) {
156
+ startIndex++;
157
+ }
158
+ if (startIndex < modifiedLength && startIndex < originalLength) {
159
+ let originalEndIndex = originalLength - 1;
160
+ let modifiedEndIndex = modifiedLength - 1;
161
+ while (originalEndIndex >= 0 && modifiedEndIndex >= 0 && equals(originalCells[originalEndIndex], modifiedCells[modifiedEndIndex], compareMetadata)) {
162
+ originalEndIndex--;
163
+ modifiedEndIndex--;
164
+ }
165
+ const deleteCount = (originalEndIndex + 1) - startIndex;
166
+ const newCells = startIndex === modifiedEndIndex + 1 ? undefined : modifiedCells.slice(startIndex, modifiedEndIndex + 1);
167
+ return newCells !== undefined ? { start: startIndex, deleteCount, cells: newCells } : { start: startIndex, deleteCount };
168
+ }
169
+ else if (startIndex < modifiedLength) {
170
+ return { start: startIndex, deleteCount: 0, cells: modifiedCells.slice(startIndex) };
171
+ }
172
+ else if (startIndex < originalLength) {
173
+ return { start: startIndex, deleteCount: originalLength - startIndex };
174
+ }
175
+ else {
176
+ // The two arrays are the same.
177
+ return undefined;
178
+ }
179
+ }
180
+ $NotebookCell.computeDiff = computeDiff;
181
+ /**
182
+ * We only sync kind, document, execution and metadata to the server. So we only need to compare those.
183
+ */
184
+ function equals(one, other, compareMetaData = true) {
185
+ if (one.kind !== other.kind || one.document.uri.toString() !== other.document.uri.toString() || one.document.languageId !== other.document.languageId ||
186
+ !equalsExecution(one.executionSummary, other.executionSummary)) {
187
+ return false;
188
+ }
189
+ return !compareMetaData || (compareMetaData && equalsMetadata(one.metadata, other.metadata));
190
+ }
191
+ function equalsExecution(one, other) {
192
+ if (one === other) {
193
+ return true;
194
+ }
195
+ if (one === undefined || other === undefined) {
196
+ return false;
197
+ }
198
+ return one.executionOrder === other.executionOrder && one.success === other.success && equalsTiming(one.timing, other.timing);
199
+ }
200
+ function equalsTiming(one, other) {
201
+ if (one === other) {
202
+ return true;
203
+ }
204
+ if (one === undefined || other === undefined) {
205
+ return false;
206
+ }
207
+ return one.startTime === other.startTime && one.endTime === other.endTime;
208
+ }
209
+ function equalsMetadata(one, other) {
210
+ if (one === other) {
211
+ return true;
212
+ }
213
+ if (one === null || one === undefined || other === null || other === undefined) {
214
+ return false;
215
+ }
216
+ if (typeof one !== typeof other) {
217
+ return false;
218
+ }
219
+ if (typeof one !== 'object') {
220
+ return false;
221
+ }
222
+ const oneArray = Array.isArray(one);
223
+ const otherArray = Array.isArray(other);
224
+ if (oneArray !== otherArray) {
225
+ return false;
226
+ }
227
+ if (oneArray && otherArray) {
228
+ if (one.length !== other.length) {
229
+ return false;
230
+ }
231
+ for (let i = 0; i < one.length; i++) {
232
+ if (!equalsMetadata(one[i], other[i])) {
233
+ return false;
234
+ }
235
+ }
236
+ }
237
+ if (isObjectLiteral(one) && isObjectLiteral(other)) {
238
+ const oneKeys = Object.keys(one);
239
+ const otherKeys = Object.keys(other);
240
+ if (oneKeys.length !== otherKeys.length) {
241
+ return false;
242
+ }
243
+ oneKeys.sort();
244
+ otherKeys.sort();
245
+ if (!equalsMetadata(oneKeys, otherKeys)) {
246
+ return false;
247
+ }
248
+ for (let i = 0; i < oneKeys.length; i++) {
249
+ const prop = oneKeys[i];
250
+ if (!equalsMetadata(one[prop], other[prop])) {
251
+ return false;
252
+ }
253
+ }
254
+ return true;
255
+ }
256
+ return false;
257
+ }
258
+ function isObjectLiteral(value) {
259
+ return value !== null && typeof value === 'object';
260
+ }
261
+ $NotebookCell.isObjectLiteral = isObjectLiteral;
262
+ })($NotebookCell || ($NotebookCell = {}));
263
+ var $NotebookDocumentFilter;
264
+ (function ($NotebookDocumentFilter) {
265
+ function matchNotebook(filter, notebookDocument) {
266
+ if (typeof filter === 'string') {
267
+ return filter === '*' || notebookDocument.notebookType === filter;
268
+ }
269
+ if (filter.notebookType !== undefined && filter.notebookType !== '*' && notebookDocument.notebookType !== filter.notebookType) {
270
+ return false;
271
+ }
272
+ const uri = notebookDocument.uri;
273
+ if (filter.scheme !== undefined && filter.scheme !== '*' && uri.scheme !== filter.scheme) {
274
+ return false;
275
+ }
276
+ if (filter.pattern !== undefined) {
277
+ const matcher = new minimatch.Minimatch(filter.pattern, { noext: true });
278
+ if (!matcher.makeRe()) {
279
+ return false;
280
+ }
281
+ if (!matcher.match(uri.fsPath)) {
282
+ return false;
283
+ }
284
+ }
285
+ return true;
286
+ }
287
+ $NotebookDocumentFilter.matchNotebook = matchNotebook;
288
+ })($NotebookDocumentFilter || ($NotebookDocumentFilter = {}));
289
+ var $NotebookDocumentSyncOptions;
290
+ (function ($NotebookDocumentSyncOptions) {
291
+ function asDocumentSelector(options) {
292
+ const selector = options.notebookSelector;
293
+ const result = [];
294
+ for (const element of selector) {
295
+ const notebookType = (typeof element.notebook === 'string' ? element.notebook : element.notebook?.notebookType) ?? '*';
296
+ const scheme = (typeof element.notebook === 'string') ? undefined : element.notebook?.scheme;
297
+ const pattern = (typeof element.notebook === 'string') ? undefined : element.notebook?.pattern;
298
+ if (element.cells !== undefined) {
299
+ for (const cell of element.cells) {
300
+ result.push(asDocumentFilter(notebookType, scheme, pattern, cell.language));
301
+ }
302
+ }
303
+ else {
304
+ result.push(asDocumentFilter(notebookType, scheme, pattern, undefined));
305
+ }
306
+ }
307
+ return result;
308
+ }
309
+ $NotebookDocumentSyncOptions.asDocumentSelector = asDocumentSelector;
310
+ function asDocumentFilter(notebookType, scheme, pattern, language) {
311
+ return scheme === undefined && pattern === undefined
312
+ ? { notebook: notebookType, language }
313
+ : { notebook: { notebookType, scheme, pattern }, language };
314
+ }
315
+ })($NotebookDocumentSyncOptions || ($NotebookDocumentSyncOptions = {}));
316
+ var SyncInfo;
317
+ (function (SyncInfo) {
318
+ function create(cells) {
319
+ return {
320
+ cells,
321
+ uris: new Set(cells.map(cell => cell.document.uri.toString()))
322
+ };
323
+ }
324
+ SyncInfo.create = create;
325
+ })(SyncInfo || (SyncInfo = {}));
326
+ class NotebookDocumentSyncFeatureProvider {
327
+ constructor(client, options) {
328
+ this.client = client;
329
+ this.options = options;
330
+ this.notebookSyncInfo = new Map();
331
+ this.notebookDidOpen = new Set();
332
+ this.disposables = [];
333
+ this.selector = client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));
334
+ // open
335
+ vscode.workspace.onDidOpenNotebookDocument((notebookDocument) => {
336
+ this.notebookDidOpen.add(notebookDocument.uri.toString());
337
+ this.didOpen(notebookDocument);
338
+ }, undefined, this.disposables);
339
+ for (const notebookDocument of vscode.workspace.notebookDocuments) {
340
+ this.notebookDidOpen.add(notebookDocument.uri.toString());
341
+ this.didOpen(notebookDocument);
342
+ }
343
+ // Notebook document changed.
344
+ vscode.workspace.onDidChangeNotebookDocument(event => this.didChangeNotebookDocument(event), undefined, this.disposables);
345
+ //save
346
+ if (this.options.save === true) {
347
+ vscode.workspace.onDidSaveNotebookDocument(notebookDocument => this.didSave(notebookDocument), undefined, this.disposables);
348
+ }
349
+ // close
350
+ vscode.workspace.onDidCloseNotebookDocument((notebookDocument) => {
351
+ this.didClose(notebookDocument);
352
+ this.notebookDidOpen.delete(notebookDocument.uri.toString());
353
+ }, undefined, this.disposables);
354
+ }
355
+ getState() {
356
+ for (const notebook of vscode.workspace.notebookDocuments) {
357
+ const matchingCells = this.getMatchingCells(notebook);
358
+ if (matchingCells !== undefined) {
359
+ return { kind: 'document', id: '$internal', registrations: true, matches: true };
360
+ }
361
+ }
362
+ return { kind: 'document', id: '$internal', registrations: true, matches: false };
363
+ }
364
+ get mode() {
365
+ return 'notebook';
366
+ }
367
+ handles(textDocument) {
368
+ return vscode.languages.match(this.selector, textDocument) > 0;
369
+ }
370
+ didOpenNotebookCellTextDocument(notebookDocument, cell) {
371
+ if (vscode.languages.match(this.selector, cell.document) === 0) {
372
+ return;
373
+ }
374
+ if (!this.notebookDidOpen.has(notebookDocument.uri.toString())) {
375
+ // We have never received an open notification for the notebook document.
376
+ // VS Code guarantees that we first get cell document open and then
377
+ // notebook open. So simply wait for the notebook open.
378
+ return;
379
+ }
380
+ const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());
381
+ // In VS Code we receive a notebook open before a cell document open.
382
+ // The document and the cell is synced.
383
+ const cellMatches = this.cellMatches(notebookDocument, cell);
384
+ if (syncInfo !== undefined) {
385
+ const cellIsSynced = syncInfo.uris.has(cell.document.uri.toString());
386
+ if ((cellMatches && cellIsSynced) || (!cellMatches && !cellIsSynced)) {
387
+ // The cell doesn't match and was not synced or it matches and is synced.
388
+ // In both cases nothing to do.
389
+ //
390
+ // Note that if the language mode of a document changes we remove the
391
+ // cell and add it back to update the language mode on the server side.
392
+ return;
393
+ }
394
+ if (cellMatches) {
395
+ // don't use cells from above since there might be more matching cells in the notebook
396
+ // Since we had a matching cell above we will have matching cells now.
397
+ const matchingCells = this.getMatchingCells(notebookDocument);
398
+ if (matchingCells !== undefined) {
399
+ const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);
400
+ if (event !== undefined) {
401
+ this.doSendChange(event, matchingCells).catch(() => { });
402
+ }
403
+ }
404
+ }
405
+ }
406
+ else {
407
+ // No sync info. But we have a open event for the notebook document
408
+ // itself. If the cell matches then we need to send an open with
409
+ // exactly that cell.
410
+ if (cellMatches) {
411
+ this.doSendOpen(notebookDocument, [cell]).catch(() => { });
412
+ }
413
+ }
414
+ }
415
+ didChangeNotebookCellTextDocument(notebookDocument, event) {
416
+ // No match with the selector
417
+ if (vscode.languages.match(this.selector, event.document) === 0) {
418
+ return;
419
+ }
420
+ this.doSendChange({
421
+ notebook: notebookDocument,
422
+ cells: { textContent: [event] }
423
+ }, undefined).catch(() => { });
424
+ }
425
+ didCloseNotebookCellTextDocument(notebookDocument, cell) {
426
+ const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());
427
+ if (syncInfo === undefined) {
428
+ // The notebook document got never synced. So it doesn't matter if a cell
429
+ // document closes.
430
+ return;
431
+ }
432
+ const cellUri = cell.document.uri;
433
+ const index = syncInfo.cells.findIndex((item) => item.document.uri.toString() === cellUri.toString());
434
+ if (index === -1) {
435
+ // The cell never got synced or it got deleted and we now received the document
436
+ // close event.
437
+ return;
438
+ }
439
+ if (index === 0 && syncInfo.cells.length === 1) {
440
+ // The last cell. Close the notebook document in the server.
441
+ this.doSendClose(notebookDocument, syncInfo.cells).catch(() => { });
442
+ }
443
+ else {
444
+ const newCells = syncInfo.cells.slice();
445
+ const deleted = newCells.splice(index, 1);
446
+ this.doSendChange({
447
+ notebook: notebookDocument,
448
+ cells: {
449
+ structure: {
450
+ array: { start: index, deleteCount: 1 },
451
+ didClose: deleted
452
+ }
453
+ }
454
+ }, newCells).catch(() => { });
455
+ }
456
+ }
457
+ dispose() {
458
+ for (const disposable of this.disposables) {
459
+ disposable.dispose();
460
+ }
461
+ }
462
+ didOpen(notebookDocument, matchingCells = this.getMatchingCells(notebookDocument), syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {
463
+ if (syncInfo !== undefined) {
464
+ if (matchingCells !== undefined) {
465
+ const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);
466
+ if (event !== undefined) {
467
+ this.doSendChange(event, matchingCells).catch(() => { });
468
+ }
469
+ }
470
+ else {
471
+ this.doSendClose(notebookDocument, []).catch(() => { });
472
+ }
473
+ }
474
+ else {
475
+ // Check if we need to sync the notebook document.
476
+ if (matchingCells === undefined) {
477
+ return;
478
+ }
479
+ this.doSendOpen(notebookDocument, matchingCells).catch(() => { });
480
+ }
481
+ }
482
+ didChangeNotebookDocument(event) {
483
+ const notebookDocument = event.notebook;
484
+ const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());
485
+ if (syncInfo === undefined) {
486
+ // We have no changes to the cells. Since the notebook wasn't synced
487
+ // it will not be synced now.
488
+ if (event.contentChanges.length === 0) {
489
+ return;
490
+ }
491
+ // Check if we have new matching cells.
492
+ const cells = this.getMatchingCells(notebookDocument);
493
+ // No matching cells and the notebook never synced. So still no need
494
+ // to sync it.
495
+ if (cells === undefined) {
496
+ return;
497
+ }
498
+ // Open the notebook document and ignore the rest of the changes
499
+ // this the notebooks will be synced with the correct settings.
500
+ this.didOpen(notebookDocument, cells, syncInfo);
501
+ }
502
+ else {
503
+ // The notebook is synced. First check if we have no matching
504
+ // cells anymore and if so close the notebook
505
+ const cells = this.getMatchingCells(notebookDocument);
506
+ if (cells === undefined) {
507
+ this.didClose(notebookDocument, syncInfo);
508
+ return;
509
+ }
510
+ const newEvent = this.asNotebookDocumentChangeEvent(event.notebook, event, syncInfo, cells);
511
+ if (newEvent !== undefined) {
512
+ this.doSendChange(newEvent, cells).catch(() => { });
513
+ }
514
+ }
515
+ }
516
+ didSave(notebookDocument) {
517
+ const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());
518
+ if (syncInfo === undefined) {
519
+ return;
520
+ }
521
+ this.doSendSave(notebookDocument).catch(() => { });
522
+ }
523
+ didClose(notebookDocument, syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {
524
+ if (syncInfo === undefined) {
525
+ return;
526
+ }
527
+ const syncedCells = notebookDocument.getCells().filter(cell => syncInfo.uris.has(cell.document.uri.toString()));
528
+ this.doSendClose(notebookDocument, syncedCells).catch(() => { });
529
+ }
530
+ async sendDidOpenNotebookDocument(notebookDocument) {
531
+ const cells = this.getMatchingCells(notebookDocument);
532
+ if (cells === undefined) {
533
+ return;
534
+ }
535
+ return this.doSendOpen(notebookDocument, cells);
536
+ }
537
+ async doSendOpen(notebookDocument, cells) {
538
+ const send = async (notebookDocument, cells) => {
539
+ const nb = Converter.c2p.asNotebookDocument(notebookDocument, cells, this.client.code2ProtocolConverter);
540
+ const cellDocuments = cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentItem(cell.document));
541
+ try {
542
+ await this.client.sendNotification(proto.DidOpenNotebookDocumentNotification.type, {
543
+ notebookDocument: nb,
544
+ cellTextDocuments: cellDocuments
545
+ });
546
+ }
547
+ catch (error) {
548
+ this.client.error('Sending DidOpenNotebookDocumentNotification failed', error);
549
+ throw error;
550
+ }
551
+ };
552
+ const middleware = this.client.middleware?.notebooks;
553
+ this.notebookSyncInfo.set(notebookDocument.uri.toString(), SyncInfo.create(cells));
554
+ return middleware?.didOpen !== undefined ? middleware.didOpen(notebookDocument, cells, send) : send(notebookDocument, cells);
555
+ }
556
+ async sendDidChangeNotebookDocument(event) {
557
+ return this.doSendChange(event, undefined);
558
+ }
559
+ async doSendChange(event, cells = this.getMatchingCells(event.notebook)) {
560
+ const send = async (event) => {
561
+ try {
562
+ await this.client.sendNotification(proto.DidChangeNotebookDocumentNotification.type, {
563
+ notebookDocument: Converter.c2p.asVersionedNotebookDocumentIdentifier(event.notebook, this.client.code2ProtocolConverter),
564
+ change: Converter.c2p.asNotebookDocumentChangeEvent(event, this.client.code2ProtocolConverter)
565
+ });
566
+ }
567
+ catch (error) {
568
+ this.client.error('Sending DidChangeNotebookDocumentNotification failed', error);
569
+ throw error;
570
+ }
571
+ };
572
+ const middleware = this.client.middleware?.notebooks;
573
+ if (event.cells?.structure !== undefined) {
574
+ this.notebookSyncInfo.set(event.notebook.uri.toString(), SyncInfo.create(cells ?? []));
575
+ }
576
+ return middleware?.didChange !== undefined ? middleware?.didChange(event, send) : send(event);
577
+ }
578
+ async sendDidSaveNotebookDocument(notebookDocument) {
579
+ return this.doSendSave(notebookDocument);
580
+ }
581
+ async doSendSave(notebookDocument) {
582
+ const send = async (notebookDocument) => {
583
+ try {
584
+ await this.client.sendNotification(proto.DidSaveNotebookDocumentNotification.type, {
585
+ notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) }
586
+ });
587
+ }
588
+ catch (error) {
589
+ this.client.error('Sending DidSaveNotebookDocumentNotification failed', error);
590
+ throw error;
591
+ }
592
+ };
593
+ const middleware = this.client.middleware?.notebooks;
594
+ return middleware?.didSave !== undefined ? middleware.didSave(notebookDocument, send) : send(notebookDocument);
595
+ }
596
+ async sendDidCloseNotebookDocument(notebookDocument) {
597
+ return this.doSendClose(notebookDocument, this.getMatchingCells(notebookDocument) ?? []);
598
+ }
599
+ async doSendClose(notebookDocument, cells) {
600
+ const send = async (notebookDocument, cells) => {
601
+ try {
602
+ await this.client.sendNotification(proto.DidCloseNotebookDocumentNotification.type, {
603
+ notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) },
604
+ cellTextDocuments: cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentIdentifier(cell.document))
605
+ });
606
+ }
607
+ catch (error) {
608
+ this.client.error('Sending DidCloseNotebookDocumentNotification failed', error);
609
+ throw error;
610
+ }
611
+ };
612
+ const middleware = this.client.middleware?.notebooks;
613
+ this.notebookSyncInfo.delete(notebookDocument.uri.toString());
614
+ return middleware?.didClose !== undefined ? middleware.didClose(notebookDocument, cells, send) : send(notebookDocument, cells);
615
+ }
616
+ asNotebookDocumentChangeEvent(notebook, event, syncInfo, matchingCells) {
617
+ if (event !== undefined && event.notebook !== notebook) {
618
+ throw new Error('Notebook must be identical');
619
+ }
620
+ const result = {
621
+ notebook: notebook
622
+ };
623
+ if (event?.metadata !== undefined) {
624
+ result.metadata = Converter.c2p.asMetadata(event.metadata);
625
+ }
626
+ let matchingCellsSet;
627
+ if (event?.cellChanges !== undefined && event.cellChanges.length > 0) {
628
+ const data = [];
629
+ // Only consider the new matching cells.
630
+ matchingCellsSet = new Set(matchingCells.map(cell => cell.document.uri.toString()));
631
+ for (const cellChange of event.cellChanges) {
632
+ if (matchingCellsSet.has(cellChange.cell.document.uri.toString()) && (cellChange.executionSummary !== undefined || cellChange.metadata !== undefined)) {
633
+ data.push(cellChange.cell);
634
+ }
635
+ }
636
+ if (data.length > 0) {
637
+ result.cells = result.cells ?? {};
638
+ result.cells.data = data;
639
+ }
640
+ }
641
+ if (((event?.contentChanges !== undefined && event.contentChanges.length > 0) || event === undefined) && syncInfo !== undefined && matchingCells !== undefined) {
642
+ // We still have matching cells. Check if the cell changes
643
+ // affect the notebook on the server side.
644
+ const oldCells = syncInfo.cells;
645
+ const newCells = matchingCells;
646
+ // meta data changes are reported using on the cell itself. So we can ignore comparing
647
+ // it which has a positive effect on performance.
648
+ const diff = $NotebookCell.computeDiff(oldCells, newCells, false);
649
+ let addedCells;
650
+ let removedCells;
651
+ if (diff !== undefined) {
652
+ addedCells = diff.cells === undefined
653
+ ? new Map()
654
+ : new Map(diff.cells.map(cell => [cell.document.uri.toString(), cell]));
655
+ removedCells = diff.deleteCount === 0
656
+ ? new Map()
657
+ : new Map(oldCells.slice(diff.start, diff.start + diff.deleteCount).map(cell => [cell.document.uri.toString(), cell]));
658
+ // Remove the onces that got deleted and inserted again.
659
+ for (const key of Array.from(removedCells.keys())) {
660
+ if (addedCells.has(key)) {
661
+ removedCells.delete(key);
662
+ addedCells.delete(key);
663
+ }
664
+ }
665
+ result.cells = result.cells ?? {};
666
+ const didOpen = [];
667
+ const didClose = [];
668
+ if (addedCells.size > 0 || removedCells.size > 0) {
669
+ for (const cell of addedCells.values()) {
670
+ didOpen.push(cell);
671
+ }
672
+ for (const cell of removedCells.values()) {
673
+ didClose.push(cell);
674
+ }
675
+ }
676
+ result.cells.structure = {
677
+ array: diff,
678
+ didOpen,
679
+ didClose
680
+ };
681
+ }
682
+ }
683
+ // The notebook is a property as well.
684
+ return Object.keys(result).length > 1 ? result : undefined;
685
+ }
686
+ getMatchingCells(notebookDocument, cells = notebookDocument.getCells()) {
687
+ if (this.options.notebookSelector === undefined) {
688
+ return undefined;
689
+ }
690
+ for (const item of this.options.notebookSelector) {
691
+ if (item.notebook === undefined || $NotebookDocumentFilter.matchNotebook(item.notebook, notebookDocument)) {
692
+ const filtered = this.filterCells(notebookDocument, cells, item.cells);
693
+ return filtered.length === 0 ? undefined : filtered;
694
+ }
695
+ }
696
+ return undefined;
697
+ }
698
+ cellMatches(notebookDocument, cell) {
699
+ const cells = this.getMatchingCells(notebookDocument, [cell]);
700
+ return cells !== undefined && cells[0] === cell;
701
+ }
702
+ filterCells(notebookDocument, cells, cellSelector) {
703
+ const filtered = cellSelector !== undefined ? cells.filter((cell) => {
704
+ const cellLanguage = cell.document.languageId;
705
+ return cellSelector.some((filter => (filter.language === '*' || cellLanguage === filter.language)));
706
+ }) : cells;
707
+ return typeof this.client.clientOptions.notebookDocumentOptions?.filterCells === 'function'
708
+ ? this.client.clientOptions.notebookDocumentOptions.filterCells(notebookDocument, filtered)
709
+ : filtered;
710
+ }
711
+ }
712
+ class NotebookDocumentSyncFeature {
713
+ constructor(client) {
714
+ this.client = client;
715
+ this.registrations = new Map();
716
+ this.registrationType = proto.NotebookDocumentSyncRegistrationType.type;
717
+ // We don't receive an event for cells where the document changes its language mode
718
+ // Since we allow servers to filter on the language mode we fire such an event ourselves.
719
+ vscode.workspace.onDidOpenTextDocument((textDocument) => {
720
+ if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {
721
+ return;
722
+ }
723
+ const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);
724
+ if (notebookDocument === undefined || notebookCell === undefined) {
725
+ return;
726
+ }
727
+ for (const provider of this.registrations.values()) {
728
+ if (provider instanceof NotebookDocumentSyncFeatureProvider) {
729
+ provider.didOpenNotebookCellTextDocument(notebookDocument, notebookCell);
730
+ }
731
+ }
732
+ });
733
+ vscode.workspace.onDidChangeTextDocument((event) => {
734
+ if (event.contentChanges.length === 0) {
735
+ return;
736
+ }
737
+ const textDocument = event.document;
738
+ if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {
739
+ return;
740
+ }
741
+ const [notebookDocument,] = this.findNotebookDocumentAndCell(textDocument);
742
+ if (notebookDocument === undefined) {
743
+ return;
744
+ }
745
+ for (const provider of this.registrations.values()) {
746
+ if (provider instanceof NotebookDocumentSyncFeatureProvider) {
747
+ provider.didChangeNotebookCellTextDocument(notebookDocument, event);
748
+ }
749
+ }
750
+ });
751
+ vscode.workspace.onDidCloseTextDocument((textDocument) => {
752
+ if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {
753
+ return;
754
+ }
755
+ // There are two cases when we receive a close for a text document
756
+ // 1: the cell got removed. This is handled in `onDidChangeNotebookCells`
757
+ // 2: the language mode of a cell changed. This keeps the URI stable so
758
+ // we will still find the cell and the notebook document.
759
+ const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);
760
+ if (notebookDocument === undefined || notebookCell === undefined) {
761
+ return;
762
+ }
763
+ for (const provider of this.registrations.values()) {
764
+ if (provider instanceof NotebookDocumentSyncFeatureProvider) {
765
+ provider.didCloseNotebookCellTextDocument(notebookDocument, notebookCell);
766
+ }
767
+ }
768
+ });
769
+ }
770
+ getState() {
771
+ if (this.registrations.size === 0) {
772
+ return { kind: 'document', id: this.registrationType.method, registrations: false, matches: false };
773
+ }
774
+ for (const provider of this.registrations.values()) {
775
+ const state = provider.getState();
776
+ if (state.kind === 'document' && state.registrations === true && state.matches === true) {
777
+ return { kind: 'document', id: this.registrationType.method, registrations: true, matches: true };
778
+ }
779
+ }
780
+ return { kind: 'document', id: this.registrationType.method, registrations: true, matches: false };
781
+ }
782
+ fillClientCapabilities(capabilities) {
783
+ const synchronization = ensure(ensure(capabilities, 'notebookDocument'), 'synchronization');
784
+ synchronization.dynamicRegistration = true;
785
+ synchronization.executionSummarySupport = true;
786
+ }
787
+ preInitialize(capabilities) {
788
+ const options = capabilities.notebookDocumentSync;
789
+ if (options === undefined) {
790
+ return;
791
+ }
792
+ this.dedicatedChannel = this.client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));
793
+ }
794
+ initialize(capabilities) {
795
+ const options = capabilities.notebookDocumentSync;
796
+ if (options === undefined) {
797
+ return;
798
+ }
799
+ const id = options.id ?? UUID.generateUuid();
800
+ this.register({ id, registerOptions: options });
801
+ }
802
+ register(data) {
803
+ const provider = new NotebookDocumentSyncFeatureProvider(this.client, data.registerOptions);
804
+ this.registrations.set(data.id, provider);
805
+ }
806
+ unregister(id) {
807
+ const provider = this.registrations.get(id);
808
+ provider && provider.dispose();
809
+ }
810
+ clear() {
811
+ for (const provider of this.registrations.values()) {
812
+ provider.dispose();
813
+ }
814
+ this.registrations.clear();
815
+ }
816
+ handles(textDocument) {
817
+ if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {
818
+ return false;
819
+ }
820
+ if (this.dedicatedChannel !== undefined && vscode.languages.match(this.dedicatedChannel, textDocument) > 0) {
821
+ return true;
822
+ }
823
+ for (const provider of this.registrations.values()) {
824
+ if (provider.handles(textDocument)) {
825
+ return true;
826
+ }
827
+ }
828
+ return false;
829
+ }
830
+ getProvider(notebookCell) {
831
+ for (const provider of this.registrations.values()) {
832
+ if (provider.handles(notebookCell.document)) {
833
+ return provider;
834
+ }
835
+ }
836
+ return undefined;
837
+ }
838
+ findNotebookDocumentAndCell(textDocument) {
839
+ const uri = textDocument.uri.toString();
840
+ for (const notebookDocument of vscode.workspace.notebookDocuments) {
841
+ for (const cell of notebookDocument.getCells()) {
842
+ if (cell.document.uri.toString() === uri) {
843
+ return [notebookDocument, cell];
844
+ }
845
+ }
846
+ }
847
+ return [undefined, undefined];
848
+ }
849
+ }
850
+ exports.NotebookDocumentSyncFeature = NotebookDocumentSyncFeature;
851
+ NotebookDocumentSyncFeature.CellScheme = 'vscode-notebook-cell';