@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
@@ -114,7 +114,7 @@ const isLayoutRenderTypeForm = (cycle = defaultCycle) => (nodeDef) => getLayoutR
114
114
  const isLayoutRenderTypeTable = (cycle = defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === NodeDefEntityRenderType.table;
115
115
  const isLayoutRenderTypeHyperlink = (cycle = defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.hyperlink;
116
116
  const isLayoutRenderTypeMarkdown = (cycle = defaultCycle) => (nodeDef) => getLayoutRenderType(cycle)(nodeDef) === NodeDefTextRenderType.markdown;
117
- const getChildrenEntitiesInOwnPageUudis = (cycle = defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).indexChildren) !== null && _a !== void 0 ? _a : []; };
117
+ const getChildrenEntitiesInOwnPageUuids = (cycle = defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).indexChildren) !== null && _a !== void 0 ? _a : []; };
118
118
  const getLayoutChildren = (cycle = defaultCycle) => (nodeDef) => { var _a; return (_a = getLayoutProps(cycle)(nodeDef).layoutChildren) !== null && _a !== void 0 ? _a : []; };
119
119
  const getPageUuid = (cycle = defaultCycle) => (nodeDef) => getLayoutProps(cycle)(nodeDef).pageUuid;
120
120
  const isDisplayInOwnPage = (cycle = defaultCycle) => (nodeDef) => !!getPageUuid(cycle)(nodeDef);
@@ -127,7 +127,7 @@ const isCodeShown = (cycle = defaultCycle) => (nodeDef) => { var _a; return !!((
127
127
  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; };
128
128
  const getIndexInChain = (nodeDef) => { var _a; return (_a = nodeDef.propsAdvanced) === null || _a === void 0 ? void 0 : _a.index; };
129
129
  // Metadata
130
- 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 : []; };
130
+ 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 : []; };
131
131
  export const NodeDefs = {
132
132
  isEntity,
133
133
  isBoolean,
@@ -195,7 +195,7 @@ export const NodeDefs = {
195
195
  getLayoutRenderType,
196
196
  isLayoutRenderTypeForm,
197
197
  isLayoutRenderTypeTable,
198
- getChildrenEntitiesInOwnPageUudis,
198
+ getChildrenEntitiesInOwnPageUuids,
199
199
  getLayoutChildren,
200
200
  getPageUuid,
201
201
  isDisplayInOwnPage,
@@ -219,6 +219,6 @@ export const NodeDefs = {
219
219
  getAreaBasedEstimatedOf,
220
220
  getIndexInChain,
221
221
  // Metadata
222
- getMetaHieararchy,
222
+ getMetaHierarchy,
223
223
  };
224
224
  //# 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"]}
@@ -113,4 +113,4 @@ export const CountValidator = {
113
113
  validateChildrenCountNodesArray,
114
114
  validateChildrenCountNodes,
115
115
  };
116
- //# sourceMappingURL=countVaildator.js.map
116
+ //# 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"]}
@@ -11,7 +11,7 @@ import { ValidationFactory } from '../../validation';
11
11
  import { Validations } from '../../validation/validations';
12
12
  import { Records } from '../records';
13
13
  import { AttributeValidator, } from './attributeValidator';
14
- import { CountValidator } from './countVaildator';
14
+ import { CountValidator } from './countValidator';
15
15
  export const validateSortedNodes = (params) => __awaiter(void 0, void 0, void 0, function* () {
16
16
  const { survey, record, nodesArray } = params;
17
17
  // 1. validate attributes
@@ -1 +1 @@
1
- {"version":3,"file":"recordValidator.js","sourceRoot":"","sources":["../../../../src/record/recordValidator/recordValidator.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAc,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAEL,kBAAkB,GAGnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,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,kBAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,cAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,WAAW,CAAC,mBAAmB,CACpC,iBAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,mBAAmB,iCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,CAE7E,CAAC,CAF4E,CAAA;AAE7E,MAAM,CAAC,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,OAAO,CAAC,uBAAuB,CAAC;QAC9B,IAAI,EAAE,OAAO,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,mBAAmB,iCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA","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,OAAO,EAAc,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAEL,kBAAkB,GAGnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,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,kBAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,cAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,WAAW,CAAC,mBAAmB,CACpC,iBAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,mBAAmB,iCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,CAE7E,CAAC,CAF4E,CAAA;AAE7E,MAAM,CAAC,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,OAAO,CAAC,uBAAuB,CAAC;QAC9B,IAAI,EAAE,OAAO,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,mBAAmB,iCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA","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"]}
@@ -4,7 +4,7 @@ import { Objects } from '../utils';
4
4
  const calculateNodeDefHierarchy = (params) => {
5
5
  var _a, _b;
6
6
  const { nodeDef, nodeDefs } = params;
7
- const hiearchy = [];
7
+ const hierarchy = [];
8
8
  const visitedNodeDefUuids = new Set();
9
9
  let currentParentUuid = nodeDef.parentUuid;
10
10
  while (currentParentUuid) {
@@ -16,7 +16,7 @@ const calculateNodeDefHierarchy = (params) => {
16
16
  });
17
17
  }
18
18
  visitedNodeDefUuids.add(currentParentUuid);
19
- hiearchy.unshift(currentParentUuid);
19
+ hierarchy.unshift(currentParentUuid);
20
20
  const currentParentNode = nodeDefs[currentParentUuid];
21
21
  if (!currentParentNode) {
22
22
  throw new SystemError('nodeDef.parentNotFound', {
@@ -27,13 +27,13 @@ const calculateNodeDefHierarchy = (params) => {
27
27
  }
28
28
  currentParentUuid = currentParentNode.parentUuid;
29
29
  }
30
- return hiearchy;
30
+ return hierarchy;
31
31
  };
32
- const fixHiearchy = (params) => {
32
+ const fixHierarchy = (params) => {
33
33
  const { nodeDefs, nodeDef, sideEffect } = params;
34
34
  const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef });
35
35
  // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length
36
- return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHieararchy(nodeDef))
36
+ return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHierarchy(nodeDef))
37
37
  ? null
38
38
  : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect });
39
39
  };
@@ -68,7 +68,7 @@ const fixLayoutChildren = (params) => fixLayoutProp(Object.assign(Object.assign(
68
68
  const fix = (params) => {
69
69
  var _a, _b;
70
70
  const { nodeDef } = params;
71
- let nodeDefFixed = fixHiearchy(params);
71
+ let nodeDefFixed = fixHierarchy(params);
72
72
  if (NodeDefs.isEntity(nodeDef)) {
73
73
  nodeDefFixed = (_a = fixIndexChildren(Object.assign(Object.assign({}, params), { nodeDef: nodeDefFixed !== null && nodeDefFixed !== void 0 ? nodeDefFixed : nodeDef }))) !== null && _a !== void 0 ? _a : nodeDefFixed;
74
74
  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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAsC,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAsBlC,MAAM,yBAAyB,GAAG,CAAC,MAAuD,EAAY,EAAE;;IACtG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IACpC,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7C,IAAI,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAA;IAC1C,OAAO,iBAAiB,EAAE,CAAC;QACzB,IAAI,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,WAAW,CAAC,qCAAqC,EAAE;gBAC3D,WAAW,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI;gBAChC,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,UAAU,EAAE,iBAAiB;aAC9B,CAAC,CAAA;QACJ,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC1C,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QACpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,WAAW,CAAC,wBAAwB,EAAE;gBAC9C,WAAW,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI;gBAChC,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,UAAU,EAAE,iBAAiB;aAC9B,CAAC,CAAA;QACJ,CAAC;QACD,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAA;IAClD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAuB,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAChD,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5E,yHAAyH;IACzH,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAA;AACtG,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,MAAmF,EAC9D,EAAE;IACvB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEhE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAErD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IAE/C,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,SAAS,GAAG,OAAO,iCAAM,MAAM,KAAE,OAAO,IAAG,CAAA;IAEjD,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpD,OAAO,OAAO,CAAC,SAAS,CAAC;QACvB,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,SAAS;QAChB,UAAU;KACX,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAuB,EAAE,CACzE,aAAa,iCACR,MAAM,KACT,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CACtD,aAA0B,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;QACvC,OAAO,CACL,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,MAAK,MAAM,CAAC,OAAO,CAAC,IAAI;YAC5C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC3B,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAyB,CAAC,CAC9D,CAAA;IACH,CAAC,CAAC,IACJ,CAAA;AAEJ,MAAM,iBAAiB,GAAG,CAAC,MAAwB,EAAuB,EAAE,CAC1E,aAAa,iCACR,MAAM,KACT,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CACvD,cAAiD,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACjE,MAAM,YAAY,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;QACvC,OAAO,CACL,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,MAAK,MAAM,CAAC,OAAO,CAAC,IAAI;YAC5C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAyB,CAAC,CAAC,CACjG,CAAA;IACH,CAAC,CAAC,IACJ,CAAA;AAEJ,MAAM,GAAG,GAAG,CAAC,MAAwB,EAAuB,EAAE;;IAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAC1B,IAAI,YAAY,GAAwB,YAAY,CAAC,MAAM,CAAC,CAAA;IAC5D,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,YAAY,SAAG,gBAAgB,iCAAM,MAAM,KAAE,OAAO,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,OAAO,IAAG,mCAAI,YAAY,CAAA;QAChG,YAAY,SAAG,iBAAiB,iCAAM,MAAM,KAAE,OAAO,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,OAAO,IAAG,mCAAI,YAAY,CAAA;IACnG,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAyD,EAAE;;IACvG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACnC,MAAM,cAAc,GAAe,EAAE,CAAA;IACrC,MAAM,eAAe,GAAe,EAAE,CAAA;IAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,SAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAI,OAAO,CAAA;YAC5D,MAAM,YAAY,GAAG,GAAG,iCAAM,MAAM,KAAE,KAAK,EAAE,OAAO,EAAE,YAAY,IAAG,CAAA;YACrE,IAAI,YAAY,EAAE,CAAC;gBACjB,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;YAC9C,CAAC;YACD,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,OAAO,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,eAAe;KAChB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;CACZ,CAAA","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"]}
@@ -42,7 +42,7 @@ const selfReferenceAllowedByDependencyType = {
42
42
  [SurveyDependencyType.validations]: true,
43
43
  [SurveyDependencyType.visible]: false,
44
44
  };
45
- const newDependecyGraph = () => ({
45
+ const newDependencyGraph = () => ({
46
46
  [SurveyDependencyType.applicable]: {},
47
47
  [SurveyDependencyType.defaultValues]: {},
48
48
  [SurveyDependencyType.editable]: {},
@@ -56,7 +56,7 @@ const newDependecyGraph = () => ({
56
56
  [SurveyDependencyType.validations]: {},
57
57
  [SurveyDependencyType.visible]: {},
58
58
  });
59
- const getDependencyGraph = (survey) => { var _a; return (_a = survey.dependencyGraph) !== null && _a !== void 0 ? _a : newDependecyGraph(); };
59
+ const getDependencyGraph = (survey) => { var _a; return (_a = survey.dependencyGraph) !== null && _a !== void 0 ? _a : newDependencyGraph(); };
60
60
  const getDependencies = (params) => {
61
61
  var _a;
62
62
  var _b;
@@ -228,7 +228,7 @@ export const removeNodeDefDependencies = (params) => {
228
228
  return Object.assign(Object.assign({}, survey), { dependencyGraph: graphsUpdated });
229
229
  };
230
230
  export const buildAndAssocDependencyGraph = (survey) => __awaiter(void 0, void 0, void 0, function* () {
231
- survey.dependencyGraph = newDependecyGraph();
231
+ survey.dependencyGraph = newDependencyGraph();
232
232
  const sideEffect = true; // when the dependency graph is built from scratch, do side effect to avoid re-creating objects
233
233
  // add dependencies for every node def
234
234
  let surveyUpdated = survey;
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/survey/surveys/dependencies.ts"],"names":[],"mappings":"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","sourcesContent":["import * as SurveyNodeDefs from './nodeDefs'\nimport {\n NodeDef,\n NodeDefCode,\n NodeDefEntity,\n NodeDefExpression,\n NodeDefFile,\n NodeDefProps,\n NodeDefs,\n NodeDefType,\n} from '../../nodeDef'\nimport { NodeDefExpressionEvaluator } from '../../nodeDefExpressionEvaluator'\n\nimport { Survey, SurveyDependencyGraph, SurveyDependencyType } from '../survey'\nimport { Arrays, Objects } from '../../utils'\nimport { NodeDefExpressionFactory } from '../../nodeDef/nodeDef'\nimport { Dictionary } from '../../common'\n\nconst functionsRequiringOnUpdateDependency = ['recordDateLastModified']\n\nconst isContextParentByDependencyType = {\n [SurveyDependencyType.applicable]: true,\n [SurveyDependencyType.defaultValues]: true,\n [SurveyDependencyType.editable]: true,\n [SurveyDependencyType.enumeratingItems]: true,\n [SurveyDependencyType.fileName]: true,\n [SurveyDependencyType.formula]: false,\n [SurveyDependencyType.maxCount]: true,\n [SurveyDependencyType.minCount]: true,\n [SurveyDependencyType.onUpdate]: true,\n [SurveyDependencyType.parentCode]: false,\n [SurveyDependencyType.validations]: true,\n [SurveyDependencyType.visible]: true,\n}\n\nconst selfReferenceAllowedByDependencyType = {\n [SurveyDependencyType.applicable]: false,\n [SurveyDependencyType.defaultValues]: false,\n [SurveyDependencyType.editable]: false,\n [SurveyDependencyType.enumeratingItems]: false,\n [SurveyDependencyType.fileName]: false,\n [SurveyDependencyType.formula]: false,\n [SurveyDependencyType.maxCount]: false,\n [SurveyDependencyType.minCount]: false,\n [SurveyDependencyType.onUpdate]: false,\n [SurveyDependencyType.parentCode]: false,\n [SurveyDependencyType.validations]: true,\n [SurveyDependencyType.visible]: false,\n}\n\nconst newDependecyGraph = () => ({\n [SurveyDependencyType.applicable]: {},\n [SurveyDependencyType.defaultValues]: {},\n [SurveyDependencyType.editable]: {},\n [SurveyDependencyType.enumeratingItems]: {},\n [SurveyDependencyType.fileName]: {},\n [SurveyDependencyType.formula]: {},\n [SurveyDependencyType.maxCount]: {},\n [SurveyDependencyType.minCount]: {},\n [SurveyDependencyType.onUpdate]: {},\n [SurveyDependencyType.parentCode]: {},\n [SurveyDependencyType.validations]: {},\n [SurveyDependencyType.visible]: {},\n})\n\nconst getDependencyGraph = (survey: Survey): SurveyDependencyGraph => survey.dependencyGraph ?? newDependecyGraph()\n\nconst getDependencies = (params: {\n graphs: SurveyDependencyGraph\n type: SurveyDependencyType\n nodeDefUuid: string\n}): Array<string> => {\n const { graphs, type, nodeDefUuid } = params\n return type === SurveyDependencyType.onUpdate ? [] : ((graphs?.[type]?.[nodeDefUuid] ?? []) as string[])\n}\n\nexport const getNodeDefDependents = (params: {\n survey: Survey\n nodeDefUuid: string\n dependencyType?: SurveyDependencyType\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDefUuid, dependencyType } = params\n const dependencyGraph = getDependencyGraph(survey)\n\n const dependentUuids = new Set<string>()\n\n const dependencyTypes: SurveyDependencyType[] = dependencyType\n ? [dependencyType]\n : Object.values(SurveyDependencyType)\n\n for (const depType of dependencyTypes) {\n const dependentUuidsTemp = getDependencies({ graphs: dependencyGraph, type: depType, nodeDefUuid })\n for (const dependentUuid of dependentUuidsTemp) {\n dependentUuids.add(dependentUuid)\n }\n }\n return dependentUuids.size > 0 ? SurveyNodeDefs.findNodeDefsByUuids({ survey, uuids: [...dependentUuids] }) : []\n}\n\nexport const getOnUpdateDependents = (params: { survey: Survey }) => {\n const { survey } = params\n const dependencyGraph = getDependencyGraph(survey)\n const sourceDefUuids = Object.keys(dependencyGraph[SurveyDependencyType.onUpdate] ?? {})\n return sourceDefUuids.length > 0 ? SurveyNodeDefs.findNodeDefsByUuids({ survey, uuids: sourceDefUuids }) : []\n}\n\n// UPDATE\n\nconst addDependency = (params: {\n graphs: SurveyDependencyGraph\n type: SurveyDependencyType\n nodeDefUuid: string\n nodeDefDepUuid: string\n sideEffect: boolean\n}): SurveyDependencyGraph => {\n const { graphs, type, nodeDefUuid, nodeDefDepUuid, sideEffect = false } = params\n const deps = getDependencies({ graphs, type, nodeDefUuid })\n const depsUpdated = Arrays.addItem(nodeDefDepUuid, { sideEffect })(deps)\n return Objects.assocPath({ obj: graphs, path: [type, nodeDefUuid], value: depsUpdated, sideEffect })\n}\n\nconst addDependencies = async (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType>\n type: SurveyDependencyType\n graphs: SurveyDependencyGraph\n expressions: NodeDefExpression[]\n sideEffect?: boolean\n}): Promise<SurveyDependencyGraph> => {\n const { survey, nodeDef, type, expressions, graphs: graphsParam, sideEffect = false } = params\n\n if (!expressions || expressions.length === 0) return graphsParam\n\n let graphsUpdated = sideEffect ? graphsParam : { ...graphsParam }\n\n const isContextParent = isContextParentByDependencyType[type]\n const selfReferenceAllowed = selfReferenceAllowedByDependencyType[type]\n\n const findReferencedNodeDefs = async (\n expression: string | undefined\n ): Promise<{ [key: string]: NodeDef<NodeDefType> }> => {\n if (!expression) return {}\n\n const referencedNodeDefUuids = await new NodeDefExpressionEvaluator().findReferencedNodeDefUuids({\n expression,\n survey,\n nodeDef,\n isContextParent,\n selfReferenceAllowed,\n })\n const referencedNodeDefsByUuid: Dictionary<NodeDef<any>> = {}\n for (const uuid of referencedNodeDefUuids) {\n referencedNodeDefsByUuid[uuid] = SurveyNodeDefs.getNodeDefByUuid({ survey, uuid })\n }\n return referencedNodeDefsByUuid\n }\n\n const referencedNodeDefsArray = await Promise.all(\n expressions.flatMap((nodeDefExpr) => [\n findReferencedNodeDefs(nodeDefExpr.expression),\n findReferencedNodeDefs(nodeDefExpr.applyIf),\n ])\n )\n const referencedNodeDefs: Dictionary<NodeDef<any>> = Object.assign({}, ...referencedNodeDefsArray)\n\n for (const nodeDefRef of Object.values(referencedNodeDefs)) {\n graphsUpdated = addDependency({\n graphs: graphsUpdated,\n type,\n nodeDefUuid: nodeDefRef.uuid,\n nodeDefDepUuid: nodeDef.uuid,\n sideEffect,\n })\n }\n\n return graphsUpdated\n}\n\nexport const addNodeDefDependencies = async (params: {\n nodeDef: NodeDef<NodeDefType>\n survey: Survey\n sideEffect?: boolean\n}): Promise<Survey> => {\n const { nodeDef, survey, sideEffect = false } = params\n const graphs = getDependencyGraph(survey)\n let graphsUpdated = sideEffect ? graphs : { ...graphs }\n\n const _addDependencies = async (type: SurveyDependencyType, expressions: NodeDefExpression[]) => {\n let _graphUpdated = await addDependencies({\n survey,\n nodeDef,\n type,\n expressions,\n graphs: graphsUpdated,\n sideEffect,\n })\n // add onUpdate dependencies\n if (\n expressions.some((expression) =>\n functionsRequiringOnUpdateDependency.some(\n (functionName) => expression.applyIf?.includes(functionName) || expression.expression?.includes(functionName)\n )\n )\n ) {\n _graphUpdated = Objects.assocPath({\n obj: _graphUpdated,\n path: [SurveyDependencyType.onUpdate, nodeDef.uuid],\n value: true,\n sideEffect,\n })\n }\n return _graphUpdated\n }\n graphsUpdated = await _addDependencies(SurveyDependencyType.applicable, NodeDefs.getApplicable(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.defaultValues, NodeDefs.getDefaultValues(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.editable, NodeDefs.getEditableIf(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.validations, NodeDefs.getValidationsExpressions(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.visible, NodeDefs.getVisibleIf(nodeDef))\n const maxCount = NodeDefs.getMaxCount(nodeDef)\n if (Array.isArray(maxCount)) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.maxCount, maxCount)\n }\n const minCount = NodeDefs.getMinCount(nodeDef)\n if (Array.isArray(minCount)) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.minCount, minCount)\n }\n // file name expression\n if (NodeDefs.getType(nodeDef) === NodeDefType.file) {\n const fileNameExpression = NodeDefs.getFileNameExpression(nodeDef as NodeDefFile)\n if (fileNameExpression) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.fileName, [\n NodeDefExpressionFactory.createInstance({ expression: fileNameExpression }),\n ])\n }\n }\n if (NodeDefs.isEntity(nodeDef)) {\n const enumeratingItemsExpression = NodeDefs.getEnumeratingItemsExpression(nodeDef as NodeDefEntity)\n if (enumeratingItemsExpression) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.enumeratingItems, [\n NodeDefExpressionFactory.createInstance({ expression: enumeratingItemsExpression }),\n ])\n }\n }\n // parent code\n if (NodeDefs.getType(nodeDef) === NodeDefType.code) {\n const parentCodeDefUuid = NodeDefs.getParentCodeDefUuid(nodeDef as NodeDefCode)\n if (parentCodeDefUuid) {\n graphsUpdated = addDependency({\n graphs: graphsUpdated,\n type: SurveyDependencyType.parentCode,\n nodeDefUuid: parentCodeDefUuid,\n nodeDefDepUuid: nodeDef.uuid,\n sideEffect,\n })\n }\n }\n if (sideEffect) {\n survey.dependencyGraph = graphsUpdated\n return survey\n }\n return { ...survey, dependencyGraph: graphsUpdated }\n}\n\n// DELETE\n\nconst _removeNodeDefDependenciesOfType = (params: {\n graphs: SurveyDependencyGraph\n dependencyType: SurveyDependencyType\n nodeDefUuid: string\n}): SurveyDependencyGraph => {\n const { graphs, nodeDefUuid, dependencyType } = params\n\n const graphsUpdated = { ...graphs }\n let graphUpdated = { ...graphsUpdated[dependencyType] }\n // dissoc nodeDefUuid dependency as dependent\n graphUpdated = Objects.dissoc({ obj: graphUpdated, prop: nodeDefUuid })\n\n if (dependencyType !== SurveyDependencyType.onUpdate) {\n // dissoc nodeDefUuid dependency from sources (if any)\n for (const [key, dependentUuids] of Object.entries(graphUpdated)) {\n graphUpdated[key] = Arrays.removeItem(nodeDefUuid)(dependentUuids as string[])\n }\n }\n\n graphsUpdated[dependencyType] = graphUpdated\n return graphsUpdated\n}\n\nexport const removeNodeDefDependencies = (params: {\n survey: Survey\n nodeDefUuid: string\n dependencyType?: SurveyDependencyType\n}): Survey => {\n const { survey, nodeDefUuid, dependencyType = null } = params\n const graphs = getDependencyGraph(survey)\n const dependencyTypes = dependencyType ? [dependencyType] : (Object.keys(graphs) as SurveyDependencyType[])\n const graphsUpdated = dependencyTypes.reduce(\n (dependencyGraphAcc, type) =>\n _removeNodeDefDependenciesOfType({ graphs: dependencyGraphAcc, dependencyType: type, nodeDefUuid }),\n graphs\n )\n return { ...survey, dependencyGraph: graphsUpdated }\n}\n\nexport const buildAndAssocDependencyGraph = async (survey: Survey): Promise<Survey> => {\n survey.dependencyGraph = newDependecyGraph()\n\n const sideEffect = true // when the dependency graph is built from scratch, do side effect to avoid re-creating objects\n\n // add dependencies for every node def\n let surveyUpdated = survey\n for (const nodeDef of SurveyNodeDefs.getNodeDefsArray(survey)) {\n // sequential: each iteration updates the survey\n surveyUpdated = await addNodeDefDependencies({ nodeDef, survey: surveyUpdated, sideEffect }) // NOSONAR\n }\n return surveyUpdated\n}\n"]}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/survey/surveys/dependencies.ts"],"names":[],"mappings":"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","sourcesContent":["import * as SurveyNodeDefs from './nodeDefs'\nimport {\n NodeDef,\n NodeDefCode,\n NodeDefEntity,\n NodeDefExpression,\n NodeDefFile,\n NodeDefProps,\n NodeDefs,\n NodeDefType,\n} from '../../nodeDef'\nimport { NodeDefExpressionEvaluator } from '../../nodeDefExpressionEvaluator'\n\nimport { Survey, SurveyDependencyGraph, SurveyDependencyType } from '../survey'\nimport { Arrays, Objects } from '../../utils'\nimport { NodeDefExpressionFactory } from '../../nodeDef/nodeDef'\nimport { Dictionary } from '../../common'\n\nconst functionsRequiringOnUpdateDependency = ['recordDateLastModified']\n\nconst isContextParentByDependencyType = {\n [SurveyDependencyType.applicable]: true,\n [SurveyDependencyType.defaultValues]: true,\n [SurveyDependencyType.editable]: true,\n [SurveyDependencyType.enumeratingItems]: true,\n [SurveyDependencyType.fileName]: true,\n [SurveyDependencyType.formula]: false,\n [SurveyDependencyType.maxCount]: true,\n [SurveyDependencyType.minCount]: true,\n [SurveyDependencyType.onUpdate]: true,\n [SurveyDependencyType.parentCode]: false,\n [SurveyDependencyType.validations]: true,\n [SurveyDependencyType.visible]: true,\n}\n\nconst selfReferenceAllowedByDependencyType = {\n [SurveyDependencyType.applicable]: false,\n [SurveyDependencyType.defaultValues]: false,\n [SurveyDependencyType.editable]: false,\n [SurveyDependencyType.enumeratingItems]: false,\n [SurveyDependencyType.fileName]: false,\n [SurveyDependencyType.formula]: false,\n [SurveyDependencyType.maxCount]: false,\n [SurveyDependencyType.minCount]: false,\n [SurveyDependencyType.onUpdate]: false,\n [SurveyDependencyType.parentCode]: false,\n [SurveyDependencyType.validations]: true,\n [SurveyDependencyType.visible]: false,\n}\n\nconst newDependencyGraph = () => ({\n [SurveyDependencyType.applicable]: {},\n [SurveyDependencyType.defaultValues]: {},\n [SurveyDependencyType.editable]: {},\n [SurveyDependencyType.enumeratingItems]: {},\n [SurveyDependencyType.fileName]: {},\n [SurveyDependencyType.formula]: {},\n [SurveyDependencyType.maxCount]: {},\n [SurveyDependencyType.minCount]: {},\n [SurveyDependencyType.onUpdate]: {},\n [SurveyDependencyType.parentCode]: {},\n [SurveyDependencyType.validations]: {},\n [SurveyDependencyType.visible]: {},\n})\n\nconst getDependencyGraph = (survey: Survey): SurveyDependencyGraph => survey.dependencyGraph ?? newDependencyGraph()\n\nconst getDependencies = (params: {\n graphs: SurveyDependencyGraph\n type: SurveyDependencyType\n nodeDefUuid: string\n}): Array<string> => {\n const { graphs, type, nodeDefUuid } = params\n return type === SurveyDependencyType.onUpdate ? [] : ((graphs?.[type]?.[nodeDefUuid] ?? []) as string[])\n}\n\nexport const getNodeDefDependents = (params: {\n survey: Survey\n nodeDefUuid: string\n dependencyType?: SurveyDependencyType\n}): NodeDef<NodeDefType, NodeDefProps>[] => {\n const { survey, nodeDefUuid, dependencyType } = params\n const dependencyGraph = getDependencyGraph(survey)\n\n const dependentUuids = new Set<string>()\n\n const dependencyTypes: SurveyDependencyType[] = dependencyType\n ? [dependencyType]\n : Object.values(SurveyDependencyType)\n\n for (const depType of dependencyTypes) {\n const dependentUuidsTemp = getDependencies({ graphs: dependencyGraph, type: depType, nodeDefUuid })\n for (const dependentUuid of dependentUuidsTemp) {\n dependentUuids.add(dependentUuid)\n }\n }\n return dependentUuids.size > 0 ? SurveyNodeDefs.findNodeDefsByUuids({ survey, uuids: [...dependentUuids] }) : []\n}\n\nexport const getOnUpdateDependents = (params: { survey: Survey }) => {\n const { survey } = params\n const dependencyGraph = getDependencyGraph(survey)\n const sourceDefUuids = Object.keys(dependencyGraph[SurveyDependencyType.onUpdate] ?? {})\n return sourceDefUuids.length > 0 ? SurveyNodeDefs.findNodeDefsByUuids({ survey, uuids: sourceDefUuids }) : []\n}\n\n// UPDATE\n\nconst addDependency = (params: {\n graphs: SurveyDependencyGraph\n type: SurveyDependencyType\n nodeDefUuid: string\n nodeDefDepUuid: string\n sideEffect: boolean\n}): SurveyDependencyGraph => {\n const { graphs, type, nodeDefUuid, nodeDefDepUuid, sideEffect = false } = params\n const deps = getDependencies({ graphs, type, nodeDefUuid })\n const depsUpdated = Arrays.addItem(nodeDefDepUuid, { sideEffect })(deps)\n return Objects.assocPath({ obj: graphs, path: [type, nodeDefUuid], value: depsUpdated, sideEffect })\n}\n\nconst addDependencies = async (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType>\n type: SurveyDependencyType\n graphs: SurveyDependencyGraph\n expressions: NodeDefExpression[]\n sideEffect?: boolean\n}): Promise<SurveyDependencyGraph> => {\n const { survey, nodeDef, type, expressions, graphs: graphsParam, sideEffect = false } = params\n\n if (!expressions || expressions.length === 0) return graphsParam\n\n let graphsUpdated = sideEffect ? graphsParam : { ...graphsParam }\n\n const isContextParent = isContextParentByDependencyType[type]\n const selfReferenceAllowed = selfReferenceAllowedByDependencyType[type]\n\n const findReferencedNodeDefs = async (\n expression: string | undefined\n ): Promise<{ [key: string]: NodeDef<NodeDefType> }> => {\n if (!expression) return {}\n\n const referencedNodeDefUuids = await new NodeDefExpressionEvaluator().findReferencedNodeDefUuids({\n expression,\n survey,\n nodeDef,\n isContextParent,\n selfReferenceAllowed,\n })\n const referencedNodeDefsByUuid: Dictionary<NodeDef<any>> = {}\n for (const uuid of referencedNodeDefUuids) {\n referencedNodeDefsByUuid[uuid] = SurveyNodeDefs.getNodeDefByUuid({ survey, uuid })\n }\n return referencedNodeDefsByUuid\n }\n\n const referencedNodeDefsArray = await Promise.all(\n expressions.flatMap((nodeDefExpr) => [\n findReferencedNodeDefs(nodeDefExpr.expression),\n findReferencedNodeDefs(nodeDefExpr.applyIf),\n ])\n )\n const referencedNodeDefs: Dictionary<NodeDef<any>> = Object.assign({}, ...referencedNodeDefsArray)\n\n for (const nodeDefRef of Object.values(referencedNodeDefs)) {\n graphsUpdated = addDependency({\n graphs: graphsUpdated,\n type,\n nodeDefUuid: nodeDefRef.uuid,\n nodeDefDepUuid: nodeDef.uuid,\n sideEffect,\n })\n }\n\n return graphsUpdated\n}\n\nexport const addNodeDefDependencies = async (params: {\n nodeDef: NodeDef<NodeDefType>\n survey: Survey\n sideEffect?: boolean\n}): Promise<Survey> => {\n const { nodeDef, survey, sideEffect = false } = params\n const graphs = getDependencyGraph(survey)\n let graphsUpdated = sideEffect ? graphs : { ...graphs }\n\n const _addDependencies = async (type: SurveyDependencyType, expressions: NodeDefExpression[]) => {\n let _graphUpdated = await addDependencies({\n survey,\n nodeDef,\n type,\n expressions,\n graphs: graphsUpdated,\n sideEffect,\n })\n // add onUpdate dependencies\n if (\n expressions.some((expression) =>\n functionsRequiringOnUpdateDependency.some(\n (functionName) => expression.applyIf?.includes(functionName) || expression.expression?.includes(functionName)\n )\n )\n ) {\n _graphUpdated = Objects.assocPath({\n obj: _graphUpdated,\n path: [SurveyDependencyType.onUpdate, nodeDef.uuid],\n value: true,\n sideEffect,\n })\n }\n return _graphUpdated\n }\n graphsUpdated = await _addDependencies(SurveyDependencyType.applicable, NodeDefs.getApplicable(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.defaultValues, NodeDefs.getDefaultValues(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.editable, NodeDefs.getEditableIf(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.validations, NodeDefs.getValidationsExpressions(nodeDef))\n graphsUpdated = await _addDependencies(SurveyDependencyType.visible, NodeDefs.getVisibleIf(nodeDef))\n const maxCount = NodeDefs.getMaxCount(nodeDef)\n if (Array.isArray(maxCount)) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.maxCount, maxCount)\n }\n const minCount = NodeDefs.getMinCount(nodeDef)\n if (Array.isArray(minCount)) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.minCount, minCount)\n }\n // file name expression\n if (NodeDefs.getType(nodeDef) === NodeDefType.file) {\n const fileNameExpression = NodeDefs.getFileNameExpression(nodeDef as NodeDefFile)\n if (fileNameExpression) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.fileName, [\n NodeDefExpressionFactory.createInstance({ expression: fileNameExpression }),\n ])\n }\n }\n if (NodeDefs.isEntity(nodeDef)) {\n const enumeratingItemsExpression = NodeDefs.getEnumeratingItemsExpression(nodeDef as NodeDefEntity)\n if (enumeratingItemsExpression) {\n graphsUpdated = await _addDependencies(SurveyDependencyType.enumeratingItems, [\n NodeDefExpressionFactory.createInstance({ expression: enumeratingItemsExpression }),\n ])\n }\n }\n // parent code\n if (NodeDefs.getType(nodeDef) === NodeDefType.code) {\n const parentCodeDefUuid = NodeDefs.getParentCodeDefUuid(nodeDef as NodeDefCode)\n if (parentCodeDefUuid) {\n graphsUpdated = addDependency({\n graphs: graphsUpdated,\n type: SurveyDependencyType.parentCode,\n nodeDefUuid: parentCodeDefUuid,\n nodeDefDepUuid: nodeDef.uuid,\n sideEffect,\n })\n }\n }\n if (sideEffect) {\n survey.dependencyGraph = graphsUpdated\n return survey\n }\n return { ...survey, dependencyGraph: graphsUpdated }\n}\n\n// DELETE\n\nconst _removeNodeDefDependenciesOfType = (params: {\n graphs: SurveyDependencyGraph\n dependencyType: SurveyDependencyType\n nodeDefUuid: string\n}): SurveyDependencyGraph => {\n const { graphs, nodeDefUuid, dependencyType } = params\n\n const graphsUpdated = { ...graphs }\n let graphUpdated = { ...graphsUpdated[dependencyType] }\n // dissoc nodeDefUuid dependency as dependent\n graphUpdated = Objects.dissoc({ obj: graphUpdated, prop: nodeDefUuid })\n\n if (dependencyType !== SurveyDependencyType.onUpdate) {\n // dissoc nodeDefUuid dependency from sources (if any)\n for (const [key, dependentUuids] of Object.entries(graphUpdated)) {\n graphUpdated[key] = Arrays.removeItem(nodeDefUuid)(dependentUuids as string[])\n }\n }\n\n graphsUpdated[dependencyType] = graphUpdated\n return graphsUpdated\n}\n\nexport const removeNodeDefDependencies = (params: {\n survey: Survey\n nodeDefUuid: string\n dependencyType?: SurveyDependencyType\n}): Survey => {\n const { survey, nodeDefUuid, dependencyType = null } = params\n const graphs = getDependencyGraph(survey)\n const dependencyTypes = dependencyType ? [dependencyType] : (Object.keys(graphs) as SurveyDependencyType[])\n const graphsUpdated = dependencyTypes.reduce(\n (dependencyGraphAcc, type) =>\n _removeNodeDefDependenciesOfType({ graphs: dependencyGraphAcc, dependencyType: type, nodeDefUuid }),\n graphs\n )\n return { ...survey, dependencyGraph: graphsUpdated }\n}\n\nexport const buildAndAssocDependencyGraph = async (survey: Survey): Promise<Survey> => {\n survey.dependencyGraph = newDependencyGraph()\n\n const sideEffect = true // when the dependency graph is built from scratch, do side effect to avoid re-creating objects\n\n // add dependencies for every node def\n let surveyUpdated = survey\n for (const nodeDef of SurveyNodeDefs.getNodeDefsArray(survey)) {\n // sequential: each iteration updates the survey\n surveyUpdated = await addNodeDefDependencies({ nodeDef, survey: surveyUpdated, sideEffect }) // NOSONAR\n }\n return surveyUpdated\n}\n"]}
@@ -139,7 +139,7 @@ const getNodeDefChildrenUuidsSortedByLayout = (params) => {
139
139
  var _a, _b;
140
140
  const { nodeDef, cycle, children } = params;
141
141
  const entityDef = nodeDef;
142
- const childrenEntitiesInOwnPageSortedUuids = (_a = NodeDefs.getChildrenEntitiesInOwnPageUudis(cycle)(entityDef)) !== null && _a !== void 0 ? _a : [];
142
+ const childrenEntitiesInOwnPageSortedUuids = (_a = NodeDefs.getChildrenEntitiesInOwnPageUuids(cycle)(entityDef)) !== null && _a !== void 0 ? _a : [];
143
143
  const layoutChildren = (_b = NodeDefs.getLayoutChildren(cycle)(entityDef)) !== null && _b !== void 0 ? _b : [];
144
144
  const childrenByUuids = children.reduce((acc, child) => {
145
145
  acc[child.uuid] = child;