@siliconst/metaui 1.4.13 → 1.4.17
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/controls/DynamicHost-dbg.js +50 -3
- 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 +1 -1
- 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 +57 -4
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +44 -2
- 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 +4 -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 +51 -4
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +42 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +9 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +44 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +1 -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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js +47 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +17 -0
- 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 +10 -1
- 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 +19 -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 +7 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +6 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +29 -20
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +3 -20
- 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.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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +1 -0
- 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.d.ts.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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +1 -0
- 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.d.ts.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 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +30 -17
- 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.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 +33 -15
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +35 -11
- 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 +4 -4
- 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 +38 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +1 -0
- 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.d.ts.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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +1 -0
- 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.d.ts.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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +79 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +35 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +80 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +1 -0
- 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 +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js +226 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts +63 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.ts +233 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js +43 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts +15 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.ts +37 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js +37 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts +18 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper-dbg.js +84 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.ts +80 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
sap.ui.define(["../utils/Logger"], function (___utils_Logger) {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @file SwaggerRefResolver.ts
|
|
6
|
+
* @description Utility class for resolving local $ref pointers within an OpenAPI document.
|
|
7
|
+
*/
|
|
8
|
+
const Logger = ___utils_Logger["Logger"];
|
|
9
|
+
class SwaggerRefResolver {
|
|
10
|
+
/**
|
|
11
|
+
* Recursively traverses a local JSON Pointer $ref path (e.g., '#/components/schemas/Pet')
|
|
12
|
+
* and extracts the target object from the Swagger root document.
|
|
13
|
+
* External URLs or invalid references are safely ignored.
|
|
14
|
+
*
|
|
15
|
+
* @param {string} refUrl The $ref string path.
|
|
16
|
+
* @param {any} swaggerRoot The root OpenAPI document to query against.
|
|
17
|
+
* @returns {any} The resolved schema object, or null if unresolvable.
|
|
18
|
+
*/
|
|
19
|
+
static resolve(refUrl, swaggerRoot) {
|
|
20
|
+
if (!refUrl || !refUrl.startsWith("#/")) {
|
|
21
|
+
Logger.debug(`[MetaUI SwaggerBuilder] Ignoring non-local or empty $ref: ${refUrl}`, "SwaggerBuilder");
|
|
22
|
+
return null; // Ignore external URLs per architectural rules
|
|
23
|
+
}
|
|
24
|
+
const pathSegments = refUrl.substring(2).split("/");
|
|
25
|
+
let current = swaggerRoot;
|
|
26
|
+
for (const segment of pathSegments) {
|
|
27
|
+
if (current && typeof current === "object" && segment in current) {
|
|
28
|
+
current = current[segment];
|
|
29
|
+
} else {
|
|
30
|
+
Logger.error(`[MetaUI SwaggerBuilder] Failed to resolve local $ref: ${refUrl}`, null, "SwaggerBuilder");
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return current;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
var __exports = {
|
|
38
|
+
__esModule: true
|
|
39
|
+
};
|
|
40
|
+
__exports.SwaggerRefResolver = SwaggerRefResolver;
|
|
41
|
+
return __exports;
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=SwaggerRefResolver-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerRefResolver-dbg.js","names":["Logger","___utils_Logger","SwaggerRefResolver","resolve","refUrl","swaggerRoot","startsWith","debug","pathSegments","substring","split","current","segment","error","__exports","__esModule"],"sources":["SwaggerRefResolver.ts"],"sourcesContent":["/**\n * @file SwaggerRefResolver.ts\n * @description Utility class for resolving local $ref pointers within an OpenAPI document.\n */\nimport { Logger } from \"../utils/Logger\";\n\nexport class SwaggerRefResolver {\n /**\n * Recursively traverses a local JSON Pointer $ref path (e.g., '#/components/schemas/Pet')\n * and extracts the target object from the Swagger root document.\n * External URLs or invalid references are safely ignored.\n * \n * @param {string} refUrl The $ref string path.\n * @param {any} swaggerRoot The root OpenAPI document to query against.\n * @returns {any} The resolved schema object, or null if unresolvable.\n */\n public static resolve(refUrl: string, swaggerRoot: any): any {\n if (!refUrl || !refUrl.startsWith(\"#/\")) {\n Logger.debug(`[MetaUI SwaggerBuilder] Ignoring non-local or empty $ref: ${refUrl}`, \"SwaggerBuilder\");\n return null; // Ignore external URLs per architectural rules\n }\n\n const pathSegments = refUrl.substring(2).split(\"/\");\n let current = swaggerRoot;\n\n for (const segment of pathSegments) {\n if (current && typeof current === \"object\" && segment in current) {\n current = current[segment];\n } else {\n Logger.error(`[MetaUI SwaggerBuilder] Failed to resolve local $ref: ${refUrl}`, null, \"SwaggerBuilder\");\n return null;\n }\n }\n\n return current;\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAISA,MAAM,GAAAC,eAAA;EAER,MAAMC,kBAAkB,CAAC;IAC5B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,OAAcC,OAAOA,CAACC,MAAc,EAAEC,WAAgB,EAAO;MACzD,IAAI,CAACD,MAAM,IAAI,CAACA,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC,EAAE;QACrCN,MAAM,CAACO,KAAK,CAAC,6DAA6DH,MAAM,EAAE,EAAE,gBAAgB,CAAC;QACrG,OAAO,IAAI,CAAC,CAAC;MACjB;MAEA,MAAMI,YAAY,GAAGJ,MAAM,CAACK,SAAS,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;MACnD,IAAIC,OAAO,GAAGN,WAAW;MAEzB,KAAK,MAAMO,OAAO,IAAIJ,YAAY,EAAE;QAChC,IAAIG,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIC,OAAO,IAAID,OAAO,EAAE;UAC9DA,OAAO,GAAGA,OAAO,CAACC,OAAO,CAAC;QAC9B,CAAC,MAAM;UACHZ,MAAM,CAACa,KAAK,CAAC,yDAAyDT,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC;UACvG,OAAO,IAAI;QACf;MACJ;MAEA,OAAOO,OAAO;IAClB;EACJ;EAAC,IAAAG,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAZ,kBAAA,GAAAA,kBAAA;EAAA,OAAAY,SAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver" {
|
|
2
|
+
export class SwaggerRefResolver {
|
|
3
|
+
/**
|
|
4
|
+
* Recursively traverses a local JSON Pointer $ref path (e.g., '#/components/schemas/Pet')
|
|
5
|
+
* and extracts the target object from the Swagger root document.
|
|
6
|
+
* External URLs or invalid references are safely ignored.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} refUrl The $ref string path.
|
|
9
|
+
* @param {any} swaggerRoot The root OpenAPI document to query against.
|
|
10
|
+
* @returns {any} The resolved schema object, or null if unresolvable.
|
|
11
|
+
*/
|
|
12
|
+
static resolve(refUrl: string, swaggerRoot: any): any;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=SwaggerRefResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerRefResolver.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,uDAAuD,CAAC;IAOvE,MAAa,kBAAkB;QAC3B;;;;;;;;WAQG;eACW,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,GAAG;KAoB/D;CAEA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
sap.ui.define(["../utils/Logger"],function(e){"use strict";const r=e["Logger"];class t{static resolve(e,t){if(!e||!e.startsWith("#/")){r.debug(`[MetaUI SwaggerBuilder] Ignoring non-local or empty $ref: ${e}`,"SwaggerBuilder");return null}const l=e.substring(2).split("/");let o=t;for(const t of l){if(o&&typeof o==="object"&&t in o){o=o[t]}else{r.error(`[MetaUI SwaggerBuilder] Failed to resolve local $ref: ${e}`,null,"SwaggerBuilder");return null}}return o}}var l={__esModule:true};l.SwaggerRefResolver=t;return l});
|
|
2
|
+
//# sourceMappingURL=SwaggerRefResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerRefResolver.js","names":["Logger","___utils_Logger","SwaggerRefResolver","resolve","refUrl","swaggerRoot","startsWith","debug","pathSegments","substring","split","current","segment","error","__exports","__esModule"],"sources":["SwaggerRefResolver.ts"],"sourcesContent":["/**\n * @file SwaggerRefResolver.ts\n * @description Utility class for resolving local $ref pointers within an OpenAPI document.\n */\nimport { Logger } from \"../utils/Logger\";\n\nexport class SwaggerRefResolver {\n /**\n * Recursively traverses a local JSON Pointer $ref path (e.g., '#/components/schemas/Pet')\n * and extracts the target object from the Swagger root document.\n * External URLs or invalid references are safely ignored.\n * \n * @param {string} refUrl The $ref string path.\n * @param {any} swaggerRoot The root OpenAPI document to query against.\n * @returns {any} The resolved schema object, or null if unresolvable.\n */\n public static resolve(refUrl: string, swaggerRoot: any): any {\n if (!refUrl || !refUrl.startsWith(\"#/\")) {\n Logger.debug(`[MetaUI SwaggerBuilder] Ignoring non-local or empty $ref: ${refUrl}`, \"SwaggerBuilder\");\n return null; // Ignore external URLs per architectural rules\n }\n\n const pathSegments = refUrl.substring(2).split(\"/\");\n let current = swaggerRoot;\n\n for (const segment of pathSegments) {\n if (current && typeof current === \"object\" && segment in current) {\n current = current[segment];\n } else {\n Logger.error(`[MetaUI SwaggerBuilder] Failed to resolve local $ref: ${refUrl}`, null, \"SwaggerBuilder\");\n return null;\n }\n }\n\n return current;\n }\n}\n"],"mappings":"2DAAA,MAISA,EAAMC,EAAA,UAER,MAAMC,EAUT,cAAcC,CAAQC,EAAgBC,GAClC,IAAKD,IAAWA,EAAOE,WAAW,MAAO,CACrCN,EAAOO,MAAM,6DAA6DH,IAAU,kBACpF,OAAO,IACX,CAEA,MAAMI,EAAeJ,EAAOK,UAAU,GAAGC,MAAM,KAC/C,IAAIC,EAAUN,EAEd,IAAK,MAAMO,KAAWJ,EAAc,CAChC,GAAIG,UAAkBA,IAAY,UAAYC,KAAWD,EAAS,CAC9DA,EAAUA,EAAQC,EACtB,KAAO,CACHZ,EAAOa,MAAM,yDAAyDT,IAAU,KAAM,kBACtF,OAAO,IACX,CACJ,CAEA,OAAOO,CACX,EACH,IAAAG,EAAA,CAAAC,WAAA,MAAAD,EAAAZ,qBAAA,OAAAY,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SwaggerRefResolver.ts
|
|
3
|
+
* @description Utility class for resolving local $ref pointers within an OpenAPI document.
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from "../utils/Logger";
|
|
6
|
+
|
|
7
|
+
export class SwaggerRefResolver {
|
|
8
|
+
/**
|
|
9
|
+
* Recursively traverses a local JSON Pointer $ref path (e.g., '#/components/schemas/Pet')
|
|
10
|
+
* and extracts the target object from the Swagger root document.
|
|
11
|
+
* External URLs or invalid references are safely ignored.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} refUrl The $ref string path.
|
|
14
|
+
* @param {any} swaggerRoot The root OpenAPI document to query against.
|
|
15
|
+
* @returns {any} The resolved schema object, or null if unresolvable.
|
|
16
|
+
*/
|
|
17
|
+
public static resolve(refUrl: string, swaggerRoot: any): any {
|
|
18
|
+
if (!refUrl || !refUrl.startsWith("#/")) {
|
|
19
|
+
Logger.debug(`[MetaUI SwaggerBuilder] Ignoring non-local or empty $ref: ${refUrl}`, "SwaggerBuilder");
|
|
20
|
+
return null; // Ignore external URLs per architectural rules
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const pathSegments = refUrl.substring(2).split("/");
|
|
24
|
+
let current = swaggerRoot;
|
|
25
|
+
|
|
26
|
+
for (const segment of pathSegments) {
|
|
27
|
+
if (current && typeof current === "object" && segment in current) {
|
|
28
|
+
current = current[segment];
|
|
29
|
+
} else {
|
|
30
|
+
Logger.error(`[MetaUI SwaggerBuilder] Failed to resolve local $ref: ${refUrl}`, null, "SwaggerBuilder");
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return current;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
sap.ui.define([], function () {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @file SwaggerTypeMapper.ts
|
|
6
|
+
* @description Utility class for mapping OpenAPI 3.0 primitive types to MetaUI FieldTypes.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
class SwaggerTypeMapper {
|
|
10
|
+
/**
|
|
11
|
+
* Maps an OpenAPI primitive type string to the closest MetaUI FieldType.
|
|
12
|
+
* If the type is omitted (common for objects) or unknown, it defaults to "object".
|
|
13
|
+
*
|
|
14
|
+
* @param {string} swaggerType The raw OpenAPI type (e.g., 'string', 'integer').
|
|
15
|
+
* @returns {FieldType} The mapped MetaUI FieldType.
|
|
16
|
+
*/
|
|
17
|
+
static mapType(swaggerType) {
|
|
18
|
+
const typeMap = {
|
|
19
|
+
"string": "string",
|
|
20
|
+
"number": "number",
|
|
21
|
+
"integer": "integer",
|
|
22
|
+
"boolean": "boolean",
|
|
23
|
+
"array": "array",
|
|
24
|
+
"object": "object",
|
|
25
|
+
"date": "date"
|
|
26
|
+
};
|
|
27
|
+
// Swagger often omits type if it's an object with properties
|
|
28
|
+
return typeMap[swaggerType] || "object";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
var __exports = {
|
|
32
|
+
__esModule: true
|
|
33
|
+
};
|
|
34
|
+
__exports.SwaggerTypeMapper = SwaggerTypeMapper;
|
|
35
|
+
return __exports;
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=SwaggerTypeMapper-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerTypeMapper-dbg.js","names":["SwaggerTypeMapper","mapType","swaggerType","typeMap","__exports","__esModule"],"sources":["SwaggerTypeMapper.ts"],"sourcesContent":["/**\n * @file SwaggerTypeMapper.ts\n * @description Utility class for mapping OpenAPI 3.0 primitive types to MetaUI FieldTypes.\n */\nimport { FieldType } from \"../interfaces/ISchema\";\n\nexport class SwaggerTypeMapper {\n /**\n * Maps an OpenAPI primitive type string to the closest MetaUI FieldType.\n * If the type is omitted (common for objects) or unknown, it defaults to \"object\".\n * \n * @param {string} swaggerType The raw OpenAPI type (e.g., 'string', 'integer').\n * @returns {FieldType} The mapped MetaUI FieldType.\n */\n public static mapType(swaggerType: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n \"string\": \"string\",\n \"number\": \"number\",\n \"integer\": \"integer\",\n \"boolean\": \"boolean\",\n \"array\": \"array\",\n \"object\": \"object\",\n \"date\": \"date\"\n };\n // Swagger often omits type if it's an object with properties\n return typeMap[swaggerType] || \"object\";\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;;EAGO,MAAMA,iBAAiB,CAAC;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,OAAcC,OAAOA,CAACC,WAAmB,EAAa;MAClD,MAAMC,OAAkC,GAAG;QACvC,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE;MACZ,CAAC;MACD;MACA,OAAOA,OAAO,CAACD,WAAW,CAAC,IAAI,QAAQ;IAC3C;EACJ;EAAC,IAAAE,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAJ,iBAAA,GAAAA,iBAAA;EAAA,OAAAI,SAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper" {
|
|
2
|
+
/**
|
|
3
|
+
* @file SwaggerTypeMapper.ts
|
|
4
|
+
* @description Utility class for mapping OpenAPI 3.0 primitive types to MetaUI FieldTypes.
|
|
5
|
+
*/
|
|
6
|
+
import { FieldType } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
7
|
+
export class SwaggerTypeMapper {
|
|
8
|
+
/**
|
|
9
|
+
* Maps an OpenAPI primitive type string to the closest MetaUI FieldType.
|
|
10
|
+
* If the type is omitted (common for objects) or unknown, it defaults to "object".
|
|
11
|
+
*
|
|
12
|
+
* @param {string} swaggerType The raw OpenAPI type (e.g., 'string', 'integer').
|
|
13
|
+
* @returns {FieldType} The mapped MetaUI FieldType.
|
|
14
|
+
*/
|
|
15
|
+
static mapType(swaggerType: string): FieldType;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=SwaggerTypeMapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerTypeMapper.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,sDAAsD,CAAC;IACtE;;;OAGG;IACH,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;IAE1E,MAAa,iBAAiB;QAC1B;;;;;;WAMG;eACW,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;KAaxD;CAEA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
sap.ui.define([],function(){"use strict";class e{static mapType(e){const r={string:"string",number:"number",integer:"integer",boolean:"boolean",array:"array",object:"object",date:"date"};return r[e]||"object"}}var r={__esModule:true};r.SwaggerTypeMapper=e;return r});
|
|
2
|
+
//# sourceMappingURL=SwaggerTypeMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerTypeMapper.js","names":["SwaggerTypeMapper","mapType","swaggerType","typeMap","string","number","integer","boolean","array","object","date","__exports","__esModule"],"sources":["SwaggerTypeMapper.ts"],"sourcesContent":["/**\n * @file SwaggerTypeMapper.ts\n * @description Utility class for mapping OpenAPI 3.0 primitive types to MetaUI FieldTypes.\n */\nimport { FieldType } from \"../interfaces/ISchema\";\n\nexport class SwaggerTypeMapper {\n /**\n * Maps an OpenAPI primitive type string to the closest MetaUI FieldType.\n * If the type is omitted (common for objects) or unknown, it defaults to \"object\".\n * \n * @param {string} swaggerType The raw OpenAPI type (e.g., 'string', 'integer').\n * @returns {FieldType} The mapped MetaUI FieldType.\n */\n public static mapType(swaggerType: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n \"string\": \"string\",\n \"number\": \"number\",\n \"integer\": \"integer\",\n \"boolean\": \"boolean\",\n \"array\": \"array\",\n \"object\": \"object\",\n \"date\": \"date\"\n };\n // Swagger often omits type if it's an object with properties\n return typeMap[swaggerType] || \"object\";\n }\n}\n"],"mappings":"yCAMO,MAAMA,EAQT,cAAcC,CAAQC,GAClB,MAAMC,EAAqC,CACvCC,OAAU,SACVC,OAAU,SACVC,QAAW,UACXC,QAAW,UACXC,MAAS,QACTC,OAAU,SACVC,KAAQ,QAGZ,OAAOP,EAAQD,IAAgB,QACnC,EACH,IAAAS,EAAA,CAAAC,WAAA,MAAAD,EAAAX,oBAAA,OAAAW,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SwaggerTypeMapper.ts
|
|
3
|
+
* @description Utility class for mapping OpenAPI 3.0 primitive types to MetaUI FieldTypes.
|
|
4
|
+
*/
|
|
5
|
+
import { FieldType } from "../interfaces/ISchema";
|
|
6
|
+
|
|
7
|
+
export class SwaggerTypeMapper {
|
|
8
|
+
/**
|
|
9
|
+
* Maps an OpenAPI primitive type string to the closest MetaUI FieldType.
|
|
10
|
+
* If the type is omitted (common for objects) or unknown, it defaults to "object".
|
|
11
|
+
*
|
|
12
|
+
* @param {string} swaggerType The raw OpenAPI type (e.g., 'string', 'integer').
|
|
13
|
+
* @returns {FieldType} The mapped MetaUI FieldType.
|
|
14
|
+
*/
|
|
15
|
+
public static mapType(swaggerType: string): FieldType {
|
|
16
|
+
const typeMap: Record<string, FieldType> = {
|
|
17
|
+
"string": "string",
|
|
18
|
+
"number": "number",
|
|
19
|
+
"integer": "integer",
|
|
20
|
+
"boolean": "boolean",
|
|
21
|
+
"array": "array",
|
|
22
|
+
"object": "object",
|
|
23
|
+
"date": "date"
|
|
24
|
+
};
|
|
25
|
+
// Swagger often omits type if it's an object with properties
|
|
26
|
+
return typeMap[swaggerType] || "object";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
sap.ui.define([], function () {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @file SwaggerUIMapper.ts
|
|
6
|
+
* @description Utility class for mapping OpenAPI properties and formats into MetaUI IUIDirectives.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
class SwaggerUIMapper {
|
|
10
|
+
/**
|
|
11
|
+
* Evaluates an OpenAPI property definition and constructs a MetaUI IUIDirective block.
|
|
12
|
+
* Extracts labels from title/description, maps readOnly state, and assigns
|
|
13
|
+
* specific Fiori widgets based on the OpenAPI 'format' property.
|
|
14
|
+
*
|
|
15
|
+
* @param {any} swaggerProp The raw OpenAPI property schema.
|
|
16
|
+
* @param {string} keyName The technical JSON key of the property.
|
|
17
|
+
* @returns {IUIDirective} The constructed MetaUI UI orchestration directive.
|
|
18
|
+
*/
|
|
19
|
+
static build(swaggerProp, keyName) {
|
|
20
|
+
const ui = {};
|
|
21
|
+
|
|
22
|
+
// Labeling
|
|
23
|
+
if (swaggerProp.title) {
|
|
24
|
+
ui.label = swaggerProp.title;
|
|
25
|
+
} else if (swaggerProp.description) {
|
|
26
|
+
ui.label = swaggerProp.description;
|
|
27
|
+
} else {
|
|
28
|
+
ui.label = this.generateLabel(keyName);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// State
|
|
32
|
+
if (swaggerProp.readOnly === true) {
|
|
33
|
+
ui.readOnly = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Formats to Widgets
|
|
37
|
+
if (swaggerProp.format) {
|
|
38
|
+
switch (swaggerProp.format) {
|
|
39
|
+
case "date-time":
|
|
40
|
+
ui.widget = "datetime";
|
|
41
|
+
break;
|
|
42
|
+
case "date":
|
|
43
|
+
ui.widget = "date";
|
|
44
|
+
break;
|
|
45
|
+
case "password":
|
|
46
|
+
ui.format = "password";
|
|
47
|
+
break;
|
|
48
|
+
case "email":
|
|
49
|
+
ui.format = "email";
|
|
50
|
+
break;
|
|
51
|
+
case "uri":
|
|
52
|
+
ui.format = "url";
|
|
53
|
+
break;
|
|
54
|
+
case "uuid":
|
|
55
|
+
case "ipv4":
|
|
56
|
+
case "ipv6":
|
|
57
|
+
case "hostname":
|
|
58
|
+
if (!ui.validators) ui.validators = [];
|
|
59
|
+
ui.validators.push(swaggerProp.format);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return ui;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Generates a human-readable Title Case label from camelCase or snake_case technical keys.
|
|
68
|
+
*
|
|
69
|
+
* @param {string} name The technical property key.
|
|
70
|
+
* @returns {string} The formatted human-readable label.
|
|
71
|
+
*/
|
|
72
|
+
static generateLabel(name) {
|
|
73
|
+
if (!name) return "";
|
|
74
|
+
let spaced = name.replace(/([A-Z])/g, " $1").replace(/_/g, " ");
|
|
75
|
+
return spaced.split(' ').filter(w => w.length > 0).map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ').trim();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
var __exports = {
|
|
79
|
+
__esModule: true
|
|
80
|
+
};
|
|
81
|
+
__exports.SwaggerUIMapper = SwaggerUIMapper;
|
|
82
|
+
return __exports;
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=SwaggerUIMapper-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerUIMapper-dbg.js","names":["SwaggerUIMapper","build","swaggerProp","keyName","ui","title","label","description","generateLabel","readOnly","format","widget","validators","push","name","spaced","replace","split","filter","w","length","map","word","charAt","toUpperCase","slice","toLowerCase","join","trim","__exports","__esModule"],"sources":["SwaggerUIMapper.ts"],"sourcesContent":["/**\n * @file SwaggerUIMapper.ts\n * @description Utility class for mapping OpenAPI properties and formats into MetaUI IUIDirectives.\n */\nimport { IUIDirective } from \"../interfaces/ISchema\";\n\nexport class SwaggerUIMapper {\n /**\n * Evaluates an OpenAPI property definition and constructs a MetaUI IUIDirective block.\n * Extracts labels from title/description, maps readOnly state, and assigns \n * specific Fiori widgets based on the OpenAPI 'format' property.\n * \n * @param {any} swaggerProp The raw OpenAPI property schema.\n * @param {string} keyName The technical JSON key of the property.\n * @returns {IUIDirective} The constructed MetaUI UI orchestration directive.\n */\n public static build(swaggerProp: any, keyName: string): IUIDirective {\n const ui: IUIDirective = {};\n\n // Labeling\n if (swaggerProp.title) {\n ui.label = swaggerProp.title;\n } else if (swaggerProp.description) {\n ui.label = swaggerProp.description;\n } else {\n ui.label = this.generateLabel(keyName);\n }\n\n // State\n if (swaggerProp.readOnly === true) {\n ui.readOnly = true;\n }\n\n // Formats to Widgets\n if (swaggerProp.format) {\n switch (swaggerProp.format) {\n case \"date-time\":\n ui.widget = \"datetime\";\n break;\n case \"date\":\n ui.widget = \"date\";\n break;\n case \"password\":\n ui.format = \"password\";\n break;\n case \"email\":\n ui.format = \"email\";\n break;\n case \"uri\":\n ui.format = \"url\";\n break;\n case \"uuid\":\n case \"ipv4\":\n case \"ipv6\":\n case \"hostname\":\n if (!ui.validators) ui.validators = [];\n ui.validators.push(swaggerProp.format);\n break;\n }\n }\n\n return ui;\n }\n\n /**\n * Generates a human-readable Title Case label from camelCase or snake_case technical keys.\n * \n * @param {string} name The technical property key.\n * @returns {string} The formatted human-readable label.\n */\n private static generateLabel(name: string): string {\n if (!name) return \"\";\n let spaced = name.replace(/([A-Z])/g, \" $1\").replace(/_/g, \" \");\n return spaced.split(' ')\n .filter(w => w.length > 0)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ')\n .trim();\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;;EAGO,MAAMA,eAAe,CAAC;IACzB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,OAAcC,KAAKA,CAACC,WAAgB,EAAEC,OAAe,EAAgB;MACjE,MAAMC,EAAgB,GAAG,CAAC,CAAC;;MAE3B;MACA,IAAIF,WAAW,CAACG,KAAK,EAAE;QACnBD,EAAE,CAACE,KAAK,GAAGJ,WAAW,CAACG,KAAK;MAChC,CAAC,MAAM,IAAIH,WAAW,CAACK,WAAW,EAAE;QAChCH,EAAE,CAACE,KAAK,GAAGJ,WAAW,CAACK,WAAW;MACtC,CAAC,MAAM;QACHH,EAAE,CAACE,KAAK,GAAG,IAAI,CAACE,aAAa,CAACL,OAAO,CAAC;MAC1C;;MAEA;MACA,IAAID,WAAW,CAACO,QAAQ,KAAK,IAAI,EAAE;QAC/BL,EAAE,CAACK,QAAQ,GAAG,IAAI;MACtB;;MAEA;MACA,IAAIP,WAAW,CAACQ,MAAM,EAAE;QACpB,QAAQR,WAAW,CAACQ,MAAM;UACtB,KAAK,WAAW;YACZN,EAAE,CAACO,MAAM,GAAG,UAAU;YACtB;UACJ,KAAK,MAAM;YACPP,EAAE,CAACO,MAAM,GAAG,MAAM;YAClB;UACJ,KAAK,UAAU;YACXP,EAAE,CAACM,MAAM,GAAG,UAAU;YACtB;UACJ,KAAK,OAAO;YACRN,EAAE,CAACM,MAAM,GAAG,OAAO;YACnB;UACJ,KAAK,KAAK;YACNN,EAAE,CAACM,MAAM,GAAG,KAAK;YACjB;UACJ,KAAK,MAAM;UACX,KAAK,MAAM;UACX,KAAK,MAAM;UACX,KAAK,UAAU;YACX,IAAI,CAACN,EAAE,CAACQ,UAAU,EAAER,EAAE,CAACQ,UAAU,GAAG,EAAE;YACtCR,EAAE,CAACQ,UAAU,CAACC,IAAI,CAACX,WAAW,CAACQ,MAAM,CAAC;YACtC;QACR;MACJ;MAEA,OAAON,EAAE;IACb;;IAEA;AACJ;AACA;AACA;AACA;AACA;IACI,OAAeI,aAAaA,CAACM,IAAY,EAAU;MAC/C,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;MACpB,IAAIC,MAAM,GAAGD,IAAI,CAACE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;MAC/D,OAAOD,MAAM,CAACE,KAAK,CAAC,GAAG,CAAC,CACnBC,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,MAAM,GAAG,CAAC,CAAC,CACzBC,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC,CACvEC,IAAI,CAAC,GAAG,CAAC,CACTC,IAAI,CAAC,CAAC;IACf;EACJ;EAAC,IAAAC,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA7B,eAAA,GAAAA,eAAA;EAAA,OAAA6B,SAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper" {
|
|
2
|
+
/**
|
|
3
|
+
* @file SwaggerUIMapper.ts
|
|
4
|
+
* @description Utility class for mapping OpenAPI properties and formats into MetaUI IUIDirectives.
|
|
5
|
+
*/
|
|
6
|
+
import { IUIDirective } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
7
|
+
export class SwaggerUIMapper {
|
|
8
|
+
/**
|
|
9
|
+
* Evaluates an OpenAPI property definition and constructs a MetaUI IUIDirective block.
|
|
10
|
+
* Extracts labels from title/description, maps readOnly state, and assigns
|
|
11
|
+
* specific Fiori widgets based on the OpenAPI 'format' property.
|
|
12
|
+
*
|
|
13
|
+
* @param {any} swaggerProp The raw OpenAPI property schema.
|
|
14
|
+
* @param {string} keyName The technical JSON key of the property.
|
|
15
|
+
* @returns {IUIDirective} The constructed MetaUI UI orchestration directive.
|
|
16
|
+
*/
|
|
17
|
+
static build(swaggerProp: any, keyName: string): IUIDirective;
|
|
18
|
+
/**
|
|
19
|
+
* Generates a human-readable Title Case label from camelCase or snake_case technical keys.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} name The technical property key.
|
|
22
|
+
* @returns {string} The formatted human-readable label.
|
|
23
|
+
*/
|
|
24
|
+
private static generateLabel;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=SwaggerUIMapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerUIMapper.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,oDAAoD,CAAC;IACpE;;;OAGG;IACH,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;IAE7E,MAAa,eAAe;QACxB;;;;;;;;WAQG;eACW,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;QAgDpE;;;;;WAKG;QACH,OAAO,CAAC,MAAM,CAAC,aAAa;KAS/B;CAEA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
sap.ui.define([],function(){"use strict";class e{static build(e,a){const t={};if(e.title){t.label=e.title}else if(e.description){t.label=e.description}else{t.label=this.generateLabel(a)}if(e.readOnly===true){t.readOnly=true}if(e.format){switch(e.format){case"date-time":t.widget="datetime";break;case"date":t.widget="date";break;case"password":t.format="password";break;case"email":t.format="email";break;case"uri":t.format="url";break;case"uuid":case"ipv4":case"ipv6":case"hostname":if(!t.validators)t.validators=[];t.validators.push(e.format);break}}return t}static generateLabel(e){if(!e)return"";let a=e.replace(/([A-Z])/g," $1").replace(/_/g," ");return a.split(" ").filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim()}}var a={__esModule:true};a.SwaggerUIMapper=e;return a});
|
|
2
|
+
//# sourceMappingURL=SwaggerUIMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwaggerUIMapper.js","names":["SwaggerUIMapper","build","swaggerProp","keyName","ui","title","label","description","this","generateLabel","readOnly","format","widget","validators","push","name","spaced","replace","split","filter","w","length","map","word","charAt","toUpperCase","slice","toLowerCase","join","trim","__exports","__esModule"],"sources":["SwaggerUIMapper.ts"],"sourcesContent":["/**\n * @file SwaggerUIMapper.ts\n * @description Utility class for mapping OpenAPI properties and formats into MetaUI IUIDirectives.\n */\nimport { IUIDirective } from \"../interfaces/ISchema\";\n\nexport class SwaggerUIMapper {\n /**\n * Evaluates an OpenAPI property definition and constructs a MetaUI IUIDirective block.\n * Extracts labels from title/description, maps readOnly state, and assigns \n * specific Fiori widgets based on the OpenAPI 'format' property.\n * \n * @param {any} swaggerProp The raw OpenAPI property schema.\n * @param {string} keyName The technical JSON key of the property.\n * @returns {IUIDirective} The constructed MetaUI UI orchestration directive.\n */\n public static build(swaggerProp: any, keyName: string): IUIDirective {\n const ui: IUIDirective = {};\n\n // Labeling\n if (swaggerProp.title) {\n ui.label = swaggerProp.title;\n } else if (swaggerProp.description) {\n ui.label = swaggerProp.description;\n } else {\n ui.label = this.generateLabel(keyName);\n }\n\n // State\n if (swaggerProp.readOnly === true) {\n ui.readOnly = true;\n }\n\n // Formats to Widgets\n if (swaggerProp.format) {\n switch (swaggerProp.format) {\n case \"date-time\":\n ui.widget = \"datetime\";\n break;\n case \"date\":\n ui.widget = \"date\";\n break;\n case \"password\":\n ui.format = \"password\";\n break;\n case \"email\":\n ui.format = \"email\";\n break;\n case \"uri\":\n ui.format = \"url\";\n break;\n case \"uuid\":\n case \"ipv4\":\n case \"ipv6\":\n case \"hostname\":\n if (!ui.validators) ui.validators = [];\n ui.validators.push(swaggerProp.format);\n break;\n }\n }\n\n return ui;\n }\n\n /**\n * Generates a human-readable Title Case label from camelCase or snake_case technical keys.\n * \n * @param {string} name The technical property key.\n * @returns {string} The formatted human-readable label.\n */\n private static generateLabel(name: string): string {\n if (!name) return \"\";\n let spaced = name.replace(/([A-Z])/g, \" $1\").replace(/_/g, \" \");\n return spaced.split(' ')\n .filter(w => w.length > 0)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ')\n .trim();\n }\n}\n"],"mappings":"yCAMO,MAAMA,EAUT,YAAcC,CAAMC,EAAkBC,GAClC,MAAMC,EAAmB,CAAC,EAG1B,GAAIF,EAAYG,MAAO,CACnBD,EAAGE,MAAQJ,EAAYG,KAC3B,MAAO,GAAIH,EAAYK,YAAa,CAChCH,EAAGE,MAAQJ,EAAYK,WAC3B,KAAO,CACHH,EAAGE,MAAQE,KAAKC,cAAcN,EAClC,CAGA,GAAID,EAAYQ,WAAa,KAAM,CAC/BN,EAAGM,SAAW,IAClB,CAGA,GAAIR,EAAYS,OAAQ,CACpB,OAAQT,EAAYS,QAChB,IAAK,YACDP,EAAGQ,OAAS,WACZ,MACJ,IAAK,OACDR,EAAGQ,OAAS,OACZ,MACJ,IAAK,WACDR,EAAGO,OAAS,WACZ,MACJ,IAAK,QACDP,EAAGO,OAAS,QACZ,MACJ,IAAK,MACDP,EAAGO,OAAS,MACZ,MACJ,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,WACD,IAAKP,EAAGS,WAAYT,EAAGS,WAAa,GACpCT,EAAGS,WAAWC,KAAKZ,EAAYS,QAC/B,MAEZ,CAEA,OAAOP,CACX,CAQA,oBAAeK,CAAcM,GACzB,IAAKA,EAAM,MAAO,GAClB,IAAIC,EAASD,EAAKE,QAAQ,WAAY,OAAOA,QAAQ,KAAM,KAC3D,OAAOD,EAAOE,MAAM,KACfC,OAAOC,GAAKA,EAAEC,OAAS,GACvBC,IAAIC,GAAQA,EAAKC,OAAO,GAAGC,cAAgBF,EAAKG,MAAM,GAAGC,eACzDC,KAAK,KACLC,MACT,EACH,IAAAC,EAAA,CAAAC,WAAA,MAAAD,EAAA9B,kBAAA,OAAA8B,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SwaggerUIMapper.ts
|
|
3
|
+
* @description Utility class for mapping OpenAPI properties and formats into MetaUI IUIDirectives.
|
|
4
|
+
*/
|
|
5
|
+
import { IUIDirective } from "../interfaces/ISchema";
|
|
6
|
+
|
|
7
|
+
export class SwaggerUIMapper {
|
|
8
|
+
/**
|
|
9
|
+
* Evaluates an OpenAPI property definition and constructs a MetaUI IUIDirective block.
|
|
10
|
+
* Extracts labels from title/description, maps readOnly state, and assigns
|
|
11
|
+
* specific Fiori widgets based on the OpenAPI 'format' property.
|
|
12
|
+
*
|
|
13
|
+
* @param {any} swaggerProp The raw OpenAPI property schema.
|
|
14
|
+
* @param {string} keyName The technical JSON key of the property.
|
|
15
|
+
* @returns {IUIDirective} The constructed MetaUI UI orchestration directive.
|
|
16
|
+
*/
|
|
17
|
+
public static build(swaggerProp: any, keyName: string): IUIDirective {
|
|
18
|
+
const ui: IUIDirective = {};
|
|
19
|
+
|
|
20
|
+
// Labeling
|
|
21
|
+
if (swaggerProp.title) {
|
|
22
|
+
ui.label = swaggerProp.title;
|
|
23
|
+
} else if (swaggerProp.description) {
|
|
24
|
+
ui.label = swaggerProp.description;
|
|
25
|
+
} else {
|
|
26
|
+
ui.label = this.generateLabel(keyName);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// State
|
|
30
|
+
if (swaggerProp.readOnly === true) {
|
|
31
|
+
ui.readOnly = true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Formats to Widgets
|
|
35
|
+
if (swaggerProp.format) {
|
|
36
|
+
switch (swaggerProp.format) {
|
|
37
|
+
case "date-time":
|
|
38
|
+
ui.widget = "datetime";
|
|
39
|
+
break;
|
|
40
|
+
case "date":
|
|
41
|
+
ui.widget = "date";
|
|
42
|
+
break;
|
|
43
|
+
case "password":
|
|
44
|
+
ui.format = "password";
|
|
45
|
+
break;
|
|
46
|
+
case "email":
|
|
47
|
+
ui.format = "email";
|
|
48
|
+
break;
|
|
49
|
+
case "uri":
|
|
50
|
+
ui.format = "url";
|
|
51
|
+
break;
|
|
52
|
+
case "uuid":
|
|
53
|
+
case "ipv4":
|
|
54
|
+
case "ipv6":
|
|
55
|
+
case "hostname":
|
|
56
|
+
if (!ui.validators) ui.validators = [];
|
|
57
|
+
ui.validators.push(swaggerProp.format);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return ui;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Generates a human-readable Title Case label from camelCase or snake_case technical keys.
|
|
67
|
+
*
|
|
68
|
+
* @param {string} name The technical property key.
|
|
69
|
+
* @returns {string} The formatted human-readable label.
|
|
70
|
+
*/
|
|
71
|
+
private static generateLabel(name: string): string {
|
|
72
|
+
if (!name) return "";
|
|
73
|
+
let spaced = name.replace(/([A-Z])/g, " $1").replace(/_/g, " ");
|
|
74
|
+
return spaced.split(' ')
|
|
75
|
+
.filter(w => w.length > 0)
|
|
76
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
77
|
+
.join(' ')
|
|
78
|
+
.trim();
|
|
79
|
+
}
|
|
80
|
+
}
|