@siliconst/metaui 1.4.17 → 1.4.20
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/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js +47 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.ts +39 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +83 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +74 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js +61 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts +13 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.ts +59 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js +50 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +44 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +79 -13
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +77 -15
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +31 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +15 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +26 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +35 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +8 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +37 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +11 -32
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +9 -13
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +6 -2
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +12 -7
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +3 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +3 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +10 -10
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +19 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +22 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +18 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +62 -43
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js +93 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts +52 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.ts +88 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +47 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +43 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js +68 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +61 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js +45 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerTypeMapper.js → openapi/OpenApiTypeMapper.js} +2 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.ts +36 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper-dbg.js → openapi/OpenApiUIMapper-dbg.js} +23 -14
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper.ts → openapi/OpenApiUIMapper.ts} +22 -13
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +50 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +43 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +117 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +47 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +113 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +106 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +104 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +107 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +105 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +347 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +110 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +377 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +13 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +31 -7
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +17 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +33 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +217 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +249 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +4 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +115 -49
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +17 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +114 -54
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +3 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +194 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +192 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js +146 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.ts +160 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js +0 -226
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts +0 -63
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.ts +0 -233
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js +0 -43
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts +0 -15
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.ts +0 -37
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js +0 -37
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts +0 -18
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.ts +0 -28
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts +0 -27
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteValueHelpPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","Logger","____utils_Logger","RemoteValueHelpPlugin","isLoaded","render","fieldMetadata","bindingPath","modelName","metadata","comboBox","ComboBox","selectedKey","enabled","ui","readOnly","placeholder","change","oEvent","item","getParameter","val","getKey","validate","attachEventOnce","fetchData","control","vhConfig","valueHelp","url","error","setBusy","fetch","then","res","json","data","keyPath","textPath","forEach","itemData","addItem","Item","key","text","catch","err","message","finally","getValue","getSelectedKey","applyState","setEnabled","__exports","__esModule"],"sources":["RemoteValueHelpPlugin.ts"],"sourcesContent":["/**\n * @file RemoteValueHelpPlugin.ts\n * @description A custom datasource plugin that simulates fetching data from a remote server.\n */\n\nimport { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata, IRemoteValueHelpConfig } from \"../../interfaces/ISchema\";\nimport ComboBox from \"sap/m/ComboBox\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\nimport { Logger } from \"../../utils/Logger\";\n\n/**\n * A custom datasource plugin that simulates fetching data from a remote server.\n * Proves out custom data sources that dynamically load value help.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.datasources\n * @public\n */\nexport class RemoteValueHelpPlugin extends BasePlugin {\n private isLoaded = false;\n\n /**\n * Renders a `ComboBox` that simulates fetching data from a remote server.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @returns {Control} The configured ComboBox control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const comboBox = new ComboBox({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n placeholder: \"Select a country...\",\n change: (oEvent: sap.ui.base.Event) => {\n const item = (oEvent as sap.ui.base.Event).getParameter(\"selectedItem\");\n const val = item ? item.getKey() : (oEvent as sap.ui.base.Event).getParameter(\"value\"); // Allow free text as well\n this.validate();\n }\n });\n\n // Perform an async load against the REST endpoint\n comboBox.attachEventOnce(\"loadItems\", () => {\n this.fetchData(comboBox);\n });\n\n this.control = comboBox;\n return this.control as Control;\n }\n\n /**\n * Executes the REST fetch for data.\n * @param comboBox The UI5 ComboBox to populate.\n */\n protected fetchData(comboBox: ComboBox): void {\n const vhConfig = this.metadata?.valueHelp as IRemoteValueHelpConfig;\n if (!vhConfig || !vhConfig.url) {\n Logger.error(\"RemoteValueHelpPlugin requires a valid valueHelp configuration with a URL.\", \"\", \"RemoteValueHelpPlugin\");\n return;\n }\n \n comboBox.setBusy(true);\n \n fetch(vhConfig.url)\n .then(res => res.json())\n .then((data: Record<string, unknown>[]) => {\n const keyPath = vhConfig.keyPath || \"key\";\n const textPath = vhConfig.textPath || \"text\";\n \n data.forEach(itemData => {\n comboBox.addItem(new Item({ \n key: itemData[keyPath], \n text: itemData[textPath] || itemData[keyPath]\n }));\n });\n })\n .catch(err => {\n Logger.error(\"Failed to load value help from \" + vhConfig.url, err.message, \"RemoteValueHelpPlugin\");\n })\n .finally(() => {\n comboBox.setBusy(false);\n this.isLoaded = true;\n });\n }\n\n /**\n * Retrieves the current selected key.\n * @returns {unknown} The selected key.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as ComboBox).getSelectedKey() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as ComboBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,sBAAA;EAAA,MAKVC,MAAM,GAAAC,gBAAA;EAEf;AACA;AACA;AACA;AACA;AACA;AACA;EACO,MAAMC,qBAAqB,SAASJ,UAAU,CAAC;IAC1CK,QAAQ,GAAG,KAAK;;IAExB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACWC,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,MAAMI,QAAQ,GAAG,IAAIC,QAAQ,CAAC;QAC1BC,WAAW,EAAE,IAAIJ,SAAS,IAAID,WAAW,GAAG;QAC5CM,OAAO,EAAE,CAACP,aAAa,CAACQ,EAAE,EAAEC,QAAQ;QACpCC,WAAW,EAAE,qBAAqB;QAClCC,MAAM,EAAGC,MAAyB,IAAK;UACnC,MAAMC,IAAI,GAAID,MAAM,CAAuBE,YAAY,CAAC,cAAc,CAAC;UACvE,MAAMC,GAAG,GAAGF,IAAI,GAAGA,IAAI,CAACG,MAAM,CAAC,CAAC,GAAIJ,MAAM,CAAuBE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;UACxF,IAAI,CAACG,QAAQ,CAAC,CAAC;QACnB;MACJ,CAAC,CAAC;;MAEF;MACAb,QAAQ,CAACc,eAAe,CAAC,WAAW,EAAE,MAAM;QACxC,IAAI,CAACC,SAAS,CAACf,QAAQ,CAAC;MAC5B,CAAC,CAAC;MAEF,IAAI,CAACgB,OAAO,GAAGhB,QAAQ;MACvB,OAAO,IAAI,CAACgB,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACcD,SAASA,CAACf,QAAkB,EAAQ;MAC1C,MAAMiB,QAAQ,GAAG,IAAI,CAAClB,QAAQ,EAAEmB,SAAmC;MACnE,IAAI,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACE,GAAG,EAAE;QAC5B5B,MAAM,CAAC6B,KAAK,CAAC,4EAA4E,EAAE,EAAE,EAAE,uBAAuB,CAAC;QACvH;MACJ;MAEApB,QAAQ,CAACqB,OAAO,CAAC,IAAI,CAAC;MAEtBC,KAAK,CAACL,QAAQ,CAACE,GAAG,CAAC,CACdI,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC,CACvBF,IAAI,CAAEG,IAA+B,IAAK;QACvC,MAAMC,OAAO,GAAGV,QAAQ,CAACU,OAAO,IAAI,KAAK;QACzC,MAAMC,QAAQ,GAAGX,QAAQ,CAACW,QAAQ,IAAI,MAAM;QAE5CF,IAAI,CAACG,OAAO,CAACC,QAAQ,IAAI;UACrB9B,QAAQ,CAAC+B,OAAO,CAAC,IAAIC,IAAI,CAAC;YACtBC,GAAG,
|
|
1
|
+
{"version":3,"file":"RemoteValueHelpPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","Logger","____utils_Logger","RemoteValueHelpPlugin","isLoaded","render","fieldMetadata","bindingPath","modelName","metadata","comboBox","ComboBox","selectedKey","enabled","ui","readOnly","placeholder","change","oEvent","item","getParameter","val","getKey","validate","attachEventOnce","fetchData","control","vhConfig","valueHelp","url","error","setBusy","fetch","then","res","json","data","keyPath","textPath","forEach","itemData","addItem","Item","key","String","text","catch","err","message","finally","getValue","getSelectedKey","applyState","setEnabled","__exports","__esModule"],"sources":["RemoteValueHelpPlugin.ts"],"sourcesContent":["/**\n * @file RemoteValueHelpPlugin.ts\n * @description A custom datasource plugin that simulates fetching data from a remote server.\n */\n\nimport { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata, IRemoteValueHelpConfig } from \"../../interfaces/ISchema\";\nimport ComboBox from \"sap/m/ComboBox\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\nimport { Logger } from \"../../utils/Logger\";\n\n/**\n * A custom datasource plugin that simulates fetching data from a remote server.\n * Proves out custom data sources that dynamically load value help.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.datasources\n * @public\n */\nexport class RemoteValueHelpPlugin extends BasePlugin {\n private isLoaded = false;\n\n /**\n * Renders a `ComboBox` that simulates fetching data from a remote server.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @returns {Control} The configured ComboBox control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const comboBox = new ComboBox({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n placeholder: \"Select a country...\",\n change: (oEvent: sap.ui.base.Event) => {\n const item = (oEvent as sap.ui.base.Event).getParameter(\"selectedItem\");\n const val = item ? item.getKey() : (oEvent as sap.ui.base.Event).getParameter(\"value\"); // Allow free text as well\n this.validate();\n }\n });\n\n // Perform an async load against the REST endpoint\n comboBox.attachEventOnce(\"loadItems\", () => {\n this.fetchData(comboBox);\n });\n\n this.control = comboBox;\n return this.control as Control;\n }\n\n /**\n * Executes the REST fetch for data.\n * @param comboBox The UI5 ComboBox to populate.\n */\n protected fetchData(comboBox: ComboBox): void {\n const vhConfig = this.metadata?.valueHelp as IRemoteValueHelpConfig;\n if (!vhConfig || !vhConfig.url) {\n Logger.error(\"RemoteValueHelpPlugin requires a valid valueHelp configuration with a URL.\", \"\", \"RemoteValueHelpPlugin\");\n return;\n }\n \n comboBox.setBusy(true);\n \n fetch(vhConfig.url)\n .then(res => res.json())\n .then((data: Record<string, unknown>[]) => {\n const keyPath = vhConfig.keyPath || \"key\";\n const textPath = vhConfig.textPath || \"text\";\n \n data.forEach(itemData => {\n comboBox.addItem(new Item({ \n key: String(itemData[keyPath]), \n text: String(itemData[textPath] || itemData[keyPath])\n }));\n });\n })\n .catch(err => {\n Logger.error(\"Failed to load value help from \" + vhConfig.url, err.message, \"RemoteValueHelpPlugin\");\n })\n .finally(() => {\n comboBox.setBusy(false);\n this.isLoaded = true;\n });\n }\n\n /**\n * Retrieves the current selected key.\n * @returns {unknown} The selected key.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as ComboBox).getSelectedKey() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as ComboBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["../controls/BasePlugin","sap/m/ComboBox","sap/ui/core/Item","../../utils/Logger"],function(e,t,a,l){"use strict";const s=e["BasePlugin"];const
|
|
1
|
+
sap.ui.define(["../controls/BasePlugin","sap/m/ComboBox","sap/ui/core/Item","../../utils/Logger"],function(e,t,a,l){"use strict";const s=e["BasePlugin"];const n=l["Logger"];class r extends s{isLoaded=false;render(e,a,l="meta"){this.metadata=e;const s=new t({selectedKey:`{${l}>${a}}`,enabled:!e.ui?.readOnly,placeholder:"Select a country...",change:e=>{const t=e.getParameter("selectedItem");const a=t?t.getKey():e.getParameter("value");this.validate()}});s.attachEventOnce("loadItems",()=>{this.fetchData(s)});this.control=s;return this.control}fetchData(e){const t=this.metadata?.valueHelp;if(!t||!t.url){n.error("RemoteValueHelpPlugin requires a valid valueHelp configuration with a URL.","","RemoteValueHelpPlugin");return}e.setBusy(true);fetch(t.url).then(e=>e.json()).then(l=>{const s=t.keyPath||"key";const n=t.textPath||"text";l.forEach(t=>{e.addItem(new a({key:String(t[s]),text:String(t[n]||t[s])}))})}).catch(e=>{n.error("Failed to load value help from "+t.url,e.message,"RemoteValueHelpPlugin")}).finally(()=>{e.setBusy(false);this.isLoaded=true})}getValue(){return this.control?this.control.getSelectedKey():null}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var o={__esModule:true};o.RemoteValueHelpPlugin=r;return o});
|
|
2
2
|
//# sourceMappingURL=RemoteValueHelpPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteValueHelpPlugin.js","names":["BasePlugin","___controls_BasePlugin","Logger","____utils_Logger","RemoteValueHelpPlugin","isLoaded","render","fieldMetadata","bindingPath","modelName","this","metadata","comboBox","ComboBox","selectedKey","enabled","ui","readOnly","placeholder","change","oEvent","item","getParameter","val","getKey","validate","attachEventOnce","fetchData","control","vhConfig","valueHelp","url","error","setBusy","fetch","then","res","json","data","keyPath","textPath","forEach","itemData","addItem","Item","key","text","catch","err","message","finally","getValue","getSelectedKey","applyState","setEnabled","__exports","__esModule"],"sources":["RemoteValueHelpPlugin.ts"],"sourcesContent":["/**\n * @file RemoteValueHelpPlugin.ts\n * @description A custom datasource plugin that simulates fetching data from a remote server.\n */\n\nimport { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata, IRemoteValueHelpConfig } from \"../../interfaces/ISchema\";\nimport ComboBox from \"sap/m/ComboBox\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\nimport { Logger } from \"../../utils/Logger\";\n\n/**\n * A custom datasource plugin that simulates fetching data from a remote server.\n * Proves out custom data sources that dynamically load value help.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.datasources\n * @public\n */\nexport class RemoteValueHelpPlugin extends BasePlugin {\n private isLoaded = false;\n\n /**\n * Renders a `ComboBox` that simulates fetching data from a remote server.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @returns {Control} The configured ComboBox control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const comboBox = new ComboBox({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n placeholder: \"Select a country...\",\n change: (oEvent: sap.ui.base.Event) => {\n const item = (oEvent as sap.ui.base.Event).getParameter(\"selectedItem\");\n const val = item ? item.getKey() : (oEvent as sap.ui.base.Event).getParameter(\"value\"); // Allow free text as well\n this.validate();\n }\n });\n\n // Perform an async load against the REST endpoint\n comboBox.attachEventOnce(\"loadItems\", () => {\n this.fetchData(comboBox);\n });\n\n this.control = comboBox;\n return this.control as Control;\n }\n\n /**\n * Executes the REST fetch for data.\n * @param comboBox The UI5 ComboBox to populate.\n */\n protected fetchData(comboBox: ComboBox): void {\n const vhConfig = this.metadata?.valueHelp as IRemoteValueHelpConfig;\n if (!vhConfig || !vhConfig.url) {\n Logger.error(\"RemoteValueHelpPlugin requires a valid valueHelp configuration with a URL.\", \"\", \"RemoteValueHelpPlugin\");\n return;\n }\n \n comboBox.setBusy(true);\n \n fetch(vhConfig.url)\n .then(res => res.json())\n .then((data: Record<string, unknown>[]) => {\n const keyPath = vhConfig.keyPath || \"key\";\n const textPath = vhConfig.textPath || \"text\";\n \n data.forEach(itemData => {\n comboBox.addItem(new Item({ \n key: itemData[keyPath], \n text: itemData[textPath] || itemData[keyPath]\n }));\n });\n })\n .catch(err => {\n Logger.error(\"Failed to load value help from \" + vhConfig.url, err.message, \"RemoteValueHelpPlugin\");\n })\n .finally(() => {\n comboBox.setBusy(false);\n this.isLoaded = true;\n });\n }\n\n /**\n * Retrieves the current selected key.\n * @returns {unknown} The selected key.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as ComboBox).getSelectedKey() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as ComboBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"iIAAA,MAKSA,EAAUC,EAAA,oBAKVC,EAAMC,EAAA,UASR,MAAMC,UAA8BJ,EAC/BK,SAAW,MAUZC,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhB,MAAMK,EAAW,IAAIC,EAAS,CAC1BC,YAAa,IAAIL,KAAaD,KAC9BO,SAAUR,EAAcS,IAAIC,SAC5BC,YAAa,sBACbC,OAASC,IACL,MAAMC,EAAQD,EAA6BE,aAAa,gBACxD,MAAMC,EAAMF,EAAOA,EAAKG,SAAYJ,EAA6BE,aAAa,SAC9EZ,KAAKe,cAKbb,EAASc,gBAAgB,YAAa,KAClChB,KAAKiB,UAAUf,KAGnBF,KAAKkB,QAAUhB,EACf,OAAOF,KAAKkB,OAChB,CAMUD,UAAUf,GAChB,MAAMiB,EAAWnB,KAAKC,UAAUmB,UAChC,IAAKD,IAAaA,EAASE,IAAK,CAC5B7B,EAAO8B,MAAM,6EAA8E,GAAI,yBAC/F,MACJ,CAEApB,EAASqB,QAAQ,MAEjBC,MAAML,EAASE,KACVI,KAAKC,GAAOA,EAAIC,QAChBF,KAAMG,IACH,MAAMC,EAAUV,EAASU,SAAW,MACpC,MAAMC,EAAWX,EAASW,UAAY,OAEtCF,EAAKG,QAAQC,IACT9B,EAAS+B,QAAQ,IAAIC,EAAK,CACtBC,
|
|
1
|
+
{"version":3,"file":"RemoteValueHelpPlugin.js","names":["BasePlugin","___controls_BasePlugin","Logger","____utils_Logger","RemoteValueHelpPlugin","isLoaded","render","fieldMetadata","bindingPath","modelName","this","metadata","comboBox","ComboBox","selectedKey","enabled","ui","readOnly","placeholder","change","oEvent","item","getParameter","val","getKey","validate","attachEventOnce","fetchData","control","vhConfig","valueHelp","url","error","setBusy","fetch","then","res","json","data","keyPath","textPath","forEach","itemData","addItem","Item","key","String","text","catch","err","message","finally","getValue","getSelectedKey","applyState","setEnabled","__exports","__esModule"],"sources":["RemoteValueHelpPlugin.ts"],"sourcesContent":["/**\n * @file RemoteValueHelpPlugin.ts\n * @description A custom datasource plugin that simulates fetching data from a remote server.\n */\n\nimport { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata, IRemoteValueHelpConfig } from \"../../interfaces/ISchema\";\nimport ComboBox from \"sap/m/ComboBox\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\nimport { Logger } from \"../../utils/Logger\";\n\n/**\n * A custom datasource plugin that simulates fetching data from a remote server.\n * Proves out custom data sources that dynamically load value help.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.datasources\n * @public\n */\nexport class RemoteValueHelpPlugin extends BasePlugin {\n private isLoaded = false;\n\n /**\n * Renders a `ComboBox` that simulates fetching data from a remote server.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @returns {Control} The configured ComboBox control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const comboBox = new ComboBox({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n placeholder: \"Select a country...\",\n change: (oEvent: sap.ui.base.Event) => {\n const item = (oEvent as sap.ui.base.Event).getParameter(\"selectedItem\");\n const val = item ? item.getKey() : (oEvent as sap.ui.base.Event).getParameter(\"value\"); // Allow free text as well\n this.validate();\n }\n });\n\n // Perform an async load against the REST endpoint\n comboBox.attachEventOnce(\"loadItems\", () => {\n this.fetchData(comboBox);\n });\n\n this.control = comboBox;\n return this.control as Control;\n }\n\n /**\n * Executes the REST fetch for data.\n * @param comboBox The UI5 ComboBox to populate.\n */\n protected fetchData(comboBox: ComboBox): void {\n const vhConfig = this.metadata?.valueHelp as IRemoteValueHelpConfig;\n if (!vhConfig || !vhConfig.url) {\n Logger.error(\"RemoteValueHelpPlugin requires a valid valueHelp configuration with a URL.\", \"\", \"RemoteValueHelpPlugin\");\n return;\n }\n \n comboBox.setBusy(true);\n \n fetch(vhConfig.url)\n .then(res => res.json())\n .then((data: Record<string, unknown>[]) => {\n const keyPath = vhConfig.keyPath || \"key\";\n const textPath = vhConfig.textPath || \"text\";\n \n data.forEach(itemData => {\n comboBox.addItem(new Item({ \n key: String(itemData[keyPath]), \n text: String(itemData[textPath] || itemData[keyPath])\n }));\n });\n })\n .catch(err => {\n Logger.error(\"Failed to load value help from \" + vhConfig.url, err.message, \"RemoteValueHelpPlugin\");\n })\n .finally(() => {\n comboBox.setBusy(false);\n this.isLoaded = true;\n });\n }\n\n /**\n * Retrieves the current selected key.\n * @returns {unknown} The selected key.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as ComboBox).getSelectedKey() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as ComboBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"iIAAA,MAKSA,EAAUC,EAAA,oBAKVC,EAAMC,EAAA,UASR,MAAMC,UAA8BJ,EAC/BK,SAAW,MAUZC,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhB,MAAMK,EAAW,IAAIC,EAAS,CAC1BC,YAAa,IAAIL,KAAaD,KAC9BO,SAAUR,EAAcS,IAAIC,SAC5BC,YAAa,sBACbC,OAASC,IACL,MAAMC,EAAQD,EAA6BE,aAAa,gBACxD,MAAMC,EAAMF,EAAOA,EAAKG,SAAYJ,EAA6BE,aAAa,SAC9EZ,KAAKe,cAKbb,EAASc,gBAAgB,YAAa,KAClChB,KAAKiB,UAAUf,KAGnBF,KAAKkB,QAAUhB,EACf,OAAOF,KAAKkB,OAChB,CAMUD,UAAUf,GAChB,MAAMiB,EAAWnB,KAAKC,UAAUmB,UAChC,IAAKD,IAAaA,EAASE,IAAK,CAC5B7B,EAAO8B,MAAM,6EAA8E,GAAI,yBAC/F,MACJ,CAEApB,EAASqB,QAAQ,MAEjBC,MAAML,EAASE,KACVI,KAAKC,GAAOA,EAAIC,QAChBF,KAAMG,IACH,MAAMC,EAAUV,EAASU,SAAW,MACpC,MAAMC,EAAWX,EAASW,UAAY,OAEtCF,EAAKG,QAAQC,IACT9B,EAAS+B,QAAQ,IAAIC,EAAK,CACtBC,IAAKC,OAAOJ,EAASH,IACrBQ,KAAMD,OAAOJ,EAASF,IAAaE,EAASH,WAIvDS,MAAMC,IACH/C,EAAO8B,MAAM,kCAAoCH,EAASE,IAAKkB,EAAIC,QAAS,2BAE/EC,QAAQ,KACLvC,EAASqB,QAAQ,OACjBvB,KAAKL,SAAW,MAE5B,CAMU+C,WACN,OAAO1C,KAAKkB,QAAWlB,KAAKkB,QAAqByB,iBAAmB,IACxE,CAKUC,aACN,GAAI5C,KAAKkB,SAAWlB,KAAKC,SAAU,CAC9BD,KAAKkB,QAAqB2B,YAAY7C,KAAKC,SAASK,IAAIC,SAC7D,CACJ,EACH,IAAAuC,EAAA,CAAAC,WAAA,MAAAD,EAAApD,wBAAA,OAAAoD,CAAA","ignoreList":[]}
|
|
@@ -72,8 +72,8 @@ export class RemoteValueHelpPlugin extends BasePlugin {
|
|
|
72
72
|
|
|
73
73
|
data.forEach(itemData => {
|
|
74
74
|
comboBox.addItem(new Item({
|
|
75
|
-
key: itemData[keyPath],
|
|
76
|
-
text: itemData[textPath] || itemData[keyPath]
|
|
75
|
+
key: String(itemData[keyPath]),
|
|
76
|
+
text: String(itemData[textPath] || itemData[keyPath])
|
|
77
77
|
}));
|
|
78
78
|
});
|
|
79
79
|
})
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
sap.ui.define(["sap/ui/base/Object"], function (UI5Object) {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* OpenApiExtractor utility.
|
|
7
|
+
* Dynamically crawls OpenAPI/Swagger JSON specifications to find all valid
|
|
8
|
+
* root endpoints and schema definitions that can be used as a schemaTarget.
|
|
9
|
+
*
|
|
10
|
+
* @extends sap.ui.base.Object
|
|
11
|
+
* @alias nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor
|
|
12
|
+
*/
|
|
13
|
+
const OpenApiExtractor = UI5Object.extend("nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor", {});
|
|
14
|
+
/**
|
|
15
|
+
* Parses an OpenAPI document and extracts an array of valid targets.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
* @param oSchema The parsed JSON schema object.
|
|
19
|
+
* @returns Array of target bindings.
|
|
20
|
+
*/
|
|
21
|
+
OpenApiExtractor.extractTargets = function extractTargets(rawSchema) {
|
|
22
|
+
const aTargets = [];
|
|
23
|
+
if (!rawSchema || typeof rawSchema !== "object") {
|
|
24
|
+
return aTargets;
|
|
25
|
+
}
|
|
26
|
+
const oSchema = rawSchema;
|
|
27
|
+
|
|
28
|
+
// OpenAPI 3.0 (components/schemas)
|
|
29
|
+
if (typeof oSchema.openapi === "string" && oSchema.openapi.startsWith("3.") && oSchema.components && typeof oSchema.components.schemas === "object") {
|
|
30
|
+
Object.keys(oSchema.components.schemas).forEach(sKey => {
|
|
31
|
+
aTargets.push({
|
|
32
|
+
key: "#/components/schemas/" + sKey,
|
|
33
|
+
text: "Schema: " + sKey
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Swagger 2.0 (definitions)
|
|
39
|
+
if (typeof oSchema.swagger === "string" && oSchema.swagger.startsWith("2.") && typeof oSchema.definitions === "object" && oSchema.definitions !== null) {
|
|
40
|
+
Object.keys(oSchema.definitions).forEach(sKey => {
|
|
41
|
+
aTargets.push({
|
|
42
|
+
key: "#/definitions/" + sKey,
|
|
43
|
+
text: "Definition: " + sKey
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Extract endpoints
|
|
49
|
+
if (typeof oSchema.paths === "object" && oSchema.paths !== null) {
|
|
50
|
+
Object.keys(oSchema.paths).forEach(sPath => {
|
|
51
|
+
const methods = oSchema.paths[sPath];
|
|
52
|
+
if (methods && typeof methods === "object") {
|
|
53
|
+
Object.keys(methods).forEach(sMethod => {
|
|
54
|
+
const escapedPath = sPath.replace(/\//g, "~1");
|
|
55
|
+
aTargets.push({
|
|
56
|
+
key: "#/paths/" + escapedPath + "/" + sMethod,
|
|
57
|
+
text: "Operation: " + sMethod.toUpperCase() + " " + sPath
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Primary Schema Detection
|
|
65
|
+
if (aTargets.length > 1) {
|
|
66
|
+
let bestScore = -1;
|
|
67
|
+
let bestIndex = -1;
|
|
68
|
+
const info = oSchema.info;
|
|
69
|
+
const title = info && typeof info.title === "string" ? info.title.toLowerCase().replace(/[^a-z0-9]/g, "") : "";
|
|
70
|
+
const titleWords = info && typeof info.title === "string" ? info.title.toLowerCase().split(/[\s_-]+/) : [];
|
|
71
|
+
aTargets.forEach((target, index) => {
|
|
72
|
+
let score = 0;
|
|
73
|
+
|
|
74
|
+
// Only score Schemas/Definitions, not operations for the primary node heuristic
|
|
75
|
+
if (target.key.includes("/schemas/") || target.key.includes("/definitions/")) {
|
|
76
|
+
const name = target.key.split("/").pop() || "";
|
|
77
|
+
const nameLower = name.toLowerCase();
|
|
78
|
+
const nameClean = nameLower.replace(/[^a-z0-9]/g, "");
|
|
79
|
+
if (title && nameClean === title) score += 30; // Reduced from 100
|
|
80
|
+
else if (title && title.includes(nameClean)) score += 15; // Reduced from 50
|
|
81
|
+
else if (title && nameClean.includes(title)) score += 15; // Reduced from 50
|
|
82
|
+
|
|
83
|
+
titleWords.forEach(word => {
|
|
84
|
+
if (word.length > 3 && nameLower.includes(word)) score += 5; // Reduced from 10
|
|
85
|
+
});
|
|
86
|
+
const genericRoots = ["root", "main", "app", "application", "payload", "document"];
|
|
87
|
+
if (genericRoots.some(r => nameLower.includes(r))) score += 5;
|
|
88
|
+
|
|
89
|
+
// Complexity Fallback
|
|
90
|
+
let schemaDef = null;
|
|
91
|
+
if (target.key.startsWith("#/components/schemas/") && typeof oSchema.components === "object" && oSchema.components !== null) {
|
|
92
|
+
const components = oSchema.components;
|
|
93
|
+
if (typeof components.schemas === "object" && components.schemas !== null) {
|
|
94
|
+
schemaDef = components.schemas[name] || null;
|
|
95
|
+
}
|
|
96
|
+
} else if (target.key.startsWith("#/definitions/") && typeof oSchema.definitions === "object" && oSchema.definitions !== null) {
|
|
97
|
+
schemaDef = oSchema.definitions[name] || null;
|
|
98
|
+
}
|
|
99
|
+
if (schemaDef && typeof schemaDef === "object") {
|
|
100
|
+
const scoreSchemaNode = node => {
|
|
101
|
+
if (!node || typeof node !== "object") return;
|
|
102
|
+
const nodeObj = node;
|
|
103
|
+
if (nodeObj.properties && typeof nodeObj.properties === "object") {
|
|
104
|
+
score += Object.keys(nodeObj.properties).length * 2; // +2 per property
|
|
105
|
+
Object.values(nodeObj.properties).forEach(prop => {
|
|
106
|
+
if (prop && typeof prop === "object") {
|
|
107
|
+
const propObj = prop;
|
|
108
|
+
if (propObj.$ref) score += 20; // +20 for referencing sub-schemas (aggregate root)
|
|
109
|
+
if (propObj.items && typeof propObj.items === "object" && propObj.items.$ref) score += 20;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (nodeObj.required && Array.isArray(nodeObj.required)) {
|
|
114
|
+
score += nodeObj.required.length * 5; // +5 per required constraint
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
scoreSchemaNode(schemaDef);
|
|
118
|
+
|
|
119
|
+
// Handle OpenAPI composition structures
|
|
120
|
+
if (schemaDef.allOf && Array.isArray(schemaDef.allOf)) {
|
|
121
|
+
schemaDef.allOf.forEach(scoreSchemaNode);
|
|
122
|
+
}
|
|
123
|
+
if (schemaDef.anyOf && Array.isArray(schemaDef.anyOf)) {
|
|
124
|
+
schemaDef.anyOf.forEach(scoreSchemaNode);
|
|
125
|
+
}
|
|
126
|
+
if (schemaDef.oneOf && Array.isArray(schemaDef.oneOf)) {
|
|
127
|
+
schemaDef.oneOf.forEach(scoreSchemaNode);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (score > bestScore) {
|
|
132
|
+
bestScore = score;
|
|
133
|
+
bestIndex = index;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
if (bestIndex !== -1 && bestScore > 0) {
|
|
137
|
+
const primary = aTargets.splice(bestIndex, 1)[0];
|
|
138
|
+
primary.text = `(Recommended) ${primary.text}`;
|
|
139
|
+
aTargets.unshift(primary);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return aTargets;
|
|
143
|
+
};
|
|
144
|
+
return OpenApiExtractor;
|
|
145
|
+
});
|
|
146
|
+
//# sourceMappingURL=OpenApiExtractor-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApiExtractor-dbg.js","names":["OpenApiExtractor","UI5Object","extend","extractTargets","rawSchema","aTargets","oSchema","openapi","startsWith","components","schemas","Object","keys","forEach","sKey","push","key","text","swagger","definitions","paths","sPath","methods","sMethod","escapedPath","replace","toUpperCase","length","bestScore","bestIndex","info","title","toLowerCase","titleWords","split","target","index","score","includes","name","pop","nameLower","nameClean","word","genericRoots","some","r","schemaDef","scoreSchemaNode","node","nodeObj","properties","values","prop","propObj","$ref","items","required","Array","isArray","allOf","anyOf","oneOf","primary","splice","unshift"],"sources":["OpenApiExtractor.ts"],"sourcesContent":["import UI5Object from \"sap/ui/base/Object\";\n\nexport interface OpenApiTarget {\n key: string;\n text: string;\n}\n\n/**\n * @class\n * OpenApiExtractor utility.\n * Dynamically crawls OpenAPI/Swagger JSON specifications to find all valid \n * root endpoints and schema definitions that can be used as a schemaTarget.\n * \n * @extends sap.ui.base.Object\n * @alias nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor\n */\nexport default class OpenApiExtractor extends UI5Object {\n\n /**\n * Parses an OpenAPI document and extracts an array of valid targets.\n * \n * @public\n * @param oSchema The parsed JSON schema object.\n * @returns Array of target bindings.\n */\n public static extractTargets(rawSchema: unknown): OpenApiTarget[] {\n const aTargets: OpenApiTarget[] = [];\n if (!rawSchema || typeof rawSchema !== \"object\") {\n return aTargets;\n }\n\n const oSchema = rawSchema as Record<string, unknown>;\n\n // OpenAPI 3.0 (components/schemas)\n if (typeof oSchema.openapi === \"string\" && oSchema.openapi.startsWith(\"3.\") && oSchema.components && typeof (oSchema.components as Record<string,unknown>).schemas === \"object\") {\n Object.keys((oSchema.components as Record<string,unknown>).schemas as Record<string,unknown>).forEach((sKey) => {\n aTargets.push({\n key: \"#/components/schemas/\" + sKey,\n text: \"Schema: \" + sKey\n });\n });\n }\n \n // Swagger 2.0 (definitions)\n if (typeof oSchema.swagger === \"string\" && oSchema.swagger.startsWith(\"2.\") && typeof oSchema.definitions === \"object\" && oSchema.definitions !== null) {\n Object.keys(oSchema.definitions as Record<string,unknown>).forEach((sKey) => {\n aTargets.push({\n key: \"#/definitions/\" + sKey,\n text: \"Definition: \" + sKey\n });\n });\n }\n\n // Extract endpoints\n if (typeof oSchema.paths === \"object\" && oSchema.paths !== null) {\n Object.keys(oSchema.paths as Record<string,unknown>).forEach((sPath) => {\n const methods = (oSchema.paths as Record<string,unknown>)[sPath];\n if (methods && typeof methods === \"object\") {\n Object.keys(methods).forEach((sMethod) => {\n const escapedPath = sPath.replace(/\\//g, \"~1\");\n aTargets.push({\n key: \"#/paths/\" + escapedPath + \"/\" + sMethod,\n text: \"Operation: \" + sMethod.toUpperCase() + \" \" + sPath\n });\n });\n }\n });\n }\n\n // Primary Schema Detection\n if (aTargets.length > 1) {\n let bestScore = -1;\n let bestIndex = -1;\n \n const info = oSchema.info as Record<string, unknown> | undefined;\n const title = (info && typeof info.title === \"string\") ? info.title.toLowerCase().replace(/[^a-z0-9]/g, \"\") : \"\";\n const titleWords = (info && typeof info.title === \"string\") ? info.title.toLowerCase().split(/[\\s_-]+/) : [];\n \n aTargets.forEach((target, index) => {\n let score = 0;\n \n // Only score Schemas/Definitions, not operations for the primary node heuristic\n if (target.key.includes(\"/schemas/\") || target.key.includes(\"/definitions/\")) {\n const name = target.key.split(\"/\").pop() || \"\";\n const nameLower = name.toLowerCase();\n const nameClean = nameLower.replace(/[^a-z0-9]/g, \"\");\n \n if (title && nameClean === title) score += 30; // Reduced from 100\n else if (title && title.includes(nameClean)) score += 15; // Reduced from 50\n else if (title && nameClean.includes(title)) score += 15; // Reduced from 50\n \n titleWords.forEach((word: string) => {\n if (word.length > 3 && nameLower.includes(word)) score += 5; // Reduced from 10\n });\n \n const genericRoots = [\"root\", \"main\", \"app\", \"application\", \"payload\", \"document\"];\n if (genericRoots.some(r => nameLower.includes(r))) score += 5;\n\n // Complexity Fallback\n let schemaDef: Record<string, unknown> | null = null;\n if (target.key.startsWith(\"#/components/schemas/\") && typeof oSchema.components === \"object\" && oSchema.components !== null) {\n const components = oSchema.components as Record<string, unknown>;\n if (typeof components.schemas === \"object\" && components.schemas !== null) {\n schemaDef = (components.schemas as Record<string, Record<string, unknown>>)[name] || null;\n }\n } else if (target.key.startsWith(\"#/definitions/\") && typeof oSchema.definitions === \"object\" && oSchema.definitions !== null) {\n schemaDef = (oSchema.definitions as Record<string, Record<string, unknown>>)[name] || null;\n }\n\n if (schemaDef && typeof schemaDef === \"object\") {\n const scoreSchemaNode = (node: unknown) => {\n if (!node || typeof node !== \"object\") return;\n const nodeObj = node as Record<string, unknown>;\n if (nodeObj.properties && typeof nodeObj.properties === \"object\") {\n score += Object.keys(nodeObj.properties).length * 2; // +2 per property\n Object.values(nodeObj.properties).forEach((prop: unknown) => {\n if (prop && typeof prop === \"object\") {\n const propObj = prop as Record<string, unknown>;\n if (propObj.$ref) score += 20; // +20 for referencing sub-schemas (aggregate root)\n if (propObj.items && typeof propObj.items === \"object\" && (propObj.items as Record<string, unknown>).$ref) score += 20;\n }\n });\n }\n \n if (nodeObj.required && Array.isArray(nodeObj.required)) {\n score += nodeObj.required.length * 5; // +5 per required constraint\n }\n };\n\n scoreSchemaNode(schemaDef);\n\n // Handle OpenAPI composition structures\n if (schemaDef.allOf && Array.isArray(schemaDef.allOf)) {\n schemaDef.allOf.forEach(scoreSchemaNode);\n }\n if (schemaDef.anyOf && Array.isArray(schemaDef.anyOf)) {\n schemaDef.anyOf.forEach(scoreSchemaNode);\n }\n if (schemaDef.oneOf && Array.isArray(schemaDef.oneOf)) {\n schemaDef.oneOf.forEach(scoreSchemaNode);\n }\n }\n }\n \n if (score > bestScore) {\n bestScore = score;\n bestIndex = index;\n }\n });\n\n if (bestIndex !== -1 && bestScore > 0) {\n const primary = aTargets.splice(bestIndex, 1)[0];\n primary.text = `(Recommended) ${primary.text}`;\n aTargets.unshift(primary);\n }\n }\n\n return aTargets;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor" {
|
|
2
|
+
import UI5Object from "sap/ui/base/Object";
|
|
3
|
+
export interface OpenApiTarget {
|
|
4
|
+
key: string;
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @class
|
|
9
|
+
* OpenApiExtractor utility.
|
|
10
|
+
* Dynamically crawls OpenAPI/Swagger JSON specifications to find all valid
|
|
11
|
+
* root endpoints and schema definitions that can be used as a schemaTarget.
|
|
12
|
+
*
|
|
13
|
+
* @extends sap.ui.base.Object
|
|
14
|
+
* @alias nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor
|
|
15
|
+
*/
|
|
16
|
+
export default class OpenApiExtractor extends UI5Object {
|
|
17
|
+
/**
|
|
18
|
+
* Parses an OpenAPI document and extracts an array of valid targets.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
* @param oSchema The parsed JSON schema object.
|
|
22
|
+
* @returns Array of target bindings.
|
|
23
|
+
*/
|
|
24
|
+
static extractTargets(rawSchema: unknown): OpenApiTarget[];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=OpenApiExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApiExtractor.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,qDAAqD,CAAC;IACrE,OAAO,SAAS,MAAM,oBAAoB,CAAC;IAE3C,UAAiB,aAAa;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KAChB;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;QAEnD;;;;;;WAMG;eACW,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,EAAE;KAsIpE;CAEA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
sap.ui.define(["sap/ui/base/Object"],function(e){"use strict";const t=e.extend("nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor",{});t.extractTargets=function e(t){const s=[];if(!t||typeof t!=="object"){return s}const o=t;if(typeof o.openapi==="string"&&o.openapi.startsWith("3.")&&o.components&&typeof o.components.schemas==="object"){Object.keys(o.components.schemas).forEach(e=>{s.push({key:"#/components/schemas/"+e,text:"Schema: "+e})})}if(typeof o.swagger==="string"&&o.swagger.startsWith("2.")&&typeof o.definitions==="object"&&o.definitions!==null){Object.keys(o.definitions).forEach(e=>{s.push({key:"#/definitions/"+e,text:"Definition: "+e})})}if(typeof o.paths==="object"&&o.paths!==null){Object.keys(o.paths).forEach(e=>{const t=o.paths[e];if(t&&typeof t==="object"){Object.keys(t).forEach(t=>{const o=e.replace(/\//g,"~1");s.push({key:"#/paths/"+o+"/"+t,text:"Operation: "+t.toUpperCase()+" "+e})})}})}if(s.length>1){let e=-1;let t=-1;const i=o.info;const n=i&&typeof i.title==="string"?i.title.toLowerCase().replace(/[^a-z0-9]/g,""):"";const c=i&&typeof i.title==="string"?i.title.toLowerCase().split(/[\s_-]+/):[];s.forEach((s,i)=>{let f=0;if(s.key.includes("/schemas/")||s.key.includes("/definitions/")){const e=s.key.split("/").pop()||"";const t=e.toLowerCase();const i=t.replace(/[^a-z0-9]/g,"");if(n&&i===n)f+=30;else if(n&&n.includes(i))f+=15;else if(n&&i.includes(n))f+=15;c.forEach(e=>{if(e.length>3&&t.includes(e))f+=5});const r=["root","main","app","application","payload","document"];if(r.some(e=>t.includes(e)))f+=5;let a=null;if(s.key.startsWith("#/components/schemas/")&&typeof o.components==="object"&&o.components!==null){const t=o.components;if(typeof t.schemas==="object"&&t.schemas!==null){a=t.schemas[e]||null}}else if(s.key.startsWith("#/definitions/")&&typeof o.definitions==="object"&&o.definitions!==null){a=o.definitions[e]||null}if(a&&typeof a==="object"){const e=e=>{if(!e||typeof e!=="object")return;const t=e;if(t.properties&&typeof t.properties==="object"){f+=Object.keys(t.properties).length*2;Object.values(t.properties).forEach(e=>{if(e&&typeof e==="object"){const t=e;if(t.$ref)f+=20;if(t.items&&typeof t.items==="object"&&t.items.$ref)f+=20}})}if(t.required&&Array.isArray(t.required)){f+=t.required.length*5}};e(a);if(a.allOf&&Array.isArray(a.allOf)){a.allOf.forEach(e)}if(a.anyOf&&Array.isArray(a.anyOf)){a.anyOf.forEach(e)}if(a.oneOf&&Array.isArray(a.oneOf)){a.oneOf.forEach(e)}}}if(f>e){e=f;t=i}});if(t!==-1&&e>0){const e=s.splice(t,1)[0];e.text=`(Recommended) ${e.text}`;s.unshift(e)}}return s};return t});
|
|
2
|
+
//# sourceMappingURL=OpenApiExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApiExtractor.js","names":["OpenApiExtractor","UI5Object","extend","extractTargets","rawSchema","aTargets","oSchema","openapi","startsWith","components","schemas","Object","keys","forEach","sKey","push","key","text","swagger","definitions","paths","sPath","methods","sMethod","escapedPath","replace","toUpperCase","length","bestScore","bestIndex","info","title","toLowerCase","titleWords","split","target","index","score","includes","name","pop","nameLower","nameClean","word","genericRoots","some","r","schemaDef","scoreSchemaNode","node","nodeObj","properties","values","prop","propObj","$ref","items","required","Array","isArray","allOf","anyOf","oneOf","primary","splice","unshift"],"sources":["OpenApiExtractor.ts"],"sourcesContent":["import UI5Object from \"sap/ui/base/Object\";\n\nexport interface OpenApiTarget {\n key: string;\n text: string;\n}\n\n/**\n * @class\n * OpenApiExtractor utility.\n * Dynamically crawls OpenAPI/Swagger JSON specifications to find all valid \n * root endpoints and schema definitions that can be used as a schemaTarget.\n * \n * @extends sap.ui.base.Object\n * @alias nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor\n */\nexport default class OpenApiExtractor extends UI5Object {\n\n /**\n * Parses an OpenAPI document and extracts an array of valid targets.\n * \n * @public\n * @param oSchema The parsed JSON schema object.\n * @returns Array of target bindings.\n */\n public static extractTargets(rawSchema: unknown): OpenApiTarget[] {\n const aTargets: OpenApiTarget[] = [];\n if (!rawSchema || typeof rawSchema !== \"object\") {\n return aTargets;\n }\n\n const oSchema = rawSchema as Record<string, unknown>;\n\n // OpenAPI 3.0 (components/schemas)\n if (typeof oSchema.openapi === \"string\" && oSchema.openapi.startsWith(\"3.\") && oSchema.components && typeof (oSchema.components as Record<string,unknown>).schemas === \"object\") {\n Object.keys((oSchema.components as Record<string,unknown>).schemas as Record<string,unknown>).forEach((sKey) => {\n aTargets.push({\n key: \"#/components/schemas/\" + sKey,\n text: \"Schema: \" + sKey\n });\n });\n }\n \n // Swagger 2.0 (definitions)\n if (typeof oSchema.swagger === \"string\" && oSchema.swagger.startsWith(\"2.\") && typeof oSchema.definitions === \"object\" && oSchema.definitions !== null) {\n Object.keys(oSchema.definitions as Record<string,unknown>).forEach((sKey) => {\n aTargets.push({\n key: \"#/definitions/\" + sKey,\n text: \"Definition: \" + sKey\n });\n });\n }\n\n // Extract endpoints\n if (typeof oSchema.paths === \"object\" && oSchema.paths !== null) {\n Object.keys(oSchema.paths as Record<string,unknown>).forEach((sPath) => {\n const methods = (oSchema.paths as Record<string,unknown>)[sPath];\n if (methods && typeof methods === \"object\") {\n Object.keys(methods).forEach((sMethod) => {\n const escapedPath = sPath.replace(/\\//g, \"~1\");\n aTargets.push({\n key: \"#/paths/\" + escapedPath + \"/\" + sMethod,\n text: \"Operation: \" + sMethod.toUpperCase() + \" \" + sPath\n });\n });\n }\n });\n }\n\n // Primary Schema Detection\n if (aTargets.length > 1) {\n let bestScore = -1;\n let bestIndex = -1;\n \n const info = oSchema.info as Record<string, unknown> | undefined;\n const title = (info && typeof info.title === \"string\") ? info.title.toLowerCase().replace(/[^a-z0-9]/g, \"\") : \"\";\n const titleWords = (info && typeof info.title === \"string\") ? info.title.toLowerCase().split(/[\\s_-]+/) : [];\n \n aTargets.forEach((target, index) => {\n let score = 0;\n \n // Only score Schemas/Definitions, not operations for the primary node heuristic\n if (target.key.includes(\"/schemas/\") || target.key.includes(\"/definitions/\")) {\n const name = target.key.split(\"/\").pop() || \"\";\n const nameLower = name.toLowerCase();\n const nameClean = nameLower.replace(/[^a-z0-9]/g, \"\");\n \n if (title && nameClean === title) score += 30; // Reduced from 100\n else if (title && title.includes(nameClean)) score += 15; // Reduced from 50\n else if (title && nameClean.includes(title)) score += 15; // Reduced from 50\n \n titleWords.forEach((word: string) => {\n if (word.length > 3 && nameLower.includes(word)) score += 5; // Reduced from 10\n });\n \n const genericRoots = [\"root\", \"main\", \"app\", \"application\", \"payload\", \"document\"];\n if (genericRoots.some(r => nameLower.includes(r))) score += 5;\n\n // Complexity Fallback\n let schemaDef: Record<string, unknown> | null = null;\n if (target.key.startsWith(\"#/components/schemas/\") && typeof oSchema.components === \"object\" && oSchema.components !== null) {\n const components = oSchema.components as Record<string, unknown>;\n if (typeof components.schemas === \"object\" && components.schemas !== null) {\n schemaDef = (components.schemas as Record<string, Record<string, unknown>>)[name] || null;\n }\n } else if (target.key.startsWith(\"#/definitions/\") && typeof oSchema.definitions === \"object\" && oSchema.definitions !== null) {\n schemaDef = (oSchema.definitions as Record<string, Record<string, unknown>>)[name] || null;\n }\n\n if (schemaDef && typeof schemaDef === \"object\") {\n const scoreSchemaNode = (node: unknown) => {\n if (!node || typeof node !== \"object\") return;\n const nodeObj = node as Record<string, unknown>;\n if (nodeObj.properties && typeof nodeObj.properties === \"object\") {\n score += Object.keys(nodeObj.properties).length * 2; // +2 per property\n Object.values(nodeObj.properties).forEach((prop: unknown) => {\n if (prop && typeof prop === \"object\") {\n const propObj = prop as Record<string, unknown>;\n if (propObj.$ref) score += 20; // +20 for referencing sub-schemas (aggregate root)\n if (propObj.items && typeof propObj.items === \"object\" && (propObj.items as Record<string, unknown>).$ref) score += 20;\n }\n });\n }\n \n if (nodeObj.required && Array.isArray(nodeObj.required)) {\n score += nodeObj.required.length * 5; // +5 per required constraint\n }\n };\n\n scoreSchemaNode(schemaDef);\n\n // Handle OpenAPI composition structures\n if (schemaDef.allOf && Array.isArray(schemaDef.allOf)) {\n schemaDef.allOf.forEach(scoreSchemaNode);\n }\n if (schemaDef.anyOf && Array.isArray(schemaDef.anyOf)) {\n schemaDef.anyOf.forEach(scoreSchemaNode);\n }\n if (schemaDef.oneOf && Array.isArray(schemaDef.oneOf)) {\n schemaDef.oneOf.forEach(scoreSchemaNode);\n }\n }\n }\n \n if (score > bestScore) {\n bestScore = score;\n bestIndex = index;\n }\n });\n\n if (bestIndex !== -1 && bestScore > 0) {\n const primary = aTargets.splice(bestIndex, 1)[0];\n primary.text = `(Recommended) ${primary.text}`;\n aTargets.unshift(primary);\n }\n }\n\n return aTargets;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import UI5Object from "sap/ui/base/Object";
|
|
2
|
+
|
|
3
|
+
export interface OpenApiTarget {
|
|
4
|
+
key: string;
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @class
|
|
10
|
+
* OpenApiExtractor utility.
|
|
11
|
+
* Dynamically crawls OpenAPI/Swagger JSON specifications to find all valid
|
|
12
|
+
* root endpoints and schema definitions that can be used as a schemaTarget.
|
|
13
|
+
*
|
|
14
|
+
* @extends sap.ui.base.Object
|
|
15
|
+
* @alias nz.co.siliconst.ui5.metaui.swagger.OpenApiExtractor
|
|
16
|
+
*/
|
|
17
|
+
export default class OpenApiExtractor extends UI5Object {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Parses an OpenAPI document and extracts an array of valid targets.
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
* @param oSchema The parsed JSON schema object.
|
|
24
|
+
* @returns Array of target bindings.
|
|
25
|
+
*/
|
|
26
|
+
public static extractTargets(rawSchema: unknown): OpenApiTarget[] {
|
|
27
|
+
const aTargets: OpenApiTarget[] = [];
|
|
28
|
+
if (!rawSchema || typeof rawSchema !== "object") {
|
|
29
|
+
return aTargets;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const oSchema = rawSchema as Record<string, unknown>;
|
|
33
|
+
|
|
34
|
+
// OpenAPI 3.0 (components/schemas)
|
|
35
|
+
if (typeof oSchema.openapi === "string" && oSchema.openapi.startsWith("3.") && oSchema.components && typeof (oSchema.components as Record<string,unknown>).schemas === "object") {
|
|
36
|
+
Object.keys((oSchema.components as Record<string,unknown>).schemas as Record<string,unknown>).forEach((sKey) => {
|
|
37
|
+
aTargets.push({
|
|
38
|
+
key: "#/components/schemas/" + sKey,
|
|
39
|
+
text: "Schema: " + sKey
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Swagger 2.0 (definitions)
|
|
45
|
+
if (typeof oSchema.swagger === "string" && oSchema.swagger.startsWith("2.") && typeof oSchema.definitions === "object" && oSchema.definitions !== null) {
|
|
46
|
+
Object.keys(oSchema.definitions as Record<string,unknown>).forEach((sKey) => {
|
|
47
|
+
aTargets.push({
|
|
48
|
+
key: "#/definitions/" + sKey,
|
|
49
|
+
text: "Definition: " + sKey
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Extract endpoints
|
|
55
|
+
if (typeof oSchema.paths === "object" && oSchema.paths !== null) {
|
|
56
|
+
Object.keys(oSchema.paths as Record<string,unknown>).forEach((sPath) => {
|
|
57
|
+
const methods = (oSchema.paths as Record<string,unknown>)[sPath];
|
|
58
|
+
if (methods && typeof methods === "object") {
|
|
59
|
+
Object.keys(methods).forEach((sMethod) => {
|
|
60
|
+
const escapedPath = sPath.replace(/\//g, "~1");
|
|
61
|
+
aTargets.push({
|
|
62
|
+
key: "#/paths/" + escapedPath + "/" + sMethod,
|
|
63
|
+
text: "Operation: " + sMethod.toUpperCase() + " " + sPath
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Primary Schema Detection
|
|
71
|
+
if (aTargets.length > 1) {
|
|
72
|
+
let bestScore = -1;
|
|
73
|
+
let bestIndex = -1;
|
|
74
|
+
|
|
75
|
+
const info = oSchema.info as Record<string, unknown> | undefined;
|
|
76
|
+
const title = (info && typeof info.title === "string") ? info.title.toLowerCase().replace(/[^a-z0-9]/g, "") : "";
|
|
77
|
+
const titleWords = (info && typeof info.title === "string") ? info.title.toLowerCase().split(/[\s_-]+/) : [];
|
|
78
|
+
|
|
79
|
+
aTargets.forEach((target, index) => {
|
|
80
|
+
let score = 0;
|
|
81
|
+
|
|
82
|
+
// Only score Schemas/Definitions, not operations for the primary node heuristic
|
|
83
|
+
if (target.key.includes("/schemas/") || target.key.includes("/definitions/")) {
|
|
84
|
+
const name = target.key.split("/").pop() || "";
|
|
85
|
+
const nameLower = name.toLowerCase();
|
|
86
|
+
const nameClean = nameLower.replace(/[^a-z0-9]/g, "");
|
|
87
|
+
|
|
88
|
+
if (title && nameClean === title) score += 30; // Reduced from 100
|
|
89
|
+
else if (title && title.includes(nameClean)) score += 15; // Reduced from 50
|
|
90
|
+
else if (title && nameClean.includes(title)) score += 15; // Reduced from 50
|
|
91
|
+
|
|
92
|
+
titleWords.forEach((word: string) => {
|
|
93
|
+
if (word.length > 3 && nameLower.includes(word)) score += 5; // Reduced from 10
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const genericRoots = ["root", "main", "app", "application", "payload", "document"];
|
|
97
|
+
if (genericRoots.some(r => nameLower.includes(r))) score += 5;
|
|
98
|
+
|
|
99
|
+
// Complexity Fallback
|
|
100
|
+
let schemaDef: Record<string, unknown> | null = null;
|
|
101
|
+
if (target.key.startsWith("#/components/schemas/") && typeof oSchema.components === "object" && oSchema.components !== null) {
|
|
102
|
+
const components = oSchema.components as Record<string, unknown>;
|
|
103
|
+
if (typeof components.schemas === "object" && components.schemas !== null) {
|
|
104
|
+
schemaDef = (components.schemas as Record<string, Record<string, unknown>>)[name] || null;
|
|
105
|
+
}
|
|
106
|
+
} else if (target.key.startsWith("#/definitions/") && typeof oSchema.definitions === "object" && oSchema.definitions !== null) {
|
|
107
|
+
schemaDef = (oSchema.definitions as Record<string, Record<string, unknown>>)[name] || null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (schemaDef && typeof schemaDef === "object") {
|
|
111
|
+
const scoreSchemaNode = (node: unknown) => {
|
|
112
|
+
if (!node || typeof node !== "object") return;
|
|
113
|
+
const nodeObj = node as Record<string, unknown>;
|
|
114
|
+
if (nodeObj.properties && typeof nodeObj.properties === "object") {
|
|
115
|
+
score += Object.keys(nodeObj.properties).length * 2; // +2 per property
|
|
116
|
+
Object.values(nodeObj.properties).forEach((prop: unknown) => {
|
|
117
|
+
if (prop && typeof prop === "object") {
|
|
118
|
+
const propObj = prop as Record<string, unknown>;
|
|
119
|
+
if (propObj.$ref) score += 20; // +20 for referencing sub-schemas (aggregate root)
|
|
120
|
+
if (propObj.items && typeof propObj.items === "object" && (propObj.items as Record<string, unknown>).$ref) score += 20;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (nodeObj.required && Array.isArray(nodeObj.required)) {
|
|
126
|
+
score += nodeObj.required.length * 5; // +5 per required constraint
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
scoreSchemaNode(schemaDef);
|
|
131
|
+
|
|
132
|
+
// Handle OpenAPI composition structures
|
|
133
|
+
if (schemaDef.allOf && Array.isArray(schemaDef.allOf)) {
|
|
134
|
+
schemaDef.allOf.forEach(scoreSchemaNode);
|
|
135
|
+
}
|
|
136
|
+
if (schemaDef.anyOf && Array.isArray(schemaDef.anyOf)) {
|
|
137
|
+
schemaDef.anyOf.forEach(scoreSchemaNode);
|
|
138
|
+
}
|
|
139
|
+
if (schemaDef.oneOf && Array.isArray(schemaDef.oneOf)) {
|
|
140
|
+
schemaDef.oneOf.forEach(scoreSchemaNode);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (score > bestScore) {
|
|
146
|
+
bestScore = score;
|
|
147
|
+
bestIndex = index;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
if (bestIndex !== -1 && bestScore > 0) {
|
|
152
|
+
const primary = aTargets.splice(bestIndex, 1)[0];
|
|
153
|
+
primary.text = `(Recommended) ${primary.text}`;
|
|
154
|
+
aTargets.unshift(primary);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return aTargets;
|
|
159
|
+
}
|
|
160
|
+
}
|