nesoi 3.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.
- package/lib/adapters/postgres/src/migrator/database.d.ts +37 -0
- package/lib/adapters/postgres/src/migrator/database.js +88 -0
- package/lib/adapters/postgres/src/migrator/index.d.ts +1 -0
- package/lib/adapters/postgres/src/migrator/index.js +5 -0
- package/lib/adapters/postgres/src/migrator/migration.d.ts +73 -0
- package/lib/adapters/postgres/src/migrator/migration.js +351 -0
- package/lib/adapters/postgres/src/migrator/migrator.d.ts +21 -0
- package/lib/adapters/postgres/src/migrator/migrator.js +73 -0
- package/lib/adapters/postgres/src/migrator/runner.d.ts +61 -0
- package/lib/adapters/postgres/src/migrator/runner.js +202 -0
- package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +45 -0
- package/lib/adapters/postgres/src/postgres.bucket_adapter.js +278 -0
- package/lib/adapters/postgres/src/postgres.cli.d.ts +46 -0
- package/lib/adapters/postgres/src/postgres.cli.js +124 -0
- package/lib/adapters/postgres/src/postgres.nql.d.ts +12 -0
- package/lib/adapters/postgres/src/postgres.nql.js +69 -0
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +1 -0
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +173 -0
- package/lib/adapters/postgres/test/postgres.bucket_query.test.d.ts +0 -0
- package/lib/adapters/postgres/test/postgres.bucket_query.test.js +136 -0
- package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +21 -0
- package/lib/compiler/apps/monolyth/monolyth_compiler.js +95 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +80 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +128 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +75 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +13 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +130 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +65 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +74 -0
- package/lib/compiler/compiler.d.ts +19 -0
- package/lib/compiler/compiler.js +83 -0
- package/lib/compiler/elements/bucket.element.d.ts +23 -0
- package/lib/compiler/elements/bucket.element.js +304 -0
- package/lib/compiler/elements/constants.element.d.ts +9 -0
- package/lib/compiler/elements/constants.element.js +88 -0
- package/lib/compiler/elements/controller.element.d.ts +6 -0
- package/lib/compiler/elements/controller.element.js +22 -0
- package/lib/compiler/elements/element.d.ts +49 -0
- package/lib/compiler/elements/element.js +105 -0
- package/lib/compiler/elements/externals.element.d.ts +19 -0
- package/lib/compiler/elements/externals.element.js +83 -0
- package/lib/compiler/elements/job.element.d.ts +7 -0
- package/lib/compiler/elements/job.element.js +62 -0
- package/lib/compiler/elements/machine.element.d.ts +10 -0
- package/lib/compiler/elements/machine.element.js +98 -0
- package/lib/compiler/elements/message.element.d.ts +9 -0
- package/lib/compiler/elements/message.element.js +175 -0
- package/lib/compiler/elements/queue.element.d.ts +6 -0
- package/lib/compiler/elements/queue.element.js +24 -0
- package/lib/compiler/elements/resource.element.d.ts +7 -0
- package/lib/compiler/elements/resource.element.js +64 -0
- package/lib/compiler/error.d.ts +21 -0
- package/lib/compiler/error.js +57 -0
- package/lib/compiler/helpers/dump_helpers.d.ts +11 -0
- package/lib/compiler/helpers/dump_helpers.js +157 -0
- package/lib/compiler/helpers/name_helpers.d.ts +20 -0
- package/lib/compiler/helpers/name_helpers.js +44 -0
- package/lib/compiler/index.d.ts +2 -0
- package/lib/compiler/index.js +7 -0
- package/lib/compiler/module.d.ts +24 -0
- package/lib/compiler/module.js +122 -0
- package/lib/compiler/stages/1_scan_stage.d.ts +10 -0
- package/lib/compiler/stages/1_scan_stage.js +23 -0
- package/lib/compiler/stages/2_treeshake_stage.d.ts +11 -0
- package/lib/compiler/stages/2_treeshake_stage.js +24 -0
- package/lib/compiler/stages/3_extract_ts_stage.d.ts +10 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +71 -0
- package/lib/compiler/stages/4_build_schemas_stage.d.ts +10 -0
- package/lib/compiler/stages/4_build_schemas_stage.js +25 -0
- package/lib/compiler/stages/5_inject_ts_stage.d.ts +10 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +22 -0
- package/lib/compiler/stages/6_build_elements_stage.d.ts +11 -0
- package/lib/compiler/stages/6_build_elements_stage.js +22 -0
- package/lib/compiler/stages/7_dump_stage.d.ts +14 -0
- package/lib/compiler/stages/7_dump_stage.js +208 -0
- package/lib/compiler/stages/8_diagnose_stage.d.ts +16 -0
- package/lib/compiler/stages/8_diagnose_stage.js +43 -0
- package/lib/compiler/treeshake.d.ts +58 -0
- package/lib/compiler/treeshake.js +424 -0
- package/lib/compiler/typescript/bridge/extract.d.ts +11 -0
- package/lib/compiler/typescript/bridge/extract.js +270 -0
- package/lib/compiler/typescript/bridge/inject.d.ts +10 -0
- package/lib/compiler/typescript/bridge/inject.js +140 -0
- package/lib/compiler/typescript/bridge/organize.d.ts +61 -0
- package/lib/compiler/typescript/bridge/organize.js +258 -0
- package/lib/compiler/typescript/error.d.ts +88 -0
- package/lib/compiler/typescript/error.js +265 -0
- package/lib/compiler/typescript/parser.d.ts +48 -0
- package/lib/compiler/typescript/parser.js +581 -0
- package/lib/compiler/typescript/source.d.ts +12 -0
- package/lib/compiler/typescript/source.js +87 -0
- package/lib/compiler/typescript/transformers/app_inject.transformer.d.ts +2 -0
- package/lib/compiler/typescript/transformers/app_inject.transformer.js +89 -0
- package/lib/compiler/typescript/transformers/replace_import.transformer.d.ts +4 -0
- package/lib/compiler/typescript/transformers/replace_import.transformer.js +102 -0
- package/lib/compiler/typescript/typescript_compiler.d.ts +63 -0
- package/lib/compiler/typescript/typescript_compiler.js +602 -0
- package/lib/elements/blocks/block.builder.d.ts +29 -0
- package/lib/elements/blocks/block.builder.js +87 -0
- package/lib/elements/blocks/block.d.ts +15 -0
- package/lib/elements/blocks/block.js +37 -0
- package/lib/elements/blocks/block.schema.d.ts +23 -0
- package/lib/elements/blocks/block.schema.js +15 -0
- package/lib/elements/blocks/externals/externals.builder.d.ts +30 -0
- package/lib/elements/blocks/externals/externals.builder.js +37 -0
- package/lib/elements/blocks/externals/externals.schema.d.ts +11 -0
- package/lib/elements/blocks/externals/externals.schema.js +19 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +52 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.js +74 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +5 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.js +10 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +109 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.js +146 -0
- package/lib/elements/blocks/job/internal/resource_job.d.ts +14 -0
- package/lib/elements/blocks/job/internal/resource_job.js +30 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +11 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.js +15 -0
- package/lib/elements/blocks/job/job.builder.d.ts +118 -0
- package/lib/elements/blocks/job/job.builder.js +137 -0
- package/lib/elements/blocks/job/job.d.ts +13 -0
- package/lib/elements/blocks/job/job.js +40 -0
- package/lib/elements/blocks/job/job.schema.d.ts +26 -0
- package/lib/elements/blocks/job/job.schema.js +20 -0
- package/lib/elements/blocks/machine/machine.builder.d.ts +58 -0
- package/lib/elements/blocks/machine/machine.builder.js +135 -0
- package/lib/elements/blocks/machine/machine.d.ts +86 -0
- package/lib/elements/blocks/machine/machine.js +228 -0
- package/lib/elements/blocks/machine/machine.schema.d.ts +85 -0
- package/lib/elements/blocks/machine/machine.schema.js +64 -0
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +58 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +186 -0
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +48 -0
- package/lib/elements/blocks/machine/machine_transition.builder.js +98 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +10 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +17 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +6 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.js +6 -0
- package/lib/elements/blocks/queue/queue.builder.d.ts +40 -0
- package/lib/elements/blocks/queue/queue.builder.js +31 -0
- package/lib/elements/blocks/queue/queue.d.ts +9 -0
- package/lib/elements/blocks/queue/queue.js +11 -0
- package/lib/elements/blocks/queue/queue.schema.d.ts +12 -0
- package/lib/elements/blocks/queue/queue.schema.js +17 -0
- package/lib/elements/blocks/resource/resource.builder.d.ts +60 -0
- package/lib/elements/blocks/resource/resource.builder.js +224 -0
- package/lib/elements/blocks/resource/resource.d.ts +48 -0
- package/lib/elements/blocks/resource/resource.js +125 -0
- package/lib/elements/blocks/resource/resource.schema.d.ts +32 -0
- package/lib/elements/blocks/resource/resource.schema.js +30 -0
- package/lib/elements/blocks/resource/resource.types.d.ts +38 -0
- package/lib/elements/blocks/resource/resource.types.js +3 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +8 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +17 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +14 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.js +44 -0
- package/lib/elements/edge/controller/controller.builder.d.ts +78 -0
- package/lib/elements/edge/controller/controller.builder.js +178 -0
- package/lib/elements/edge/controller/controller.config.d.ts +6 -0
- package/lib/elements/edge/controller/controller.config.js +2 -0
- package/lib/elements/edge/controller/controller.d.ts +22 -0
- package/lib/elements/edge/controller/controller.js +41 -0
- package/lib/elements/edge/controller/controller.schema.d.ts +44 -0
- package/lib/elements/edge/controller/controller.schema.js +51 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +107 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +41 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +37 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +149 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +218 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +19 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.js +212 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +20 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +31 -0
- package/lib/elements/entities/bucket/bucket.builder.d.ts +61 -0
- package/lib/elements/entities/bucket/bucket.builder.js +130 -0
- package/lib/elements/entities/bucket/bucket.config.d.ts +29 -0
- package/lib/elements/entities/bucket/bucket.config.js +2 -0
- package/lib/elements/entities/bucket/bucket.d.ts +36 -0
- package/lib/elements/entities/bucket/bucket.infer.d.ts +22 -0
- package/lib/elements/entities/bucket/bucket.infer.js +85 -0
- package/lib/elements/entities/bucket/bucket.js +125 -0
- package/lib/elements/entities/bucket/bucket.schema.d.ts +24 -0
- package/lib/elements/entities/bucket/bucket.schema.js +16 -0
- package/lib/elements/entities/bucket/bucket.types.d.ts +32 -0
- package/lib/elements/entities/bucket/bucket.types.js +2 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +35 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.js +182 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +11 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +27 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +16 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +9 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.js +2 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.js +136 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +28 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +27 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +36 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +56 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +24 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +5 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +51 -0
- package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.infer.js +2 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +35 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +47 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +119 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +154 -0
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +140 -0
- package/lib/elements/entities/bucket/query/nql.schema.js +2 -0
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +44 -0
- package/lib/elements/entities/bucket/query/nql_compiler.js +620 -0
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +16 -0
- package/lib/elements/entities/bucket/query/nql_engine.js +42 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +14 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +24 -0
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +10 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +102 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +55 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +42 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +37 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +138 -0
- package/lib/elements/entities/constants/constants.builder.d.ts +57 -0
- package/lib/elements/entities/constants/constants.builder.js +116 -0
- package/lib/elements/entities/constants/constants.d.ts +7 -0
- package/lib/elements/entities/constants/constants.js +15 -0
- package/lib/elements/entities/constants/constants.schema.d.ts +51 -0
- package/lib/elements/entities/constants/constants.schema.js +45 -0
- package/lib/elements/entities/message/message.builder.d.ts +33 -0
- package/lib/elements/entities/message/message.builder.js +41 -0
- package/lib/elements/entities/message/message.d.ts +11 -0
- package/lib/elements/entities/message/message.infer.d.ts +63 -0
- package/lib/elements/entities/message/message.infer.js +2 -0
- package/lib/elements/entities/message/message.js +52 -0
- package/lib/elements/entities/message/message.schema.d.ts +15 -0
- package/lib/elements/entities/message/message.schema.js +13 -0
- package/lib/elements/entities/message/message_parser.d.ts +12 -0
- package/lib/elements/entities/message/message_parser.js +112 -0
- package/lib/elements/entities/message/template/message_template.builder.d.ts +14 -0
- package/lib/elements/entities/message/template/message_template.builder.js +20 -0
- package/lib/elements/entities/message/template/message_template.schema.d.ts +57 -0
- package/lib/elements/entities/message/template/message_template.schema.js +28 -0
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +225 -0
- package/lib/elements/entities/message/template/message_template_field.builder.js +172 -0
- package/lib/elements/entities/message/template/message_template_parser.d.ts +3 -0
- package/lib/elements/entities/message/template/message_template_parser.js +83 -0
- package/lib/elements/index.d.ts +11 -0
- package/lib/elements/index.js +23 -0
- package/lib/engine/apps/app.config.d.ts +49 -0
- package/lib/engine/apps/app.config.js +38 -0
- package/lib/engine/apps/app.d.ts +70 -0
- package/lib/engine/apps/app.js +101 -0
- package/lib/engine/apps/inline.app.d.ts +48 -0
- package/lib/engine/apps/inline.app.js +144 -0
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +20 -0
- package/lib/engine/apps/monolyth/monolyth.app.js +94 -0
- package/lib/engine/apps/monolyth/monolyth.cli.d.ts +45 -0
- package/lib/engine/apps/monolyth/monolyth.cli.js +362 -0
- package/lib/engine/auth/authn.d.ts +18 -0
- package/lib/engine/auth/authn.js +9 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +13 -0
- package/lib/engine/auth/zero.authn_provider.js +13 -0
- package/lib/engine/cli/cli.d.ts +19 -0
- package/lib/engine/cli/cli.js +88 -0
- package/lib/engine/cli/cli_adapter.d.ts +18 -0
- package/lib/engine/cli/cli_adapter.js +61 -0
- package/lib/engine/cli/ui.d.ts +36 -0
- package/lib/engine/cli/ui.js +188 -0
- package/lib/engine/daemon.d.ts +35 -0
- package/lib/engine/daemon.js +66 -0
- package/lib/engine/data/date.d.ts +10 -0
- package/lib/engine/data/date.js +32 -0
- package/lib/engine/data/datetime.d.ts +12 -0
- package/lib/engine/data/datetime.js +31 -0
- package/lib/engine/data/decimal.d.ts +11 -0
- package/lib/engine/data/decimal.js +70 -0
- package/lib/engine/data/error.d.ts +213 -0
- package/lib/engine/data/error.js +386 -0
- package/lib/engine/data/obj.d.ts +16 -0
- package/lib/engine/data/obj.js +5 -0
- package/lib/engine/data/tree.d.ts +17 -0
- package/lib/engine/data/tree.js +111 -0
- package/lib/engine/dependency.d.ts +68 -0
- package/lib/engine/dependency.js +91 -0
- package/lib/engine/module.d.ts +97 -0
- package/lib/engine/module.js +335 -0
- package/lib/engine/space.d.ts +54 -0
- package/lib/engine/space.js +138 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +53 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.js +522 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +17 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +82 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +13 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +40 -0
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +12 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +39 -0
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +10 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +24 -0
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +24 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +77 -0
- package/lib/engine/transaction/trx.d.ts +50 -0
- package/lib/engine/transaction/trx.js +94 -0
- package/lib/engine/transaction/trx_engine.config.d.ts +15 -0
- package/lib/engine/transaction/trx_engine.config.js +2 -0
- package/lib/engine/transaction/trx_engine.d.ts +27 -0
- package/lib/engine/transaction/trx_engine.js +95 -0
- package/lib/engine/transaction/trx_node.d.ts +61 -0
- package/lib/engine/transaction/trx_node.js +175 -0
- package/lib/engine/tree.d.ts +34 -0
- package/lib/engine/tree.js +237 -0
- package/lib/engine/util/cache.d.ts +6 -0
- package/lib/engine/util/cache.js +20 -0
- package/lib/engine/util/console.d.ts +4 -0
- package/lib/engine/util/console.js +24 -0
- package/lib/engine/util/deep.d.ts +7 -0
- package/lib/engine/util/deep.js +2 -0
- package/lib/engine/util/dotenv.d.ts +15 -0
- package/lib/engine/util/dotenv.js +94 -0
- package/lib/engine/util/i18n.d.ts +5 -0
- package/lib/engine/util/i18n.js +19 -0
- package/lib/engine/util/log.d.ts +17 -0
- package/lib/engine/util/log.js +93 -0
- package/lib/engine/util/parse.d.ts +63 -0
- package/lib/engine/util/parse.js +229 -0
- package/lib/engine/util/promise.d.ts +3 -0
- package/lib/engine/util/promise.js +14 -0
- package/lib/engine/util/shell.d.ts +6 -0
- package/lib/engine/util/shell.js +44 -0
- package/lib/engine/util/string.d.ts +18 -0
- package/lib/engine/util/string.js +25 -0
- package/lib/engine/util/type.d.ts +7 -0
- package/lib/engine/util/type.js +3 -0
- package/lib/schema.d.ts +63 -0
- package/lib/schema.js +2 -0
- package/package.json +22 -0
- package/tools/compile.d.ts +1 -0
- package/tools/compile.js +68 -0
- package/tools/joaquin/job.d.ts +40 -0
- package/tools/joaquin/job.js +47 -0
- package/tools/joaquin/message.d.ts +12 -0
- package/tools/joaquin/message.js +47 -0
- package/tools/joaquin/mock.d.ts +28 -0
- package/tools/joaquin/mock.js +128 -0
- package/tsconfig.build.tsbuildinfo +1 -0
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Parser = exports.ParsedNode = void 0;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const error_1 = require("./error");
|
|
39
|
+
/**
|
|
40
|
+
* TODO: DEPRECATE THIS
|
|
41
|
+
*/
|
|
42
|
+
const DEBUG_LOG = false;
|
|
43
|
+
class ParsedNode {
|
|
44
|
+
constructor(node, superkind, kind, value, type = 'unknown') {
|
|
45
|
+
this.superkind = superkind;
|
|
46
|
+
this.kind = kind;
|
|
47
|
+
this.value = value;
|
|
48
|
+
this.type = type;
|
|
49
|
+
}
|
|
50
|
+
withExpressionOperator(operator) {
|
|
51
|
+
this.expressionOperator = operator;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
withArrayElement(element) {
|
|
55
|
+
this.arrayElement = element;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
withArguments(args) {
|
|
59
|
+
this.arguments = args;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
withMembers(members) {
|
|
63
|
+
this.members = members;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
withReturn(node) {
|
|
67
|
+
this.return = node;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
withChain(chain) {
|
|
71
|
+
this.chain = chain;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
toString(d = 0) {
|
|
75
|
+
const pad0 = ' '.repeat(d);
|
|
76
|
+
const pad1 = ' '.repeat(d + 1);
|
|
77
|
+
if (this.kind === 'primitive')
|
|
78
|
+
return this.value;
|
|
79
|
+
if (this.kind === 'string')
|
|
80
|
+
return `'${this.value}'`;
|
|
81
|
+
if (this.kind === 'obj') {
|
|
82
|
+
return '{\n' +
|
|
83
|
+
Object.entries(this.members).map(([key, val]) => `${pad1}${key}: ${val.toString(d + 1)}`).join(',\n')
|
|
84
|
+
+ `\n${pad0}}`;
|
|
85
|
+
}
|
|
86
|
+
if (this.kind === 'array') {
|
|
87
|
+
return '[\n' +
|
|
88
|
+
Object.values(this.members).map((val) => `${pad1}${val.toString(d + 1)}`).join(',\n')
|
|
89
|
+
+ `\n${pad0}]`;
|
|
90
|
+
}
|
|
91
|
+
if (this.kind === 'fn') {
|
|
92
|
+
return `${this.value}(` +
|
|
93
|
+
Object.values(this.arguments).map((val) => `${val.toString(d)}`).join(', ')
|
|
94
|
+
+ ') => {\n' +
|
|
95
|
+
`${pad1}${this.return.toString(d + 1)}`
|
|
96
|
+
+ `\n${pad0}}`;
|
|
97
|
+
}
|
|
98
|
+
if (this.kind === 'identifier') {
|
|
99
|
+
return this.value;
|
|
100
|
+
}
|
|
101
|
+
if (this.kind === 'call') {
|
|
102
|
+
if (!this.chain) {
|
|
103
|
+
if (this.arguments) {
|
|
104
|
+
return `${this.value}(` +
|
|
105
|
+
Object.values(this.arguments).map((val) => `${val.toString(d)}`).join(',')
|
|
106
|
+
+ ')';
|
|
107
|
+
}
|
|
108
|
+
return `${this.value}()`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (this.kind === 'chain') {
|
|
112
|
+
return '[\n' +
|
|
113
|
+
this.chain.map(call => pad1 + call.toString(d + 1))
|
|
114
|
+
.join(',\n')
|
|
115
|
+
+ `\n${pad0}]`;
|
|
116
|
+
}
|
|
117
|
+
if (this.kind === 'expression') {
|
|
118
|
+
if (this.arguments.length === 1) {
|
|
119
|
+
return this.expressionOperator.value + this.arguments[0].toString();
|
|
120
|
+
}
|
|
121
|
+
else if (this.arguments.length === 2) {
|
|
122
|
+
return this.arguments[0].toString() + this.expressionOperator.value + this.arguments[1].toString();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.ParsedNode = ParsedNode;
|
|
128
|
+
class Parser {
|
|
129
|
+
/* Value */
|
|
130
|
+
static parseNode(node, parseChain = true) {
|
|
131
|
+
const text = node?.getText();
|
|
132
|
+
if (!node) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
// Simple values
|
|
136
|
+
if (node.kind === ts.SyntaxKind.NullKeyword) {
|
|
137
|
+
if (DEBUG_LOG)
|
|
138
|
+
console.log('Parsing value node as null', { text });
|
|
139
|
+
return new ParsedNode(node, 'value', 'primitive', 'null', 'null');
|
|
140
|
+
}
|
|
141
|
+
if (node.kind === ts.SyntaxKind.UndefinedKeyword) {
|
|
142
|
+
if (DEBUG_LOG)
|
|
143
|
+
console.log('Parsing value node as undefined', { text });
|
|
144
|
+
return new ParsedNode(node, 'value', 'primitive', 'undefined', 'undefined');
|
|
145
|
+
}
|
|
146
|
+
if (node.kind === ts.SyntaxKind.TrueKeyword) {
|
|
147
|
+
if (DEBUG_LOG)
|
|
148
|
+
console.log('Parsing value node as true', { text });
|
|
149
|
+
return new ParsedNode(node, 'value', 'primitive', 'true', 'boolean');
|
|
150
|
+
}
|
|
151
|
+
if (node.kind === ts.SyntaxKind.FalseKeyword) {
|
|
152
|
+
if (DEBUG_LOG)
|
|
153
|
+
console.log('Parsing value node as false', { text });
|
|
154
|
+
return new ParsedNode(node, 'value', 'primitive', 'false', 'boolean');
|
|
155
|
+
}
|
|
156
|
+
if (ts.isNumericLiteral(node)) {
|
|
157
|
+
if (DEBUG_LOG)
|
|
158
|
+
console.log('Parsing value node as number', { text });
|
|
159
|
+
return new ParsedNode(node, 'value', 'primitive', node.text, 'number');
|
|
160
|
+
}
|
|
161
|
+
if (ts.isStringLiteral(node)) {
|
|
162
|
+
if (DEBUG_LOG)
|
|
163
|
+
console.log('Parsing value node as string', { text });
|
|
164
|
+
return new ParsedNode(node, 'value', 'string', node.text, 'string');
|
|
165
|
+
}
|
|
166
|
+
if (ts.isObjectLiteralExpression(node)) {
|
|
167
|
+
if (DEBUG_LOG)
|
|
168
|
+
console.log('Parsing value node as object', { text });
|
|
169
|
+
return new ParsedNode(node, 'value', 'obj', undefined)
|
|
170
|
+
.withMembers(this.parseObjectMembers(node));
|
|
171
|
+
}
|
|
172
|
+
if (ts.isArrayLiteralExpression(node)) {
|
|
173
|
+
if (DEBUG_LOG)
|
|
174
|
+
console.log('Parsing value node as array', { text });
|
|
175
|
+
return new ParsedNode(node, 'value', 'array', undefined)
|
|
176
|
+
.withMembers(this.parseArrayElements(node));
|
|
177
|
+
}
|
|
178
|
+
// Functions, Builders, Identifiers
|
|
179
|
+
if (ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {
|
|
180
|
+
if (DEBUG_LOG)
|
|
181
|
+
console.log('Parsing value node as function', { text });
|
|
182
|
+
const name = this.parseFunctionName(node);
|
|
183
|
+
return new ParsedNode(node, 'value', 'fn', name)
|
|
184
|
+
.withArguments(this.parseFunctionParameters(node))
|
|
185
|
+
.withReturn(this.parseNode(node.body));
|
|
186
|
+
}
|
|
187
|
+
if (ts.isIdentifier(node)) {
|
|
188
|
+
if (DEBUG_LOG)
|
|
189
|
+
console.log('Parsing value node as identifier', { text });
|
|
190
|
+
const name = node.escapedText.toString();
|
|
191
|
+
return new ParsedNode(node, 'value', 'identifier', name);
|
|
192
|
+
}
|
|
193
|
+
if (ts.isParameter(node)) {
|
|
194
|
+
if (DEBUG_LOG)
|
|
195
|
+
console.log('Parsing value node as parameter', { text });
|
|
196
|
+
const name = this.parseNode(node.name);
|
|
197
|
+
return new ParsedNode(node, 'value', 'identifier', name);
|
|
198
|
+
}
|
|
199
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
200
|
+
if (DEBUG_LOG)
|
|
201
|
+
console.log('Parsing value node as property access expression', { text, parseChain });
|
|
202
|
+
return this.parseGetterCall(node, parseChain);
|
|
203
|
+
}
|
|
204
|
+
if (ts.isCallExpression(node)) {
|
|
205
|
+
if (DEBUG_LOG)
|
|
206
|
+
console.log('Parsing value node as function call', { text, parseChain });
|
|
207
|
+
return this.parseFunctionCall(node, parseChain);
|
|
208
|
+
}
|
|
209
|
+
if (ts.isBlock(node)) {
|
|
210
|
+
if (DEBUG_LOG)
|
|
211
|
+
console.log('Parsing value node as block output', { text });
|
|
212
|
+
return this.parseBlockReturn(node);
|
|
213
|
+
}
|
|
214
|
+
// Expressions
|
|
215
|
+
if (ts.isParenthesizedExpression(node)) {
|
|
216
|
+
if (DEBUG_LOG)
|
|
217
|
+
console.log('Parsing value node as parenthesized expression', { text });
|
|
218
|
+
return this.parseNode(node.expression);
|
|
219
|
+
}
|
|
220
|
+
if (ts.isAsExpression(node)) {
|
|
221
|
+
if (DEBUG_LOG)
|
|
222
|
+
console.log('Parsing value node as block output', { text });
|
|
223
|
+
return this.parseNode(node.expression);
|
|
224
|
+
}
|
|
225
|
+
if (ts.isPrefixUnaryExpression(node)) {
|
|
226
|
+
if (DEBUG_LOG)
|
|
227
|
+
console.log('Parsing value node as prefix unary expression', { text });
|
|
228
|
+
return this.parsePrefixUnaryExpression(node);
|
|
229
|
+
}
|
|
230
|
+
if (ts.isBinaryExpression(node)) {
|
|
231
|
+
if (DEBUG_LOG)
|
|
232
|
+
console.log('Parsing value node as binary expression', { text });
|
|
233
|
+
return this.parseBinaryExpression(node);
|
|
234
|
+
}
|
|
235
|
+
if (ts.isConditionalExpression(node)) {
|
|
236
|
+
if (DEBUG_LOG)
|
|
237
|
+
console.log('Parsing value node as binary expression', { text });
|
|
238
|
+
return this.parseConditionalExpression(node);
|
|
239
|
+
}
|
|
240
|
+
if (ts.isAwaitExpression(node)) {
|
|
241
|
+
if (DEBUG_LOG)
|
|
242
|
+
console.log('Parsing value node as binary expression', { text });
|
|
243
|
+
return this.parseAwaitExpression(node);
|
|
244
|
+
}
|
|
245
|
+
// Tokens
|
|
246
|
+
if (ts.isPlusToken(node)) {
|
|
247
|
+
if (DEBUG_LOG)
|
|
248
|
+
console.log('Parsing value node as plus token', { text });
|
|
249
|
+
return new ParsedNode(node, 'value', 'token', '+');
|
|
250
|
+
}
|
|
251
|
+
if (ts.isMinusToken(node)) {
|
|
252
|
+
if (DEBUG_LOG)
|
|
253
|
+
console.log('Parsing value node as minus token', { text });
|
|
254
|
+
return new ParsedNode(node, 'value', 'token', '-');
|
|
255
|
+
}
|
|
256
|
+
if (ts.isAsteriskToken(node)) {
|
|
257
|
+
if (DEBUG_LOG)
|
|
258
|
+
console.log('Parsing value node as asterisk token', { text });
|
|
259
|
+
return new ParsedNode(node, 'value', 'token', '*');
|
|
260
|
+
}
|
|
261
|
+
if (node.kind === ts.SyntaxKind.SlashToken) {
|
|
262
|
+
if (DEBUG_LOG)
|
|
263
|
+
console.log('Parsing value node as slash token', { text });
|
|
264
|
+
return new ParsedNode(node, 'value', 'token', '/');
|
|
265
|
+
}
|
|
266
|
+
if (node.kind === ts.SyntaxKind.EqualsEqualsToken) {
|
|
267
|
+
if (DEBUG_LOG)
|
|
268
|
+
console.log('Parsing value node as equals2 token', { text });
|
|
269
|
+
return new ParsedNode(node, 'value', 'token', '==');
|
|
270
|
+
}
|
|
271
|
+
if (node.kind === ts.SyntaxKind.EqualsEqualsEqualsToken) {
|
|
272
|
+
if (DEBUG_LOG)
|
|
273
|
+
console.log('Parsing value node as equals3 token', { text });
|
|
274
|
+
return new ParsedNode(node, 'value', 'token', '===');
|
|
275
|
+
}
|
|
276
|
+
if (node.kind === ts.SyntaxKind.ExclamationEqualsToken) {
|
|
277
|
+
if (DEBUG_LOG)
|
|
278
|
+
console.log('Parsing value node as not_equals2 token', { text });
|
|
279
|
+
return new ParsedNode(node, 'value', 'token', '!=');
|
|
280
|
+
}
|
|
281
|
+
if (node.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken) {
|
|
282
|
+
if (DEBUG_LOG)
|
|
283
|
+
console.log('Parsing value node as not_equals3 token', { text });
|
|
284
|
+
return new ParsedNode(node, 'value', 'token', '!==');
|
|
285
|
+
}
|
|
286
|
+
if (node.kind === ts.SyntaxKind.BarBarToken) {
|
|
287
|
+
if (DEBUG_LOG)
|
|
288
|
+
console.log('Parsing value node as bar bar token', { text });
|
|
289
|
+
return new ParsedNode(node, 'value', 'token', '||');
|
|
290
|
+
}
|
|
291
|
+
if (node.kind === ts.SyntaxKind.QuestionQuestionToken) {
|
|
292
|
+
if (DEBUG_LOG)
|
|
293
|
+
console.log('Parsing value node as question question token', { text });
|
|
294
|
+
return new ParsedNode(node, 'value', 'token', '??');
|
|
295
|
+
}
|
|
296
|
+
console.error(node.getText());
|
|
297
|
+
throw error_1.ParserError.StrangeValueKind(node.kind);
|
|
298
|
+
}
|
|
299
|
+
static parseObjectMembers(node) {
|
|
300
|
+
if (DEBUG_LOG)
|
|
301
|
+
console.log('Parsing value node object members');
|
|
302
|
+
const properties = {};
|
|
303
|
+
for (const p in node.properties) {
|
|
304
|
+
const prop = node.properties[p];
|
|
305
|
+
if (typeof prop !== 'object') {
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
if (!ts.isPropertyAssignment(prop)) {
|
|
309
|
+
throw error_1.ParserError.ObjectPropertyIsNotAssignment();
|
|
310
|
+
}
|
|
311
|
+
const name = Parser.parseNode(prop.name).value;
|
|
312
|
+
properties[name] = Parser.parseNode(prop.initializer);
|
|
313
|
+
}
|
|
314
|
+
return properties;
|
|
315
|
+
}
|
|
316
|
+
static parseArrayElements(node) {
|
|
317
|
+
if (DEBUG_LOG)
|
|
318
|
+
console.log('Parsing value node array elements');
|
|
319
|
+
const elements = {};
|
|
320
|
+
let i = 0;
|
|
321
|
+
for (const p in node.elements) {
|
|
322
|
+
const prop = node.elements[p];
|
|
323
|
+
if (typeof prop !== 'object') {
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
elements[i] = Parser.parseNode(prop);
|
|
327
|
+
i++;
|
|
328
|
+
}
|
|
329
|
+
return elements;
|
|
330
|
+
}
|
|
331
|
+
static parseFunctionName(node) {
|
|
332
|
+
if (DEBUG_LOG)
|
|
333
|
+
console.log('Parsing value node function name');
|
|
334
|
+
if (ts.isArrowFunction(node)) {
|
|
335
|
+
return '$';
|
|
336
|
+
}
|
|
337
|
+
return node.name?.escapedText;
|
|
338
|
+
}
|
|
339
|
+
static parseFunctionParameters(node) {
|
|
340
|
+
if (DEBUG_LOG)
|
|
341
|
+
console.log('Parsing value node function parameters');
|
|
342
|
+
const parameters = [];
|
|
343
|
+
for (const p in node.parameters) {
|
|
344
|
+
const prop = node.parameters[p];
|
|
345
|
+
if (typeof prop !== 'object') {
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
parameters.push(Parser.parseNode(prop));
|
|
349
|
+
}
|
|
350
|
+
return parameters;
|
|
351
|
+
}
|
|
352
|
+
static parseBlockReturn(node) {
|
|
353
|
+
if (DEBUG_LOG)
|
|
354
|
+
console.log('Parsing value node block return');
|
|
355
|
+
for (const i in node.statements) {
|
|
356
|
+
const statement = node.statements[i];
|
|
357
|
+
if (ts.isReturnStatement(statement)) {
|
|
358
|
+
if (statement.expression) {
|
|
359
|
+
return this.parseNode(statement.expression);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return new ParsedNode(node, 'value', 'primitive', 'undefined');
|
|
367
|
+
}
|
|
368
|
+
static parseFunctionCall(node, parseChain) {
|
|
369
|
+
let name = '';
|
|
370
|
+
if (ts.isIdentifier(node.expression)) {
|
|
371
|
+
name = node.expression.escapedText.toString();
|
|
372
|
+
}
|
|
373
|
+
else if (ts.isPropertyAccessExpression(node.expression)) {
|
|
374
|
+
name = node.expression.name.escapedText.toString();
|
|
375
|
+
}
|
|
376
|
+
const parsed = new ParsedNode(node, 'value', parseChain ? 'chain' : 'call', name);
|
|
377
|
+
if (parseChain) {
|
|
378
|
+
parsed.withChain(this.parseCallChain(node));
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
parsed.withArguments(this.parseCallArguments(node));
|
|
382
|
+
}
|
|
383
|
+
return parsed;
|
|
384
|
+
}
|
|
385
|
+
static parseGetterCall(node, parseChain) {
|
|
386
|
+
let name = '';
|
|
387
|
+
if (ts.isIdentifier(node.name)) {
|
|
388
|
+
name = node.name.escapedText.toString();
|
|
389
|
+
}
|
|
390
|
+
const parsed = new ParsedNode(node, 'value', parseChain ? 'chain' : 'call', name);
|
|
391
|
+
if (parseChain) {
|
|
392
|
+
parsed.withChain(this.parseCallChain(node));
|
|
393
|
+
}
|
|
394
|
+
return parsed;
|
|
395
|
+
}
|
|
396
|
+
static parseCallArguments(node) {
|
|
397
|
+
if (DEBUG_LOG)
|
|
398
|
+
console.log('Parsing value node function call arguments');
|
|
399
|
+
const args = [];
|
|
400
|
+
for (const i in node.arguments) {
|
|
401
|
+
const arg = node.arguments[i];
|
|
402
|
+
if (typeof arg !== 'object') {
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
args.push(this.parseNode(arg));
|
|
406
|
+
}
|
|
407
|
+
return args;
|
|
408
|
+
}
|
|
409
|
+
static parsePrefixUnaryExpression(node) {
|
|
410
|
+
if (DEBUG_LOG)
|
|
411
|
+
console.log('Parsing value node as prefix unary expression');
|
|
412
|
+
const operator = new ParsedNode(node, 'value', 'token', {
|
|
413
|
+
[ts.SyntaxKind.PlusPlusToken]: '++',
|
|
414
|
+
[ts.SyntaxKind.MinusMinusToken]: '--',
|
|
415
|
+
[ts.SyntaxKind.PlusToken]: '+',
|
|
416
|
+
[ts.SyntaxKind.MinusToken]: '-',
|
|
417
|
+
[ts.SyntaxKind.TildeToken]: '~',
|
|
418
|
+
[ts.SyntaxKind.ExclamationToken]: '!',
|
|
419
|
+
}[node.operator]);
|
|
420
|
+
const operand = this.parseNode(node.operand);
|
|
421
|
+
return new ParsedNode(node, 'value', 'expression', undefined, 'boolean')
|
|
422
|
+
.withExpressionOperator(operator)
|
|
423
|
+
.withArguments([operand]);
|
|
424
|
+
}
|
|
425
|
+
static parseAwaitExpression(node) {
|
|
426
|
+
if (DEBUG_LOG)
|
|
427
|
+
console.log('Parsing value node as binary expression');
|
|
428
|
+
const operator = new ParsedNode(node, 'value', 'token', 'await');
|
|
429
|
+
const expression = this.parseNode(node.expression);
|
|
430
|
+
return new ParsedNode(node, 'value', 'expression', undefined, `Promise<${expression.type}>`)
|
|
431
|
+
.withExpressionOperator(operator)
|
|
432
|
+
.withArguments([expression]);
|
|
433
|
+
}
|
|
434
|
+
static parseBinaryExpression(node) {
|
|
435
|
+
if (DEBUG_LOG)
|
|
436
|
+
console.log('Parsing value node as binary expression');
|
|
437
|
+
const left = this.parseNode(node.left);
|
|
438
|
+
const right = this.parseNode(node.right);
|
|
439
|
+
const token = this.parseNode(node.operatorToken);
|
|
440
|
+
return new ParsedNode(node, 'value', 'expression', undefined, left.type)
|
|
441
|
+
.withExpressionOperator(token)
|
|
442
|
+
.withArguments([left, right]);
|
|
443
|
+
}
|
|
444
|
+
static parseConditionalExpression(node) {
|
|
445
|
+
if (DEBUG_LOG)
|
|
446
|
+
console.log('Parsing value node as conditional expression');
|
|
447
|
+
const condition = this.parseNode(node.condition);
|
|
448
|
+
const left = this.parseNode(node.whenTrue);
|
|
449
|
+
const right = this.parseNode(node.whenFalse);
|
|
450
|
+
return new ParsedNode(node, 'value', 'expression', undefined, left.type + ' | ' + right.type)
|
|
451
|
+
.withExpressionOperator(condition)
|
|
452
|
+
.withArguments([left, right]);
|
|
453
|
+
}
|
|
454
|
+
static parseCallChain(node) {
|
|
455
|
+
if (DEBUG_LOG)
|
|
456
|
+
console.log('Parsing value node function call chain', node.getText());
|
|
457
|
+
const upNodes = [];
|
|
458
|
+
const downNodes = [];
|
|
459
|
+
let downCall = ts.isCallExpression(node)
|
|
460
|
+
? (ts.isPropertyAccessExpression(node.expression) ? node.expression.expression : undefined) // function
|
|
461
|
+
: ((ts.isCallExpression(node.expression) || ts.isPropertyAccessExpression(node.expression))
|
|
462
|
+
? node.expression
|
|
463
|
+
: undefined); // getter
|
|
464
|
+
while (downCall) {
|
|
465
|
+
if (DEBUG_LOG)
|
|
466
|
+
console.log('Parsing value down node', downCall.getText());
|
|
467
|
+
// function
|
|
468
|
+
if (ts.isCallExpression(downCall)) {
|
|
469
|
+
if (DEBUG_LOG)
|
|
470
|
+
console.log('Parsing value down node as function');
|
|
471
|
+
downNodes.push(downCall);
|
|
472
|
+
if (!ts.isPropertyAccessExpression(downCall.expression)) {
|
|
473
|
+
break;
|
|
474
|
+
}
|
|
475
|
+
downCall = downCall.expression.expression;
|
|
476
|
+
}
|
|
477
|
+
// getter
|
|
478
|
+
else if (ts.isPropertyAccessExpression(downCall)) {
|
|
479
|
+
if (DEBUG_LOG)
|
|
480
|
+
console.log('Parsing value down node as getter');
|
|
481
|
+
downNodes.push(downCall);
|
|
482
|
+
downCall = downCall.expression;
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
break;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
let upCall = ts.isCallExpression(node)
|
|
489
|
+
? (ts.isPropertyAccessExpression(node.parent) ? node.parent.parent : undefined) // function
|
|
490
|
+
: (ts.isPropertyAccessExpression(node.parent) ? node.parent : undefined); // getter
|
|
491
|
+
while (upCall) {
|
|
492
|
+
if (DEBUG_LOG)
|
|
493
|
+
console.log('Parsing value up node', upCall.getText());
|
|
494
|
+
// .something()
|
|
495
|
+
if (ts.isCallExpression(upCall)) {
|
|
496
|
+
if (DEBUG_LOG)
|
|
497
|
+
console.log('Parsing value up node as function');
|
|
498
|
+
upNodes.push(upCall);
|
|
499
|
+
if (!ts.isPropertyAccessExpression(upCall.parent)) {
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
upCall = upCall.parent.parent;
|
|
503
|
+
}
|
|
504
|
+
// .something
|
|
505
|
+
else if (ts.isPropertyAccessExpression(upCall)) {
|
|
506
|
+
if (DEBUG_LOG)
|
|
507
|
+
console.log('Parsing value up node as getter');
|
|
508
|
+
upNodes.push(upCall);
|
|
509
|
+
upCall = upCall.parent;
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
const chain = [
|
|
516
|
+
...downNodes.reverse(),
|
|
517
|
+
node,
|
|
518
|
+
...upNodes,
|
|
519
|
+
];
|
|
520
|
+
return chain.map((call, i) => this.parseNode(call, false));
|
|
521
|
+
}
|
|
522
|
+
/* Type */
|
|
523
|
+
static parseType(node) {
|
|
524
|
+
if (!node) {
|
|
525
|
+
return undefined;
|
|
526
|
+
}
|
|
527
|
+
if (node.kind === ts.SyntaxKind.NullKeyword) {
|
|
528
|
+
return new ParsedNode(node, 'type', 'primitive', 'null');
|
|
529
|
+
}
|
|
530
|
+
if (node.kind === ts.SyntaxKind.UndefinedKeyword) {
|
|
531
|
+
return new ParsedNode(node, 'type', 'primitive', 'undefined');
|
|
532
|
+
}
|
|
533
|
+
if (node.kind === ts.SyntaxKind.NumberKeyword) {
|
|
534
|
+
return new ParsedNode(node, 'type', 'primitive', 'number');
|
|
535
|
+
}
|
|
536
|
+
if (node.kind === ts.SyntaxKind.StringKeyword) {
|
|
537
|
+
return new ParsedNode(node, 'type', 'primitive', 'string');
|
|
538
|
+
}
|
|
539
|
+
if (node.kind === ts.SyntaxKind.BooleanKeyword) {
|
|
540
|
+
return new ParsedNode(node, 'type', 'primitive', 'boolean');
|
|
541
|
+
}
|
|
542
|
+
if (ts.isInterfaceDeclaration(node)) {
|
|
543
|
+
const members = [...node.members];
|
|
544
|
+
return new ParsedNode(node, 'type', 'obj', undefined)
|
|
545
|
+
.withMembers(this.parseTypeMembers(members));
|
|
546
|
+
}
|
|
547
|
+
if (ts.isArrayTypeNode(node)) {
|
|
548
|
+
const element = this.parseType(node.elementType);
|
|
549
|
+
return new ParsedNode(node, 'type', 'array', undefined)
|
|
550
|
+
.withArrayElement(element);
|
|
551
|
+
}
|
|
552
|
+
if (ts.isTypeLiteralNode(node)) {
|
|
553
|
+
const members = [...node.members];
|
|
554
|
+
return new ParsedNode(node, 'type', 'obj', undefined)
|
|
555
|
+
.withMembers(this.parseTypeMembers(members));
|
|
556
|
+
}
|
|
557
|
+
if (ts.isTypeReferenceNode(node)) {
|
|
558
|
+
return new ParsedNode(node, 'type', 'identifier', this.parseNode(node.typeName)?.value);
|
|
559
|
+
}
|
|
560
|
+
console.error(node);
|
|
561
|
+
throw error_1.ParserError.StrangeTypeKind(node.kind);
|
|
562
|
+
}
|
|
563
|
+
static parseTypeMembers(nodes) {
|
|
564
|
+
const parsed = {};
|
|
565
|
+
for (const i in nodes) {
|
|
566
|
+
const node = nodes[i];
|
|
567
|
+
if (ts.isPropertySignature(node)) {
|
|
568
|
+
const key = this.parseNode(node.name).value;
|
|
569
|
+
if (!node.type) {
|
|
570
|
+
throw new Error('Property signature without type');
|
|
571
|
+
}
|
|
572
|
+
const type = this.parseType(node);
|
|
573
|
+
parsed[key] = type;
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
throw new Error(`Strange Type Member kind ${ts.SyntaxKind[node.kind]}`);
|
|
577
|
+
}
|
|
578
|
+
return parsed;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
exports.Parser = Parser;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { BuilderType } from "../../schema";
|
|
3
|
+
export declare class MetaSource {
|
|
4
|
+
sourceFile: ts.SourceFile;
|
|
5
|
+
filename: string;
|
|
6
|
+
imports: ts.ImportDeclaration[];
|
|
7
|
+
interfaces: Record<string, ts.InterfaceDeclaration>;
|
|
8
|
+
newExpressions: ts.NewExpression[];
|
|
9
|
+
nesoiCallExpressions: Partial<Record<BuilderType, Record<string, ts.CallExpression>>>;
|
|
10
|
+
constructor(sourceFile: ts.SourceFile);
|
|
11
|
+
private parseFile;
|
|
12
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MetaSource = void 0;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const parser_1 = require("./parser");
|
|
39
|
+
class MetaSource {
|
|
40
|
+
constructor(sourceFile) {
|
|
41
|
+
this.sourceFile = sourceFile;
|
|
42
|
+
this.imports = [];
|
|
43
|
+
this.interfaces = {};
|
|
44
|
+
this.newExpressions = [];
|
|
45
|
+
this.nesoiCallExpressions = {};
|
|
46
|
+
this.filename = this.sourceFile.fileName;
|
|
47
|
+
this.parseFile();
|
|
48
|
+
}
|
|
49
|
+
parseFile() {
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
51
|
+
const _this = this;
|
|
52
|
+
const transformerFactory = (context) => {
|
|
53
|
+
return (rootNode) => {
|
|
54
|
+
function visit(node) {
|
|
55
|
+
node = ts.visitEachChild(node, visit, context);
|
|
56
|
+
if (ts.isImportDeclaration(node)) {
|
|
57
|
+
_this.imports.push(node);
|
|
58
|
+
}
|
|
59
|
+
else if (ts.isInterfaceDeclaration(node)) {
|
|
60
|
+
const name = parser_1.Parser.parseNode(node).value;
|
|
61
|
+
_this.interfaces[name] = node;
|
|
62
|
+
}
|
|
63
|
+
else if (ts.isNewExpression(node)) {
|
|
64
|
+
_this.newExpressions.push(node);
|
|
65
|
+
}
|
|
66
|
+
// TODO: Make this less strict (use something other than escapedText == Nesoi')
|
|
67
|
+
else if (ts.isCallExpression(node)
|
|
68
|
+
&& ts.isPropertyAccessExpression(node.expression)
|
|
69
|
+
&& ts.isIdentifier(node.expression.expression)
|
|
70
|
+
&& node.expression.expression.escapedText === 'Nesoi') {
|
|
71
|
+
const builderType = parser_1.Parser.parseNode(node.expression).value;
|
|
72
|
+
if (!(builderType in _this.nesoiCallExpressions)) {
|
|
73
|
+
_this.nesoiCallExpressions[builderType] = {};
|
|
74
|
+
}
|
|
75
|
+
const globalName = parser_1.Parser.parseNode(node.arguments[0]).value;
|
|
76
|
+
const [moduleName, lowName] = globalName.split(':');
|
|
77
|
+
_this.nesoiCallExpressions[builderType][lowName] = node;
|
|
78
|
+
}
|
|
79
|
+
return node;
|
|
80
|
+
}
|
|
81
|
+
return ts.visitNode(rootNode, visit);
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
ts.transform(this.sourceFile, [transformerFactory]);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.MetaSource = MetaSource;
|