@a2ui/web_core 0.8.0 → 0.9.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/.tsbuildinfo +1 -0
- package/LICENSE +203 -0
- package/README.md +50 -4
- package/package.json +42 -72
- package/{dist/src → src}/v0_8/data/guards.js +13 -13
- package/src/v0_8/data/guards.test.d.ts +2 -0
- package/src/v0_8/data/guards.test.d.ts.map +1 -0
- package/src/v0_8/data/guards.test.js +174 -0
- package/src/v0_8/data/guards.test.js.map +1 -0
- package/{dist/src → src}/v0_8/data/model-processor.d.ts +1 -1
- package/{dist/src → src}/v0_8/data/model-processor.d.ts.map +1 -1
- package/{dist/src → src}/v0_8/data/model-processor.js +51 -40
- package/src/v0_8/data/model-processor.js.map +1 -0
- package/src/v0_8/data/model-processor.test.d.ts +2 -0
- package/src/v0_8/data/model-processor.test.d.ts.map +1 -0
- package/src/v0_8/data/model-processor.test.js +712 -0
- package/src/v0_8/data/model-processor.test.js.map +1 -0
- package/src/v0_8/errors.d.ts +35 -0
- package/src/v0_8/errors.d.ts.map +1 -0
- package/src/v0_8/errors.js +65 -0
- package/src/v0_8/errors.js.map +1 -0
- package/src/v0_8/events/validation-event.d.ts.map +1 -0
- package/{dist/src → src}/v0_8/events/validation-event.js.map +1 -1
- package/{dist/src → src}/v0_8/index.d.ts +35 -4
- package/{dist/src → src}/v0_8/index.d.ts.map +1 -1
- package/src/v0_8/index.js +28 -0
- package/src/v0_8/index.js.map +1 -0
- package/src/v0_8/schema/common-types.d.ts +1189 -0
- package/src/v0_8/schema/common-types.d.ts.map +1 -0
- package/src/v0_8/schema/common-types.js +381 -0
- package/src/v0_8/schema/common-types.js.map +1 -0
- package/src/v0_8/schema/server-to-client.d.ts +17949 -0
- package/src/v0_8/schema/server-to-client.d.ts.map +1 -0
- package/src/v0_8/schema/server-to-client.js +228 -0
- package/src/v0_8/schema/server-to-client.js.map +1 -0
- package/src/v0_8/schema/verify-schema.test.d.ts +17 -0
- package/src/v0_8/schema/verify-schema.test.d.ts.map +1 -0
- package/src/v0_8/schema/verify-schema.test.js +167 -0
- package/src/v0_8/schema/verify-schema.test.js.map +1 -0
- package/{dist/src → src}/v0_8/schemas/server_to_client.json +1 -1
- package/src/v0_8/schemas/server_to_client_with_standard_catalog.json +817 -787
- package/{dist/src → src}/v0_8/schemas/standard_catalog_definition.json +26 -0
- package/{dist/src → src}/v0_8/styles/behavior.js +13 -13
- package/{dist/src → src}/v0_8/styles/border.js +13 -13
- package/{dist/src → src}/v0_8/styles/colors.js +13 -13
- package/{dist/src → src}/v0_8/styles/colors.js.map +1 -1
- package/src/v0_8/styles/icons.d.ts +11 -0
- package/{dist/src → src}/v0_8/styles/icons.d.ts.map +1 -1
- package/{dist/src → src}/v0_8/styles/icons.js +17 -14
- package/{dist/src → src}/v0_8/styles/icons.js.map +1 -1
- package/src/v0_8/styles/index.js +35 -0
- package/{dist/src → src}/v0_8/styles/layout.js +13 -13
- package/{dist/src → src}/v0_8/styles/layout.js.map +1 -1
- package/src/v0_8/styles/opacity.js +24 -0
- package/src/v0_8/{events/index.ts → styles/shared.js} +3 -4
- package/src/v0_8/styles/styles.test.d.ts +2 -0
- package/src/v0_8/styles/styles.test.d.ts.map +1 -0
- package/src/v0_8/styles/styles.test.js +86 -0
- package/src/v0_8/styles/styles.test.js.map +1 -0
- package/{dist/src → src}/v0_8/styles/type.js +13 -13
- package/{dist/src → src}/v0_8/styles/utils.js +13 -13
- package/{dist/src → src}/v0_8/types/client-event.d.ts +10 -8
- package/src/v0_8/types/client-event.d.ts.map +1 -0
- package/src/v0_8/types/client-event.js +17 -0
- package/src/v0_8/types/colors.js +19 -0
- package/src/v0_8/types/components.d.ts +41 -0
- package/src/v0_8/types/components.d.ts.map +1 -0
- package/src/v0_8/types/components.js +17 -0
- package/src/v0_8/types/primitives.d.ts +9 -0
- package/src/v0_8/types/primitives.d.ts.map +1 -0
- package/src/v0_8/types/primitives.js +17 -0
- package/{dist/src → src}/v0_8/types/types.d.ts +44 -22
- package/src/v0_8/types/types.d.ts.map +1 -0
- package/src/v0_8/types/types.js +17 -0
- package/src/v0_9/basic_catalog/components/basic_components.d.ts +3359 -0
- package/src/v0_9/basic_catalog/components/basic_components.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/components/basic_components.js +448 -0
- package/src/v0_9/basic_catalog/components/basic_components.js.map +1 -0
- package/src/v0_9/basic_catalog/components/basic_components.test.d.ts +2 -0
- package/src/v0_9/basic_catalog/components/basic_components.test.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/components/basic_components.test.js +46 -0
- package/src/v0_9/basic_catalog/components/basic_components.test.js.map +1 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.d.ts +38 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.js +294 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.js.map +1 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.test.d.ts +2 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.test.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.test.js +126 -0
- package/src/v0_9/basic_catalog/expressions/expression_parser.test.js.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.d.ts +32 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.js +212 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.js.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.test.d.ts +2 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.test.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.test.js +301 -0
- package/src/v0_9/basic_catalog/functions/basic_functions.test.js.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions_api.d.ts +930 -0
- package/src/v0_9/basic_catalog/functions/basic_functions_api.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/functions/basic_functions_api.js +466 -0
- package/src/v0_9/basic_catalog/functions/basic_functions_api.js.map +1 -0
- package/src/v0_9/basic_catalog/index.d.ts +5 -0
- package/src/v0_9/basic_catalog/index.d.ts.map +1 -0
- package/src/v0_9/basic_catalog/index.js +20 -0
- package/src/v0_9/basic_catalog/index.js.map +1 -0
- package/src/v0_9/catalog/function_invoker.d.ts +12 -0
- package/src/v0_9/catalog/function_invoker.d.ts.map +1 -0
- package/src/v0_9/catalog/function_invoker.js +17 -0
- package/src/v0_9/catalog/function_invoker.js.map +1 -0
- package/src/v0_9/catalog/types.d.ts +80 -0
- package/src/v0_9/catalog/types.d.ts.map +1 -0
- package/src/v0_9/catalog/types.js +68 -0
- package/src/v0_9/catalog/types.js.map +1 -0
- package/src/v0_9/catalog/types.test.d.ts +2 -0
- package/src/v0_9/catalog/types.test.d.ts.map +1 -0
- package/src/v0_9/catalog/types.test.js +88 -0
- package/src/v0_9/catalog/types.test.js.map +1 -0
- package/src/v0_9/common/events.d.ts +45 -0
- package/src/v0_9/common/events.d.ts.map +1 -0
- package/src/v0_9/common/events.js +58 -0
- package/src/v0_9/common/events.js.map +1 -0
- package/src/v0_9/common/events.test.d.ts +2 -0
- package/src/v0_9/common/events.test.d.ts.map +1 -0
- package/src/v0_9/common/events.test.js +58 -0
- package/src/v0_9/common/events.test.js.map +1 -0
- package/src/v0_9/errors.d.ts +40 -0
- package/src/v0_9/errors.d.ts.map +1 -0
- package/src/v0_9/errors.js +69 -0
- package/src/v0_9/errors.js.map +1 -0
- package/src/v0_9/index.d.ts +152 -0
- package/src/v0_9/index.d.ts.map +1 -0
- package/src/v0_9/index.js +41 -0
- package/src/v0_9/index.js.map +1 -0
- package/src/v0_9/processing/message-processor.d.ts +70 -0
- package/src/v0_9/processing/message-processor.d.ts.map +1 -0
- package/src/v0_9/processing/message-processor.js +289 -0
- package/src/v0_9/processing/message-processor.js.map +1 -0
- package/src/v0_9/processing/message-processor.test.js +547 -0
- package/src/v0_9/processing/message-processor.test.js.map +1 -0
- package/src/v0_9/reactivity/signals.d.ts +43 -0
- package/src/v0_9/reactivity/signals.d.ts.map +1 -0
- package/src/v0_9/reactivity/signals.js +17 -0
- package/src/v0_9/reactivity/signals.js.map +1 -0
- package/src/v0_9/reactivity/signals.test.d.ts +17 -0
- package/src/v0_9/reactivity/signals.test.d.ts.map +1 -0
- package/src/v0_9/reactivity/signals.test.js +100 -0
- package/src/v0_9/reactivity/signals.test.js.map +1 -0
- package/src/v0_9/rendering/component-context.d.ts +35 -0
- package/src/v0_9/rendering/component-context.d.ts.map +1 -0
- package/src/v0_9/rendering/component-context.js +49 -0
- package/src/v0_9/rendering/component-context.js.map +1 -0
- package/src/v0_9/rendering/component-context.test.d.ts +2 -0
- package/src/v0_9/rendering/component-context.test.d.ts.map +1 -0
- package/src/v0_9/rendering/component-context.test.js +55 -0
- package/src/v0_9/rendering/component-context.test.js.map +1 -0
- package/src/v0_9/rendering/data-context.d.ts +99 -0
- package/src/v0_9/rendering/data-context.d.ts.map +1 -0
- package/src/v0_9/rendering/data-context.js +310 -0
- package/src/v0_9/rendering/data-context.js.map +1 -0
- package/src/v0_9/rendering/data-context.test.js +379 -0
- package/src/v0_9/rendering/data-context.test.js.map +1 -0
- package/src/v0_9/rendering/generic-binder.d.ts +122 -0
- package/src/v0_9/rendering/generic-binder.d.ts.map +1 -0
- package/src/v0_9/rendering/generic-binder.js +315 -0
- package/src/v0_9/rendering/generic-binder.js.map +1 -0
- package/src/v0_9/rendering/generic-binder.test.d.ts +2 -0
- package/src/v0_9/rendering/generic-binder.test.d.ts.map +1 -0
- package/src/v0_9/rendering/generic-binder.test.js +166 -0
- package/src/v0_9/rendering/generic-binder.test.js.map +1 -0
- package/src/v0_9/schema/client-capabilities.d.ts +34 -0
- package/src/v0_9/schema/client-capabilities.d.ts.map +1 -0
- package/src/v0_9/schema/client-capabilities.js +17 -0
- package/src/v0_9/schema/client-capabilities.js.map +1 -0
- package/src/v0_9/schema/client-to-server.d.ts +208 -0
- package/src/v0_9/schema/client-to-server.d.ts.map +1 -0
- package/src/v0_9/schema/client-to-server.js +104 -0
- package/src/v0_9/schema/client-to-server.js.map +1 -0
- package/src/v0_9/schema/client-to-server.test.d.ts +2 -0
- package/src/v0_9/schema/client-to-server.test.d.ts.map +1 -0
- package/src/v0_9/schema/client-to-server.test.js +85 -0
- package/src/v0_9/schema/client-to-server.test.js.map +1 -0
- package/{dist/src → src}/v0_9/schema/common-types.d.ts +318 -88
- package/src/v0_9/schema/common-types.d.ts.map +1 -0
- package/src/v0_9/schema/common-types.js +141 -0
- package/src/v0_9/schema/common-types.js.map +1 -0
- package/src/v0_9/schema/index.d.ts +5 -0
- package/src/v0_9/schema/index.d.ts.map +1 -0
- package/src/v0_9/schema/index.js +20 -0
- package/src/v0_9/schema/index.js.map +1 -0
- package/src/v0_9/schema/server-to-client.d.ts +307 -0
- package/src/v0_9/schema/server-to-client.d.ts.map +1 -0
- package/src/v0_9/schema/server-to-client.js +92 -0
- package/src/v0_9/schema/server-to-client.js.map +1 -0
- package/src/v0_9/schema/verify-schema.test.d.ts +17 -0
- package/src/v0_9/schema/verify-schema.test.d.ts.map +1 -0
- package/src/v0_9/schema/verify-schema.test.js +174 -0
- package/src/v0_9/schema/verify-schema.test.js.map +1 -0
- package/src/v0_9/schemas/basic_catalog.json +1387 -0
- package/src/v0_9/schemas/client_capabilities.json +97 -0
- package/src/v0_9/schemas/client_data_model.json +22 -0
- package/src/v0_9/schemas/client_to_server.json +104 -0
- package/src/v0_9/schemas/client_to_server_list.json +10 -0
- package/src/v0_9/schemas/common_types.json +315 -0
- package/src/v0_9/schemas/sample.json +22 -0
- package/src/v0_9/schemas/server_capabilities.json +26 -0
- package/src/v0_9/schemas/server_to_client.json +131 -0
- package/src/v0_9/schemas/server_to_client_list.json +10 -0
- package/src/v0_9/state/component-model.d.ts +36 -0
- package/src/v0_9/state/component-model.d.ts.map +1 -0
- package/src/v0_9/state/component-model.js +65 -0
- package/src/v0_9/state/component-model.js.map +1 -0
- package/{dist/src → src}/v0_9/state/component-model.test.js +23 -0
- package/src/v0_9/state/component-model.test.js.map +1 -0
- package/src/v0_9/state/data-model.d.ts +75 -0
- package/src/v0_9/state/data-model.d.ts.map +1 -0
- package/src/v0_9/state/data-model.js +235 -0
- package/src/v0_9/state/data-model.js.map +1 -0
- package/{dist/src → src}/v0_9/state/data-model.test.js +77 -17
- package/src/v0_9/state/data-model.test.js.map +1 -0
- package/src/v0_9/state/surface-components-model.d.ts +45 -0
- package/src/v0_9/state/surface-components-model.d.ts.map +1 -0
- package/src/v0_9/state/surface-components-model.js +86 -0
- package/src/v0_9/state/surface-components-model.js.map +1 -0
- package/{dist/src → src}/v0_9/state/surface-components-model.test.js +44 -2
- package/src/v0_9/state/surface-components-model.test.js.map +1 -0
- package/{dist/src → src}/v0_9/state/surface-group-model.d.ts +28 -1
- package/src/v0_9/state/surface-group-model.d.ts.map +1 -0
- package/{dist/src → src}/v0_9/state/surface-group-model.js +44 -1
- package/src/v0_9/state/surface-group-model.js.map +1 -0
- package/{dist/src → src}/v0_9/state/surface-group-model.test.js +47 -6
- package/src/v0_9/state/surface-group-model.test.js.map +1 -0
- package/src/v0_9/state/surface-model.d.ts +62 -0
- package/src/v0_9/state/surface-model.d.ts.map +1 -0
- package/src/v0_9/state/surface-model.js +101 -0
- package/src/v0_9/state/surface-model.js.map +1 -0
- package/src/v0_9/state/surface-model.test.js +93 -0
- package/src/v0_9/state/surface-model.test.js.map +1 -0
- package/src/v0_9/test/function_execution.spec.d.ts +17 -0
- package/src/v0_9/test/function_execution.spec.d.ts.map +1 -0
- package/src/v0_9/test/function_execution.spec.js +127 -0
- package/src/v0_9/test/function_execution.spec.js.map +1 -0
- package/src/v0_9/test/test-utils.d.ts.map +1 -0
- package/{dist/src → src}/v0_9/test/test-utils.js +15 -0
- package/src/v0_9/test/test-utils.js.map +1 -0
- package/dist/.tsbuildinfo +0 -1
- package/dist/src/v0_8/data/model-processor.js.map +0 -1
- package/dist/src/v0_8/events/validation-event.d.ts.map +0 -1
- package/dist/src/v0_8/index.js +0 -12
- package/dist/src/v0_8/index.js.map +0 -1
- package/dist/src/v0_8/schemas/server_to_client_with_standard_catalog.json +0 -823
- package/dist/src/v0_8/styles/icons.d.ts +0 -11
- package/dist/src/v0_8/styles/index.js +0 -35
- package/dist/src/v0_8/styles/opacity.js +0 -24
- package/dist/src/v0_8/styles/shared.js +0 -17
- package/dist/src/v0_8/types/client-event.d.ts.map +0 -1
- package/dist/src/v0_8/types/client-event.js +0 -17
- package/dist/src/v0_8/types/colors.js +0 -19
- package/dist/src/v0_8/types/components.d.ts +0 -176
- package/dist/src/v0_8/types/components.d.ts.map +0 -1
- package/dist/src/v0_8/types/components.js +0 -17
- package/dist/src/v0_8/types/primitives.d.ts +0 -43
- package/dist/src/v0_8/types/primitives.d.ts.map +0 -1
- package/dist/src/v0_8/types/primitives.js +0 -17
- package/dist/src/v0_8/types/types.d.ts.map +0 -1
- package/dist/src/v0_8/types/types.js +0 -17
- package/dist/src/v0_9/catalog/types.d.ts +0 -27
- package/dist/src/v0_9/catalog/types.d.ts.map +0 -1
- package/dist/src/v0_9/catalog/types.js +0 -11
- package/dist/src/v0_9/catalog/types.js.map +0 -1
- package/dist/src/v0_9/common/events.d.ts +0 -24
- package/dist/src/v0_9/common/events.d.ts.map +0 -1
- package/dist/src/v0_9/common/events.js +0 -29
- package/dist/src/v0_9/common/events.js.map +0 -1
- package/dist/src/v0_9/index.d.ts +0 -11
- package/dist/src/v0_9/index.d.ts.map +0 -1
- package/dist/src/v0_9/index.js +0 -11
- package/dist/src/v0_9/index.js.map +0 -1
- package/dist/src/v0_9/processing/message-processor.d.ts +0 -34
- package/dist/src/v0_9/processing/message-processor.d.ts.map +0 -1
- package/dist/src/v0_9/processing/message-processor.js +0 -128
- package/dist/src/v0_9/processing/message-processor.js.map +0 -1
- package/dist/src/v0_9/processing/message-processor.test.js +0 -112
- package/dist/src/v0_9/processing/message-processor.test.js.map +0 -1
- package/dist/src/v0_9/rendering/component-context.d.ts +0 -17
- package/dist/src/v0_9/rendering/component-context.d.ts.map +0 -1
- package/dist/src/v0_9/rendering/component-context.js +0 -21
- package/dist/src/v0_9/rendering/component-context.js.map +0 -1
- package/dist/src/v0_9/rendering/data-context.d.ts +0 -37
- package/dist/src/v0_9/rendering/data-context.d.ts.map +0 -1
- package/dist/src/v0_9/rendering/data-context.js +0 -97
- package/dist/src/v0_9/rendering/data-context.js.map +0 -1
- package/dist/src/v0_9/rendering/data-context.test.js +0 -71
- package/dist/src/v0_9/rendering/data-context.test.js.map +0 -1
- package/dist/src/v0_9/schema/common-types.d.ts.map +0 -1
- package/dist/src/v0_9/schema/common-types.js +0 -92
- package/dist/src/v0_9/schema/common-types.js.map +0 -1
- package/dist/src/v0_9/schema/index.d.ts +0 -3
- package/dist/src/v0_9/schema/index.d.ts.map +0 -1
- package/dist/src/v0_9/schema/index.js +0 -3
- package/dist/src/v0_9/schema/index.js.map +0 -1
- package/dist/src/v0_9/schema/server-to-client.d.ts +0 -84
- package/dist/src/v0_9/schema/server-to-client.d.ts.map +0 -1
- package/dist/src/v0_9/schema/server-to-client.js +0 -21
- package/dist/src/v0_9/schema/server-to-client.js.map +0 -1
- package/dist/src/v0_9/state/component-model.d.ts +0 -16
- package/dist/src/v0_9/state/component-model.d.ts.map +0 -1
- package/dist/src/v0_9/state/component-model.js +0 -24
- package/dist/src/v0_9/state/component-model.js.map +0 -1
- package/dist/src/v0_9/state/component-model.test.js.map +0 -1
- package/dist/src/v0_9/state/data-model.d.ts +0 -47
- package/dist/src/v0_9/state/data-model.d.ts.map +0 -1
- package/dist/src/v0_9/state/data-model.js +0 -191
- package/dist/src/v0_9/state/data-model.js.map +0 -1
- package/dist/src/v0_9/state/data-model.test.js.map +0 -1
- package/dist/src/v0_9/state/surface-components-model.d.ts +0 -19
- package/dist/src/v0_9/state/surface-components-model.d.ts.map +0 -1
- package/dist/src/v0_9/state/surface-components-model.js +0 -42
- package/dist/src/v0_9/state/surface-components-model.js.map +0 -1
- package/dist/src/v0_9/state/surface-components-model.test.js.map +0 -1
- package/dist/src/v0_9/state/surface-group-model.d.ts.map +0 -1
- package/dist/src/v0_9/state/surface-group-model.js.map +0 -1
- package/dist/src/v0_9/state/surface-group-model.test.js.map +0 -1
- package/dist/src/v0_9/state/surface-model.d.ts +0 -23
- package/dist/src/v0_9/state/surface-model.d.ts.map +0 -1
- package/dist/src/v0_9/state/surface-model.js +0 -28
- package/dist/src/v0_9/state/surface-model.js.map +0 -1
- package/dist/src/v0_9/state/surface-model.test.js +0 -39
- package/dist/src/v0_9/state/surface-model.test.js.map +0 -1
- package/dist/src/v0_9/test/test-utils.d.ts.map +0 -1
- package/dist/src/v0_9/test/test-utils.js.map +0 -1
- package/src/v0_8/data/guards.ts +0 -236
- package/src/v0_8/data/model-processor.ts +0 -855
- package/src/v0_8/events/base.ts +0 -24
- package/src/v0_8/events/validation-event.ts +0 -66
- package/src/v0_8/index.ts +0 -12
- package/src/v0_8/styles/behavior.ts +0 -55
- package/src/v0_8/styles/border.ts +0 -42
- package/src/v0_8/styles/colors.ts +0 -100
- package/src/v0_8/styles/icons.ts +0 -60
- package/src/v0_8/styles/index.ts +0 -37
- package/src/v0_8/styles/layout.ts +0 -235
- package/src/v0_8/styles/opacity.ts +0 -24
- package/src/v0_8/styles/shared.ts +0 -17
- package/src/v0_8/styles/type.ts +0 -156
- package/src/v0_8/styles/utils.ts +0 -104
- package/src/v0_8/types/client-event.ts +0 -80
- package/src/v0_8/types/colors.ts +0 -66
- package/src/v0_8/types/components.ts +0 -213
- package/src/v0_8/types/primitives.ts +0 -60
- package/src/v0_8/types/types.ts +0 -557
- package/src/v0_9/catalog/types.ts +0 -38
- package/src/v0_9/common/events.ts +0 -44
- package/src/v0_9/index.ts +0 -12
- package/src/v0_9/processing/message-processor.test.ts +0 -133
- package/src/v0_9/processing/message-processor.ts +0 -150
- package/src/v0_9/rendering/component-context.ts +0 -36
- package/src/v0_9/rendering/data-context.test.ts +0 -85
- package/src/v0_9/rendering/data-context.ts +0 -110
- package/src/v0_9/schema/common-types.ts +0 -125
- package/src/v0_9/schema/index.ts +0 -2
- package/src/v0_9/schema/server-to-client.ts +0 -23
- package/src/v0_9/state/component-model.test.ts +0 -50
- package/src/v0_9/state/component-model.ts +0 -32
- package/src/v0_9/state/data-model.test.ts +0 -257
- package/src/v0_9/state/data-model.ts +0 -239
- package/src/v0_9/state/surface-components-model.test.ts +0 -59
- package/src/v0_9/state/surface-components-model.ts +0 -48
- package/src/v0_9/state/surface-group-model.test.ts +0 -82
- package/src/v0_9/state/surface-group-model.ts +0 -66
- package/src/v0_9/state/surface-model.test.ts +0 -44
- package/src/v0_9/state/surface-model.ts +0 -39
- package/src/v0_9/test/test-utils.ts +0 -22
- /package/{dist/src → src}/v0_8/data/guards.d.ts +0 -0
- /package/{dist/src → src}/v0_8/data/guards.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/data/guards.js.map +0 -0
- /package/{dist/src → src}/v0_8/events/base.d.ts +0 -0
- /package/{dist/src → src}/v0_8/events/base.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/events/base.js +0 -0
- /package/{dist/src → src}/v0_8/events/base.js.map +0 -0
- /package/{dist/src → src}/v0_8/events/index.d.ts +0 -0
- /package/{dist/src → src}/v0_8/events/index.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/events/index.js +0 -0
- /package/{dist/src → src}/v0_8/events/index.js.map +0 -0
- /package/{dist/src → src}/v0_8/events/validation-event.d.ts +0 -0
- /package/{dist/src → src}/v0_8/events/validation-event.js +0 -0
- /package/{dist/src → src}/v0_8/schemas/a2ui_client_capabilities_schema.json +0 -0
- /package/{dist/src → src}/v0_8/schemas/catalog_description_schema.json +0 -0
- /package/{dist/src → src}/v0_8/schemas/client_to_server.json +0 -0
- /package/{dist/src → src}/v0_8/styles/behavior.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/behavior.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/behavior.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/border.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/border.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/border.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/colors.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/colors.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/index.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/index.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/index.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/layout.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/layout.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/opacity.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/opacity.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/opacity.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/shared.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/shared.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/shared.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/type.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/type.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/type.js.map +0 -0
- /package/{dist/src → src}/v0_8/styles/utils.d.ts +0 -0
- /package/{dist/src → src}/v0_8/styles/utils.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/styles/utils.js.map +0 -0
- /package/{dist/src → src}/v0_8/types/client-event.js.map +0 -0
- /package/{dist/src → src}/v0_8/types/colors.d.ts +0 -0
- /package/{dist/src → src}/v0_8/types/colors.d.ts.map +0 -0
- /package/{dist/src → src}/v0_8/types/colors.js.map +0 -0
- /package/{dist/src → src}/v0_8/types/components.js.map +0 -0
- /package/{dist/src → src}/v0_8/types/primitives.js.map +0 -0
- /package/{dist/src → src}/v0_8/types/types.js.map +0 -0
- /package/{dist/src → src}/v0_9/processing/message-processor.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/processing/message-processor.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/rendering/data-context.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/rendering/data-context.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/state/component-model.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/state/component-model.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/state/data-model.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/state/data-model.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/state/surface-components-model.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/state/surface-components-model.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/state/surface-group-model.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/state/surface-group-model.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/state/surface-model.test.d.ts +0 -0
- /package/{dist/src → src}/v0_9/state/surface-model.test.d.ts.map +0 -0
- /package/{dist/src → src}/v0_9/test/test-utils.d.ts +0 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { A2uiExpressionError } from '../../errors.js';
|
|
17
|
+
/**
|
|
18
|
+
* A parser for A2UI expressions, supporting string interpolation and functional calls.
|
|
19
|
+
*
|
|
20
|
+
* The parser converts strings with `${...}` placeholders into arrays of `DynamicValue`s.
|
|
21
|
+
* It supports literals (strings, numbers, booleans), path-based data bindings, and
|
|
22
|
+
* nested function calls with named arguments.
|
|
23
|
+
*/
|
|
24
|
+
export class ExpressionParser {
|
|
25
|
+
/** The maximum allowed recursion depth for nested expressions to prevent stack overflows. */
|
|
26
|
+
static { this.MAX_DEPTH = 10; }
|
|
27
|
+
/**
|
|
28
|
+
* Parses an input string into an array of DynamicValues.
|
|
29
|
+
* If the input contains no interpolation, it returns the raw string as a single literal.
|
|
30
|
+
*/
|
|
31
|
+
parse(input, depth = 0) {
|
|
32
|
+
if (depth > ExpressionParser.MAX_DEPTH) {
|
|
33
|
+
throw new A2uiExpressionError('Max recursion depth reached in parse');
|
|
34
|
+
}
|
|
35
|
+
if (!input || !input.includes('${')) {
|
|
36
|
+
return [input];
|
|
37
|
+
}
|
|
38
|
+
const parts = [];
|
|
39
|
+
const scanner = new Scanner(input);
|
|
40
|
+
while (!scanner.isAtEnd()) {
|
|
41
|
+
if (scanner.matches('${')) {
|
|
42
|
+
scanner.advance(2);
|
|
43
|
+
const content = this.extractInterpolationContent(scanner);
|
|
44
|
+
const parsed = this.parseExpression(content, depth + 1);
|
|
45
|
+
if (parsed !== null) {
|
|
46
|
+
parts.push(parsed);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (scanner.peek() === '\\' &&
|
|
50
|
+
scanner.peek(1) === '$' &&
|
|
51
|
+
scanner.peek(2) === '{') {
|
|
52
|
+
scanner.advance();
|
|
53
|
+
parts.push('${');
|
|
54
|
+
scanner.advance(2);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const start = scanner.pos;
|
|
58
|
+
while (!scanner.isAtEnd()) {
|
|
59
|
+
if (scanner.matches('${')) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
if (scanner.peek() === '\\' &&
|
|
63
|
+
scanner.peek(1) === '$' &&
|
|
64
|
+
scanner.peek(2) === '{') {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
scanner.advance();
|
|
68
|
+
}
|
|
69
|
+
parts.push(scanner.input.substring(start, scanner.pos));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return parts.filter(p => p !== null && p !== '');
|
|
73
|
+
}
|
|
74
|
+
extractInterpolationContent(scanner) {
|
|
75
|
+
const start = scanner.pos;
|
|
76
|
+
let braceBalance = 1;
|
|
77
|
+
while (!scanner.isAtEnd() && braceBalance > 0) {
|
|
78
|
+
const char = scanner.advance();
|
|
79
|
+
if (char === '{') {
|
|
80
|
+
braceBalance++;
|
|
81
|
+
}
|
|
82
|
+
else if (char === '}') {
|
|
83
|
+
braceBalance--;
|
|
84
|
+
}
|
|
85
|
+
else if (char === "'" || char === '"') {
|
|
86
|
+
const quote = char;
|
|
87
|
+
while (!scanner.isAtEnd()) {
|
|
88
|
+
const c = scanner.advance();
|
|
89
|
+
if (c === '\\') {
|
|
90
|
+
scanner.advance();
|
|
91
|
+
}
|
|
92
|
+
else if (c === quote) {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (braceBalance > 0) {
|
|
99
|
+
throw new A2uiExpressionError("Unclosed interpolation: missing '}'");
|
|
100
|
+
}
|
|
101
|
+
return scanner.input.substring(start, scanner.pos - 1);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parses a single expression string into a DynamicValue.
|
|
105
|
+
*
|
|
106
|
+
* Unlike `parse()`, which handles mixed literal text and interpolations,
|
|
107
|
+
* this assumes the entire string is a single expression (e.g., as found inside `${...}`).
|
|
108
|
+
*
|
|
109
|
+
* @param expr The expression string to parse.
|
|
110
|
+
* @param depth The current recursion depth.
|
|
111
|
+
* @returns The resolved DynamicValue.
|
|
112
|
+
*/
|
|
113
|
+
parseExpression(expr, depth = 0) {
|
|
114
|
+
expr = expr.trim();
|
|
115
|
+
if (!expr)
|
|
116
|
+
return '';
|
|
117
|
+
const scanner = new Scanner(expr);
|
|
118
|
+
const result = this.parseExpressionInternal(scanner, depth);
|
|
119
|
+
if (!scanner.isAtEnd()) {
|
|
120
|
+
throw new A2uiExpressionError(`Unexpected characters at end of expression: '${scanner.input.substring(scanner.pos)}'`);
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
parseExpressionInternal(scanner, depth) {
|
|
125
|
+
scanner.skipWhitespace();
|
|
126
|
+
if (scanner.isAtEnd())
|
|
127
|
+
return '';
|
|
128
|
+
// 0. Nested Interpolation (Block)
|
|
129
|
+
if (scanner.matches('${')) {
|
|
130
|
+
scanner.advance(2);
|
|
131
|
+
const content = this.extractInterpolationContent(scanner);
|
|
132
|
+
return this.parseExpression(content, depth + 1);
|
|
133
|
+
}
|
|
134
|
+
// 1. Literals
|
|
135
|
+
if (scanner.matchesString("'") || scanner.matchesString('"')) {
|
|
136
|
+
return this.parseStringLiteral(scanner);
|
|
137
|
+
}
|
|
138
|
+
if (this.isDigit(scanner.peek())) {
|
|
139
|
+
return this.parseNumberLiteral(scanner);
|
|
140
|
+
}
|
|
141
|
+
if (scanner.matchesKeyword('true'))
|
|
142
|
+
return true;
|
|
143
|
+
if (scanner.matchesKeyword('false'))
|
|
144
|
+
return false;
|
|
145
|
+
if (scanner.matchesKeyword('null'))
|
|
146
|
+
return '';
|
|
147
|
+
// 2. Identifiers (Function calls or Path starts)
|
|
148
|
+
const token = this.scanPathOrIdentifier(scanner);
|
|
149
|
+
scanner.skipWhitespace();
|
|
150
|
+
if (scanner.peek() === '(') {
|
|
151
|
+
return this.parseFunctionCall(token, scanner, depth);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
if (!token) {
|
|
155
|
+
return '';
|
|
156
|
+
}
|
|
157
|
+
return { path: token };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
scanPathOrIdentifier(scanner) {
|
|
161
|
+
const start = scanner.pos;
|
|
162
|
+
while (!scanner.isAtEnd()) {
|
|
163
|
+
const c = scanner.peek();
|
|
164
|
+
if (this.isAlnum(c) || c === '/' || c === '.' || c === '_' || c === '-') {
|
|
165
|
+
scanner.advance();
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return scanner.input.substring(start, scanner.pos);
|
|
172
|
+
}
|
|
173
|
+
parseFunctionCall(funcName, scanner, depth) {
|
|
174
|
+
scanner.match('(');
|
|
175
|
+
scanner.skipWhitespace();
|
|
176
|
+
const args = {};
|
|
177
|
+
while (!scanner.isAtEnd() && scanner.peek() !== ')') {
|
|
178
|
+
const argName = this.scanIdentifier(scanner);
|
|
179
|
+
scanner.skipWhitespace();
|
|
180
|
+
if (!scanner.match(':')) {
|
|
181
|
+
throw new A2uiExpressionError(`Expected ':' after argument name '${argName}' in function '${funcName}'`);
|
|
182
|
+
}
|
|
183
|
+
scanner.skipWhitespace();
|
|
184
|
+
args[argName] = this.parseExpressionInternal(scanner, depth);
|
|
185
|
+
scanner.skipWhitespace();
|
|
186
|
+
if (scanner.peek() === ',') {
|
|
187
|
+
scanner.advance();
|
|
188
|
+
scanner.skipWhitespace();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!scanner.match(')')) {
|
|
192
|
+
throw new A2uiExpressionError(`Expected ')' after function arguments for '${funcName}'`);
|
|
193
|
+
}
|
|
194
|
+
return { call: funcName, args, returnType: 'any' };
|
|
195
|
+
}
|
|
196
|
+
scanIdentifier(scanner) {
|
|
197
|
+
const start = scanner.pos;
|
|
198
|
+
while (!scanner.isAtEnd() &&
|
|
199
|
+
(this.isAlnum(scanner.peek()) || scanner.peek() === '_')) {
|
|
200
|
+
scanner.advance();
|
|
201
|
+
}
|
|
202
|
+
return scanner.input.substring(start, scanner.pos);
|
|
203
|
+
}
|
|
204
|
+
parseStringLiteral(scanner) {
|
|
205
|
+
const quote = scanner.advance();
|
|
206
|
+
let result = '';
|
|
207
|
+
while (!scanner.isAtEnd()) {
|
|
208
|
+
const c = scanner.advance();
|
|
209
|
+
if (c === '\\') {
|
|
210
|
+
const next = scanner.advance();
|
|
211
|
+
if (next === 'n')
|
|
212
|
+
result += '\n';
|
|
213
|
+
else if (next === 't')
|
|
214
|
+
result += '\t';
|
|
215
|
+
else if (next === 'r')
|
|
216
|
+
result += '\r';
|
|
217
|
+
else
|
|
218
|
+
result += next;
|
|
219
|
+
}
|
|
220
|
+
else if (c === quote) {
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
result += c;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return result;
|
|
228
|
+
}
|
|
229
|
+
parseNumberLiteral(scanner) {
|
|
230
|
+
const start = scanner.pos;
|
|
231
|
+
while (!scanner.isAtEnd() &&
|
|
232
|
+
(this.isDigit(scanner.peek()) || scanner.peek() === '.')) {
|
|
233
|
+
scanner.advance();
|
|
234
|
+
}
|
|
235
|
+
return Number(scanner.input.substring(start, scanner.pos));
|
|
236
|
+
}
|
|
237
|
+
isAlnum(c) {
|
|
238
|
+
return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'));
|
|
239
|
+
}
|
|
240
|
+
isDigit(c) {
|
|
241
|
+
return c >= '0' && c <= '9';
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
class Scanner {
|
|
245
|
+
constructor(input) {
|
|
246
|
+
this.input = input;
|
|
247
|
+
this.pos = 0;
|
|
248
|
+
}
|
|
249
|
+
isAtEnd() {
|
|
250
|
+
return this.pos >= this.input.length;
|
|
251
|
+
}
|
|
252
|
+
peek(offset = 0) {
|
|
253
|
+
if (this.pos + offset >= this.input.length)
|
|
254
|
+
return '\0';
|
|
255
|
+
return this.input[this.pos + offset];
|
|
256
|
+
}
|
|
257
|
+
advance(count = 1) {
|
|
258
|
+
const char = this.input.substring(this.pos, this.pos + count);
|
|
259
|
+
this.pos += count;
|
|
260
|
+
return char;
|
|
261
|
+
}
|
|
262
|
+
match(expected) {
|
|
263
|
+
if (this.peek() === expected) {
|
|
264
|
+
this.advance();
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
matches(expected) {
|
|
270
|
+
if (this.input.startsWith(expected, this.pos)) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
matchesString(expected) {
|
|
276
|
+
return this.peek() === expected;
|
|
277
|
+
}
|
|
278
|
+
matchesKeyword(keyword) {
|
|
279
|
+
if (this.input.startsWith(keyword, this.pos)) {
|
|
280
|
+
const next = this.peek(keyword.length);
|
|
281
|
+
if (!/[a-zA-Z0-9_]/.test(next)) {
|
|
282
|
+
this.advance(keyword.length);
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
skipWhitespace() {
|
|
289
|
+
while (!this.isAtEnd() && /\s/.test(this.peek())) {
|
|
290
|
+
this.advance();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=expression_parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression_parser.js","sourceRoot":"","sources":["../../../../../src/v0_9/basic_catalog/expressions/expression_parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression_parser.test.d.ts","sourceRoot":"","sources":["../../../../../src/v0_9/basic_catalog/expressions/expression_parser.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
17
|
+
import * as assert from 'node:assert';
|
|
18
|
+
import { ExpressionParser } from './expression_parser.js';
|
|
19
|
+
describe('ExpressionParser', () => {
|
|
20
|
+
let parser;
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
parser = new ExpressionParser();
|
|
23
|
+
});
|
|
24
|
+
it('parses literal strings unchanged', () => {
|
|
25
|
+
assert.deepStrictEqual(parser.parse('hello world'), ['hello world']);
|
|
26
|
+
});
|
|
27
|
+
it('parses simple interpolation', () => {
|
|
28
|
+
assert.deepStrictEqual(parser.parse('hello ${foo}'), [
|
|
29
|
+
'hello ',
|
|
30
|
+
{ path: 'foo' },
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
it('parses number interpolation', () => {
|
|
34
|
+
assert.deepStrictEqual(parser.parse('number is ${num}'), [
|
|
35
|
+
'number is ',
|
|
36
|
+
{ path: 'num' },
|
|
37
|
+
]);
|
|
38
|
+
});
|
|
39
|
+
it('parses nested interpolation', () => {
|
|
40
|
+
// Nested interpolations don't evaluate immediately, they parse into paths of paths, but currently parser doesn't do deep AST for 'val is ${${nested}}' properly if it's not a function.
|
|
41
|
+
// Wait, the parser extracts content. Let's see what `val is ${${nested}}` parses to:
|
|
42
|
+
// It extracts `${nested}` and parses it. That evaluates to `{ path: "${nested}" }` or something.
|
|
43
|
+
// Actually, `parseExpression("${nested}")` will recursively call `parseExpression("nested")` and return `{ path: "nested" }`.
|
|
44
|
+
assert.deepStrictEqual(parser.parse('val is ${${nested}}'), [
|
|
45
|
+
'val is ',
|
|
46
|
+
{ path: 'nested' },
|
|
47
|
+
]);
|
|
48
|
+
});
|
|
49
|
+
it('handles escaped interpolation', () => {
|
|
50
|
+
assert.deepStrictEqual(parser.parse('escaped \\${foo}'), [
|
|
51
|
+
'escaped ',
|
|
52
|
+
'${',
|
|
53
|
+
'foo}',
|
|
54
|
+
]);
|
|
55
|
+
});
|
|
56
|
+
it('parses function calls', () => {
|
|
57
|
+
assert.deepStrictEqual(parser.parse('sum is ${add(a: 10, b: 20)}'), [
|
|
58
|
+
'sum is ',
|
|
59
|
+
{ call: 'add', args: { a: 10, b: 20 }, returnType: 'any' },
|
|
60
|
+
]);
|
|
61
|
+
});
|
|
62
|
+
it('parses function calls with string literals', () => {
|
|
63
|
+
assert.deepStrictEqual(parser.parse('case is ${upper(text: "hello")}'), [
|
|
64
|
+
'case is ',
|
|
65
|
+
{ call: 'upper', args: { text: 'hello' }, returnType: 'any' },
|
|
66
|
+
]);
|
|
67
|
+
});
|
|
68
|
+
it('parses keywords', () => {
|
|
69
|
+
assert.deepStrictEqual(parser.parse('${true} ${false} ${null}'), [
|
|
70
|
+
true,
|
|
71
|
+
' ',
|
|
72
|
+
false,
|
|
73
|
+
' ',
|
|
74
|
+
]);
|
|
75
|
+
});
|
|
76
|
+
it('returns error on max depth exceeded', () => {
|
|
77
|
+
assert.throws(() => {
|
|
78
|
+
parser.parse('depth', 11);
|
|
79
|
+
}, /Max recursion depth reached/);
|
|
80
|
+
});
|
|
81
|
+
it('handles deep recursion gracefully', () => {
|
|
82
|
+
assert.deepStrictEqual(parser.parse('${${"hello"}}'), ['hello']);
|
|
83
|
+
});
|
|
84
|
+
it('returns error on unclosed interpolation', () => {
|
|
85
|
+
assert.throws(() => {
|
|
86
|
+
parser.parse('hello ${world');
|
|
87
|
+
}, /Unclosed interpolation/);
|
|
88
|
+
});
|
|
89
|
+
it('returns error on invalid function syntax', () => {
|
|
90
|
+
// Missing closing parenthesis
|
|
91
|
+
assert.throws(() => {
|
|
92
|
+
parser.parse('${add(a: 1, b: 2}');
|
|
93
|
+
}, /Expected '\)'/);
|
|
94
|
+
});
|
|
95
|
+
it('returns error on unexpected characters at end', () => {
|
|
96
|
+
// Extra garbage after valid expression inside interpolation
|
|
97
|
+
assert.throws(() => {
|
|
98
|
+
parser.parse('${true false}');
|
|
99
|
+
}, /Unexpected characters/);
|
|
100
|
+
});
|
|
101
|
+
it('handles empty identifiers', () => {
|
|
102
|
+
assert.deepStrictEqual(parser.parse('${()}'), [
|
|
103
|
+
{ call: '', args: {}, returnType: 'any' },
|
|
104
|
+
]);
|
|
105
|
+
assert.deepStrictEqual(parser.parseExpression(''), '');
|
|
106
|
+
assert.deepStrictEqual(parser.parseExpression('()'), {
|
|
107
|
+
call: '',
|
|
108
|
+
args: {},
|
|
109
|
+
returnType: 'any',
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
it('handles string literals with escaped characters', () => {
|
|
113
|
+
assert.deepStrictEqual(parser.parseExpression("'line1\\nline2\\t\\r\\'\\\\x'"), "line1\nline2\t\r'\\x");
|
|
114
|
+
});
|
|
115
|
+
it('handles parsing paths with special characters', () => {
|
|
116
|
+
assert.deepStrictEqual(parser.parseExpression('my-path.with_underscores'), {
|
|
117
|
+
path: 'my-path.with_underscores',
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
it('returns error on missing colon in function args', () => {
|
|
121
|
+
assert.throws(() => {
|
|
122
|
+
parser.parseExpression('add(a 10, b: 20)');
|
|
123
|
+
}, /Expected ':'/);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=expression_parser.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression_parser.test.js","sourceRoot":"","sources":["../../../../../src/v0_9/basic_catalog/expressions/expression_parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FunctionImplementation } from '../../catalog/types.js';
|
|
2
|
+
export declare const AddImplementation: FunctionImplementation;
|
|
3
|
+
export declare const SubtractImplementation: FunctionImplementation;
|
|
4
|
+
export declare const MultiplyImplementation: FunctionImplementation;
|
|
5
|
+
export declare const DivideImplementation: FunctionImplementation;
|
|
6
|
+
export declare const EqualsImplementation: FunctionImplementation;
|
|
7
|
+
export declare const NotEqualsImplementation: FunctionImplementation;
|
|
8
|
+
export declare const GreaterThanImplementation: FunctionImplementation;
|
|
9
|
+
export declare const LessThanImplementation: FunctionImplementation;
|
|
10
|
+
export declare const AndImplementation: FunctionImplementation;
|
|
11
|
+
export declare const OrImplementation: FunctionImplementation;
|
|
12
|
+
export declare const NotImplementation: FunctionImplementation;
|
|
13
|
+
export declare const ContainsImplementation: FunctionImplementation;
|
|
14
|
+
export declare const StartsWithImplementation: FunctionImplementation;
|
|
15
|
+
export declare const EndsWithImplementation: FunctionImplementation;
|
|
16
|
+
export declare const RequiredImplementation: FunctionImplementation;
|
|
17
|
+
export declare const RegexImplementation: FunctionImplementation;
|
|
18
|
+
export declare const LengthImplementation: FunctionImplementation;
|
|
19
|
+
export declare const NumericImplementation: FunctionImplementation;
|
|
20
|
+
export declare const EmailImplementation: FunctionImplementation;
|
|
21
|
+
export declare const FormatStringImplementation: FunctionImplementation;
|
|
22
|
+
export declare const FormatNumberImplementation: FunctionImplementation;
|
|
23
|
+
export declare const FormatCurrencyImplementation: FunctionImplementation;
|
|
24
|
+
export declare const FormatDateImplementation: FunctionImplementation;
|
|
25
|
+
export declare const PluralizeImplementation: FunctionImplementation;
|
|
26
|
+
export declare const OpenUrlImplementation: FunctionImplementation;
|
|
27
|
+
/**
|
|
28
|
+
* Standard function implementations for the Basic Catalog.
|
|
29
|
+
* These functions cover arithmetic, comparison, logic, string manipulation, validation, and formatting.
|
|
30
|
+
*/
|
|
31
|
+
export declare const BASIC_FUNCTIONS: FunctionImplementation[];
|
|
32
|
+
//# sourceMappingURL=basic_functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic_functions.d.ts","sourceRoot":"","sources":["../../../../../src/v0_9/basic_catalog/functions/basic_functions.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAgChC,eAAO,MAAM,iBAAiB,wBAG7B,CAAC;AACF,eAAO,MAAM,sBAAsB,wBAGlC,CAAC;AACF,eAAO,MAAM,sBAAsB,wBAGlC,CAAC;AACF,eAAO,MAAM,oBAAoB,wBAkBhC,CAAC;AAGF,eAAO,MAAM,oBAAoB,wBAGhC,CAAC;AACF,eAAO,MAAM,uBAAuB,wBAGnC,CAAC;AACF,eAAO,MAAM,yBAAyB,wBAGrC,CAAC;AACF,eAAO,MAAM,sBAAsB,wBAGlC,CAAC;AAGF,eAAO,MAAM,iBAAiB,wBAE5B,CAAC;AACH,eAAO,MAAM,gBAAgB,wBAE3B,CAAC;AACH,eAAO,MAAM,iBAAiB,wBAG7B,CAAC;AAGF,eAAO,MAAM,sBAAsB,wBAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,wBAGpC,CAAC;AACF,eAAO,MAAM,sBAAsB,wBAGlC,CAAC;AAGF,eAAO,MAAM,sBAAsB,wBASlC,CAAC;AACF,eAAO,MAAM,mBAAmB,wBAa/B,CAAC;AACF,eAAO,MAAM,oBAAoB,wBAchC,CAAC;AACF,eAAO,MAAM,qBAAqB,wBAUjC,CAAC;AACF,eAAO,MAAM,mBAAmB,wBAQ/B,CAAC;AAGF,eAAO,MAAM,0BAA0B,wBA4BtC,CAAC;AACF,eAAO,MAAM,0BAA0B,wBAUtC,CAAC;AACF,eAAO,MAAM,4BAA4B,wBAgBxC,CAAC;AACF,eAAO,MAAM,wBAAwB,wBAepC,CAAC;AACF,eAAO,MAAM,uBAAuB,wBAMnC,CAAC;AAGF,eAAO,MAAM,qBAAqB,wBAOjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,sBAAsB,EA0BnD,CAAC"}
|