@xano/xanoscript-language-server 11.12.1 → 11.12.3

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 (339) hide show
  1. package/lexer/tokens.js +22 -3
  2. package/package.json +25 -1
  3. package/.claude/memory/feedback_no_git.md +0 -11
  4. package/.claude/settings.local.json +0 -21
  5. package/.github/copilot-instructions.md +0 -190
  6. package/.github/workflows/ci.yml +0 -31
  7. package/.husky/pre-commit +0 -1
  8. package/CLAUDE.md +0 -256
  9. package/eslint.config.js +0 -24
  10. package/lexer/comment.spec.js +0 -77
  11. package/lexer/multiline.spec.js +0 -179
  12. package/lexer/tests/query/query_lexer.spec.js +0 -36
  13. package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
  14. package/lexer/tests/query/valid_sources/db_query.xs +0 -77
  15. package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
  16. package/lexer/tests/query/valid_sources/header_query.xs +0 -15
  17. package/lexer/tests/table/basic_table.xs +0 -17
  18. package/lexer/tests/table/empty_table.xs +0 -3
  19. package/lexer/tests/table/table_lexer.spec.js +0 -324
  20. package/lexer/utils.spec.js +0 -61
  21. package/onCompletion/contentAssist.spec.js +0 -275
  22. package/onDefinition/onDefinition.spec.js +0 -313
  23. package/onHover/FilterMessageProvider.spec.js +0 -85
  24. package/onHover/FunctionMessageProvider.spec.js +0 -128
  25. package/onHover/InputFilterMessageProvider.spec.js +0 -329
  26. package/onHover/QueryFilterMessageProvider.spec.js +0 -164
  27. package/onHover/onHoverDocument.spec.js +0 -660
  28. package/parser/addon_parser.spec.js +0 -88
  29. package/parser/agent_parser.spec.js +0 -599
  30. package/parser/agent_trigger_parser.spec.js +0 -525
  31. package/parser/api_group_parser.spec.js +0 -137
  32. package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
  33. package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
  34. package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
  35. package/parser/attributes/docsFieldAttribute.spec.js +0 -44
  36. package/parser/attributes/guidFieldAttribute.spec.js +0 -93
  37. package/parser/attributes/inputFilterFn.spec.js +0 -39
  38. package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
  39. package/parser/attributes/valueFieldAttribute.spec.js +0 -54
  40. package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
  41. package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
  42. package/parser/branch_parser.spec.js +0 -34
  43. package/parser/clauses/agentClause.spec.js +0 -34
  44. package/parser/clauses/authClause.spec.js +0 -39
  45. package/parser/clauses/cacheClause.spec.js +0 -103
  46. package/parser/clauses/canonicalClause.spec.js +0 -34
  47. package/parser/clauses/channelClause.spec.js +0 -34
  48. package/parser/clauses/dbTableClause.spec.js +0 -34
  49. package/parser/clauses/historyClause.spec.js +0 -53
  50. package/parser/clauses/indexClause.spec.js +0 -47
  51. package/parser/clauses/inputClause.spec.js +0 -96
  52. package/parser/clauses/mcpServerClause.spec.js +0 -34
  53. package/parser/clauses/middlewareClause.spec.js +0 -161
  54. package/parser/clauses/nakedStackFn.spec.js +0 -73
  55. package/parser/clauses/responseClause.spec.js +0 -47
  56. package/parser/clauses/scheduleClause.spec.js +0 -71
  57. package/parser/clauses/schemaClause.spec.js +0 -102
  58. package/parser/clauses/testClause.spec.js +0 -69
  59. package/parser/clauses/viewClause.spec.js +0 -163
  60. package/parser/definitions/arraySlice.spec.js +0 -49
  61. package/parser/definitions/columnDefinition.spec.js +0 -199
  62. package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
  63. package/parser/definitions/enumColumnDefinition.spec.js +0 -108
  64. package/parser/definitions/filterDefinition.spec.js +0 -43
  65. package/parser/definitions/objectColumnDefinition.spec.js +0 -118
  66. package/parser/function_parser.spec.js +0 -131
  67. package/parser/functions/actionCallFn.spec.js +0 -51
  68. package/parser/functions/addonCallFn.spec.js +0 -41
  69. package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
  70. package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
  71. package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
  72. package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
  73. package/parser/functions/aiFn.spec.js +0 -51
  74. package/parser/functions/api/apiCallFn.spec.js +0 -62
  75. package/parser/functions/api/apiLambdaFn.spec.js +0 -63
  76. package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
  77. package/parser/functions/api/apiRequestFn.spec.js +0 -113
  78. package/parser/functions/api/apiStreamFn.spec.js +0 -44
  79. package/parser/functions/api/webflowRequestFn.spec.js +0 -114
  80. package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
  81. package/parser/functions/array/arrayFindFn.spec.js +0 -44
  82. package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
  83. package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
  84. package/parser/functions/array/arrayMapFn.spec.js +0 -37
  85. package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
  86. package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
  87. package/parser/functions/array/arrayUnionFn.spec.js +0 -22
  88. package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
  89. package/parser/functions/array/arrayValueOnly.spec.js +0 -61
  90. package/parser/functions/array/valueAttrOnly.spec.js +0 -61
  91. package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
  92. package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
  93. package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
  94. package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
  95. package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
  96. package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
  97. package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
  98. package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
  99. package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
  100. package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
  101. package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
  102. package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
  103. package/parser/functions/controls/awaitFn.spec.js +0 -48
  104. package/parser/functions/controls/conditionalFn.spec.js +0 -188
  105. package/parser/functions/controls/forEachFn.spec.js +0 -109
  106. package/parser/functions/controls/forFn.spec.js +0 -85
  107. package/parser/functions/controls/functionRunFn.spec.js +0 -77
  108. package/parser/functions/controls/groupFn.spec.js +0 -63
  109. package/parser/functions/controls/preconditionFn.spec.js +0 -107
  110. package/parser/functions/controls/returnFn.spec.js +0 -44
  111. package/parser/functions/controls/switchFn.spec.js +0 -118
  112. package/parser/functions/controls/throwFn.spec.js +0 -56
  113. package/parser/functions/controls/tryCatchFn.spec.js +0 -193
  114. package/parser/functions/controls/whileFn.spec.js +0 -94
  115. package/parser/functions/db/dbAddFn.spec.js +0 -72
  116. package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
  117. package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
  118. package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
  119. package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
  120. package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
  121. package/parser/functions/db/dbDelFn.spec.js +0 -67
  122. package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
  123. package/parser/functions/db/dbEditFn.spec.js +0 -122
  124. package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
  125. package/parser/functions/db/dbGetFn.spec.js +0 -117
  126. package/parser/functions/db/dbHasFn.spec.js +0 -62
  127. package/parser/functions/db/dbPatchFn.spec.js +0 -88
  128. package/parser/functions/db/dbQueryFn.spec.js +0 -380
  129. package/parser/functions/db/dbSchemaFn.spec.js +0 -42
  130. package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
  131. package/parser/functions/db/dbTransactionFn.spec.js +0 -63
  132. package/parser/functions/db/dbTruncateFn.spec.js +0 -42
  133. package/parser/functions/debug/debugLogFn.spec.js +0 -44
  134. package/parser/functions/debug/debugStopFn.spec.js +0 -44
  135. package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
  136. package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
  137. package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
  138. package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
  139. package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
  140. package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
  141. package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
  142. package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
  143. package/parser/functions/math/allMathFn.spec.js +0 -100
  144. package/parser/functions/middlewareCallFn.spec.js +0 -44
  145. package/parser/functions/object/objectEntriesFn.spec.js +0 -44
  146. package/parser/functions/object/objectKeysFn.spec.js +0 -44
  147. package/parser/functions/object/objectValuesFn.spec.js +0 -44
  148. package/parser/functions/redis/redisCountFn.spec.js +0 -58
  149. package/parser/functions/redis/redisDecrFn.spec.js +0 -47
  150. package/parser/functions/redis/redisDelFn.spec.js +0 -58
  151. package/parser/functions/redis/redisGetFn.spec.js +0 -67
  152. package/parser/functions/redis/redisHasFn.spec.js +0 -58
  153. package/parser/functions/redis/redisIncrFn.spec.js +0 -74
  154. package/parser/functions/redis/redisKeysFn.spec.js +0 -67
  155. package/parser/functions/redis/redisPopFn.spec.js +0 -75
  156. package/parser/functions/redis/redisPushFn.spec.js +0 -71
  157. package/parser/functions/redis/redisRangeFn.spec.js +0 -80
  158. package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
  159. package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
  160. package/parser/functions/redis/redisSetFn.spec.js +0 -89
  161. package/parser/functions/redis/redisShiftFn.spec.js +0 -75
  162. package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
  163. package/parser/functions/schema/schemaFn.spec.js +0 -92
  164. package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
  165. package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
  166. package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
  167. package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
  168. package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
  169. package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
  170. package/parser/functions/schema/utils.spec.js +0 -27
  171. package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
  172. package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
  173. package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
  174. package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
  175. package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
  176. package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
  177. package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
  178. package/parser/functions/security/securityDecryptFn.spec.js +0 -24
  179. package/parser/functions/security/securityEncryptFn.spec.js +0 -24
  180. package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
  181. package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
  182. package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
  183. package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
  184. package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
  185. package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
  186. package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
  187. package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
  188. package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
  189. package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
  190. package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
  191. package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
  192. package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
  193. package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
  194. package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
  195. package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
  196. package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
  197. package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
  198. package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
  199. package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
  200. package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
  201. package/parser/functions/toolCallFn.spec.js +0 -28
  202. package/parser/functions/triggerCallFn.spec.js +0 -51
  203. package/parser/functions/unitExpectFn.spec.js +0 -21
  204. package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
  205. package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
  206. package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
  207. package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
  208. package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
  209. package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
  210. package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
  211. package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
  212. package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
  213. package/parser/functions/util/utilSleepFn.spec.js +0 -44
  214. package/parser/functions/util/utilTemplateFn.spec.js +0 -78
  215. package/parser/functions/varFn.spec.js +0 -332
  216. package/parser/functions/workflowExpectFn.spec.js +0 -32
  217. package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
  218. package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
  219. package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
  220. package/parser/functions/zip/zipExtractFn.spec.js +0 -52
  221. package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
  222. package/parser/generic/arrayWithValues.spec.js +0 -72
  223. package/parser/generic/asVariable.spec.js +0 -117
  224. package/parser/generic/assignableVariableAs.spec.js +0 -126
  225. package/parser/generic/assignableVariableProperty.spec.js +0 -138
  226. package/parser/generic/castedValue.spec.js +0 -29
  227. package/parser/generic/chainedIdentifier.spec.js +0 -89
  228. package/parser/generic/completeAuthVariable.spec.js +0 -23
  229. package/parser/generic/completeEnvVariable.spec.js +0 -99
  230. package/parser/generic/completeErrorVariable.spec.js +0 -17
  231. package/parser/generic/completeInputVariable.spec.js +0 -53
  232. package/parser/generic/expressionFn.spec.js +0 -605
  233. package/parser/generic/filterFn.spec.js +0 -47
  234. package/parser/generic/functionAttrReq.spec.js +0 -353
  235. package/parser/generic/longFormVariable.spec.js +0 -25
  236. package/parser/generic/minimalFnBody.spec.js +0 -47
  237. package/parser/generic/mockAttribute.spec.js +0 -57
  238. package/parser/generic/multilineFilterFn.spec.js +0 -51
  239. package/parser/generic/objectWithAttributes.spec.js +0 -147
  240. package/parser/generic/requiredValueFnBody.spec.js +0 -56
  241. package/parser/generic/shortFormVariable.spec.js +0 -27
  242. package/parser/generic/stringArray.spec.js +0 -55
  243. package/parser/generic/tagsAttribute.spec.js +0 -47
  244. package/parser/generic/variableOnly.spec.js +0 -47
  245. package/parser/mcp_server_parser.spec.js +0 -478
  246. package/parser/mcp_server_trigger_parser.spec.js +0 -396
  247. package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
  248. package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
  249. package/parser/middleware_parser.spec.js +0 -230
  250. package/parser/multidoc.spec.js +0 -946
  251. package/parser/query_parser.spec.js +0 -202
  252. package/parser/realtime_channel_parser.spec.js +0 -20
  253. package/parser/realtime_trigger_parser.spec.js +0 -469
  254. package/parser/run_parser.spec.js +0 -100
  255. package/parser/table_parser.spec.js +0 -176
  256. package/parser/table_trigger_parser.spec.js +0 -478
  257. package/parser/task_parser.spec.js +0 -94
  258. package/parser/tests/agent/agent_parser.spec.js +0 -52
  259. package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
  260. package/parser/tests/api_group/api_group_parser.spec.js +0 -52
  261. package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
  262. package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
  263. package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
  264. package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
  265. package/parser/tests/function/function_parser.spec.js +0 -52
  266. package/parser/tests/function/valid_sources/all_controls.xs +0 -68
  267. package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
  268. package/parser/tests/function/valid_sources/all_storage.xs +0 -45
  269. package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
  270. package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
  271. package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
  272. package/parser/tests/function/valid_sources/filter_query.xs +0 -82
  273. package/parser/tests/function/valid_sources/large_regex.xs +0 -13
  274. package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
  275. package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
  276. package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
  277. package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
  278. package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
  279. package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
  280. package/parser/tests/function/valid_sources/webflow.xs +0 -18
  281. package/parser/tests/multidoc/multidoc_parser.spec.js +0 -55
  282. package/parser/tests/multidoc/valid_sources/function_stack.xs +0 -130603
  283. package/parser/tests/query/query_parser.spec.js +0 -54
  284. package/parser/tests/query/valid_sources/all_basics.xs +0 -51
  285. package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
  286. package/parser/tests/query/valid_sources/all_db.xs +0 -102
  287. package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
  288. package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
  289. package/parser/tests/query/valid_sources/all_math.xs +0 -53
  290. package/parser/tests/query/valid_sources/all_object.xs +0 -25
  291. package/parser/tests/query/valid_sources/all_redis.xs +0 -106
  292. package/parser/tests/query/valid_sources/all_security.xs +0 -105
  293. package/parser/tests/query/valid_sources/all_stream.xs +0 -69
  294. package/parser/tests/query/valid_sources/all_text.xs +0 -54
  295. package/parser/tests/query/valid_sources/all_util.xs +0 -66
  296. package/parser/tests/query/valid_sources/all_zip.xs +0 -39
  297. package/parser/tests/query/valid_sources/arrays.xs +0 -33
  298. package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
  299. package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
  300. package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
  301. package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
  302. package/parser/tests/query/valid_sources/query_cache.xs +0 -34
  303. package/parser/tests/query/valid_sources/query_example.xs +0 -43
  304. package/parser/tests/query/valid_sources/query_mini.xs +0 -11
  305. package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
  306. package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
  307. package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
  308. package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
  309. package/parser/tests/table/table_parser.spec.js +0 -52
  310. package/parser/tests/table/valid_sources/account.xs +0 -31
  311. package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
  312. package/parser/tests/table/valid_sources/basic_table.xs +0 -15
  313. package/parser/tests/table/valid_sources/empty_object.xs +0 -17
  314. package/parser/tests/table/valid_sources/empty_table.xs +0 -3
  315. package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
  316. package/parser/tests/table/valid_sources/relation.xs +0 -44
  317. package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
  318. package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
  319. package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
  320. package/parser/tests/table/valid_sources/view_table.xs +0 -62
  321. package/parser/tests/task/task_parser.spec.js +0 -53
  322. package/parser/tests/task/valid_sources/active_event.xs +0 -11
  323. package/parser/tests/task/valid_sources/all_events.xs +0 -17
  324. package/parser/tests/task/valid_sources/create_leak.xs +0 -165
  325. package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
  326. package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
  327. package/parser/tests/variable_test/coverage_check.xs +0 -293
  328. package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
  329. package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
  330. package/parser/tool_parser.spec.js +0 -115
  331. package/parser/variableValidator.spec.js +0 -179
  332. package/parser/workflow_test_parser.spec.js +0 -136
  333. package/parser/workspace_parser.spec.js +0 -142
  334. package/parser/workspace_trigger_parser.spec.js +0 -332
  335. package/toTmLanguage.js +0 -75
  336. package/utils.spec.js +0 -369
  337. package/workspace/crossFileValidator.spec.js +0 -654
  338. package/workspace/referenceTracking.spec.js +0 -420
  339. package/workspace/workspaceIndex.spec.js +0 -189
@@ -1,329 +0,0 @@
1
- import { expect } from "chai";
2
- import { beforeEach, describe, it } from "mocha";
3
- import { InputFilterMessageProvider } from "./InputFilterMessageProvider.js";
4
-
5
- const testInputFiltersMd = `
6
- # trim
7
- Removes excess whitespace from the beginning and end of the entry.
8
-
9
- # min
10
- Enforces a minimum value or length for the entry.
11
-
12
- # max
13
- Enforces a maximum value or length for the entry.
14
-
15
- # lower
16
- Converts all characters to lowercase.
17
-
18
- # upper
19
- Converts all characters to uppercase.
20
- `;
21
-
22
- describe("InputFilterMessageProvider", () => {
23
- let provider;
24
-
25
- beforeEach(() => {
26
- provider = new InputFilterMessageProvider(testInputFiltersMd);
27
- });
28
-
29
- describe("parseFilters", () => {
30
- it("should parse filter documentation correctly", () => {
31
- expect(provider.__filterDoc["trim"]).to.equal(
32
- "Removes excess whitespace from the beginning and end of the entry."
33
- );
34
- expect(provider.__filterDoc["min"]).to.equal(
35
- "Enforces a minimum value or length for the entry."
36
- );
37
- expect(provider.__filterDoc["max"]).to.equal(
38
- "Enforces a maximum value or length for the entry."
39
- );
40
- expect(provider.__filterDoc["lower"]).to.equal(
41
- "Converts all characters to lowercase."
42
- );
43
- });
44
-
45
- it("should have all expected filters", () => {
46
- const filterNames = Object.keys(provider.__filterDoc);
47
- expect(filterNames).to.include.members([
48
- "trim",
49
- "min",
50
- "max",
51
- "lower",
52
- "upper",
53
- ]);
54
- });
55
- });
56
-
57
- describe("findFilter", () => {
58
- it("should find existing filters", () => {
59
- const mockTokens = [{ tokenType: { name: "Identifier" }, image: "trim" }];
60
-
61
- const result = provider.findFilter(0, mockTokens);
62
- expect(result).to.equal("trim");
63
- });
64
-
65
- it("should return null for non-existent filters", () => {
66
- const mockTokens = [
67
- { tokenType: { name: "Identifier" }, image: "nonexistent" },
68
- ];
69
-
70
- const result = provider.findFilter(0, mockTokens);
71
- expect(result).to.be.null;
72
- });
73
-
74
- it("should return null for non-identifier tokens", () => {
75
- const mockTokens = [
76
- { tokenType: { name: "StringLiteral" }, image: "trim" },
77
- ];
78
-
79
- const result = provider.findFilter(0, mockTokens);
80
- expect(result).to.be.null;
81
- });
82
- });
83
-
84
- describe("isMatch", () => {
85
- it("should return false for index 0", () => {
86
- const tokens = [{ image: "trim" }];
87
- expect(provider.isMatch(0, tokens)).to.be.false;
88
- });
89
-
90
- it("should return false when not after = or |", () => {
91
- const tokens = [{ image: "something" }, { image: "trim" }];
92
- expect(provider.isMatch(1, tokens)).to.be.false;
93
- });
94
-
95
- it("should return true for filter after filters=", () => {
96
- const tokens = [
97
- { image: "filters" },
98
- { image: "=" },
99
- { tokenType: { name: "Identifier" }, image: "trim" },
100
- ];
101
- expect(provider.isMatch(2, tokens)).to.be.true;
102
- });
103
-
104
- it("should return true for filter after pipe in filters context", () => {
105
- const tokens = [
106
- { image: "filters" },
107
- { image: "=" },
108
- { tokenType: { name: "Identifier" }, image: "trim" },
109
- { image: "|" },
110
- { tokenType: { name: "Identifier" }, image: "upper" },
111
- ];
112
- expect(provider.isMatch(4, tokens)).to.be.true;
113
- });
114
-
115
- it("should return false for filter after = without filters", () => {
116
- const tokens = [
117
- { image: "value" },
118
- { image: "=" },
119
- { tokenType: { name: "Identifier" }, image: "trim" },
120
- ];
121
- expect(provider.isMatch(2, tokens)).to.be.false;
122
- });
123
-
124
- it("should return false for unknown filter", () => {
125
- const tokens = [
126
- { image: "filters" },
127
- { image: "=" },
128
- { tokenType: { name: "Identifier" }, image: "unknown_filter" },
129
- ];
130
- expect(provider.isMatch(2, tokens)).to.be.false;
131
- });
132
-
133
- it("should stop searching at boundary tokens", () => {
134
- const tokens = [
135
- { image: "filters" },
136
- { image: "=" },
137
- { image: "something" },
138
- { image: "{" },
139
- { image: "other" },
140
- { image: "=" },
141
- { tokenType: { name: "Identifier" }, image: "trim" },
142
- ];
143
- expect(provider.isMatch(6, tokens)).to.be.false;
144
- });
145
-
146
- it("should handle complex filter chain", () => {
147
- const tokens = [
148
- { image: "text" },
149
- { image: "name" },
150
- { image: "filters" },
151
- { image: "=" },
152
- {
153
- tokenType: { name: "trim token", LONGER_ALT: { name: "Identifier" } },
154
- image: "trim",
155
- },
156
- { image: "|" },
157
- { tokenType: { name: "Identifier" }, image: "upper" },
158
- { image: "|" },
159
- { tokenType: { name: "Identifier" }, image: "lower" },
160
- ];
161
- expect(provider.isMatch(4, tokens)).to.be.true; // trim
162
- expect(provider.isMatch(6, tokens)).to.be.true; // upper
163
- expect(provider.isMatch(8, tokens)).to.be.true; // lower
164
- });
165
- });
166
-
167
- describe("render", () => {
168
- it("should return filter documentation when filter exists", () => {
169
- const mockTokens = [{ tokenType: { name: "Identifier" }, image: "trim" }];
170
-
171
- const result = provider.render(0, mockTokens);
172
- expect(result).to.equal(
173
- "Removes excess whitespace from the beginning and end of the entry."
174
- );
175
- });
176
-
177
- it("should return undefined when filter doesn't exist", () => {
178
- const mockTokens = [
179
- { tokenType: { name: "Identifier" }, image: "nonexistent" },
180
- ];
181
-
182
- const result = provider.render(0, mockTokens);
183
- expect(result).to.be.undefined;
184
- });
185
- });
186
-
187
- describe("integration with real parser", () => {
188
- it("should work with actual XanoScript parsing", async () => {
189
- // Import the actual parser functions
190
- const { lexDocument } = await import("../lexer/lexer.js");
191
- const { xanoscriptParser } = await import("../parser/parser.js");
192
- const { getSchemeFromContent } = await import("../utils.js");
193
-
194
- const code = `table users {
195
- text name filters=trim
196
- email address filters=lower|trim
197
- }`;
198
-
199
- // Get the proper scheme
200
- const scheme = getSchemeFromContent(code);
201
- // console.log("Detected scheme:", scheme);
202
-
203
- // Tokenize the document
204
- const lexResult = lexDocument(code);
205
- expect(lexResult.errors).to.have.length(0);
206
-
207
- // Parse the XanoScript with the correct scheme
208
- const parser = xanoscriptParser(code, scheme);
209
- const tokens = lexResult.tokens;
210
-
211
- // Find the token for "trim" after filters=
212
- let trimTokenIndex = -1;
213
- for (let i = 0; i < tokens.length; i++) {
214
- if (
215
- tokens[i].image === "trim" &&
216
- i > 0 &&
217
- tokens[i - 1].image === "="
218
- ) {
219
- trimTokenIndex = i;
220
- break;
221
- }
222
- }
223
-
224
- expect(trimTokenIndex).to.be.greaterThan(-1);
225
-
226
- // Test that the provider matches
227
- // console.log("Parser sectionStack:", parser.sectionStack);
228
- // console.log(
229
- // "Token at index",
230
- // trimTokenIndex,
231
- // ":",
232
- // tokens[trimTokenIndex]
233
- // );
234
- // console.log("Previous token:", tokens[trimTokenIndex - 1]);
235
-
236
- const matches = provider.isMatch(trimTokenIndex, tokens, parser);
237
- // console.log("Provider matches:", matches);
238
-
239
- expect(matches).to.be.true;
240
-
241
- // Test that it renders the correct documentation
242
- const result = provider.render(trimTokenIndex, tokens, parser);
243
- expect(result).to.equal(
244
- "Removes excess whitespace from the beginning and end of the entry."
245
- );
246
- });
247
-
248
- it("should NOT match filters in pipe expressions", async () => {
249
- // Import the actual parser functions
250
- const { lexDocument } = await import("../lexer/lexer.js");
251
- const { xanoscriptParser } = await import("../parser/parser.js");
252
-
253
- const code = `query test verb=GET {
254
- stack {
255
- var $result { value = $input.name|trim }
256
- }
257
- }`;
258
-
259
- // Tokenize the document
260
- const lexResult = lexDocument(code);
261
- expect(lexResult.errors).to.have.length(0);
262
-
263
- // Parse the XanoScript to ensure no syntax errors
264
- xanoscriptParser("query", code);
265
- const tokens = lexResult.tokens;
266
-
267
- // Find the token for "trim" after |
268
- let trimTokenIndex = -1;
269
- for (let i = 0; i < tokens.length; i++) {
270
- if (
271
- tokens[i].image === "trim" &&
272
- i > 0 &&
273
- tokens[i - 1].image === "|"
274
- ) {
275
- trimTokenIndex = i;
276
- break;
277
- }
278
- }
279
-
280
- expect(trimTokenIndex).to.be.greaterThan(-1);
281
-
282
- // Test that the InputFilterMessageProvider does NOT match pipe expressions without filters= context
283
- const matches = provider.isMatch(trimTokenIndex, tokens);
284
- expect(matches).to.be.false;
285
- });
286
-
287
- it("should work with actual XanoScript parsing for input filters", async () => {
288
- // Import the actual parser functions
289
- const { lexDocument } = await import("../lexer/lexer.js");
290
- const { xanoscriptParser } = await import("../parser/parser.js");
291
-
292
- const code = `table users {
293
- text name filters=trim|upper
294
- }`;
295
-
296
- // Tokenize the document
297
- const lexResult = lexDocument(code);
298
- expect(lexResult.errors).to.have.length(0);
299
-
300
- // Parse the XanoScript to ensure no syntax errors
301
- xanoscriptParser("table", code);
302
- const tokens = lexResult.tokens;
303
-
304
- // Find the token for "trim" after filters=
305
- let trimTokenIndex = -1;
306
- for (let i = 0; i < tokens.length; i++) {
307
- if (
308
- tokens[i].image === "trim" &&
309
- i > 0 &&
310
- tokens[i - 1].image === "="
311
- ) {
312
- trimTokenIndex = i;
313
- break;
314
- }
315
- }
316
-
317
- expect(trimTokenIndex).to.be.greaterThan(-1);
318
-
319
- // Test that the InputFilterMessageProvider matches input filters
320
- const matches = provider.isMatch(trimTokenIndex, tokens);
321
- expect(matches).to.be.true;
322
-
323
- // Test the render method
324
- const result = provider.render(trimTokenIndex, tokens);
325
- expect(result).to.not.be.undefined;
326
- expect(result).to.include("whitespace");
327
- });
328
- });
329
- });
@@ -1,164 +0,0 @@
1
- import { expect } from "chai";
2
- import { beforeEach, describe, it } from "mocha";
3
- import { lexDocument } from "../lexer/lexer.js";
4
- import { QueryFilterMessageProvider } from "./queryFilterMessageProvider.js";
5
-
6
- const testQueryFiltersMd = `
7
- # inner_product
8
- Provides the inner product between two vectors.
9
-
10
- \`\`\`xs
11
- db.embedding.vector|inner_product:$input.query_vector
12
- \`\`\`
13
-
14
- Calculates the dot product between two numeric arrays.
15
-
16
- # cosine_distance
17
- Provides the cosine distance between two vectors.
18
-
19
- \`\`\`xs
20
- db.embedding.vector|cosine_distance:$input.query_vector
21
- \`\`\`
22
-
23
- Calculates the cosine distance (1 - cosine similarity) between two numeric arrays.
24
-
25
- # distance
26
- Provides the distance in meters between two geometries.
27
-
28
- \`\`\`xs
29
- db.location.geometry|distance:$input.target_geometry
30
- \`\`\`
31
-
32
- Returns the distance between two geometric objects in meters.
33
- `;
34
-
35
- describe("QueryFilterMessageProvider", () => {
36
- let provider;
37
-
38
- beforeEach(() => {
39
- provider = new QueryFilterMessageProvider(testQueryFiltersMd);
40
- });
41
-
42
- describe("parseFilters", () => {
43
- it("should parse filter documentation correctly", () => {
44
- expect(provider.__filterDoc["inner_product"]).to.equal(
45
- "Provides the inner product between two vectors.\n\n```xs\ndb.embedding.vector|inner_product:$input.query_vector\n```\n\nCalculates the dot product between two numeric arrays."
46
- );
47
- expect(provider.__filterDoc["cosine_distance"]).to.equal(
48
- "Provides the cosine distance between two vectors.\n\n```xs\ndb.embedding.vector|cosine_distance:$input.query_vector\n```\n\nCalculates the cosine distance (1 - cosine similarity) between two numeric arrays."
49
- );
50
- });
51
-
52
- it("should have all expected filters", () => {
53
- const filterNames = Object.keys(provider.__filterDoc);
54
- expect(filterNames).to.include.members([
55
- "inner_product",
56
- "cosine_distance",
57
- "distance",
58
- ]);
59
- });
60
- });
61
-
62
- describe("findFilter", () => {
63
- it("should find existing filters", () => {
64
- const tokens = lexDocument("inner_product").tokens;
65
- const result = provider.findFilter(0, tokens);
66
- expect(result).to.equal("inner_product");
67
- });
68
-
69
- it("should return null for non-existent filters", () => {
70
- const tokens = lexDocument("nonexistent_filter").tokens;
71
- const result = provider.findFilter(0, tokens);
72
- expect(result).to.be.null;
73
- });
74
-
75
- it("should return null for non-identifier tokens", () => {
76
- const tokens = lexDocument("=").tokens;
77
- const result = provider.findFilter(0, tokens);
78
- expect(result).to.be.null;
79
- });
80
- });
81
-
82
- describe("isMatch", () => {
83
- it("should match filters in search context after pipe", () => {
84
- const code =
85
- "query books { where = $db.embedding.vector|inner_product:$input.query_vector }";
86
- const tokens = lexDocument(code).tokens;
87
-
88
- // Find the index of 'inner_product' token
89
- const innerProductIndex = tokens.findIndex(
90
- (token) => token.image === "inner_product"
91
- );
92
- expect(innerProductIndex).to.be.greaterThan(-1);
93
-
94
- const result = provider.isMatch(innerProductIndex, tokens);
95
- expect(result).to.be.true;
96
- });
97
-
98
- it("should not match filters outside search context", () => {
99
- const code =
100
- "query books { stack { var $result { value = inner_product } } }";
101
- const tokens = lexDocument(code).tokens;
102
-
103
- // Find the index of 'inner_product' token
104
- const innerProductIndex = tokens.findIndex(
105
- (token) => token.image === "inner_product"
106
- );
107
- expect(innerProductIndex).to.be.greaterThan(-1);
108
-
109
- const result = provider.isMatch(innerProductIndex, tokens);
110
- expect(result).to.be.false;
111
- });
112
-
113
- it("should not match when there's no pipe before the token", () => {
114
- const code = "query books { where = $db.embedding.vector inner_product }";
115
- const tokens = lexDocument(code).tokens;
116
-
117
- // Find the index of 'inner_product' token
118
- const innerProductIndex = tokens.findIndex(
119
- (token) => token.image === "inner_product"
120
- );
121
- expect(innerProductIndex).to.be.greaterThan(-1);
122
-
123
- const result = provider.isMatch(innerProductIndex, tokens);
124
- expect(result).to.be.false;
125
- });
126
-
127
- it("should not match at index 0", () => {
128
- const tokens = lexDocument("inner_product").tokens;
129
- const result = provider.isMatch(0, tokens);
130
- expect(result).to.be.false;
131
- });
132
-
133
- it("should handle complex search expressions", () => {
134
- const code =
135
- "query books { where = $db.embedding.vector|cosine_distance:$input.query_vector } as $matched_books";
136
- const tokens = lexDocument(code).tokens;
137
-
138
- // Find the index of 'cosine_distance' token
139
- const cosineDistanceIndex = tokens.findIndex(
140
- (token) => token.image === "cosine_distance"
141
- );
142
- expect(cosineDistanceIndex).to.be.greaterThan(-1);
143
-
144
- const result = provider.isMatch(cosineDistanceIndex, tokens);
145
- expect(result).to.be.true;
146
- });
147
- });
148
-
149
- describe("render", () => {
150
- it("should render documentation for existing filters", () => {
151
- const tokens = lexDocument("inner_product").tokens;
152
- const result = provider.render(0, tokens);
153
- expect(result).to.include(
154
- "Provides the inner product between two vectors"
155
- );
156
- });
157
-
158
- it("should return undefined for non-matching tokens", () => {
159
- const tokens = lexDocument("nonexistent_filter").tokens;
160
- const result = provider.render(0, tokens);
161
- expect(result).to.be.undefined;
162
- });
163
- });
164
- });