@openforis/arena-core 2.4.4 → 2.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/esm/nodeDef/nodeDefs.js +4 -4
  2. package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
  3. package/dist/esm/record/recordValidator/{countVaildator.js → countValidator.js} +1 -1
  4. package/dist/esm/record/recordValidator/{countVaildator.js.map → countValidator.js.map} +1 -1
  5. package/dist/esm/record/recordValidator/recordValidator.js +1 -1
  6. package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
  7. package/dist/esm/survey/nodeDefsFixer.js +6 -6
  8. package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
  9. package/dist/esm/survey/surveys/dependencies.js +3 -3
  10. package/dist/esm/survey/surveys/dependencies.js.map +1 -1
  11. package/dist/esm/survey/surveys/nodeDefs.js +1 -1
  12. package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
  13. package/dist/nodeDef/nodeDefs.d.ts +4 -4
  14. package/dist/nodeDef/nodeDefs.js +4 -4
  15. package/dist/nodeDef/nodeDefs.js.map +1 -1
  16. package/dist/record/recordValidator/{countVaildator.js → countValidator.js} +1 -1
  17. package/dist/record/recordValidator/{countVaildator.js.map → countValidator.js.map} +1 -1
  18. package/dist/record/recordValidator/recordValidator.js +2 -2
  19. package/dist/record/recordValidator/recordValidator.js.map +1 -1
  20. package/dist/survey/nodeDefsFixer.js +6 -6
  21. package/dist/survey/nodeDefsFixer.js.map +1 -1
  22. package/dist/survey/surveys/dependencies.js +3 -3
  23. package/dist/survey/surveys/dependencies.js.map +1 -1
  24. package/dist/survey/surveys/nodeDefs.js +1 -1
  25. package/dist/survey/surveys/nodeDefs.js.map +1 -1
  26. package/package.json +1 -1
  27. /package/dist/record/recordValidator/{countVaildator.d.ts → countValidator.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefs.js","sourceRoot":"","sources":["../../../../src/survey/surveys/nodeDefs.ts"],"names":[],"mappings":"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","sourcesContent":["import { Survey } from '../survey'\nimport {\n NodeDef,\n NodeDefCode,\n NodeDefCodeProps,\n NodeDefEntity,\n NodeDefEntityChildPosition,\n NodeDefMap,\n NodeDefProps,\n NodeDefType,\n NodeDefs,\n} from '../../nodeDef'\nimport { Arrays, Objects, Queue } from '../../utils'\nimport { SystemError } from '../../error'\nimport * as NodeDefsReader from './_nodeDefs/nodeDefsReader'\nimport * as NodeDefsIndex from './_nodeDefs/nodeDefsIndex'\nimport { TraverseMethod } from '../../common'\nimport { getCategoryByUuid } from './surveysGetters'\n\nexport const getNodeDefsArray = NodeDefsReader.getNodeDefsArray\n\nexport const findNodeDefByUuid = (params: {\n survey: Survey\n uuid: string\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, uuid } = params\n return survey.nodeDefs?.[uuid]\n}\n\nexport const getNodeDefByUuid = (params: { survey: Survey; uuid: string }): NodeDef<NodeDefType, NodeDefProps> => {\n const { survey, uuid } = params\n const nodeDef = findNodeDefByUuid({ survey, uuid })\n if (!nodeDef) throw new SystemError('survey.nodeDefUuidNotFound', { uuid })\n return nodeDef\n}\n\nexport const findNodeDefByName = (params: {\n survey: Survey\n name: string\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, name } = params\n const nodeDefUuidByNameIndex = survey.nodeDefsIndex?.nodeDefUuidByName\n if (nodeDefUuidByNameIndex) {\n const uuid = nodeDefUuidByNameIndex[name]\n return findNodeDefByUuid({ survey, uuid })\n }\n return getNodeDefsArray(survey).find((nodeDef) => nodeDef.props.name === name)\n}\n\nexport const getNodeDefByName = (params: { survey: Survey; name: string }): NodeDef<NodeDefType, NodeDefProps> => {\n const { survey, name } = params\n const nodeDef = findNodeDefByName({ survey, name })\n if (!nodeDef) {\n throw new SystemError('survey.nodeDefNameNotFound', { name })\n }\n return nodeDef\n}\n\nexport const getNodeDefsByUuids = (params: { survey: Survey; uuids: string[] }) => {\n const { survey, uuids } = params\n return uuids.map((uuid) => getNodeDefByUuid({ survey, uuid }))\n}\n\nexport const findNodeDefsByUuids = (params: {\n survey: Survey\n uuids: string[]\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, uuids } = params\n return uuids.reduce((acc: NodeDef<NodeDefType, NodeDefProps>[], uuid) => {\n const nodeDef = findNodeDefByUuid({ survey, uuid })\n if (nodeDef) {\n acc.push(nodeDef)\n }\n return acc\n }, [])\n}\n\nexport const getNodeDefParent = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef } = params\n if (!nodeDef.parentUuid) return undefined\n return getNodeDefByUuid({ survey, uuid: nodeDef.parentUuid }) as NodeDefEntity\n}\n\nexport const getNodeDefAncestorMultipleEntity = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef } = params\n return findAncestorNodeDef({\n survey,\n nodeDef,\n predicate: (entityDef) => NodeDefs.isRoot(entityDef) || NodeDefs.isMultiple(entityDef),\n })\n}\n\nexport const isNodeDefAncestor = (params: {\n nodeDefAncestor: NodeDef<NodeDefType, NodeDefProps>\n nodeDefDescendant: NodeDef<NodeDefType, NodeDefProps>\n}): boolean => {\n const { nodeDefAncestor, nodeDefDescendant } = params\n\n return Arrays.startsWith(nodeDefDescendant.meta.h, [...nodeDefAncestor.meta.h, nodeDefAncestor.uuid])\n}\n\nexport const getNodeDefRoot = (params: { survey: Survey }): NodeDefEntity => {\n const { survey } = params\n if (!survey.nodeDefs) throw new SystemError('survey.emptyNodeDefs')\n\n const rootDefUuidInIndex = survey.nodeDefsIndex?.rootDefUuid\n\n const rootDef = rootDefUuidInIndex\n ? getNodeDefByUuid({ survey, uuid: rootDefUuidInIndex })\n : getNodeDefsArray(survey).find((nodeDef) => !nodeDef.parentUuid)\n\n if (!rootDef) throw new SystemError('survey.rootDefNotFound')\n\n return rootDef as NodeDefEntity\n}\n\nexport const getNodeDefSource = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, nodeDef } = params\n return nodeDef.virtual ? getNodeDefParent({ survey, nodeDef }) : undefined\n}\n\nexport const getNodeDefChildren = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n includeAnalysis?: boolean\n includeLayoutElements?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDef, includeAnalysis = false, includeLayoutElements = false } = params\n\n if (!survey.nodeDefs) return []\n\n let childDefs = []\n // try to get children using index\n if (survey.nodeDefsIndex) {\n const childrenUuids = Object.keys(survey.nodeDefsIndex.childDefUuidPresenceByParentUuid?.[nodeDef.uuid] ?? {})\n childDefs = getNodeDefsByUuids({ survey, uuids: childrenUuids })\n } else {\n // calculate children\n childDefs = NodeDefsReader.calculateNodeDefChildren(nodeDef)(survey)\n }\n if (includeAnalysis && includeLayoutElements) {\n return childDefs\n }\n return childDefs.filter((childDef) => {\n if (!includeAnalysis && childDef.analysis) return false\n if (!includeLayoutElements && NodeDefs.isLayoutElement(childDef)) return false\n return true\n })\n}\n\nexport const getQualifierDefs = (params: { survey: Survey }): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey } = params\n const qualifierPresence = survey.nodeDefsIndex?.qualifierPresenceByUuid\n if (qualifierPresence) {\n const qualifierUuids = Object.keys(qualifierPresence)\n return getNodeDefsByUuids({ survey, uuids: qualifierUuids })\n } else {\n return getNodeDefsArray(survey).filter((nodeDef) => NodeDefs.isQualifier(nodeDef))\n }\n}\n\nconst getIndexInChain = (params: { survey: Survey; nodeDef: NodeDef<any> }): number => {\n const { survey, nodeDef } = params\n const areaBasedEstimatedOf = NodeDefs.getAreaBasedEstimatedOf(nodeDef)\n const areaBasedEstimatedOfNodeDef = areaBasedEstimatedOf\n ? getNodeDefByUuid({ survey, uuid: areaBasedEstimatedOf })\n : null\n const nodeDefToConsider = areaBasedEstimatedOfNodeDef ?? nodeDef\n return nodeDefToConsider?.propsAdvanced?.index ?? 0\n}\n\nconst getNodeDefChildrenUuidsSortedByLayout = (params: {\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle: string\n children: NodeDef<any>[]\n}): string[] => {\n const { nodeDef, cycle, children } = params\n\n const entityDef = nodeDef as NodeDefEntity\n\n const childrenEntitiesInOwnPageSortedUuids = NodeDefs.getChildrenEntitiesInOwnPageUudis(cycle)(entityDef) ?? []\n const layoutChildren = NodeDefs.getLayoutChildren(cycle)(entityDef) ?? []\n const childrenByUuids = children.reduce((acc: NodeDefMap, child) => {\n acc[child.uuid] = child\n return acc\n }, {})\n const childrenUuids = Object.keys(childrenByUuids)\n\n if (layoutChildren.length === 0 && childrenEntitiesInOwnPageSortedUuids.length === 0) {\n return childrenUuids\n }\n const sortedChildrenDefsInSamePageUuids = NodeDefs.isLayoutRenderTypeTable(cycle)(entityDef)\n ? (layoutChildren as string[])\n : [...(layoutChildren as NodeDefEntityChildPosition[])]\n .sort(\n (gridItem1: NodeDefEntityChildPosition, gridItem2: NodeDefEntityChildPosition) =>\n gridItem1.y - gridItem2.y || gridItem1.x - gridItem2.x\n )\n .map((gridItem) => gridItem.i)\n .filter((nodeDefUuid) => !!childrenByUuids[nodeDefUuid])\n\n const missingChildrenUuidsInLayout = childrenUuids.filter((childUuid) => {\n const childDef = childrenByUuids[childUuid]\n return (\n !sortedChildrenDefsInSamePageUuids.includes(childUuid) &&\n !childrenEntitiesInOwnPageSortedUuids.includes(childUuid) &&\n NodeDefs.isInCycle(cycle)(childDef)\n )\n })\n\n return (\n sortedChildrenDefsInSamePageUuids\n // add child uuids missing in layout at the end\n .concat(missingChildrenUuidsInLayout)\n // add child entities in own page at the very end\n .concat(childrenEntitiesInOwnPageSortedUuids)\n )\n}\n\nconst _booleanToNumber = (value: boolean | undefined): number => (value ? 1 : 0)\nconst _compareBooleans = (value1: boolean | undefined, value2: boolean | undefined): number =>\n _booleanToNumber(value1) - _booleanToNumber(value2)\n\nexport const getNodeDefChildrenSorted = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle: string\n includeAnalysis?: boolean\n includeLayoutElements?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDef, cycle, includeAnalysis, includeLayoutElements } = params\n\n const children = getNodeDefChildren({ survey, nodeDef, includeAnalysis, includeLayoutElements }).filter(\n NodeDefs.isInCycle(cycle)\n )\n\n const childrenUuidsSortedByLayout = getNodeDefChildrenUuidsSortedByLayout({ nodeDef, cycle, children })\n\n return children.sort((child1, child2) => {\n if (includeAnalysis && (child1.analysis || child2.analysis)) {\n // analysis attribute at the end\n const analysisComparison = _compareBooleans(child1.analysis, child2.analysis)\n if (analysisComparison !== 0) return analysisComparison\n\n // sort by chain index\n const indexInChainComparison =\n getIndexInChain({ survey, nodeDef: child1 }) - getIndexInChain({ survey, nodeDef: child2 })\n if (indexInChainComparison !== 0) return indexInChainComparison\n\n // one node def is the area base estimated of the other\n const areaBasedEstimatedOfComparison = _compareBooleans(\n !!NodeDefs.getAreaBasedEstimatedOf(child1),\n !!NodeDefs.getAreaBasedEstimatedOf(child2)\n )\n if (areaBasedEstimatedOfComparison !== 0) return areaBasedEstimatedOfComparison\n\n return (child1.id ?? 0) - (child2.id ?? 0)\n }\n // keep sorting as defined in layout props\n return childrenUuidsSortedByLayout.indexOf(child1.uuid) - childrenUuidsSortedByLayout.indexOf(child2.uuid)\n })\n}\n\nexport const visitAncestorsAndSelfNodeDef = (params: {\n survey: Survey\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n stopIfFn?: () => boolean\n includeSelf?: boolean\n}): void => {\n const { survey, nodeDef, visitor, stopIfFn, includeSelf = true } = params\n if (includeSelf) {\n visitor(nodeDef)\n }\n let currentParent = getNodeDefParent({ survey, nodeDef })\n while (currentParent) {\n visitor(currentParent)\n if (stopIfFn?.()) {\n break\n }\n currentParent = getNodeDefParent({ survey, nodeDef: currentParent })\n }\n}\n\nexport const findAncestorNodeDef = (params: {\n survey: Survey\n nodeDef: NodeDef<any>\n predicate: (entityDef: NodeDefEntity) => boolean\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef, predicate } = params\n let result: NodeDefEntity | undefined = undefined\n visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef,\n // ancestors only: the node def itself is never an ancestor (e.g. a multiple attribute)\n includeSelf: false,\n visitor: (entityDef) => {\n if (predicate(entityDef)) {\n result = entityDef\n }\n },\n stopIfFn: () => !!result,\n })\n return result\n}\n\ntype NodeDefTraverseParams = {\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n shouldTraverse: (nodeDef: NodeDef<any>) => boolean\n getChildren: (nodeDef: NodeDef<any>) => NodeDef<any>[]\n}\n\nconst traverseBreadthFirst = ({ nodeDef, visitor, shouldTraverse, getChildren }: NodeDefTraverseParams) => {\n const queue = new Queue()\n\n queue.enqueue(nodeDef)\n\n while (!queue.isEmpty()) {\n const visitedNodeDef = queue.dequeue()\n\n visitor(visitedNodeDef)\n\n if (shouldTraverse(visitedNodeDef)) {\n queue.enqueueItems(getChildren(visitedNodeDef))\n }\n }\n}\n\nconst traverseDepthFirst = ({ nodeDef, visitor, shouldTraverse, getChildren }: NodeDefTraverseParams) => {\n const stack: NodeDef<any>[] = []\n\n stack.push(nodeDef)\n\n while (stack.length > 0) {\n const visitedNodeDef = stack.pop()!\n\n visitor(visitedNodeDef)\n\n if (shouldTraverse(visitedNodeDef)) {\n const children = getChildren(visitedNodeDef)\n // add children to stack in reverse order\n for (let index = children.length - 1; index >= 0; index--) {\n stack.push(children[index])\n }\n }\n }\n}\n\nexport const visitDescendantsAndSelfNodeDef = (params: {\n survey: Survey\n cycle?: string\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n includeAnalysis?: boolean\n traverseMethod?: TraverseMethod\n traverseOnlySingleEntities?: boolean\n}) => {\n const {\n survey,\n cycle,\n nodeDef,\n visitor,\n includeAnalysis = false,\n traverseMethod = TraverseMethod.bfs,\n traverseOnlySingleEntities = false,\n } = params\n\n const getNodeDefChildrenInternal = (visitedNodeDef: NodeDef<any>) =>\n Objects.isEmpty(cycle)\n ? getNodeDefChildren({ survey, nodeDef: visitedNodeDef, includeAnalysis })\n : getNodeDefChildrenSorted({ survey, nodeDef: visitedNodeDef, cycle: cycle!, includeAnalysis })\n\n const shouldTraverse = (visitedNodeDef: NodeDef<any>): boolean =>\n visitedNodeDef.type === NodeDefType.entity &&\n (visitedNodeDef === nodeDef ||\n NodeDefs.isRoot(visitedNodeDef) ||\n !traverseOnlySingleEntities ||\n NodeDefs.isSingle(visitedNodeDef))\n\n const traverseParams = { nodeDef, visitor, shouldTraverse, getChildren: getNodeDefChildrenInternal }\n if (traverseMethod === TraverseMethod.bfs) {\n traverseBreadthFirst(traverseParams)\n } else {\n traverseDepthFirst(traverseParams)\n }\n}\n\nexport const visitNodeDefs = (params: {\n survey: Survey\n visitor: (nodeDef: NodeDef<any>) => void\n includeAnalysis?: boolean\n traverseMethod?: TraverseMethod\n}) => {\n const { survey, visitor, traverseMethod = TraverseMethod.bfs, includeAnalysis = false } = params\n const rootDef = getNodeDefRoot({ survey })\n return visitDescendantsAndSelfNodeDef({ survey, nodeDef: rootDef, visitor, traverseMethod, includeAnalysis })\n}\n\n// Node Def Code\nexport const getNodeDefParentCode = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode | undefined => {\n const { survey, nodeDef } = params\n const parentCodeDefUuid = nodeDef.props.parentCodeDefUuid\n if (!parentCodeDefUuid) return undefined\n const parentCodeDef = getNodeDefByUuid({ survey, uuid: parentCodeDefUuid })\n return parentCodeDef as NodeDefCode\n}\n\nexport const getNodeDefAncestorCodes = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode[] => {\n const { survey, nodeDef } = params\n const ancestors = []\n let currentParentCode = getNodeDefParentCode({ survey, nodeDef })\n while (currentParentCode) {\n ancestors.unshift(currentParentCode)\n currentParentCode = getNodeDefParentCode({ survey, nodeDef: currentParentCode })\n }\n return ancestors\n}\n\nexport const isNodeDefParentCode = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): boolean => {\n const { survey, nodeDef } = params\n const nodeDefsArray = getNodeDefsArray(survey)\n return nodeDefsArray.some((def) => {\n try {\n return nodeDef.uuid === (def as NodeDef<NodeDefType.code, NodeDefCodeProps>).props.parentCodeDefUuid\n } catch {\n // ignore it: def is not a code attribute definition\n return\n }\n })\n}\n\nexport const getNodeDefCategoryLevelIndex = (params: { survey: Survey; nodeDef: NodeDefCode }): number => {\n const { survey, nodeDef } = params\n const parentCodeNodeDef = getNodeDefParentCode({ survey, nodeDef })\n return parentCodeNodeDef ? 1 + getNodeDefCategoryLevelIndex({ survey, nodeDef: parentCodeNodeDef }) : 0\n}\n\nexport const getDependentCodeAttributeDefs = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode[] => {\n const { survey, nodeDef } = params\n\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDef)\n if (!categoryUuid) return []\n\n const category = getCategoryByUuid({ survey, categoryUuid })\n const levelsCount = Object.keys(category?.levels ?? {}).length\n if (levelsCount <= 1) return []\n\n const nodeDefsArray = getNodeDefsArray(survey)\n return nodeDefsArray.filter(\n (def) => def.type === NodeDefType.code && NodeDefs.getParentCodeDefUuid(def as NodeDefCode) === nodeDef.uuid\n ) as NodeDefCode[]\n}\n\nexport const getDependentEnumeratedEntityDefs = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefEntity[] => {\n const { survey, nodeDef } = params\n const result: NodeDefEntity[] = []\n const dependentCodeAttributeDefs = getDependentCodeAttributeDefs({ survey, nodeDef })\n for (const dependentCodeDef of dependentCodeAttributeDefs) {\n if (NodeDefs.isKey(dependentCodeDef)) {\n const entityDef = getNodeDefAncestorMultipleEntity({ survey, nodeDef: dependentCodeDef })\n if (entityDef && NodeDefs.isEnumerate(entityDef)) {\n result.push(entityDef)\n }\n }\n }\n return result\n}\n\nexport const getNodeDefKeys = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle?: string\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef } = params\n\n return getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef,\n predicate: (visitedNodeDef) =>\n NodeDefs.isKey(visitedNodeDef) &&\n !visitedNodeDef.deleted &&\n (Objects.isEmpty(cycle) || NodeDefs.isInCycle(cycle!)(visitedNodeDef)),\n })\n}\n\nexport const getRootKeys = (params: { survey: Survey; cycle?: string }) => {\n const { survey, cycle } = params\n const rootDef = getNodeDefRoot({ survey })\n return getNodeDefKeys({ survey, nodeDef: rootDef, cycle })\n}\n\nexport const getNodeDefEnumerator = (params: { survey: Survey; entityDef: NodeDefEntity }): NodeDefCode | undefined => {\n const { survey, entityDef } = params\n if (!entityDef.props.enumerate) return undefined\n\n const children = getNodeDefChildren({ survey, nodeDef: entityDef })\n const codeAttributeKeys = children.filter((child) => child.type === NodeDefType.code && child.props.key)\n if (codeAttributeKeys.length === 1) {\n return codeAttributeKeys[0] as NodeDefCode\n }\n return undefined\n}\n\nexport const isNodeDefEnumerator = (params: { survey: Survey; nodeDef: NodeDef<NodeDefType> }): boolean => {\n const { survey, nodeDef } = params\n if (nodeDef.type !== NodeDefType.code) return false\n const entityDef = getNodeDefParent({ survey, nodeDef })\n if (!entityDef) return false\n const enumerator = getNodeDefEnumerator({ survey, entityDef })\n return enumerator?.uuid === nodeDef.uuid\n}\n\nexport const getDescendantsInSingleEntities = (params: {\n survey: Survey\n cycle?: string\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n predicate?: (visitedNodeDef: NodeDef<NodeDefType, NodeDefProps>) => boolean\n includeAnalysis?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef, predicate, includeAnalysis } = params\n const result: NodeDef<any>[] = []\n visitDescendantsAndSelfNodeDef({\n survey,\n cycle,\n nodeDef,\n visitor: (visitedNodeDef) => {\n if (!predicate || predicate(visitedNodeDef)) {\n result.push(visitedNodeDef)\n }\n },\n includeAnalysis,\n traverseOnlySingleEntities: true,\n })\n return result\n}\n\nexport const getNodeDefsIncludedInMultipleEntitySummary = (params: {\n survey: Survey\n cycle: string\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef } = params\n return getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef,\n predicate: (visitedNodeDef) => NodeDefs.isIncludedInMultipleEntitySummary(cycle)(visitedNodeDef),\n })\n}\n\nconst { buildAndAssocNodeDefsIndex, addNodeDefToIndex, updateNodeDefUuidByNameIndex, deleteNodeDefIndex } =\n NodeDefsIndex\nexport { buildAndAssocNodeDefsIndex, addNodeDefToIndex, updateNodeDefUuidByNameIndex, deleteNodeDefIndex }\n"]}
1
+ {"version":3,"file":"nodeDefs.js","sourceRoot":"","sources":["../../../../src/survey/surveys/nodeDefs.ts"],"names":[],"mappings":"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","sourcesContent":["import { Survey } from '../survey'\nimport {\n NodeDef,\n NodeDefCode,\n NodeDefCodeProps,\n NodeDefEntity,\n NodeDefEntityChildPosition,\n NodeDefMap,\n NodeDefProps,\n NodeDefType,\n NodeDefs,\n} from '../../nodeDef'\nimport { Arrays, Objects, Queue } from '../../utils'\nimport { SystemError } from '../../error'\nimport * as NodeDefsReader from './_nodeDefs/nodeDefsReader'\nimport * as NodeDefsIndex from './_nodeDefs/nodeDefsIndex'\nimport { TraverseMethod } from '../../common'\nimport { getCategoryByUuid } from './surveysGetters'\n\nexport const getNodeDefsArray = NodeDefsReader.getNodeDefsArray\n\nexport const findNodeDefByUuid = (params: {\n survey: Survey\n uuid: string\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, uuid } = params\n return survey.nodeDefs?.[uuid]\n}\n\nexport const getNodeDefByUuid = (params: { survey: Survey; uuid: string }): NodeDef<NodeDefType, NodeDefProps> => {\n const { survey, uuid } = params\n const nodeDef = findNodeDefByUuid({ survey, uuid })\n if (!nodeDef) throw new SystemError('survey.nodeDefUuidNotFound', { uuid })\n return nodeDef\n}\n\nexport const findNodeDefByName = (params: {\n survey: Survey\n name: string\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, name } = params\n const nodeDefUuidByNameIndex = survey.nodeDefsIndex?.nodeDefUuidByName\n if (nodeDefUuidByNameIndex) {\n const uuid = nodeDefUuidByNameIndex[name]\n return findNodeDefByUuid({ survey, uuid })\n }\n return getNodeDefsArray(survey).find((nodeDef) => nodeDef.props.name === name)\n}\n\nexport const getNodeDefByName = (params: { survey: Survey; name: string }): NodeDef<NodeDefType, NodeDefProps> => {\n const { survey, name } = params\n const nodeDef = findNodeDefByName({ survey, name })\n if (!nodeDef) {\n throw new SystemError('survey.nodeDefNameNotFound', { name })\n }\n return nodeDef\n}\n\nexport const getNodeDefsByUuids = (params: { survey: Survey; uuids: string[] }) => {\n const { survey, uuids } = params\n return uuids.map((uuid) => getNodeDefByUuid({ survey, uuid }))\n}\n\nexport const findNodeDefsByUuids = (params: {\n survey: Survey\n uuids: string[]\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, uuids } = params\n return uuids.reduce((acc: NodeDef<NodeDefType, NodeDefProps>[], uuid) => {\n const nodeDef = findNodeDefByUuid({ survey, uuid })\n if (nodeDef) {\n acc.push(nodeDef)\n }\n return acc\n }, [])\n}\n\nexport const getNodeDefParent = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef } = params\n if (!nodeDef.parentUuid) return undefined\n return getNodeDefByUuid({ survey, uuid: nodeDef.parentUuid }) as NodeDefEntity\n}\n\nexport const getNodeDefAncestorMultipleEntity = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef } = params\n return findAncestorNodeDef({\n survey,\n nodeDef,\n predicate: (entityDef) => NodeDefs.isRoot(entityDef) || NodeDefs.isMultiple(entityDef),\n })\n}\n\nexport const isNodeDefAncestor = (params: {\n nodeDefAncestor: NodeDef<NodeDefType, NodeDefProps>\n nodeDefDescendant: NodeDef<NodeDefType, NodeDefProps>\n}): boolean => {\n const { nodeDefAncestor, nodeDefDescendant } = params\n\n return Arrays.startsWith(nodeDefDescendant.meta.h, [...nodeDefAncestor.meta.h, nodeDefAncestor.uuid])\n}\n\nexport const getNodeDefRoot = (params: { survey: Survey }): NodeDefEntity => {\n const { survey } = params\n if (!survey.nodeDefs) throw new SystemError('survey.emptyNodeDefs')\n\n const rootDefUuidInIndex = survey.nodeDefsIndex?.rootDefUuid\n\n const rootDef = rootDefUuidInIndex\n ? getNodeDefByUuid({ survey, uuid: rootDefUuidInIndex })\n : getNodeDefsArray(survey).find((nodeDef) => !nodeDef.parentUuid)\n\n if (!rootDef) throw new SystemError('survey.rootDefNotFound')\n\n return rootDef as NodeDefEntity\n}\n\nexport const getNodeDefSource = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDef<NodeDefType, NodeDefProps> | undefined => {\n const { survey, nodeDef } = params\n return nodeDef.virtual ? getNodeDefParent({ survey, nodeDef }) : undefined\n}\n\nexport const getNodeDefChildren = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n includeAnalysis?: boolean\n includeLayoutElements?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDef, includeAnalysis = false, includeLayoutElements = false } = params\n\n if (!survey.nodeDefs) return []\n\n let childDefs = []\n // try to get children using index\n if (survey.nodeDefsIndex) {\n const childrenUuids = Object.keys(survey.nodeDefsIndex.childDefUuidPresenceByParentUuid?.[nodeDef.uuid] ?? {})\n childDefs = getNodeDefsByUuids({ survey, uuids: childrenUuids })\n } else {\n // calculate children\n childDefs = NodeDefsReader.calculateNodeDefChildren(nodeDef)(survey)\n }\n if (includeAnalysis && includeLayoutElements) {\n return childDefs\n }\n return childDefs.filter((childDef) => {\n if (!includeAnalysis && childDef.analysis) return false\n if (!includeLayoutElements && NodeDefs.isLayoutElement(childDef)) return false\n return true\n })\n}\n\nexport const getQualifierDefs = (params: { survey: Survey }): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey } = params\n const qualifierPresence = survey.nodeDefsIndex?.qualifierPresenceByUuid\n if (qualifierPresence) {\n const qualifierUuids = Object.keys(qualifierPresence)\n return getNodeDefsByUuids({ survey, uuids: qualifierUuids })\n } else {\n return getNodeDefsArray(survey).filter((nodeDef) => NodeDefs.isQualifier(nodeDef))\n }\n}\n\nconst getIndexInChain = (params: { survey: Survey; nodeDef: NodeDef<any> }): number => {\n const { survey, nodeDef } = params\n const areaBasedEstimatedOf = NodeDefs.getAreaBasedEstimatedOf(nodeDef)\n const areaBasedEstimatedOfNodeDef = areaBasedEstimatedOf\n ? getNodeDefByUuid({ survey, uuid: areaBasedEstimatedOf })\n : null\n const nodeDefToConsider = areaBasedEstimatedOfNodeDef ?? nodeDef\n return nodeDefToConsider?.propsAdvanced?.index ?? 0\n}\n\nconst getNodeDefChildrenUuidsSortedByLayout = (params: {\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle: string\n children: NodeDef<any>[]\n}): string[] => {\n const { nodeDef, cycle, children } = params\n\n const entityDef = nodeDef as NodeDefEntity\n\n const childrenEntitiesInOwnPageSortedUuids = NodeDefs.getChildrenEntitiesInOwnPageUuids(cycle)(entityDef) ?? []\n const layoutChildren = NodeDefs.getLayoutChildren(cycle)(entityDef) ?? []\n const childrenByUuids = children.reduce((acc: NodeDefMap, child) => {\n acc[child.uuid] = child\n return acc\n }, {})\n const childrenUuids = Object.keys(childrenByUuids)\n\n if (layoutChildren.length === 0 && childrenEntitiesInOwnPageSortedUuids.length === 0) {\n return childrenUuids\n }\n const sortedChildrenDefsInSamePageUuids = NodeDefs.isLayoutRenderTypeTable(cycle)(entityDef)\n ? (layoutChildren as string[])\n : [...(layoutChildren as NodeDefEntityChildPosition[])]\n .sort(\n (gridItem1: NodeDefEntityChildPosition, gridItem2: NodeDefEntityChildPosition) =>\n gridItem1.y - gridItem2.y || gridItem1.x - gridItem2.x\n )\n .map((gridItem) => gridItem.i)\n .filter((nodeDefUuid) => !!childrenByUuids[nodeDefUuid])\n\n const missingChildrenUuidsInLayout = childrenUuids.filter((childUuid) => {\n const childDef = childrenByUuids[childUuid]\n return (\n !sortedChildrenDefsInSamePageUuids.includes(childUuid) &&\n !childrenEntitiesInOwnPageSortedUuids.includes(childUuid) &&\n NodeDefs.isInCycle(cycle)(childDef)\n )\n })\n\n return (\n sortedChildrenDefsInSamePageUuids\n // add child uuids missing in layout at the end\n .concat(missingChildrenUuidsInLayout)\n // add child entities in own page at the very end\n .concat(childrenEntitiesInOwnPageSortedUuids)\n )\n}\n\nconst _booleanToNumber = (value: boolean | undefined): number => (value ? 1 : 0)\nconst _compareBooleans = (value1: boolean | undefined, value2: boolean | undefined): number =>\n _booleanToNumber(value1) - _booleanToNumber(value2)\n\nexport const getNodeDefChildrenSorted = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle: string\n includeAnalysis?: boolean\n includeLayoutElements?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDef, cycle, includeAnalysis, includeLayoutElements } = params\n\n const children = getNodeDefChildren({ survey, nodeDef, includeAnalysis, includeLayoutElements }).filter(\n NodeDefs.isInCycle(cycle)\n )\n\n const childrenUuidsSortedByLayout = getNodeDefChildrenUuidsSortedByLayout({ nodeDef, cycle, children })\n\n return children.sort((child1, child2) => {\n if (includeAnalysis && (child1.analysis || child2.analysis)) {\n // analysis attribute at the end\n const analysisComparison = _compareBooleans(child1.analysis, child2.analysis)\n if (analysisComparison !== 0) return analysisComparison\n\n // sort by chain index\n const indexInChainComparison =\n getIndexInChain({ survey, nodeDef: child1 }) - getIndexInChain({ survey, nodeDef: child2 })\n if (indexInChainComparison !== 0) return indexInChainComparison\n\n // one node def is the area base estimated of the other\n const areaBasedEstimatedOfComparison = _compareBooleans(\n !!NodeDefs.getAreaBasedEstimatedOf(child1),\n !!NodeDefs.getAreaBasedEstimatedOf(child2)\n )\n if (areaBasedEstimatedOfComparison !== 0) return areaBasedEstimatedOfComparison\n\n return (child1.id ?? 0) - (child2.id ?? 0)\n }\n // keep sorting as defined in layout props\n return childrenUuidsSortedByLayout.indexOf(child1.uuid) - childrenUuidsSortedByLayout.indexOf(child2.uuid)\n })\n}\n\nexport const visitAncestorsAndSelfNodeDef = (params: {\n survey: Survey\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n stopIfFn?: () => boolean\n includeSelf?: boolean\n}): void => {\n const { survey, nodeDef, visitor, stopIfFn, includeSelf = true } = params\n if (includeSelf) {\n visitor(nodeDef)\n }\n let currentParent = getNodeDefParent({ survey, nodeDef })\n while (currentParent) {\n visitor(currentParent)\n if (stopIfFn?.()) {\n break\n }\n currentParent = getNodeDefParent({ survey, nodeDef: currentParent })\n }\n}\n\nexport const findAncestorNodeDef = (params: {\n survey: Survey\n nodeDef: NodeDef<any>\n predicate: (entityDef: NodeDefEntity) => boolean\n}): NodeDefEntity | undefined => {\n const { survey, nodeDef, predicate } = params\n let result: NodeDefEntity | undefined = undefined\n visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef,\n // ancestors only: the node def itself is never an ancestor (e.g. a multiple attribute)\n includeSelf: false,\n visitor: (entityDef) => {\n if (predicate(entityDef)) {\n result = entityDef\n }\n },\n stopIfFn: () => !!result,\n })\n return result\n}\n\ntype NodeDefTraverseParams = {\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n shouldTraverse: (nodeDef: NodeDef<any>) => boolean\n getChildren: (nodeDef: NodeDef<any>) => NodeDef<any>[]\n}\n\nconst traverseBreadthFirst = ({ nodeDef, visitor, shouldTraverse, getChildren }: NodeDefTraverseParams) => {\n const queue = new Queue()\n\n queue.enqueue(nodeDef)\n\n while (!queue.isEmpty()) {\n const visitedNodeDef = queue.dequeue()\n\n visitor(visitedNodeDef)\n\n if (shouldTraverse(visitedNodeDef)) {\n queue.enqueueItems(getChildren(visitedNodeDef))\n }\n }\n}\n\nconst traverseDepthFirst = ({ nodeDef, visitor, shouldTraverse, getChildren }: NodeDefTraverseParams) => {\n const stack: NodeDef<any>[] = []\n\n stack.push(nodeDef)\n\n while (stack.length > 0) {\n const visitedNodeDef = stack.pop()!\n\n visitor(visitedNodeDef)\n\n if (shouldTraverse(visitedNodeDef)) {\n const children = getChildren(visitedNodeDef)\n // add children to stack in reverse order\n for (let index = children.length - 1; index >= 0; index--) {\n stack.push(children[index])\n }\n }\n }\n}\n\nexport const visitDescendantsAndSelfNodeDef = (params: {\n survey: Survey\n cycle?: string\n nodeDef: NodeDef<any>\n visitor: (nodeDef: NodeDef<any>) => void\n includeAnalysis?: boolean\n traverseMethod?: TraverseMethod\n traverseOnlySingleEntities?: boolean\n}) => {\n const {\n survey,\n cycle,\n nodeDef,\n visitor,\n includeAnalysis = false,\n traverseMethod = TraverseMethod.bfs,\n traverseOnlySingleEntities = false,\n } = params\n\n const getNodeDefChildrenInternal = (visitedNodeDef: NodeDef<any>) =>\n Objects.isEmpty(cycle)\n ? getNodeDefChildren({ survey, nodeDef: visitedNodeDef, includeAnalysis })\n : getNodeDefChildrenSorted({ survey, nodeDef: visitedNodeDef, cycle: cycle!, includeAnalysis })\n\n const shouldTraverse = (visitedNodeDef: NodeDef<any>): boolean =>\n visitedNodeDef.type === NodeDefType.entity &&\n (visitedNodeDef === nodeDef ||\n NodeDefs.isRoot(visitedNodeDef) ||\n !traverseOnlySingleEntities ||\n NodeDefs.isSingle(visitedNodeDef))\n\n const traverseParams = { nodeDef, visitor, shouldTraverse, getChildren: getNodeDefChildrenInternal }\n if (traverseMethod === TraverseMethod.bfs) {\n traverseBreadthFirst(traverseParams)\n } else {\n traverseDepthFirst(traverseParams)\n }\n}\n\nexport const visitNodeDefs = (params: {\n survey: Survey\n visitor: (nodeDef: NodeDef<any>) => void\n includeAnalysis?: boolean\n traverseMethod?: TraverseMethod\n}) => {\n const { survey, visitor, traverseMethod = TraverseMethod.bfs, includeAnalysis = false } = params\n const rootDef = getNodeDefRoot({ survey })\n return visitDescendantsAndSelfNodeDef({ survey, nodeDef: rootDef, visitor, traverseMethod, includeAnalysis })\n}\n\n// Node Def Code\nexport const getNodeDefParentCode = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode | undefined => {\n const { survey, nodeDef } = params\n const parentCodeDefUuid = nodeDef.props.parentCodeDefUuid\n if (!parentCodeDefUuid) return undefined\n const parentCodeDef = getNodeDefByUuid({ survey, uuid: parentCodeDefUuid })\n return parentCodeDef as NodeDefCode\n}\n\nexport const getNodeDefAncestorCodes = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode[] => {\n const { survey, nodeDef } = params\n const ancestors = []\n let currentParentCode = getNodeDefParentCode({ survey, nodeDef })\n while (currentParentCode) {\n ancestors.unshift(currentParentCode)\n currentParentCode = getNodeDefParentCode({ survey, nodeDef: currentParentCode })\n }\n return ancestors\n}\n\nexport const isNodeDefParentCode = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): boolean => {\n const { survey, nodeDef } = params\n const nodeDefsArray = getNodeDefsArray(survey)\n return nodeDefsArray.some((def) => {\n try {\n return nodeDef.uuid === (def as NodeDef<NodeDefType.code, NodeDefCodeProps>).props.parentCodeDefUuid\n } catch {\n // ignore it: def is not a code attribute definition\n return\n }\n })\n}\n\nexport const getNodeDefCategoryLevelIndex = (params: { survey: Survey; nodeDef: NodeDefCode }): number => {\n const { survey, nodeDef } = params\n const parentCodeNodeDef = getNodeDefParentCode({ survey, nodeDef })\n return parentCodeNodeDef ? 1 + getNodeDefCategoryLevelIndex({ survey, nodeDef: parentCodeNodeDef }) : 0\n}\n\nexport const getDependentCodeAttributeDefs = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefCode[] => {\n const { survey, nodeDef } = params\n\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDef)\n if (!categoryUuid) return []\n\n const category = getCategoryByUuid({ survey, categoryUuid })\n const levelsCount = Object.keys(category?.levels ?? {}).length\n if (levelsCount <= 1) return []\n\n const nodeDefsArray = getNodeDefsArray(survey)\n return nodeDefsArray.filter(\n (def) => def.type === NodeDefType.code && NodeDefs.getParentCodeDefUuid(def as NodeDefCode) === nodeDef.uuid\n ) as NodeDefCode[]\n}\n\nexport const getDependentEnumeratedEntityDefs = (params: { survey: Survey; nodeDef: NodeDefCode }): NodeDefEntity[] => {\n const { survey, nodeDef } = params\n const result: NodeDefEntity[] = []\n const dependentCodeAttributeDefs = getDependentCodeAttributeDefs({ survey, nodeDef })\n for (const dependentCodeDef of dependentCodeAttributeDefs) {\n if (NodeDefs.isKey(dependentCodeDef)) {\n const entityDef = getNodeDefAncestorMultipleEntity({ survey, nodeDef: dependentCodeDef })\n if (entityDef && NodeDefs.isEnumerate(entityDef)) {\n result.push(entityDef)\n }\n }\n }\n return result\n}\n\nexport const getNodeDefKeys = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n cycle?: string\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef } = params\n\n return getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef,\n predicate: (visitedNodeDef) =>\n NodeDefs.isKey(visitedNodeDef) &&\n !visitedNodeDef.deleted &&\n (Objects.isEmpty(cycle) || NodeDefs.isInCycle(cycle!)(visitedNodeDef)),\n })\n}\n\nexport const getRootKeys = (params: { survey: Survey; cycle?: string }) => {\n const { survey, cycle } = params\n const rootDef = getNodeDefRoot({ survey })\n return getNodeDefKeys({ survey, nodeDef: rootDef, cycle })\n}\n\nexport const getNodeDefEnumerator = (params: { survey: Survey; entityDef: NodeDefEntity }): NodeDefCode | undefined => {\n const { survey, entityDef } = params\n if (!entityDef.props.enumerate) return undefined\n\n const children = getNodeDefChildren({ survey, nodeDef: entityDef })\n const codeAttributeKeys = children.filter((child) => child.type === NodeDefType.code && child.props.key)\n if (codeAttributeKeys.length === 1) {\n return codeAttributeKeys[0] as NodeDefCode\n }\n return undefined\n}\n\nexport const isNodeDefEnumerator = (params: { survey: Survey; nodeDef: NodeDef<NodeDefType> }): boolean => {\n const { survey, nodeDef } = params\n if (nodeDef.type !== NodeDefType.code) return false\n const entityDef = getNodeDefParent({ survey, nodeDef })\n if (!entityDef) return false\n const enumerator = getNodeDefEnumerator({ survey, entityDef })\n return enumerator?.uuid === nodeDef.uuid\n}\n\nexport const getDescendantsInSingleEntities = (params: {\n survey: Survey\n cycle?: string\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n predicate?: (visitedNodeDef: NodeDef<NodeDefType, NodeDefProps>) => boolean\n includeAnalysis?: boolean\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef, predicate, includeAnalysis } = params\n const result: NodeDef<any>[] = []\n visitDescendantsAndSelfNodeDef({\n survey,\n cycle,\n nodeDef,\n visitor: (visitedNodeDef) => {\n if (!predicate || predicate(visitedNodeDef)) {\n result.push(visitedNodeDef)\n }\n },\n includeAnalysis,\n traverseOnlySingleEntities: true,\n })\n return result\n}\n\nexport const getNodeDefsIncludedInMultipleEntitySummary = (params: {\n survey: Survey\n cycle: string\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, cycle, nodeDef } = params\n return getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef,\n predicate: (visitedNodeDef) => NodeDefs.isIncludedInMultipleEntitySummary(cycle)(visitedNodeDef),\n })\n}\n\nconst { buildAndAssocNodeDefsIndex, addNodeDefToIndex, updateNodeDefUuidByNameIndex, deleteNodeDefIndex } =\n NodeDefsIndex\nexport { buildAndAssocNodeDefsIndex, addNodeDefToIndex, updateNodeDefUuidByNameIndex, deleteNodeDefIndex }\n"]}
@@ -86,7 +86,7 @@ declare const isLayoutRenderTypeForm: (cycle?: string) => (nodeDef: NodeDefEntit
86
86
  declare const isLayoutRenderTypeTable: (cycle?: string) => (nodeDef: NodeDefEntity) => boolean;
87
87
  declare const isLayoutRenderTypeHyperlink: (cycle?: string) => (nodeDef: NodeDefText) => boolean;
88
88
  declare const isLayoutRenderTypeMarkdown: (cycle?: string) => (nodeDef: NodeDefText) => boolean;
89
- declare const getChildrenEntitiesInOwnPageUudis: (cycle?: string) => (nodeDef: NodeDefEntity) => string[];
89
+ declare const getChildrenEntitiesInOwnPageUuids: (cycle?: string) => (nodeDef: NodeDefEntity) => string[];
90
90
  declare const getLayoutChildren: (cycle?: string) => (nodeDef: NodeDefEntity) => NodeDefEntityLayoutChildItem[];
91
91
  declare const getPageUuid: (cycle?: string) => (nodeDef: NodeDefEntity) => string | undefined;
92
92
  declare const isDisplayInOwnPage: (cycle?: string) => (nodeDef: NodeDefEntity) => boolean;
@@ -97,7 +97,7 @@ declare const isHiddenWhenNotRelevant: (cycle?: string) => <L extends NodeDefLay
97
97
  declare const isCodeShown: (cycle?: string) => (nodeDef: NodeDefCode) => boolean;
98
98
  declare const getAreaBasedEstimatedOf: (nodeDef: NodeDef<any>) => string | undefined;
99
99
  declare const getIndexInChain: (nodeDef: NodeDef<any>) => number | undefined;
100
- declare const getMetaHieararchy: (nodeDef: NodeDef<any>) => string[];
100
+ declare const getMetaHierarchy: (nodeDef: NodeDef<any>) => string[];
101
101
  export declare const NodeDefs: {
102
102
  isEntity: typeof isEntity;
103
103
  isBoolean: typeof isBoolean;
@@ -164,7 +164,7 @@ export declare const NodeDefs: {
164
164
  getLayoutRenderType: typeof getLayoutRenderType;
165
165
  isLayoutRenderTypeForm: typeof isLayoutRenderTypeForm;
166
166
  isLayoutRenderTypeTable: typeof isLayoutRenderTypeTable;
167
- getChildrenEntitiesInOwnPageUudis: typeof getChildrenEntitiesInOwnPageUudis;
167
+ getChildrenEntitiesInOwnPageUuids: typeof getChildrenEntitiesInOwnPageUuids;
168
168
  getLayoutChildren: typeof getLayoutChildren;
169
169
  getPageUuid: typeof getPageUuid;
170
170
  isDisplayInOwnPage: typeof isDisplayInOwnPage;
@@ -184,6 +184,6 @@ export declare const NodeDefs: {
184
184
  getMinCount: typeof getMinCount;
185
185
  getAreaBasedEstimatedOf: typeof getAreaBasedEstimatedOf;
186
186
  getIndexInChain: typeof getIndexInChain;
187
- getMetaHieararchy: typeof getMetaHieararchy;
187
+ getMetaHierarchy: typeof getMetaHierarchy;
188
188
  };
189
189
  export {};
@@ -117,7 +117,7 @@ const isLayoutRenderTypeForm = (cycle = survey_1.defaultCycle) => (nodeDef) => g
117
117
  const isLayoutRenderTypeTable = (cycle = survey_1.defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === entity_1.NodeDefEntityRenderType.table;
118
118
  const isLayoutRenderTypeHyperlink = (cycle = survey_1.defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === text_1.NodeDefTextRenderType.hyperlink;
119
119
  const isLayoutRenderTypeMarkdown = (cycle = survey_1.defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === text_1.NodeDefTextRenderType.markdown;
120
- const getChildrenEntitiesInOwnPageUudis = (cycle = survey_1.defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).indexChildren) !== null && _a !== void 0 ? _a : []; };
120
+ const getChildrenEntitiesInOwnPageUuids = (cycle = survey_1.defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).indexChildren) !== null && _a !== void 0 ? _a : []; };
121
121
  const getLayoutChildren = (cycle = survey_1.defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).layoutChildren) !== null && _a !== void 0 ? _a : []; };
122
122
  const getPageUuid = (cycle = survey_1.defaultCycle) => (nodeDef) => getLayoutProps(cycle)(nodeDef).pageUuid;
123
123
  const isDisplayInOwnPage = (cycle = survey_1.defaultCycle) => (nodeDef) => !!getPageUuid(cycle)(nodeDef);
@@ -130,7 +130,7 @@ const isCodeShown = (cycle = survey_1.defaultCycle) => (nodeDef) => { var _a; re
130
130
  const getAreaBasedEstimatedOf = (nodeDef) => { var _a, _b; var _c; return (_c = (_a = nodeDef.propsAdvancedDraft) === null || _a === void 0 ? void 0 : _a.areaBasedEstimatedOf) !== null && _c !== void 0 ? _c : (_b = nodeDef.propsAdvanced) === null || _b === void 0 ? void 0 : _b.areaBasedEstimatedOf; };
131
131
  const getIndexInChain = (nodeDef) => { var _a; return (_a = nodeDef.propsAdvanced) === null || _a === void 0 ? void 0 : _a.index; };
132
132
  // Metadata
133
- const getMetaHieararchy = (nodeDef) => { var _a; var _b; return (_b = (_a = nodeDef.meta) === null || _a === void 0 ? void 0 : _a.h) !== null && _b !== void 0 ? _b : []; };
133
+ const getMetaHierarchy = (nodeDef) => { var _a; var _b; return (_b = (_a = nodeDef.meta) === null || _a === void 0 ? void 0 : _a.h) !== null && _b !== void 0 ? _b : []; };
134
134
  exports.NodeDefs = {
135
135
  isEntity,
136
136
  isBoolean,
@@ -198,7 +198,7 @@ exports.NodeDefs = {
198
198
  getLayoutRenderType,
199
199
  isLayoutRenderTypeForm,
200
200
  isLayoutRenderTypeTable,
201
- getChildrenEntitiesInOwnPageUudis,
201
+ getChildrenEntitiesInOwnPageUuids,
202
202
  getLayoutChildren,
203
203
  getPageUuid,
204
204
  isDisplayInOwnPage,
@@ -222,6 +222,6 @@ exports.NodeDefs = {
222
222
  getAreaBasedEstimatedOf,
223
223
  getIndexInChain,
224
224
  // Metadata
225
- getMetaHieararchy,
225
+ getMetaHierarchy,
226
226
  };
227
227
  //# sourceMappingURL=nodeDefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefs.js","sourceRoot":"","sources":["../../src/nodeDef/nodeDefs.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageCode } from '../language'\nimport { ValuePropsCoordinate } from '../node/nodeValueProps'\nimport { defaultCycle } from '../survey'\nimport { Objects, Strings } from '../utils'\nimport {\n NodeDef,\n NodeDefCountExpression,\n NodeDefCountType,\n NodeDefExpression,\n NodeDefLayout,\n NodeDefProps,\n NodeDefPropsWithLayout,\n NodeDefType,\n NodeDefValidations,\n} from './nodeDef'\nimport { NodeDefBoolean } from './types/boolean'\nimport { NodeDefCode } from './types/code'\nimport { NodeDefCoordinate } from './types/coordinate'\nimport { NodeDefDate } from './types/date'\nimport { NodeDefDecimal } from './types/decimal'\nimport {\n NodeDefEntity,\n NodeDefEntityLayout,\n NodeDefEntityLayoutChildItem,\n NodeDefEntityRenderType,\n NodeDefPrintOrientation,\n} from './types/entity'\nimport { NodeDefFile, NodeDefFileType } from './types/file'\nimport { NodeDefFormHeader } from './types/formHeader'\nimport { NodeDefInteger } from './types/integer'\nimport { NodeDefTaxon } from './types/taxon'\nimport { NodeDefText, NodeDefTextRenderType, NodeDefTextInputType } from './types/text'\nimport { NodeDefTime } from './types/time'\n\nconst isRoot = (nodeDef: NodeDef<NodeDefType>): boolean => !nodeDef.parentUuid\n\nconst isAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => !isEntity(nodeDef)\n\nconst isEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity => nodeDef.type === NodeDefType.entity\n\nconst isBoolean = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefBoolean => nodeDef.type === NodeDefType.boolean\n\nconst isCode = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefCode => nodeDef.type === NodeDefType.code\n\nconst isCoordinate = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefCoordinate =>\n nodeDef.type === NodeDefType.coordinate\n\nconst isDate = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefDate => nodeDef.type === NodeDefType.date\n\nconst isDecimal = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefDecimal => nodeDef.type === NodeDefType.decimal\n\nconst isFile = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefFile => nodeDef.type === NodeDefType.file\n\nconst isInteger = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefInteger => nodeDef.type === NodeDefType.integer\n\nconst isTaxon = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefTaxon => nodeDef.type === NodeDefType.taxon\n\nconst isText = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefText => nodeDef.type === NodeDefType.text\n\nconst isTime = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefTime => nodeDef.type === NodeDefType.time\n\nconst isMultiple = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.props.multiple ?? false\n\nconst isSingle = (nodeDef: NodeDef<NodeDefType>): boolean => !isMultiple(nodeDef)\n\nconst isSingleEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity =>\n isEntity(nodeDef) && isSingle(nodeDef)\n\nconst isSingleAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => isAttribute(nodeDef) && isSingle(nodeDef)\n\nconst isMultipleEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity =>\n isEntity(nodeDef) && isMultiple(nodeDef)\n\nconst isMultipleAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => isAttribute(nodeDef) && isMultiple(nodeDef)\n\nconst isKey = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): boolean => nodeDef.props.key ?? false\n\nconst isAutoIncrementalKey = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): boolean =>\n nodeDef.props.autoIncrementalKey ?? false\n\nconst isAnalysis = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.analysis ?? false\n\nconst getType = (nodeDef: NodeDef<NodeDefType>): NodeDefType => nodeDef.type\n\nconst isLayoutElement = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefFormHeader =>\n nodeDef.type === NodeDefType.formHeader\n\nconst getName = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): string => nodeDef.props.name ?? ''\n\nconst getLabelOrName = (nodeDef: NodeDef<NodeDefType, NodeDefProps>, lang: LanguageCode): string =>\n Strings.defaultIfEmpty(getName(nodeDef))(nodeDef.props.labels?.[lang])\n\nconst getDescription = (nodeDef: NodeDef<NodeDefType, NodeDefProps>, lang: LanguageCode): string =>\n nodeDef.props.descriptions?.[lang] ?? ''\n\nconst isQualifier = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.props.qualifier ?? false\n\nconst isReadOnly = (nodeDef: NodeDef<any>): boolean => nodeDef.props.readOnly ?? false\n\nconst isHidden = (nodeDef: NodeDef<any>): boolean => nodeDef.props.hidden ?? false\n\nconst isEnumerate = (nodeDef: NodeDefEntity): boolean => nodeDef.props.enumerate ?? false\n\nconst getEnumeratingItemsExpression = (nodeDef: NodeDefEntity): string | undefined =>\n nodeDef.propsAdvanced?.enumeratingItemsExpression\n\nconst isAutoCreateMinCountItems = (nodeDef: NodeDefEntity): boolean =>\n isMultipleEntity(nodeDef) && (nodeDef.props.autoCreateMinCountItems ?? false)\n\nconst getPrintOrientation = (nodeDef: NodeDefEntity): NodeDefPrintOrientation | undefined =>\n nodeDef.props.printOrientation\n\nconst getDefaultValues = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] =>\n nodeDef.propsAdvanced?.defaultValues ?? []\n\nconst isDefaultValueEvaluatedOneTime = (nodeDef: NodeDef<NodeDefType>): boolean =>\n !!nodeDef.propsAdvanced?.defaultValueEvaluatedOneTime\n\nconst getApplicable = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.applicable ?? []\n\nconst getVisibleFields = (nodeDef: NodeDef<NodeDefType>): string[] | undefined => nodeDef.props.visibleFields\n\nconst isFieldVisible = (field: string) => (nodeDef: NodeDef<any>) => {\n const visibleFields = getVisibleFields(nodeDef)\n return !visibleFields || visibleFields.includes(field)\n}\n\nconst isInCycle =\n (cycle: string) =>\n (nodeDef: NodeDef<NodeDefType>): boolean => {\n const cycles = nodeDef.props.cycles ?? [defaultCycle]\n return cycles.includes(cycle)\n }\n\nconst isExcludedInClone = (nodeDef: NodeDef<NodeDefType>): boolean => !!nodeDef.propsAdvanced?.excludedInClone\n\nconst getEditableIf = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.editableIf ?? []\n\nconst isAlwaysEditable = (nodeDef: NodeDef<NodeDefType>): boolean => getEditableIf(nodeDef).length === 0\n\nconst getVisibleIf = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.visibleIf ?? []\n\nconst isAlwaysVisible = (nodeDef: NodeDef<NodeDefType>): boolean => getVisibleIf(nodeDef).length === 0\n\n// code\nconst getCategoryUuid = (nodeDef: NodeDefCode): string | undefined => nodeDef.props.categoryUuid\nconst getParentCodeDefUuid = (nodeDef: NodeDefCode): string | undefined => nodeDef.props.parentCodeDefUuid\n\n// coordinate\nconst isAllowOnlyDeviceCoordinate = (nodeDef: NodeDefCoordinate): boolean => !!nodeDef.props.allowOnlyDeviceCoordinate\n\nconst getCoordinateAdditionalFields = (nodeDef: NodeDefCoordinate): string[] => {\n const result = []\n if (nodeDef.props.includeAccuracy) result.push(ValuePropsCoordinate[ValuePropsCoordinate.accuracy])\n if (nodeDef.props.includeAltitude) result.push(ValuePropsCoordinate[ValuePropsCoordinate.altitude])\n if (nodeDef.props.includeAltitudeAccuracy) result.push(ValuePropsCoordinate[ValuePropsCoordinate.altitudeAccuracy])\n return result\n}\n\n// decimal\nconst getMaxNumberDecimalDigits = (nodeDef: NodeDefDecimal) => {\n const decimalDigits = nodeDef.props.maxNumberDecimalDigits\n return Objects.isEmpty(decimalDigits) ? Number.NaN : Number(decimalDigits)\n}\n\n// file\nconst getFileType = (nodeDef: NodeDefFile): NodeDefFileType | undefined => nodeDef.props.fileType\nconst getFileNameExpression = (nodeDef: NodeDefFile): string | undefined => nodeDef.propsAdvanced?.fileNameExpression\nconst getFileMaxSize = (nodeDef: NodeDefFile): number | undefined => nodeDef.props.maxFileSize\nconst isGeotagInformationShown = (nodeDef: NodeDefFile): boolean => !!nodeDef.props.geotagInformationShown\n\n// time\nconst isSecondsIncluded = (nodeDef: NodeDefTime): boolean => !!nodeDef.props.includeSeconds\n\n// taxon\nconst getTaxonomyUuid = (nodeDef: NodeDefTaxon): string | undefined => nodeDef.props.taxonomyUuid\n\nconst isVernacularNameSelectionKept = (nodeDef: NodeDefTaxon): boolean => !!nodeDef.props.vernacularNameSelectionKept\n\nconst isVernacularNameAlwaysIncludedIfSingle = (nodeDef: NodeDefTaxon): boolean =>\n !!nodeDef.props.vernacularNameAlwaysIncludedIfSingle\n\n// text\nconst getTextTransform = (nodeDef: NodeDefText): string | undefined => nodeDef.props?.textTransform\nconst getTextInputType = (nodeDef: NodeDefText): NodeDefTextInputType | undefined => nodeDef.props?.textInputType\n\n// code and taxon\nconst getItemsFilter = (nodeDef: NodeDef<any>): string | undefined => nodeDef.propsAdvanced?.itemsFilter\n\n// Validations\nconst getValidations = (nodeDef: NodeDef<NodeDefType>): NodeDefValidations | undefined =>\n nodeDef.propsAdvanced?.validations\n\nconst getValidationsExpressions = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] =>\n getValidations(nodeDef)?.expressions ?? []\n\nconst isRequired = (nodeDef: NodeDef<NodeDefType>): boolean => getValidations(nodeDef)?.required ?? false\n\n// // Min/max count\n\nconst getCount = (nodeDef: NodeDef<NodeDefType>, countType: NodeDefCountType): NodeDefCountExpression | undefined => {\n const countValidations = getValidations(nodeDef)?.count\n if (!countValidations) return undefined\n return countType === NodeDefCountType.max ? countValidations.max : countValidations.min\n}\n\nconst getMinCount = (nodeDef: NodeDef<NodeDefType>): NodeDefCountExpression | undefined =>\n getCount(nodeDef, NodeDefCountType.min)\n\nconst getMaxCount = (nodeDef: NodeDef<NodeDefType>): NodeDefCountExpression | undefined =>\n getCount(nodeDef, NodeDefCountType.max)\n\nconst hasMinOrMaxCount = (nodeDef: NodeDef<NodeDefType>): boolean =>\n Objects.isNotEmpty(getMinCount(nodeDef)) || Objects.isNotEmpty(getMaxCount(nodeDef))\n\n// layout\nconst getLayoutProps =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDef<any, NodeDefPropsWithLayout<any>>): any =>\n nodeDef?.props?.layout?.[cycle] ?? {}\n\nconst getLayoutRenderType =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDef<any, NodeDefPropsWithLayout<any>>): string | undefined =>\n getLayoutProps(cycle)(nodeDef).renderType\n\nconst isLayoutRenderTypeForm =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefEntityRenderType.form\n\nconst isLayoutRenderTypeTable =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefEntityRenderType.table\n\nconst isLayoutRenderTypeHyperlink =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefText): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.hyperlink\n\nconst isLayoutRenderTypeMarkdown =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefText): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.markdown\n\nconst getChildrenEntitiesInOwnPageUudis =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): string[] =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).indexChildren ?? []\n\nconst getLayoutChildren =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): NodeDefEntityLayoutChildItem[] =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).layoutChildren ?? []\n\nconst getPageUuid =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): string | undefined =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).pageUuid\n\nconst isDisplayInOwnPage =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n !!getPageUuid(cycle)(nodeDef)\n\nconst isHiddenInMobile =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).hiddenInMobile ?? false\n\nconst isIncludedInMultipleEntitySummary =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).includedInMultipleEntitySummary ?? false\n\nconst isIncludedInPreviousCycleLink =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).includedInPreviousCycleLink ?? true\n\nconst isHiddenWhenNotRelevant =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).hiddenWhenNotRelevant ?? false\n\nconst isCodeShown =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefCode): boolean =>\n !!(getLayoutProps(cycle)(nodeDef).codeShown ?? true)\n\n// Analysis\nconst getAreaBasedEstimatedOf = (nodeDef: NodeDef<any>): string | undefined =>\n nodeDef.propsAdvancedDraft?.areaBasedEstimatedOf ?? nodeDef.propsAdvanced?.areaBasedEstimatedOf\n\nconst getIndexInChain = (nodeDef: NodeDef<any>): number | undefined => nodeDef.propsAdvanced?.index\n\n// Metadata\nconst getMetaHieararchy = (nodeDef: NodeDef<any>): string[] => nodeDef.meta?.h ?? []\n\nexport const NodeDefs = {\n isEntity,\n isBoolean,\n isCode,\n isCoordinate,\n isDate,\n isDecimal,\n isFile,\n isInteger,\n isTaxon,\n isText,\n isTime,\n isMultiple,\n isMultipleEntity,\n isSingle,\n isSingleEntity,\n isAttribute,\n isSingleAttribute,\n isMultipleAttribute,\n isKey,\n isAutoIncrementalKey,\n isQualifier,\n isReadOnly,\n isHidden,\n isEnumerate,\n getEnumeratingItemsExpression,\n isAutoCreateMinCountItems,\n getPrintOrientation,\n isAnalysis,\n isRoot,\n getType,\n isLayoutElement,\n getName,\n getLabelOrName,\n getDescription,\n getDefaultValues,\n isDefaultValueEvaluatedOneTime,\n getApplicable,\n getVisibleFields,\n isFieldVisible,\n isInCycle,\n isExcludedInClone,\n getEditableIf,\n isAlwaysEditable,\n getVisibleIf,\n isAlwaysVisible,\n\n getCategoryUuid,\n getParentCodeDefUuid,\n isAllowOnlyDeviceCoordinate,\n getCoordinateAdditionalFields,\n getMaxNumberDecimalDigits,\n getFileNameExpression,\n getFileType,\n getFileMaxSize,\n isGeotagInformationShown,\n isSecondsIncluded,\n getTaxonomyUuid,\n isVernacularNameSelectionKept,\n isVernacularNameAlwaysIncludedIfSingle,\n getTextTransform,\n getTextInputType,\n getItemsFilter,\n\n // layout\n getLayoutProps,\n getLayoutRenderType,\n isLayoutRenderTypeForm,\n isLayoutRenderTypeTable,\n getChildrenEntitiesInOwnPageUudis,\n getLayoutChildren,\n getPageUuid,\n isDisplayInOwnPage,\n isHiddenInMobile,\n isIncludedInMultipleEntitySummary,\n isIncludedInPreviousCycleLink,\n isHiddenWhenNotRelevant,\n isCodeShown,\n isLayoutRenderTypeHyperlink,\n isLayoutRenderTypeMarkdown,\n // validations\n getValidations,\n getValidationsExpressions,\n isRequired,\n // // Min Max\n hasMinOrMaxCount,\n getCount,\n getMaxCount,\n getMinCount,\n // Analysis\n getAreaBasedEstimatedOf,\n getIndexInChain,\n // Metadata\n getMetaHieararchy,\n}\n"]}
1
+ {"version":3,"file":"nodeDefs.js","sourceRoot":"","sources":["../../src/nodeDef/nodeDefs.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageCode } from '../language'\nimport { ValuePropsCoordinate } from '../node/nodeValueProps'\nimport { defaultCycle } from '../survey'\nimport { Objects, Strings } from '../utils'\nimport {\n NodeDef,\n NodeDefCountExpression,\n NodeDefCountType,\n NodeDefExpression,\n NodeDefLayout,\n NodeDefProps,\n NodeDefPropsWithLayout,\n NodeDefType,\n NodeDefValidations,\n} from './nodeDef'\nimport { NodeDefBoolean } from './types/boolean'\nimport { NodeDefCode } from './types/code'\nimport { NodeDefCoordinate } from './types/coordinate'\nimport { NodeDefDate } from './types/date'\nimport { NodeDefDecimal } from './types/decimal'\nimport {\n NodeDefEntity,\n NodeDefEntityLayout,\n NodeDefEntityLayoutChildItem,\n NodeDefEntityRenderType,\n NodeDefPrintOrientation,\n} from './types/entity'\nimport { NodeDefFile, NodeDefFileType } from './types/file'\nimport { NodeDefFormHeader } from './types/formHeader'\nimport { NodeDefInteger } from './types/integer'\nimport { NodeDefTaxon } from './types/taxon'\nimport { NodeDefText, NodeDefTextRenderType, NodeDefTextInputType } from './types/text'\nimport { NodeDefTime } from './types/time'\n\nconst isRoot = (nodeDef: NodeDef<NodeDefType>): boolean => !nodeDef.parentUuid\n\nconst isAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => !isEntity(nodeDef)\n\nconst isEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity => nodeDef.type === NodeDefType.entity\n\nconst isBoolean = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefBoolean => nodeDef.type === NodeDefType.boolean\n\nconst isCode = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefCode => nodeDef.type === NodeDefType.code\n\nconst isCoordinate = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefCoordinate =>\n nodeDef.type === NodeDefType.coordinate\n\nconst isDate = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefDate => nodeDef.type === NodeDefType.date\n\nconst isDecimal = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefDecimal => nodeDef.type === NodeDefType.decimal\n\nconst isFile = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefFile => nodeDef.type === NodeDefType.file\n\nconst isInteger = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefInteger => nodeDef.type === NodeDefType.integer\n\nconst isTaxon = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefTaxon => nodeDef.type === NodeDefType.taxon\n\nconst isText = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefText => nodeDef.type === NodeDefType.text\n\nconst isTime = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefTime => nodeDef.type === NodeDefType.time\n\nconst isMultiple = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.props.multiple ?? false\n\nconst isSingle = (nodeDef: NodeDef<NodeDefType>): boolean => !isMultiple(nodeDef)\n\nconst isSingleEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity =>\n isEntity(nodeDef) && isSingle(nodeDef)\n\nconst isSingleAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => isAttribute(nodeDef) && isSingle(nodeDef)\n\nconst isMultipleEntity = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefEntity =>\n isEntity(nodeDef) && isMultiple(nodeDef)\n\nconst isMultipleAttribute = (nodeDef: NodeDef<NodeDefType>): boolean => isAttribute(nodeDef) && isMultiple(nodeDef)\n\nconst isKey = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): boolean => nodeDef.props.key ?? false\n\nconst isAutoIncrementalKey = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): boolean =>\n nodeDef.props.autoIncrementalKey ?? false\n\nconst isAnalysis = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.analysis ?? false\n\nconst getType = (nodeDef: NodeDef<NodeDefType>): NodeDefType => nodeDef.type\n\nconst isLayoutElement = (nodeDef: NodeDef<NodeDefType>): nodeDef is NodeDefFormHeader =>\n nodeDef.type === NodeDefType.formHeader\n\nconst getName = (nodeDef: NodeDef<NodeDefType, NodeDefProps>): string => nodeDef.props.name ?? ''\n\nconst getLabelOrName = (nodeDef: NodeDef<NodeDefType, NodeDefProps>, lang: LanguageCode): string =>\n Strings.defaultIfEmpty(getName(nodeDef))(nodeDef.props.labels?.[lang])\n\nconst getDescription = (nodeDef: NodeDef<NodeDefType, NodeDefProps>, lang: LanguageCode): string =>\n nodeDef.props.descriptions?.[lang] ?? ''\n\nconst isQualifier = (nodeDef: NodeDef<NodeDefType>): boolean => nodeDef.props.qualifier ?? false\n\nconst isReadOnly = (nodeDef: NodeDef<any>): boolean => nodeDef.props.readOnly ?? false\n\nconst isHidden = (nodeDef: NodeDef<any>): boolean => nodeDef.props.hidden ?? false\n\nconst isEnumerate = (nodeDef: NodeDefEntity): boolean => nodeDef.props.enumerate ?? false\n\nconst getEnumeratingItemsExpression = (nodeDef: NodeDefEntity): string | undefined =>\n nodeDef.propsAdvanced?.enumeratingItemsExpression\n\nconst isAutoCreateMinCountItems = (nodeDef: NodeDefEntity): boolean =>\n isMultipleEntity(nodeDef) && (nodeDef.props.autoCreateMinCountItems ?? false)\n\nconst getPrintOrientation = (nodeDef: NodeDefEntity): NodeDefPrintOrientation | undefined =>\n nodeDef.props.printOrientation\n\nconst getDefaultValues = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] =>\n nodeDef.propsAdvanced?.defaultValues ?? []\n\nconst isDefaultValueEvaluatedOneTime = (nodeDef: NodeDef<NodeDefType>): boolean =>\n !!nodeDef.propsAdvanced?.defaultValueEvaluatedOneTime\n\nconst getApplicable = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.applicable ?? []\n\nconst getVisibleFields = (nodeDef: NodeDef<NodeDefType>): string[] | undefined => nodeDef.props.visibleFields\n\nconst isFieldVisible = (field: string) => (nodeDef: NodeDef<any>) => {\n const visibleFields = getVisibleFields(nodeDef)\n return !visibleFields || visibleFields.includes(field)\n}\n\nconst isInCycle =\n (cycle: string) =>\n (nodeDef: NodeDef<NodeDefType>): boolean => {\n const cycles = nodeDef.props.cycles ?? [defaultCycle]\n return cycles.includes(cycle)\n }\n\nconst isExcludedInClone = (nodeDef: NodeDef<NodeDefType>): boolean => !!nodeDef.propsAdvanced?.excludedInClone\n\nconst getEditableIf = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.editableIf ?? []\n\nconst isAlwaysEditable = (nodeDef: NodeDef<NodeDefType>): boolean => getEditableIf(nodeDef).length === 0\n\nconst getVisibleIf = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] => nodeDef.propsAdvanced?.visibleIf ?? []\n\nconst isAlwaysVisible = (nodeDef: NodeDef<NodeDefType>): boolean => getVisibleIf(nodeDef).length === 0\n\n// code\nconst getCategoryUuid = (nodeDef: NodeDefCode): string | undefined => nodeDef.props.categoryUuid\nconst getParentCodeDefUuid = (nodeDef: NodeDefCode): string | undefined => nodeDef.props.parentCodeDefUuid\n\n// coordinate\nconst isAllowOnlyDeviceCoordinate = (nodeDef: NodeDefCoordinate): boolean => !!nodeDef.props.allowOnlyDeviceCoordinate\n\nconst getCoordinateAdditionalFields = (nodeDef: NodeDefCoordinate): string[] => {\n const result = []\n if (nodeDef.props.includeAccuracy) result.push(ValuePropsCoordinate[ValuePropsCoordinate.accuracy])\n if (nodeDef.props.includeAltitude) result.push(ValuePropsCoordinate[ValuePropsCoordinate.altitude])\n if (nodeDef.props.includeAltitudeAccuracy) result.push(ValuePropsCoordinate[ValuePropsCoordinate.altitudeAccuracy])\n return result\n}\n\n// decimal\nconst getMaxNumberDecimalDigits = (nodeDef: NodeDefDecimal) => {\n const decimalDigits = nodeDef.props.maxNumberDecimalDigits\n return Objects.isEmpty(decimalDigits) ? Number.NaN : Number(decimalDigits)\n}\n\n// file\nconst getFileType = (nodeDef: NodeDefFile): NodeDefFileType | undefined => nodeDef.props.fileType\nconst getFileNameExpression = (nodeDef: NodeDefFile): string | undefined => nodeDef.propsAdvanced?.fileNameExpression\nconst getFileMaxSize = (nodeDef: NodeDefFile): number | undefined => nodeDef.props.maxFileSize\nconst isGeotagInformationShown = (nodeDef: NodeDefFile): boolean => !!nodeDef.props.geotagInformationShown\n\n// time\nconst isSecondsIncluded = (nodeDef: NodeDefTime): boolean => !!nodeDef.props.includeSeconds\n\n// taxon\nconst getTaxonomyUuid = (nodeDef: NodeDefTaxon): string | undefined => nodeDef.props.taxonomyUuid\n\nconst isVernacularNameSelectionKept = (nodeDef: NodeDefTaxon): boolean => !!nodeDef.props.vernacularNameSelectionKept\n\nconst isVernacularNameAlwaysIncludedIfSingle = (nodeDef: NodeDefTaxon): boolean =>\n !!nodeDef.props.vernacularNameAlwaysIncludedIfSingle\n\n// text\nconst getTextTransform = (nodeDef: NodeDefText): string | undefined => nodeDef.props?.textTransform\nconst getTextInputType = (nodeDef: NodeDefText): NodeDefTextInputType | undefined => nodeDef.props?.textInputType\n\n// code and taxon\nconst getItemsFilter = (nodeDef: NodeDef<any>): string | undefined => nodeDef.propsAdvanced?.itemsFilter\n\n// Validations\nconst getValidations = (nodeDef: NodeDef<NodeDefType>): NodeDefValidations | undefined =>\n nodeDef.propsAdvanced?.validations\n\nconst getValidationsExpressions = (nodeDef: NodeDef<NodeDefType>): NodeDefExpression[] =>\n getValidations(nodeDef)?.expressions ?? []\n\nconst isRequired = (nodeDef: NodeDef<NodeDefType>): boolean => getValidations(nodeDef)?.required ?? false\n\n// // Min/max count\n\nconst getCount = (nodeDef: NodeDef<NodeDefType>, countType: NodeDefCountType): NodeDefCountExpression | undefined => {\n const countValidations = getValidations(nodeDef)?.count\n if (!countValidations) return undefined\n return countType === NodeDefCountType.max ? countValidations.max : countValidations.min\n}\n\nconst getMinCount = (nodeDef: NodeDef<NodeDefType>): NodeDefCountExpression | undefined =>\n getCount(nodeDef, NodeDefCountType.min)\n\nconst getMaxCount = (nodeDef: NodeDef<NodeDefType>): NodeDefCountExpression | undefined =>\n getCount(nodeDef, NodeDefCountType.max)\n\nconst hasMinOrMaxCount = (nodeDef: NodeDef<NodeDefType>): boolean =>\n Objects.isNotEmpty(getMinCount(nodeDef)) || Objects.isNotEmpty(getMaxCount(nodeDef))\n\n// layout\nconst getLayoutProps =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDef<any, NodeDefPropsWithLayout<any>>): any =>\n nodeDef?.props?.layout?.[cycle] ?? {}\n\nconst getLayoutRenderType =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDef<any, NodeDefPropsWithLayout<any>>): string | undefined =>\n getLayoutProps(cycle)(nodeDef).renderType\n\nconst isLayoutRenderTypeForm =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefEntityRenderType.form\n\nconst isLayoutRenderTypeTable =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefEntityRenderType.table\n\nconst isLayoutRenderTypeHyperlink =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefText): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.hyperlink\n\nconst isLayoutRenderTypeMarkdown =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefText): boolean =>\n getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.markdown\n\nconst getChildrenEntitiesInOwnPageUuids =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): string[] =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).indexChildren ?? []\n\nconst getLayoutChildren =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): NodeDefEntityLayoutChildItem[] =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).layoutChildren ?? []\n\nconst getPageUuid =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): string | undefined =>\n (getLayoutProps(cycle)(nodeDef) as NodeDefEntityLayout).pageUuid\n\nconst isDisplayInOwnPage =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefEntity): boolean =>\n !!getPageUuid(cycle)(nodeDef)\n\nconst isHiddenInMobile =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).hiddenInMobile ?? false\n\nconst isIncludedInMultipleEntitySummary =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).includedInMultipleEntitySummary ?? false\n\nconst isIncludedInPreviousCycleLink =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).includedInPreviousCycleLink ?? true\n\nconst isHiddenWhenNotRelevant =\n (cycle = defaultCycle) =>\n <L extends NodeDefLayout>(nodeDef: NodeDef<any, NodeDefPropsWithLayout<L>>): boolean =>\n getLayoutProps(cycle)(nodeDef).hiddenWhenNotRelevant ?? false\n\nconst isCodeShown =\n (cycle = defaultCycle) =>\n (nodeDef: NodeDefCode): boolean =>\n !!(getLayoutProps(cycle)(nodeDef).codeShown ?? true)\n\n// Analysis\nconst getAreaBasedEstimatedOf = (nodeDef: NodeDef<any>): string | undefined =>\n nodeDef.propsAdvancedDraft?.areaBasedEstimatedOf ?? nodeDef.propsAdvanced?.areaBasedEstimatedOf\n\nconst getIndexInChain = (nodeDef: NodeDef<any>): number | undefined => nodeDef.propsAdvanced?.index\n\n// Metadata\nconst getMetaHierarchy = (nodeDef: NodeDef<any>): string[] => nodeDef.meta?.h ?? []\n\nexport const NodeDefs = {\n isEntity,\n isBoolean,\n isCode,\n isCoordinate,\n isDate,\n isDecimal,\n isFile,\n isInteger,\n isTaxon,\n isText,\n isTime,\n isMultiple,\n isMultipleEntity,\n isSingle,\n isSingleEntity,\n isAttribute,\n isSingleAttribute,\n isMultipleAttribute,\n isKey,\n isAutoIncrementalKey,\n isQualifier,\n isReadOnly,\n isHidden,\n isEnumerate,\n getEnumeratingItemsExpression,\n isAutoCreateMinCountItems,\n getPrintOrientation,\n isAnalysis,\n isRoot,\n getType,\n isLayoutElement,\n getName,\n getLabelOrName,\n getDescription,\n getDefaultValues,\n isDefaultValueEvaluatedOneTime,\n getApplicable,\n getVisibleFields,\n isFieldVisible,\n isInCycle,\n isExcludedInClone,\n getEditableIf,\n isAlwaysEditable,\n getVisibleIf,\n isAlwaysVisible,\n\n getCategoryUuid,\n getParentCodeDefUuid,\n isAllowOnlyDeviceCoordinate,\n getCoordinateAdditionalFields,\n getMaxNumberDecimalDigits,\n getFileNameExpression,\n getFileType,\n getFileMaxSize,\n isGeotagInformationShown,\n isSecondsIncluded,\n getTaxonomyUuid,\n isVernacularNameSelectionKept,\n isVernacularNameAlwaysIncludedIfSingle,\n getTextTransform,\n getTextInputType,\n getItemsFilter,\n\n // layout\n getLayoutProps,\n getLayoutRenderType,\n isLayoutRenderTypeForm,\n isLayoutRenderTypeTable,\n getChildrenEntitiesInOwnPageUuids,\n getLayoutChildren,\n getPageUuid,\n isDisplayInOwnPage,\n isHiddenInMobile,\n isIncludedInMultipleEntitySummary,\n isIncludedInPreviousCycleLink,\n isHiddenWhenNotRelevant,\n isCodeShown,\n isLayoutRenderTypeHyperlink,\n isLayoutRenderTypeMarkdown,\n // validations\n getValidations,\n getValidationsExpressions,\n isRequired,\n // // Min Max\n hasMinOrMaxCount,\n getCount,\n getMaxCount,\n getMinCount,\n // Analysis\n getAreaBasedEstimatedOf,\n getIndexInChain,\n // Metadata\n getMetaHierarchy,\n}\n"]}
@@ -116,4 +116,4 @@ exports.CountValidator = {
116
116
  validateChildrenCountNodesArray,
117
117
  validateChildrenCountNodes,
118
118
  };
119
- //# sourceMappingURL=countVaildator.js.map
119
+ //# sourceMappingURL=countValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"countVaildator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/countVaildator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArenaRecordNode, NodePointer, Nodes } from '../../node'\nimport { NodeDef, NodeDefProps, NodeDefs, NodeDefType } from '../../nodeDef'\nimport { Records } from '../records'\nimport { Validation, ValidationFactory, ValidationResultFactory, ValidationSeverity } from '../../validation'\nimport { ArenaRecord } from '../record'\nimport { Survey, Surveys } from '../../survey'\nimport { RecordValidations } from '../recordValidations'\nimport { ValidationFields } from '../../validation/validation'\n\nconst createValidationResult = (params: {\n nodeDefUuid: string\n isMinCountValidation: boolean\n minCount: number\n maxCount: number\n}): Validation => {\n const { nodeDefUuid, isMinCountValidation, minCount, maxCount } = params\n\n if (minCount === maxCount) {\n return ValidationFactory.createInstance({\n valid: false,\n errors: [\n ValidationResultFactory.createInstance({\n key: 'record.nodes.count.invalid',\n params: { nodeDefUuid, count: minCount },\n severity: ValidationSeverity.error,\n }),\n ],\n })\n }\n return ValidationFactory.createInstance({\n valid: false,\n errors: [\n ValidationResultFactory.createInstance({\n key: isMinCountValidation ? 'record.nodes.count.minNotReached' : 'record.nodes.count.maxExceeded',\n params: { nodeDefUuid, ...(isMinCountValidation ? { minCount } : { maxCount }) },\n severity: ValidationSeverity.error,\n }),\n ],\n })\n}\n\nconst validateChildrenCount = (params: {\n parentNode: ArenaRecordNode\n nodeDefChild: NodeDef<NodeDefType, NodeDefProps>\n count: number\n}): Validation => {\n const { parentNode, nodeDefChild, count } = params\n\n const minCount = Nodes.getChildrenMinCount({ parentNode, nodeDef: nodeDefChild })\n const maxCount = Nodes.getChildrenMaxCount({ parentNode, nodeDef: nodeDefChild })\n\n const minCountValid = Number.isNaN(minCount) || count >= minCount\n const maxCountValid = Number.isNaN(maxCount) || count <= maxCount\n\n return minCountValid && maxCountValid\n ? ValidationFactory.createInstance()\n : createValidationResult({\n nodeDefUuid: nodeDefChild.uuid,\n isMinCountValidation: !minCountValid,\n minCount,\n maxCount,\n })\n}\n\nconst _countChildren = (params: {\n record: ArenaRecord\n parentNode: ArenaRecordNode\n childDef: NodeDef<NodeDefType, NodeDefProps>\n}) => {\n const { record, parentNode, childDef } = params\n const children = Records.getChildren({ parentNode, childDefUuid: childDef.uuid })(record)\n const nonEmptyChildren = NodeDefs.isAttribute(childDef)\n ? children.filter((child) => !Nodes.isValueBlank(child))\n : children\n return nonEmptyChildren.length\n}\n\nconst isNodePointerToBeValidated = (nodePointer: NodePointer) => NodeDefs.hasMinOrMaxCount(nodePointer.nodeDef)\n\nconst validateNodePointer = (params: {\n record: ArenaRecord\n nodeCtx: ArenaRecordNode\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}) => {\n const { record, nodeCtx, nodeDef } = params\n // Check children count only for applicable nodes\n if (Nodes.isChildApplicable(nodeCtx, nodeDef.uuid)) {\n const count = _countChildren({ record, parentNode: nodeCtx, childDef: nodeDef })\n return validateChildrenCount({ parentNode: nodeCtx, nodeDefChild: nodeDef, count })\n }\n return ValidationFactory.createInstance()\n}\n\nconst getNodePointersToValidate = (params: {\n survey: Survey\n record: ArenaRecord\n node: ArenaRecordNode\n}): NodePointer[] => {\n const { survey, record, node } = params\n const nodePointersToValidate: NodePointer[] = []\n\n const nodeDef = Surveys.getNodeDefByUuid({ uuid: node.nodeDefUuid, survey })\n\n const nodeParent = Records.getParent({ node })(record)\n if (nodeParent) {\n // always validate the node itself\n const nodePointer = { nodeCtx: nodeParent, nodeDef }\n if (isNodePointerToBeValidated(nodePointer)) {\n nodePointersToValidate.push(nodePointer)\n }\n }\n if (NodeDefs.isEntity(nodeDef) && !node.deleted) {\n // validate the count of every node def children\n const childDefs = Surveys.getNodeDefChildren({ survey, nodeDef })\n for (const childDef of childDefs) {\n const nodePointer = { nodeCtx: node, nodeDef: childDef }\n if (isNodePointerToBeValidated(nodePointer)) {\n nodePointersToValidate.push(nodePointer)\n }\n }\n }\n return nodePointersToValidate\n}\n\nconst validateChildrenCountNodesArray = (params: {\n survey: Survey\n record: ArenaRecord\n nodesArray: ArenaRecordNode[]\n}): ValidationFields => {\n const { survey, record, nodesArray } = params\n const validationsAcc: ValidationFields = {}\n for (const node of nodesArray) {\n const nodePointersToValidate = getNodePointersToValidate({ survey, record, node })\n\n for (const nodePointer of nodePointersToValidate) {\n const { nodeCtx, nodeDef } = nodePointer\n // check if validated already\n const validationChildrenCountKey = RecordValidations.getValidationChildrenCountKey({\n nodeParentUuid: nodeCtx.uuid,\n nodeDefChildUuid: nodeDef.uuid,\n })\n if (!(validationChildrenCountKey in validationsAcc)) {\n // validate the children count of this node pointer\n const validationNodePointer = validateNodePointer({ record, nodeCtx, nodeDef })\n validationsAcc[validationChildrenCountKey] = validationNodePointer\n }\n }\n }\n return validationsAcc\n}\n\nconst validateChildrenCountNodes = (params: {\n survey: Survey\n record: ArenaRecord\n nodes: { [key: string]: ArenaRecordNode }\n}): ValidationFields => validateChildrenCountNodesArray({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const CountValidator = {\n validateChildrenCount,\n validateChildrenCountNodesArray,\n validateChildrenCountNodes,\n}\n"]}
1
+ {"version":3,"file":"countValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/countValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArenaRecordNode, NodePointer, Nodes } from '../../node'\nimport { NodeDef, NodeDefProps, NodeDefs, NodeDefType } from '../../nodeDef'\nimport { Records } from '../records'\nimport { Validation, ValidationFactory, ValidationResultFactory, ValidationSeverity } from '../../validation'\nimport { ArenaRecord } from '../record'\nimport { Survey, Surveys } from '../../survey'\nimport { RecordValidations } from '../recordValidations'\nimport { ValidationFields } from '../../validation/validation'\n\nconst createValidationResult = (params: {\n nodeDefUuid: string\n isMinCountValidation: boolean\n minCount: number\n maxCount: number\n}): Validation => {\n const { nodeDefUuid, isMinCountValidation, minCount, maxCount } = params\n\n if (minCount === maxCount) {\n return ValidationFactory.createInstance({\n valid: false,\n errors: [\n ValidationResultFactory.createInstance({\n key: 'record.nodes.count.invalid',\n params: { nodeDefUuid, count: minCount },\n severity: ValidationSeverity.error,\n }),\n ],\n })\n }\n return ValidationFactory.createInstance({\n valid: false,\n errors: [\n ValidationResultFactory.createInstance({\n key: isMinCountValidation ? 'record.nodes.count.minNotReached' : 'record.nodes.count.maxExceeded',\n params: { nodeDefUuid, ...(isMinCountValidation ? { minCount } : { maxCount }) },\n severity: ValidationSeverity.error,\n }),\n ],\n })\n}\n\nconst validateChildrenCount = (params: {\n parentNode: ArenaRecordNode\n nodeDefChild: NodeDef<NodeDefType, NodeDefProps>\n count: number\n}): Validation => {\n const { parentNode, nodeDefChild, count } = params\n\n const minCount = Nodes.getChildrenMinCount({ parentNode, nodeDef: nodeDefChild })\n const maxCount = Nodes.getChildrenMaxCount({ parentNode, nodeDef: nodeDefChild })\n\n const minCountValid = Number.isNaN(minCount) || count >= minCount\n const maxCountValid = Number.isNaN(maxCount) || count <= maxCount\n\n return minCountValid && maxCountValid\n ? ValidationFactory.createInstance()\n : createValidationResult({\n nodeDefUuid: nodeDefChild.uuid,\n isMinCountValidation: !minCountValid,\n minCount,\n maxCount,\n })\n}\n\nconst _countChildren = (params: {\n record: ArenaRecord\n parentNode: ArenaRecordNode\n childDef: NodeDef<NodeDefType, NodeDefProps>\n}) => {\n const { record, parentNode, childDef } = params\n const children = Records.getChildren({ parentNode, childDefUuid: childDef.uuid })(record)\n const nonEmptyChildren = NodeDefs.isAttribute(childDef)\n ? children.filter((child) => !Nodes.isValueBlank(child))\n : children\n return nonEmptyChildren.length\n}\n\nconst isNodePointerToBeValidated = (nodePointer: NodePointer) => NodeDefs.hasMinOrMaxCount(nodePointer.nodeDef)\n\nconst validateNodePointer = (params: {\n record: ArenaRecord\n nodeCtx: ArenaRecordNode\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}) => {\n const { record, nodeCtx, nodeDef } = params\n // Check children count only for applicable nodes\n if (Nodes.isChildApplicable(nodeCtx, nodeDef.uuid)) {\n const count = _countChildren({ record, parentNode: nodeCtx, childDef: nodeDef })\n return validateChildrenCount({ parentNode: nodeCtx, nodeDefChild: nodeDef, count })\n }\n return ValidationFactory.createInstance()\n}\n\nconst getNodePointersToValidate = (params: {\n survey: Survey\n record: ArenaRecord\n node: ArenaRecordNode\n}): NodePointer[] => {\n const { survey, record, node } = params\n const nodePointersToValidate: NodePointer[] = []\n\n const nodeDef = Surveys.getNodeDefByUuid({ uuid: node.nodeDefUuid, survey })\n\n const nodeParent = Records.getParent({ node })(record)\n if (nodeParent) {\n // always validate the node itself\n const nodePointer = { nodeCtx: nodeParent, nodeDef }\n if (isNodePointerToBeValidated(nodePointer)) {\n nodePointersToValidate.push(nodePointer)\n }\n }\n if (NodeDefs.isEntity(nodeDef) && !node.deleted) {\n // validate the count of every node def children\n const childDefs = Surveys.getNodeDefChildren({ survey, nodeDef })\n for (const childDef of childDefs) {\n const nodePointer = { nodeCtx: node, nodeDef: childDef }\n if (isNodePointerToBeValidated(nodePointer)) {\n nodePointersToValidate.push(nodePointer)\n }\n }\n }\n return nodePointersToValidate\n}\n\nconst validateChildrenCountNodesArray = (params: {\n survey: Survey\n record: ArenaRecord\n nodesArray: ArenaRecordNode[]\n}): ValidationFields => {\n const { survey, record, nodesArray } = params\n const validationsAcc: ValidationFields = {}\n for (const node of nodesArray) {\n const nodePointersToValidate = getNodePointersToValidate({ survey, record, node })\n\n for (const nodePointer of nodePointersToValidate) {\n const { nodeCtx, nodeDef } = nodePointer\n // check if validated already\n const validationChildrenCountKey = RecordValidations.getValidationChildrenCountKey({\n nodeParentUuid: nodeCtx.uuid,\n nodeDefChildUuid: nodeDef.uuid,\n })\n if (!(validationChildrenCountKey in validationsAcc)) {\n // validate the children count of this node pointer\n const validationNodePointer = validateNodePointer({ record, nodeCtx, nodeDef })\n validationsAcc[validationChildrenCountKey] = validationNodePointer\n }\n }\n }\n return validationsAcc\n}\n\nconst validateChildrenCountNodes = (params: {\n survey: Survey\n record: ArenaRecord\n nodes: { [key: string]: ArenaRecordNode }\n}): ValidationFields => validateChildrenCountNodesArray({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const CountValidator = {\n validateChildrenCount,\n validateChildrenCountNodesArray,\n validateChildrenCountNodes,\n}\n"]}
@@ -14,13 +14,13 @@ const validation_1 = require("../../validation");
14
14
  const validations_1 = require("../../validation/validations");
15
15
  const records_1 = require("../records");
16
16
  const attributeValidator_1 = require("./attributeValidator");
17
- const countVaildator_1 = require("./countVaildator");
17
+ const countValidator_1 = require("./countValidator");
18
18
  const validateSortedNodes = (params) => __awaiter(void 0, void 0, void 0, function* () {
19
19
  const { survey, record, nodesArray } = params;
20
20
  // 1. validate attributes
21
21
  const attributeValidations = yield attributeValidator_1.AttributeValidator.validateSelfAndDependentSortedAttributes(Object.assign(Object.assign({}, params), { nodesArray }));
22
22
  // 2. validate min/max count
23
- const nodeCountValidations = countVaildator_1.CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray });
23
+ const nodeCountValidations = countValidator_1.CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray });
24
24
  // 3. merge validations
25
25
  return validations_1.Validations.recalculateValidity(validation_1.ValidationFactory.createInstance({
26
26
  valid: true,
@@ -1 +1 @@
1
- {"version":3,"file":"recordValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/recordValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAAgE;AAChE,8DAA0D;AAC1D,wCAAoC;AACpC,6DAK6B;AAC7B,qDAAiD;AAE1C,MAAM,mBAAmB,GAAG,CAAO,MAAuC,EAAuB,EAAE;IACxG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAE7C,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,MAAM,uCAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,+BAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,yBAAW,CAAC,mBAAmB,CACpC,8BAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAtBY,QAAA,mBAAmB,GAAnB,mBAAmB,CAsB/B;AAEM,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,CAE7E,CAAC,CAF4E,CAAA;AADhE,QAAA,aAAa,GAAb,aAAa,CACmD;AAEtE,MAAM,cAAc,GAAG,CAAO,MAA6B,EAAuB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACzB,MAAM,UAAU,GAAsB,EAAE,CAAA;IACxC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,iBAAO,CAAC,uBAAuB,CAAC;QAC9B,IAAI,EAAE,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAE;QAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;KACF,CAAC,CAAC,MAAM,CAAC,CAAA;IAEV,OAAO,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA;AAbY,QAAA,cAAc,GAAd,cAAc,CAa1B","sourcesContent":["import { ArenaRecordNode, NodesMap } from '../../node'\nimport { Validation, ValidationFactory } from '../../validation'\nimport { Validations } from '../../validation/validations'\nimport { Records } from '../records'\nimport {\n AttributesValidatorParams,\n AttributeValidator,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './attributeValidator'\nimport { CountValidator } from './countVaildator'\n\nexport const validateSortedNodes = async (params: SortedAttributesValidatorParams): Promise<Validation> => {\n const { survey, record, nodesArray } = params\n\n // 1. validate attributes\n const attributeValidations = await AttributeValidator.validateSelfAndDependentSortedAttributes({\n ...params,\n nodesArray,\n })\n\n // 2. validate min/max count\n const nodeCountValidations = CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray })\n\n // 3. merge validations\n return Validations.recalculateValidity(\n ValidationFactory.createInstance({\n valid: true,\n fields: {\n ...attributeValidations,\n ...nodeCountValidations,\n },\n })\n )\n}\n\nexport const validateNodes = async (params: AttributesValidatorParams): Promise<Validation> =>\n validateSortedNodes({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const validateRecord = async (params: RecordValidatorParams): Promise<Validation> => {\n const { record } = params\n const nodesArray: ArenaRecordNode[] = []\n const nodes: NodesMap = {}\n Records.visitDescendantsAndSelf({\n node: Records.getRoot(record)!,\n visitor: (node) => {\n nodesArray.push(node)\n nodes[node.uuid] = node\n },\n })(record)\n\n return validateSortedNodes({ ...params, nodesArray })\n}\n"]}
1
+ {"version":3,"file":"recordValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/recordValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAAgE;AAChE,8DAA0D;AAC1D,wCAAoC;AACpC,6DAK6B;AAC7B,qDAAiD;AAE1C,MAAM,mBAAmB,GAAG,CAAO,MAAuC,EAAuB,EAAE;IACxG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAE7C,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,MAAM,uCAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,+BAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,yBAAW,CAAC,mBAAmB,CACpC,8BAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAtBY,QAAA,mBAAmB,GAAnB,mBAAmB,CAsB/B;AAEM,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,CAE7E,CAAC,CAF4E,CAAA;AADhE,QAAA,aAAa,GAAb,aAAa,CACmD;AAEtE,MAAM,cAAc,GAAG,CAAO,MAA6B,EAAuB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACzB,MAAM,UAAU,GAAsB,EAAE,CAAA;IACxC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,iBAAO,CAAC,uBAAuB,CAAC;QAC9B,IAAI,EAAE,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAE;QAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;KACF,CAAC,CAAC,MAAM,CAAC,CAAA;IAEV,OAAO,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA;AAbY,QAAA,cAAc,GAAd,cAAc,CAa1B","sourcesContent":["import { ArenaRecordNode, NodesMap } from '../../node'\nimport { Validation, ValidationFactory } from '../../validation'\nimport { Validations } from '../../validation/validations'\nimport { Records } from '../records'\nimport {\n AttributesValidatorParams,\n AttributeValidator,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './attributeValidator'\nimport { CountValidator } from './countValidator'\n\nexport const validateSortedNodes = async (params: SortedAttributesValidatorParams): Promise<Validation> => {\n const { survey, record, nodesArray } = params\n\n // 1. validate attributes\n const attributeValidations = await AttributeValidator.validateSelfAndDependentSortedAttributes({\n ...params,\n nodesArray,\n })\n\n // 2. validate min/max count\n const nodeCountValidations = CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray })\n\n // 3. merge validations\n return Validations.recalculateValidity(\n ValidationFactory.createInstance({\n valid: true,\n fields: {\n ...attributeValidations,\n ...nodeCountValidations,\n },\n })\n )\n}\n\nexport const validateNodes = async (params: AttributesValidatorParams): Promise<Validation> =>\n validateSortedNodes({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const validateRecord = async (params: RecordValidatorParams): Promise<Validation> => {\n const { record } = params\n const nodesArray: ArenaRecordNode[] = []\n const nodes: NodesMap = {}\n Records.visitDescendantsAndSelf({\n node: Records.getRoot(record)!,\n visitor: (node) => {\n nodesArray.push(node)\n nodes[node.uuid] = node\n },\n })(record)\n\n return validateSortedNodes({ ...params, nodesArray })\n}\n"]}
@@ -7,7 +7,7 @@ const utils_1 = require("../utils");
7
7
  const calculateNodeDefHierarchy = (params) => {
8
8
  var _a, _b;
9
9
  const { nodeDef, nodeDefs } = params;
10
- const hiearchy = [];
10
+ const hierarchy = [];
11
11
  const visitedNodeDefUuids = new Set();
12
12
  let currentParentUuid = nodeDef.parentUuid;
13
13
  while (currentParentUuid) {
@@ -19,7 +19,7 @@ const calculateNodeDefHierarchy = (params) => {
19
19
  });
20
20
  }
21
21
  visitedNodeDefUuids.add(currentParentUuid);
22
- hiearchy.unshift(currentParentUuid);
22
+ hierarchy.unshift(currentParentUuid);
23
23
  const currentParentNode = nodeDefs[currentParentUuid];
24
24
  if (!currentParentNode) {
25
25
  throw new error_1.SystemError('nodeDef.parentNotFound', {
@@ -30,13 +30,13 @@ const calculateNodeDefHierarchy = (params) => {
30
30
  }
31
31
  currentParentUuid = currentParentNode.parentUuid;
32
32
  }
33
- return hiearchy;
33
+ return hierarchy;
34
34
  };
35
- const fixHiearchy = (params) => {
35
+ const fixHierarchy = (params) => {
36
36
  const { nodeDefs, nodeDef, sideEffect } = params;
37
37
  const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef });
38
38
  // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length
39
- return utils_1.Objects.isEqual(calculatedHierarchy, nodeDef_1.NodeDefs.getMetaHieararchy(nodeDef))
39
+ return utils_1.Objects.isEqual(calculatedHierarchy, nodeDef_1.NodeDefs.getMetaHierarchy(nodeDef))
40
40
  ? null
41
41
  : utils_1.Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect });
42
42
  };
@@ -71,7 +71,7 @@ const fixLayoutChildren = (params) => fixLayoutProp(Object.assign(Object.assign(
71
71
  const fix = (params) => {
72
72
  var _a, _b;
73
73
  const { nodeDef } = params;
74
- let nodeDefFixed = fixHiearchy(params);
74
+ let nodeDefFixed = fixHierarchy(params);
75
75
  if (nodeDef_1.NodeDefs.isEntity(nodeDef)) {
76
76
  nodeDefFixed = (_a = fixIndexChildren(Object.assign(Object.assign({}, params), { nodeDef: nodeDefFixed !== null && nodeDefFixed !== void 0 ? nodeDefFixed : nodeDef }))) !== null && _a !== void 0 ? _a : nodeDefFixed;
77
77
  nodeDefFixed = (_b = fixLayoutChildren(Object.assign(Object.assign({}, params), { nodeDef: nodeDefFixed !== null && nodeDefFixed !== void 0 ? nodeDefFixed : nodeDef }))) !== null && _b !== void 0 ? _b : nodeDefFixed;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefsFixer.js","sourceRoot":"","sources":["../../src/survey/nodeDefsFixer.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../error'\nimport { NodeDef, NodeDefEntity, NodeDefMap, NodeDefs } from '../nodeDef'\nimport { NodeDefEntityLayoutChildItem } from '../nodeDef/types/entity'\nimport { Objects } from '../utils'\nimport { MutationOptions } from '../utils/mutationOptions'\n\ntype NodeDefsFixParams = MutationOptions & {\n nodeDefs: NodeDefMap\n cycles: string[]\n}\n\ntype NodeDefsInCycleFixParams = NodeDefsFixParams & {\n cycle: string\n}\n\ntype NodeDefFixParams = NodeDefsInCycleFixParams & {\n nodeDef: NodeDef<any>\n}\n\ntype LayoutPropFixParams = NodeDefFixParams & {\n propName: string\n}\n\ntype LayoutPropFixerFnParams = LayoutPropFixParams & { propOld: any }\n\nconst calculateNodeDefHierarchy = (params: { nodeDef: NodeDef<any>; nodeDefs: NodeDefMap }): string[] => {\n const { nodeDef, nodeDefs } = params\n const hiearchy = []\n const visitedNodeDefUuids = new Set<string>()\n let currentParentUuid = nodeDef.parentUuid\n while (currentParentUuid) {\n if (visitedNodeDefUuids.has(currentParentUuid)) {\n throw new SystemError('nodeDef.hierarchyCircularDependency', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n visitedNodeDefUuids.add(currentParentUuid)\n hiearchy.unshift(currentParentUuid)\n const currentParentNode = nodeDefs[currentParentUuid]\n if (!currentParentNode) {\n throw new SystemError('nodeDef.parentNotFound', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n currentParentUuid = currentParentNode.parentUuid\n }\n return hiearchy\n}\n\nconst fixHiearchy = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDefs, nodeDef, sideEffect } = params\n const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef })\n // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length\n return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHieararchy(nodeDef))\n ? null\n : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect })\n}\n\nconst fixLayoutProp = (\n params: LayoutPropFixParams & { fixerFn: (params: LayoutPropFixerFnParams) => any }\n): NodeDef<any> | null => {\n const { cycle, nodeDef, propName, sideEffect, fixerFn } = params\n\n const propPath = ['props', 'layout', cycle, propName]\n\n const propOld = Objects.path(propPath)(nodeDef)\n\n if (Objects.isEmpty(propOld)) return null\n\n const propFixed = fixerFn({ ...params, propOld })\n\n if (Objects.isEqual(propOld, propFixed)) return null\n\n return Objects.assocPath({\n obj: nodeDef,\n path: propPath,\n value: propFixed,\n sideEffect,\n })\n}\n\nconst fixIndexChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'indexChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: indexChildren }) =>\n (indexChildren as string[]).filter((childDefUuid) => {\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n NodeDefs.isEntity(childDef) &&\n NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity)\n )\n }),\n })\n\nconst fixLayoutChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'layoutChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: layoutChildren }) =>\n (layoutChildren as NodeDefEntityLayoutChildItem[]).filter((item) => {\n const childDefUuid = typeof item === 'string' ? item : item.i\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n (!NodeDefs.isEntity(childDef) || !NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity))\n )\n }),\n })\n\nconst fix = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDef } = params\n let nodeDefFixed: NodeDef<any> | null = fixHiearchy(params)\n if (NodeDefs.isEntity(nodeDef)) {\n nodeDefFixed = fixIndexChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n nodeDefFixed = fixLayoutChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n }\n return nodeDefFixed\n}\n\nconst fixNodeDefs = (params: NodeDefsFixParams): { nodeDefs: NodeDefMap; updatedNodeDefs: NodeDefMap } => {\n const { nodeDefs, cycles } = params\n const nodeDefsResult: NodeDefMap = {}\n const updatedNodeDefs: NodeDefMap = {}\n\n for (const cycle of cycles) {\n for (const nodeDef of Object.values(nodeDefs)) {\n const nodeDefToFix = nodeDefsResult[nodeDef.uuid] ?? nodeDef\n const fixedNodeDef = fix({ ...params, cycle, nodeDef: nodeDefToFix })\n if (fixedNodeDef) {\n updatedNodeDefs[nodeDef.uuid] = fixedNodeDef\n }\n nodeDefsResult[nodeDef.uuid] = fixedNodeDef ?? nodeDef\n }\n }\n return {\n nodeDefs: nodeDefsResult,\n updatedNodeDefs,\n }\n}\n\nexport const NodeDefsFixer = {\n fixNodeDefs,\n}\n"]}
1
+ {"version":3,"file":"nodeDefsFixer.js","sourceRoot":"","sources":["../../src/survey/nodeDefsFixer.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../error'\nimport { NodeDef, NodeDefEntity, NodeDefMap, NodeDefs } from '../nodeDef'\nimport { NodeDefEntityLayoutChildItem } from '../nodeDef/types/entity'\nimport { Objects } from '../utils'\nimport { MutationOptions } from '../utils/mutationOptions'\n\ntype NodeDefsFixParams = MutationOptions & {\n nodeDefs: NodeDefMap\n cycles: string[]\n}\n\ntype NodeDefsInCycleFixParams = NodeDefsFixParams & {\n cycle: string\n}\n\ntype NodeDefFixParams = NodeDefsInCycleFixParams & {\n nodeDef: NodeDef<any>\n}\n\ntype LayoutPropFixParams = NodeDefFixParams & {\n propName: string\n}\n\ntype LayoutPropFixerFnParams = LayoutPropFixParams & { propOld: any }\n\nconst calculateNodeDefHierarchy = (params: { nodeDef: NodeDef<any>; nodeDefs: NodeDefMap }): string[] => {\n const { nodeDef, nodeDefs } = params\n const hierarchy = []\n const visitedNodeDefUuids = new Set<string>()\n let currentParentUuid = nodeDef.parentUuid\n while (currentParentUuid) {\n if (visitedNodeDefUuids.has(currentParentUuid)) {\n throw new SystemError('nodeDef.hierarchyCircularDependency', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n visitedNodeDefUuids.add(currentParentUuid)\n hierarchy.unshift(currentParentUuid)\n const currentParentNode = nodeDefs[currentParentUuid]\n if (!currentParentNode) {\n throw new SystemError('nodeDef.parentNotFound', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n currentParentUuid = currentParentNode.parentUuid\n }\n return hierarchy\n}\n\nconst fixHierarchy = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDefs, nodeDef, sideEffect } = params\n const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef })\n // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length\n return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHierarchy(nodeDef))\n ? null\n : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect })\n}\n\nconst fixLayoutProp = (\n params: LayoutPropFixParams & { fixerFn: (params: LayoutPropFixerFnParams) => any }\n): NodeDef<any> | null => {\n const { cycle, nodeDef, propName, sideEffect, fixerFn } = params\n\n const propPath = ['props', 'layout', cycle, propName]\n\n const propOld = Objects.path(propPath)(nodeDef)\n\n if (Objects.isEmpty(propOld)) return null\n\n const propFixed = fixerFn({ ...params, propOld })\n\n if (Objects.isEqual(propOld, propFixed)) return null\n\n return Objects.assocPath({\n obj: nodeDef,\n path: propPath,\n value: propFixed,\n sideEffect,\n })\n}\n\nconst fixIndexChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'indexChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: indexChildren }) =>\n (indexChildren as string[]).filter((childDefUuid) => {\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n NodeDefs.isEntity(childDef) &&\n NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity)\n )\n }),\n })\n\nconst fixLayoutChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'layoutChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: layoutChildren }) =>\n (layoutChildren as NodeDefEntityLayoutChildItem[]).filter((item) => {\n const childDefUuid = typeof item === 'string' ? item : item.i\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n (!NodeDefs.isEntity(childDef) || !NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity))\n )\n }),\n })\n\nconst fix = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDef } = params\n let nodeDefFixed: NodeDef<any> | null = fixHierarchy(params)\n if (NodeDefs.isEntity(nodeDef)) {\n nodeDefFixed = fixIndexChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n nodeDefFixed = fixLayoutChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n }\n return nodeDefFixed\n}\n\nconst fixNodeDefs = (params: NodeDefsFixParams): { nodeDefs: NodeDefMap; updatedNodeDefs: NodeDefMap } => {\n const { nodeDefs, cycles } = params\n const nodeDefsResult: NodeDefMap = {}\n const updatedNodeDefs: NodeDefMap = {}\n\n for (const cycle of cycles) {\n for (const nodeDef of Object.values(nodeDefs)) {\n const nodeDefToFix = nodeDefsResult[nodeDef.uuid] ?? nodeDef\n const fixedNodeDef = fix({ ...params, cycle, nodeDef: nodeDefToFix })\n if (fixedNodeDef) {\n updatedNodeDefs[nodeDef.uuid] = fixedNodeDef\n }\n nodeDefsResult[nodeDef.uuid] = fixedNodeDef ?? nodeDef\n }\n }\n return {\n nodeDefs: nodeDefsResult,\n updatedNodeDefs,\n }\n}\n\nexport const NodeDefsFixer = {\n fixNodeDefs,\n}\n"]}
@@ -78,7 +78,7 @@ const selfReferenceAllowedByDependencyType = {
78
78
  [survey_1.SurveyDependencyType.validations]: true,
79
79
  [survey_1.SurveyDependencyType.visible]: false,
80
80
  };
81
- const newDependecyGraph = () => ({
81
+ const newDependencyGraph = () => ({
82
82
  [survey_1.SurveyDependencyType.applicable]: {},
83
83
  [survey_1.SurveyDependencyType.defaultValues]: {},
84
84
  [survey_1.SurveyDependencyType.editable]: {},
@@ -92,7 +92,7 @@ const newDependecyGraph = () => ({
92
92
  [survey_1.SurveyDependencyType.validations]: {},
93
93
  [survey_1.SurveyDependencyType.visible]: {},
94
94
  });
95
- const getDependencyGraph = (survey) => { var _a; return (_a = survey.dependencyGraph) !== null && _a !== void 0 ? _a : newDependecyGraph(); };
95
+ const getDependencyGraph = (survey) => { var _a; return (_a = survey.dependencyGraph) !== null && _a !== void 0 ? _a : newDependencyGraph(); };
96
96
  const getDependencies = (params) => {
97
97
  var _a;
98
98
  var _b;
@@ -268,7 +268,7 @@ const removeNodeDefDependencies = (params) => {
268
268
  };
269
269
  exports.removeNodeDefDependencies = removeNodeDefDependencies;
270
270
  const buildAndAssocDependencyGraph = (survey) => __awaiter(void 0, void 0, void 0, function* () {
271
- survey.dependencyGraph = newDependecyGraph();
271
+ survey.dependencyGraph = newDependencyGraph();
272
272
  const sideEffect = true; // when the dependency graph is built from scratch, do side effect to avoid re-creating objects
273
273
  // add dependencies for every node def
274
274
  let surveyUpdated = survey;