@earthranger/react-native-jsonforms-formatter 2.0.0-beta.1 → 2.0.0-beta.11

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.
Files changed (63) hide show
  1. package/dist/bundle.js +1 -2
  2. package/dist/common/schemaUtils.d.ts +23 -0
  3. package/dist/common/schemaUtils.d.ts.map +1 -0
  4. package/dist/common/schemaUtils.js +56 -0
  5. package/dist/common/schemaUtils.js.map +1 -0
  6. package/dist/{src/common → common}/types.d.ts +5 -0
  7. package/dist/common/types.d.ts.map +1 -0
  8. package/dist/common/types.js +2 -0
  9. package/dist/common/types.js.map +1 -0
  10. package/dist/index.d.ts +5 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +9 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/v1/generateUISchema.d.ts.map +1 -0
  15. package/dist/v1/generateUISchema.js +181 -0
  16. package/dist/v1/generateUISchema.js.map +1 -0
  17. package/dist/v1/index.d.ts.map +1 -0
  18. package/dist/v1/index.js +3 -0
  19. package/dist/v1/index.js.map +1 -0
  20. package/dist/v1/utils/utils.d.ts.map +1 -0
  21. package/dist/v1/utils/utils.js +149 -0
  22. package/dist/v1/utils/utils.js.map +1 -0
  23. package/dist/v1/validateJsonSchema.d.ts.map +1 -0
  24. package/dist/v1/validateJsonSchema.js +286 -0
  25. package/dist/v1/validateJsonSchema.js.map +1 -0
  26. package/dist/v1.d.ts.map +1 -0
  27. package/dist/v1.js +3 -0
  28. package/dist/v1.js.map +1 -0
  29. package/dist/{src/v2 → v2}/generateUISchema.d.ts +8 -0
  30. package/dist/v2/generateUISchema.d.ts.map +1 -0
  31. package/dist/v2/generateUISchema.js +171 -0
  32. package/dist/v2/generateUISchema.js.map +1 -0
  33. package/dist/v2/index.d.ts +3 -0
  34. package/dist/v2/index.d.ts.map +1 -0
  35. package/dist/v2/index.js +3 -0
  36. package/dist/v2/index.js.map +1 -0
  37. package/dist/v2/mockData.d.ts.map +1 -0
  38. package/dist/v2/mockData.js +343 -0
  39. package/dist/v2/mockData.js.map +1 -0
  40. package/dist/v2/utils.d.ts.map +1 -0
  41. package/dist/v2/utils.js +253 -0
  42. package/dist/v2/utils.js.map +1 -0
  43. package/package.json +16 -10
  44. package/dist/src/common/types.d.ts.map +0 -1
  45. package/dist/src/index.d.ts +0 -4
  46. package/dist/src/index.d.ts.map +0 -1
  47. package/dist/src/v1/generateUISchema.d.ts.map +0 -1
  48. package/dist/src/v1/index.d.ts.map +0 -1
  49. package/dist/src/v1/utils/utils.d.ts.map +0 -1
  50. package/dist/src/v1/validateJsonSchema.d.ts.map +0 -1
  51. package/dist/src/v1.d.ts.map +0 -1
  52. package/dist/src/v2/generateUISchema.d.ts.map +0 -1
  53. package/dist/src/v2/index.d.ts +0 -3
  54. package/dist/src/v2/index.d.ts.map +0 -1
  55. package/dist/src/v2/mockData.d.ts.map +0 -1
  56. package/dist/src/v2/utils.d.ts.map +0 -1
  57. /package/dist/{src/v1 → v1}/generateUISchema.d.ts +0 -0
  58. /package/dist/{src/v1 → v1}/index.d.ts +0 -0
  59. /package/dist/{src/v1 → v1}/utils/utils.d.ts +0 -0
  60. /package/dist/{src/v1 → v1}/validateJsonSchema.d.ts +0 -0
  61. /package/dist/{src/v1.d.ts → v1.d.ts} +0 -0
  62. /package/dist/{src/v2 → v2}/mockData.d.ts +0 -0
  63. /package/dist/{src/v2 → v2}/utils.d.ts +0 -0
@@ -0,0 +1,181 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ // External Dependencies
13
+ import { isEmpty } from 'lodash-es';
14
+ // Internal Dependencies
15
+ import { DateTimeFormat, ElementDisplay, getFieldSetTitleKey, isEmptyString, isFieldSet, isFieldSetTitleWithoutItems, isPropertyKey, isSchemaFieldSet, PropertyFormat, } from './utils/utils';
16
+ // Enums
17
+ var SchemaTypes;
18
+ (function (SchemaTypes) {
19
+ SchemaTypes["Number"] = "number";
20
+ SchemaTypes["String"] = "string";
21
+ SchemaTypes["Array"] = "array";
22
+ })(SchemaTypes || (SchemaTypes = {}));
23
+ var getBaseUIObject = function (key, title, options) {
24
+ if (options === void 0) { options = {}; }
25
+ return (__assign({ type: 'Control', scope: "#/properties/".concat(key), label: title }, options && { options: options }));
26
+ };
27
+ var getDateTimeControlFormat = function (key, jsonSchema, fieldSetItem) {
28
+ if (fieldSetItem === void 0) { fieldSetItem = undefined; }
29
+ try {
30
+ var definitionObject = fieldSetItem
31
+ || jsonSchema.definition.find(function (object) { return (object.key === key); });
32
+ if (definitionObject.fieldHtmlClass === 'date-time-picker json-schema'
33
+ || (definitionObject && (definitionObject.type || '') === 'datetime')) {
34
+ if (jsonSchema.schema.properties[key].format === 'date') {
35
+ return DateTimeFormat.Date;
36
+ }
37
+ return DateTimeFormat.DateTime;
38
+ }
39
+ if (definitionObject.fieldHtmlClass === 'date-picker json-schema'
40
+ || jsonSchema.schema.properties[key].format === 'date') {
41
+ return DateTimeFormat.Date;
42
+ }
43
+ }
44
+ catch (_a) {
45
+ return undefined;
46
+ }
47
+ return undefined;
48
+ };
49
+ var getCheckboxDefinition = function (key, jsonSchema) {
50
+ try {
51
+ var definitionObject = jsonSchema.definition.find(function (object) { return (object.key === key); });
52
+ if (definitionObject.fieldHtmlClass === 'json-schema-checkbox-wrapper' || definitionObject.type === 'checkboxes') {
53
+ return definitionObject;
54
+ }
55
+ return undefined;
56
+ }
57
+ catch (_a) {
58
+ return undefined;
59
+ }
60
+ return undefined;
61
+ };
62
+ export var generateUISchema = function (schema) {
63
+ var elements = [];
64
+ if (isSchemaFieldSet(schema.definition)) {
65
+ elements.push.apply(elements, getFieldSetsElements(schema));
66
+ }
67
+ else {
68
+ Object.keys(schema.schema.properties).forEach(function (key) {
69
+ var element = getUIElement(key, schema);
70
+ if (!isEmpty(element)) {
71
+ elements.push(element);
72
+ }
73
+ });
74
+ }
75
+ return {
76
+ type: 'Category',
77
+ elements: elements,
78
+ };
79
+ };
80
+ var getFieldSetsElements = function (schema) {
81
+ var elements = [];
82
+ schema.definition.forEach(function (item) {
83
+ if (typeof item === 'string') {
84
+ elements.push(getBaseUIObject(item, schema.schema.properties[item].title || ''));
85
+ }
86
+ else if (item instanceof Object) {
87
+ switch (true) {
88
+ case isFieldSetTitleWithoutItems(item):
89
+ elements.push(getBaseUIObject(getFieldSetTitleKey(item.title), item.title, getElementOptions(PropertyFormat.FormLabel)));
90
+ break;
91
+ case isFieldSet(item):
92
+ if (item.title) {
93
+ elements.push(getBaseUIObject(getFieldSetTitleKey(item.title), item.title, getElementOptions(PropertyFormat.FormLabel)));
94
+ }
95
+ item.items.forEach(function (value) {
96
+ if (value instanceof Object) {
97
+ var element_1 = getUIElement(value.key || '', schema, value);
98
+ if (element_1) {
99
+ elements.push(element_1);
100
+ }
101
+ }
102
+ else if (typeof value === 'string') {
103
+ var element_2 = getUIElement(value, schema);
104
+ if (element_2) {
105
+ elements.push(element_2);
106
+ }
107
+ }
108
+ });
109
+ break;
110
+ case isPropertyKey(item):
111
+ // eslint-disable-next-line no-case-declarations
112
+ var element = getUIElement(item.key, schema);
113
+ if (element) {
114
+ elements.push(element);
115
+ }
116
+ break;
117
+ default:
118
+ break;
119
+ }
120
+ }
121
+ });
122
+ return elements;
123
+ };
124
+ var getElementOptions = function (format, display) {
125
+ if (format === void 0) { format = ''; }
126
+ if (display === void 0) { display = ''; }
127
+ if (isEmpty(format)) {
128
+ return {};
129
+ }
130
+ var options = { format: format };
131
+ if (!isEmpty(display)) {
132
+ // @ts-ignore
133
+ options.display = display;
134
+ }
135
+ return options;
136
+ };
137
+ var getUIElement = function (key, schema, fieldSetItem) {
138
+ if (fieldSetItem === void 0) { fieldSetItem = undefined; }
139
+ var options = {};
140
+ switch (schema.schema.properties[key].type) {
141
+ case SchemaTypes.Number:
142
+ return getBaseUIObject(key, schema.schema.properties[key].title || '');
143
+ case SchemaTypes.String: {
144
+ var dateTimeFormat = getDateTimeControlFormat(key, schema, fieldSetItem);
145
+ if (!isEmptyString(dateTimeFormat)) {
146
+ options = getElementOptions(PropertyFormat.DateTime, dateTimeFormat);
147
+ }
148
+ else if (schema.schema.properties[key].display
149
+ && schema.schema.properties[key].display === ElementDisplay.Header) {
150
+ options = getElementOptions(PropertyFormat.FormLabel);
151
+ }
152
+ return getBaseUIObject(key, schema.schema.properties[key].title || '', options);
153
+ }
154
+ case SchemaTypes.Array:
155
+ if (schema.schema.properties[key].items.enum
156
+ && schema.schema.properties[key].items.enumNames) {
157
+ options = getElementOptions(PropertyFormat.MultiSelect);
158
+ }
159
+ else if (schema.schema.properties[key].items) {
160
+ options = getElementOptions(PropertyFormat.RepeatableField);
161
+ }
162
+ return getBaseUIObject(key, schema.schema.properties[key].title || '', options);
163
+ case undefined: {
164
+ var checkboxDefinition = getCheckboxDefinition(key, schema);
165
+ if (checkboxDefinition) {
166
+ options = getElementOptions(PropertyFormat.MultiSelect);
167
+ return getBaseUIObject(key, checkboxDefinition.title || '', options);
168
+ }
169
+ var dateTimeFormat = getDateTimeControlFormat(key, schema, fieldSetItem);
170
+ if (!isEmptyString(dateTimeFormat)) {
171
+ options = getElementOptions(PropertyFormat.DateTime, dateTimeFormat);
172
+ return getBaseUIObject(key, schema.schema.properties[key].title || '', options);
173
+ }
174
+ return undefined;
175
+ }
176
+ default:
177
+ break;
178
+ }
179
+ return undefined;
180
+ };
181
+ //# sourceMappingURL=generateUISchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateUISchema.js","sourceRoot":"","sources":["../../src/v1/generateUISchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { generateUISchema } from './generateUISchema';
2
+ export { validateJSONSchema } from './validateJsonSchema';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/v1/utils/utils.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,IAAI,SAAS,CAAC;AAM3B,oBAAY,cAAc;IACxB,QAAQ,cAAc;IACtB,IAAI,SAAS;CACd;AAED,oBAAY,cAAc;IACxB,QAAQ,cAAc;IACtB,WAAW,gBAAgB;IAC3B,eAAe,qBAAqB;IACpC,SAAS,eAAe;CACzB;AAED,oBAAY,cAAc;IACxB,MAAM,WAAW;CAClB;AAMD,eAAO,MAAM,mBAAmB,UAAW,MAAM,WAGhD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAAkB,MAAM;;;;;CAKvD,CAAC;AAEH,eAAO,MAAM,kBAAkB,UAAW,MAAM,EAAE,YAA2C,CAAC;AAE9F,eAAO,MAAM,eAAe,aAAc,GAAG,YAChB,CAAC;AAE9B,eAAO,MAAM,UAAU,SAAU,GAAG,YAA+C,CAAC;AAEpF,eAAO,MAAM,gBAAgB,SAAU,GAAG,YACZ,CAAC;AAE/B,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,SAAS,YAExB,CAAC;AAEhC,eAAO,MAAM,eAAe,SAAU,GAAG,YAChB,CAAC;AAE1B,eAAO,MAAM,2BAA2B,SAAU,GAAG,YACD,CAAC;AAErD,eAAO,MAAM,UAAU,SAAU,GAAG,YAAuE,CAAC;AAE5G,eAAO,MAAM,gBAAgB,SAAU,GAAG,YACiB,CAAC;AAE5D,eAAO,MAAM,QAAQ,SAAU,GAAG,YAA2B,CAAC;AAE9D,eAAO,MAAM,aAAa,SAAU,GAAG,YAAuB,CAAC;AAE/D,eAAO,MAAM,kBAAkB,aAAc,GAAG,YAA0D,CAAC;AAE3G,eAAO,MAAM,gBAAgB,eAAgB,GAAG,EAAE,YAOjD,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,GAAG,YAAgC,CAAC;AAEnE,eAAO,MAAM,0BAA0B,UAAW,MAAM,GAAG,MAAM,KAAG,MAAM,GAAG,MAoC5E,CAAC;AAGF,eAAO,MAAM,cAAc,WACjB,GAAG,oBACO,GAAG,QAAQ,MAAM,EAAE,KAAK,IAAI,SACxC,MAAM,EAAE,SAiBf,CAAC"}
@@ -0,0 +1,149 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ // External Dependencies
11
+ import { isEmpty } from 'lodash-es';
12
+ //--------------------------------------------------------------
13
+ // public constants
14
+ //--------------------------------------------------------------
15
+ export var FIELD_SET = 'fieldset';
16
+ export var HELP_VALUE = 'helpvalue';
17
+ export var REQUIRED_PROPERTY = 'required';
18
+ export var CHECKBOXES = 'checkboxes';
19
+ export var INACTIVE_ENUM = 'inactive_enum';
20
+ export var DISABLED_ENUM = 'inactive_titleMap';
21
+ export var STRING_TYPE = 'string';
22
+ export var ARRAY_TYPE = 'array';
23
+ export var ENUM = 'enum';
24
+ //--------------------------------------------------------------
25
+ // public enums
26
+ //--------------------------------------------------------------
27
+ export var DateTimeFormat;
28
+ (function (DateTimeFormat) {
29
+ DateTimeFormat["DateTime"] = "date-time";
30
+ DateTimeFormat["Date"] = "date";
31
+ })(DateTimeFormat || (DateTimeFormat = {}));
32
+ export var PropertyFormat;
33
+ (function (PropertyFormat) {
34
+ PropertyFormat["DateTime"] = "date-time";
35
+ PropertyFormat["MultiSelect"] = "multiselect";
36
+ PropertyFormat["RepeatableField"] = "repeatable-field";
37
+ PropertyFormat["FormLabel"] = "form-label";
38
+ })(PropertyFormat || (PropertyFormat = {}));
39
+ export var ElementDisplay;
40
+ (function (ElementDisplay) {
41
+ ElementDisplay["Header"] = "header";
42
+ })(ElementDisplay || (ElementDisplay = {}));
43
+ //--------------------------------------------------------------
44
+ // public functions
45
+ //--------------------------------------------------------------
46
+ export var getFieldSetTitleKey = function (title) {
47
+ var key = title.toLowerCase().replace(/[\s\\/\\%]/gi, '_');
48
+ return "fieldset__title_".concat(key);
49
+ };
50
+ export var getSchemaValidations = function (stringSchema) { return ({
51
+ hasCheckboxes: hasCheckboxes(stringSchema),
52
+ hasInactiveChoices: hasInactiveChoices(stringSchema),
53
+ hasDisabledChoices: hasDisabledChoices(stringSchema),
54
+ hasEnums: hasEnums(stringSchema),
55
+ }); };
56
+ export var hasDuplicatedItems = function (items) { return (new Set(items).size !== items.length); };
57
+ export var isArrayProperty = function (property) {
58
+ var _a, _b;
59
+ return property.type === ARRAY_TYPE && !((_a = property.items) === null || _a === void 0 ? void 0 : _a.enum)
60
+ && !((_b = property.items) === null || _b === void 0 ? void 0 : _b.enumNames);
61
+ };
62
+ export var isCheckbox = function (item) { return isObject(item) && item.type === CHECKBOXES; };
63
+ export var isDisabledChoice = function (item) {
64
+ var _a, _b;
65
+ return isObject(item) && item.type === CHECKBOXES && ((_a = item.inactive_titleMap) === null || _a === void 0 ? void 0 : _a.length) > 0
66
+ && ((_b = item.titleMap) === null || _b === void 0 ? void 0 : _b.length) > 0;
67
+ };
68
+ export var isEmptyString = function (value) { return (value === undefined
69
+ || value === null
70
+ || value.trim().length === 0); };
71
+ export var isFieldSetTitle = function (item) { return isObject(item) && item.type === FIELD_SET
72
+ && !isEmpty(item.title); };
73
+ export var isFieldSetTitleWithoutItems = function (item) { return isObject(item) && item.type === FIELD_SET
74
+ && item.items.length === 0 && !isEmpty(item.title); };
75
+ export var isFieldSet = function (item) { return isObject(item) && item.type === FIELD_SET && item.items.length > 0; };
76
+ export var isInactiveChoice = function (item) {
77
+ var _a, _b;
78
+ return item.type === STRING_TYPE
79
+ && ((_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;
80
+ };
81
+ export var isObject = function (item) { return item instanceof Object; };
82
+ export var isPropertyKey = function (item) { return !isEmpty(item.key); };
83
+ export var isRequiredProperty = function (property) { return property.required === 'true' || property.required > 0; };
84
+ export var isSchemaFieldSet = function (definition) {
85
+ if (definition.length === 0) {
86
+ return false;
87
+ }
88
+ var fieldSet = definition.find(function (item) { return isObject(item)
89
+ && item && (item.type || '') === FIELD_SET; });
90
+ return fieldSet !== undefined;
91
+ };
92
+ export var isString = function (item) { return typeof item === STRING_TYPE; };
93
+ export var normalizeDecimalSeparators = function (value) {
94
+ // If it's already a number, return as-is
95
+ if (typeof value === 'number') {
96
+ return value;
97
+ }
98
+ // If it's not a string, return as-is
99
+ if (typeof value !== 'string') {
100
+ return value;
101
+ }
102
+ // Trim whitespace
103
+ var trimmedValue = value.trim();
104
+ // If empty string, return as-is
105
+ if (trimmedValue === '') {
106
+ return value;
107
+ }
108
+ // Check if it looks like a number with comma decimal separator
109
+ // Pattern: optional minus, digits, comma, digits (e.g., "12,34", "-5,678")
110
+ var commaDecimalPattern = /^-?\d+,\d+$/;
111
+ if (commaDecimalPattern.test(trimmedValue)) {
112
+ // Replace comma with period for decimal separator
113
+ var normalizedValue = trimmedValue.replace(',', '.');
114
+ // Validate that the result is a valid number
115
+ var numValue = parseFloat(normalizedValue);
116
+ if (!isNaN(numValue)) {
117
+ return normalizedValue;
118
+ }
119
+ }
120
+ // Return original value if no conversion needed or possible
121
+ return value;
122
+ };
123
+ // Helper function to recursively traverse and process the schema
124
+ export var traverseSchema = function (schema, processor, path) {
125
+ if (path === void 0) { path = []; }
126
+ if (typeof schema !== 'object' || schema === null) {
127
+ return;
128
+ }
129
+ processor(schema, path);
130
+ if (Array.isArray(schema)) {
131
+ schema.forEach(function (item, index) {
132
+ return traverseSchema(item, processor, __spreadArray(__spreadArray([], path, true), [index.toString()], false));
133
+ });
134
+ }
135
+ else {
136
+ Object.entries(schema).forEach(function (_a) {
137
+ var key = _a[0], value = _a[1];
138
+ return traverseSchema(value, processor, __spreadArray(__spreadArray([], path, true), [key], false));
139
+ });
140
+ }
141
+ };
142
+ //--------------------------------------------------------------
143
+ // private functions
144
+ //--------------------------------------------------------------
145
+ var hasCheckboxes = function (stringSchema) { return stringSchema.includes(CHECKBOXES); };
146
+ var hasInactiveChoices = function (stringSchema) { return stringSchema.includes(INACTIVE_ENUM); };
147
+ var hasDisabledChoices = function (stringSchema) { return stringSchema.includes(DISABLED_ENUM); };
148
+ var hasEnums = function (stringSchema) { return stringSchema.includes(ENUM); };
149
+ //# 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":"AAiSA,eAAO,MAAM,kBAAkB,iBAAkB,MAAM,QAmCtD,CAAC"}
@@ -0,0 +1,286 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ // Internal Dependencies
22
+ import { isEmpty } from 'lodash-es';
23
+ import { ElementDisplay, getFieldSetTitleKey, getSchemaValidations, hasDuplicatedItems, HELP_VALUE, isCheckbox, isDisabledChoice, isFieldSet, isFieldSetTitle, isInactiveChoice, isObject, isPropertyKey, isRequiredProperty, isSchemaFieldSet, isString, normalizeDecimalSeparators, REQUIRED_PROPERTY, traverseSchema, } from './utils/utils';
24
+ var specialCharactersInKey = /[^\w\n\s_"](?=[^:\n\s{}[]]*:[\t\n\s]*(\{|\[)+)/g;
25
+ var emptyEnumRegex = '\\"enum\\"\\n*\\s*\\:\\n*\\s*\\[\\n*\\s*\\]';
26
+ var emptyEnumValue = '"enum": ["0"]';
27
+ var emptyEnumNamesRegex = '\\"enumNames\\"\\n*\\s*\\:\\n*\\s*\\{\\n*\\s*\\}';
28
+ var emptyEnumNamesValue = '"enumNames": {"0":"No Options"}';
29
+ var emptyTitleMapRegex = '\\"titleMap\\"\\n*\\s*\\:\\n*\\s*\\[\\n*\\s*\\]';
30
+ var emptyTitleMapValue = '"titleMap": [{"value":"no_option", "name":"No Option"}]';
31
+ var minParamRegex = /"minimum"(?:[^\\"]|\\\\|\\")*"\d+\.*\d*"/g;
32
+ var maxParamRegex = /"maximum"(?:[^\\"]|\\\\|\\")*"\d+\.*\d*"/g;
33
+ var doubleSingleQuotesRegex = /"(?=[^"]*(?:"[^"]*)?$)/g;
34
+ 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: {
35
+ enum: definition.titleMap.map(function (item) { return item.value; }),
36
+ enumNames: definition.titleMap.map(function (item) { return item.name; }),
37
+ } }), defaultValue && { default: defaultValue })); };
38
+ var getTitleProperty = function (title) { return ({
39
+ type: 'string',
40
+ readOnly: true,
41
+ isHidden: false,
42
+ display: ElementDisplay.Header,
43
+ title: title,
44
+ }); };
45
+ var getPropertyVisibility = function (property) { return (property === null || property === void 0 ? void 0 : property.isHidden) || false; };
46
+ var cleanUpRequiredProperty = function (schema) {
47
+ // Store the original root-level required array if it exists
48
+ var originalRequired = Array.isArray(schema.required) ? __spreadArray([], schema.required, true) : null;
49
+ traverseSchema(schema, function (node, path) {
50
+ if (node.type === 'object' && node.properties) {
51
+ var localRequired_1 = [];
52
+ Object.entries(node.properties).forEach(function (_a) {
53
+ var key = _a[0], property = _a[1];
54
+ if (isRequiredProperty(property)) {
55
+ localRequired_1.push(key);
56
+ delete property.required;
57
+ }
58
+ });
59
+ // Only modify required array if we found inline required properties
60
+ if (!isEmpty(localRequired_1)) {
61
+ // If this is the root schema and there was an original required array, merge them
62
+ if (path.length === 0 && originalRequired) {
63
+ var mergedRequired = __spreadArray(__spreadArray([], originalRequired, true), localRequired_1, true);
64
+ node.required = Array.from(new Set(mergedRequired));
65
+ }
66
+ else {
67
+ node.required = localRequired_1;
68
+ }
69
+ }
70
+ else if (path.length > 0 && node.required) {
71
+ // Only delete required array for nested objects, not the root
72
+ delete node.required;
73
+ }
74
+ }
75
+ });
76
+ return schema;
77
+ };
78
+ var formatDefinitionInSchema = function (schema) {
79
+ if (schema.schema.definition) {
80
+ var definition = schema.schema.definition;
81
+ delete schema.schema.definition;
82
+ schema.definition = definition;
83
+ return schema;
84
+ }
85
+ return schema;
86
+ };
87
+ var formatSchemaRepeatableFieldLayout = function (schema) {
88
+ var properties = {};
89
+ var headerCount = 0;
90
+ // eslint-disable-next-line no-restricted-syntax
91
+ for (var _i = 0, _a = schema.definition; _i < _a.length; _i++) {
92
+ var item = _a[_i];
93
+ if (isString(item)) {
94
+ properties[item] = schema.schema.properties[item];
95
+ delete schema.schema.properties[item];
96
+ }
97
+ else if (isObject(item)) {
98
+ if (item.helpvalue) {
99
+ var property = "help_value_".concat(headerCount);
100
+ headerCount += 1;
101
+ properties[property] = getTitleProperty((item.helpvalue || '').replace(/(<.+?>)/g, ''));
102
+ }
103
+ else if (item.key) {
104
+ properties[item.key] = schema.schema.properties[item.key];
105
+ delete schema.schema.properties[item.key];
106
+ }
107
+ }
108
+ }
109
+ schema.schema.properties = Object.assign(properties, schema.schema.properties);
110
+ };
111
+ // eslint-disable-next-line max-len
112
+ var cleanUpInactiveEnumChoice = function (property) { return property.enum.filter(function (choice) { return !property.inactive_enum.includes(choice); }); };
113
+ // eslint-disable-next-line max-len
114
+ var cleanUpDisabledEnumChoice = function (definitionItem) { return definitionItem.titleMap.filter(function (item) { return !definitionItem.inactive_titleMap.includes(item.value); }); };
115
+ var validateJSON = function (stringSchema) {
116
+ if (stringSchema.match(specialCharactersInKey) !== null) {
117
+ throw Error('Special characters not supported in JSON Schema');
118
+ }
119
+ // Invalid double quotes
120
+ stringSchema = stringSchema.replace(/([“”])/g, '"');
121
+ // Empty enum choices
122
+ stringSchema = stringSchema.replace(new RegExp(emptyEnumRegex, 'g'), emptyEnumValue);
123
+ // Empty enumNames choices
124
+ stringSchema = stringSchema.replace(new RegExp(emptyEnumNamesRegex, 'g'), emptyEnumNamesValue);
125
+ // Empty titleMap choices
126
+ stringSchema = stringSchema.replace(new RegExp(emptyTitleMapRegex, 'g'), emptyTitleMapValue);
127
+ // Numeric ranges
128
+ stringSchema = stringSchema.replace(minParamRegex, function (match) { return match.replace(doubleSingleQuotesRegex, ''); });
129
+ stringSchema = stringSchema.replace(maxParamRegex, function (match) { return match.replace(doubleSingleQuotesRegex, ''); });
130
+ return stringSchema;
131
+ };
132
+ var cleanUpJTD = function (validations, schema) {
133
+ var _a;
134
+ if (isSchemaFieldSet(schema.definition)) {
135
+ validateFieldSetDefinition(validations, schema);
136
+ }
137
+ else if (((_a = schema.definition) === null || _a === void 0 ? void 0 : _a.length) > 0) {
138
+ for (var _i = 0, _b = schema.definition; _i < _b.length; _i++) {
139
+ var item = _b[_i];
140
+ validateDefinition(validations, item, schema);
141
+ }
142
+ }
143
+ };
144
+ var validateFieldSetDefinition = function (validations, schema) {
145
+ for (var _i = 0, _a = schema.definition; _i < _a.length; _i++) {
146
+ var item = _a[_i];
147
+ switch (true) {
148
+ case isString(item):
149
+ break;
150
+ // Create field set header
151
+ case isFieldSetTitle(item):
152
+ {
153
+ var key = getFieldSetTitleKey(item.title);
154
+ schema.schema.properties[key] = getTitleProperty(item.title);
155
+ }
156
+ break;
157
+ // Format field-set sub-items
158
+ case isFieldSet(item):
159
+ // eslint-disable-next-line no-restricted-syntax
160
+ for (var _b = 0, _c = item.items; _b < _c.length; _b++) {
161
+ var subItem = _c[_b];
162
+ validateDefinition(validations, subItem, schema, item);
163
+ }
164
+ break;
165
+ case isCheckbox(item):
166
+ validateDefinition(validations, item, schema);
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 (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 ((isObject(item) || 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 && 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 && 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
+ 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 = normalizeDecimalSeparators(property.default);
214
+ }
215
+ // Normalize minimum values
216
+ if (property.minimum !== undefined) {
217
+ property.minimum = normalizeDecimalSeparators(property.minimum);
218
+ }
219
+ // Normalize maximum values
220
+ if (property.maximum !== undefined) {
221
+ property.maximum = 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 (isInactiveChoice(property)) {
237
+ schema.schema.properties[key].enum = cleanUpInactiveEnumChoice(property);
238
+ if (isEmpty(schema.schema.properties[key].enum)) {
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
+ !isEmpty(schema.schema.properties[key].enum)
252
+ && hasDuplicatedItems(schema.schema.properties[key].enum)) {
253
+ throw new Error('Duplicated enum items');
254
+ }
255
+ }
256
+ }
257
+ };
258
+ export 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 = 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(HELP_VALUE)) {
275
+ formatSchemaRepeatableFieldLayout(schema);
276
+ }
277
+ if (stringSchema.includes(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 && hasDuplicatedItems(schema.schema.required)) {
280
+ throw new Error('Duplicated required properties');
281
+ }
282
+ schema.schema = cleanUpRequiredProperty(schema.schema);
283
+ }
284
+ return schema;
285
+ };
286
+ //# sourceMappingURL=validateJsonSchema.js.map