@openforis/arena-core 2.4.3 → 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.
- package/dist/error/SystemError.d.ts +8 -1
- package/dist/error/SystemError.js +7 -2
- package/dist/error/SystemError.js.map +1 -1
- package/dist/esm/error/SystemError.js +7 -2
- package/dist/esm/error/SystemError.js.map +1 -1
- package/dist/esm/nodeDef/nodeDefs.js +4 -4
- package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
- package/dist/esm/record/recordUpdater.js +1 -1
- package/dist/esm/record/recordUpdater.js.map +1 -1
- package/dist/esm/record/recordValidator/{countVaildator.js → countValidator.js} +1 -1
- package/dist/esm/record/recordValidator/{countVaildator.js.map → countValidator.js.map} +1 -1
- package/dist/esm/record/recordValidator/recordValidator.js +1 -1
- package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/esm/survey/nodeDefsFixer.js +6 -6
- package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
- package/dist/esm/survey/surveys/dependencies.js +3 -3
- package/dist/esm/survey/surveys/dependencies.js.map +1 -1
- package/dist/esm/survey/surveys/nodeDefs.js +1 -1
- package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
- package/dist/nodeDef/nodeDefs.d.ts +4 -4
- package/dist/nodeDef/nodeDefs.js +4 -4
- package/dist/nodeDef/nodeDefs.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
- package/dist/record/recordUpdater.js +1 -1
- package/dist/record/recordUpdater.js.map +1 -1
- package/dist/record/recordValidator/{countVaildator.js → countValidator.js} +1 -1
- package/dist/record/recordValidator/{countVaildator.js.map → countValidator.js.map} +1 -1
- package/dist/record/recordValidator/recordValidator.js +2 -2
- package/dist/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/survey/nodeDefsFixer.js +6 -6
- package/dist/survey/nodeDefsFixer.js.map +1 -1
- package/dist/survey/surveys/dependencies.js +3 -3
- package/dist/survey/surveys/dependencies.js.map +1 -1
- package/dist/survey/surveys/nodeDefs.js +1 -1
- package/dist/survey/surveys/nodeDefs.js.map +1 -1
- package/package.json +1 -1
- /package/dist/record/recordValidator/{countVaildator.d.ts → countValidator.d.ts} +0 -0
|
@@ -2,7 +2,14 @@ import { Dictionary } from '../common';
|
|
|
2
2
|
export declare class SystemError extends Error {
|
|
3
3
|
private readonly _key;
|
|
4
4
|
private readonly _params;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @param key - Error key (translatable).
|
|
7
|
+
* @param params - Parameters of the error message.
|
|
8
|
+
* @param options - Error options: `cause` is the original error (kept with its stack trace).
|
|
9
|
+
*/
|
|
10
|
+
constructor(key: string, params?: Dictionary<any>, options?: {
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
});
|
|
6
13
|
get key(): string;
|
|
7
14
|
get params(): Dictionary<any>;
|
|
8
15
|
toJSON(): {
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SystemError = void 0;
|
|
4
4
|
class SystemError extends Error {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @param key - Error key (translatable).
|
|
7
|
+
* @param params - Parameters of the error message.
|
|
8
|
+
* @param options - Error options: `cause` is the original error (kept with its stack trace).
|
|
9
|
+
*/
|
|
10
|
+
constructor(key, params, options) {
|
|
11
|
+
super(key, options);
|
|
7
12
|
this.name = 'SystemError';
|
|
8
13
|
this._key = key;
|
|
9
14
|
this._params = params !== null && params !== void 0 ? params : {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../src/error/SystemError.ts"],"names":[],"mappings":";;;AAEA,iBAAyB,SAAQ,KAAK;IAIpC,YAAY,GAAW,EAAE,MAAwB;
|
|
1
|
+
{"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../src/error/SystemError.ts"],"names":[],"mappings":";;;AAEA,iBAAyB,SAAQ,KAAK;IAIpC;;;;OAIG;IACH,YAAY,GAAW,EAAE,MAAwB,EAAE,OAA6B;QAC9E,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEnB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAE3B,sDAAsD;QACtD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC5B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAC3C,MAAM,cAAc,GAClB,WAAW,IAAI,WAAW,YAAY,WAAW,CAAC,CAAC,iCAAM,MAAM,KAAE,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,IAAG,CAAC,CAAC,MAAM,CAAA;QAC1G,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACxC,CAAC;CACF","sourcesContent":["import { Dictionary } from '../common'\n\nexport class SystemError extends Error {\n private readonly _key: string\n private readonly _params: Dictionary<any>\n\n /**\n * @param key - Error key (translatable).\n * @param params - Parameters of the error message.\n * @param options - Error options: `cause` is the original error (kept with its stack trace).\n */\n constructor(key: string, params?: Dictionary<any>, options?: { cause?: unknown }) {\n super(key, options)\n\n this.name = 'SystemError'\n\n this._key = key\n this._params = params ?? {}\n\n // Maintains proper stack trace (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SystemError)\n }\n }\n\n get key(): string {\n return this._key\n }\n\n get params(): Dictionary<any> {\n return this._params\n }\n\n toJSON() {\n const { key, params } = this\n const { error: nestedError } = params ?? {}\n const paramsAdjusted: Dictionary<any> =\n nestedError && nestedError instanceof SystemError ? { ...params, error: nestedError?.toJSON() } : params\n return { key, params: paramsAdjusted }\n }\n}\n"]}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export class SystemError extends Error {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @param key - Error key (translatable).
|
|
4
|
+
* @param params - Parameters of the error message.
|
|
5
|
+
* @param options - Error options: `cause` is the original error (kept with its stack trace).
|
|
6
|
+
*/
|
|
7
|
+
constructor(key, params, options) {
|
|
8
|
+
super(key, options);
|
|
4
9
|
this.name = 'SystemError';
|
|
5
10
|
this._key = key;
|
|
6
11
|
this._params = params !== null && params !== void 0 ? params : {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../../src/error/SystemError.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIpC,YAAY,GAAW,EAAE,MAAwB;
|
|
1
|
+
{"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../../src/error/SystemError.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIpC;;;;OAIG;IACH,YAAY,GAAW,EAAE,MAAwB,EAAE,OAA6B;QAC9E,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEnB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAE3B,sDAAsD;QACtD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC5B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAC3C,MAAM,cAAc,GAClB,WAAW,IAAI,WAAW,YAAY,WAAW,CAAC,CAAC,iCAAM,MAAM,KAAE,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,IAAG,CAAC,CAAC,MAAM,CAAA;QAC1G,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACxC,CAAC;CACF","sourcesContent":["import { Dictionary } from '../common'\n\nexport class SystemError extends Error {\n private readonly _key: string\n private readonly _params: Dictionary<any>\n\n /**\n * @param key - Error key (translatable).\n * @param params - Parameters of the error message.\n * @param options - Error options: `cause` is the original error (kept with its stack trace).\n */\n constructor(key: string, params?: Dictionary<any>, options?: { cause?: unknown }) {\n super(key, options)\n\n this.name = 'SystemError'\n\n this._key = key\n this._params = params ?? {}\n\n // Maintains proper stack trace (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SystemError)\n }\n }\n\n get key(): string {\n return this._key\n }\n\n get params(): Dictionary<any> {\n return this._params\n }\n\n toJSON() {\n const { key, params } = this\n const { error: nestedError } = params ?? {}\n const paramsAdjusted: Dictionary<any> =\n nestedError && nestedError instanceof SystemError ? { ...params, error: nestedError?.toJSON() } : params\n return { key, params: paramsAdjusted }\n }\n}\n"]}
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAGL,gBAAgB,EAKhB,WAAW,GAEZ,MAAM,WAAW,CAAA;AAMlB,OAAO,EAIL,uBAAuB,GAExB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,EAAe,qBAAqB,EAAwB,MAAM,cAAc,CAAA;AAGvF,MAAM,MAAM,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAA;AAE9E,MAAM,WAAW,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAElF,MAAM,QAAQ,GAAG,CAAC,OAA6B,EAA4B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,CAAA;AAEjH,MAAM,SAAS,GAAG,CAAC,OAA6B,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAA;AAEpH,MAAM,MAAM,GAAG,CAAC,OAA6B,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAA;AAE3G,MAAM,YAAY,GAAG,CAAC,OAA6B,EAAgC,EAAE,CACnF,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,CAAA;AAEzC,MAAM,MAAM,GAAG,CAAC,OAA6B,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAA;AAE3G,MAAM,SAAS,GAAG,CAAC,OAA6B,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAA;AAEpH,MAAM,MAAM,GAAG,CAAC,OAA6B,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAA;AAE3G,MAAM,SAAS,GAAG,CAAC,OAA6B,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAA;AAEpH,MAAM,OAAO,GAAG,CAAC,OAA6B,EAA2B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAA;AAE9G,MAAM,MAAM,GAAG,CAAC,OAA6B,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAA;AAE3G,MAAM,MAAM,GAAG,CAAC,OAA6B,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAA;AAE3G,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,mCAAI,KAAK,GAAA,CAAA;AAE9F,MAAM,QAAQ,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAEjF,MAAM,cAAc,GAAG,CAAC,OAA6B,EAA4B,EAAE,CACjF,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;AAExC,MAAM,iBAAiB,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;AAE/G,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAA4B,EAAE,CACnF,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;AAE1C,MAAM,mBAAmB,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;AAEnH,MAAM,KAAK,GAAG,CAAC,OAA2C,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,GAAG,mCAAI,KAAK,GAAA,CAAA;AAElG,MAAM,oBAAoB,GAAG,CAAC,OAA2C,EAAW,EAAE,wBACpF,OAAO,CAAC,KAAK,CAAC,kBAAkB,mCAAI,KAAK,GAAA,CAAA;AAE3C,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAW,EAAE,wBAAC,OAAO,CAAC,QAAQ,mCAAI,KAAK,GAAA,CAAA;AAExF,MAAM,OAAO,GAAG,CAAC,OAA6B,EAAe,EAAE,CAAC,OAAO,CAAC,IAAI,CAAA;AAE5E,MAAM,eAAe,GAAG,CAAC,OAA6B,EAAgC,EAAE,CACtF,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,CAAA;AAEzC,MAAM,OAAO,GAAG,CAAC,OAA2C,EAAU,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,GAAA,CAAA;AAEjG,MAAM,cAAc,GAAG,CAAC,OAA2C,EAAE,IAAkB,EAAU,EAAE,kBACjG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,MAAM,0CAAG,IAAI,CAAC,CAAC,GAAA,CAAA;AAExE,MAAM,cAAc,GAAG,CAAC,OAA2C,EAAE,IAAkB,EAAU,EAAE,gCACjG,MAAA,OAAO,CAAC,KAAK,CAAC,YAAY,0CAAG,IAAI,CAAC,mCAAI,EAAE,GAAA,CAAA;AAE1C,MAAM,WAAW,GAAG,CAAC,OAA6B,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,SAAS,mCAAI,KAAK,GAAA,CAAA;AAEhG,MAAM,UAAU,GAAG,CAAC,OAAqB,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,mCAAI,KAAK,GAAA,CAAA;AAEtF,MAAM,QAAQ,GAAG,CAAC,OAAqB,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,MAAM,mCAAI,KAAK,GAAA,CAAA;AAElF,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAW,EAAE,wBAAC,OAAO,CAAC,KAAK,CAAC,SAAS,mCAAI,KAAK,GAAA,CAAA;AAEzF,MAAM,6BAA6B,GAAG,CAAC,OAAsB,EAAsB,EAAE,kBACnF,MAAA,OAAO,CAAC,aAAa,0CAAE,0BAA0B,GAAA,CAAA;AAEnD,MAAM,yBAAyB,GAAG,CAAC,OAAsB,EAAW,EAAE,kBACpE,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,mCAAI,KAAK,CAAC,GAAA,CAAA;AAE/E,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAuC,EAAE,CAC1F,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAA;AAEhC,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAuB,EAAE,gCAC9E,MAAA,OAAO,CAAC,aAAa,0CAAE,aAAa,mCAAI,EAAE,GAAA,CAAA;AAE5C,MAAM,8BAA8B,GAAG,CAAC,OAA6B,EAAW,EAAE,kBAChF,CAAC,EAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,4BAA4B,CAAA,GAAA,CAAA;AAEvD,MAAM,aAAa,GAAG,CAAC,OAA6B,EAAuB,EAAE,gCAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,UAAU,mCAAI,EAAE,GAAA,CAAA;AAErH,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAwB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAA;AAE7G,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,OAAqB,EAAE,EAAE;IAClE,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC/C,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,SAAS,GACb,CAAC,KAAa,EAAE,EAAE,CAClB,CAAC,OAA6B,EAAW,EAAE;;IACzC,MAAM,MAAM,SAAG,OAAO,CAAC,KAAK,CAAC,MAAM,mCAAI,CAAC,YAAY,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC,CAAA;AAEH,MAAM,iBAAiB,GAAG,CAAC,OAA6B,EAAW,EAAE,kBAAC,CAAC,EAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,eAAe,CAAA,GAAA,CAAA;AAE9G,MAAM,aAAa,GAAG,CAAC,OAA6B,EAAuB,EAAE,gCAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,UAAU,mCAAI,EAAE,GAAA,CAAA;AAErH,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAExG,MAAM,YAAY,GAAG,CAAC,OAA6B,EAAuB,EAAE,gCAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,SAAS,mCAAI,EAAE,GAAA,CAAA;AAEnH,MAAM,eAAe,GAAG,CAAC,OAA6B,EAAW,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAEtG,OAAO;AACP,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAA;AAChG,MAAM,oBAAoB,GAAG,CAAC,OAAoB,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAA;AAE1G,aAAa;AACb,MAAM,2BAA2B,GAAG,CAAC,OAA0B,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAA;AAEtH,MAAM,6BAA6B,GAAG,CAAC,OAA0B,EAAY,EAAE;IAC7E,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe;QAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnG,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe;QAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnG,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB;QAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACnH,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,UAAU;AACV,MAAM,yBAAyB,GAAG,CAAC,OAAuB,EAAE,EAAE;IAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAA;IAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,OAAO;AACP,MAAM,WAAW,GAAG,CAAC,OAAoB,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAA;AACjG,MAAM,qBAAqB,GAAG,CAAC,OAAoB,EAAsB,EAAE,kBAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,kBAAkB,GAAA,CAAA;AACrH,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAA;AAC9F,MAAM,wBAAwB,GAAG,CAAC,OAAoB,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAA;AAE1G,OAAO;AACP,MAAM,iBAAiB,GAAG,CAAC,OAAoB,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAA;AAE3F,QAAQ;AACR,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAA;AAEjG,MAAM,6BAA6B,GAAG,CAAC,OAAqB,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAA;AAErH,MAAM,sCAAsC,GAAG,CAAC,OAAqB,EAAW,EAAE,CAChF,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAA;AAEtD,OAAO;AACP,MAAM,gBAAgB,GAAG,CAAC,OAAoB,EAAsB,EAAE,kBAAC,MAAA,OAAO,CAAC,KAAK,0CAAE,aAAa,GAAA,CAAA;AACnG,MAAM,gBAAgB,GAAG,CAAC,OAAoB,EAAoC,EAAE,kBAAC,MAAA,OAAO,CAAC,KAAK,0CAAE,aAAa,GAAA,CAAA;AAEjH,iBAAiB;AACjB,MAAM,cAAc,GAAG,CAAC,OAAqB,EAAsB,EAAE,kBAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,WAAW,GAAA,CAAA;AAExG,cAAc;AACd,MAAM,cAAc,GAAG,CAAC,OAA6B,EAAkC,EAAE,kBACvF,MAAA,OAAO,CAAC,aAAa,0CAAE,WAAW,GAAA,CAAA;AAEpC,MAAM,yBAAyB,GAAG,CAAC,OAA6B,EAAuB,EAAE,gCACvF,MAAA,cAAc,CAAC,OAAO,CAAC,0CAAE,WAAW,mCAAI,EAAE,GAAA,CAAA;AAE5C,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAW,EAAE,gCAAC,MAAA,cAAc,CAAC,OAAO,CAAC,0CAAE,QAAQ,mCAAI,KAAK,GAAA,CAAA;AAEzG,mBAAmB;AAEnB,MAAM,QAAQ,GAAG,CAAC,OAA6B,EAAE,SAA2B,EAAsC,EAAE;;IAClH,MAAM,gBAAgB,GAAG,MAAA,cAAc,CAAC,OAAO,CAAC,0CAAE,KAAK,CAAA;IACvD,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAA;IACvC,OAAO,SAAS,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAA;AACzF,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,OAA6B,EAAsC,EAAE,CACxF,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAEzC,MAAM,WAAW,GAAG,CAAC,OAA6B,EAAsC,EAAE,CACxF,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAEzC,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAW,EAAE,CAClE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AAEtF,SAAS;AACT,MAAM,cAAc,GAClB,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAkD,EAAO,EAAE,oCAC1D,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,0CAAG,KAAK,CAAC,mCAAI,EAAE,GAAA,CAAA;AAEzC,MAAM,mBAAmB,GACvB,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAkD,EAAsB,EAAE,CACzE,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAA;AAE7C,MAAM,sBAAsB,GAC1B,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAW,EAAE,CAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,uBAAuB,CAAC,IAAI,CAAA;AAExE,MAAM,uBAAuB,GAC3B,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAW,EAAE,CAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,uBAAuB,CAAC,KAAK,CAAA;AAEzE,MAAM,2BAA2B,GAC/B,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAoB,EAAW,EAAE,CAChC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,qBAAqB,CAAC,SAAS,CAAA;AAE3E,MAAM,0BAA0B,GAC9B,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAoB,EAAW,EAAE,CAChC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,qBAAqB,CAAC,QAAQ,CAAA;AAE1E,MAAM,iCAAiC,GACrC,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAY,EAAE,wBAClC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAyB,CAAC,aAAa,mCAAI,EAAE,GAAA,CAAA;AAE/E,MAAM,iBAAiB,GACrB,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAkC,EAAE,wBACxD,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAyB,CAAC,cAAc,mCAAI,EAAE,GAAA,CAAA;AAEhF,MAAM,WAAW,GACf,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAsB,EAAE,CAC5C,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAyB,CAAC,QAAQ,CAAA;AAEpE,MAAM,kBAAkB,GACtB,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAsB,EAAW,EAAE,CAClC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;AAEjC,MAAM,gBAAgB,GACpB,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAA0B,OAAgD,EAAW,EAAE,wBACrF,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,mCAAI,KAAK,GAAA,CAAA;AAE1D,MAAM,iCAAiC,GACrC,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAA0B,OAAgD,EAAW,EAAE,wBACrF,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,+BAA+B,mCAAI,KAAK,GAAA,CAAA;AAE3E,MAAM,6BAA6B,GACjC,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAA0B,OAAgD,EAAW,EAAE,wBACrF,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,mCAAI,IAAI,GAAA,CAAA;AAEtE,MAAM,uBAAuB,GAC3B,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAA0B,OAAgD,EAAW,EAAE,wBACrF,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,qBAAqB,mCAAI,KAAK,GAAA,CAAA;AAEjE,MAAM,WAAW,GACf,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CACzB,CAAC,OAAoB,EAAW,EAAE,kBAChC,CAAC,CAAC,OAAC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,mCAAI,IAAI,CAAC,GAAA,CAAA;AAExD,WAAW;AACX,MAAM,uBAAuB,GAAG,CAAC,OAAqB,EAAsB,EAAE,oCAC5E,MAAA,OAAO,CAAC,kBAAkB,0CAAE,oBAAoB,mCAAI,MAAA,OAAO,CAAC,aAAa,0CAAE,oBAAoB,GAAA,CAAA;AAEjG,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAsB,EAAE,kBAAC,MAAA,OAAO,CAAC,aAAa,0CAAE,KAAK,GAAA,CAAA;AAEnG,WAAW;AACX,MAAM,iBAAiB,GAAG,CAAC,OAAqB,EAAY,EAAE,gCAAC,MAAA,OAAO,CAAC,IAAI,0CAAE,CAAC,mCAAI,EAAE,GAAA,CAAA;AAEpF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ;IACR,SAAS;IACT,MAAM;IACN,YAAY;IACZ,MAAM;IACN,SAAS;IACT,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,QAAQ;IACR,cAAc;IACd,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,KAAK;IACL,oBAAoB;IACpB,WAAW;IACX,UAAU;IACV,QAAQ;IACR,WAAW;IACX,6BAA6B;IAC7B,yBAAyB;IACzB,mBAAmB;IACnB,UAAU;IACV,MAAM;IACN,OAAO;IACP,eAAe;IACf,OAAO;IACP,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,8BAA8B;IAC9B,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,eAAe;IAEf,eAAe;IACf,oBAAoB;IACpB,2BAA2B;IAC3B,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,iBAAiB;IACjB,eAAe;IACf,6BAA6B;IAC7B,sCAAsC;IACtC,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IAEd,SAAS;IACT,cAAc;IACd,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,iCAAiC;IACjC,iBAAiB;IACjB,WAAW;IACX,kBAAkB;IAClB,gBAAgB;IAChB,iCAAiC;IACjC,6BAA6B;IAC7B,uBAAuB;IACvB,WAAW;IACX,2BAA2B;IAC3B,0BAA0B;IAC1B,cAAc;IACd,cAAc;IACd,yBAAyB;IACzB,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,QAAQ;IACR,WAAW;IACX,WAAW;IACX,WAAW;IACX,uBAAuB;IACvB,eAAe;IACf,WAAW;IACX,iBAAiB;CAClB,CAAA","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"]}
|
|
@@ -13,7 +13,7 @@ export const throwError = (params) => {
|
|
|
13
13
|
expressionsString,
|
|
14
14
|
error: error.toString(),
|
|
15
15
|
errorJson: error instanceof SystemError ? error.toJSON() : null,
|
|
16
|
-
});
|
|
16
|
+
}, { cause: error });
|
|
17
17
|
};
|
|
18
18
|
const addPointerIfAccepted = (params) => {
|
|
19
19
|
const { nodePointers, pointer, filterFn } = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordNodesDependentsUpdaterCommons.js","sourceRoot":"","sources":["../../../../src/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAyD,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EAAgC,OAAO,EAAE,MAAM,cAAc,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAO1B,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAA;IAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;IAE/D,MAAM,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"recordNodesDependentsUpdaterCommons.js","sourceRoot":"","sources":["../../../../src/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../../error'\nimport { ArenaRecordNode, NodePointer } from '../../node'\nimport { NodeDef, NodeDefExpression, NodeDefProps, NodeDefType, NodeDefs } from '../../nodeDef'\nimport { Survey, SurveyDependencyType, Surveys } from '../../survey'\nimport { ArenaRecord } from '../record'\nimport { Records } from '../records'\n\nexport const throwError = (params: {\n error: any\n errorKey: string\n expressionType: SurveyDependencyType\n survey: Survey\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n expressionsToEvaluate: NodeDefExpression[]\n}) => {\n const { error, errorKey, expressionType, survey, nodeDef, expressionsToEvaluate } = params\n const nodeDefName = nodeDef.props.name\n const expressionsString = JSON.stringify(expressionsToEvaluate)\n\n throw new SystemError(\n errorKey,\n {\n surveyName: survey.props.name,\n nodeDefName,\n expressionType,\n expressionsString,\n error: error.toString(),\n errorJson: error instanceof SystemError ? error.toJSON() : null,\n },\n { cause: error }\n )\n}\n\nconst addPointerIfAccepted = (params: {\n nodePointers: NodePointer[]\n pointer: NodePointer\n filterFn?: (nodePointer: NodePointer) => boolean\n}) => {\n const { nodePointers, pointer, filterFn } = params\n if (!filterFn || filterFn(pointer)) {\n nodePointers.push(pointer)\n }\n}\n\nconst addNewEntitySelfPointer = (params: {\n nodePointers: NodePointer[]\n survey: Survey\n record: ArenaRecord\n node: ArenaRecordNode\n sourceNodeDef: NodeDef<NodeDefType, NodeDefProps>\n filterFn?: (nodePointer: NodePointer) => boolean\n}) => {\n const { nodePointers, record, node, sourceNodeDef, filterFn } = params\n if (!node.parentUuid) {\n return\n }\n const parentNode = Records.getNodeByUuid({ uuid: node.parentUuid })(record)\n if (!parentNode) {\n return\n }\n addPointerIfAccepted({\n nodePointers,\n pointer: { nodeCtx: parentNode, nodeDef: sourceNodeDef },\n filterFn,\n })\n}\n\nconst addNewEntityChildMultiplePointers = (params: {\n nodePointers: NodePointer[]\n survey: Survey\n node: ArenaRecordNode\n sourceNodeDef: NodeDef<NodeDefType, NodeDefProps>\n filterFn?: (nodePointer: NodePointer) => boolean\n}) => {\n const { nodePointers, survey, node, sourceNodeDef, filterFn } = params\n const multipleNodeDefs = Surveys.getNodeDefChildren({ survey, nodeDef: sourceNodeDef }).filter(NodeDefs.isMultiple)\n\n for (const childDef of multipleNodeDefs) {\n addPointerIfAccepted({\n nodePointers,\n pointer: { nodeCtx: node, nodeDef: childDef },\n filterFn,\n })\n }\n}\n\nexport const getDependentNodePointersByType = (params: {\n survey: Survey\n record: ArenaRecord\n node: ArenaRecordNode\n dependencyType: SurveyDependencyType\n includeSelfWhenSourceIsAttribute?: boolean\n includeNewEntitySelf?: boolean\n includeNewEntityChildPointers?: boolean\n filterFn?: (nodePointer: NodePointer) => boolean\n}): NodePointer[] => {\n const {\n survey,\n record,\n node,\n dependencyType,\n includeSelfWhenSourceIsAttribute = false,\n includeNewEntitySelf = false,\n includeNewEntityChildPointers = false,\n filterFn,\n } = params\n\n const sourceNodeDef = Surveys.getNodeDefByUuid({ survey, uuid: node.nodeDefUuid })\n const includeSelf = includeSelfWhenSourceIsAttribute && !NodeDefs.isEntity(sourceNodeDef)\n\n const nodePointers = Records.getDependentNodePointers({ survey, node, dependencyType, includeSelf, filterFn })(record)\n\n if (!NodeDefs.isEntity(sourceNodeDef) || !node.created) {\n return nodePointers\n }\n\n // For newly created entities, include a self-pointer for the source node.\n if (includeNewEntitySelf) {\n addNewEntitySelfPointer({ nodePointers, survey, record, node, sourceNodeDef, filterFn })\n }\n\n // For new entities, include child multiple nodes so their dependency metadata/status gets updated too.\n if (includeNewEntityChildPointers) {\n addNewEntityChildMultiplePointers({ nodePointers, survey, node, sourceNodeDef, filterFn })\n }\n\n return nodePointers\n}\n"]}
|
|
@@ -81,7 +81,7 @@ const updateAttributeValue = (params) => __awaiter(void 0, void 0, void 0, funct
|
|
|
81
81
|
const { attributeUuid, record, value, dateModified = Dates.nowFormattedForStorage(), sideEffect = false } = params;
|
|
82
82
|
const attribute = Records.getNodeByUuid({ uuid: attributeUuid })(record);
|
|
83
83
|
if (!attribute)
|
|
84
|
-
throw new SystemError('record.nodeNotFound');
|
|
84
|
+
throw new SystemError('record.nodeNotFound', { uuid: attributeUuid });
|
|
85
85
|
let attributeUpdated = sideEffect ? attribute : Object.assign({}, attribute);
|
|
86
86
|
attributeUpdated.value = value;
|
|
87
87
|
attributeUpdated.dateModified = dateModified;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordUpdater.js","sourceRoot":"","sources":["../../../src/record/recordUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { SystemError } from '../error'\nimport { ArenaRecordNode, NodePointer, NodesMap } from '../node'\nimport { Survey, SurveyDependencyType, Surveys } from '../survey'\nimport { Dates, Objects } from '../utils'\nimport { Validations } from '../validation/validations'\nimport { NodePointers } from './nodePointers'\nimport { ArenaRecord } from './record'\nimport { RecordNodesUpdater, RecordUpdateResult } from './recordNodesUpdater'\nimport { NodeCreateParams, NodesUpdateParams } from './recordNodesUpdater/recordNodesCreator'\nimport { Records } from './records'\nimport { RecordValidator } from './recordValidator'\n\nconst validationDependencyTypes = [\n SurveyDependencyType.validations,\n SurveyDependencyType.minCount,\n SurveyDependencyType.maxCount,\n]\n\nconst getDependentValidationNodePointers = (params: {\n survey: Survey\n record: ArenaRecord\n nodes: NodesMap\n}): NodePointer[] => {\n const { survey, record, nodes } = params\n const uniquePointersByKey = new Map<string, NodePointer>()\n for (const node of Object.values(nodes)) {\n for (const dependencyType of validationDependencyTypes) {\n const nodePointers = Records.getDependentNodePointers({ survey, node, dependencyType })(record)\n for (const pointer of nodePointers) {\n const nodeCtxUuid = pointer.nodeCtx.uuid\n const nodeDefUuid = pointer.nodeDef.uuid\n const key = `${nodeCtxUuid ?? ''}:${nodeDefUuid ?? ''}`\n if (!uniquePointersByKey.has(key)) {\n uniquePointersByKey.set(key, pointer)\n }\n }\n }\n }\n return Array.from(uniquePointersByKey.values())\n}\n\nconst _onRecordNodesCreateOrUpdate = async (\n params: NodesUpdateParams & { nodes: Dictionary<ArenaRecordNode> }\n): Promise<RecordUpdateResult> => {\n const { user, survey, dateModified = Dates.nowFormattedForStorage() } = params\n\n const updateResult = await RecordNodesUpdater.updateNodesDependents(params)\n const { nodes: updatedNodes, record: updatedRecord } = updateResult\n\n const dependentValidationNodePointers = getDependentValidationNodePointers({\n survey,\n record: updatedRecord,\n nodes: updatedNodes,\n })\n\n const dependentValidationNodes = NodePointers.getNodesMapFromNodePointers({\n record: updatedRecord,\n nodePointers: dependentValidationNodePointers,\n })\n\n const nodesToValidate = { ...updatedNodes, ...dependentValidationNodes }\n\n const validationUpdatedNodes = await RecordValidator.validateNodes({\n user,\n survey,\n record: updatedRecord,\n nodes: nodesToValidate,\n })\n\n const validation = Validations.mergeValidations(validationUpdatedNodes)(Validations.getValidation(updatedRecord))\n updatedRecord.validation = validation\n updatedRecord.dateModified = dateModified\n\n updateResult.validation = validation\n\n return updateResult\n}\n\nconst createDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> => {\n const { record: updatedRecord, nodes: createdNodes } = await RecordNodesUpdater.createDescendants(params)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: updatedRecord, nodes: createdNodes })\n}\n\nconst _createNodeAndDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> => {\n const { record: updatedRecord, nodes: createdNodes } = await RecordNodesUpdater.createNodeAndDescendants(params)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: updatedRecord, nodes: createdNodes })\n}\n\nconst createNodeAndDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> =>\n _createNodeAndDescendants(params)\n\nconst createRootEntity = async (\n params: NodesUpdateParams & {\n createMultipleEntities?: boolean\n }\n): Promise<RecordUpdateResult> => {\n const { survey, createMultipleEntities = true } = params\n\n return _createNodeAndDescendants({ ...params, nodeDef: Surveys.getNodeDefRoot({ survey }), createMultipleEntities })\n}\n\nconst updateAttributeValue = async (\n params: NodesUpdateParams & {\n attributeUuid: string\n value: any\n }\n): Promise<RecordUpdateResult> => {\n const { attributeUuid, record, value, dateModified = Dates.nowFormattedForStorage(), sideEffect = false } = params\n const attribute = Records.getNodeByUuid({ uuid: attributeUuid })(record)\n if (!attribute) throw new SystemError('record.nodeNotFound')\n\n let attributeUpdated = sideEffect ? attribute : { ...attribute }\n attributeUpdated.value = value\n attributeUpdated.dateModified = dateModified\n // reset defaultValueApplied flag\n attributeUpdated = Objects.dissocPath({ obj: attributeUpdated, path: ['meta', 'defaultValueApplied'], sideEffect })\n\n const nodesUpdated = { [attributeUuid]: attributeUpdated }\n\n const _record = Records.addNode(attributeUpdated, { sideEffect })(record)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: _record, nodes: nodesUpdated })\n}\n\nconst deleteNodes = async (\n params: NodesUpdateParams & {\n nodeUuids: string[]\n }\n): Promise<RecordUpdateResult> => {\n const { nodeUuids, record: _record, sideEffect = false } = params\n\n const updateResult = Records.deleteNodes(nodeUuids, { sideEffect })(_record)\n const { record, nodesDeleted } = updateResult\n\n const result = await _onRecordNodesCreateOrUpdate({ ...params, record, nodes: nodesDeleted })\n result.nodesDeleted = nodesDeleted\n return result\n}\n\nconst deleteNode = async (params: NodesUpdateParams & { nodeUuid: string }): Promise<RecordUpdateResult> => {\n const { nodeUuid } = params\n return deleteNodes({ ...params, nodeUuids: [nodeUuid] })\n}\n\nexport const RecordUpdater = {\n createDescendants,\n createNodeAndDescendants,\n createRootEntity,\n updateAttributeValue,\n deleteNode,\n deleteNodes,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"recordUpdater.js","sourceRoot":"","sources":["../../../src/record/recordUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { SystemError } from '../error'\nimport { ArenaRecordNode, NodePointer, NodesMap } from '../node'\nimport { Survey, SurveyDependencyType, Surveys } from '../survey'\nimport { Dates, Objects } from '../utils'\nimport { Validations } from '../validation/validations'\nimport { NodePointers } from './nodePointers'\nimport { ArenaRecord } from './record'\nimport { RecordNodesUpdater, RecordUpdateResult } from './recordNodesUpdater'\nimport { NodeCreateParams, NodesUpdateParams } from './recordNodesUpdater/recordNodesCreator'\nimport { Records } from './records'\nimport { RecordValidator } from './recordValidator'\n\nconst validationDependencyTypes = [\n SurveyDependencyType.validations,\n SurveyDependencyType.minCount,\n SurveyDependencyType.maxCount,\n]\n\nconst getDependentValidationNodePointers = (params: {\n survey: Survey\n record: ArenaRecord\n nodes: NodesMap\n}): NodePointer[] => {\n const { survey, record, nodes } = params\n const uniquePointersByKey = new Map<string, NodePointer>()\n for (const node of Object.values(nodes)) {\n for (const dependencyType of validationDependencyTypes) {\n const nodePointers = Records.getDependentNodePointers({ survey, node, dependencyType })(record)\n for (const pointer of nodePointers) {\n const nodeCtxUuid = pointer.nodeCtx.uuid\n const nodeDefUuid = pointer.nodeDef.uuid\n const key = `${nodeCtxUuid ?? ''}:${nodeDefUuid ?? ''}`\n if (!uniquePointersByKey.has(key)) {\n uniquePointersByKey.set(key, pointer)\n }\n }\n }\n }\n return Array.from(uniquePointersByKey.values())\n}\n\nconst _onRecordNodesCreateOrUpdate = async (\n params: NodesUpdateParams & { nodes: Dictionary<ArenaRecordNode> }\n): Promise<RecordUpdateResult> => {\n const { user, survey, dateModified = Dates.nowFormattedForStorage() } = params\n\n const updateResult = await RecordNodesUpdater.updateNodesDependents(params)\n const { nodes: updatedNodes, record: updatedRecord } = updateResult\n\n const dependentValidationNodePointers = getDependentValidationNodePointers({\n survey,\n record: updatedRecord,\n nodes: updatedNodes,\n })\n\n const dependentValidationNodes = NodePointers.getNodesMapFromNodePointers({\n record: updatedRecord,\n nodePointers: dependentValidationNodePointers,\n })\n\n const nodesToValidate = { ...updatedNodes, ...dependentValidationNodes }\n\n const validationUpdatedNodes = await RecordValidator.validateNodes({\n user,\n survey,\n record: updatedRecord,\n nodes: nodesToValidate,\n })\n\n const validation = Validations.mergeValidations(validationUpdatedNodes)(Validations.getValidation(updatedRecord))\n updatedRecord.validation = validation\n updatedRecord.dateModified = dateModified\n\n updateResult.validation = validation\n\n return updateResult\n}\n\nconst createDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> => {\n const { record: updatedRecord, nodes: createdNodes } = await RecordNodesUpdater.createDescendants(params)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: updatedRecord, nodes: createdNodes })\n}\n\nconst _createNodeAndDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> => {\n const { record: updatedRecord, nodes: createdNodes } = await RecordNodesUpdater.createNodeAndDescendants(params)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: updatedRecord, nodes: createdNodes })\n}\n\nconst createNodeAndDescendants = async (params: NodeCreateParams): Promise<RecordUpdateResult> =>\n _createNodeAndDescendants(params)\n\nconst createRootEntity = async (\n params: NodesUpdateParams & {\n createMultipleEntities?: boolean\n }\n): Promise<RecordUpdateResult> => {\n const { survey, createMultipleEntities = true } = params\n\n return _createNodeAndDescendants({ ...params, nodeDef: Surveys.getNodeDefRoot({ survey }), createMultipleEntities })\n}\n\nconst updateAttributeValue = async (\n params: NodesUpdateParams & {\n attributeUuid: string\n value: any\n }\n): Promise<RecordUpdateResult> => {\n const { attributeUuid, record, value, dateModified = Dates.nowFormattedForStorage(), sideEffect = false } = params\n const attribute = Records.getNodeByUuid({ uuid: attributeUuid })(record)\n if (!attribute) throw new SystemError('record.nodeNotFound', { uuid: attributeUuid })\n\n let attributeUpdated = sideEffect ? attribute : { ...attribute }\n attributeUpdated.value = value\n attributeUpdated.dateModified = dateModified\n // reset defaultValueApplied flag\n attributeUpdated = Objects.dissocPath({ obj: attributeUpdated, path: ['meta', 'defaultValueApplied'], sideEffect })\n\n const nodesUpdated = { [attributeUuid]: attributeUpdated }\n\n const _record = Records.addNode(attributeUpdated, { sideEffect })(record)\n\n return _onRecordNodesCreateOrUpdate({ ...params, record: _record, nodes: nodesUpdated })\n}\n\nconst deleteNodes = async (\n params: NodesUpdateParams & {\n nodeUuids: string[]\n }\n): Promise<RecordUpdateResult> => {\n const { nodeUuids, record: _record, sideEffect = false } = params\n\n const updateResult = Records.deleteNodes(nodeUuids, { sideEffect })(_record)\n const { record, nodesDeleted } = updateResult\n\n const result = await _onRecordNodesCreateOrUpdate({ ...params, record, nodes: nodesDeleted })\n result.nodesDeleted = nodesDeleted\n return result\n}\n\nconst deleteNode = async (params: NodesUpdateParams & { nodeUuid: string }): Promise<RecordUpdateResult> => {\n const { nodeUuid } = params\n return deleteNodes({ ...params, nodeUuids: [nodeUuid] })\n}\n\nexport const RecordUpdater = {\n createDescendants,\n createNodeAndDescendants,\n createRootEntity,\n updateAttributeValue,\n deleteNode,\n deleteNodes,\n}\n"]}
|
|
@@ -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 './
|
|
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 './
|
|
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
|
|
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
|
-
|
|
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
|
|
30
|
+
return hierarchy;
|
|
31
31
|
};
|
|
32
|
-
const
|
|
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.
|
|
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 =
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"nodeDefsFixer.js","sourceRoot":"","sources":["../../../src/survey/nodeDefsFixer.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../error'\nimport { NodeDef, NodeDefEntity, NodeDefMap, NodeDefs } from '../nodeDef'\nimport { NodeDefEntityLayoutChildItem } from '../nodeDef/types/entity'\nimport { Objects } from '../utils'\nimport { MutationOptions } from '../utils/mutationOptions'\n\ntype NodeDefsFixParams = MutationOptions & {\n nodeDefs: NodeDefMap\n cycles: string[]\n}\n\ntype NodeDefsInCycleFixParams = NodeDefsFixParams & {\n cycle: string\n}\n\ntype NodeDefFixParams = NodeDefsInCycleFixParams & {\n nodeDef: NodeDef<any>\n}\n\ntype LayoutPropFixParams = NodeDefFixParams & {\n propName: string\n}\n\ntype LayoutPropFixerFnParams = LayoutPropFixParams & { propOld: any }\n\nconst calculateNodeDefHierarchy = (params: { nodeDef: NodeDef<any>; nodeDefs: NodeDefMap }): string[] => {\n const { nodeDef, nodeDefs } = params\n const hierarchy = []\n const visitedNodeDefUuids = new Set<string>()\n let currentParentUuid = nodeDef.parentUuid\n while (currentParentUuid) {\n if (visitedNodeDefUuids.has(currentParentUuid)) {\n throw new SystemError('nodeDef.hierarchyCircularDependency', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n visitedNodeDefUuids.add(currentParentUuid)\n hierarchy.unshift(currentParentUuid)\n const currentParentNode = nodeDefs[currentParentUuid]\n if (!currentParentNode) {\n throw new SystemError('nodeDef.parentNotFound', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n currentParentUuid = currentParentNode.parentUuid\n }\n return hierarchy\n}\n\nconst fixHierarchy = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDefs, nodeDef, sideEffect } = params\n const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef })\n // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length\n return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHierarchy(nodeDef))\n ? null\n : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect })\n}\n\nconst fixLayoutProp = (\n params: LayoutPropFixParams & { fixerFn: (params: LayoutPropFixerFnParams) => any }\n): NodeDef<any> | null => {\n const { cycle, nodeDef, propName, sideEffect, fixerFn } = params\n\n const propPath = ['props', 'layout', cycle, propName]\n\n const propOld = Objects.path(propPath)(nodeDef)\n\n if (Objects.isEmpty(propOld)) return null\n\n const propFixed = fixerFn({ ...params, propOld })\n\n if (Objects.isEqual(propOld, propFixed)) return null\n\n return Objects.assocPath({\n obj: nodeDef,\n path: propPath,\n value: propFixed,\n sideEffect,\n })\n}\n\nconst fixIndexChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'indexChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: indexChildren }) =>\n (indexChildren as string[]).filter((childDefUuid) => {\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n NodeDefs.isEntity(childDef) &&\n NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity)\n )\n }),\n })\n\nconst fixLayoutChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'layoutChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: layoutChildren }) =>\n (layoutChildren as NodeDefEntityLayoutChildItem[]).filter((item) => {\n const childDefUuid = typeof item === 'string' ? item : item.i\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n (!NodeDefs.isEntity(childDef) || !NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity))\n )\n }),\n })\n\nconst fix = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDef } = params\n let nodeDefFixed: NodeDef<any> | null = fixHierarchy(params)\n if (NodeDefs.isEntity(nodeDef)) {\n nodeDefFixed = fixIndexChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n nodeDefFixed = fixLayoutChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n }\n return nodeDefFixed\n}\n\nconst fixNodeDefs = (params: NodeDefsFixParams): { nodeDefs: NodeDefMap; updatedNodeDefs: NodeDefMap } => {\n const { nodeDefs, cycles } = params\n const nodeDefsResult: NodeDefMap = {}\n const updatedNodeDefs: NodeDefMap = {}\n\n for (const cycle of cycles) {\n for (const nodeDef of Object.values(nodeDefs)) {\n const nodeDefToFix = nodeDefsResult[nodeDef.uuid] ?? nodeDef\n const fixedNodeDef = fix({ ...params, cycle, nodeDef: nodeDefToFix })\n if (fixedNodeDef) {\n updatedNodeDefs[nodeDef.uuid] = fixedNodeDef\n }\n nodeDefsResult[nodeDef.uuid] = fixedNodeDef ?? nodeDef\n }\n }\n return {\n nodeDefs: nodeDefsResult,\n updatedNodeDefs,\n }\n}\n\nexport const NodeDefsFixer = {\n fixNodeDefs,\n}\n"]}
|
|
@@ -42,7 +42,7 @@ const selfReferenceAllowedByDependencyType = {
|
|
|
42
42
|
[SurveyDependencyType.validations]: true,
|
|
43
43
|
[SurveyDependencyType.visible]: false,
|
|
44
44
|
};
|
|
45
|
-
const
|
|
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 :
|
|
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 =
|
|
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;
|