@json-layout/core
Advanced tools
Comparing version 0.26.0 to 0.26.1
{ | ||
"name": "@json-layout/core", | ||
"version": "0.26.0", | ||
"version": "0.26.1", | ||
"description": "Compilation and state management utilities for JSON Layout.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -298,2 +298,6 @@ // eslint-disable-next-line import/no-named-default | ||
} | ||
// @ts-ignore | ||
if (this._options._debugCache) createStateTreeContext._debugCache = this._lastCreateStateTreeContext?._debugCache ?? {} | ||
this._stateTree = createStateTree( | ||
@@ -300,0 +304,0 @@ createStateTreeContext, |
@@ -273,7 +273,16 @@ import { isSwitchStruct, childIsCompObject, isCompositeLayout, isFocusableLayout, isItemsLayout, isGetItemsExpression, isGetItemsFetch } from '@json-layout/vocabulary' | ||
// TODO: implement a cleaner way to filter context.errors while being able to reuse nodes with errors | ||
if (skeleton.pure && reusedNode && !reusedNode.error && !reusedNode.childError) { | ||
cacheKey = [parentOptions, compiledLayout, fullKey, skeleton, childDefinition, parentDisplay.width, validationState, context.activatedItems, context.initial, data] | ||
if (context.cacheKeys[fullKey] && shallowEqualArray(context.cacheKeys[fullKey], cacheKey)) { | ||
if (skeleton.pure && !reusedNode?.error && !reusedNode?.childError) { | ||
const validatedCacheKey = validationState.validatedForm || validationState.validatedChildren.includes(fullKey) | ||
cacheKey = [parentOptions, compiledLayout, fullKey, skeleton, childDefinition, parentDisplay.width, validatedCacheKey, context.activatedItems, context.initial, data] | ||
if (reusedNode && context.cacheKeys[fullKey] && shallowEqualArray(context.cacheKeys[fullKey], cacheKey)) { | ||
// @ts-ignore | ||
if (context._debugCache) context._debugCache[fullKey] = (context._debugCache[fullKey] ?? []).concat(['hit']) | ||
return reusedNode | ||
} else { | ||
// @ts-ignore | ||
if (context._debugCache) context._debugCache[fullKey] = (context._debugCache[fullKey] ?? []).concat(['miss']) | ||
} | ||
} else { | ||
// @ts-ignore | ||
if (context._debugCache) context._debugCache[fullKey] = (context._debugCache[fullKey] ?? []).concat(['skip']) | ||
} | ||
@@ -432,15 +441,15 @@ | ||
} | ||
let nodeData = data | ||
if (nodeData === null && !layout.nullable) nodeData = undefined | ||
const validated = validationState.validatedForm || | ||
validationState.validatedChildren.includes(fullKey) || | ||
(validationState.initialized === false && options.initialValidation === 'always') || | ||
(validationState.initialized === false && options.initialValidation === 'withData' && !isDataEmpty(data)) | ||
(validationState.initialized === false && options.initialValidation === 'withData' && !isDataEmpty(nodeData)) | ||
let nodeData = data | ||
if (nodeData === null && !layout.nullable) nodeData = undefined | ||
/** @type {unknown} */ | ||
if (typeof nodeData === 'object' && !(nodeData instanceof File)) { | ||
if ((typeof nodeData === 'object' || (nodeData === undefined && children?.length)) && !(nodeData instanceof File)) { | ||
nodeData = produceStateNodeData( | ||
/** @type {Record<string, unknown>} */(nodeData ?? {}), | ||
/** @type {Record<string, unknown>} */(nodeData ?? (typeof children?.[0]?.key === 'number' ? [] : {})), | ||
dataPath, | ||
@@ -447,0 +456,0 @@ children, |
@@ -79,3 +79,3 @@ import { type ErrorObject } from 'ajv/dist/2019.js' | ||
// [parentOptions, compiledLayout, fullKey, skeleton, childDefinition, parentWidth, validationState, activatedItems, initial, data] | ||
// [parentOptions, compiledLayout, fullKey, skeleton, childDefinition, parentWidth, validated, activatedItems, initial, data] | ||
export type StateNodeCacheKey = [ | ||
@@ -88,3 +88,3 @@ StateNodeOptions, | ||
number, | ||
ValidationState, | ||
boolean, | ||
Record<string, number>, | ||
@@ -91,0 +91,0 @@ boolean, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
109393
2799