@rjsf/utils 5.13.0 → 5.13.2

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.
@@ -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';
@@ -33,32 +34,33 @@ export default function retrieveSchema(validator, schema, rootSchema = {}, rawFo
33
34
  * @param rootSchema - The root schema that will be forwarded to all the APIs
34
35
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and
35
36
  * dependencies as a list of schemas
37
+ * @param recurseList - The list of recursive references already processed
36
38
  * @param [formData] - The current formData to assist retrieving a schema
37
39
  * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded
38
40
  */
39
- export function resolveCondition(validator, schema, rootSchema, expandAllBranches, formData) {
41
+ export function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
40
42
  const { if: expression, then, else: otherwise } = schema, resolvedSchemaLessConditional = __rest(schema, ["if", "then", "else"]);
41
43
  const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
42
44
  let resolvedSchemas = [resolvedSchemaLessConditional];
43
45
  let schemas = [];
44
46
  if (expandAllBranches) {
45
47
  if (then && typeof then !== 'boolean') {
46
- schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches));
48
+ schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList));
47
49
  }
48
50
  if (otherwise && typeof otherwise !== 'boolean') {
49
- schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches));
51
+ schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList));
50
52
  }
51
53
  }
52
54
  else {
53
55
  const conditionalSchema = conditionValue ? then : otherwise;
54
56
  if (conditionalSchema && typeof conditionalSchema !== 'boolean') {
55
- schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches));
57
+ schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList));
56
58
  }
57
59
  }
58
60
  if (schemas.length) {
59
61
  resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));
60
62
  }
61
- return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches));
63
+ return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList));
62
64
  }
63
65
  /** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The
64
66
  * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.
@@ -96,73 +98,88 @@ export function getAllPermutationsOfXxxOf(listOfLists) {
96
98
  * @param rootSchema - The root schema that will be forwarded to all the APIs
97
99
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
98
100
  * as a list of schemas
101
+ * @param recurseList - The list of recursive references already processed
99
102
  * @param [formData] - The current formData, if any, to assist retrieving a schema
100
103
  * @returns - The list of schemas having its references, dependencies and allOf schemas resolved
101
104
  */
102
- export function resolveSchema(validator, schema, rootSchema, expandAllBranches, formData) {
103
- if (REF_KEY in schema) {
104
- return resolveReference(validator, schema, rootSchema, expandAllBranches, formData);
105
+ export function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
106
+ const updatedSchemas = resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
107
+ if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
108
+ // return the updatedSchemas array if it has either multiple schemas within it
109
+ // OR the first schema is not the same as the original schema
110
+ return updatedSchemas;
105
111
  }
106
112
  if (DEPENDENCIES_KEY in schema) {
107
- const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, formData);
113
+ const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
108
114
  return resolvedSchemas.flatMap((s) => {
109
- return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches);
115
+ return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList);
110
116
  });
111
117
  }
112
118
  if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {
113
- const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches));
119
+ const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList));
114
120
  const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);
115
121
  return allPermutations.map((permutation) => (Object.assign(Object.assign({}, schema), { allOf: permutation })));
116
122
  }
117
123
  // No $ref or dependencies or allOf attribute was found, returning the original schema.
118
124
  return [schema];
119
125
  }
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.
126
+ /** Resolves all references within a schema and then returns the `retrieveSchemaInternal()` if the resolved schema is
127
+ * actually different than the original. Passes the `expandAllBranches` flag down to the `retrieveSchemaInternal()`
128
+ * helper call.
122
129
  *
123
130
  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
124
131
  * @param schema - The schema for which resolving a reference is desired
125
132
  * @param rootSchema - The root schema that will be forwarded to all the APIs
126
133
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
127
134
  * as a list of schemas
135
+ * @param recurseList - The list of recursive references already processed
128
136
  * @param [formData] - The current formData, if any, to assist retrieving a schema
129
137
  * @returns - The list schemas retrieved after having all references resolved
130
138
  */
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);
139
+ export function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
140
+ const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
141
+ if (updatedSchema !== schema) {
142
+ // Only call this if the schema was actually changed by the `resolveAllReferences()` function
143
+ return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList);
144
+ }
145
+ return [schema];
138
146
  }
139
- /** Resolves all references within a schema's properties and array items.
147
+ /** Resolves all references within the schema itself as well as any of its properties and array items.
140
148
  *
141
149
  * @param schema - The schema for which resolving all references is desired
142
150
  * @param rootSchema - The root schema that will be forwarded to all the APIs
143
- * @returns - given schema will all references resolved
151
+ * @param recurseList - List of $refs already resolved to prevent recursion
152
+ * @returns - given schema will all references resolved or the original schema if no internal `$refs` were resolved
144
153
  */
145
- export function resolveAllReferences(schema, rootSchema) {
154
+ export function resolveAllReferences(schema, rootSchema, recurseList) {
155
+ if (!isObject(schema)) {
156
+ return schema;
157
+ }
146
158
  let resolvedSchema = schema;
147
159
  // resolve top level ref
148
160
  if (REF_KEY in resolvedSchema) {
149
161
  const { $ref } = resolvedSchema, localSchema = __rest(resolvedSchema, ["$ref"]);
162
+ // Check for a recursive reference and stop the loop
163
+ if (recurseList.includes($ref)) {
164
+ return resolvedSchema;
165
+ }
166
+ recurseList.push($ref);
150
167
  // Retrieve the referenced schema definition.
151
168
  const refSchema = findSchemaDefinition($ref, rootSchema);
152
169
  resolvedSchema = Object.assign(Object.assign({}, refSchema), localSchema);
153
170
  }
154
171
  if (PROPERTIES_KEY in resolvedSchema) {
155
172
  const updatedProps = transform(resolvedSchema[PROPERTIES_KEY], (result, value, key) => {
156
- result[key] = resolveAllReferences(value, rootSchema);
173
+ result[key] = resolveAllReferences(value, rootSchema, recurseList);
157
174
  }, {});
158
175
  resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { [PROPERTIES_KEY]: updatedProps });
159
176
  }
160
177
  if (ITEMS_KEY in resolvedSchema &&
161
178
  !Array.isArray(resolvedSchema.items) &&
162
179
  typeof resolvedSchema.items !== 'boolean') {
163
- resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { items: resolveAllReferences(resolvedSchema.items, rootSchema) });
180
+ resolvedSchema = Object.assign(Object.assign({}, resolvedSchema), { items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList) });
164
181
  }
165
- return resolvedSchema;
182
+ return isEqual(schema, resolvedSchema) ? schema : resolvedSchema;
166
183
  }
167
184
  /** Creates new 'properties' items for each key in the `formData`
168
185
  *
@@ -218,18 +235,19 @@ export function stubExistingAdditionalProperties(validator, theSchema, rootSchem
218
235
  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
219
236
  * @param [expandAllBranches=false] - Flag, if true, will return all possible branches of conditions, any/oneOf and
220
237
  * dependencies as a list of schemas
238
+ * @param [recurseList=[]] - The optional, list of recursive references already processed
221
239
  * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies
222
240
  * resolved. Multiple schemas may be returned if `expandAllBranches` is true.
223
241
  */
224
- export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false) {
242
+ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = []) {
225
243
  if (!isObject(schema)) {
226
244
  return [{}];
227
245
  }
228
- const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, rawFormData);
246
+ const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData);
229
247
  return resolvedSchemas.flatMap((s) => {
230
248
  let resolvedSchema = s;
231
249
  if (IF_KEY in resolvedSchema) {
232
- return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, rawFormData);
250
+ return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData);
233
251
  }
234
252
  if (ALL_OF_KEY in resolvedSchema) {
235
253
  // resolve allOf schemas
@@ -281,7 +299,9 @@ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAl
281
299
  const formData = rawFormData === undefined && expandAllBranches ? {} : rawFormData;
282
300
  const discriminator = getDiscriminatorFieldFromSchema(schema);
283
301
  anyOrOneOf = anyOrOneOf.map((s) => {
284
- return resolveAllReferences(s, rootSchema);
302
+ // Due to anyOf/oneOf possibly using the same $ref we always pass a fresh recurse list array so that each option
303
+ // can resolve recursive references independently
304
+ return resolveAllReferences(s, rootSchema, []);
285
305
  });
286
306
  // Call this to trigger the set of isValid() calls that the schema parser will need
287
307
  const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);
@@ -300,14 +320,15 @@ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAl
300
320
  * @param rootSchema - The root schema that will be forwarded to all the APIs
301
321
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
302
322
  * as a list of schemas
323
+ * @param recurseList - The list of recursive references already processed
303
324
  * @param [formData] - The current formData, if any, to assist retrieving a schema
304
325
  * @returns - The list of schemas with their dependencies resolved
305
326
  */
306
- export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, formData) {
327
+ export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
307
328
  // Drop the dependencies from the source schema.
308
329
  const { dependencies } = schema, remainingSchema = __rest(schema, ["dependencies"]);
309
330
  const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, formData);
310
- return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, formData));
331
+ return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData));
311
332
  }
312
333
  /** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the
313
334
  * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.
@@ -318,10 +339,11 @@ export function resolveDependencies(validator, schema, rootSchema, expandAllBran
318
339
  * @param rootSchema - The root schema that will be forwarded to all the APIs
319
340
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
320
341
  * as a list of schemas
342
+ * @param recurseList - The list of recursive references already processed
321
343
  * @param [formData] - The current formData, if any, to assist retrieving a schema
322
344
  * @returns - The schema with the `dependencies` resolved into it
323
345
  */
324
- export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, formData) {
346
+ export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData) {
325
347
  let schemas = [resolvedSchema];
326
348
  // Process dependencies updating the local schema properties as appropriate.
327
349
  for (const dependencyKey in dependencies) {
@@ -338,9 +360,9 @@ export function processDependencies(validator, dependencies, resolvedSchema, roo
338
360
  schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
339
361
  }
340
362
  else if (isObject(dependencyValue)) {
341
- schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, formData);
363
+ schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData);
342
364
  }
343
- return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, formData));
365
+ return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData));
344
366
  }
345
367
  return schemas;
346
368
  }
@@ -369,11 +391,12 @@ export function withDependentProperties(schema, additionallyRequired) {
369
391
  * @param dependencyValue - The potentially dependent schema
370
392
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
371
393
  * as a list of schemas
394
+ * @param recurseList - The list of recursive references already processed
372
395
  * @param [formData]- The current formData to assist retrieving a schema
373
396
  * @returns - The list of schemas with the dependent schema resolved into them
374
397
  */
375
- export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, formData) {
376
- const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches);
398
+ export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData) {
399
+ const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList);
377
400
  return dependentSchemas.flatMap((dependent) => {
378
401
  const { oneOf } = dependent, dependentSchema = __rest(dependent, ["oneOf"]);
379
402
  schema = mergeSchemas(schema, dependentSchema);
@@ -386,10 +409,10 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
386
409
  if (typeof subschema === 'boolean' || !(REF_KEY in subschema)) {
387
410
  return [subschema];
388
411
  }
389
- return resolveReference(validator, subschema, rootSchema, expandAllBranches, formData);
412
+ return resolveReference(validator, subschema, rootSchema, expandAllBranches, recurseList, formData);
390
413
  });
391
414
  const allPermutations = getAllPermutationsOfXxxOf(resolvedOneOfs);
392
- return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, formData));
415
+ return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData));
393
416
  });
394
417
  }
395
418
  /** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is
@@ -403,10 +426,11 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
403
426
  * @param oneOf - The list of schemas representing the oneOf options
404
427
  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
405
428
  * as a list of schemas
429
+ * @param recurseList - The list of recursive references already processed
406
430
  * @param [formData] - The current formData to assist retrieving a schema
407
431
  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
408
432
  */
409
- export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, formData) {
433
+ export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData) {
410
434
  const validSubschemas = oneOf.filter((subschema) => {
411
435
  if (typeof subschema === 'boolean' || !subschema || !subschema.properties) {
412
436
  return false;
@@ -431,7 +455,7 @@ export function withExactlyOneSubschema(validator, schema, rootSchema, dependenc
431
455
  const subschema = s;
432
456
  const [dependentSubschema] = splitKeyElementFromObject(dependencyKey, subschema.properties);
433
457
  const dependentSchema = Object.assign(Object.assign({}, subschema), { properties: dependentSubschema });
434
- const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches);
458
+ const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList);
435
459
  return schemas.map((s) => mergeSchemas(schema, s));
436
460
  });
437
461
  }
@@ -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.2",
4
4
  "main": "dist/index.js",
5
5
  "module": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  "lint": "eslint src test",
26
26
  "precommit": "lint-staged",
27
27
  "test": "jest",
28
- "test:debug": "node --inspect-brk node_modules/.bin/jest"
28
+ "test:debug": "node --inspect-brk ../../node_modules/.bin/jest"
29
29
  },
30
30
  "lint-staged": {
31
31
  "{src,test}/**/*.ts?(x)": [
@@ -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": "4cfaa984c3343d9cbaabd147c5c24b2c01e28726"
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,
@@ -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