@xano/xanoscript-language-server 11.12.2 → 12.0.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 (338) hide show
  1. package/onCheckError/onCheckError.js +35 -28
  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/regexp.spec.js +0 -84
  13. package/lexer/tests/query/query_lexer.spec.js +0 -36
  14. package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
  15. package/lexer/tests/query/valid_sources/db_query.xs +0 -77
  16. package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
  17. package/lexer/tests/query/valid_sources/header_query.xs +0 -15
  18. package/lexer/tests/table/basic_table.xs +0 -17
  19. package/lexer/tests/table/empty_table.xs +0 -3
  20. package/lexer/tests/table/table_lexer.spec.js +0 -324
  21. package/lexer/utils.spec.js +0 -61
  22. package/onCompletion/contentAssist.spec.js +0 -275
  23. package/onDefinition/onDefinition.spec.js +0 -313
  24. package/onHover/FilterMessageProvider.spec.js +0 -85
  25. package/onHover/FunctionMessageProvider.spec.js +0 -128
  26. package/onHover/InputFilterMessageProvider.spec.js +0 -329
  27. package/onHover/QueryFilterMessageProvider.spec.js +0 -164
  28. package/onHover/onHoverDocument.spec.js +0 -660
  29. package/parser/addon_parser.spec.js +0 -88
  30. package/parser/agent_parser.spec.js +0 -599
  31. package/parser/agent_trigger_parser.spec.js +0 -525
  32. package/parser/api_group_parser.spec.js +0 -137
  33. package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
  34. package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
  35. package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
  36. package/parser/attributes/docsFieldAttribute.spec.js +0 -44
  37. package/parser/attributes/guidFieldAttribute.spec.js +0 -93
  38. package/parser/attributes/inputFilterFn.spec.js +0 -39
  39. package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
  40. package/parser/attributes/valueFieldAttribute.spec.js +0 -54
  41. package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
  42. package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
  43. package/parser/branch_parser.spec.js +0 -34
  44. package/parser/clauses/agentClause.spec.js +0 -34
  45. package/parser/clauses/authClause.spec.js +0 -39
  46. package/parser/clauses/cacheClause.spec.js +0 -103
  47. package/parser/clauses/canonicalClause.spec.js +0 -34
  48. package/parser/clauses/channelClause.spec.js +0 -34
  49. package/parser/clauses/dbTableClause.spec.js +0 -34
  50. package/parser/clauses/historyClause.spec.js +0 -53
  51. package/parser/clauses/indexClause.spec.js +0 -47
  52. package/parser/clauses/inputClause.spec.js +0 -96
  53. package/parser/clauses/mcpServerClause.spec.js +0 -34
  54. package/parser/clauses/middlewareClause.spec.js +0 -161
  55. package/parser/clauses/nakedStackFn.spec.js +0 -73
  56. package/parser/clauses/responseClause.spec.js +0 -47
  57. package/parser/clauses/scheduleClause.spec.js +0 -71
  58. package/parser/clauses/schemaClause.spec.js +0 -102
  59. package/parser/clauses/testClause.spec.js +0 -69
  60. package/parser/clauses/viewClause.spec.js +0 -163
  61. package/parser/definitions/arraySlice.spec.js +0 -49
  62. package/parser/definitions/columnDefinition.spec.js +0 -199
  63. package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
  64. package/parser/definitions/enumColumnDefinition.spec.js +0 -108
  65. package/parser/definitions/filterDefinition.spec.js +0 -43
  66. package/parser/definitions/objectColumnDefinition.spec.js +0 -118
  67. package/parser/function_parser.spec.js +0 -131
  68. package/parser/functions/actionCallFn.spec.js +0 -51
  69. package/parser/functions/addonCallFn.spec.js +0 -41
  70. package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
  71. package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
  72. package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
  73. package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
  74. package/parser/functions/aiFn.spec.js +0 -51
  75. package/parser/functions/api/apiCallFn.spec.js +0 -62
  76. package/parser/functions/api/apiLambdaFn.spec.js +0 -63
  77. package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
  78. package/parser/functions/api/apiRequestFn.spec.js +0 -113
  79. package/parser/functions/api/apiStreamFn.spec.js +0 -44
  80. package/parser/functions/api/webflowRequestFn.spec.js +0 -114
  81. package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
  82. package/parser/functions/array/arrayFindFn.spec.js +0 -44
  83. package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
  84. package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
  85. package/parser/functions/array/arrayMapFn.spec.js +0 -37
  86. package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
  87. package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
  88. package/parser/functions/array/arrayUnionFn.spec.js +0 -22
  89. package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
  90. package/parser/functions/array/arrayValueOnly.spec.js +0 -61
  91. package/parser/functions/array/valueAttrOnly.spec.js +0 -61
  92. package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
  93. package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
  94. package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
  95. package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
  96. package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
  97. package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
  98. package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
  99. package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
  100. package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
  101. package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
  102. package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
  103. package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
  104. package/parser/functions/controls/awaitFn.spec.js +0 -48
  105. package/parser/functions/controls/conditionalFn.spec.js +0 -188
  106. package/parser/functions/controls/forEachFn.spec.js +0 -109
  107. package/parser/functions/controls/forFn.spec.js +0 -85
  108. package/parser/functions/controls/functionRunFn.spec.js +0 -87
  109. package/parser/functions/controls/groupFn.spec.js +0 -63
  110. package/parser/functions/controls/preconditionFn.spec.js +0 -107
  111. package/parser/functions/controls/returnFn.spec.js +0 -44
  112. package/parser/functions/controls/switchFn.spec.js +0 -118
  113. package/parser/functions/controls/throwFn.spec.js +0 -56
  114. package/parser/functions/controls/tryCatchFn.spec.js +0 -193
  115. package/parser/functions/controls/whileFn.spec.js +0 -94
  116. package/parser/functions/db/dbAddFn.spec.js +0 -72
  117. package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
  118. package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
  119. package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
  120. package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
  121. package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
  122. package/parser/functions/db/dbDelFn.spec.js +0 -67
  123. package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
  124. package/parser/functions/db/dbEditFn.spec.js +0 -122
  125. package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
  126. package/parser/functions/db/dbGetFn.spec.js +0 -117
  127. package/parser/functions/db/dbHasFn.spec.js +0 -62
  128. package/parser/functions/db/dbPatchFn.spec.js +0 -88
  129. package/parser/functions/db/dbQueryFn.spec.js +0 -380
  130. package/parser/functions/db/dbSchemaFn.spec.js +0 -42
  131. package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
  132. package/parser/functions/db/dbTransactionFn.spec.js +0 -63
  133. package/parser/functions/db/dbTruncateFn.spec.js +0 -42
  134. package/parser/functions/debug/debugLogFn.spec.js +0 -44
  135. package/parser/functions/debug/debugStopFn.spec.js +0 -44
  136. package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
  137. package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
  138. package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
  139. package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
  140. package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
  141. package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
  142. package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
  143. package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
  144. package/parser/functions/math/allMathFn.spec.js +0 -100
  145. package/parser/functions/middlewareCallFn.spec.js +0 -44
  146. package/parser/functions/object/objectEntriesFn.spec.js +0 -44
  147. package/parser/functions/object/objectKeysFn.spec.js +0 -44
  148. package/parser/functions/object/objectValuesFn.spec.js +0 -44
  149. package/parser/functions/redis/redisCountFn.spec.js +0 -58
  150. package/parser/functions/redis/redisDecrFn.spec.js +0 -47
  151. package/parser/functions/redis/redisDelFn.spec.js +0 -58
  152. package/parser/functions/redis/redisGetFn.spec.js +0 -67
  153. package/parser/functions/redis/redisHasFn.spec.js +0 -58
  154. package/parser/functions/redis/redisIncrFn.spec.js +0 -74
  155. package/parser/functions/redis/redisKeysFn.spec.js +0 -67
  156. package/parser/functions/redis/redisPopFn.spec.js +0 -75
  157. package/parser/functions/redis/redisPushFn.spec.js +0 -71
  158. package/parser/functions/redis/redisRangeFn.spec.js +0 -80
  159. package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
  160. package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
  161. package/parser/functions/redis/redisSetFn.spec.js +0 -89
  162. package/parser/functions/redis/redisShiftFn.spec.js +0 -75
  163. package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
  164. package/parser/functions/schema/schemaFn.spec.js +0 -92
  165. package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
  166. package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
  167. package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
  168. package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
  169. package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
  170. package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
  171. package/parser/functions/schema/utils.spec.js +0 -27
  172. package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
  173. package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
  174. package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
  175. package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
  176. package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
  177. package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
  178. package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
  179. package/parser/functions/security/securityDecryptFn.spec.js +0 -24
  180. package/parser/functions/security/securityEncryptFn.spec.js +0 -24
  181. package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
  182. package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
  183. package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
  184. package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
  185. package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
  186. package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
  187. package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
  188. package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
  189. package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
  190. package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
  191. package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
  192. package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
  193. package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
  194. package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
  195. package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
  196. package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
  197. package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
  198. package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
  199. package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
  200. package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
  201. package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
  202. package/parser/functions/toolCallFn.spec.js +0 -28
  203. package/parser/functions/triggerCallFn.spec.js +0 -51
  204. package/parser/functions/unitExpectFn.spec.js +0 -21
  205. package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
  206. package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
  207. package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
  208. package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
  209. package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
  210. package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
  211. package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
  212. package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
  213. package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
  214. package/parser/functions/util/utilSleepFn.spec.js +0 -44
  215. package/parser/functions/util/utilTemplateFn.spec.js +0 -78
  216. package/parser/functions/varFn.spec.js +0 -332
  217. package/parser/functions/workflowExpectFn.spec.js +0 -32
  218. package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
  219. package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
  220. package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
  221. package/parser/functions/zip/zipExtractFn.spec.js +0 -52
  222. package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
  223. package/parser/generic/arrayWithValues.spec.js +0 -72
  224. package/parser/generic/asVariable.spec.js +0 -117
  225. package/parser/generic/assignableVariableAs.spec.js +0 -126
  226. package/parser/generic/assignableVariableProperty.spec.js +0 -138
  227. package/parser/generic/castedValue.spec.js +0 -29
  228. package/parser/generic/chainedIdentifier.spec.js +0 -89
  229. package/parser/generic/completeAuthVariable.spec.js +0 -23
  230. package/parser/generic/completeEnvVariable.spec.js +0 -99
  231. package/parser/generic/completeErrorVariable.spec.js +0 -17
  232. package/parser/generic/completeInputVariable.spec.js +0 -53
  233. package/parser/generic/expressionFn.spec.js +0 -605
  234. package/parser/generic/filterFn.spec.js +0 -47
  235. package/parser/generic/functionAttrReq.spec.js +0 -353
  236. package/parser/generic/longFormVariable.spec.js +0 -25
  237. package/parser/generic/minimalFnBody.spec.js +0 -47
  238. package/parser/generic/mockAttribute.spec.js +0 -57
  239. package/parser/generic/multilineFilterFn.spec.js +0 -51
  240. package/parser/generic/objectWithAttributes.spec.js +0 -147
  241. package/parser/generic/requiredValueFnBody.spec.js +0 -56
  242. package/parser/generic/shortFormVariable.spec.js +0 -27
  243. package/parser/generic/stringArray.spec.js +0 -55
  244. package/parser/generic/tagsAttribute.spec.js +0 -47
  245. package/parser/generic/variableOnly.spec.js +0 -47
  246. package/parser/mcp_server_parser.spec.js +0 -478
  247. package/parser/mcp_server_trigger_parser.spec.js +0 -396
  248. package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
  249. package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
  250. package/parser/middleware_parser.spec.js +0 -230
  251. package/parser/multidoc.spec.js +0 -946
  252. package/parser/query_parser.spec.js +0 -202
  253. package/parser/realtime_channel_parser.spec.js +0 -20
  254. package/parser/realtime_trigger_parser.spec.js +0 -469
  255. package/parser/run_parser.spec.js +0 -100
  256. package/parser/table_parser.spec.js +0 -176
  257. package/parser/table_trigger_parser.spec.js +0 -478
  258. package/parser/task_parser.spec.js +0 -94
  259. package/parser/tests/agent/agent_parser.spec.js +0 -52
  260. package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
  261. package/parser/tests/api_group/api_group_parser.spec.js +0 -52
  262. package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
  263. package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
  264. package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
  265. package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
  266. package/parser/tests/function/function_parser.spec.js +0 -52
  267. package/parser/tests/function/valid_sources/all_controls.xs +0 -68
  268. package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
  269. package/parser/tests/function/valid_sources/all_storage.xs +0 -45
  270. package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
  271. package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
  272. package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
  273. package/parser/tests/function/valid_sources/filter_query.xs +0 -82
  274. package/parser/tests/function/valid_sources/large_regex.xs +0 -13
  275. package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
  276. package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
  277. package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
  278. package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
  279. package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
  280. package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
  281. package/parser/tests/function/valid_sources/webflow.xs +0 -18
  282. package/parser/tests/query/query_parser.spec.js +0 -54
  283. package/parser/tests/query/valid_sources/all_basics.xs +0 -51
  284. package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
  285. package/parser/tests/query/valid_sources/all_db.xs +0 -102
  286. package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
  287. package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
  288. package/parser/tests/query/valid_sources/all_math.xs +0 -53
  289. package/parser/tests/query/valid_sources/all_object.xs +0 -25
  290. package/parser/tests/query/valid_sources/all_redis.xs +0 -106
  291. package/parser/tests/query/valid_sources/all_security.xs +0 -105
  292. package/parser/tests/query/valid_sources/all_stream.xs +0 -69
  293. package/parser/tests/query/valid_sources/all_text.xs +0 -54
  294. package/parser/tests/query/valid_sources/all_util.xs +0 -66
  295. package/parser/tests/query/valid_sources/all_zip.xs +0 -39
  296. package/parser/tests/query/valid_sources/arrays.xs +0 -33
  297. package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
  298. package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
  299. package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
  300. package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
  301. package/parser/tests/query/valid_sources/query_cache.xs +0 -34
  302. package/parser/tests/query/valid_sources/query_example.xs +0 -43
  303. package/parser/tests/query/valid_sources/query_mini.xs +0 -11
  304. package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
  305. package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
  306. package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
  307. package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
  308. package/parser/tests/table/table_parser.spec.js +0 -52
  309. package/parser/tests/table/valid_sources/account.xs +0 -31
  310. package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
  311. package/parser/tests/table/valid_sources/basic_table.xs +0 -15
  312. package/parser/tests/table/valid_sources/empty_object.xs +0 -17
  313. package/parser/tests/table/valid_sources/empty_table.xs +0 -3
  314. package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
  315. package/parser/tests/table/valid_sources/relation.xs +0 -44
  316. package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
  317. package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
  318. package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
  319. package/parser/tests/table/valid_sources/view_table.xs +0 -62
  320. package/parser/tests/task/task_parser.spec.js +0 -53
  321. package/parser/tests/task/valid_sources/active_event.xs +0 -11
  322. package/parser/tests/task/valid_sources/all_events.xs +0 -17
  323. package/parser/tests/task/valid_sources/create_leak.xs +0 -165
  324. package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
  325. package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
  326. package/parser/tests/variable_test/coverage_check.xs +0 -293
  327. package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
  328. package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
  329. package/parser/tool_parser.spec.js +0 -115
  330. package/parser/variableValidator.spec.js +0 -179
  331. package/parser/workflow_test_parser.spec.js +0 -136
  332. package/parser/workspace_parser.spec.js +0 -142
  333. package/parser/workspace_trigger_parser.spec.js +0 -332
  334. package/toTmLanguage.js +0 -75
  335. package/utils.spec.js +0 -369
  336. package/workspace/crossFileValidator.spec.js +0 -654
  337. package/workspace/referenceTracking.spec.js +0 -420
  338. package/workspace/workspaceIndex.spec.js +0 -189
@@ -1,43 +1,50 @@
1
1
  import { xanoscriptParser } from "../parser/parser";
2
2
  import { getSchemeFromContent } from "../utils";
3
3
 
4
+ export const SEVERITY = {
5
+ ERROR: 1,
6
+ WARNING: 2,
7
+ };
8
+
9
+ function toDiagnostic(text, item, severity) {
10
+ const startOffset = item.token?.startOffset ?? 0;
11
+ const endOffset = item.token?.endOffset ?? (startOffset + 5);
12
+ const lines = text.substring(0, startOffset).split("\n");
13
+ const line = lines.length - 1;
14
+ const character = lines[lines.length - 1].length;
15
+
16
+ const endLines = text.substring(0, endOffset + 1).split("\n");
17
+ const endLine = endLines.length - 1;
18
+ const endCharacter = endLines[endLines.length - 1].length;
19
+
20
+ return {
21
+ severity,
22
+ range: {
23
+ start: { line, character },
24
+ end: { line: endLine, character: endCharacter },
25
+ },
26
+ message: item.message,
27
+ source: item.name || "XanoScript Parser",
28
+ };
29
+ }
30
+
4
31
  export function onCheckError(text, objectType) {
5
32
  const scheme = getSchemeFromContent(objectType ?? text);
6
33
 
7
34
  try {
8
- // Parse the XanoScript file
9
35
  const parser = xanoscriptParser(text, scheme);
10
36
 
11
- if (parser.errors.length === 0) {
12
- // If parsing succeeds, send an empty diagnostics array (no errors)
13
- return [];
14
- }
37
+ const diagnostics = [];
15
38
 
16
- // If parsing fails, create a diagnostic (error message) to display in VS Code
17
- const diagnostics = parser.errors.map((error) => {
18
- const startOffset = error.token?.startOffset ?? 0;
19
- const endOffset = error.token?.endOffset ?? 5;
20
- // Calculate line and character positions from offset
21
- const lines = text.substring(0, startOffset).split("\n");
22
- const line = lines.length - 1;
23
- const character = lines[lines.length - 1].length;
24
-
25
- const endLines = text.substring(0, endOffset + 1).split("\n");
26
- const endLine = endLines.length - 1;
27
- const endCharacter = endLines[endLines.length - 1].length;
28
-
29
- return {
30
- range: {
31
- start: { line, character },
32
- end: { line: endLine, character: endCharacter },
33
- },
34
- message: error.message,
35
- source: error.name || "XanoScript Parser",
36
- };
37
- });
39
+ for (const error of parser.errors) {
40
+ diagnostics.push(toDiagnostic(text, error, SEVERITY.ERROR));
41
+ }
42
+ for (const warning of parser.warnings ?? []) {
43
+ diagnostics.push(toDiagnostic(text, warning, SEVERITY.WARNING));
44
+ }
38
45
 
39
46
  return diagnostics;
40
47
  } catch (error) {
41
- console.error("Error checking for XanoScripterrors:", error);
48
+ console.error("Error checking for XanoScript errors:", error);
42
49
  }
43
50
  }
package/package.json CHANGED
@@ -1,9 +1,33 @@
1
1
  {
2
2
  "name": "@xano/xanoscript-language-server",
3
- "version": "11.12.2",
3
+ "version": "12.0.0",
4
4
  "description": "Language Server Protocol implementation for XanoScript",
5
5
  "type": "module",
6
6
  "main": "server.js",
7
+ "files": [
8
+ "server.js",
9
+ "connection.js",
10
+ "documents.js",
11
+ "utils.js",
12
+ "language-server-worker.js",
13
+ "logic-assistant-script.js",
14
+ "profile-parser.js",
15
+ "cache/",
16
+ "embedded/",
17
+ "lexer/**/*.js",
18
+ "onCheckError/",
19
+ "onCompletion/contentAssist.js",
20
+ "onCompletion/onCompletion.js",
21
+ "onDefinition/onDefinition.js",
22
+ "onDidChangeContent/",
23
+ "onHover/",
24
+ "onSemanticCheck/",
25
+ "parser/**/*.js",
26
+ "workspace/",
27
+ "!**/*.spec.js",
28
+ "!**/tests/",
29
+ "!**/valid_sources/"
30
+ ],
7
31
  "repository": {
8
32
  "type": "git",
9
33
  "url": "git+https://github.com/xano-labs/xs-language-server.git"
@@ -1,11 +0,0 @@
1
- ---
2
- name: no-git-interactions
3
- description: User does not want Claude to interact with git (no commits, no staging, no git commands)
4
- type: feedback
5
- ---
6
-
7
- Do not interact with git — no commits, no staging, no git commands. Focus purely on implementation and testing.
8
-
9
- **Why:** User manages their own git workflow.
10
-
11
- **How to apply:** Skip all git-related steps in plans. When dispatching subagents, explicitly tell them not to run any git commands. Remove commit steps from task instructions.
@@ -1,21 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(npm test:*)",
5
- "Bash(git checkout:*)",
6
- "Bash(ls:*)",
7
- "Bash(npm run lint:*)",
8
- "Bash(grep:*)",
9
- "Bash(find:*)",
10
- "Read(//tmp/**)",
11
- "Bash(git stash:*)",
12
- "Bash(do)",
13
- "Bash(if ! grep -q \"guidFieldAttribute\" \"$f\")",
14
- "Bash(then)",
15
- "Bash(echo:*)",
16
- "Bash(fi)",
17
- "Bash(done)",
18
- "Bash(npx eslint:*)"
19
- ]
20
- }
21
- }
@@ -1,190 +0,0 @@
1
- # XanoScript Language Server - Copilot Instructions
2
-
3
- ## Repository Overview
4
-
5
- This repository implements a Language Server Protocol (LSP) server for **XanoScript**, a domain-specific language used by Xano for defining API queries, functions, scheduled tasks, and data schemas. The language server provides VS Code with features like auto-completion, syntax highlighting, hover documentation, and real-time error checking.
6
-
7
- **Key Facts:**
8
-
9
- - **Size:** ~540 files, 35MB, 457 JavaScript files, 171 test files
10
- - **Language:** JavaScript ES modules (Node.js 20+)
11
- - **Framework:** Chevrotain parser generator + VS Code Language Server Protocol
12
- - **Testing:** Mocha + Chai (1041 tests, comprehensive coverage)
13
- - **Architecture:** Lexer → Parser → Language Server Features
14
-
15
- ## Build Instructions
16
-
17
- ### Dependencies and Setup
18
-
19
- ```bash
20
- npm install # Install dependencies (~2s, always run before any other commands)
21
- ```
22
-
23
- ### Core Commands
24
-
25
- ```bash
26
- npm run lint # ESLint validation (required for CI, ~1s)
27
- npm test # Run all tests (1041 tests, ~45s, required for CI)
28
- npm test -- -g "test name" # Run specific tests
29
- npm run tm # Generate TextMate language definition (optional tool)
30
- ```
31
-
32
- ### Validation Sequence
33
-
34
- Always run in this order for reliable builds:
35
-
36
- 1. `npm install` (always required first)
37
- 2. `npm run lint`
38
- 3. `npm test`
39
-
40
- **Important:** Tests take ~45 seconds to complete. Set adequate timeouts (60+ seconds) for test commands. Clean installs work reliably and are fast after initial package download.
41
-
42
- ### Build Validation
43
-
44
- - **No compilation step required** - pure JavaScript ES modules
45
- - **Node.js 20+ required** (as specified in CI)
46
- - **ES modules** - uses `import`/`export`, requires Node.js with proper module support
47
- - **No build artifacts** - all source files are directly executed
48
-
49
- ### Common Issues & Workarounds
50
-
51
- - **Test timeouts:** Use 60+ second timeouts for `npm test`
52
- - **ES module errors:** Ensure Node.js 20+ with ES module support
53
- - **Dependency conflicts:** Run `rm -rf node_modules && npm install` for clean state
54
- - **3 low-severity npm audit warnings** are known and acceptable
55
-
56
- ## Project Layout & Architecture
57
-
58
- ### Core Directories
59
-
60
- - **`lexer/`** - Token definitions for XanoScript language elements
61
-
62
- - `tokens.js` - Main token registry and export
63
- - `lexer.js` - Chevrotain lexer implementation
64
- - Domain-specific tokens: `api.js`, `db.js`, `cloud.js`, `function.js`, etc.
65
- - `utils.js` - Token creation utilities (`createToken`, `createTokenByName`)
66
-
67
- - **`parser/`** - Grammar rules and parsing logic
68
-
69
- - `base_parser.js` - Core XanoBaseParser extending Chevrotain
70
- - `query_parser.js`, `function_parser.js`, `task_parser.js` - Main parsers
71
- - `attributes/` - Field attributes (description, disabled, sensitive, etc.)
72
- - `clauses/` - Language blocks (stack, input, response, security)
73
- - `definitions/` - Type and column definitions
74
- - `functions/` - Built-in function implementations organized by domain
75
- - `generic/` - Reusable parsing components
76
-
77
- - **Language Server Features**
78
- - `server.js` - Main LSP server setup and capability registration
79
- - `onCompletion/` - Auto-completion logic and content assist
80
- - `onDidChangeContent/` - Live diagnostics and error reporting
81
- - `onHover/` - Documentation and hover information providers
82
- - `onSemanticCheck/` - Syntax highlighting token generation
83
-
84
- ### Configuration Files
85
-
86
- - **`package.json`** - Dependencies, scripts, ES module configuration
87
- - **`eslint.config.js`** - ESLint configuration (ES modules format)
88
- - **`.github/workflows/ci.yml`** - GitHub Actions CI pipeline
89
- - **`.gitignore`** - Standard Node.js exclusions
90
-
91
- ### XanoScript Language Structure
92
-
93
- XanoScript defines these primary constructs:
94
-
95
- - **`query`** - API endpoints with HTTP verbs, input validation, processing logic, responses
96
- - **`function`** - Reusable logic blocks with testing capabilities
97
- - **`task`** - Scheduled operations with cron-like triggers
98
- - **`api_group`** - Collections of related API endpoints
99
- - **`table`** - Database schema definitions with column types
100
-
101
- **Core Language Patterns:**
102
-
103
- ```xs
104
- query my_endpoint verb=GET {
105
- input { text name filters=trim }
106
- stack {
107
- var $result { value = $input.name|upper }
108
- db.add 123 { data = {name: $result} }
109
- }
110
- response = $result
111
- }
112
- ```
113
-
114
- ### Critical Development Patterns
115
-
116
- **Token Creation** (in `lexer/` files):
117
-
118
- ```javascript
119
- export const MyToken = createTokenByName("keyword", {
120
- longer_alt: Identifier,
121
- categories: [Identifier],
122
- });
123
- ```
124
-
125
- **Parser Rules** (in `parser/` files):
126
-
127
- ```javascript
128
- myRule = this.RULE("myRule", () => {
129
- this.CONSUME(MyToken);
130
- this.SUBRULE(this.otherRule);
131
- });
132
- ```
133
-
134
- **Testing Pattern:**
135
-
136
- ```javascript
137
- function parse(inputText) {
138
- const lexResult = lexDocument(inputText);
139
- const parser = new Parser();
140
- parser.input = lexResult.tokens;
141
- parser.myRule();
142
- return parser;
143
- }
144
- ```
145
-
146
- ### Dependencies & Runtime
147
-
148
- - **`chevrotain`** - Parser generator and runtime
149
- - **`vscode-languageserver`** - LSP implementation
150
- - **`lodash-es`** - Utility functions (ES module version)
151
- - **`mocha`/`chai`** - Testing framework
152
- - **Runtime:** Node.js 20+ (ES modules, required for CI compatibility)
153
-
154
- ### Testing Strategy
155
-
156
- - **171 test files** using `.spec.js` naming convention
157
- - **Test organization:** Mirror source structure (`lexer/` tests, `parser/` tests)
158
- - **Example test files:** `lexer/tests/query/valid_sources/`, `parser/tests/function/valid_sources/`
159
- - **Test data:** Real XanoScript files in `valid_sources/` directories
160
- - **CI Integration:** All tests must pass for merge approval
161
-
162
- ### CI/CD Pipeline
163
-
164
- **GitHub Actions** (`.github/workflows/ci.yml`):
165
-
166
- 1. Ubuntu latest, Node.js 20, npm cache enabled
167
- 2. `npm install`
168
- 3. `npm run lint`
169
- 4. `npm test`
170
-
171
- **Pre-commit validation:** Lint and test failures block commits. Always run locally before pushing.
172
-
173
- ### Key Files Reference
174
-
175
- - **Root:** `README.md`, `package.json`, `server.js` (main entry)
176
- - **Core Logic:** `lexer/tokens.js`, `parser/base_parser.js`
177
- - **Examples:** `lexer/tests/*/valid_sources/*.xs`, `parser/tests/*/valid_sources/*.xs`
178
- - **Documentation:** `onHover/functions.md` (function documentation)
179
-
180
- ### Agent Guidelines
181
-
182
- 1. **Always run `npm install` before any build/test commands**
183
- 2. **Use 60+ second timeouts for `npm test`** (1041 tests take time)
184
- 3. **Follow existing patterns** - check similar files in same directory for conventions
185
- 4. **Test incrementally** - use `npm test -- -g "specific test"` during development
186
- 5. **Validate ES module syntax** - use `import`/`export`, not `require()`
187
- 6. **Check CI compatibility** - ensure changes work with Node.js 20
188
- 7. **Trust these instructions** - comprehensive testing validates all commands work correctly
189
-
190
- This language server is production-ready with extensive testing. Focus on understanding the domain-specific language patterns and lexer/parser architecture when making changes.
@@ -1,31 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- pull_request:
8
-
9
- jobs:
10
- xanoscript-language:
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
- - name: Use Node.js
16
- uses: actions/setup-node@v4
17
- with:
18
- node-version: 20
19
- cache: "npm"
20
-
21
- - name: Install language dependencies
22
- run: |
23
- npm install
24
-
25
- - name: Lint language server
26
- run: |
27
- npm run lint
28
-
29
- - name: Test language server
30
- run: |
31
- npm test
package/.husky/pre-commit DELETED
@@ -1 +0,0 @@
1
- npm run lint && npm test
package/CLAUDE.md DELETED
@@ -1,256 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Commands
6
-
7
- ```bash
8
- # Install dependencies (always run first, takes ~2s)
9
- npm install
10
-
11
- # Run tests (1041 tests, ~45s - required for CI)
12
- npm test
13
-
14
- # Run specific test
15
- npm test -- -g "test name"
16
-
17
- # Lint code (required for CI, ~1s)
18
- npm run lint
19
-
20
- # Generate TextMate language definition (optional)
21
- npm run tm
22
- ```
23
-
24
- **Important:** Tests take ~45 seconds. Set adequate timeouts (60+ seconds) for test commands.
25
-
26
- ## Architecture Overview
27
-
28
- This is a Language Server Protocol (LSP) implementation for XanoScript, built on Chevrotain parser generator. The architecture follows: **Lexer → Parser → Language Server Features**.
29
-
30
- ### Core Components
31
-
32
- **Lexer (`lexer/`)**: Token definitions and lexical analysis
33
-
34
- - `tokens.js` - Main token registry
35
- - `lexer.js` - Chevrotain lexer implementation
36
- - Domain tokens: `api.js`, `db.js`, `cloud.js`, `function.js`, etc.
37
- - `utils.js` - Token creation utilities (`createToken`, `createTokenByName`)
38
-
39
- **Parser (`parser/`)**: Grammar rules and parsing logic
40
-
41
- - `base_parser.js` - Core XanoBaseParser extending Chevrotain
42
- - Main parsers: `query_parser.js`, `function_parser.js`, `task_parser.js`, `api_group_parser.js`, `table_parser.js`, `workflow_test_parser.js`, `table_trigger_parser.js`
43
- - `attributes/` - Field attributes (description, disabled, sensitive)
44
- - `clauses/` - Language blocks (stack, input, response, security, auth, cache, history, index, schema, test)
45
- - `definitions/` - Type and column definitions
46
- - `functions/` - Built-in functions organized by domain (api, array, cloud, controls, db, debug, expect, math, object, redis, time, util, variable)
47
- - `generic/` - Reusable parsing components
48
-
49
- **Language Server (`server.js` + feature directories)**:
50
-
51
- - `onCompletion/` - Auto-completion logic
52
- - `onDidChangeContent/` - Live diagnostics and error reporting
53
- - `onHover/` - Documentation and hover information
54
- - `onSemanticCheck/` - Syntax highlighting token generation
55
-
56
- ### XanoScript Object Types
57
-
58
- Primary constructs parsed by dedicated parsers:
59
-
60
- - **query** - API endpoints with HTTP verbs, input validation, processing logic, responses
61
- - **function** - Reusable logic blocks with testing capabilities
62
- - **task** - Scheduled operations with cron-like triggers
63
- - **api_group** - Collections of related API endpoints
64
- - **table** - Database schema definitions with column types
65
- - **workflow_test** - Test definitions for workflows
66
- - **table_trigger** - Database table trigger definitions
67
-
68
- ## Adding New Features
69
-
70
- ### New Top-Level Parser (e.g., `run.job`, `run.service`)
71
-
72
- Follow this step-by-step process:
73
-
74
- **1. Create lexer tokens (`lexer/my_feature.js`)**
75
-
76
- ```javascript
77
- import { Identifier } from "./identifier.js";
78
- import { createTokenByName } from "./utils.js";
79
-
80
- export const MyToken = createTokenByName("my_keyword", {
81
- longer_alt: Identifier,
82
- categories: [Identifier],
83
- });
84
-
85
- export const MyFeatureTokens = [MyToken];
86
-
87
- export function mapTokenToType(token) {
88
- switch (token) {
89
- case MyToken.name:
90
- return "keyword";
91
- default:
92
- return null;
93
- }
94
- }
95
- ```
96
-
97
- **2. Register tokens in `lexer/tokens.js`**
98
-
99
- - Import tokens and mapper at the top
100
- - Add `...MyFeatureTokens` to `allTokens` array
101
- - Add `mapMyFeatureTokenToType` to `tokenMappers` array
102
-
103
- **3. Create parser (`parser/my_feature_parser.js`)**
104
-
105
- ```javascript
106
- import { StringLiteral } from "../lexer/literal.js";
107
- import { MyToken } from "../lexer/my_feature.js";
108
- import { Identifier, NewlineToken } from "../lexer/tokens.js";
109
-
110
- export function myFeatureDeclaration($) {
111
- return () => {
112
- $.sectionStack.push("myFeatureDeclaration");
113
- $.SUBRULE($.optionalCommentBlockFn);
114
-
115
- const parent = $.CONSUME(MyToken);
116
- $.OR([
117
- { ALT: () => $.CONSUME(StringLiteral) },
118
- { ALT: () => $.CONSUME(Identifier) },
119
- ]);
120
-
121
- // Use schemaParseAttributeFn for body with declarative schema
122
- $.SUBRULE($.schemaParseAttributeFn, {
123
- ARGS: [
124
- parent,
125
- {
126
- required_attr: "[string]",
127
- "optional_attr?": "[boolean]",
128
- "nested?": {
129
- name: "[string]",
130
- "value?": { "[string]": "[constant]" },
131
- },
132
- "array_of_strings?": ["[string]"],
133
- },
134
- ],
135
- });
136
-
137
- $.MANY2(() => $.CONSUME2(NewlineToken));
138
- $.sectionStack.pop();
139
- };
140
- }
141
- ```
142
-
143
- **4. Register parser in `parser/register.js`**
144
-
145
- ```javascript
146
- import { myFeatureDeclaration } from "./my_feature_parser.js";
147
- // In register function:
148
- $.myFeatureDeclaration = $.RULE(
149
- "myFeatureDeclaration",
150
- myFeatureDeclaration($)
151
- );
152
- ```
153
-
154
- **5. Add scheme detection in `utils.js`**
155
-
156
- ```javascript
157
- const schemeByFirstWord = {
158
- // ... existing entries
159
- my_feature: "my_feature",
160
- };
161
- ```
162
-
163
- **6. Route scheme in `parser/parser.js`**
164
-
165
- ```javascript
166
- case "my_feature":
167
- parser.myFeatureDeclaration();
168
- return parser;
169
- ```
170
-
171
- **7. Write tests (`parser/my_feature_parser.spec.js`)**
172
-
173
- ```javascript
174
- import { expect } from "chai";
175
- import { describe, it } from "mocha";
176
- import { xanoscriptParser } from "./parser.js";
177
-
178
- describe("my_feature", () => {
179
- it("should parse a basic my_feature", () => {
180
- const parser = xanoscriptParser(`my_feature "name" {
181
- required_attr = "value"
182
- }`);
183
- expect(parser.errors).to.be.empty;
184
- });
185
- });
186
- ```
187
-
188
- ### Schema Definition Types (for `schemaParseAttributeFn`)
189
-
190
- | Schema | Description | Example |
191
- | ------------------------------ | ---------------------------------- | ------------------------- |
192
- | `"[string]"` | String literal | `"hello"` |
193
- | `"[number]"` | Number literal | `123` |
194
- | `"[boolean]"` | Boolean value | `true` / `false` |
195
- | `"[constant]"` | Value expression (no variables) | `"text"`, `123`, `{a: 1}` |
196
- | `"[expression]"` | Any expression including variables | `$var`, `$input.name` |
197
- | `["[string]"]` | Array of strings | `["a", "b"]` |
198
- | `{ "[string]": "[constant]" }` | Object with string keys | `{key: "value"}` |
199
- | `"attr?"` | Optional attribute | May be omitted |
200
- | `"!attr"` | Can be disabled | `!attr = value` |
201
-
202
- ### New Keyword/Function
203
-
204
- 1. Add token definition in appropriate `lexer/` file
205
- 2. Create function implementation in `parser/functions/[domain]/`
206
- 3. Register in parent clause or parser
207
- 4. Add comprehensive tests in corresponding `.spec.js` file
208
-
209
- ### Token Creation Pattern
210
-
211
- ```javascript
212
- export const MyToken = createTokenByName("keyword", {
213
- longer_alt: Identifier,
214
- categories: [Identifier],
215
- });
216
- ```
217
-
218
- ### Parser Rule Pattern
219
-
220
- ```javascript
221
- myRule = this.RULE("myRule", () => {
222
- this.CONSUME(MyToken);
223
- this.SUBRULE(this.otherRule);
224
- });
225
- ```
226
-
227
- ## Testing Guidelines
228
-
229
- - Tests use Mocha + Chai framework
230
- - 171 test files with `.spec.js` naming convention
231
- - Test structure mirrors source structure
232
- - Real XanoScript examples in `valid_sources/` directories
233
- - Tests are explicit and straightforward - avoid dynamic test generation
234
- - CI requires all tests to pass
235
-
236
- ### Test Pattern
237
-
238
- ```javascript
239
- function parse(inputText) {
240
- const lexResult = lexDocument(inputText);
241
- const parser = new Parser();
242
- parser.input = lexResult.tokens;
243
- parser.myRule();
244
- return parser;
245
- }
246
- ```
247
-
248
- ## Development Notes
249
-
250
- - **Node.js 20+ required** for ES module support
251
- - **No compilation step** - pure JavaScript ES modules
252
- - Use `import`/`export`, not `require()`
253
- - Follow existing code conventions when adding features
254
- - Check neighboring files for patterns and conventions
255
- - Never assume a library is available - check `package.json` first
256
- - 3 low-severity npm audit warnings are known and acceptable
package/eslint.config.js DELETED
@@ -1,24 +0,0 @@
1
- import pluginJs from "@eslint/js";
2
- import simpleImportSort from "eslint-plugin-simple-import-sort";
3
- import unusedImports from "eslint-plugin-unused-imports";
4
- import globals from "globals";
5
-
6
- /** @type {import('eslint').Linter.Config[]} */
7
- export default [
8
- {
9
- languageOptions: { globals: globals.browser },
10
- plugins: {
11
- "simple-import-sort": simpleImportSort,
12
- "unused-imports": unusedImports,
13
- },
14
- rules: {
15
- "simple-import-sort/imports": ["error",
16
- {
17
- "groups": [["^\\u0000", "^node:", "^@?\\w", "^", "^\\."]]
18
- }
19
- ],
20
- "unused-imports/no-unused-imports": "error",
21
- }
22
- },
23
- pluginJs.configs.recommended,
24
- ];