@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.
- package/lexer/tokens.js +22 -3
- package/package.json +25 -1
- package/.claude/memory/feedback_no_git.md +0 -11
- package/.claude/settings.local.json +0 -21
- package/.github/copilot-instructions.md +0 -190
- package/.github/workflows/ci.yml +0 -31
- package/.husky/pre-commit +0 -1
- package/CLAUDE.md +0 -256
- package/eslint.config.js +0 -24
- package/lexer/comment.spec.js +0 -77
- package/lexer/multiline.spec.js +0 -179
- package/lexer/tests/query/query_lexer.spec.js +0 -36
- package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
- package/lexer/tests/query/valid_sources/db_query.xs +0 -77
- package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
- package/lexer/tests/query/valid_sources/header_query.xs +0 -15
- package/lexer/tests/table/basic_table.xs +0 -17
- package/lexer/tests/table/empty_table.xs +0 -3
- package/lexer/tests/table/table_lexer.spec.js +0 -324
- package/lexer/utils.spec.js +0 -61
- package/onCompletion/contentAssist.spec.js +0 -275
- package/onDefinition/onDefinition.spec.js +0 -313
- package/onHover/FilterMessageProvider.spec.js +0 -85
- package/onHover/FunctionMessageProvider.spec.js +0 -128
- package/onHover/InputFilterMessageProvider.spec.js +0 -329
- package/onHover/QueryFilterMessageProvider.spec.js +0 -164
- package/onHover/onHoverDocument.spec.js +0 -660
- package/parser/addon_parser.spec.js +0 -88
- package/parser/agent_parser.spec.js +0 -599
- package/parser/agent_trigger_parser.spec.js +0 -525
- package/parser/api_group_parser.spec.js +0 -137
- package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
- package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
- package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
- package/parser/attributes/docsFieldAttribute.spec.js +0 -44
- package/parser/attributes/guidFieldAttribute.spec.js +0 -93
- package/parser/attributes/inputFilterFn.spec.js +0 -39
- package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
- package/parser/attributes/valueFieldAttribute.spec.js +0 -54
- package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
- package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
- package/parser/branch_parser.spec.js +0 -34
- package/parser/clauses/agentClause.spec.js +0 -34
- package/parser/clauses/authClause.spec.js +0 -39
- package/parser/clauses/cacheClause.spec.js +0 -103
- package/parser/clauses/canonicalClause.spec.js +0 -34
- package/parser/clauses/channelClause.spec.js +0 -34
- package/parser/clauses/dbTableClause.spec.js +0 -34
- package/parser/clauses/historyClause.spec.js +0 -53
- package/parser/clauses/indexClause.spec.js +0 -47
- package/parser/clauses/inputClause.spec.js +0 -96
- package/parser/clauses/mcpServerClause.spec.js +0 -34
- package/parser/clauses/middlewareClause.spec.js +0 -161
- package/parser/clauses/nakedStackFn.spec.js +0 -73
- package/parser/clauses/responseClause.spec.js +0 -47
- package/parser/clauses/scheduleClause.spec.js +0 -71
- package/parser/clauses/schemaClause.spec.js +0 -102
- package/parser/clauses/testClause.spec.js +0 -69
- package/parser/clauses/viewClause.spec.js +0 -163
- package/parser/definitions/arraySlice.spec.js +0 -49
- package/parser/definitions/columnDefinition.spec.js +0 -199
- package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
- package/parser/definitions/enumColumnDefinition.spec.js +0 -108
- package/parser/definitions/filterDefinition.spec.js +0 -43
- package/parser/definitions/objectColumnDefinition.spec.js +0 -118
- package/parser/function_parser.spec.js +0 -131
- package/parser/functions/actionCallFn.spec.js +0 -51
- package/parser/functions/addonCallFn.spec.js +0 -41
- package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
- package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
- package/parser/functions/aiFn.spec.js +0 -51
- package/parser/functions/api/apiCallFn.spec.js +0 -62
- package/parser/functions/api/apiLambdaFn.spec.js +0 -63
- package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
- package/parser/functions/api/apiRequestFn.spec.js +0 -113
- package/parser/functions/api/apiStreamFn.spec.js +0 -44
- package/parser/functions/api/webflowRequestFn.spec.js +0 -114
- package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
- package/parser/functions/array/arrayFindFn.spec.js +0 -44
- package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
- package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
- package/parser/functions/array/arrayMapFn.spec.js +0 -37
- package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
- package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
- package/parser/functions/array/arrayUnionFn.spec.js +0 -22
- package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
- package/parser/functions/array/arrayValueOnly.spec.js +0 -61
- package/parser/functions/array/valueAttrOnly.spec.js +0 -61
- package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
- package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
- package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
- package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
- package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
- package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
- package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
- package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
- package/parser/functions/controls/awaitFn.spec.js +0 -48
- package/parser/functions/controls/conditionalFn.spec.js +0 -188
- package/parser/functions/controls/forEachFn.spec.js +0 -109
- package/parser/functions/controls/forFn.spec.js +0 -85
- package/parser/functions/controls/functionRunFn.spec.js +0 -77
- package/parser/functions/controls/groupFn.spec.js +0 -63
- package/parser/functions/controls/preconditionFn.spec.js +0 -107
- package/parser/functions/controls/returnFn.spec.js +0 -44
- package/parser/functions/controls/switchFn.spec.js +0 -118
- package/parser/functions/controls/throwFn.spec.js +0 -56
- package/parser/functions/controls/tryCatchFn.spec.js +0 -193
- package/parser/functions/controls/whileFn.spec.js +0 -94
- package/parser/functions/db/dbAddFn.spec.js +0 -72
- package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
- package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
- package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
- package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
- package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
- package/parser/functions/db/dbDelFn.spec.js +0 -67
- package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
- package/parser/functions/db/dbEditFn.spec.js +0 -122
- package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
- package/parser/functions/db/dbGetFn.spec.js +0 -117
- package/parser/functions/db/dbHasFn.spec.js +0 -62
- package/parser/functions/db/dbPatchFn.spec.js +0 -88
- package/parser/functions/db/dbQueryFn.spec.js +0 -380
- package/parser/functions/db/dbSchemaFn.spec.js +0 -42
- package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
- package/parser/functions/db/dbTransactionFn.spec.js +0 -63
- package/parser/functions/db/dbTruncateFn.spec.js +0 -42
- package/parser/functions/debug/debugLogFn.spec.js +0 -44
- package/parser/functions/debug/debugStopFn.spec.js +0 -44
- package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
- package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
- package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
- package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
- package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
- package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
- package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
- package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
- package/parser/functions/math/allMathFn.spec.js +0 -100
- package/parser/functions/middlewareCallFn.spec.js +0 -44
- package/parser/functions/object/objectEntriesFn.spec.js +0 -44
- package/parser/functions/object/objectKeysFn.spec.js +0 -44
- package/parser/functions/object/objectValuesFn.spec.js +0 -44
- package/parser/functions/redis/redisCountFn.spec.js +0 -58
- package/parser/functions/redis/redisDecrFn.spec.js +0 -47
- package/parser/functions/redis/redisDelFn.spec.js +0 -58
- package/parser/functions/redis/redisGetFn.spec.js +0 -67
- package/parser/functions/redis/redisHasFn.spec.js +0 -58
- package/parser/functions/redis/redisIncrFn.spec.js +0 -74
- package/parser/functions/redis/redisKeysFn.spec.js +0 -67
- package/parser/functions/redis/redisPopFn.spec.js +0 -75
- package/parser/functions/redis/redisPushFn.spec.js +0 -71
- package/parser/functions/redis/redisRangeFn.spec.js +0 -80
- package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
- package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
- package/parser/functions/redis/redisSetFn.spec.js +0 -89
- package/parser/functions/redis/redisShiftFn.spec.js +0 -75
- package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
- package/parser/functions/schema/schemaFn.spec.js +0 -92
- package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
- package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
- package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
- package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
- package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
- package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
- package/parser/functions/schema/utils.spec.js +0 -27
- package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
- package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
- package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
- package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
- package/parser/functions/security/securityDecryptFn.spec.js +0 -24
- package/parser/functions/security/securityEncryptFn.spec.js +0 -24
- package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
- package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
- package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
- package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
- package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
- package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
- package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
- package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
- package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
- package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
- package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
- package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
- package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
- package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
- package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
- package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
- package/parser/functions/toolCallFn.spec.js +0 -28
- package/parser/functions/triggerCallFn.spec.js +0 -51
- package/parser/functions/unitExpectFn.spec.js +0 -21
- package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
- package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
- package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
- package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
- package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
- package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
- package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
- package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
- package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
- package/parser/functions/util/utilSleepFn.spec.js +0 -44
- package/parser/functions/util/utilTemplateFn.spec.js +0 -78
- package/parser/functions/varFn.spec.js +0 -332
- package/parser/functions/workflowExpectFn.spec.js +0 -32
- package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
- package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
- package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
- package/parser/functions/zip/zipExtractFn.spec.js +0 -52
- package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
- package/parser/generic/arrayWithValues.spec.js +0 -72
- package/parser/generic/asVariable.spec.js +0 -117
- package/parser/generic/assignableVariableAs.spec.js +0 -126
- package/parser/generic/assignableVariableProperty.spec.js +0 -138
- package/parser/generic/castedValue.spec.js +0 -29
- package/parser/generic/chainedIdentifier.spec.js +0 -89
- package/parser/generic/completeAuthVariable.spec.js +0 -23
- package/parser/generic/completeEnvVariable.spec.js +0 -99
- package/parser/generic/completeErrorVariable.spec.js +0 -17
- package/parser/generic/completeInputVariable.spec.js +0 -53
- package/parser/generic/expressionFn.spec.js +0 -605
- package/parser/generic/filterFn.spec.js +0 -47
- package/parser/generic/functionAttrReq.spec.js +0 -353
- package/parser/generic/longFormVariable.spec.js +0 -25
- package/parser/generic/minimalFnBody.spec.js +0 -47
- package/parser/generic/mockAttribute.spec.js +0 -57
- package/parser/generic/multilineFilterFn.spec.js +0 -51
- package/parser/generic/objectWithAttributes.spec.js +0 -147
- package/parser/generic/requiredValueFnBody.spec.js +0 -56
- package/parser/generic/shortFormVariable.spec.js +0 -27
- package/parser/generic/stringArray.spec.js +0 -55
- package/parser/generic/tagsAttribute.spec.js +0 -47
- package/parser/generic/variableOnly.spec.js +0 -47
- package/parser/mcp_server_parser.spec.js +0 -478
- package/parser/mcp_server_trigger_parser.spec.js +0 -396
- package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
- package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
- package/parser/middleware_parser.spec.js +0 -230
- package/parser/multidoc.spec.js +0 -946
- package/parser/query_parser.spec.js +0 -202
- package/parser/realtime_channel_parser.spec.js +0 -20
- package/parser/realtime_trigger_parser.spec.js +0 -469
- package/parser/run_parser.spec.js +0 -100
- package/parser/table_parser.spec.js +0 -176
- package/parser/table_trigger_parser.spec.js +0 -478
- package/parser/task_parser.spec.js +0 -94
- package/parser/tests/agent/agent_parser.spec.js +0 -52
- package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
- package/parser/tests/api_group/api_group_parser.spec.js +0 -52
- package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
- package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
- package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
- package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
- package/parser/tests/function/function_parser.spec.js +0 -52
- package/parser/tests/function/valid_sources/all_controls.xs +0 -68
- package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
- package/parser/tests/function/valid_sources/all_storage.xs +0 -45
- package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
- package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
- package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
- package/parser/tests/function/valid_sources/filter_query.xs +0 -82
- package/parser/tests/function/valid_sources/large_regex.xs +0 -13
- package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
- package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
- package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
- package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
- package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
- package/parser/tests/function/valid_sources/webflow.xs +0 -18
- package/parser/tests/multidoc/multidoc_parser.spec.js +0 -55
- package/parser/tests/multidoc/valid_sources/function_stack.xs +0 -130603
- package/parser/tests/query/query_parser.spec.js +0 -54
- package/parser/tests/query/valid_sources/all_basics.xs +0 -51
- package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
- package/parser/tests/query/valid_sources/all_db.xs +0 -102
- package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
- package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
- package/parser/tests/query/valid_sources/all_math.xs +0 -53
- package/parser/tests/query/valid_sources/all_object.xs +0 -25
- package/parser/tests/query/valid_sources/all_redis.xs +0 -106
- package/parser/tests/query/valid_sources/all_security.xs +0 -105
- package/parser/tests/query/valid_sources/all_stream.xs +0 -69
- package/parser/tests/query/valid_sources/all_text.xs +0 -54
- package/parser/tests/query/valid_sources/all_util.xs +0 -66
- package/parser/tests/query/valid_sources/all_zip.xs +0 -39
- package/parser/tests/query/valid_sources/arrays.xs +0 -33
- package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
- package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
- package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
- package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
- package/parser/tests/query/valid_sources/query_cache.xs +0 -34
- package/parser/tests/query/valid_sources/query_example.xs +0 -43
- package/parser/tests/query/valid_sources/query_mini.xs +0 -11
- package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
- package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
- package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
- package/parser/tests/table/table_parser.spec.js +0 -52
- package/parser/tests/table/valid_sources/account.xs +0 -31
- package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
- package/parser/tests/table/valid_sources/basic_table.xs +0 -15
- package/parser/tests/table/valid_sources/empty_object.xs +0 -17
- package/parser/tests/table/valid_sources/empty_table.xs +0 -3
- package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
- package/parser/tests/table/valid_sources/relation.xs +0 -44
- package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
- package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
- package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
- package/parser/tests/table/valid_sources/view_table.xs +0 -62
- package/parser/tests/task/task_parser.spec.js +0 -53
- package/parser/tests/task/valid_sources/active_event.xs +0 -11
- package/parser/tests/task/valid_sources/all_events.xs +0 -17
- package/parser/tests/task/valid_sources/create_leak.xs +0 -165
- package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
- package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
- package/parser/tests/variable_test/coverage_check.xs +0 -293
- package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
- package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
- package/parser/tool_parser.spec.js +0 -115
- package/parser/variableValidator.spec.js +0 -179
- package/parser/workflow_test_parser.spec.js +0 -136
- package/parser/workspace_parser.spec.js +0 -142
- package/parser/workspace_trigger_parser.spec.js +0 -332
- package/toTmLanguage.js +0 -75
- package/utils.spec.js +0 -369
- package/workspace/crossFileValidator.spec.js +0 -654
- package/workspace/referenceTracking.spec.js +0 -420
- package/workspace/workspaceIndex.spec.js +0 -189
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.descriptionFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("descriptionFieldAttribute", () => {
|
|
15
|
-
it("descriptionFieldAttribute accepts a string literal", () => {
|
|
16
|
-
const parser = parse('description = "some description goes here"');
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("descriptionFieldAttribute rejects identifier", () => {
|
|
21
|
-
const parser = parse("description = something");
|
|
22
|
-
expect(parser.errors).to.not.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("descriptionFieldAttribute rejects digit", () => {
|
|
26
|
-
const parser = parse("description = 123");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("descriptionFieldAttribute can be compact", () => {
|
|
31
|
-
const parser = parse('description="another description"');
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("descriptionFieldAttribute does not require a new line", () => {
|
|
36
|
-
const parser = parse('description="some description"');
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.disabledFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("disabledFieldAttribute", () => {
|
|
15
|
-
it("disabledFieldAttribute accepts a boolean", () => {
|
|
16
|
-
const parser = parse("disabled = true");
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("disabledFieldAttribute rejects identifier", () => {
|
|
21
|
-
const parser = parse("disabled = something");
|
|
22
|
-
expect(parser.errors).to.not.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("disabledFieldAttribute rejects digit", () => {
|
|
26
|
-
const parser = parse("disabled = 123");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("disabledFieldAttribute can be compact", () => {
|
|
31
|
-
const parser = parse('disabled=false"');
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.docsFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("docsFieldAttribute", () => {
|
|
15
|
-
it("docsFieldAttribute accepts a string literal", () => {
|
|
16
|
-
const parser = parse('docs = "some docs goes here"');
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("docsFieldAttribute rejects identifier", () => {
|
|
21
|
-
const parser = parse("docs = something");
|
|
22
|
-
expect(parser.errors).to.not.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("docsFieldAttribute rejects digit", () => {
|
|
26
|
-
const parser = parse("docs = 123");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("docsFieldAttribute can be compact", () => {
|
|
31
|
-
const parser = parse('docs="another docs"');
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("docsFieldAttribute can be multiline", () => {
|
|
36
|
-
const parser = parse('docs="""\nanother docs\n"""');
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("docsFieldAttribute does not require a new line", () => {
|
|
41
|
-
const parser = parse('docs="some docs"');
|
|
42
|
-
expect(parser.errors).to.be.empty;
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { xanoscriptParser } from "../parser.js";
|
|
4
|
-
|
|
5
|
-
describe("guidFieldAttribute", () => {
|
|
6
|
-
it("should parse guid in a table", () => {
|
|
7
|
-
const parser = xanoscriptParser(`table "foo" {
|
|
8
|
-
guid = "tgGYuUFKbBz4_6DIkDR5hUUCRno"
|
|
9
|
-
auth = false
|
|
10
|
-
schema {
|
|
11
|
-
int id
|
|
12
|
-
}
|
|
13
|
-
}`);
|
|
14
|
-
expect(parser.errors).to.be.empty;
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("should parse guid in a function", () => {
|
|
18
|
-
const parser = xanoscriptParser(`function "my/function" {
|
|
19
|
-
guid = "dg4egGY_sadclkj231af32"
|
|
20
|
-
input {
|
|
21
|
-
}
|
|
22
|
-
stack {
|
|
23
|
-
}
|
|
24
|
-
response = null
|
|
25
|
-
}`);
|
|
26
|
-
expect(parser.errors).to.be.empty;
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("should parse guid in a query", () => {
|
|
30
|
-
const parser = xanoscriptParser(`query "test" verb = GET {
|
|
31
|
-
guid = "abc123def456"
|
|
32
|
-
api_group = "default"
|
|
33
|
-
input {
|
|
34
|
-
}
|
|
35
|
-
stack {
|
|
36
|
-
}
|
|
37
|
-
response = null
|
|
38
|
-
}`);
|
|
39
|
-
expect(parser.errors).to.be.empty;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it("should parse guid in a task", () => {
|
|
43
|
-
const parser = xanoscriptParser(`task "my_task" {
|
|
44
|
-
guid = "task_guid_123"
|
|
45
|
-
stack {
|
|
46
|
-
}
|
|
47
|
-
}`);
|
|
48
|
-
expect(parser.errors).to.be.empty;
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("should parse guid in an api_group", () => {
|
|
52
|
-
const parser = xanoscriptParser(`api_group "my_group" {
|
|
53
|
-
guid = "api_group_guid_123"
|
|
54
|
-
}`);
|
|
55
|
-
expect(parser.errors).to.be.empty;
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("should parse guid in a middleware", () => {
|
|
59
|
-
const parser = xanoscriptParser(`middleware "my_mw" {
|
|
60
|
-
guid = "mw_guid_123"
|
|
61
|
-
input {
|
|
62
|
-
}
|
|
63
|
-
stack {
|
|
64
|
-
}
|
|
65
|
-
response = null
|
|
66
|
-
}`);
|
|
67
|
-
expect(parser.errors).to.be.empty;
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it("should not allow duplicate guid", () => {
|
|
71
|
-
const parser = xanoscriptParser(`function "test" {
|
|
72
|
-
guid = "first"
|
|
73
|
-
guid = "second"
|
|
74
|
-
input {
|
|
75
|
-
}
|
|
76
|
-
stack {
|
|
77
|
-
}
|
|
78
|
-
response = null
|
|
79
|
-
}`);
|
|
80
|
-
expect(parser.errors).to.not.be.empty;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it("should work without guid (optional)", () => {
|
|
84
|
-
const parser = xanoscriptParser(`function "test" {
|
|
85
|
-
input {
|
|
86
|
-
}
|
|
87
|
-
stack {
|
|
88
|
-
}
|
|
89
|
-
response = null
|
|
90
|
-
}`);
|
|
91
|
-
expect(parser.errors).to.be.empty;
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.inputFilterFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("inputFilterFn", () => {
|
|
15
|
-
it("inputFilterFn can reference registered filters", () => {
|
|
16
|
-
const parser = parse("trim");
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("inputFilterFn accepts an argument", () => {
|
|
21
|
-
const parser = parse("max:12");
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("inputFilterFn accepts regexp arguments", () => {
|
|
26
|
-
const parser = parse("pattern:/[^213]*/");
|
|
27
|
-
expect(parser.errors).to.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("inputFilterFn accepts many args", () => {
|
|
31
|
-
const parser = parse("prevent:foo:bar");
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("inputFilterFn accepts dbo link", () => {
|
|
36
|
-
const parser = parse("@:dbo=12");
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.sensitiveFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("sensitiveFieldAttribute", () => {
|
|
15
|
-
it("sensitiveFieldAttribute accepts a true value", () => {
|
|
16
|
-
const parser = parse("sensitive = true");
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("sensitiveFieldAttribute accepts a true value", () => {
|
|
21
|
-
const parser = parse("sensitive = false");
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("sensitiveFieldAttribute rejects anything else", () => {
|
|
26
|
-
const parser = parse("sensitive = something");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("sensitiveFieldAttribute rejects digit", () => {
|
|
31
|
-
const parser = parse("sensitive = 123");
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("sensitiveFieldAttribute can be compact", () => {
|
|
36
|
-
const parser = parse("sensitive=true");
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.valueFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("valueFieldAttribute", () => {
|
|
15
|
-
it("valueFieldAttribute accepts a string literal", () => {
|
|
16
|
-
const parser = parse('value = "some value goes here"');
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("valueFieldAttribute accepts a digit", () => {
|
|
21
|
-
const parser = parse("value = 123");
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("valueFieldAttribute accepts a float", () => {
|
|
26
|
-
const parser = parse("value = 12.3");
|
|
27
|
-
expect(parser.errors).to.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("valueFieldAttribute accepts a boolean", () => {
|
|
31
|
-
const parser = parse("value = false");
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("valueFieldAttribute accepts a variable", () => {
|
|
36
|
-
const parser = parse("value = $variable");
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("valueFieldAttribute can be compact", () => {
|
|
41
|
-
const parser = parse('value="another value"');
|
|
42
|
-
expect(parser.errors).to.be.empty;
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("valueFieldAttribute does not require a new line", () => {
|
|
46
|
-
const parser = parse('value="some value"');
|
|
47
|
-
expect(parser.errors).to.be.empty;
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("valueFieldAttribute rejects identifier", () => {
|
|
51
|
-
const parser = parse("value = something");
|
|
52
|
-
expect(parser.errors).to.not.be.empty;
|
|
53
|
-
});
|
|
54
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.valuesFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("valuesFieldAttribute", () => {
|
|
15
|
-
it("valuesFieldAttribute accepts a string literal", () => {
|
|
16
|
-
const parser = parse('values = [ "some", "values" ]');
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("valuesFieldAttribute accepts multiple line feeds", () => {
|
|
21
|
-
const parser = parse('values = [ "some", "values" ]');
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("valuesFieldAttribute rejects identifier", () => {
|
|
26
|
-
const parser = parse("values = something");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("valuesFieldAttribute rejects digit", () => {
|
|
31
|
-
const parser = parse("values = 123");
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("valuesFieldAttribute can be compact", () => {
|
|
36
|
-
const parser = parse('values=["another","description"]');
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("valuesFieldAttribute does not requires a new line", () => {
|
|
41
|
-
const parser = parse('values = [ "some", "values" ]');
|
|
42
|
-
expect(parser.errors).to.be.empty;
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.visibilityFieldAttribute();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("visibilityFieldAttribute", () => {
|
|
15
|
-
it("visibilityFieldAttribute accepts a private value", () => {
|
|
16
|
-
const parser = parse(`visibility = "private"`);
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("visibilityFieldAttribute accepts an internal value", () => {
|
|
21
|
-
const parser = parse(`visibility = "internal"`);
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("visibilityFieldAttribute accepts a public value", () => {
|
|
26
|
-
const parser = parse(`visibility = "public"`);
|
|
27
|
-
expect(parser.errors).to.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("visibilityFieldAttribute rejects anything else", () => {
|
|
31
|
-
const parser = parse(`visibility = "something"`);
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("visibilityFieldAttribute rejects digit", () => {
|
|
36
|
-
const parser = parse("visibility = 123");
|
|
37
|
-
expect(parser.errors).to.not.be.empty;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("visibilityFieldAttribute can be compact", () => {
|
|
41
|
-
const parser = parse(`visibility="private"`);
|
|
42
|
-
expect(parser.errors).to.be.empty;
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { xanoscriptParser } from "./parser.js";
|
|
4
|
-
|
|
5
|
-
describe("branch_parser", () => {
|
|
6
|
-
it("should parse a complete branch with identifier", () => {
|
|
7
|
-
const parser = xanoscriptParser(`// This is the original branch.
|
|
8
|
-
branch v1 {
|
|
9
|
-
color = "#fff3cd"
|
|
10
|
-
middleware = {
|
|
11
|
-
function: {pre: [{name: "test middleware 2"}], post: []}
|
|
12
|
-
query : {
|
|
13
|
-
pre : [{name: "test middleware 1"}]
|
|
14
|
-
post: [{name: "test middleware 2"}]
|
|
15
|
-
}
|
|
16
|
-
task : {
|
|
17
|
-
pre : [{name: "test middleware 2"}]
|
|
18
|
-
post: [{name: "test middleware 1"}]
|
|
19
|
-
}
|
|
20
|
-
tool : {pre: [], post: [{name: "test middleware 2"}]}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
history = {
|
|
24
|
-
function : false
|
|
25
|
-
query : 100
|
|
26
|
-
task : 100
|
|
27
|
-
tool : 100
|
|
28
|
-
trigger : false
|
|
29
|
-
middleware: false
|
|
30
|
-
}
|
|
31
|
-
}`);
|
|
32
|
-
expect(parser.errors).to.be.empty;
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.agentClause();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("agentClause", () => {
|
|
15
|
-
it("agentClause accepts string", () => {
|
|
16
|
-
const parser = parse(`agent = "test"`);
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("agentClause doesn't allow empty string with double quotes", () => {
|
|
21
|
-
const parser = parse(`agent = ""`);
|
|
22
|
-
expect(parser.errors).to.not.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("agentClause doesn't allow empty string with single quotes", () => {
|
|
26
|
-
const parser = parse(`agent = ''`);
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("agentClause only allows strings (not numerical)", () => {
|
|
31
|
-
const parser = parse(`agent = '123'`);
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.authClause();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("authClause", () => {
|
|
15
|
-
it("authClause accepts a true value", () => {
|
|
16
|
-
const parser = parse("auth = true");
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("authClause accepts a true value", () => {
|
|
21
|
-
const parser = parse("auth = false");
|
|
22
|
-
expect(parser.errors).to.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("authClause rejects anything else", () => {
|
|
26
|
-
const parser = parse("auth = something");
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("authClause rejects digit", () => {
|
|
31
|
-
const parser = parse("auth = 123");
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("authClause can be compact", () => {
|
|
36
|
-
const parser = parse("auth=true");
|
|
37
|
-
expect(parser.errors).to.be.empty;
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.cacheClause();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("cacheClause", () => {
|
|
15
|
-
it("cacheClause defines the cache", () => {
|
|
16
|
-
const parser = parse(`cache = {
|
|
17
|
-
ttl : 3600
|
|
18
|
-
input : true
|
|
19
|
-
auth : true
|
|
20
|
-
datasource: true
|
|
21
|
-
ip : false
|
|
22
|
-
headers : ["foo=bar"]
|
|
23
|
-
env : ["some_var"]
|
|
24
|
-
}`);
|
|
25
|
-
expect(parser.errors).to.be.empty;
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("cacheClause headers and env are optionals", () => {
|
|
29
|
-
const parser = parse(`cache = {
|
|
30
|
-
ttl : 3600
|
|
31
|
-
input : true
|
|
32
|
-
auth : true
|
|
33
|
-
datasource: true
|
|
34
|
-
ip : false
|
|
35
|
-
}`);
|
|
36
|
-
expect(parser.errors).to.be.empty;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("cacheClause ttl should be int", () => {
|
|
40
|
-
const parser = parse(`cache = {
|
|
41
|
-
ttl : "foo"
|
|
42
|
-
input : true
|
|
43
|
-
auth : true
|
|
44
|
-
datasource: true
|
|
45
|
-
ip : false
|
|
46
|
-
headers : ["foo=bar"]
|
|
47
|
-
env : ["some_var"]
|
|
48
|
-
}`);
|
|
49
|
-
expect(parser.errors).to.not.be.empty;
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("cacheClause input should be boolean", () => {
|
|
53
|
-
const parser = parse(`cache = {
|
|
54
|
-
ttl : 3600
|
|
55
|
-
input : "foo"
|
|
56
|
-
auth : true
|
|
57
|
-
datasource: true
|
|
58
|
-
ip : false
|
|
59
|
-
headers : ["foo=bar"]
|
|
60
|
-
env : ["some_var"]
|
|
61
|
-
}`);
|
|
62
|
-
expect(parser.errors).to.not.be.empty;
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it("cacheClause auth should be boolean", () => {
|
|
66
|
-
const parser = parse(`cache = {
|
|
67
|
-
ttl : 3600
|
|
68
|
-
input : true
|
|
69
|
-
auth : "foo"
|
|
70
|
-
datasource: true
|
|
71
|
-
ip : false
|
|
72
|
-
headers : ["foo=bar"]
|
|
73
|
-
env : ["some_var"]
|
|
74
|
-
}`);
|
|
75
|
-
expect(parser.errors).to.not.be.empty;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("cacheClause datasource should be boolean", () => {
|
|
79
|
-
const parser = parse(`cache = {
|
|
80
|
-
ttl : 3600
|
|
81
|
-
input : true
|
|
82
|
-
auth : true
|
|
83
|
-
datasource: "foo"
|
|
84
|
-
ip : false
|
|
85
|
-
headers : ["foo=bar"]
|
|
86
|
-
env : ["some_var"]
|
|
87
|
-
}`);
|
|
88
|
-
expect(parser.errors).to.not.be.empty;
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("cacheClause ip should be boolean", () => {
|
|
92
|
-
const parser = parse(`cache = {
|
|
93
|
-
ttl : 3600
|
|
94
|
-
input : true
|
|
95
|
-
auth : true
|
|
96
|
-
datasource: true
|
|
97
|
-
ip : "foo"
|
|
98
|
-
headers : ["foo=bar"]
|
|
99
|
-
env : ["some_var"]
|
|
100
|
-
}`);
|
|
101
|
-
expect(parser.errors).to.not.be.empty;
|
|
102
|
-
});
|
|
103
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.canonicalClause();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("canonicalClause", () => {
|
|
15
|
-
it("canonicalClause accepts string", () => {
|
|
16
|
-
const parser = parse(`canonical = "test"`);
|
|
17
|
-
expect(parser.errors).to.be.empty;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("canonicalClause doesn't allow empty string with double quotes", () => {
|
|
21
|
-
const parser = parse(`canonical = ""`);
|
|
22
|
-
expect(parser.errors).to.not.be.empty;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("canonicalClause doesn't allow empty string with single quotes", () => {
|
|
26
|
-
const parser = parse(`canonical = ''`);
|
|
27
|
-
expect(parser.errors).to.not.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("canonicalClause only allows strings (not numerical)", () => {
|
|
31
|
-
const parser = parse(`canonical = '123'`);
|
|
32
|
-
expect(parser.errors).to.not.be.empty;
|
|
33
|
-
});
|
|
34
|
-
});
|