@rjsf/utils 5.13.0 → 5.13.1

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 (35) hide show
  1. package/dist/index.js +243 -125
  2. package/dist/index.js.map +4 -4
  3. package/dist/utils.esm.js +243 -125
  4. package/dist/utils.esm.js.map +4 -4
  5. package/dist/utils.umd.js +223 -111
  6. package/lib/getOptionMatchingSimpleDiscriminator.d.ts +12 -0
  7. package/lib/getOptionMatchingSimpleDiscriminator.js +36 -0
  8. package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -0
  9. package/lib/getSchemaType.js +7 -2
  10. package/lib/getSchemaType.js.map +1 -1
  11. package/lib/index.d.ts +2 -1
  12. package/lib/index.js +2 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/parser/schemaParser.js +3 -2
  15. package/lib/parser/schemaParser.js.map +1 -1
  16. package/lib/schema/getClosestMatchingOption.js +7 -1
  17. package/lib/schema/getClosestMatchingOption.js.map +1 -1
  18. package/lib/schema/getDefaultFormState.js +9 -12
  19. package/lib/schema/getDefaultFormState.js.map +1 -1
  20. package/lib/schema/getMatchingOption.js +6 -0
  21. package/lib/schema/getMatchingOption.js.map +1 -1
  22. package/lib/schema/retrieveSchema.d.ts +16 -14
  23. package/lib/schema/retrieveSchema.js +57 -43
  24. package/lib/schema/retrieveSchema.js.map +1 -1
  25. package/lib/types.d.ts +1 -1
  26. package/package.json +15 -15
  27. package/src/getOptionMatchingSimpleDiscriminator.ts +46 -0
  28. package/src/getSchemaType.ts +6 -2
  29. package/src/index.ts +2 -0
  30. package/src/parser/schemaParser.ts +3 -2
  31. package/src/schema/getClosestMatchingOption.ts +9 -1
  32. package/src/schema/getDefaultFormState.ts +9 -12
  33. package/src/schema/getMatchingOption.ts +8 -0
  34. package/src/schema/retrieveSchema.ts +145 -39
  35. package/src/types.ts +1 -1
@@ -1,5 +1,6 @@
1
1
  import { __rest } from "tslib";
2
2
  import get from 'lodash/get';
3
+ import isEqual from 'lodash/isEqual';
3
4
  import set from 'lodash/set';
4
5
  import times from 'lodash/times';
5
6
  import transform from 'lodash/transform';
@@ -36,29 +37,29 @@ export default function retrieveSchema(validator, schema, rootSchema = {}, rawFo
36
37
  * @param [formData] - The current formData to assist retrieving a schema
37
38
  * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded
38
39
  */
39
- export function resolveCondition(validator, schema, rootSchema, expandAllBranches, formData) {
40
+ export function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
40
41
  const { if: expression, then, else: otherwise } = schema, resolvedSchemaLessConditional = __rest(schema, ["if", "then", "else"]);
41
42
  const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
42
43
  let resolvedSchemas = [resolvedSchemaLessConditional];
43
44
  let schemas = [];
44
45
  if (expandAllBranches) {
45
46
  if (then && typeof then !== 'boolean') {
46
- schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches));
47
+ schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList));
47
48
  }
48
49
  if (otherwise && typeof otherwise !== 'boolean') {
49
- schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches));
50
+ schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList));
50
51
  }
51
52
  }
52
53
  else {
53
54
  const conditionalSchema = conditionValue ? then : otherwise;
54
55
  if (conditionalSchema && typeof conditionalSchema !== 'boolean') {
55
- schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches));
56
+ schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList));
56
57
  }
57
58
  }
58
59
  if (schemas.length) {
59
60
  resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));
60
61
  }
61
- return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches));
62
+ return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList));
62
63
  }
63
64
  /** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The
64
65
  * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.
@@ -99,26 +100,30 @@ export function getAllPermutationsOfXxxOf(listOfLists) {
99
100
  * @param [formData] - The current formData, if any, to assist retrieving a schema
100
101
  * @returns - The list of schemas having its references, dependencies and allOf schemas resolved
101
102
  */
102
- export function resolveSchema(validator, schema, rootSchema, expandAllBranches, formData) {
103
- if (REF_KEY in schema) {
104
- return resolveReference(validator, schema, rootSchema, expandAllBranches, formData);
103
+ export function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
104
+ const updatedSchemas = resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
105
+ if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
106
+ // return the updatedSchemas array if it has either multiple schemas within it
107
+ // OR the first schema is not the same as the original schema
108
+ return updatedSchemas;
105
109
  }
106
110
  if (DEPENDENCIES_KEY in schema) {
107
- const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, formData);
111
+ const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
108
112
  return resolvedSchemas.flatMap((s) => {
109
- return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches);
113
+ return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList);
110
114
  });
111
115
  }
112
116
  if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {
113
- const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches));
117
+ const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList));
114
118
  const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);
115
119
  return allPermutations.map((permutation) => (Object.assign(Object.assign({}, schema), { allOf: permutation })));
116
120
  }
117
121
  // No $ref or dependencies or allOf attribute was found, returning the original schema.
118
122
  return [schema];
119
123
  }
120
- /** Resolves references within a schema and then returns the `retrieveSchemaInternal()` of the resolved schema. Passes
121
- * the `expandAllBranches` flag down to the `retrieveSchemaInternal()` helper call.
124
+ /** Resolves all references within a schema and then returns the `retrieveSchemaInternal()` if the resolved schema is
125
+ * actually different than the original. Passes the `expandAllBranches` flag down to the `retrieveSchemaInternal()`
126
+ * helper call.
122
127
  *
123
128
  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
124
129
  * @param schema - The schema for which resolving a reference is desired
@@ -128,41 +133,50 @@ export function resolveSchema(validator, schema, rootSchema, expandAllBranches,
128
133
  * @param [formData] - The current formData, if any, to assist retrieving a schema
129
134
  * @returns - The list schemas retrieved after having all references resolved
130
135
  */
131
- export function resolveReference(validator, schema, rootSchema, expandAllBranches, formData) {
132
- // Drop the $ref property of the source schema.
133
- const { $ref } = schema, localSchema = __rest(schema, ["$ref"]);
134
- // Retrieve the referenced schema definition.
135
- const refSchema = findSchemaDefinition($ref, rootSchema);
136
- // Update referenced schema definition with local schema properties.
137
- return retrieveSchemaInternal(validator, Object.assign(Object.assign({}, refSchema), localSchema), rootSchema, formData, expandAllBranches);
136
+ export function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
137
+ const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
138
+ if (updatedSchema !== schema) {
139
+ // Only call this if the schema was actually changed by the `resolveAllReferences()` function
140
+ return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList);
141
+ }
142
+ return [schema];
138
143
  }
139
- /** Resolves all references within a schema's properties and array items.
144
+ /** Resolves all references within the schema itself as well as any of its properties and array items.
140
145
  *
141
146
  * @param schema - The schema for which resolving all references is desired
142
147
  * @param rootSchema - The root schema that will be forwarded to all the APIs
143
- * @returns - given schema will all references resolved
148
+ * @param recurseList - List of $refs already resolved to prevent recursion
149
+ * @returns - given schema will all references resolved or the original schema if no internal `$refs` were resolved
144
150
  */
145
- export function resolveAllReferences(schema, rootSchema) {
151
+ export function resolveAllReferences(schema, rootSchema, recurseList) {
152
+ if (!isObject(schema)) {
153
+ return schema;
154
+ }
146
155
  let resolvedSchema = schema;
147
156
  // resolve top level ref
148
157
  if (REF_KEY in resolvedSchema) {
149
158
  const { $ref } = resolvedSchema, localSchema = __rest(resolvedSchema, ["$ref"]);
159
+ // Check for a recursive reference and stop the loop
160
+ if (recurseList.includes($ref)) {
161
+ return resolvedSchema;
162
+ }
163
+ recurseList.push($ref);
150
164
  // Retrieve the referenced schema definition.
151
165
  const refSchema = findSchemaDefinition($ref, rootSchema);
152
166
  resolvedSchema = Object.assign(Object.assign({}, refSchema), localSchema);
153
167
  }
154
168
  if (PROPERTIES_KEY in resolvedSchema) {
155
169
  const updatedProps = transform(resolvedSchema[PROPERTIES_KEY], (result, value, key) => {
156
- result[key] = resolveAllReferences(value, rootSchema);
170
+ result[key] = resolveAllReferences(value, rootSchema, recurseList);
157
171
  }, {});
158
172
  resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { [PROPERTIES_KEY]: updatedProps });
159
173
  }
160
174
  if (ITEMS_KEY in resolvedSchema &&
161
175
  !Array.isArray(resolvedSchema.items) &&
162
176
  typeof resolvedSchema.items !== 'boolean') {
163
- resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { items: resolveAllReferences(resolvedSchema.items, rootSchema) });
177
+ resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList) });
164
178
  }
165
- return resolvedSchema;
179
+ return isEqual(schema, resolvedSchema) ? schema : resolvedSchema;
166
180
  }
167
181
  /** Creates new 'properties' items for each key in the `formData`
168
182
  *
@@ -221,15 +235,15 @@ export function stubExistingAdditionalProperties(validator, theSchema, rootSchem
221
235
  * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies
222
236
  * resolved. Multiple schemas may be returned if `expandAllBranches` is true.
223
237
  */
224
- export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false) {
238
+ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = []) {
225
239
  if (!isObject(schema)) {
226
240
  return [{}];
227
241
  }
228
- const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, rawFormData);
242
+ const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData);
229
243
  return resolvedSchemas.flatMap((s) => {
230
244
  let resolvedSchema = s;
231
245
  if (IF_KEY in resolvedSchema) {
232
- return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, rawFormData);
246
+ return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData);
233
247
  }
234
248
  if (ALL_OF_KEY in resolvedSchema) {
235
249
  // resolve allOf schemas
@@ -267,7 +281,7 @@ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormDat
267
281
  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema, defaults to an empty object
268
282
  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
269
283
  */
270
- export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranches, rawFormData) {
284
+ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData) {
271
285
  let anyOrOneOf;
272
286
  const { oneOf, anyOf } = schema, remaining = __rest(schema, ["oneOf", "anyOf"]);
273
287
  if (Array.isArray(oneOf)) {
@@ -281,7 +295,7 @@ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAl
281
295
  const formData = rawFormData === undefined && expandAllBranches ? {} : rawFormData;
282
296
  const discriminator = getDiscriminatorFieldFromSchema(schema);
283
297
  anyOrOneOf = anyOrOneOf.map((s) => {
284
- return resolveAllReferences(s, rootSchema);
298
+ return resolveAllReferences(s, rootSchema, recurseList);
285
299
  });
286
300
  // Call this to trigger the set of isValid() calls that the schema parser will need
287
301
  const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);
@@ -303,11 +317,11 @@ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAl
303
317
  * @param [formData] - The current formData, if any, to assist retrieving a schema
304
318
  * @returns - The list of schemas with their dependencies resolved
305
319
  */
306
- export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, formData) {
320
+ export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
307
321
  // Drop the dependencies from the source schema.
308
322
  const { dependencies } = schema, remainingSchema = __rest(schema, ["dependencies"]);
309
- const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, formData);
310
- return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, formData));
323
+ const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, recurseList, formData);
324
+ return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData));
311
325
  }
312
326
  /** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the
313
327
  * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.
@@ -321,7 +335,7 @@ export function resolveDependencies(validator, schema, rootSchema, expandAllBran
321
335
  * @param [formData] - The current formData, if any, to assist retrieving a schema
322
336
  * @returns - The schema with the `dependencies` resolved into it
323
337
  */
324
- export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, formData) {
338
+ export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData) {
325
339
  let schemas = [resolvedSchema];
326
340
  // Process dependencies updating the local schema properties as appropriate.
327
341
  for (const dependencyKey in dependencies) {
@@ -338,9 +352,9 @@ export function processDependencies(validator, dependencies, resolvedSchema, roo
338
352
  schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
339
353
  }
340
354
  else if (isObject(dependencyValue)) {
341
- schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, formData);
355
+ schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData);
342
356
  }
343
- return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, formData));
357
+ return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData));
344
358
  }
345
359
  return schemas;
346
360
  }
@@ -372,8 +386,8 @@ export function withDependentProperties(schema, additionallyRequired) {
372
386
  * @param [formData]- The current formData to assist retrieving a schema
373
387
  * @returns - The list of schemas with the dependent schema resolved into them
374
388
  */
375
- export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, formData) {
376
- const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches);
389
+ export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData) {
390
+ const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList);
377
391
  return dependentSchemas.flatMap((dependent) => {
378
392
  const { oneOf } = dependent, dependentSchema = __rest(dependent, ["oneOf"]);
379
393
  schema = mergeSchemas(schema, dependentSchema);
@@ -386,10 +400,10 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
386
400
  if (typeof subschema === 'boolean' || !(REF_KEY in subschema)) {
387
401
  return [subschema];
388
402
  }
389
- return resolveReference(validator, subschema, rootSchema, expandAllBranches, formData);
403
+ return resolveReference(validator, subschema, rootSchema, expandAllBranches, recurseList, formData);
390
404
  });
391
405
  const allPermutations = getAllPermutationsOfXxxOf(resolvedOneOfs);
392
- return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, formData));
406
+ return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData));
393
407
  });
394
408
  }
395
409
  /** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is
@@ -406,7 +420,7 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
406
420
  * @param [formData] - The current formData to assist retrieving a schema
407
421
  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
408
422
  */
409
- export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, formData) {
423
+ export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData) {
410
424
  const validSubschemas = oneOf.filter((subschema) => {
411
425
  if (typeof subschema === 'boolean' || !subschema || !subschema.properties) {
412
426
  return false;
@@ -431,7 +445,7 @@ export function withExactlyOneSubschema(validator, schema, rootSchema, dependenc
431
445
  const subschema = s;
432
446
  const [dependentSubschema] = splitKeyElementFromObject(dependencyKey, subschema.properties);
433
447
  const dependentSchema = Object.assign(Object.assign({}, subschema), { properties: dependentSubschema });
434
- const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches);
448
+ const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList);
435
449
  return schemas.map((s) => mergeSchemas(schema, s));
436
450
  });
437
451
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retrieveSchema.js","sourceRoot":"","sources":["../../src/schema/retrieveSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retrieveSchema.js","sourceRoot":"","sources":["../../src/schema/retrieveSchema.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -393,7 +393,7 @@ export type FieldTemplateProps<T = any, S extends StrictRJSFSchema = RJSFSchema,
393
393
  /** The formData for this field */
394
394
  formData?: T;
395
395
  /** The value change event handler; Can be called with a new value to change the value for this field */
396
- onChange: FieldProps['onChange'];
396
+ onChange: FieldProps<T, S, F>['onChange'];
397
397
  /** The key change event handler; Called when the key associated with a field is changed for an additionalProperty */
398
398
  onKeyChange: (value: string) => () => void;
399
399
  /** The property drop/removal event handler; Called when a field is removed in an additionalProperty context */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rjsf/utils",
3
- "version": "5.13.0",
3
+ "version": "5.13.1",
4
4
  "main": "dist/index.js",
5
5
  "module": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -44,28 +44,28 @@
44
44
  "react-is": "^18.2.0"
45
45
  },
46
46
  "devDependencies": {
47
- "@babel/core": "^7.22.9",
47
+ "@babel/core": "^7.22.17",
48
48
  "@babel/plugin-proposal-class-properties": "^7.18.6",
49
49
  "@babel/plugin-proposal-optional-chaining": "^7.21.0",
50
- "@babel/preset-env": "^7.22.9",
51
- "@babel/preset-react": "^7.22.5",
52
- "@babel/preset-typescript": "^7.22.5",
50
+ "@babel/preset-env": "^7.22.15",
51
+ "@babel/preset-react": "^7.22.15",
52
+ "@babel/preset-typescript": "^7.22.15",
53
53
  "@types/json-schema": "^7.0.12",
54
54
  "@types/json-schema-merge-allof": "^0.6.1",
55
- "@types/lodash": "^4.14.196",
56
- "@types/react": "^17.0.62",
55
+ "@types/lodash": "^4.14.198",
56
+ "@types/react": "^17.0.65",
57
57
  "@types/react-is": "^17.0.4",
58
- "@types/react-test-renderer": "^17.0.2",
59
- "babel-jest": "^29.6.2",
58
+ "@types/react-test-renderer": "^17.0.3",
59
+ "babel-jest": "^29.6.4",
60
60
  "deep-freeze-es6": "^1.4.1",
61
- "esbuild": "^0.18.19",
62
- "eslint": "^8.46.0",
63
- "jest": "^29.6.2",
64
- "jest-environment-jsdom": "^29.6.1",
61
+ "esbuild": "^0.18.20",
62
+ "eslint": "^8.48.0",
63
+ "jest": "^29.6.4",
64
+ "jest-environment-jsdom": "^29.6.4",
65
65
  "react": "^17.0.2",
66
66
  "react-test-renderer": "^17.0.2",
67
67
  "rimraf": "^5.0.1",
68
- "rollup": "^3.27.2",
68
+ "rollup": "^3.29.0",
69
69
  "typescript": "^4.9.5"
70
70
  },
71
71
  "publishConfig": {
@@ -86,5 +86,5 @@
86
86
  "url": "git+https://github.com/rjsf-team/react-jsonschema-form.git"
87
87
  },
88
88
  "license": "Apache-2.0",
89
- "gitHead": "588b1c063095f75278585838cbca9b20252e13c9"
89
+ "gitHead": "a8039b4b7b872606a14e28885ba4e7faea9e2bfa"
90
90
  }
@@ -0,0 +1,46 @@
1
+ import get from 'lodash/get';
2
+ import { PROPERTIES_KEY } from './constants';
3
+ import { RJSFSchema, StrictRJSFSchema } from './types';
4
+
5
+ /** Compares the value of `discriminatorField` within `formData` against the value of `discriminatorField` within schema for each `option`.
6
+ * Returns index of first `option` whose discriminator matches formData. Returns `undefined` if there is no match.
7
+ * This function does not work with discriminators of `"type": "object"` and `"type": "array"`
8
+ *
9
+ * @param formData - The current formData, if any, used to figure out a match
10
+ * @param options - The list of options to find a matching options from
11
+ * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
12
+ * determine which option is selected
13
+ * @returns - The index of the matched option or undefined if there is no match
14
+ */
15
+ export default function getOptionMatchingSimpleDiscriminator<T = any, S extends StrictRJSFSchema = RJSFSchema>(
16
+ formData: T | undefined,
17
+ options: S[],
18
+ discriminatorField?: string
19
+ ): number | undefined {
20
+ if (formData && discriminatorField) {
21
+ const value = get(formData, discriminatorField);
22
+
23
+ if (value === undefined) {
24
+ return;
25
+ }
26
+
27
+ for (let i = 0; i < options.length; i++) {
28
+ const option = options[i];
29
+ const discriminator = get(option, [PROPERTIES_KEY, discriminatorField], {});
30
+
31
+ if (discriminator.type === 'object' || discriminator.type === 'array') {
32
+ continue;
33
+ }
34
+
35
+ if (discriminator.const === value) {
36
+ return i;
37
+ }
38
+
39
+ if (discriminator.enum?.includes(value)) {
40
+ return i;
41
+ }
42
+ }
43
+ }
44
+
45
+ return;
46
+ }
@@ -29,8 +29,12 @@ export default function getSchemaType<S extends StrictRJSFSchema = RJSFSchema>(
29
29
  return 'object';
30
30
  }
31
31
 
32
- if (Array.isArray(type) && type.length === 2 && type.includes('null')) {
33
- type = type.find((type) => type !== 'null');
32
+ if (Array.isArray(type)) {
33
+ if (type.length === 2 && type.includes('null')) {
34
+ type = type.find((type) => type !== 'null');
35
+ } else {
36
+ type = type[0];
37
+ }
34
38
  }
35
39
 
36
40
  return type;
package/src/index.ts CHANGED
@@ -49,6 +49,7 @@ import unwrapErrorHandler from './unwrapErrorHandler';
49
49
  import utcToLocal from './utcToLocal';
50
50
  import validationDataMerge from './validationDataMerge';
51
51
  import withIdRefPrefix from './withIdRefPrefix';
52
+ import getOptionMatchingSimpleDiscriminator from './getOptionMatchingSimpleDiscriminator';
52
53
 
53
54
  export * from './types';
54
55
  export * from './enums';
@@ -79,6 +80,7 @@ export {
79
80
  findSchemaDefinition,
80
81
  getDiscriminatorFieldFromSchema,
81
82
  getInputProps,
83
+ getOptionMatchingSimpleDiscriminator,
82
84
  getSchemaType,
83
85
  getSubmitButtonOptions,
84
86
  getTemplate,
@@ -22,12 +22,13 @@ function parseSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends
22
22
  rootSchema: S,
23
23
  schema: S
24
24
  ) {
25
- const schemas = retrieveSchemaInternal<T, S, F>(validator, schema, rootSchema, undefined, true);
25
+ const recurseRefs: string[] = [];
26
+ const schemas = retrieveSchemaInternal<T, S, F>(validator, schema, rootSchema, undefined, true, recurseRefs);
26
27
  schemas.forEach((schema) => {
27
28
  const sameSchemaIndex = recurseList.findIndex((item) => isEqual(item, schema));
28
29
  if (sameSchemaIndex === -1) {
29
30
  recurseList.push(schema);
30
- const allOptions = resolveAnyOrOneOfSchemas<T, S, F>(validator, schema, rootSchema, true);
31
+ const allOptions = resolveAnyOrOneOfSchemas<T, S, F>(validator, schema, rootSchema, true, recurseRefs);
31
32
  allOptions.forEach((s) => {
32
33
  if (PROPERTIES_KEY in s && s[PROPERTIES_KEY]) {
33
34
  forEach(schema[PROPERTIES_KEY], (value) => {
@@ -1,5 +1,6 @@
1
1
  import get from 'lodash/get';
2
2
  import has from 'lodash/has';
3
+ import isNumber from 'lodash/isNumber';
3
4
  import isObject from 'lodash/isObject';
4
5
  import isString from 'lodash/isString';
5
6
  import reduce from 'lodash/reduce';
@@ -11,6 +12,7 @@ import { ONE_OF_KEY, REF_KEY, JUNK_OPTION_ID, ANY_OF_KEY } from '../constants';
11
12
  import guessType from '../guessType';
12
13
  import { FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types';
13
14
  import getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema';
15
+ import getOptionMatchingSimpleDiscriminator from '../getOptionMatchingSimpleDiscriminator';
14
16
 
15
17
  /** A junk option used to determine when the getFirstMatchingOption call really matches an option rather than returning
16
18
  * the first item
@@ -145,8 +147,14 @@ export default function getClosestMatchingOption<
145
147
  ): number {
146
148
  // First resolve any refs in the options
147
149
  const resolvedOptions = options.map((option) => {
148
- return resolveAllReferences(option, rootSchema);
150
+ return resolveAllReferences<S>(option, rootSchema, []);
149
151
  });
152
+
153
+ const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
154
+ if (isNumber(simpleDiscriminatorMatch)) {
155
+ return simpleDiscriminatorMatch;
156
+ }
157
+
150
158
  // Reduce the array of options down to a list of the indexes that are considered matching options
151
159
  const allValidIndexes = resolvedOptions.reduce((validList: number[], option, index: number) => {
152
160
  const testOptions: S[] = [JUNK_OPTION as S, option];
@@ -185,7 +185,7 @@ export function computeDefaults<T = any, S extends StrictRJSFSchema = RJSFSchema
185
185
  schemaToCompute = findSchemaDefinition<S>(refName, rootSchema);
186
186
  }
187
187
  } else if (DEPENDENCIES_KEY in schema) {
188
- const resolvedSchema = resolveDependencies<T, S, F>(validator, schema, rootSchema, false, formData);
188
+ const resolvedSchema = resolveDependencies<T, S, F>(validator, schema, rootSchema, false, [], formData);
189
189
  schemaToCompute = resolvedSchema[0]; // pick the first element from resolve dependencies
190
190
  } else if (isFixedItems(schema)) {
191
191
  defaults = (schema.items! as S[]).map((itemSchema: S, idx: number) =>
@@ -287,16 +287,13 @@ export function computeDefaults<T = any, S extends StrictRJSFSchema = RJSFSchema
287
287
  .filter((key) => !schema.properties || !schema.properties[key])
288
288
  .forEach((key) => keys.add(key));
289
289
  }
290
- let formDataRequired: string[];
291
- if (isObject(formData)) {
292
- formDataRequired = [];
293
- Object.keys(formData as GenericObjectType)
294
- .filter((key) => !schema.properties || !schema.properties[key])
295
- .forEach((key) => {
296
- keys.add(key);
297
- formDataRequired.push(key);
298
- });
299
- }
290
+ const formDataRequired: string[] = [];
291
+ Object.keys(formData as GenericObjectType)
292
+ .filter((key) => !schema.properties || !schema.properties[key])
293
+ .forEach((key) => {
294
+ keys.add(key);
295
+ formDataRequired.push(key);
296
+ });
300
297
  keys.forEach((key) => {
301
298
  const computedDefault = computeDefaults(validator, additionalPropertiesSchema as S, {
302
299
  rootSchema,
@@ -307,7 +304,7 @@ export function computeDefaults<T = any, S extends StrictRJSFSchema = RJSFSchema
307
304
  rawFormData: get(formData, [key]),
308
305
  required: schema.required?.includes(key),
309
306
  });
310
- // Since these are additional properties we dont need to add the `experimental_defaultFormStateBehavior` prop
307
+ // Since these are additional properties we don't need to add the `experimental_defaultFormStateBehavior` prop
311
308
  maybeAddDefaultToObject<T>(
312
309
  objectDefaults as GenericObjectType,
313
310
  key,
@@ -1,8 +1,10 @@
1
1
  import get from 'lodash/get';
2
2
  import has from 'lodash/has';
3
+ import isNumber from 'lodash/isNumber';
3
4
 
4
5
  import { PROPERTIES_KEY } from '../constants';
5
6
  import { FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types';
7
+ import getOptionMatchingSimpleDiscriminator from '../getOptionMatchingSimpleDiscriminator';
6
8
 
7
9
  /** Given the `formData` and list of `options`, attempts to find the index of the option that best matches the data.
8
10
  * Deprecated, use `getFirstMatchingOption()` instead.
@@ -32,6 +34,12 @@ export default function getMatchingOption<
32
34
  if (formData === undefined) {
33
35
  return 0;
34
36
  }
37
+
38
+ const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
39
+ if (isNumber(simpleDiscriminatorMatch)) {
40
+ return simpleDiscriminatorMatch;
41
+ }
42
+
35
43
  for (let i = 0; i < options.length; i++) {
36
44
  const option = options[i];
37
45