flowquery 1.0.46 → 1.0.47
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/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
- package/.editorconfig +0 -21
- package/.gitattributes +0 -3
- package/.github/workflows/npm-publish.yml +0 -32
- package/.github/workflows/python-publish.yml +0 -143
- package/.github/workflows/release.yml +0 -107
- package/.husky/pre-commit +0 -28
- package/.prettierrc +0 -22
- package/CODE_OF_CONDUCT.md +0 -10
- package/FlowQueryLogoIcon.png +0 -0
- package/SECURITY.md +0 -14
- package/SUPPORT.md +0 -13
- package/docs/flowquery.min.js +0 -1
- package/docs/index.html +0 -105
- package/flowquery-py/CONTRIBUTING.md +0 -127
- package/flowquery-py/README.md +0 -67
- package/flowquery-py/misc/data/test.json +0 -10
- package/flowquery-py/misc/data/users.json +0 -242
- package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
- package/flowquery-py/pyproject.toml +0 -121
- package/flowquery-py/setup_env.ps1 +0 -92
- package/flowquery-py/setup_env.sh +0 -87
- package/flowquery-py/src/__init__.py +0 -38
- package/flowquery-py/src/__main__.py +0 -10
- package/flowquery-py/src/compute/__init__.py +0 -6
- package/flowquery-py/src/compute/flowquery.py +0 -68
- package/flowquery-py/src/compute/runner.py +0 -64
- package/flowquery-py/src/extensibility.py +0 -52
- package/flowquery-py/src/graph/__init__.py +0 -31
- package/flowquery-py/src/graph/data.py +0 -136
- package/flowquery-py/src/graph/database.py +0 -141
- package/flowquery-py/src/graph/hops.py +0 -43
- package/flowquery-py/src/graph/node.py +0 -143
- package/flowquery-py/src/graph/node_data.py +0 -26
- package/flowquery-py/src/graph/node_reference.py +0 -50
- package/flowquery-py/src/graph/pattern.py +0 -115
- package/flowquery-py/src/graph/pattern_expression.py +0 -67
- package/flowquery-py/src/graph/patterns.py +0 -42
- package/flowquery-py/src/graph/physical_node.py +0 -41
- package/flowquery-py/src/graph/physical_relationship.py +0 -36
- package/flowquery-py/src/graph/relationship.py +0 -193
- package/flowquery-py/src/graph/relationship_data.py +0 -36
- package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
- package/flowquery-py/src/graph/relationship_reference.py +0 -21
- package/flowquery-py/src/io/__init__.py +0 -5
- package/flowquery-py/src/io/command_line.py +0 -108
- package/flowquery-py/src/parsing/__init__.py +0 -17
- package/flowquery-py/src/parsing/alias.py +0 -20
- package/flowquery-py/src/parsing/alias_option.py +0 -11
- package/flowquery-py/src/parsing/ast_node.py +0 -147
- package/flowquery-py/src/parsing/base_parser.py +0 -84
- package/flowquery-py/src/parsing/components/__init__.py +0 -19
- package/flowquery-py/src/parsing/components/csv.py +0 -8
- package/flowquery-py/src/parsing/components/from_.py +0 -12
- package/flowquery-py/src/parsing/components/headers.py +0 -12
- package/flowquery-py/src/parsing/components/json.py +0 -8
- package/flowquery-py/src/parsing/components/null.py +0 -10
- package/flowquery-py/src/parsing/components/post.py +0 -8
- package/flowquery-py/src/parsing/components/text.py +0 -8
- package/flowquery-py/src/parsing/context.py +0 -50
- package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
- package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
- package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
- package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
- package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
- package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
- package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
- package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
- package/flowquery-py/src/parsing/expressions/expression.py +0 -141
- package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
- package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
- package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
- package/flowquery-py/src/parsing/expressions/number.py +0 -32
- package/flowquery-py/src/parsing/expressions/operator.py +0 -271
- package/flowquery-py/src/parsing/expressions/reference.py +0 -47
- package/flowquery-py/src/parsing/expressions/string.py +0 -27
- package/flowquery-py/src/parsing/functions/__init__.py +0 -127
- package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
- package/flowquery-py/src/parsing/functions/async_function.py +0 -65
- package/flowquery-py/src/parsing/functions/avg.py +0 -55
- package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
- package/flowquery-py/src/parsing/functions/collect.py +0 -75
- package/flowquery-py/src/parsing/functions/count.py +0 -79
- package/flowquery-py/src/parsing/functions/date_.py +0 -61
- package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
- package/flowquery-py/src/parsing/functions/duration.py +0 -159
- package/flowquery-py/src/parsing/functions/element_id.py +0 -50
- package/flowquery-py/src/parsing/functions/function.py +0 -68
- package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
- package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
- package/flowquery-py/src/parsing/functions/functions.py +0 -67
- package/flowquery-py/src/parsing/functions/head.py +0 -39
- package/flowquery-py/src/parsing/functions/id_.py +0 -49
- package/flowquery-py/src/parsing/functions/join.py +0 -49
- package/flowquery-py/src/parsing/functions/keys.py +0 -34
- package/flowquery-py/src/parsing/functions/last.py +0 -39
- package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
- package/flowquery-py/src/parsing/functions/localtime.py +0 -57
- package/flowquery-py/src/parsing/functions/max_.py +0 -49
- package/flowquery-py/src/parsing/functions/min_.py +0 -49
- package/flowquery-py/src/parsing/functions/nodes.py +0 -48
- package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
- package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
- package/flowquery-py/src/parsing/functions/properties.py +0 -50
- package/flowquery-py/src/parsing/functions/rand.py +0 -28
- package/flowquery-py/src/parsing/functions/range_.py +0 -41
- package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
- package/flowquery-py/src/parsing/functions/relationships.py +0 -46
- package/flowquery-py/src/parsing/functions/replace.py +0 -39
- package/flowquery-py/src/parsing/functions/round_.py +0 -34
- package/flowquery-py/src/parsing/functions/schema.py +0 -40
- package/flowquery-py/src/parsing/functions/size.py +0 -34
- package/flowquery-py/src/parsing/functions/split.py +0 -54
- package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
- package/flowquery-py/src/parsing/functions/stringify.py +0 -49
- package/flowquery-py/src/parsing/functions/substring.py +0 -76
- package/flowquery-py/src/parsing/functions/sum.py +0 -51
- package/flowquery-py/src/parsing/functions/tail.py +0 -37
- package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
- package/flowquery-py/src/parsing/functions/time_.py +0 -57
- package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
- package/flowquery-py/src/parsing/functions/to_float.py +0 -46
- package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
- package/flowquery-py/src/parsing/functions/to_json.py +0 -35
- package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
- package/flowquery-py/src/parsing/functions/to_string.py +0 -41
- package/flowquery-py/src/parsing/functions/trim.py +0 -37
- package/flowquery-py/src/parsing/functions/type_.py +0 -47
- package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
- package/flowquery-py/src/parsing/logic/__init__.py +0 -15
- package/flowquery-py/src/parsing/logic/case.py +0 -28
- package/flowquery-py/src/parsing/logic/else_.py +0 -12
- package/flowquery-py/src/parsing/logic/end.py +0 -8
- package/flowquery-py/src/parsing/logic/then.py +0 -12
- package/flowquery-py/src/parsing/logic/when.py +0 -12
- package/flowquery-py/src/parsing/operations/__init__.py +0 -46
- package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
- package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
- package/flowquery-py/src/parsing/operations/call.py +0 -73
- package/flowquery-py/src/parsing/operations/create_node.py +0 -35
- package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
- package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
- package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
- package/flowquery-py/src/parsing/operations/group_by.py +0 -148
- package/flowquery-py/src/parsing/operations/limit.py +0 -33
- package/flowquery-py/src/parsing/operations/load.py +0 -148
- package/flowquery-py/src/parsing/operations/match.py +0 -52
- package/flowquery-py/src/parsing/operations/operation.py +0 -69
- package/flowquery-py/src/parsing/operations/order_by.py +0 -114
- package/flowquery-py/src/parsing/operations/projection.py +0 -21
- package/flowquery-py/src/parsing/operations/return_op.py +0 -88
- package/flowquery-py/src/parsing/operations/union.py +0 -115
- package/flowquery-py/src/parsing/operations/union_all.py +0 -17
- package/flowquery-py/src/parsing/operations/unwind.py +0 -42
- package/flowquery-py/src/parsing/operations/where.py +0 -43
- package/flowquery-py/src/parsing/operations/with_op.py +0 -18
- package/flowquery-py/src/parsing/parser.py +0 -1384
- package/flowquery-py/src/parsing/parser_state.py +0 -26
- package/flowquery-py/src/parsing/token_to_node.py +0 -109
- package/flowquery-py/src/tokenization/__init__.py +0 -23
- package/flowquery-py/src/tokenization/keyword.py +0 -54
- package/flowquery-py/src/tokenization/operator.py +0 -29
- package/flowquery-py/src/tokenization/string_walker.py +0 -158
- package/flowquery-py/src/tokenization/symbol.py +0 -19
- package/flowquery-py/src/tokenization/token.py +0 -693
- package/flowquery-py/src/tokenization/token_mapper.py +0 -53
- package/flowquery-py/src/tokenization/token_type.py +0 -21
- package/flowquery-py/src/tokenization/tokenizer.py +0 -214
- package/flowquery-py/src/tokenization/trie.py +0 -125
- package/flowquery-py/src/utils/__init__.py +0 -6
- package/flowquery-py/src/utils/object_utils.py +0 -20
- package/flowquery-py/src/utils/string_utils.py +0 -113
- package/flowquery-py/tests/__init__.py +0 -1
- package/flowquery-py/tests/compute/__init__.py +0 -1
- package/flowquery-py/tests/compute/test_runner.py +0 -4902
- package/flowquery-py/tests/graph/__init__.py +0 -1
- package/flowquery-py/tests/graph/test_create.py +0 -56
- package/flowquery-py/tests/graph/test_data.py +0 -73
- package/flowquery-py/tests/graph/test_match.py +0 -40
- package/flowquery-py/tests/parsing/__init__.py +0 -1
- package/flowquery-py/tests/parsing/test_context.py +0 -34
- package/flowquery-py/tests/parsing/test_expression.py +0 -248
- package/flowquery-py/tests/parsing/test_parser.py +0 -1237
- package/flowquery-py/tests/test_extensibility.py +0 -611
- package/flowquery-py/tests/tokenization/__init__.py +0 -1
- package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
- package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
- package/flowquery-py/tests/tokenization/test_trie.py +0 -30
- package/flowquery-vscode/.vscode-test.mjs +0 -5
- package/flowquery-vscode/.vscodeignore +0 -13
- package/flowquery-vscode/LICENSE +0 -21
- package/flowquery-vscode/README.md +0 -11
- package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
- package/flowquery-vscode/eslint.config.mjs +0 -25
- package/flowquery-vscode/extension.js +0 -508
- package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
- package/flowquery-vscode/flowquery-worker.js +0 -66
- package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
- package/flowquery-vscode/jsconfig.json +0 -13
- package/flowquery-vscode/libs/page.css +0 -53
- package/flowquery-vscode/libs/table.css +0 -13
- package/flowquery-vscode/libs/tabs.css +0 -66
- package/flowquery-vscode/package-lock.json +0 -2917
- package/flowquery-vscode/package.json +0 -51
- package/flowquery-vscode/test/extension.test.js +0 -196
- package/flowquery-vscode/test/worker.test.js +0 -25
- package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
- package/jest.config.js +0 -14
- package/misc/apps/RAG/README.md +0 -29
- package/misc/apps/RAG/data/chats.json +0 -302
- package/misc/apps/RAG/data/emails.json +0 -182
- package/misc/apps/RAG/data/events.json +0 -226
- package/misc/apps/RAG/data/files.json +0 -172
- package/misc/apps/RAG/data/users.json +0 -158
- package/misc/apps/RAG/jest.config.js +0 -21
- package/misc/apps/RAG/package.json +0 -48
- package/misc/apps/RAG/public/index.html +0 -18
- package/misc/apps/RAG/src/App.css +0 -42
- package/misc/apps/RAG/src/App.tsx +0 -50
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
- package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
- package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
- package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
- package/misc/apps/RAG/src/components/ChatInput.css +0 -23
- package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
- package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
- package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
- package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
- package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
- package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
- package/misc/apps/RAG/src/components/index.ts +0 -28
- package/misc/apps/RAG/src/graph/index.ts +0 -19
- package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
- package/misc/apps/RAG/src/index.tsx +0 -29
- package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
- package/misc/apps/RAG/src/prompts/index.ts +0 -10
- package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
- package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
- package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
- package/misc/apps/RAG/src/utils/Llm.ts +0 -248
- package/misc/apps/RAG/src/utils/index.ts +0 -12
- package/misc/apps/RAG/tsconfig.json +0 -22
- package/misc/apps/RAG/webpack.config.js +0 -43
- package/misc/apps/README.md +0 -1
- package/misc/queries/analyze_catfacts.cql +0 -75
- package/misc/queries/azure_openai_completions.cql +0 -13
- package/misc/queries/azure_openai_models.cql +0 -9
- package/misc/queries/mock_pipeline.cql +0 -84
- package/misc/queries/openai_completions.cql +0 -15
- package/misc/queries/openai_models.cql +0 -13
- package/misc/queries/test.cql +0 -6
- package/misc/queries/tool_inference.cql +0 -24
- package/misc/queries/wisdom.cql +0 -6
- package/misc/queries/wisdom_letter_histogram.cql +0 -8
- package/src/compute/flowquery.ts +0 -46
- package/src/compute/runner.ts +0 -66
- package/src/extensibility.ts +0 -45
- package/src/graph/data.ts +0 -130
- package/src/graph/database.ts +0 -143
- package/src/graph/hops.ts +0 -22
- package/src/graph/node.ts +0 -122
- package/src/graph/node_data.ts +0 -18
- package/src/graph/node_reference.ts +0 -38
- package/src/graph/pattern.ts +0 -110
- package/src/graph/pattern_expression.ts +0 -48
- package/src/graph/patterns.ts +0 -36
- package/src/graph/physical_node.ts +0 -23
- package/src/graph/physical_relationship.ts +0 -23
- package/src/graph/relationship.ts +0 -167
- package/src/graph/relationship_data.ts +0 -31
- package/src/graph/relationship_match_collector.ts +0 -64
- package/src/graph/relationship_reference.ts +0 -25
- package/src/index.browser.ts +0 -46
- package/src/index.node.ts +0 -55
- package/src/index.ts +0 -12
- package/src/io/command_line.ts +0 -74
- package/src/parsing/alias.ts +0 -23
- package/src/parsing/alias_option.ts +0 -5
- package/src/parsing/ast_node.ts +0 -153
- package/src/parsing/base_parser.ts +0 -98
- package/src/parsing/components/csv.ts +0 -9
- package/src/parsing/components/from.ts +0 -12
- package/src/parsing/components/headers.ts +0 -12
- package/src/parsing/components/json.ts +0 -9
- package/src/parsing/components/null.ts +0 -9
- package/src/parsing/components/post.ts +0 -9
- package/src/parsing/components/text.ts +0 -9
- package/src/parsing/context.ts +0 -54
- package/src/parsing/data_structures/associative_array.ts +0 -43
- package/src/parsing/data_structures/json_array.ts +0 -31
- package/src/parsing/data_structures/key_value_pair.ts +0 -37
- package/src/parsing/data_structures/lookup.ts +0 -44
- package/src/parsing/data_structures/range_lookup.ts +0 -36
- package/src/parsing/expressions/boolean.ts +0 -21
- package/src/parsing/expressions/expression.ts +0 -150
- package/src/parsing/expressions/expression_map.ts +0 -22
- package/src/parsing/expressions/f_string.ts +0 -26
- package/src/parsing/expressions/identifier.ts +0 -22
- package/src/parsing/expressions/number.ts +0 -40
- package/src/parsing/expressions/operator.ts +0 -354
- package/src/parsing/expressions/reference.ts +0 -45
- package/src/parsing/expressions/string.ts +0 -34
- package/src/parsing/functions/aggregate_function.ts +0 -58
- package/src/parsing/functions/async_function.ts +0 -64
- package/src/parsing/functions/avg.ts +0 -47
- package/src/parsing/functions/coalesce.ts +0 -49
- package/src/parsing/functions/collect.ts +0 -54
- package/src/parsing/functions/count.ts +0 -54
- package/src/parsing/functions/date.ts +0 -63
- package/src/parsing/functions/datetime.ts +0 -63
- package/src/parsing/functions/duration.ts +0 -143
- package/src/parsing/functions/element_id.ts +0 -51
- package/src/parsing/functions/function.ts +0 -60
- package/src/parsing/functions/function_factory.ts +0 -195
- package/src/parsing/functions/function_metadata.ts +0 -217
- package/src/parsing/functions/functions.ts +0 -70
- package/src/parsing/functions/head.ts +0 -42
- package/src/parsing/functions/id.ts +0 -51
- package/src/parsing/functions/join.ts +0 -40
- package/src/parsing/functions/keys.ts +0 -29
- package/src/parsing/functions/last.ts +0 -42
- package/src/parsing/functions/localdatetime.ts +0 -63
- package/src/parsing/functions/localtime.ts +0 -58
- package/src/parsing/functions/max.ts +0 -37
- package/src/parsing/functions/min.ts +0 -37
- package/src/parsing/functions/nodes.ts +0 -54
- package/src/parsing/functions/predicate_function.ts +0 -48
- package/src/parsing/functions/predicate_sum.ts +0 -47
- package/src/parsing/functions/properties.ts +0 -56
- package/src/parsing/functions/rand.ts +0 -21
- package/src/parsing/functions/range.ts +0 -37
- package/src/parsing/functions/reducer_element.ts +0 -10
- package/src/parsing/functions/relationships.ts +0 -52
- package/src/parsing/functions/replace.ts +0 -38
- package/src/parsing/functions/round.ts +0 -28
- package/src/parsing/functions/schema.ts +0 -39
- package/src/parsing/functions/size.ts +0 -28
- package/src/parsing/functions/split.ts +0 -45
- package/src/parsing/functions/string_distance.ts +0 -83
- package/src/parsing/functions/stringify.ts +0 -37
- package/src/parsing/functions/substring.ts +0 -68
- package/src/parsing/functions/sum.ts +0 -41
- package/src/parsing/functions/tail.ts +0 -39
- package/src/parsing/functions/temporal_utils.ts +0 -180
- package/src/parsing/functions/time.ts +0 -58
- package/src/parsing/functions/timestamp.ts +0 -37
- package/src/parsing/functions/to_float.ts +0 -50
- package/src/parsing/functions/to_integer.ts +0 -50
- package/src/parsing/functions/to_json.ts +0 -28
- package/src/parsing/functions/to_lower.ts +0 -28
- package/src/parsing/functions/to_string.ts +0 -32
- package/src/parsing/functions/trim.ts +0 -28
- package/src/parsing/functions/type.ts +0 -39
- package/src/parsing/functions/value_holder.ts +0 -13
- package/src/parsing/logic/case.ts +0 -26
- package/src/parsing/logic/else.ts +0 -12
- package/src/parsing/logic/end.ts +0 -9
- package/src/parsing/logic/then.ts +0 -12
- package/src/parsing/logic/when.ts +0 -12
- package/src/parsing/operations/aggregated_return.ts +0 -22
- package/src/parsing/operations/aggregated_with.ts +0 -18
- package/src/parsing/operations/call.ts +0 -69
- package/src/parsing/operations/create_node.ts +0 -39
- package/src/parsing/operations/create_relationship.ts +0 -38
- package/src/parsing/operations/delete_node.ts +0 -33
- package/src/parsing/operations/delete_relationship.ts +0 -32
- package/src/parsing/operations/group_by.ts +0 -137
- package/src/parsing/operations/limit.ts +0 -31
- package/src/parsing/operations/load.ts +0 -146
- package/src/parsing/operations/match.ts +0 -54
- package/src/parsing/operations/operation.ts +0 -69
- package/src/parsing/operations/order_by.ts +0 -126
- package/src/parsing/operations/projection.ts +0 -18
- package/src/parsing/operations/return.ts +0 -76
- package/src/parsing/operations/union.ts +0 -114
- package/src/parsing/operations/union_all.ts +0 -16
- package/src/parsing/operations/unwind.ts +0 -36
- package/src/parsing/operations/where.ts +0 -42
- package/src/parsing/operations/with.ts +0 -20
- package/src/parsing/parser.ts +0 -1641
- package/src/parsing/parser_state.ts +0 -25
- package/src/parsing/token_to_node.ts +0 -114
- package/src/tokenization/keyword.ts +0 -50
- package/src/tokenization/operator.ts +0 -25
- package/src/tokenization/string_walker.ts +0 -197
- package/src/tokenization/symbol.ts +0 -15
- package/src/tokenization/token.ts +0 -764
- package/src/tokenization/token_mapper.ts +0 -53
- package/src/tokenization/token_type.ts +0 -16
- package/src/tokenization/tokenizer.ts +0 -250
- package/src/tokenization/trie.ts +0 -117
- package/src/utils/object_utils.ts +0 -17
- package/src/utils/string_utils.ts +0 -114
- package/tests/compute/runner.test.ts +0 -4559
- package/tests/extensibility.test.ts +0 -643
- package/tests/graph/create.test.ts +0 -36
- package/tests/graph/data.test.ts +0 -58
- package/tests/graph/match.test.ts +0 -29
- package/tests/parsing/context.test.ts +0 -27
- package/tests/parsing/expression.test.ts +0 -303
- package/tests/parsing/parser.test.ts +0 -1327
- package/tests/tokenization/token_mapper.test.ts +0 -47
- package/tests/tokenization/tokenizer.test.ts +0 -191
- package/tests/tokenization/trie.test.ts +0 -20
- package/tsconfig.json +0 -19
- package/typedoc.json +0 -16
- package/vscode-settings.json.recommended +0 -16
- package/webpack.config.js +0 -26
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import ASTNode from "../ast_node";
|
|
2
|
-
import Else from "./else";
|
|
3
|
-
import When from "./when";
|
|
4
|
-
import Then from "./then";
|
|
5
|
-
|
|
6
|
-
class Case extends ASTNode {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public value(): any {
|
|
12
|
-
let i = 0;
|
|
13
|
-
let child = this.getChildren()[i];
|
|
14
|
-
while (child instanceof When) {
|
|
15
|
-
const then = (this.getChildren()[i+1] as Then);
|
|
16
|
-
if (child.value()) {
|
|
17
|
-
return then.value();
|
|
18
|
-
}
|
|
19
|
-
i += 2;
|
|
20
|
-
child = this.getChildren()[i];
|
|
21
|
-
}
|
|
22
|
-
return (child as Else).value();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export default Case;
|
package/src/parsing/logic/end.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import Expression from "../expressions/expression";
|
|
2
|
-
import GroupBy from "./group_by";
|
|
3
|
-
import Return from "./return";
|
|
4
|
-
|
|
5
|
-
class AggregatedReturn extends Return {
|
|
6
|
-
private _group_by: GroupBy = new GroupBy(this.children as Expression[]);
|
|
7
|
-
public async run(): Promise<void> {
|
|
8
|
-
await this._group_by.run();
|
|
9
|
-
}
|
|
10
|
-
public get results(): Record<string, any>[] {
|
|
11
|
-
if (this._where !== null) {
|
|
12
|
-
this._group_by.where = this._where;
|
|
13
|
-
}
|
|
14
|
-
const results = Array.from(this._group_by.generate_results());
|
|
15
|
-
if (this._orderBy !== null) {
|
|
16
|
-
return this._orderBy.sort(results);
|
|
17
|
-
}
|
|
18
|
-
return results;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default AggregatedReturn;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import With from "./return";
|
|
2
|
-
import GroupBy from "./group_by";
|
|
3
|
-
import Expression from "../expressions/expression";
|
|
4
|
-
|
|
5
|
-
class AggregatedWith extends With {
|
|
6
|
-
private _group_by: GroupBy = new GroupBy(this.children as Expression[]);
|
|
7
|
-
public async run(): Promise<void> {
|
|
8
|
-
await this._group_by.run();
|
|
9
|
-
}
|
|
10
|
-
public async finish(): Promise<void> {
|
|
11
|
-
for(const _ of this._group_by.generate_results()) {
|
|
12
|
-
await this.next?.run();
|
|
13
|
-
}
|
|
14
|
-
await super.finish();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default AggregatedWith;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import Expression from "../expressions/expression";
|
|
2
|
-
import ExpressionMap from "../expressions/expression_map";
|
|
3
|
-
import AsyncFunction from "../functions/async_function";
|
|
4
|
-
import Projection from "./projection";
|
|
5
|
-
|
|
6
|
-
const DEFAULT_VARIABLE_NAME: string = "value";
|
|
7
|
-
|
|
8
|
-
class Call extends Projection {
|
|
9
|
-
protected _function: AsyncFunction | null = null;
|
|
10
|
-
private _map: ExpressionMap = new ExpressionMap();
|
|
11
|
-
protected _results: Record<string, any>[] = [];
|
|
12
|
-
constructor() {
|
|
13
|
-
super([]);
|
|
14
|
-
}
|
|
15
|
-
public set function(asyncFunction: AsyncFunction) {
|
|
16
|
-
this._function = asyncFunction;
|
|
17
|
-
}
|
|
18
|
-
public get function(): AsyncFunction | null {
|
|
19
|
-
return this._function;
|
|
20
|
-
}
|
|
21
|
-
public set yielded(expressions: Expression[]) {
|
|
22
|
-
this.children = expressions;
|
|
23
|
-
this._map.map = expressions;
|
|
24
|
-
}
|
|
25
|
-
public get hasYield(): boolean {
|
|
26
|
-
return this.children.length > 0;
|
|
27
|
-
}
|
|
28
|
-
public async run(): Promise<void> {
|
|
29
|
-
if (this._function === null) {
|
|
30
|
-
throw new Error("No function set for Call operation.");
|
|
31
|
-
}
|
|
32
|
-
const args = this._function.getArguments();
|
|
33
|
-
for await (const item of this._function.generate(...args)) {
|
|
34
|
-
if (!this.isLast) {
|
|
35
|
-
if (typeof item == "object" && !Array.isArray(item)) {
|
|
36
|
-
for (const [key, value] of Object.entries(item)) {
|
|
37
|
-
const expression = this._map.get(key);
|
|
38
|
-
if (expression) {
|
|
39
|
-
expression.overridden = value;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
const expression = this._map.get(DEFAULT_VARIABLE_NAME);
|
|
44
|
-
if (expression) {
|
|
45
|
-
expression.overridden = item;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
await this.next?.run();
|
|
49
|
-
} else {
|
|
50
|
-
const record: Map<string, any> = new Map();
|
|
51
|
-
if (typeof item == "object" && !Array.isArray(item)) {
|
|
52
|
-
for (const [key, value] of Object.entries(item)) {
|
|
53
|
-
if (this._map.has(key) || !this.hasYield) {
|
|
54
|
-
record.set(key, value);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
record.set(DEFAULT_VARIABLE_NAME, item);
|
|
59
|
-
}
|
|
60
|
-
this._results.push(Object.fromEntries(record));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
public get results(): Record<string, any>[] {
|
|
65
|
-
return this._results;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export default Call;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import Database from "../../graph/database";
|
|
2
|
-
import Node from "../../graph/node";
|
|
3
|
-
import ASTNode from "../ast_node";
|
|
4
|
-
import Operation from "./operation";
|
|
5
|
-
|
|
6
|
-
class CreateNode extends Operation {
|
|
7
|
-
private _node: Node | null = null;
|
|
8
|
-
private _statement: ASTNode | null = null;
|
|
9
|
-
constructor(node: Node, statement: ASTNode) {
|
|
10
|
-
super();
|
|
11
|
-
this._node = node;
|
|
12
|
-
this._statement = statement;
|
|
13
|
-
}
|
|
14
|
-
public get node(): Node | null {
|
|
15
|
-
return this._node;
|
|
16
|
-
}
|
|
17
|
-
public get statement(): ASTNode | null {
|
|
18
|
-
return this._statement;
|
|
19
|
-
}
|
|
20
|
-
public run(): Promise<void> {
|
|
21
|
-
return new Promise(async (resolve, reject) => {
|
|
22
|
-
try {
|
|
23
|
-
if (this._node === null) {
|
|
24
|
-
throw new Error("Node is null");
|
|
25
|
-
}
|
|
26
|
-
const db: Database = Database.getInstance();
|
|
27
|
-
db.addNode(this._node, this._statement!);
|
|
28
|
-
resolve();
|
|
29
|
-
} catch (error) {
|
|
30
|
-
reject(error);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
public get results(): Record<string, any>[] {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export default CreateNode;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import Database from "../../graph/database";
|
|
2
|
-
import Relationship from "../../graph/relationship";
|
|
3
|
-
import ASTNode from "../ast_node";
|
|
4
|
-
import Operation from "./operation";
|
|
5
|
-
|
|
6
|
-
class CreateRelationship extends Operation {
|
|
7
|
-
private _relationship: Relationship | null = null;
|
|
8
|
-
private _statement: ASTNode | null = null;
|
|
9
|
-
constructor(relationship: Relationship, statement: ASTNode) {
|
|
10
|
-
super();
|
|
11
|
-
this._relationship = relationship;
|
|
12
|
-
this._statement = statement;
|
|
13
|
-
}
|
|
14
|
-
public get relationship(): Relationship | null {
|
|
15
|
-
return this._relationship;
|
|
16
|
-
}
|
|
17
|
-
public get statement(): ASTNode | null {
|
|
18
|
-
return this._statement;
|
|
19
|
-
}
|
|
20
|
-
public run(): Promise<void> {
|
|
21
|
-
return new Promise(async (resolve, reject) => {
|
|
22
|
-
try {
|
|
23
|
-
if (this._relationship === null) {
|
|
24
|
-
throw new Error("Relationship is null");
|
|
25
|
-
}
|
|
26
|
-
const db = Database.getInstance();
|
|
27
|
-
db.addRelationship(this._relationship, this._statement!);
|
|
28
|
-
resolve();
|
|
29
|
-
} catch (error) {
|
|
30
|
-
reject(error);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
public get results(): Record<string, any>[] {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export default CreateRelationship;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import Database from "../../graph/database";
|
|
2
|
-
import Node from "../../graph/node";
|
|
3
|
-
import Operation from "./operation";
|
|
4
|
-
|
|
5
|
-
class DeleteNode extends Operation {
|
|
6
|
-
private _node: Node | null = null;
|
|
7
|
-
constructor(node: Node) {
|
|
8
|
-
super();
|
|
9
|
-
this._node = node;
|
|
10
|
-
}
|
|
11
|
-
public get node(): Node | null {
|
|
12
|
-
return this._node;
|
|
13
|
-
}
|
|
14
|
-
public run(): Promise<void> {
|
|
15
|
-
return new Promise(async (resolve, reject) => {
|
|
16
|
-
try {
|
|
17
|
-
if (this._node === null) {
|
|
18
|
-
throw new Error("Node is null");
|
|
19
|
-
}
|
|
20
|
-
const db: Database = Database.getInstance();
|
|
21
|
-
db.removeNode(this._node);
|
|
22
|
-
resolve();
|
|
23
|
-
} catch (error) {
|
|
24
|
-
reject(error);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
public get results(): Record<string, any>[] {
|
|
29
|
-
return [];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export default DeleteNode;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import Database from "../../graph/database";
|
|
2
|
-
import Relationship from "../../graph/relationship";
|
|
3
|
-
import Operation from "./operation";
|
|
4
|
-
|
|
5
|
-
class DeleteRelationship extends Operation {
|
|
6
|
-
private _relationship: Relationship | null = null;
|
|
7
|
-
constructor(relationship: Relationship) {
|
|
8
|
-
super();
|
|
9
|
-
this._relationship = relationship;
|
|
10
|
-
}
|
|
11
|
-
public get relationship(): Relationship | null {
|
|
12
|
-
return this._relationship;
|
|
13
|
-
}
|
|
14
|
-
public run(): Promise<void> {
|
|
15
|
-
return new Promise(async (resolve, reject) => {
|
|
16
|
-
try {
|
|
17
|
-
if (this._relationship === null) {
|
|
18
|
-
throw new Error("Relationship is null");
|
|
19
|
-
}
|
|
20
|
-
const db = Database.getInstance();
|
|
21
|
-
db.removeRelationship(this._relationship);
|
|
22
|
-
resolve();
|
|
23
|
-
} catch (error) {
|
|
24
|
-
reject(error);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
public get results(): Record<string, any>[] {
|
|
29
|
-
return [];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export default DeleteRelationship;
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import Expression from "../expressions/expression";
|
|
2
|
-
import AggregateFunction from "../functions/aggregate_function";
|
|
3
|
-
import AggregationElement from "../functions/reducer_element";
|
|
4
|
-
import Projection from "./projection";
|
|
5
|
-
import Where from "./where";
|
|
6
|
-
|
|
7
|
-
class Node {
|
|
8
|
-
private _value: any;
|
|
9
|
-
private _children: Map<string, Node> = new Map();
|
|
10
|
-
private _elements: AggregationElement[] | null = null;
|
|
11
|
-
constructor(value: any = null) {
|
|
12
|
-
this._value = value;
|
|
13
|
-
}
|
|
14
|
-
public get value(): any {
|
|
15
|
-
return this._value;
|
|
16
|
-
}
|
|
17
|
-
public get children(): Map<string, Node> {
|
|
18
|
-
return this._children;
|
|
19
|
-
}
|
|
20
|
-
public get elements(): AggregationElement[] | null {
|
|
21
|
-
return this._elements;
|
|
22
|
-
}
|
|
23
|
-
public set elements(elements: AggregationElement[]) {
|
|
24
|
-
this._elements = elements;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
class GroupBy extends Projection {
|
|
29
|
-
private _root: Node = new Node();
|
|
30
|
-
private _current: Node = this._root;
|
|
31
|
-
private _mappers: Expression[] | null = null;
|
|
32
|
-
private _reducers: AggregateFunction[] | null = null;
|
|
33
|
-
protected _where: Where | null = null;
|
|
34
|
-
public async run(): Promise<void> {
|
|
35
|
-
this.resetTree();
|
|
36
|
-
this.map();
|
|
37
|
-
this.reduce();
|
|
38
|
-
}
|
|
39
|
-
private get root(): Node {
|
|
40
|
-
return this._root;
|
|
41
|
-
}
|
|
42
|
-
private get current(): Node {
|
|
43
|
-
return this._current;
|
|
44
|
-
}
|
|
45
|
-
private set current(node: Node) {
|
|
46
|
-
this._current = node;
|
|
47
|
-
}
|
|
48
|
-
private resetTree() {
|
|
49
|
-
this.current = this.root;
|
|
50
|
-
}
|
|
51
|
-
private map() {
|
|
52
|
-
let node: Node = this.current;
|
|
53
|
-
for (const mapper of this.mappers) {
|
|
54
|
-
const value: any = mapper.value();
|
|
55
|
-
const key: string =
|
|
56
|
-
typeof value === "object" && value !== null ? JSON.stringify(value) : String(value);
|
|
57
|
-
let child: Node | undefined = node.children.get(key);
|
|
58
|
-
if (child === undefined) {
|
|
59
|
-
child = new Node(value);
|
|
60
|
-
node.children.set(key, child);
|
|
61
|
-
}
|
|
62
|
-
node = child;
|
|
63
|
-
}
|
|
64
|
-
this.current = node;
|
|
65
|
-
}
|
|
66
|
-
private reduce() {
|
|
67
|
-
if (this.current.elements === null) {
|
|
68
|
-
this.current.elements = this.reducers.map((reducer) => reducer.element());
|
|
69
|
-
}
|
|
70
|
-
const elements: AggregationElement[] = this.current.elements;
|
|
71
|
-
this.reducers.forEach((reducer, index) => {
|
|
72
|
-
reducer.reduce(elements[index]);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
private get mappers(): Expression[] {
|
|
76
|
-
if (this._mappers === null) {
|
|
77
|
-
this._mappers = [...this._generate_mappers()];
|
|
78
|
-
}
|
|
79
|
-
return this._mappers;
|
|
80
|
-
}
|
|
81
|
-
private *_generate_mappers(): Generator<Expression> {
|
|
82
|
-
for (const [expression, _] of this.expressions()) {
|
|
83
|
-
if (expression.mappable()) {
|
|
84
|
-
yield expression;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
private get reducers(): AggregateFunction[] {
|
|
89
|
-
if (this._reducers === null) {
|
|
90
|
-
this._reducers = this.children
|
|
91
|
-
.map((child) => {
|
|
92
|
-
return (child as Expression).reducers();
|
|
93
|
-
})
|
|
94
|
-
.flat();
|
|
95
|
-
}
|
|
96
|
-
return this._reducers;
|
|
97
|
-
}
|
|
98
|
-
public *generate_results(
|
|
99
|
-
mapperIndex: number = 0,
|
|
100
|
-
node: Node = this.root
|
|
101
|
-
): Generator<Record<string, any>> {
|
|
102
|
-
if (mapperIndex === 0 && node.children.size === 0 && this.mappers.length > 0) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (node.children.size > 0) {
|
|
106
|
-
for (const child of node.children.values()) {
|
|
107
|
-
this.mappers[mapperIndex].overridden = child.value;
|
|
108
|
-
yield* this.generate_results(mapperIndex + 1, child);
|
|
109
|
-
}
|
|
110
|
-
} else {
|
|
111
|
-
if (node.elements === null) {
|
|
112
|
-
node.elements = this.reducers.map((reducer) => reducer.element());
|
|
113
|
-
}
|
|
114
|
-
node.elements.forEach((element, reducerIndex) => {
|
|
115
|
-
this.reducers[reducerIndex].overridden = element.value;
|
|
116
|
-
});
|
|
117
|
-
const record: Record<string, any> = {};
|
|
118
|
-
for (const [expression, alias] of this.expressions()) {
|
|
119
|
-
record[alias] = expression.value();
|
|
120
|
-
}
|
|
121
|
-
if (this.where) {
|
|
122
|
-
yield record;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
public set where(where: Where) {
|
|
127
|
-
this._where = where;
|
|
128
|
-
}
|
|
129
|
-
public get where(): boolean {
|
|
130
|
-
if (this._where === null) {
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
return this._where.value();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export default GroupBy;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import Operation from "./operation";
|
|
2
|
-
|
|
3
|
-
class Limit extends Operation {
|
|
4
|
-
private count: number = 0;
|
|
5
|
-
private limit: number = 0;
|
|
6
|
-
constructor(limit: number) {
|
|
7
|
-
super();
|
|
8
|
-
this.limit = limit;
|
|
9
|
-
}
|
|
10
|
-
public get isLimitReached(): boolean {
|
|
11
|
-
return this.count >= this.limit;
|
|
12
|
-
}
|
|
13
|
-
public get limitValue(): number {
|
|
14
|
-
return this.limit;
|
|
15
|
-
}
|
|
16
|
-
public increment(): void {
|
|
17
|
-
this.count++;
|
|
18
|
-
}
|
|
19
|
-
public async run(): Promise<void> {
|
|
20
|
-
if (this.count >= this.limit) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
this.count++;
|
|
24
|
-
await this.next?.run();
|
|
25
|
-
}
|
|
26
|
-
public reset(): void {
|
|
27
|
-
this.count = 0;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default Limit;
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import CSV from "../components/csv";
|
|
2
|
-
import From from "../components/from";
|
|
3
|
-
import Headers from "../components/headers";
|
|
4
|
-
import { default as _JSON } from "../components/json";
|
|
5
|
-
import Post from "../components/post";
|
|
6
|
-
import Text from "../components/text";
|
|
7
|
-
import AssociativeArray from "../data_structures/associative_array";
|
|
8
|
-
import Lookup from "../data_structures/lookup";
|
|
9
|
-
import Expression from "../expressions/expression";
|
|
10
|
-
import Reference from "../expressions/reference";
|
|
11
|
-
import AsyncFunction from "../functions/async_function";
|
|
12
|
-
import Function from "../functions/function";
|
|
13
|
-
import Operation from "./operation";
|
|
14
|
-
|
|
15
|
-
class Load extends Operation {
|
|
16
|
-
private _value: any = null;
|
|
17
|
-
|
|
18
|
-
constructor() {
|
|
19
|
-
super();
|
|
20
|
-
}
|
|
21
|
-
public get type(): _JSON | CSV | Text {
|
|
22
|
-
return this.children[0] as _JSON | CSV | Text;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Gets the From component which contains either a URL expression or an AsyncFunction.
|
|
27
|
-
*/
|
|
28
|
-
public get fromComponent(): From {
|
|
29
|
-
return this.children[1] as From;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Checks if the data source is an async function.
|
|
34
|
-
*/
|
|
35
|
-
public get isAsyncFunction(): boolean {
|
|
36
|
-
return this.fromComponent.firstChild() instanceof AsyncFunction;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Gets the async function if the source is a function, otherwise null.
|
|
41
|
-
*/
|
|
42
|
-
public get asyncFunction(): AsyncFunction | null {
|
|
43
|
-
const child = this.fromComponent.firstChild();
|
|
44
|
-
return child instanceof AsyncFunction ? child : null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public get from(): string {
|
|
48
|
-
return this.children[1].value() as string;
|
|
49
|
-
}
|
|
50
|
-
public get headers(): { [key: string]: string } {
|
|
51
|
-
if (this.childCount() > 2 && this.children[2] instanceof Headers) {
|
|
52
|
-
return (this.children[2].value() as { [key: string]: string }) || {};
|
|
53
|
-
}
|
|
54
|
-
return {};
|
|
55
|
-
}
|
|
56
|
-
public get payload(): Function | Reference | Expression | AssociativeArray | Lookup | null {
|
|
57
|
-
let post: Post | null = null;
|
|
58
|
-
if (this.childCount() > 2 && this.children[2] instanceof Post) {
|
|
59
|
-
post = this.children[2] as Post;
|
|
60
|
-
} else if (this.childCount() > 3 && this.children[3] instanceof Post) {
|
|
61
|
-
post = this.children[3] as Post;
|
|
62
|
-
}
|
|
63
|
-
return post !== null
|
|
64
|
-
? (post.firstChild() as Function | Reference | Expression | AssociativeArray | Lookup)
|
|
65
|
-
: null;
|
|
66
|
-
}
|
|
67
|
-
private method(): "GET" | "POST" {
|
|
68
|
-
if (this.payload === null) {
|
|
69
|
-
return "GET";
|
|
70
|
-
} else {
|
|
71
|
-
return "POST";
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
private options(): object {
|
|
75
|
-
const headers = this.headers as { [key: string]: string };
|
|
76
|
-
const payload = this.payload;
|
|
77
|
-
const data = payload?.value();
|
|
78
|
-
if (data !== null && typeof data === "object" && !headers.hasOwnProperty("Content-Type")) {
|
|
79
|
-
headers["Content-Type"] = "application/json";
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
method: this.method(),
|
|
83
|
-
headers: headers,
|
|
84
|
-
...(payload !== null ? { body: JSON.stringify(payload.value()) } : {}),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Loads data from an async function source.
|
|
90
|
-
* Arguments from the query (e.g., myFunc(arg1, arg2)) are passed to generate().
|
|
91
|
-
*/
|
|
92
|
-
private async loadFromFunction(): Promise<void> {
|
|
93
|
-
const asyncFunc = this.asyncFunction!;
|
|
94
|
-
const args = asyncFunc.getArguments();
|
|
95
|
-
for await (const item of asyncFunc.generate(...args)) {
|
|
96
|
-
this._value = item;
|
|
97
|
-
await this.next?.run();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Loads data from a URL source (original behavior).
|
|
103
|
-
*/
|
|
104
|
-
private async loadFromUrl(): Promise<void> {
|
|
105
|
-
const result = await fetch(this.from, this.options());
|
|
106
|
-
let data: any = null;
|
|
107
|
-
if (this.type instanceof _JSON) {
|
|
108
|
-
data = await result.json();
|
|
109
|
-
} else if (this.type instanceof Text) {
|
|
110
|
-
data = await result.text();
|
|
111
|
-
}
|
|
112
|
-
if (Array.isArray(data)) {
|
|
113
|
-
for (const item of data) {
|
|
114
|
-
this._value = item;
|
|
115
|
-
await this.next?.run();
|
|
116
|
-
}
|
|
117
|
-
} else if (typeof data === "object" && data !== null) {
|
|
118
|
-
this._value = data;
|
|
119
|
-
await this.next?.run();
|
|
120
|
-
} else if (typeof data === "string") {
|
|
121
|
-
this._value = data;
|
|
122
|
-
await this.next?.run();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
public async load(): Promise<any> {
|
|
127
|
-
if (this.isAsyncFunction) {
|
|
128
|
-
await this.loadFromFunction();
|
|
129
|
-
} else {
|
|
130
|
-
await this.loadFromUrl();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
public async run(): Promise<void> {
|
|
134
|
-
try {
|
|
135
|
-
await this.load();
|
|
136
|
-
} catch (e) {
|
|
137
|
-
const source = this.isAsyncFunction ? this.asyncFunction?.name : this.from;
|
|
138
|
-
throw new Error(`Failed to load data from ${source}. Error: ${e}`);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
public value(): any {
|
|
142
|
-
return this._value;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export default Load;
|