@earthranger/react-native-jsonforms-formatter 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +2 -1
- package/dist/src/common/types.d.ts +119 -0
- package/dist/src/common/types.d.ts.map +1 -0
- package/dist/src/common/types.js +4 -0
- package/dist/src/common/types.js.map +1 -0
- package/dist/src/generateUISchema.js +171 -0
- package/dist/src/generateUISchema.js.map +1 -0
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +34 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/utils/utils.d.ts +1 -0
- package/dist/src/utils/utils.d.ts.map +1 -1
- package/dist/src/utils/utils.js +170 -0
- package/dist/src/utils/utils.js.map +1 -0
- package/dist/src/v1/generateUISchema.d.ts +5 -0
- package/dist/src/v1/generateUISchema.d.ts.map +1 -0
- package/dist/src/v1/generateUISchema.js +171 -0
- package/dist/src/v1/generateUISchema.js.map +1 -0
- package/dist/src/v1/index.d.ts +3 -0
- package/dist/src/v1/index.d.ts.map +1 -0
- package/dist/src/v1/index.js +9 -0
- package/dist/src/v1/index.js.map +1 -0
- package/dist/src/v1/utils/utils.d.ts +46 -0
- package/dist/src/v1/utils/utils.d.ts.map +1 -0
- package/dist/src/v1/utils/utils.js +170 -0
- package/dist/src/v1/utils/utils.js.map +1 -0
- package/dist/src/v1/validateJsonSchema.d.ts +2 -0
- package/dist/src/v1/validateJsonSchema.d.ts.map +1 -0
- package/dist/src/v1/validateJsonSchema.js +287 -0
- package/dist/src/v1/validateJsonSchema.js.map +1 -0
- package/dist/src/v2/generateUISchema.d.ts +19 -0
- package/dist/src/v2/generateUISchema.d.ts.map +1 -0
- package/dist/src/v2/generateUISchema.js +95 -0
- package/dist/src/v2/generateUISchema.js.map +1 -0
- package/dist/src/v2/index.d.ts +3 -0
- package/dist/src/v2/index.d.ts.map +1 -0
- package/dist/src/v2/index.js +8 -0
- package/dist/src/v2/index.js.map +1 -0
- package/dist/src/v2/mockData.d.ts +4 -0
- package/dist/src/v2/mockData.d.ts.map +1 -0
- package/dist/src/v2/mockData.js +337 -0
- package/dist/src/v2/mockData.js.map +1 -0
- package/dist/src/v2/utils.d.ts +34 -0
- package/dist/src/v2/utils.d.ts.map +1 -0
- package/dist/src/v2/utils.js +162 -0
- package/dist/src/v2/utils.js.map +1 -0
- package/dist/src/validateJsonSchema.d.ts.map +1 -1
- package/dist/src/validateJsonSchema.js +287 -0
- package/dist/src/validateJsonSchema.js.map +1 -0
- package/package.json +14 -3
- package/dist/common/mockData/formatterMockData.d.ts +0 -51
- package/dist/common/mockData/formatterMockData.d.ts.map +0 -1
- package/dist/test/JsonFormatter.test.d.ts +0 -2
- package/dist/test/JsonFormatter.test.d.ts.map +0 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.traverseSchema = exports.normalizeDecimalSeparators = exports.isString = exports.isSchemaFieldSet = exports.isRequiredProperty = exports.isPropertyKey = exports.isObject = exports.isInactiveChoice = exports.isFieldSet = exports.isFieldSetTitleWithoutItems = exports.isFieldSetTitle = exports.isEmptyString = exports.isDisabledChoice = exports.isCheckbox = exports.isArrayProperty = exports.hasDuplicatedItems = exports.getSchemaValidations = exports.getFieldSetTitleKey = exports.ElementDisplay = exports.PropertyFormat = exports.DateTimeFormat = exports.ENUM = exports.ARRAY_TYPE = exports.STRING_TYPE = exports.DISABLED_ENUM = exports.INACTIVE_ENUM = exports.CHECKBOXES = exports.REQUIRED_PROPERTY = exports.HELP_VALUE = exports.FIELD_SET = void 0;
|
|
13
|
+
// External Dependencies
|
|
14
|
+
var lodash_1 = require("lodash");
|
|
15
|
+
//--------------------------------------------------------------
|
|
16
|
+
// public constants
|
|
17
|
+
//--------------------------------------------------------------
|
|
18
|
+
exports.FIELD_SET = 'fieldset';
|
|
19
|
+
exports.HELP_VALUE = 'helpvalue';
|
|
20
|
+
exports.REQUIRED_PROPERTY = 'required';
|
|
21
|
+
exports.CHECKBOXES = 'checkboxes';
|
|
22
|
+
exports.INACTIVE_ENUM = 'inactive_enum';
|
|
23
|
+
exports.DISABLED_ENUM = 'inactive_titleMap';
|
|
24
|
+
exports.STRING_TYPE = 'string';
|
|
25
|
+
exports.ARRAY_TYPE = 'array';
|
|
26
|
+
exports.ENUM = 'enum';
|
|
27
|
+
//--------------------------------------------------------------
|
|
28
|
+
// public enums
|
|
29
|
+
//--------------------------------------------------------------
|
|
30
|
+
var DateTimeFormat;
|
|
31
|
+
(function (DateTimeFormat) {
|
|
32
|
+
DateTimeFormat["DateTime"] = "date-time";
|
|
33
|
+
DateTimeFormat["Date"] = "date";
|
|
34
|
+
})(DateTimeFormat || (exports.DateTimeFormat = DateTimeFormat = {}));
|
|
35
|
+
var PropertyFormat;
|
|
36
|
+
(function (PropertyFormat) {
|
|
37
|
+
PropertyFormat["DateTime"] = "date-time";
|
|
38
|
+
PropertyFormat["MultiSelect"] = "multiselect";
|
|
39
|
+
PropertyFormat["RepeatableField"] = "repeatable-field";
|
|
40
|
+
PropertyFormat["FormLabel"] = "form-label";
|
|
41
|
+
})(PropertyFormat || (exports.PropertyFormat = PropertyFormat = {}));
|
|
42
|
+
var ElementDisplay;
|
|
43
|
+
(function (ElementDisplay) {
|
|
44
|
+
ElementDisplay["Header"] = "header";
|
|
45
|
+
})(ElementDisplay || (exports.ElementDisplay = ElementDisplay = {}));
|
|
46
|
+
//--------------------------------------------------------------
|
|
47
|
+
// public functions
|
|
48
|
+
//--------------------------------------------------------------
|
|
49
|
+
var getFieldSetTitleKey = function (title) {
|
|
50
|
+
var key = title.toLowerCase().replace(/[\s\\/\\%]/gi, '_');
|
|
51
|
+
return "fieldset__title_".concat(key);
|
|
52
|
+
};
|
|
53
|
+
exports.getFieldSetTitleKey = getFieldSetTitleKey;
|
|
54
|
+
var getSchemaValidations = function (stringSchema) { return ({
|
|
55
|
+
hasCheckboxes: hasCheckboxes(stringSchema),
|
|
56
|
+
hasInactiveChoices: hasInactiveChoices(stringSchema),
|
|
57
|
+
hasDisabledChoices: hasDisabledChoices(stringSchema),
|
|
58
|
+
hasEnums: hasEnums(stringSchema),
|
|
59
|
+
}); };
|
|
60
|
+
exports.getSchemaValidations = getSchemaValidations;
|
|
61
|
+
var hasDuplicatedItems = function (items) { return (new Set(items).size !== items.length); };
|
|
62
|
+
exports.hasDuplicatedItems = hasDuplicatedItems;
|
|
63
|
+
var isArrayProperty = function (property) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
return property.type === exports.ARRAY_TYPE && !((_a = property.items) === null || _a === void 0 ? void 0 : _a.enum)
|
|
66
|
+
&& !((_b = property.items) === null || _b === void 0 ? void 0 : _b.enumNames);
|
|
67
|
+
};
|
|
68
|
+
exports.isArrayProperty = isArrayProperty;
|
|
69
|
+
var isCheckbox = function (item) { return (0, exports.isObject)(item) && item.type === exports.CHECKBOXES; };
|
|
70
|
+
exports.isCheckbox = isCheckbox;
|
|
71
|
+
var isDisabledChoice = function (item) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
return (0, exports.isObject)(item) && item.type === exports.CHECKBOXES && ((_a = item.inactive_titleMap) === null || _a === void 0 ? void 0 : _a.length) > 0
|
|
74
|
+
&& ((_b = item.titleMap) === null || _b === void 0 ? void 0 : _b.length) > 0;
|
|
75
|
+
};
|
|
76
|
+
exports.isDisabledChoice = isDisabledChoice;
|
|
77
|
+
var isEmptyString = function (value) { return (value === undefined
|
|
78
|
+
|| value === null
|
|
79
|
+
|| value.trim().length === 0); };
|
|
80
|
+
exports.isEmptyString = isEmptyString;
|
|
81
|
+
var isFieldSetTitle = function (item) { return (0, exports.isObject)(item) && item.type === exports.FIELD_SET
|
|
82
|
+
&& !(0, lodash_1.isEmpty)(item.title); };
|
|
83
|
+
exports.isFieldSetTitle = isFieldSetTitle;
|
|
84
|
+
var isFieldSetTitleWithoutItems = function (item) { return (0, exports.isObject)(item) && item.type === exports.FIELD_SET
|
|
85
|
+
&& item.items.length === 0 && !(0, lodash_1.isEmpty)(item.title); };
|
|
86
|
+
exports.isFieldSetTitleWithoutItems = isFieldSetTitleWithoutItems;
|
|
87
|
+
var isFieldSet = function (item) { return (0, exports.isObject)(item) && item.type === exports.FIELD_SET && item.items.length > 0; };
|
|
88
|
+
exports.isFieldSet = isFieldSet;
|
|
89
|
+
var isInactiveChoice = function (item) {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
return item.type === exports.STRING_TYPE
|
|
92
|
+
&& ((_a = item.enum) === null || _a === void 0 ? void 0 : _a.length) > 0 && ((_b = item.inactive_enum) === null || _b === void 0 ? void 0 : _b.length) > 0;
|
|
93
|
+
};
|
|
94
|
+
exports.isInactiveChoice = isInactiveChoice;
|
|
95
|
+
var isObject = function (item) { return item instanceof Object; };
|
|
96
|
+
exports.isObject = isObject;
|
|
97
|
+
var isPropertyKey = function (item) { return item && !(0, lodash_1.isEmpty)(item.key); };
|
|
98
|
+
exports.isPropertyKey = isPropertyKey;
|
|
99
|
+
var isRequiredProperty = function (property) { return property.required === 'true' || property.required > 0; };
|
|
100
|
+
exports.isRequiredProperty = isRequiredProperty;
|
|
101
|
+
var isSchemaFieldSet = function (definition) {
|
|
102
|
+
if (definition.length === 0) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
var fieldSet = definition.find(function (item) { return (0, exports.isObject)(item)
|
|
106
|
+
&& item && (item.type || '') === exports.FIELD_SET; });
|
|
107
|
+
return fieldSet !== undefined;
|
|
108
|
+
};
|
|
109
|
+
exports.isSchemaFieldSet = isSchemaFieldSet;
|
|
110
|
+
var isString = function (item) { return typeof item === exports.STRING_TYPE; };
|
|
111
|
+
exports.isString = isString;
|
|
112
|
+
var normalizeDecimalSeparators = function (value) {
|
|
113
|
+
// If it's already a number, return as-is
|
|
114
|
+
if (typeof value === 'number') {
|
|
115
|
+
return value;
|
|
116
|
+
}
|
|
117
|
+
// If it's not a string, return as-is
|
|
118
|
+
if (typeof value !== 'string') {
|
|
119
|
+
return value;
|
|
120
|
+
}
|
|
121
|
+
// Trim whitespace
|
|
122
|
+
var trimmedValue = value.trim();
|
|
123
|
+
// If empty string, return as-is
|
|
124
|
+
if (trimmedValue === '') {
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
// Check if it looks like a number with comma decimal separator
|
|
128
|
+
// Pattern: optional minus, digits, comma, digits (e.g., "12,34", "-5,678")
|
|
129
|
+
var commaDecimalPattern = /^-?\d+,\d+$/;
|
|
130
|
+
if (commaDecimalPattern.test(trimmedValue)) {
|
|
131
|
+
// Replace comma with period for decimal separator
|
|
132
|
+
var normalizedValue = trimmedValue.replace(',', '.');
|
|
133
|
+
// Validate that the result is a valid number
|
|
134
|
+
var numValue = parseFloat(normalizedValue);
|
|
135
|
+
if (!isNaN(numValue)) {
|
|
136
|
+
return normalizedValue;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Return original value if no conversion needed or possible
|
|
140
|
+
return value;
|
|
141
|
+
};
|
|
142
|
+
exports.normalizeDecimalSeparators = normalizeDecimalSeparators;
|
|
143
|
+
// Helper function to recursively traverse and process the schema
|
|
144
|
+
var traverseSchema = function (schema, processor, path) {
|
|
145
|
+
if (path === void 0) { path = []; }
|
|
146
|
+
if (typeof schema !== 'object' || schema === null) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
processor(schema, path);
|
|
150
|
+
if (Array.isArray(schema)) {
|
|
151
|
+
schema.forEach(function (item, index) {
|
|
152
|
+
return (0, exports.traverseSchema)(item, processor, __spreadArray(__spreadArray([], path, true), [index.toString()], false));
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
Object.entries(schema).forEach(function (_a) {
|
|
157
|
+
var key = _a[0], value = _a[1];
|
|
158
|
+
return (0, exports.traverseSchema)(value, processor, __spreadArray(__spreadArray([], path, true), [key], false));
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
exports.traverseSchema = traverseSchema;
|
|
163
|
+
//--------------------------------------------------------------
|
|
164
|
+
// private functions
|
|
165
|
+
//--------------------------------------------------------------
|
|
166
|
+
var hasCheckboxes = function (stringSchema) { return stringSchema.includes(exports.CHECKBOXES); };
|
|
167
|
+
var hasInactiveChoices = function (stringSchema) { return stringSchema.includes(exports.INACTIVE_ENUM); };
|
|
168
|
+
var hasDisabledChoices = function (stringSchema) { return stringSchema.includes(exports.DISABLED_ENUM); };
|
|
169
|
+
var hasEnums = function (stringSchema) { return stringSchema.includes(exports.ENUM); };
|
|
170
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/v1/utils/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateJsonSchema.d.ts","sourceRoot":"","sources":["../../../src/v1/validateJsonSchema.ts"],"names":[],"mappings":"AA+RA,eAAO,MAAM,kBAAkB,iBAAkB,MAAM,QAmCtD,CAAC"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.validateJSONSchema = void 0;
|
|
24
|
+
// Internal Dependencies
|
|
25
|
+
var lodash_1 = require("lodash");
|
|
26
|
+
var utils_1 = require("./utils/utils");
|
|
27
|
+
var specialCharactersInKey = /[^\w\n\s_"](?=[^:\n\s{}[]]*:[\t\n\s]*(\{|\[)+)/g;
|
|
28
|
+
var emptyEnumRegex = '\\"enum\\"\\n*\\s*\\:\\n*\\s*\\[\\n*\\s*\\]';
|
|
29
|
+
var emptyEnumValue = '"enum": ["0"]';
|
|
30
|
+
var emptyEnumNamesRegex = '\\"enumNames\\"\\n*\\s*\\:\\n*\\s*\\{\\n*\\s*\\}';
|
|
31
|
+
var emptyEnumNamesValue = '"enumNames": {"0":"No Options"}';
|
|
32
|
+
var emptyTitleMapRegex = '\\"titleMap\\"\\n*\\s*\\:\\n*\\s*\\[\\n*\\s*\\]';
|
|
33
|
+
var emptyTitleMapValue = '"titleMap": [{"value":"no_option", "name":"No Option"}]';
|
|
34
|
+
var minParamRegex = /"minimum"(?:[^\\"]|\\\\|\\")*"\d+\.*\d*"/g;
|
|
35
|
+
var maxParamRegex = /"maximum"(?:[^\\"]|\\\\|\\")*"\d+\.*\d*"/g;
|
|
36
|
+
var doubleSingleQuotesRegex = /"(?=[^"]*(?:"[^"]*)?$)/g;
|
|
37
|
+
var getSchemaForCheckbox = function (definition, title, required, defaultValue) { return (__assign(__assign(__assign({ type: 'array', uniqueItems: true, isHidden: false }, required && { required: required }), { title: title || definition.title, items: {
|
|
38
|
+
enum: definition.titleMap.map(function (item) { return item.value; }),
|
|
39
|
+
enumNames: definition.titleMap.map(function (item) { return item.name; }),
|
|
40
|
+
} }), defaultValue && { default: defaultValue })); };
|
|
41
|
+
var getTitleProperty = function (title) { return ({
|
|
42
|
+
type: 'string',
|
|
43
|
+
readOnly: true,
|
|
44
|
+
isHidden: false,
|
|
45
|
+
display: utils_1.ElementDisplay.Header,
|
|
46
|
+
title: title,
|
|
47
|
+
}); };
|
|
48
|
+
var getPropertyVisibility = function (property) { return (property === null || property === void 0 ? void 0 : property.isHidden) || false; };
|
|
49
|
+
var cleanUpRequiredProperty = function (schema) {
|
|
50
|
+
// Store the original root-level required array if it exists
|
|
51
|
+
var originalRequired = Array.isArray(schema.required) ? __spreadArray([], schema.required, true) : null;
|
|
52
|
+
(0, utils_1.traverseSchema)(schema, function (node, path) {
|
|
53
|
+
if (node.type === 'object' && node.properties) {
|
|
54
|
+
var localRequired_1 = [];
|
|
55
|
+
Object.entries(node.properties).forEach(function (_a) {
|
|
56
|
+
var key = _a[0], property = _a[1];
|
|
57
|
+
if ((0, utils_1.isRequiredProperty)(property)) {
|
|
58
|
+
localRequired_1.push(key);
|
|
59
|
+
delete property.required;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// Only modify required array if we found inline required properties
|
|
63
|
+
if (!(0, lodash_1.isEmpty)(localRequired_1)) {
|
|
64
|
+
// If this is the root schema and there was an original required array, merge them
|
|
65
|
+
if (path.length === 0 && originalRequired) {
|
|
66
|
+
var mergedRequired = __spreadArray(__spreadArray([], originalRequired, true), localRequired_1, true);
|
|
67
|
+
node.required = Array.from(new Set(mergedRequired));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
node.required = localRequired_1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (path.length > 0 && node.required) {
|
|
74
|
+
// Only delete required array for nested objects, not the root
|
|
75
|
+
delete node.required;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return schema;
|
|
80
|
+
};
|
|
81
|
+
var formatDefinitionInSchema = function (schema) {
|
|
82
|
+
if (schema.schema.definition) {
|
|
83
|
+
var definition = schema.schema.definition;
|
|
84
|
+
delete schema.schema.definition;
|
|
85
|
+
schema.definition = definition;
|
|
86
|
+
return schema;
|
|
87
|
+
}
|
|
88
|
+
return schema;
|
|
89
|
+
};
|
|
90
|
+
var formatSchemaRepeatableFieldLayout = function (schema) {
|
|
91
|
+
var properties = {};
|
|
92
|
+
var headerCount = 0;
|
|
93
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
94
|
+
for (var _i = 0, _a = schema.definition; _i < _a.length; _i++) {
|
|
95
|
+
var item = _a[_i];
|
|
96
|
+
if ((0, utils_1.isString)(item)) {
|
|
97
|
+
properties[item] = schema.schema.properties[item];
|
|
98
|
+
delete schema.schema.properties[item];
|
|
99
|
+
}
|
|
100
|
+
else if ((0, utils_1.isObject)(item)) {
|
|
101
|
+
if (item.helpvalue) {
|
|
102
|
+
var property = "help_value_".concat(headerCount);
|
|
103
|
+
headerCount += 1;
|
|
104
|
+
properties[property] = getTitleProperty((item.helpvalue || '').replace(/(<.+?>)/g, ''));
|
|
105
|
+
}
|
|
106
|
+
else if (item.key) {
|
|
107
|
+
properties[item.key] = schema.schema.properties[item.key];
|
|
108
|
+
delete schema.schema.properties[item.key];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
schema.schema.properties = Object.assign(properties, schema.schema.properties);
|
|
113
|
+
};
|
|
114
|
+
// eslint-disable-next-line max-len
|
|
115
|
+
var cleanUpInactiveEnumChoice = function (property) { return property.enum.filter(function (choice) { return !property.inactive_enum.includes(choice); }); };
|
|
116
|
+
// eslint-disable-next-line max-len
|
|
117
|
+
var cleanUpDisabledEnumChoice = function (definitionItem) { return definitionItem.titleMap.filter(function (item) { return !definitionItem.inactive_titleMap.includes(item.value); }); };
|
|
118
|
+
var validateJSON = function (stringSchema) {
|
|
119
|
+
if (stringSchema.match(specialCharactersInKey) !== null) {
|
|
120
|
+
throw Error('Special characters not supported in JSON Schema');
|
|
121
|
+
}
|
|
122
|
+
// Invalid double quotes
|
|
123
|
+
stringSchema = stringSchema.replace(/([“”])/g, '"');
|
|
124
|
+
// Empty enum choices
|
|
125
|
+
stringSchema = stringSchema.replace(new RegExp(emptyEnumRegex, 'g'), emptyEnumValue);
|
|
126
|
+
// Empty enumNames choices
|
|
127
|
+
stringSchema = stringSchema.replace(new RegExp(emptyEnumNamesRegex, 'g'), emptyEnumNamesValue);
|
|
128
|
+
// Empty titleMap choices
|
|
129
|
+
stringSchema = stringSchema.replace(new RegExp(emptyTitleMapRegex, 'g'), emptyTitleMapValue);
|
|
130
|
+
// Numeric ranges
|
|
131
|
+
stringSchema = stringSchema.replace(minParamRegex, function (match) { return match.replace(doubleSingleQuotesRegex, ''); });
|
|
132
|
+
stringSchema = stringSchema.replace(maxParamRegex, function (match) { return match.replace(doubleSingleQuotesRegex, ''); });
|
|
133
|
+
return stringSchema;
|
|
134
|
+
};
|
|
135
|
+
var cleanUpJTD = function (validations, schema) {
|
|
136
|
+
var _a;
|
|
137
|
+
if ((0, utils_1.isSchemaFieldSet)(schema.definition)) {
|
|
138
|
+
validateFieldSetDefinition(validations, schema);
|
|
139
|
+
}
|
|
140
|
+
else if (((_a = schema.definition) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
141
|
+
for (var _i = 0, _b = schema.definition; _i < _b.length; _i++) {
|
|
142
|
+
var item = _b[_i];
|
|
143
|
+
validateDefinition(validations, item, schema);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
var validateFieldSetDefinition = function (validations, schema) {
|
|
148
|
+
for (var _i = 0, _a = schema.definition; _i < _a.length; _i++) {
|
|
149
|
+
var item = _a[_i];
|
|
150
|
+
switch (true) {
|
|
151
|
+
case (0, utils_1.isString)(item):
|
|
152
|
+
break;
|
|
153
|
+
// Create field set header
|
|
154
|
+
case (0, utils_1.isFieldSetTitle)(item):
|
|
155
|
+
{
|
|
156
|
+
var key = (0, utils_1.getFieldSetTitleKey)(item.title);
|
|
157
|
+
schema.schema.properties[key] = getTitleProperty(item.title);
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
// Format field-set sub-items
|
|
161
|
+
case (0, utils_1.isFieldSet)(item):
|
|
162
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
163
|
+
for (var _b = 0, _c = item.items; _b < _c.length; _b++) {
|
|
164
|
+
var subItem = _c[_b];
|
|
165
|
+
validateDefinition(validations, subItem, schema, item);
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
default:
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
var validateDefinition = function (validations, item, schema, parentItem) {
|
|
174
|
+
var hasCheckboxes = validations.hasCheckboxes, hasDisabledChoices = validations.hasDisabledChoices;
|
|
175
|
+
// Set property visibility
|
|
176
|
+
if ((0, utils_1.isString)(item) && schema.schema.properties[item]) {
|
|
177
|
+
schema.schema.properties[item].isHidden = getPropertyVisibility(schema.schema.properties[item]);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Set property visibility
|
|
181
|
+
if (((0, utils_1.isObject)(item) || (0, utils_1.isPropertyKey)(item))
|
|
182
|
+
&& item.key
|
|
183
|
+
&& schema.schema.properties[item.key]) {
|
|
184
|
+
// eslint-disable-next-line max-len
|
|
185
|
+
schema.schema.properties[item.key].isHidden = getPropertyVisibility(schema.schema.properties[item.key]);
|
|
186
|
+
}
|
|
187
|
+
// Clean up disabled choices
|
|
188
|
+
if (hasDisabledChoices && (0, utils_1.isDisabledChoice)(item)) {
|
|
189
|
+
if (parentItem) {
|
|
190
|
+
var parentIndex = schema.definition.indexOf(parentItem);
|
|
191
|
+
var childIndex = schema.definition[parentIndex].items.indexOf(item);
|
|
192
|
+
schema.definition[parentIndex].items[childIndex].titleMap = cleanUpDisabledEnumChoice(item);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// eslint-disable-next-line max-len
|
|
196
|
+
schema.definition[schema.definition.indexOf(item)].titleMap = cleanUpDisabledEnumChoice(item);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Generate checkbox data in schema
|
|
200
|
+
if (hasCheckboxes && (0, utils_1.isCheckbox)(item)) {
|
|
201
|
+
schema.schema.properties[item.key] = getSchemaForCheckbox(item, schema.schema.properties[item.key].title || '', schema.schema.properties[item.key].required || false, schema.schema.properties[item.key].default || false);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
var normalizeNumberFields = function (schema) {
|
|
206
|
+
(0, utils_1.traverseSchema)(schema, function (node) {
|
|
207
|
+
if (node.type === 'object' && node.properties) {
|
|
208
|
+
Object.entries(node.properties).forEach(function (_a) {
|
|
209
|
+
var property = _a[1];
|
|
210
|
+
if (property.type === 'number') {
|
|
211
|
+
// Normalize default values
|
|
212
|
+
if (property.default !== undefined) {
|
|
213
|
+
property.default = (0, utils_1.normalizeDecimalSeparators)(property.default);
|
|
214
|
+
}
|
|
215
|
+
// Normalize minimum values
|
|
216
|
+
if (property.minimum !== undefined) {
|
|
217
|
+
property.minimum = (0, utils_1.normalizeDecimalSeparators)(property.minimum);
|
|
218
|
+
}
|
|
219
|
+
// Normalize maximum values
|
|
220
|
+
if (property.maximum !== undefined) {
|
|
221
|
+
property.maximum = (0, utils_1.normalizeDecimalSeparators)(property.maximum);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
return schema;
|
|
228
|
+
};
|
|
229
|
+
var validateSchema = function (validations, schema) {
|
|
230
|
+
var hasInactiveChoices = validations.hasInactiveChoices, hasEnums = validations.hasEnums;
|
|
231
|
+
if (hasInactiveChoices) {
|
|
232
|
+
for (var _i = 0, _a = Object.keys(schema.schema.properties); _i < _a.length; _i++) {
|
|
233
|
+
var key = _a[_i];
|
|
234
|
+
var property = schema.schema.properties[key];
|
|
235
|
+
// Clean up inactive choices
|
|
236
|
+
if ((0, utils_1.isInactiveChoice)(property)) {
|
|
237
|
+
schema.schema.properties[key].enum = cleanUpInactiveEnumChoice(property);
|
|
238
|
+
if ((0, lodash_1.isEmpty)(schema.schema.properties[key].enum.length)) {
|
|
239
|
+
schema.schema.properties[key].enum = ['0'];
|
|
240
|
+
schema.schema.properties[key].enumNames = { 0: 'No Options' };
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (hasEnums) {
|
|
246
|
+
for (var _b = 0, _c = Object.keys(schema.schema.properties); _b < _c.length; _b++) {
|
|
247
|
+
var key = _c[_b];
|
|
248
|
+
// Detect duplicated enum items
|
|
249
|
+
if (
|
|
250
|
+
// schema.schema.properties[key].enum?.length > 0
|
|
251
|
+
!(0, lodash_1.isEmpty)(schema.schema.properties[key].enum)
|
|
252
|
+
&& (0, utils_1.hasDuplicatedItems)(schema.schema.properties[key].enum)) {
|
|
253
|
+
throw new Error('Duplicated enum items');
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
var validateJSONSchema = function (stringSchema) {
|
|
259
|
+
var _a;
|
|
260
|
+
// Validate/Remove JSON issues
|
|
261
|
+
stringSchema = validateJSON(stringSchema);
|
|
262
|
+
var schema = JSON.parse(stringSchema);
|
|
263
|
+
// $schema and id make JSON forms crash
|
|
264
|
+
delete schema.schema.$schema;
|
|
265
|
+
delete schema.schema.id;
|
|
266
|
+
// Definition array should be at the same level as a schema object
|
|
267
|
+
formatDefinitionInSchema(schema);
|
|
268
|
+
var schemaValidations = (0, utils_1.getSchemaValidations)(stringSchema);
|
|
269
|
+
// Normalize decimal separators in number fields
|
|
270
|
+
normalizeNumberFields(schema.schema);
|
|
271
|
+
validateSchema(schemaValidations, schema);
|
|
272
|
+
// JSON forms library does not support JSON Type Definition JTD
|
|
273
|
+
cleanUpJTD(schemaValidations, schema);
|
|
274
|
+
if (stringSchema.includes(utils_1.HELP_VALUE)) {
|
|
275
|
+
formatSchemaRepeatableFieldLayout(schema);
|
|
276
|
+
}
|
|
277
|
+
if (stringSchema.includes(utils_1.REQUIRED_PROPERTY)) {
|
|
278
|
+
// Check for duplicated required properties in the original schema first
|
|
279
|
+
if (((_a = schema.schema.required) === null || _a === void 0 ? void 0 : _a.length) > 0 && (0, utils_1.hasDuplicatedItems)(schema.schema.required)) {
|
|
280
|
+
throw new Error('Duplicated required properties');
|
|
281
|
+
}
|
|
282
|
+
schema.schema = cleanUpRequiredProperty(schema.schema);
|
|
283
|
+
}
|
|
284
|
+
return schema;
|
|
285
|
+
};
|
|
286
|
+
exports.validateJSONSchema = validateJSONSchema;
|
|
287
|
+
//# sourceMappingURL=validateJsonSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateJsonSchema.js","sourceRoot":"","sources":["../../../src/v1/validateJsonSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { V2Schema, V2Property, JSONFormsUISchema } from '../common/types';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a JSONForms-compatible UI schema from a V2 schema format
|
|
4
|
+
* Optimized for React Native single-column layouts
|
|
5
|
+
*
|
|
6
|
+
* @param schema - V2 schema with json and ui properties
|
|
7
|
+
* @returns JSONForms UI schema for React Native
|
|
8
|
+
*/
|
|
9
|
+
export declare const generateUISchema: (schema: V2Schema) => JSONFormsUISchema;
|
|
10
|
+
/**
|
|
11
|
+
* Generates UI schema for a specific collection field
|
|
12
|
+
* Used when rendering collection items
|
|
13
|
+
*
|
|
14
|
+
* @param collectionProperty - The collection property from V2 schema
|
|
15
|
+
* @param collectionUI - The UI configuration for the collection
|
|
16
|
+
* @returns JSONForms UI schema for collection items
|
|
17
|
+
*/
|
|
18
|
+
export declare const generateCollectionUISchema: (collectionProperty: V2Property) => JSONFormsUISchema;
|
|
19
|
+
//# sourceMappingURL=generateUISchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateUISchema.d.ts","sourceRoot":"","sources":["../../../src/v2/generateUISchema.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,UAAU,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAC;AASzB;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,WAAY,QAAQ,KAAG,iBAkCnD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,uBACjB,UAAU,KAC7B,iBAiDF,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// V2 generateUISchema implementation for JSONForms React Native
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.generateCollectionUISchema = exports.generateUISchema = void 0;
|
|
5
|
+
var utils_1 = require("./utils");
|
|
6
|
+
/**
|
|
7
|
+
* Generates a JSONForms-compatible UI schema from a V2 schema format
|
|
8
|
+
* Optimized for React Native single-column layouts
|
|
9
|
+
*
|
|
10
|
+
* @param schema - V2 schema with json and ui properties
|
|
11
|
+
* @returns JSONForms UI schema for React Native
|
|
12
|
+
*/
|
|
13
|
+
var generateUISchema = function (schema) {
|
|
14
|
+
// Get all visible (non-deprecated) fields
|
|
15
|
+
var visibleFields = (0, utils_1.getVisibleFields)(schema);
|
|
16
|
+
// Note: fieldControls created in section processing below
|
|
17
|
+
// Group fields by their parent sections
|
|
18
|
+
var fieldsBySection = (0, utils_1.groupFieldsBySection)(visibleFields, schema.ui.sections);
|
|
19
|
+
// Create section layouts in the specified order
|
|
20
|
+
var sectionLayouts = [];
|
|
21
|
+
schema.ui.order.forEach(function (sectionId) {
|
|
22
|
+
var section = schema.ui.sections[sectionId];
|
|
23
|
+
var sectionFields = fieldsBySection[sectionId] || [];
|
|
24
|
+
// Only create layout if section is active and has fields
|
|
25
|
+
if ((section === null || section === void 0 ? void 0 : section.isActive) && sectionFields.length > 0) {
|
|
26
|
+
var sectionControls = sectionFields.map(function (_a) {
|
|
27
|
+
var name = _a.name, property = _a.property, uiField = _a.uiField;
|
|
28
|
+
return (0, utils_1.createControl)(name, property, uiField);
|
|
29
|
+
});
|
|
30
|
+
var sectionLayout = (0, utils_1.createSectionLayout)(sectionId, section, sectionControls);
|
|
31
|
+
sectionLayouts.push(sectionLayout);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
// For React Native, always use a single vertical layout
|
|
35
|
+
var uiSchema = {
|
|
36
|
+
type: 'VerticalLayout',
|
|
37
|
+
elements: sectionLayouts
|
|
38
|
+
};
|
|
39
|
+
return uiSchema;
|
|
40
|
+
};
|
|
41
|
+
exports.generateUISchema = generateUISchema;
|
|
42
|
+
/**
|
|
43
|
+
* Generates UI schema for a specific collection field
|
|
44
|
+
* Used when rendering collection items
|
|
45
|
+
*
|
|
46
|
+
* @param collectionProperty - The collection property from V2 schema
|
|
47
|
+
* @param collectionUI - The UI configuration for the collection
|
|
48
|
+
* @returns JSONForms UI schema for collection items
|
|
49
|
+
*/
|
|
50
|
+
var generateCollectionUISchema = function (collectionProperty) {
|
|
51
|
+
var _a;
|
|
52
|
+
if (collectionProperty.type !== 'array' || !((_a = collectionProperty.items) === null || _a === void 0 ? void 0 : _a.properties)) {
|
|
53
|
+
throw new Error('Collection property must be an array with item properties');
|
|
54
|
+
}
|
|
55
|
+
var itemProperties = collectionProperty.items.properties;
|
|
56
|
+
var itemControls = [];
|
|
57
|
+
// Create controls for collection item properties
|
|
58
|
+
Object.entries(itemProperties).forEach(function (_a) {
|
|
59
|
+
var fieldName = _a[0], property = _a[1];
|
|
60
|
+
// Cast property to V2BaseProperty since nested properties don't have deprecated/title
|
|
61
|
+
var baseProperty = property;
|
|
62
|
+
// Collection items don't have separate UI field definitions in the example
|
|
63
|
+
// We'll create basic controls based on the property type
|
|
64
|
+
var control = {
|
|
65
|
+
type: 'Control',
|
|
66
|
+
scope: "#/properties/".concat(fieldName),
|
|
67
|
+
label: baseProperty.title || fieldName,
|
|
68
|
+
options: {}
|
|
69
|
+
};
|
|
70
|
+
// Set basic options based on property type
|
|
71
|
+
switch (baseProperty.type) {
|
|
72
|
+
case 'string':
|
|
73
|
+
if (baseProperty.format === 'uri') {
|
|
74
|
+
control.options.format = 'file';
|
|
75
|
+
control.options.accept = 'image/*';
|
|
76
|
+
}
|
|
77
|
+
break;
|
|
78
|
+
case 'number':
|
|
79
|
+
control.options.format = 'number';
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (baseProperty.description) {
|
|
83
|
+
control.options.description = baseProperty.description;
|
|
84
|
+
}
|
|
85
|
+
itemControls.push(control);
|
|
86
|
+
});
|
|
87
|
+
// For React Native collections, use vertical layout
|
|
88
|
+
var uiSchema = {
|
|
89
|
+
type: 'VerticalLayout',
|
|
90
|
+
elements: itemControls
|
|
91
|
+
};
|
|
92
|
+
return uiSchema;
|
|
93
|
+
};
|
|
94
|
+
exports.generateCollectionUISchema = generateCollectionUISchema;
|
|
95
|
+
//# sourceMappingURL=generateUISchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateUISchema.js","sourceRoot":"","sources":["../../../src/v2/generateUISchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGlF,YAAY,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,iBAAiB,EAClB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateCollectionUISchema = exports.generateUISchema = void 0;
|
|
4
|
+
// V2 API exports - new JSONForms v2 schema format
|
|
5
|
+
var generateUISchema_1 = require("./generateUISchema");
|
|
6
|
+
Object.defineProperty(exports, "generateUISchema", { enumerable: true, get: function () { return generateUISchema_1.generateUISchema; } });
|
|
7
|
+
Object.defineProperty(exports, "generateCollectionUISchema", { enumerable: true, get: function () { return generateUISchema_1.generateCollectionUISchema; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v2/index.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAClD,uDAAkF;AAAzE,oHAAA,gBAAgB,OAAA;AAAE,8HAAA,0BAA0B,OAAA"}
|