@wix/motion-edm-autogen-transformations-core 1.16.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/__tests__/corvid-entity.spec.js +1 -4
  2. package/dist/cjs/__tests__/corvid-entity.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/getArgumentCardinality.spec.js +6 -5
  4. package/dist/cjs/__tests__/getArgumentCardinality.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/helpers.spec.js +2 -6
  6. package/dist/cjs/__tests__/helpers.spec.js.map +1 -1
  7. package/dist/cjs/__tests__/reduceTransformation.spec.js +10 -11
  8. package/dist/cjs/__tests__/reduceTransformation.spec.js.map +1 -1
  9. package/dist/cjs/__tests__/transformations/custom-functions.spec.js +1 -10
  10. package/dist/cjs/__tests__/transformations/custom-functions.spec.js.map +1 -1
  11. package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js +2 -5
  12. package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js.map +1 -1
  13. package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js +4 -7
  14. package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js.map +1 -1
  15. package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js +2 -5
  16. package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js.map +1 -1
  17. package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js +2 -4
  18. package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js.map +1 -1
  19. package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js +6 -9
  20. package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js.map +1 -1
  21. package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js +4 -7
  22. package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js.map +1 -1
  23. package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js +5 -11
  24. package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js.map +1 -1
  25. package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js +1 -9
  26. package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js.map +1 -1
  27. package/dist/cjs/index.js +7 -27
  28. package/dist/cjs/index.js.map +1 -1
  29. package/dist/cjs/lib/corvid-entity/index.js +0 -10
  30. package/dist/cjs/lib/corvid-entity/index.js.map +1 -1
  31. package/dist/cjs/lib/getArgumentCardinality.js +0 -9
  32. package/dist/cjs/lib/getArgumentCardinality.js.map +1 -1
  33. package/dist/cjs/lib/helpers.js +8 -48
  34. package/dist/cjs/lib/helpers.js.map +1 -1
  35. package/dist/cjs/lib/transformations/common.js +0 -3
  36. package/dist/cjs/lib/transformations/common.js.map +1 -1
  37. package/dist/cjs/lib/transformations/constants.js.map +1 -1
  38. package/dist/cjs/lib/transformations/custom-functions.js +0 -10
  39. package/dist/cjs/lib/transformations/custom-functions.js.map +1 -1
  40. package/dist/cjs/lib/transformations/preset/create.js +0 -5
  41. package/dist/cjs/lib/transformations/preset/create.js.map +1 -1
  42. package/dist/cjs/lib/transformations/preset/delete.js +0 -12
  43. package/dist/cjs/lib/transformations/preset/delete.js.map +1 -1
  44. package/dist/cjs/lib/transformations/preset/get.js +0 -5
  45. package/dist/cjs/lib/transformations/preset/get.js.map +1 -1
  46. package/dist/cjs/lib/transformations/preset/list.js +0 -4
  47. package/dist/cjs/lib/transformations/preset/list.js.map +1 -1
  48. package/dist/cjs/lib/transformations/preset/query.js +1 -8
  49. package/dist/cjs/lib/transformations/preset/query.js.map +1 -1
  50. package/dist/cjs/lib/transformations/preset/update.js +0 -9
  51. package/dist/cjs/lib/transformations/preset/update.js.map +1 -1
  52. package/dist/cjs/lib/transformations/reduceTransformation.js +28 -64
  53. package/dist/cjs/lib/transformations/reduceTransformation.js.map +1 -1
  54. package/dist/cjs/lib/transformations/validations/common.js +3 -13
  55. package/dist/cjs/lib/transformations/validations/common.js.map +1 -1
  56. package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js +2 -23
  57. package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js.map +1 -1
  58. package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js +10 -36
  59. package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js.map +1 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["OMIT_SOURCE_PROPERTY_NAME","transformations","FIELDS_TO_OMIT_PROPERTY_NAME","validationError","description","value","parentPath","invalidValue","validateOmitTransformation","source","fieldsToOmit","validateSource","validationErrors","currentPath","omitSourcePropertyPath","join","push","map","sourceValidationError","fieldsToOmitPropertyPath","isArray","every","isString","some","omitPathSegment","segmentCount"],"sources":["../../../../../src/lib/transformations/validations/common.ts"],"sourcesContent":["import { segmentCount } from '@wix/motion-edm-autogen-common';\nimport { some, isArray, isString, every } from 'lodash';\n\nimport { transformations } from '../common';\n\nconst { OMIT_SOURCE_PROPERTY_NAME, FIELDS_TO_OMIT_PROPERTY_NAME } =\n transformations;\n\nconst validationError = (description, value, parentPath: any = null) => ({\n invalidValue: value,\n description,\n parentPath,\n});\n\nconst validateOmitTransformation = ({\n source,\n fieldsToOmit,\n validateSource,\n parentPath = null,\n}) => {\n const validationErrors: any[] = [];\n const currentPath = parentPath ? [parentPath] : [];\n const omitSourcePropertyPath = [\n ...currentPath,\n OMIT_SOURCE_PROPERTY_NAME,\n ].join('.');\n\n validationErrors.push(\n ...validateSource(source).validationErrors.map((sourceValidationError) => ({\n ...sourceValidationError,\n parentPath: omitSourcePropertyPath,\n })),\n );\n\n const fieldsToOmitPropertyPath = [\n ...currentPath,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n ].join('.');\n\n if (!isArray(fieldsToOmit) || !every(fieldsToOmit, isString)) {\n validationErrors.push(\n validationError(\n 'must be an array of strings',\n fieldsToOmit,\n fieldsToOmitPropertyPath,\n ),\n );\n\n return validationErrors;\n }\n\n if (\n some(fieldsToOmit, (omitPathSegment) => segmentCount(omitPathSegment) > 1)\n ) {\n validationErrors.push(\n validationError(\n 'must contain non-nested paths only',\n fieldsToOmit,\n fieldsToOmitPropertyPath,\n ),\n );\n }\n\n return validationErrors;\n};\n\nexport { validationError, validateOmitTransformation };\n"],"mappings":";;;;;AAAA;;AACA;;AAEA;;AAEA,MAAQA,yBAAR,GACEC,uBADF,CAAQD,yBAAR;AAAA,MAAmCE,4BAAnC,GACED,uBADF,CAAmCC,4BAAnC;;AAGA,MAAMC,eAAe,GAAG,CAACC,WAAD,EAAcC,KAAd,EAAqBC,UAAe,GAAG,IAAvC,MAAiD;EACvEC,YAAY,EAAEF,KADyD;EAEvED,WAFuE;EAGvEE;AAHuE,CAAjD,CAAxB;;;;AAMA,MAAME,0BAA0B,GAAG,CAAC;EAClCC,MADkC;EAElCC,YAFkC;EAGlCC,cAHkC;EAIlCL,UAAU,GAAG;AAJqB,CAAD,KAK7B;EACJ,MAAMM,gBAAuB,GAAG,EAAhC;EACA,MAAMC,WAAW,GAAGP,UAAU,GAAG,CAACA,UAAD,CAAH,GAAkB,EAAhD;EACA,MAAMQ,sBAAsB,GAAG,CAC7B,GAAGD,WAD0B,EAE7Bb,yBAF6B,EAG7Be,IAH6B,CAGxB,GAHwB,CAA/B;EAKAH,gBAAgB,CAACI,IAAjB,CACE,GAAGL,cAAc,CAACF,MAAD,CAAd,CAAuBG,gBAAvB,CAAwCK,GAAxC,CAA6CC,qBAAD,KAA4B,EACzE,GAAGA,qBADsE;IAEzEZ,UAAU,EAAEQ;EAF6D,CAA5B,CAA5C,CADL;EAOA,MAAMK,wBAAwB,GAAG,CAC/B,GAAGN,WAD4B,EAE/BX,4BAF+B,EAG/Ba,IAH+B,CAG1B,GAH0B,CAAjC;;EAKA,IAAI,CAAC,IAAAK,eAAA,EAAQV,YAAR,CAAD,IAA0B,CAAC,IAAAW,aAAA,EAAMX,YAAN,EAAoBY,gBAApB,CAA/B,EAA8D;IAC5DV,gBAAgB,CAACI,IAAjB,CACEb,eAAe,CACb,6BADa,EAEbO,YAFa,EAGbS,wBAHa,CADjB;IAQA,OAAOP,gBAAP;EACD;;EAED,IACE,IAAAW,YAAA,EAAKb,YAAL,EAAoBc,eAAD,IAAqB,IAAAC,oCAAA,EAAaD,eAAb,IAAgC,CAAxE,CADF,EAEE;IACAZ,gBAAgB,CAACI,IAAjB,CACEb,eAAe,CACb,oCADa,EAEbO,YAFa,EAGbS,wBAHa,CADjB;EAOD;;EAED,OAAOP,gBAAP;AACD,CAlDD"}
1
+ {"version":3,"names":["_motionEdmAutogenCommon","require","_lodash","_common","OMIT_SOURCE_PROPERTY_NAME","transformations","FIELDS_TO_OMIT_PROPERTY_NAME","validationError","description","value","parentPath","invalidValue","exports","validateOmitTransformation","source","fieldsToOmit","validateSource","validationErrors","currentPath","omitSourcePropertyPath","join","push","map","sourceValidationError","fieldsToOmitPropertyPath","isArray","every","isString","some","omitPathSegment","segmentCount"],"sources":["../../../../../src/lib/transformations/validations/common.ts"],"sourcesContent":["import { segmentCount } from '@wix/motion-edm-autogen-common';\nimport { some, isArray, isString, every } from 'lodash';\n\nimport { transformations } from '../common';\n\nconst { OMIT_SOURCE_PROPERTY_NAME, FIELDS_TO_OMIT_PROPERTY_NAME } =\n transformations;\n\nconst validationError = (description, value, parentPath: any = null) => ({\n invalidValue: value,\n description,\n parentPath,\n});\n\nconst validateOmitTransformation = ({\n source,\n fieldsToOmit,\n validateSource,\n parentPath = null,\n}) => {\n const validationErrors: any[] = [];\n const currentPath = parentPath ? [parentPath] : [];\n const omitSourcePropertyPath = [\n ...currentPath,\n OMIT_SOURCE_PROPERTY_NAME,\n ].join('.');\n\n validationErrors.push(\n ...validateSource(source).validationErrors.map((sourceValidationError) => ({\n ...sourceValidationError,\n parentPath: omitSourcePropertyPath,\n })),\n );\n\n const fieldsToOmitPropertyPath = [\n ...currentPath,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n ].join('.');\n\n if (!isArray(fieldsToOmit) || !every(fieldsToOmit, isString)) {\n validationErrors.push(\n validationError(\n 'must be an array of strings',\n fieldsToOmit,\n fieldsToOmitPropertyPath,\n ),\n );\n\n return validationErrors;\n }\n\n if (\n some(fieldsToOmit, (omitPathSegment) => segmentCount(omitPathSegment) > 1)\n ) {\n validationErrors.push(\n validationError(\n 'must contain non-nested paths only',\n fieldsToOmit,\n fieldsToOmitPropertyPath,\n ),\n );\n }\n\n return validationErrors;\n};\n\nexport { validationError, validateOmitTransformation };\n"],"mappings":";;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAEA,MAAQG,yBAAyB,GAC/BC,uBAAe,CADTD,yBAAyB;EAAEE,4BAA4B,GAC7DD,uBAAe,CADkBC,4BAA4B;AAG/D,MAAMC,eAAe,GAAGA,CAACC,WAAW,EAAEC,KAAK,EAAEC,UAAe,GAAG,IAAI,MAAM;EACvEC,YAAY,EAAEF,KAAK;EACnBD,WAAW;EACXE;AACF,CAAC,CAAC;AAACE,OAAA,CAAAL,eAAA,GAAAA,eAAA;AAEH,MAAMM,0BAA0B,GAAGA,CAAC;EAClCC,MAAM;EACNC,YAAY;EACZC,cAAc;EACdN,UAAU,GAAG;AACf,CAAC,KAAK;EACJ,MAAMO,gBAAuB,GAAG,EAAE;EAClC,MAAMC,WAAW,GAAGR,UAAU,GAAG,CAACA,UAAU,CAAC,GAAG,EAAE;EAClD,MAAMS,sBAAsB,GAAG,CAC7B,GAAGD,WAAW,EACdd,yBAAyB,CAC1B,CAACgB,IAAI,CAAC,GAAG,CAAC;EAEXH,gBAAgB,CAACI,IAAI,CACnB,GAAGL,cAAc,CAACF,MAAM,CAAC,CAACG,gBAAgB,CAACK,GAAG,CAAEC,qBAAqB,KAAM;IACzE,GAAGA,qBAAqB;IACxBb,UAAU,EAAES;EACd,CAAC,CAAC,CACJ,CAAC;EAED,MAAMK,wBAAwB,GAAG,CAC/B,GAAGN,WAAW,EACdZ,4BAA4B,CAC7B,CAACc,IAAI,CAAC,GAAG,CAAC;EAEX,IAAI,CAAC,IAAAK,eAAO,EAACV,YAAY,CAAC,IAAI,CAAC,IAAAW,aAAK,EAACX,YAAY,EAAEY,gBAAQ,CAAC,EAAE;IAC5DV,gBAAgB,CAACI,IAAI,CACnBd,eAAe,CACb,6BAA6B,EAC7BQ,YAAY,EACZS,wBACF,CACF,CAAC;IAED,OAAOP,gBAAgB;EACzB;EAEA,IACE,IAAAW,YAAI,EAACb,YAAY,EAAGc,eAAe,IAAK,IAAAC,oCAAY,EAACD,eAAe,CAAC,GAAG,CAAC,CAAC,EAC1E;IACAZ,gBAAgB,CAACI,IAAI,CACnBd,eAAe,CACb,oCAAoC,EACpCQ,YAAY,EACZS,wBACF,CACF,CAAC;EACH;EAEA,OAAOP,gBAAgB;AACzB,CAAC;AAACL,OAAA,CAAAC,0BAAA,GAAAA,0BAAA"}
@@ -2,42 +2,29 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.validateRequestTransformation = validateRequestTransformation;
5
-
6
5
  var _motionEdmAutogenCommon = require("@wix/motion-edm-autogen-common");
7
-
8
6
  var _lodash = require("lodash");
9
-
10
7
  var _corvidEntity = require("../../corvid-entity");
11
-
12
8
  var _helpers = require("../../helpers");
13
-
14
9
  var _customFunctions = require("../custom-functions");
15
-
16
10
  var _reduceTransformation = require("../reduceTransformation");
17
-
18
11
  var _common = require("./common");
19
-
20
12
  const validateSimpleTransformation = (simpleTransformation, path = null) => {
21
13
  const validationErrors = [];
22
14
  const transformationSegments = simpleTransformation.split('.');
23
15
  const firstSegment = transformationSegments[0];
24
16
  transformationSegments.filter(_corvidEntity.isReservedCommonFieldName).forEach(invalidName => validationErrors.push((0, _common.validationError)(`cannot refer to ${invalidName} field, consider using ${(0, _corvidEntity.toCorvidName)(invalidName)} instead`, simpleTransformation, path)));
25
-
26
17
  if ((0, _lodash.some)(transformationSegments, _helpers.isSpreadOperator)) {
27
18
  validationErrors.push((0, _common.validationError)('cannot refer to the * operator', simpleTransformation, path));
28
19
  }
29
-
30
20
  if (!(0, _helpers.hasValidArgumentIndex)(firstSegment)) {
31
21
  validationErrors.push((0, _common.validationError)('must start with $[N] where N is an index', simpleTransformation, path));
32
22
  }
33
-
34
23
  if ((0, _lodash.filter)(transformationSegments, _helpers.hasValidArgumentIndex).length > 1) {
35
24
  validationErrors.push((0, _common.validationError)('must have a single argument-index as the first path segment', simpleTransformation, path));
36
25
  }
37
-
38
26
  return validationErrors;
39
27
  };
40
-
41
28
  function validateRequestTransformation(transformation) {
42
29
  const errors = (0, _reduceTransformation.reduceTransformation)(transformation, {
43
30
  visitors: {
@@ -47,7 +34,6 @@ function validateRequestTransformation(transformation) {
47
34
  acc.push((0, _common.validationError)('contains an invalid custom function expression', rawExpression, path));
48
35
  } else {
49
36
  const argumentExpression = argumentExpressions[0];
50
-
51
37
  if (functionName === 'constant') {
52
38
  if ((0, _helpers.isInvalidJsonValue)(argumentExpression)) {
53
39
  acc.push((0, _common.validationError)('must be a valid json value', argumentExpression, path));
@@ -55,17 +41,14 @@ function validateRequestTransformation(transformation) {
55
41
  } else {
56
42
  // TODO: validate all arguments
57
43
  const _argumentExpression$s = argumentExpression.split('.'),
58
- firstSegment = _argumentExpression$s[0],
59
- nestedPathSegments = _argumentExpression$s.slice(1);
60
-
44
+ firstSegment = _argumentExpression$s[0],
45
+ nestedPathSegments = _argumentExpression$s.slice(1);
61
46
  if ((0, _helpers.isInvalidJsonPath)(argumentExpression)) {
62
47
  acc.push((0, _common.validationError)('must be a valid json-path', argumentExpression, path));
63
48
  }
64
-
65
49
  if (!(0, _helpers.hasValidArgumentIndex)(firstSegment)) {
66
50
  acc.push((0, _common.validationError)('must start with $[N] where N is an index', argumentExpression, path));
67
51
  }
68
-
69
52
  nestedPathSegments.forEach(nestedPathSegment => {
70
53
  if ((0, _helpers.hasValidArgumentIndex)(nestedPathSegment)) {
71
54
  acc.push((0, _common.validationError)('must have a single argument-index as the first path segment', argumentExpression, path));
@@ -77,19 +60,15 @@ function validateRequestTransformation(transformation) {
77
60
  NestedSimpleTransformationExpression: (acc, path, simpleTransformationExpression) => {
78
61
  const lastPathSegment = (0, _motionEdmAutogenCommon.lastPathSegmentOf)(path);
79
62
  const parentPath = (0, _motionEdmAutogenCommon.parentPathOf)(path);
80
-
81
63
  if ((0, _customFunctions.isFunctionCallExpression)(lastPathSegment)) {
82
64
  acc.push((0, _common.validationError)('cannot be a custom function call', lastPathSegment, parentPath));
83
65
  }
84
-
85
66
  if ((0, _helpers.hasValidArgumentIndex)(lastPathSegment)) {
86
67
  acc.push((0, _common.validationError)("must start with '$.'", lastPathSegment, parentPath));
87
68
  }
88
-
89
69
  if ((0, _helpers.isSpreadOperator)(lastPathSegment)) {
90
70
  acc.push((0, _common.validationError)('cannot refer to the * operator', lastPathSegment, parentPath));
91
71
  }
92
-
93
72
  acc.push(...validateSimpleTransformation(simpleTransformationExpression, path));
94
73
  },
95
74
  NestedUnsupportedTransformationExpression: (acc, path, value) => {
@@ -1 +1 @@
1
- {"version":3,"names":["validateSimpleTransformation","simpleTransformation","path","validationErrors","transformationSegments","split","firstSegment","filter","isReservedCommonFieldName","forEach","invalidName","push","validationError","toCorvidName","some","isSpreadOperator","hasValidArgumentIndex","length","validateRequestTransformation","transformation","errors","reduceTransformation","visitors","TopLevelSimpleTransformationExpression","CustomFunctionExpression","acc","functionName","argumentExpressions","rawExpression","argumentExpression","isInvalidJsonValue","nestedPathSegments","isInvalidJsonPath","nestedPathSegment","NestedSimpleTransformationExpression","simpleTransformationExpression","lastPathSegment","lastPathSegmentOf","parentPath","parentPathOf","isFunctionCallExpression","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateOmitTransformation","validateSource","NestedOmit","accumulator","isValid"],"sources":["../../../../../src/lib/transformations/validations/validateRequestTransformation.ts"],"sourcesContent":["import {\n parentPathOf,\n lastPathSegmentOf,\n} from '@wix/motion-edm-autogen-common';\nimport { filter, some } from 'lodash';\nimport { isReservedCommonFieldName, toCorvidName } from '../../corvid-entity';\nimport {\n isInvalidJsonPath,\n hasValidArgumentIndex,\n isSpreadOperator,\n isInvalidJsonValue,\n} from '../../helpers';\nimport { isFunctionCallExpression } from '../custom-functions';\nimport { reduceTransformation } from '../reduceTransformation';\nimport { validationError, validateOmitTransformation } from './common';\n\nconst validateSimpleTransformation = (simpleTransformation, path = null) => {\n const validationErrors: any[] = [];\n const transformationSegments = simpleTransformation.split('.');\n const [firstSegment] = transformationSegments;\n\n transformationSegments\n .filter(isReservedCommonFieldName)\n .forEach((invalidName) =>\n validationErrors.push(\n validationError(\n `cannot refer to ${invalidName} field, consider using ${toCorvidName(\n invalidName,\n )} instead`,\n simpleTransformation,\n path,\n ),\n ),\n );\n\n if (some(transformationSegments, isSpreadOperator)) {\n validationErrors.push(\n validationError(\n 'cannot refer to the * operator',\n simpleTransformation,\n path,\n ),\n );\n }\n\n if (!hasValidArgumentIndex(firstSegment)) {\n validationErrors.push(\n validationError(\n 'must start with $[N] where N is an index',\n simpleTransformation,\n path,\n ),\n );\n }\n\n if (filter(transformationSegments, hasValidArgumentIndex).length > 1) {\n validationErrors.push(\n validationError(\n 'must have a single argument-index as the first path segment',\n simpleTransformation,\n path,\n ),\n );\n }\n\n return validationErrors;\n};\n\nfunction validateRequestTransformation(transformation) {\n const errors = reduceTransformation(transformation, {\n visitors: {\n TopLevelSimpleTransformationExpression: (simpleTransformation) =>\n validateSimpleTransformation(simpleTransformation),\n CustomFunctionExpression: (\n acc,\n path,\n functionName,\n argumentExpressions,\n rawExpression,\n ) => {\n if (functionName === null || argumentExpressions === null) {\n acc.push(\n validationError(\n 'contains an invalid custom function expression',\n rawExpression,\n path,\n ),\n );\n } else {\n const [argumentExpression] = argumentExpressions;\n\n if (functionName === 'constant') {\n if (isInvalidJsonValue(argumentExpression)) {\n acc.push(\n validationError(\n 'must be a valid json value',\n argumentExpression,\n path,\n ),\n );\n }\n } else {\n // TODO: validate all arguments\n const [firstSegment, ...nestedPathSegments] =\n argumentExpression.split('.');\n\n if (isInvalidJsonPath(argumentExpression)) {\n acc.push(\n validationError(\n 'must be a valid json-path',\n argumentExpression,\n path,\n ),\n );\n }\n\n if (!hasValidArgumentIndex(firstSegment)) {\n acc.push(\n validationError(\n 'must start with $[N] where N is an index',\n argumentExpression,\n path,\n ),\n );\n }\n\n nestedPathSegments.forEach((nestedPathSegment) => {\n if (hasValidArgumentIndex(nestedPathSegment)) {\n acc.push(\n validationError(\n 'must have a single argument-index as the first path segment',\n argumentExpression,\n path,\n ),\n );\n }\n });\n }\n }\n },\n NestedSimpleTransformationExpression: (\n acc,\n path,\n simpleTransformationExpression,\n ) => {\n const lastPathSegment = lastPathSegmentOf(path);\n const parentPath = parentPathOf(path);\n\n if (isFunctionCallExpression(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot be a custom function call',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (hasValidArgumentIndex(lastPathSegment)) {\n acc.push(\n validationError(\n \"must start with '$.'\",\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isSpreadOperator(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot refer to the * operator',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n acc.push(\n ...validateSimpleTransformation(simpleTransformationExpression, path),\n );\n },\n NestedUnsupportedTransformationExpression: (acc, path, value) => {\n acc.push(\n validationError(\n 'must start with $[N] where N is an index',\n value,\n path,\n ),\n );\n },\n TopLevelUnsupportedTransformationExpression: (\n unsupportedTransformation,\n ) => [\n validationError(\n 'must start with $[N] where N is an index',\n unsupportedTransformation,\n ),\n ],\n TopLevelOmit: (source, fieldsToOmit) =>\n validateOmitTransformation({\n source,\n fieldsToOmit,\n validateSource: validateRequestTransformation,\n }),\n NestedOmit: (acc, path, source, fieldsToOmit) =>\n acc.push(\n ...validateOmitTransformation({\n source,\n fieldsToOmit,\n parentPath: path,\n validateSource: validateRequestTransformation,\n }),\n ),\n },\n accumulator: [],\n });\n\n return {\n isValid: errors.length === 0,\n validationErrors: errors,\n };\n}\n\nexport { validateRequestTransformation };\n"],"mappings":"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"}
1
+ {"version":3,"names":["_motionEdmAutogenCommon","require","_lodash","_corvidEntity","_helpers","_customFunctions","_reduceTransformation","_common","validateSimpleTransformation","simpleTransformation","path","validationErrors","transformationSegments","split","firstSegment","filter","isReservedCommonFieldName","forEach","invalidName","push","validationError","toCorvidName","some","isSpreadOperator","hasValidArgumentIndex","length","validateRequestTransformation","transformation","errors","reduceTransformation","visitors","TopLevelSimpleTransformationExpression","CustomFunctionExpression","acc","functionName","argumentExpressions","rawExpression","argumentExpression","isInvalidJsonValue","_argumentExpression$s","nestedPathSegments","slice","isInvalidJsonPath","nestedPathSegment","NestedSimpleTransformationExpression","simpleTransformationExpression","lastPathSegment","lastPathSegmentOf","parentPath","parentPathOf","isFunctionCallExpression","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateOmitTransformation","validateSource","NestedOmit","accumulator","isValid"],"sources":["../../../../../src/lib/transformations/validations/validateRequestTransformation.ts"],"sourcesContent":["import {\n parentPathOf,\n lastPathSegmentOf,\n} from '@wix/motion-edm-autogen-common';\nimport { filter, some } from 'lodash';\nimport { isReservedCommonFieldName, toCorvidName } from '../../corvid-entity';\nimport {\n isInvalidJsonPath,\n hasValidArgumentIndex,\n isSpreadOperator,\n isInvalidJsonValue,\n} from '../../helpers';\nimport { isFunctionCallExpression } from '../custom-functions';\nimport { reduceTransformation } from '../reduceTransformation';\nimport { validationError, validateOmitTransformation } from './common';\n\nconst validateSimpleTransformation = (simpleTransformation, path = null) => {\n const validationErrors: any[] = [];\n const transformationSegments = simpleTransformation.split('.');\n const [firstSegment] = transformationSegments;\n\n transformationSegments\n .filter(isReservedCommonFieldName)\n .forEach((invalidName) =>\n validationErrors.push(\n validationError(\n `cannot refer to ${invalidName} field, consider using ${toCorvidName(\n invalidName,\n )} instead`,\n simpleTransformation,\n path,\n ),\n ),\n );\n\n if (some(transformationSegments, isSpreadOperator)) {\n validationErrors.push(\n validationError(\n 'cannot refer to the * operator',\n simpleTransformation,\n path,\n ),\n );\n }\n\n if (!hasValidArgumentIndex(firstSegment)) {\n validationErrors.push(\n validationError(\n 'must start with $[N] where N is an index',\n simpleTransformation,\n path,\n ),\n );\n }\n\n if (filter(transformationSegments, hasValidArgumentIndex).length > 1) {\n validationErrors.push(\n validationError(\n 'must have a single argument-index as the first path segment',\n simpleTransformation,\n path,\n ),\n );\n }\n\n return validationErrors;\n};\n\nfunction validateRequestTransformation(transformation) {\n const errors = reduceTransformation(transformation, {\n visitors: {\n TopLevelSimpleTransformationExpression: (simpleTransformation) =>\n validateSimpleTransformation(simpleTransformation),\n CustomFunctionExpression: (\n acc,\n path,\n functionName,\n argumentExpressions,\n rawExpression,\n ) => {\n if (functionName === null || argumentExpressions === null) {\n acc.push(\n validationError(\n 'contains an invalid custom function expression',\n rawExpression,\n path,\n ),\n );\n } else {\n const [argumentExpression] = argumentExpressions;\n\n if (functionName === 'constant') {\n if (isInvalidJsonValue(argumentExpression)) {\n acc.push(\n validationError(\n 'must be a valid json value',\n argumentExpression,\n path,\n ),\n );\n }\n } else {\n // TODO: validate all arguments\n const [firstSegment, ...nestedPathSegments] =\n argumentExpression.split('.');\n\n if (isInvalidJsonPath(argumentExpression)) {\n acc.push(\n validationError(\n 'must be a valid json-path',\n argumentExpression,\n path,\n ),\n );\n }\n\n if (!hasValidArgumentIndex(firstSegment)) {\n acc.push(\n validationError(\n 'must start with $[N] where N is an index',\n argumentExpression,\n path,\n ),\n );\n }\n\n nestedPathSegments.forEach((nestedPathSegment) => {\n if (hasValidArgumentIndex(nestedPathSegment)) {\n acc.push(\n validationError(\n 'must have a single argument-index as the first path segment',\n argumentExpression,\n path,\n ),\n );\n }\n });\n }\n }\n },\n NestedSimpleTransformationExpression: (\n acc,\n path,\n simpleTransformationExpression,\n ) => {\n const lastPathSegment = lastPathSegmentOf(path);\n const parentPath = parentPathOf(path);\n\n if (isFunctionCallExpression(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot be a custom function call',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (hasValidArgumentIndex(lastPathSegment)) {\n acc.push(\n validationError(\n \"must start with '$.'\",\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isSpreadOperator(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot refer to the * operator',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n acc.push(\n ...validateSimpleTransformation(simpleTransformationExpression, path),\n );\n },\n NestedUnsupportedTransformationExpression: (acc, path, value) => {\n acc.push(\n validationError(\n 'must start with $[N] where N is an index',\n value,\n path,\n ),\n );\n },\n TopLevelUnsupportedTransformationExpression: (\n unsupportedTransformation,\n ) => [\n validationError(\n 'must start with $[N] where N is an index',\n unsupportedTransformation,\n ),\n ],\n TopLevelOmit: (source, fieldsToOmit) =>\n validateOmitTransformation({\n source,\n fieldsToOmit,\n validateSource: validateRequestTransformation,\n }),\n NestedOmit: (acc, path, source, fieldsToOmit) =>\n acc.push(\n ...validateOmitTransformation({\n source,\n fieldsToOmit,\n parentPath: path,\n validateSource: validateRequestTransformation,\n }),\n ),\n },\n accumulator: [],\n });\n\n return {\n isValid: errors.length === 0,\n validationErrors: errors,\n };\n}\n\nexport { validateRequestTransformation };\n"],"mappings":"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"}
@@ -2,67 +2,51 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.validateResponseTransformation = validateResponseTransformation;
5
-
6
5
  var _motionEdmAutogenCommon = require("@wix/motion-edm-autogen-common");
7
-
8
6
  var _lodash = require("lodash");
9
-
10
7
  var _corvidEntity = require("../../corvid-entity");
11
-
12
8
  var _helpers = require("../../helpers");
13
-
14
9
  var _common = require("../common");
15
-
16
10
  var _customFunctions = require("../custom-functions");
17
-
18
11
  var _reduceTransformation = require("../reduceTransformation");
19
-
20
12
  var _common2 = require("./common");
21
-
22
13
  const ARRAY_ITEMS_PATH_PROPERTY_NAME = _common.transformations.ARRAY_ITEMS_PATH_PROPERTY_NAME,
23
- ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME = _common.transformations.ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME;
14
+ ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME = _common.transformations.ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME;
24
15
  const INVALID_PATH_STRING_MESSAGE = "must be a string starting with '$.'";
25
-
26
16
  const validateArrayItemTransformation = (sourceArrayExpression, itemTransformation, parentPath = null) => {
27
- const withOptionalParentPath = path => err => ({ ...err,
17
+ const withOptionalParentPath = path => err => ({
18
+ ...err,
28
19
  // @ts-expect-error
29
20
  parentPath: [parentPath, path, _common2.validationError.parentPath].filter(s => s).join('.')
30
21
  });
31
-
32
22
  const validationErrors = [];
33
-
34
23
  if ((0, _helpers.isInvalidJsonPath)(sourceArrayExpression)) {
35
24
  const fullPath = parentPath ? [parentPath, ARRAY_ITEMS_PATH_PROPERTY_NAME] : [ARRAY_ITEMS_PATH_PROPERTY_NAME];
36
25
  validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, sourceArrayExpression, fullPath.join('.')));
37
26
  }
38
-
39
- validationErrors.push( // eslint-disable-next-line no-use-before-define
40
- ...validateResponseTransformation(sourceArrayExpression).validationErrors.map(withOptionalParentPath(ARRAY_ITEMS_PATH_PROPERTY_NAME)), // eslint-disable-next-line no-use-before-define
27
+ validationErrors.push(
28
+ // eslint-disable-next-line no-use-before-define
29
+ ...validateResponseTransformation(sourceArrayExpression).validationErrors.map(withOptionalParentPath(ARRAY_ITEMS_PATH_PROPERTY_NAME)),
30
+ // eslint-disable-next-line no-use-before-define
41
31
  ...validateResponseTransformation(itemTransformation).validationErrors.map(withOptionalParentPath(ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME)));
42
32
  return validationErrors;
43
33
  };
44
-
45
34
  const validateSimpleTransformationExpression = (simpleTransformationExpression, path = null) => {
46
35
  const transformationSegments = simpleTransformationExpression.split('.');
47
36
  const firstExpressionSegment = transformationSegments[0];
48
37
  const validationErrors = [];
49
-
50
38
  if (!(0, _helpers.isRootObjectIdentifier)(firstExpressionSegment)) {
51
39
  validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, simpleTransformationExpression, path));
52
40
  }
53
-
54
41
  if ((0, _lodash.some)(transformationSegments, _helpers.isSpreadOperator)) {
55
42
  validationErrors.push((0, _common2.validationError)('cannot refer to the * operator', simpleTransformationExpression, path));
56
43
  }
57
-
58
44
  if ((0, _helpers.isInvalidJsonPath)(simpleTransformationExpression)) {
59
45
  validationErrors.push((0, _common2.validationError)('must be a valid json-path', simpleTransformationExpression, path));
60
46
  }
61
-
62
47
  transformationSegments.filter(_corvidEntity.isReservedCorvidFieldName).forEach(invalidName => validationErrors.push((0, _common2.validationError)(`cannot refer to the ${invalidName} field`, simpleTransformationExpression, path)));
63
48
  return validationErrors;
64
49
  };
65
-
66
50
  const validateCustomFunctionExpression = ({
67
51
  functionName,
68
52
  argumentExpressions,
@@ -70,29 +54,23 @@ const validateCustomFunctionExpression = ({
70
54
  path = null
71
55
  }) => {
72
56
  const validationErrors = [];
73
-
74
57
  if (functionName === null || argumentExpressions === null) {
75
58
  validationErrors.push((0, _common2.validationError)('contains an invalid custom function expression', rawExpression, path));
76
59
  return validationErrors;
77
- } // TODO: validate all arguments
78
-
60
+ }
79
61
 
62
+ // TODO: validate all arguments
80
63
  const argumentExpression = argumentExpressions[0];
81
-
82
64
  const _argumentExpression$s = argumentExpression.split('.'),
83
- firstSegment = _argumentExpression$s[0];
84
-
65
+ firstSegment = _argumentExpression$s[0];
85
66
  if ((0, _helpers.isInvalidJsonPath)(argumentExpression)) {
86
67
  validationErrors.push((0, _common2.validationError)('must be a valid json-path', argumentExpression, path));
87
68
  }
88
-
89
69
  if (!(0, _helpers.isRootObjectIdentifier)(firstSegment)) {
90
70
  validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, argumentExpression, path));
91
71
  }
92
-
93
72
  return validationErrors;
94
73
  };
95
-
96
74
  function validateResponseTransformation(transformation) {
97
75
  const errors = (0, _reduceTransformation.reduceTransformation)(transformation, {
98
76
  visitors: {
@@ -114,19 +92,15 @@ function validateResponseTransformation(transformation) {
114
92
  const lastPathSegment = (0, _motionEdmAutogenCommon.lastPathSegmentOf)(path);
115
93
  const parentPath = (0, _motionEdmAutogenCommon.parentPathOf)(path);
116
94
  acc.push(...validateSimpleTransformationExpression(simpleTransformationExpression, path));
117
-
118
95
  if ((0, _customFunctions.isFunctionCallExpression)(lastPathSegment)) {
119
96
  acc.push((0, _common2.validationError)('cannot be a custom function call', lastPathSegment, parentPath));
120
97
  }
121
-
122
98
  if ((0, _corvidEntity.isReservedCorvidFieldName)(lastPathSegment)) {
123
99
  acc.push((0, _common2.validationError)(`cannot refer to the ${lastPathSegment} field`, lastPathSegment, parentPath));
124
100
  }
125
-
126
101
  if ((0, _helpers.hasValidArgumentIndex)(lastPathSegment)) {
127
102
  acc.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, lastPathSegment, parentPath));
128
103
  }
129
-
130
104
  if ((0, _helpers.isRootObjectIdentifier)(lastPathSegment)) {
131
105
  acc.push((0, _common2.validationError)('cannot refer to $ in a transformation key', lastPathSegment, parentPath));
132
106
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ARRAY_ITEMS_PATH_PROPERTY_NAME","transformations","ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME","INVALID_PATH_STRING_MESSAGE","validateArrayItemTransformation","sourceArrayExpression","itemTransformation","parentPath","withOptionalParentPath","path","err","validationError","filter","s","join","validationErrors","isInvalidJsonPath","fullPath","push","validateResponseTransformation","map","validateSimpleTransformationExpression","simpleTransformationExpression","transformationSegments","split","firstExpressionSegment","isRootObjectIdentifier","some","isSpreadOperator","isReservedCorvidFieldName","forEach","invalidName","validateCustomFunctionExpression","functionName","argumentExpressions","rawExpression","argumentExpression","firstSegment","transformation","errors","reduceTransformation","visitors","TopLevelSimpleTransformationExpression","simpleTransformation","TopLevelCustomFunctionExpression","CustomFunctionExpression","acc","NestedSimpleTransformationExpression","lastPathSegment","lastPathSegmentOf","parentPathOf","isFunctionCallExpression","hasValidArgumentIndex","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateOmitTransformation","validateSource","NestedOmit","MapArrayItems","TopLevelMapArrayItems","accumulator","isValid","length"],"sources":["../../../../../src/lib/transformations/validations/validateResponseTransformation.ts"],"sourcesContent":["import {\n parentPathOf,\n lastPathSegmentOf,\n} from '@wix/motion-edm-autogen-common';\nimport { some } from 'lodash';\nimport { isReservedCorvidFieldName } from '../../corvid-entity';\nimport {\n isInvalidJsonPath,\n hasValidArgumentIndex,\n isRootObjectIdentifier,\n isSpreadOperator,\n} from '../../helpers';\nimport { transformations } from '../common';\nimport { isFunctionCallExpression } from '../custom-functions';\nimport { reduceTransformation } from '../reduceTransformation';\nimport { validationError, validateOmitTransformation } from './common';\n\nconst {\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n} = transformations;\n\nconst INVALID_PATH_STRING_MESSAGE = \"must be a string starting with '$.'\";\n\nconst validateArrayItemTransformation = (\n sourceArrayExpression,\n itemTransformation,\n parentPath = null,\n) => {\n const withOptionalParentPath = (path) => (err) => ({\n ...err,\n // @ts-expect-error\n parentPath: [parentPath, path, validationError.parentPath]\n .filter((s) => s)\n .join('.'),\n });\n\n const validationErrors: any[] = [];\n\n if (isInvalidJsonPath(sourceArrayExpression)) {\n const fullPath = parentPath\n ? [parentPath, ARRAY_ITEMS_PATH_PROPERTY_NAME]\n : [ARRAY_ITEMS_PATH_PROPERTY_NAME];\n\n validationErrors.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n sourceArrayExpression,\n fullPath.join('.'),\n ),\n );\n }\n\n validationErrors.push(\n // eslint-disable-next-line no-use-before-define\n ...validateResponseTransformation(\n sourceArrayExpression,\n ).validationErrors.map(\n withOptionalParentPath(ARRAY_ITEMS_PATH_PROPERTY_NAME),\n ),\n // eslint-disable-next-line no-use-before-define\n ...validateResponseTransformation(itemTransformation).validationErrors.map(\n withOptionalParentPath(ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME),\n ),\n );\n\n return validationErrors;\n};\n\nconst validateSimpleTransformationExpression = (\n simpleTransformationExpression,\n path = null,\n) => {\n const transformationSegments = simpleTransformationExpression.split('.');\n const [firstExpressionSegment] = transformationSegments;\n const validationErrors: any[] = [];\n\n if (!isRootObjectIdentifier(firstExpressionSegment)) {\n validationErrors.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n if (some(transformationSegments, isSpreadOperator)) {\n validationErrors.push(\n validationError(\n 'cannot refer to the * operator',\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n if (isInvalidJsonPath(simpleTransformationExpression)) {\n validationErrors.push(\n validationError(\n 'must be a valid json-path',\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n transformationSegments\n .filter(isReservedCorvidFieldName)\n .forEach((invalidName) =>\n validationErrors.push(\n validationError(\n `cannot refer to the ${invalidName} field`,\n simpleTransformationExpression,\n path,\n ),\n ),\n );\n\n return validationErrors;\n};\n\nconst validateCustomFunctionExpression = ({\n functionName,\n argumentExpressions,\n rawExpression,\n path = null,\n}) => {\n const validationErrors: any[] = [];\n\n if (functionName === null || argumentExpressions === null) {\n validationErrors.push(\n validationError(\n 'contains an invalid custom function expression',\n rawExpression,\n path,\n ),\n );\n\n return validationErrors;\n }\n\n // TODO: validate all arguments\n const [argumentExpression] = argumentExpressions;\n\n const [firstSegment] = argumentExpression.split('.');\n\n if (isInvalidJsonPath(argumentExpression)) {\n validationErrors.push(\n validationError('must be a valid json-path', argumentExpression, path),\n );\n }\n\n if (!isRootObjectIdentifier(firstSegment)) {\n validationErrors.push(\n validationError(INVALID_PATH_STRING_MESSAGE, argumentExpression, path),\n );\n }\n\n return validationErrors;\n};\n\nfunction validateResponseTransformation(transformation) {\n const errors = reduceTransformation(transformation, {\n visitors: {\n TopLevelSimpleTransformationExpression: (simpleTransformation) =>\n validateSimpleTransformationExpression(simpleTransformation),\n TopLevelCustomFunctionExpression: (\n functionName,\n argumentExpressions,\n rawExpression,\n ) =>\n validateCustomFunctionExpression({\n functionName,\n argumentExpressions,\n rawExpression,\n }),\n CustomFunctionExpression: (\n acc,\n path,\n functionName,\n argumentExpressions,\n rawExpression,\n ) => {\n acc.push(\n ...validateCustomFunctionExpression({\n functionName,\n argumentExpressions,\n rawExpression,\n path,\n }),\n );\n },\n NestedSimpleTransformationExpression: (\n acc,\n path,\n simpleTransformationExpression,\n ) => {\n const lastPathSegment = lastPathSegmentOf(path);\n const parentPath = parentPathOf(path);\n\n acc.push(\n ...validateSimpleTransformationExpression(\n simpleTransformationExpression,\n path,\n ),\n );\n\n if (isFunctionCallExpression(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot be a custom function call',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isReservedCorvidFieldName(lastPathSegment)) {\n acc.push(\n validationError(\n `cannot refer to the ${lastPathSegment} field`,\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (hasValidArgumentIndex(lastPathSegment)) {\n acc.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isRootObjectIdentifier(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot refer to $ in a transformation key',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n },\n NestedUnsupportedTransformationExpression: (acc, path, value) => {\n acc.push(validationError(INVALID_PATH_STRING_MESSAGE, value, path));\n },\n TopLevelUnsupportedTransformationExpression: (\n unsupportedTransformation,\n ) => [\n validationError(INVALID_PATH_STRING_MESSAGE, unsupportedTransformation),\n ],\n TopLevelOmit: (source, fieldsToOmit) =>\n validateOmitTransformation({\n source,\n fieldsToOmit,\n validateSource: validateResponseTransformation,\n }),\n NestedOmit: (acc, path, source, fieldsToOmit) =>\n acc.push(\n ...validateOmitTransformation({\n source,\n fieldsToOmit,\n parentPath: path,\n validateSource: validateResponseTransformation,\n }),\n ),\n MapArrayItems: (acc, path, sourceArrayExpression, itemTransformation) => {\n acc.push(\n ...validateArrayItemTransformation(\n sourceArrayExpression,\n itemTransformation,\n path,\n ),\n );\n },\n TopLevelMapArrayItems: (sourceArrayExpression, itemTransformation) =>\n validateArrayItemTransformation(\n sourceArrayExpression,\n itemTransformation,\n ),\n },\n accumulator: [],\n });\n\n return {\n isValid: errors.length === 0,\n validationErrors: errors,\n };\n}\n\nexport { validateResponseTransformation };\n"],"mappings":"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"}
1
+ {"version":3,"names":["_motionEdmAutogenCommon","require","_lodash","_corvidEntity","_helpers","_common","_customFunctions","_reduceTransformation","_common2","ARRAY_ITEMS_PATH_PROPERTY_NAME","transformations","ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME","INVALID_PATH_STRING_MESSAGE","validateArrayItemTransformation","sourceArrayExpression","itemTransformation","parentPath","withOptionalParentPath","path","err","validationError","filter","s","join","validationErrors","isInvalidJsonPath","fullPath","push","validateResponseTransformation","map","validateSimpleTransformationExpression","simpleTransformationExpression","transformationSegments","split","firstExpressionSegment","isRootObjectIdentifier","some","isSpreadOperator","isReservedCorvidFieldName","forEach","invalidName","validateCustomFunctionExpression","functionName","argumentExpressions","rawExpression","argumentExpression","_argumentExpression$s","firstSegment","transformation","errors","reduceTransformation","visitors","TopLevelSimpleTransformationExpression","simpleTransformation","TopLevelCustomFunctionExpression","CustomFunctionExpression","acc","NestedSimpleTransformationExpression","lastPathSegment","lastPathSegmentOf","parentPathOf","isFunctionCallExpression","hasValidArgumentIndex","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateOmitTransformation","validateSource","NestedOmit","MapArrayItems","TopLevelMapArrayItems","accumulator","isValid","length"],"sources":["../../../../../src/lib/transformations/validations/validateResponseTransformation.ts"],"sourcesContent":["import {\n parentPathOf,\n lastPathSegmentOf,\n} from '@wix/motion-edm-autogen-common';\nimport { some } from 'lodash';\nimport { isReservedCorvidFieldName } from '../../corvid-entity';\nimport {\n isInvalidJsonPath,\n hasValidArgumentIndex,\n isRootObjectIdentifier,\n isSpreadOperator,\n} from '../../helpers';\nimport { transformations } from '../common';\nimport { isFunctionCallExpression } from '../custom-functions';\nimport { reduceTransformation } from '../reduceTransformation';\nimport { validationError, validateOmitTransformation } from './common';\n\nconst {\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n} = transformations;\n\nconst INVALID_PATH_STRING_MESSAGE = \"must be a string starting with '$.'\";\n\nconst validateArrayItemTransformation = (\n sourceArrayExpression,\n itemTransformation,\n parentPath = null,\n) => {\n const withOptionalParentPath = (path) => (err) => ({\n ...err,\n // @ts-expect-error\n parentPath: [parentPath, path, validationError.parentPath]\n .filter((s) => s)\n .join('.'),\n });\n\n const validationErrors: any[] = [];\n\n if (isInvalidJsonPath(sourceArrayExpression)) {\n const fullPath = parentPath\n ? [parentPath, ARRAY_ITEMS_PATH_PROPERTY_NAME]\n : [ARRAY_ITEMS_PATH_PROPERTY_NAME];\n\n validationErrors.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n sourceArrayExpression,\n fullPath.join('.'),\n ),\n );\n }\n\n validationErrors.push(\n // eslint-disable-next-line no-use-before-define\n ...validateResponseTransformation(\n sourceArrayExpression,\n ).validationErrors.map(\n withOptionalParentPath(ARRAY_ITEMS_PATH_PROPERTY_NAME),\n ),\n // eslint-disable-next-line no-use-before-define\n ...validateResponseTransformation(itemTransformation).validationErrors.map(\n withOptionalParentPath(ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME),\n ),\n );\n\n return validationErrors;\n};\n\nconst validateSimpleTransformationExpression = (\n simpleTransformationExpression,\n path = null,\n) => {\n const transformationSegments = simpleTransformationExpression.split('.');\n const [firstExpressionSegment] = transformationSegments;\n const validationErrors: any[] = [];\n\n if (!isRootObjectIdentifier(firstExpressionSegment)) {\n validationErrors.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n if (some(transformationSegments, isSpreadOperator)) {\n validationErrors.push(\n validationError(\n 'cannot refer to the * operator',\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n if (isInvalidJsonPath(simpleTransformationExpression)) {\n validationErrors.push(\n validationError(\n 'must be a valid json-path',\n simpleTransformationExpression,\n path,\n ),\n );\n }\n\n transformationSegments\n .filter(isReservedCorvidFieldName)\n .forEach((invalidName) =>\n validationErrors.push(\n validationError(\n `cannot refer to the ${invalidName} field`,\n simpleTransformationExpression,\n path,\n ),\n ),\n );\n\n return validationErrors;\n};\n\nconst validateCustomFunctionExpression = ({\n functionName,\n argumentExpressions,\n rawExpression,\n path = null,\n}) => {\n const validationErrors: any[] = [];\n\n if (functionName === null || argumentExpressions === null) {\n validationErrors.push(\n validationError(\n 'contains an invalid custom function expression',\n rawExpression,\n path,\n ),\n );\n\n return validationErrors;\n }\n\n // TODO: validate all arguments\n const [argumentExpression] = argumentExpressions;\n\n const [firstSegment] = argumentExpression.split('.');\n\n if (isInvalidJsonPath(argumentExpression)) {\n validationErrors.push(\n validationError('must be a valid json-path', argumentExpression, path),\n );\n }\n\n if (!isRootObjectIdentifier(firstSegment)) {\n validationErrors.push(\n validationError(INVALID_PATH_STRING_MESSAGE, argumentExpression, path),\n );\n }\n\n return validationErrors;\n};\n\nfunction validateResponseTransformation(transformation) {\n const errors = reduceTransformation(transformation, {\n visitors: {\n TopLevelSimpleTransformationExpression: (simpleTransformation) =>\n validateSimpleTransformationExpression(simpleTransformation),\n TopLevelCustomFunctionExpression: (\n functionName,\n argumentExpressions,\n rawExpression,\n ) =>\n validateCustomFunctionExpression({\n functionName,\n argumentExpressions,\n rawExpression,\n }),\n CustomFunctionExpression: (\n acc,\n path,\n functionName,\n argumentExpressions,\n rawExpression,\n ) => {\n acc.push(\n ...validateCustomFunctionExpression({\n functionName,\n argumentExpressions,\n rawExpression,\n path,\n }),\n );\n },\n NestedSimpleTransformationExpression: (\n acc,\n path,\n simpleTransformationExpression,\n ) => {\n const lastPathSegment = lastPathSegmentOf(path);\n const parentPath = parentPathOf(path);\n\n acc.push(\n ...validateSimpleTransformationExpression(\n simpleTransformationExpression,\n path,\n ),\n );\n\n if (isFunctionCallExpression(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot be a custom function call',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isReservedCorvidFieldName(lastPathSegment)) {\n acc.push(\n validationError(\n `cannot refer to the ${lastPathSegment} field`,\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (hasValidArgumentIndex(lastPathSegment)) {\n acc.push(\n validationError(\n INVALID_PATH_STRING_MESSAGE,\n lastPathSegment,\n parentPath,\n ),\n );\n }\n\n if (isRootObjectIdentifier(lastPathSegment)) {\n acc.push(\n validationError(\n 'cannot refer to $ in a transformation key',\n lastPathSegment,\n parentPath,\n ),\n );\n }\n },\n NestedUnsupportedTransformationExpression: (acc, path, value) => {\n acc.push(validationError(INVALID_PATH_STRING_MESSAGE, value, path));\n },\n TopLevelUnsupportedTransformationExpression: (\n unsupportedTransformation,\n ) => [\n validationError(INVALID_PATH_STRING_MESSAGE, unsupportedTransformation),\n ],\n TopLevelOmit: (source, fieldsToOmit) =>\n validateOmitTransformation({\n source,\n fieldsToOmit,\n validateSource: validateResponseTransformation,\n }),\n NestedOmit: (acc, path, source, fieldsToOmit) =>\n acc.push(\n ...validateOmitTransformation({\n source,\n fieldsToOmit,\n parentPath: path,\n validateSource: validateResponseTransformation,\n }),\n ),\n MapArrayItems: (acc, path, sourceArrayExpression, itemTransformation) => {\n acc.push(\n ...validateArrayItemTransformation(\n sourceArrayExpression,\n itemTransformation,\n path,\n ),\n );\n },\n TopLevelMapArrayItems: (sourceArrayExpression, itemTransformation) =>\n validateArrayItemTransformation(\n sourceArrayExpression,\n itemTransformation,\n ),\n },\n accumulator: [],\n });\n\n return {\n isValid: errors.length === 0,\n validationErrors: errors,\n };\n}\n\nexport { validateResponseTransformation };\n"],"mappings":"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"}