@wix/motion-edm-autogen-transformations-core 1.3.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.
- package/dist/cjs/__tests__/corvid-entity.spec.js +68 -0
- package/dist/cjs/__tests__/corvid-entity.spec.js.map +1 -0
- package/dist/cjs/__tests__/getArgumentCardinality.spec.js +58 -0
- package/dist/cjs/__tests__/getArgumentCardinality.spec.js.map +1 -0
- package/dist/cjs/__tests__/helpers.spec.js +90 -0
- package/dist/cjs/__tests__/helpers.spec.js.map +1 -0
- package/dist/cjs/__tests__/reduceTransformation.spec.js +478 -0
- package/dist/cjs/__tests__/reduceTransformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/custom-functions.spec.js +111 -0
- package/dist/cjs/__tests__/transformations/custom-functions.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js +47 -0
- package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js +75 -0
- package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js +46 -0
- package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js +28 -0
- package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js +66 -0
- package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js +90 -0
- package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js +291 -0
- package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js.map +1 -0
- package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js +370 -0
- package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js.map +1 -0
- package/dist/cjs/index.js +102 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/corvid-entity/index.js +32 -0
- package/dist/cjs/lib/corvid-entity/index.js.map +1 -0
- package/dist/cjs/lib/getArgumentCardinality.js +34 -0
- package/dist/cjs/lib/getArgumentCardinality.js.map +1 -0
- package/dist/cjs/lib/helpers.js +111 -0
- package/dist/cjs/lib/helpers.js.map +1 -0
- package/dist/cjs/lib/transformations/common.js +24 -0
- package/dist/cjs/lib/transformations/common.js.map +1 -0
- package/dist/cjs/lib/transformations/constants.js +23 -0
- package/dist/cjs/lib/transformations/constants.js.map +1 -0
- package/dist/cjs/lib/transformations/custom-functions.js +46 -0
- package/dist/cjs/lib/transformations/custom-functions.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/create.js +17 -0
- package/dist/cjs/lib/transformations/preset/create.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/delete.js +42 -0
- package/dist/cjs/lib/transformations/preset/delete.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/get.js +17 -0
- package/dist/cjs/lib/transformations/preset/get.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/list.js +13 -0
- package/dist/cjs/lib/transformations/preset/list.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/query.js +40 -0
- package/dist/cjs/lib/transformations/preset/query.js.map +1 -0
- package/dist/cjs/lib/transformations/preset/update.js +37 -0
- package/dist/cjs/lib/transformations/preset/update.js.map +1 -0
- package/dist/cjs/lib/transformations/reduceTransformation.js +180 -0
- package/dist/cjs/lib/transformations/reduceTransformation.js.map +1 -0
- package/dist/cjs/lib/transformations/validations/common.js +50 -0
- package/dist/cjs/lib/transformations/validations/common.js.map +1 -0
- package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js +118 -0
- package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js.map +1 -0
- package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js +161 -0
- package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js.map +1 -0
- package/dist/esm/__tests__/corvid-entity.spec.js +58 -0
- package/dist/esm/__tests__/corvid-entity.spec.js.map +1 -0
- package/dist/esm/__tests__/getArgumentCardinality.spec.js +42 -0
- package/dist/esm/__tests__/getArgumentCardinality.spec.js.map +1 -0
- package/dist/esm/__tests__/helpers.spec.js +61 -0
- package/dist/esm/__tests__/helpers.spec.js.map +1 -0
- package/dist/esm/__tests__/reduceTransformation.spec.js +416 -0
- package/dist/esm/__tests__/reduceTransformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/custom-functions.spec.js +87 -0
- package/dist/esm/__tests__/transformations/custom-functions.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/create-transformation.spec.js +40 -0
- package/dist/esm/__tests__/transformations/preset/create-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/delete-transformation.spec.js +65 -0
- package/dist/esm/__tests__/transformations/preset/delete-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/get-transformation.spec.js +39 -0
- package/dist/esm/__tests__/transformations/preset/get-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/list-transformation.spec.js +22 -0
- package/dist/esm/__tests__/transformations/preset/list-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/query-transformation.spec.js +57 -0
- package/dist/esm/__tests__/transformations/preset/query-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/transformations/preset/update-transformation.spec.js +85 -0
- package/dist/esm/__tests__/transformations/preset/update-transformation.spec.js.map +1 -0
- package/dist/esm/__tests__/validations/validateRequestTransformation.spec.js +200 -0
- package/dist/esm/__tests__/validations/validateRequestTransformation.spec.js.map +1 -0
- package/dist/esm/__tests__/validations/validateResponseTransformation.spec.js +246 -0
- package/dist/esm/__tests__/validations/validateResponseTransformation.spec.js.map +1 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/corvid-entity/index.js +17 -0
- package/dist/esm/lib/corvid-entity/index.js.map +1 -0
- package/dist/esm/lib/getArgumentCardinality.js +30 -0
- package/dist/esm/lib/getArgumentCardinality.js.map +1 -0
- package/dist/esm/lib/helpers.js +56 -0
- package/dist/esm/lib/helpers.js.map +1 -0
- package/dist/esm/lib/transformations/common.js +17 -0
- package/dist/esm/lib/transformations/common.js.map +1 -0
- package/dist/esm/lib/transformations/constants.js +18 -0
- package/dist/esm/lib/transformations/constants.js.map +1 -0
- package/dist/esm/lib/transformations/custom-functions.js +34 -0
- package/dist/esm/lib/transformations/custom-functions.js.map +1 -0
- package/dist/esm/lib/transformations/preset/create.js +8 -0
- package/dist/esm/lib/transformations/preset/create.js.map +1 -0
- package/dist/esm/lib/transformations/preset/delete.js +25 -0
- package/dist/esm/lib/transformations/preset/delete.js.map +1 -0
- package/dist/esm/lib/transformations/preset/get.js +8 -0
- package/dist/esm/lib/transformations/preset/get.js.map +1 -0
- package/dist/esm/lib/transformations/preset/list.js +6 -0
- package/dist/esm/lib/transformations/preset/list.js.map +1 -0
- package/dist/esm/lib/transformations/preset/query.js +28 -0
- package/dist/esm/lib/transformations/preset/query.js.map +1 -0
- package/dist/esm/lib/transformations/preset/update.js +18 -0
- package/dist/esm/lib/transformations/preset/update.js.map +1 -0
- package/dist/esm/lib/transformations/reduceTransformation.js +122 -0
- package/dist/esm/lib/transformations/reduceTransformation.js.map +1 -0
- package/dist/esm/lib/transformations/validations/common.js +35 -0
- package/dist/esm/lib/transformations/validations/common.js.map +1 -0
- package/dist/esm/lib/transformations/validations/validateRequestTransformation.js +107 -0
- package/dist/esm/lib/transformations/validations/validateRequestTransformation.js.map +1 -0
- package/dist/esm/lib/transformations/validations/validateResponseTransformation.js +142 -0
- package/dist/esm/lib/transformations/validations/validateResponseTransformation.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/__tests__/corvid-entity.spec.d.ts +2 -0
- package/dist/types/__tests__/corvid-entity.spec.d.ts.map +1 -0
- package/dist/types/__tests__/getArgumentCardinality.spec.d.ts +2 -0
- package/dist/types/__tests__/getArgumentCardinality.spec.d.ts.map +1 -0
- package/dist/types/__tests__/helpers.spec.d.ts +2 -0
- package/dist/types/__tests__/helpers.spec.d.ts.map +1 -0
- package/dist/types/__tests__/reduceTransformation.spec.d.ts +2 -0
- package/dist/types/__tests__/reduceTransformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/custom-functions.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/custom-functions.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/create-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/create-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/delete-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/delete-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/get-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/get-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/list-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/list-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/query-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/query-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/transformations/preset/update-transformation.spec.d.ts +2 -0
- package/dist/types/__tests__/transformations/preset/update-transformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/validations/validateRequestTransformation.spec.d.ts +2 -0
- package/dist/types/__tests__/validations/validateRequestTransformation.spec.d.ts.map +1 -0
- package/dist/types/__tests__/validations/validateResponseTransformation.spec.d.ts +2 -0
- package/dist/types/__tests__/validations/validateResponseTransformation.spec.d.ts.map +1 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/corvid-entity/index.d.ts +13 -0
- package/dist/types/lib/corvid-entity/index.d.ts.map +1 -0
- package/dist/types/lib/getArgumentCardinality.d.ts +3 -0
- package/dist/types/lib/getArgumentCardinality.d.ts.map +1 -0
- package/dist/types/lib/helpers.d.ts +28 -0
- package/dist/types/lib/helpers.d.ts.map +1 -0
- package/dist/types/lib/transformations/common.d.ts +15 -0
- package/dist/types/lib/transformations/common.d.ts.map +1 -0
- package/dist/types/lib/transformations/constants.d.ts +18 -0
- package/dist/types/lib/transformations/constants.d.ts.map +1 -0
- package/dist/types/lib/transformations/custom-functions.d.ts +13 -0
- package/dist/types/lib/transformations/custom-functions.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/create.d.ts +6 -0
- package/dist/types/lib/transformations/preset/create.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/delete.d.ts +7 -0
- package/dist/types/lib/transformations/preset/delete.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/get.d.ts +6 -0
- package/dist/types/lib/transformations/preset/get.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/list.d.ts +4 -0
- package/dist/types/lib/transformations/preset/list.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/query.d.ts +20 -0
- package/dist/types/lib/transformations/preset/query.d.ts.map +1 -0
- package/dist/types/lib/transformations/preset/update.d.ts +8 -0
- package/dist/types/lib/transformations/preset/update.d.ts.map +1 -0
- package/dist/types/lib/transformations/reduceTransformation.d.ts +6 -0
- package/dist/types/lib/transformations/reduceTransformation.d.ts.map +1 -0
- package/dist/types/lib/transformations/validations/common.d.ts +13 -0
- package/dist/types/lib/transformations/validations/common.d.ts.map +1 -0
- package/dist/types/lib/transformations/validations/validateRequestTransformation.d.ts +6 -0
- package/dist/types/lib/transformations/validations/validateRequestTransformation.d.ts.map +1 -0
- package/dist/types/lib/transformations/validations/validateResponseTransformation.d.ts +6 -0
- package/dist/types/lib/transformations/validations/validateResponseTransformation.d.ts.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/transformations/reduceTransformation.ts"],"names":["ARRAY_ITEMS_PATH_PROPERTY_NAME","transformations","ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME","OMIT_SOURCE_PROPERTY_NAME","FIELDS_TO_OMIT_PROPERTY_NAME","CONSTANT_VALUE_PROPERTY_NAME","TOP_LEVEL_SIMPLE_TRANSFORMATION","visitorTypes","TOP_LEVEL_CUSTOM_FUNCTION","TOP_LEVEL_SPREAD","NESTED_SPREAD","NESTED_UNSUPPORTED_TRANSFORMATION","TOP_LEVEL_UNSUPPORTED_TRANSFORMATION","CUSTOM_FUNCTION","NESTED_SIMPLE_TRANSFORMATION","MAP_ARRAY_ITEMS","TOP_LEVEL_MAP_ARRAY_ITEMS","TOP_LEVEL_OMIT_TRANSFORMATION","NESTED_OMIT_TRANSFORMATION","NESTED_CONSTANT_VALUE","safeResolveDefaultExport","module","isEsModule","__esModule","default","deepForEach","deepForEachModule","withoutSpreadOperatorKeys","obj","Object","keys","filter","k","safeInvokeVisitor","visitors","name","args","visitor","reduceComplexTransformation","transformation","accumulator","terminalPaths","addTerminals","path","leaves","length","forEach","leaf","push","join","value","key","_","tp","startsWith","spreadOperatorParentPath","replace","values","item","siblingKeys","sourceExpression","fieldsToOmit","sourceArrayExpression","itemTransformation","functionName","argumentExpressions","reduceTransformation"],"mappings":"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","sourcesContent":["import deepForEachModule from 'deep-for-each';\nimport { get, isString, isArray, some } from 'lodash';\nimport {\n isSpreadOperator,\n isSimpleTransformation,\n isMapArrayItemsTransformation,\n parseMapArrayItemsTransformation,\n isOmitTransformation,\n parseOmitTransformation,\n isJsonPathExpression,\n isConstantExpression,\n} from '../helpers';\nimport { transformations } from './common';\nimport { visitorTypes } from './constants';\nimport {\n parseCustomFunctionCall,\n isFunctionCallExpression,\n} from './custom-functions';\n\nconst {\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n OMIT_SOURCE_PROPERTY_NAME,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n CONSTANT_VALUE_PROPERTY_NAME,\n} = transformations;\n\nconst {\n TOP_LEVEL_SIMPLE_TRANSFORMATION,\n TOP_LEVEL_CUSTOM_FUNCTION,\n TOP_LEVEL_SPREAD,\n NESTED_SPREAD,\n NESTED_UNSUPPORTED_TRANSFORMATION,\n TOP_LEVEL_UNSUPPORTED_TRANSFORMATION,\n CUSTOM_FUNCTION,\n NESTED_SIMPLE_TRANSFORMATION,\n MAP_ARRAY_ITEMS,\n TOP_LEVEL_MAP_ARRAY_ITEMS,\n TOP_LEVEL_OMIT_TRANSFORMATION,\n NESTED_OMIT_TRANSFORMATION,\n NESTED_CONSTANT_VALUE,\n} = visitorTypes;\n\nconst safeResolveDefaultExport = (module) => {\n const isEsModule = module && module.__esModule && module.default;\n\n return isEsModule ? module.default : module;\n};\n\nconst deepForEach = safeResolveDefaultExport(deepForEachModule);\n\nconst withoutSpreadOperatorKeys = (obj) =>\n Object.keys(obj).filter((k) => !isSpreadOperator(k));\n\nconst safeInvokeVisitor = (visitors, name, ...args) => {\n const visitor = get(visitors, name);\n\n return visitor && visitor(...args);\n};\n\nconst reduceComplexTransformation = (\n transformation,\n { visitors, accumulator },\n) => {\n const terminalPaths: any[] = [];\n const addTerminals = (path, leaves: any[] = []) =>\n leaves.length > 0\n ? leaves.forEach((leaf) => terminalPaths.push([path, leaf].join('.')))\n : terminalPaths.push(path);\n\n deepForEach(transformation, (value, key, _, path) => {\n if (some(terminalPaths, (tp) => path.startsWith(tp))) {\n return;\n }\n\n if (isSpreadOperator(key)) {\n addTerminals(path);\n\n const spreadOperatorParentPath = path.replace(/\\.?\\*/, '');\n\n const values = !isArray(value) ? [value] : value;\n\n values.forEach((item) => {\n if (spreadOperatorParentPath === '') {\n const siblingKeys = withoutSpreadOperatorKeys(transformation);\n safeInvokeVisitor(\n visitors,\n TOP_LEVEL_SPREAD,\n accumulator,\n item,\n siblingKeys,\n );\n } else {\n const siblingKeys = withoutSpreadOperatorKeys(\n get(transformation, spreadOperatorParentPath),\n );\n safeInvokeVisitor(\n visitors,\n NESTED_SPREAD,\n accumulator,\n spreadOperatorParentPath,\n item,\n siblingKeys,\n );\n }\n });\n\n return;\n }\n\n if (isOmitTransformation(value)) {\n addTerminals(path, [\n OMIT_SOURCE_PROPERTY_NAME,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n ]);\n const { sourceExpression, fieldsToOmit } = parseOmitTransformation(value);\n\n safeInvokeVisitor(\n visitors,\n NESTED_OMIT_TRANSFORMATION,\n accumulator,\n path,\n sourceExpression,\n fieldsToOmit,\n );\n\n return;\n }\n\n if (isMapArrayItemsTransformation(value)) {\n addTerminals(path, [\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n ]);\n\n const { sourceArrayExpression, itemTransformation } =\n parseMapArrayItemsTransformation(value);\n\n safeInvokeVisitor(\n visitors,\n MAP_ARRAY_ITEMS,\n accumulator,\n path,\n sourceArrayExpression,\n itemTransformation,\n );\n\n return;\n }\n\n if (isFunctionCallExpression(value)) {\n const { functionName, argumentExpressions } =\n parseCustomFunctionCall(value);\n\n safeInvokeVisitor(\n visitors,\n CUSTOM_FUNCTION,\n accumulator,\n path,\n functionName,\n argumentExpressions,\n value,\n );\n\n return;\n }\n\n if (isConstantExpression(value)) {\n addTerminals(path, [CONSTANT_VALUE_PROPERTY_NAME]);\n\n safeInvokeVisitor(visitors, NESTED_CONSTANT_VALUE, {\n accumulator,\n path,\n value: value[CONSTANT_VALUE_PROPERTY_NAME],\n });\n\n return;\n }\n\n if (isString(value)) {\n if (isJsonPathExpression(value)) {\n safeInvokeVisitor(\n visitors,\n NESTED_SIMPLE_TRANSFORMATION,\n accumulator,\n path,\n value,\n );\n } else {\n safeInvokeVisitor(\n visitors,\n NESTED_UNSUPPORTED_TRANSFORMATION,\n accumulator,\n path,\n value,\n );\n }\n }\n });\n\n return accumulator;\n};\n\nconst reduceTransformation = (\n transformation,\n { visitors, accumulator }: { visitors: any; accumulator?: any },\n) => {\n if (isSimpleTransformation(transformation)) {\n switch (true) {\n case isJsonPathExpression(transformation):\n return safeInvokeVisitor(\n visitors,\n TOP_LEVEL_SIMPLE_TRANSFORMATION,\n transformation,\n );\n\n case isFunctionCallExpression(transformation): {\n const { functionName, argumentExpressions } =\n parseCustomFunctionCall(transformation);\n\n return safeInvokeVisitor(\n visitors,\n TOP_LEVEL_CUSTOM_FUNCTION,\n functionName,\n argumentExpressions,\n transformation,\n );\n }\n\n default:\n return safeInvokeVisitor(\n visitors,\n TOP_LEVEL_UNSUPPORTED_TRANSFORMATION,\n transformation,\n );\n }\n }\n\n if (isOmitTransformation(transformation)) {\n const { sourceExpression, fieldsToOmit } =\n parseOmitTransformation(transformation);\n\n return safeInvokeVisitor(\n visitors,\n TOP_LEVEL_OMIT_TRANSFORMATION,\n sourceExpression,\n fieldsToOmit,\n );\n }\n\n if (isMapArrayItemsTransformation(transformation)) {\n const { sourceArrayExpression, itemTransformation } =\n parseMapArrayItemsTransformation(transformation);\n\n return safeInvokeVisitor(\n visitors,\n TOP_LEVEL_MAP_ARRAY_ITEMS,\n sourceArrayExpression,\n itemTransformation,\n );\n }\n\n return reduceComplexTransformation(transformation, { visitors, accumulator });\n};\n\nexport { reduceTransformation };\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.validationError = exports.validateOmitTransformation = void 0;
|
|
5
|
+
|
|
6
|
+
var _motionEdmAutogenCommon = require("@wix/motion-edm-autogen-common");
|
|
7
|
+
|
|
8
|
+
var _lodash = require("lodash");
|
|
9
|
+
|
|
10
|
+
var _common = require("../common");
|
|
11
|
+
|
|
12
|
+
const OMIT_SOURCE_PROPERTY_NAME = _common.transformations.OMIT_SOURCE_PROPERTY_NAME,
|
|
13
|
+
FIELDS_TO_OMIT_PROPERTY_NAME = _common.transformations.FIELDS_TO_OMIT_PROPERTY_NAME;
|
|
14
|
+
|
|
15
|
+
const validationError = (description, value, parentPath = null) => ({
|
|
16
|
+
invalidValue: value,
|
|
17
|
+
description,
|
|
18
|
+
parentPath
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
exports.validationError = validationError;
|
|
22
|
+
|
|
23
|
+
const validateOmitTransformation = ({
|
|
24
|
+
source,
|
|
25
|
+
fieldsToOmit,
|
|
26
|
+
validateSource,
|
|
27
|
+
parentPath = null
|
|
28
|
+
}) => {
|
|
29
|
+
const validationErrors = [];
|
|
30
|
+
const currentPath = parentPath ? [parentPath] : [];
|
|
31
|
+
const omitSourcePropertyPath = [...currentPath, OMIT_SOURCE_PROPERTY_NAME].join('.');
|
|
32
|
+
validationErrors.push(...validateSource(source).validationErrors.map(sourceValidationError => ({ ...sourceValidationError,
|
|
33
|
+
parentPath: omitSourcePropertyPath
|
|
34
|
+
})));
|
|
35
|
+
const fieldsToOmitPropertyPath = [...currentPath, FIELDS_TO_OMIT_PROPERTY_NAME].join('.');
|
|
36
|
+
|
|
37
|
+
if (!(0, _lodash.isArray)(fieldsToOmit) || !(0, _lodash.every)(fieldsToOmit, _lodash.isString)) {
|
|
38
|
+
validationErrors.push(validationError('must be an array of strings', fieldsToOmit, fieldsToOmitPropertyPath));
|
|
39
|
+
return validationErrors;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if ((0, _lodash.some)(fieldsToOmit, omitPathSegment => (0, _motionEdmAutogenCommon.segmentCount)(omitPathSegment) > 1)) {
|
|
43
|
+
validationErrors.push(validationError('must contain non-nested paths only', fieldsToOmit, fieldsToOmitPropertyPath));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return validationErrors;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.validateOmitTransformation = validateOmitTransformation;
|
|
50
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/transformations/validations/common.ts"],"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","isString","omitPathSegment"],"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;AACvEC,EAAAA,YAAY,EAAEF,KADyD;AAEvED,EAAAA,WAFuE;AAGvEE,EAAAA;AAHuE,CAAjD,CAAxB;;;;AAMA,MAAME,0BAA0B,GAAG,CAAC;AAClCC,EAAAA,MADkC;AAElCC,EAAAA,YAFkC;AAGlCC,EAAAA,cAHkC;AAIlCL,EAAAA,UAAU,GAAG;AAJqB,CAAD,KAK7B;AACJ,QAAMM,gBAAuB,GAAG,EAAhC;AACA,QAAMC,WAAW,GAAGP,UAAU,GAAG,CAACA,UAAD,CAAH,GAAkB,EAAhD;AACA,QAAMQ,sBAAsB,GAAG,CAC7B,GAAGD,WAD0B,EAE7Bb,yBAF6B,EAG7Be,IAH6B,CAGxB,GAHwB,CAA/B;AAKAH,EAAAA,gBAAgB,CAACI,IAAjB,CACE,GAAGL,cAAc,CAACF,MAAD,CAAd,CAAuBG,gBAAvB,CAAwCK,GAAxC,CAA6CC,qBAAD,KAA4B,EACzE,GAAGA,qBADsE;AAEzEZ,IAAAA,UAAU,EAAEQ;AAF6D,GAA5B,CAA5C,CADL;AAOA,QAAMK,wBAAwB,GAAG,CAC/B,GAAGN,WAD4B,EAE/BX,4BAF+B,EAG/Ba,IAH+B,CAG1B,GAH0B,CAAjC;;AAKA,MAAI,CAAC,qBAAQL,YAAR,CAAD,IAA0B,CAAC,mBAAMA,YAAN,EAAoBU,gBAApB,CAA/B,EAA8D;AAC5DR,IAAAA,gBAAgB,CAACI,IAAjB,CACEb,eAAe,CACb,6BADa,EAEbO,YAFa,EAGbS,wBAHa,CADjB;AAQA,WAAOP,gBAAP;AACD;;AAED,MACE,kBAAKF,YAAL,EAAoBW,eAAD,IAAqB,0CAAaA,eAAb,IAAgC,CAAxE,CADF,EAEE;AACAT,IAAAA,gBAAgB,CAACI,IAAjB,CACEb,eAAe,CACb,oCADa,EAEbO,YAFa,EAGbS,wBAHa,CADjB;AAOD;;AAED,SAAOP,gBAAP;AACD,CAlDD","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"]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.validateRequestTransformation = validateRequestTransformation;
|
|
5
|
+
|
|
6
|
+
var _motionEdmAutogenCommon = require("@wix/motion-edm-autogen-common");
|
|
7
|
+
|
|
8
|
+
var _lodash = require("lodash");
|
|
9
|
+
|
|
10
|
+
var _corvidEntity = require("../../corvid-entity");
|
|
11
|
+
|
|
12
|
+
var _helpers = require("../../helpers");
|
|
13
|
+
|
|
14
|
+
var _customFunctions = require("../custom-functions");
|
|
15
|
+
|
|
16
|
+
var _reduceTransformation = require("../reduceTransformation");
|
|
17
|
+
|
|
18
|
+
var _common = require("./common");
|
|
19
|
+
|
|
20
|
+
const validateSimpleTransformation = (simpleTransformation, path = null) => {
|
|
21
|
+
const validationErrors = [];
|
|
22
|
+
const transformationSegments = simpleTransformation.split('.');
|
|
23
|
+
const firstSegment = transformationSegments[0];
|
|
24
|
+
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
|
+
if ((0, _lodash.some)(transformationSegments, _helpers.isSpreadOperator)) {
|
|
27
|
+
validationErrors.push((0, _common.validationError)('cannot refer to the * operator', simpleTransformation, path));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!(0, _helpers.hasValidArgumentIndex)(firstSegment)) {
|
|
31
|
+
validationErrors.push((0, _common.validationError)('must start with $[N] where N is an index', simpleTransformation, path));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if ((0, _lodash.filter)(transformationSegments, _helpers.hasValidArgumentIndex).length > 1) {
|
|
35
|
+
validationErrors.push((0, _common.validationError)('must have a single argument-index as the first path segment', simpleTransformation, path));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return validationErrors;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
function validateRequestTransformation(transformation) {
|
|
42
|
+
const errors = (0, _reduceTransformation.reduceTransformation)(transformation, {
|
|
43
|
+
visitors: {
|
|
44
|
+
TopLevelSimpleTransformationExpression: simpleTransformation => validateSimpleTransformation(simpleTransformation),
|
|
45
|
+
CustomFunctionExpression: (acc, path, functionName, argumentExpressions, rawExpression) => {
|
|
46
|
+
if (functionName === null || argumentExpressions === null) {
|
|
47
|
+
acc.push((0, _common.validationError)('contains an invalid custom function expression', rawExpression, path));
|
|
48
|
+
} else {
|
|
49
|
+
const argumentExpression = argumentExpressions[0];
|
|
50
|
+
|
|
51
|
+
if (functionName === 'constant') {
|
|
52
|
+
if ((0, _helpers.isInvalidJsonValue)(argumentExpression)) {
|
|
53
|
+
acc.push((0, _common.validationError)('must be a valid json value', argumentExpression, path));
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
// TODO: validate all arguments
|
|
57
|
+
const _argumentExpression$s = argumentExpression.split('.'),
|
|
58
|
+
firstSegment = _argumentExpression$s[0],
|
|
59
|
+
nestedPathSegments = _argumentExpression$s.slice(1);
|
|
60
|
+
|
|
61
|
+
if ((0, _helpers.isInvalidJsonPath)(argumentExpression)) {
|
|
62
|
+
acc.push((0, _common.validationError)('must be a valid json-path', argumentExpression, path));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (!(0, _helpers.hasValidArgumentIndex)(firstSegment)) {
|
|
66
|
+
acc.push((0, _common.validationError)('must start with $[N] where N is an index', argumentExpression, path));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
nestedPathSegments.forEach(nestedPathSegment => {
|
|
70
|
+
if ((0, _helpers.hasValidArgumentIndex)(nestedPathSegment)) {
|
|
71
|
+
acc.push((0, _common.validationError)('must have a single argument-index as the first path segment', argumentExpression, path));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
NestedSimpleTransformationExpression: (acc, path, simpleTransformationExpression) => {
|
|
78
|
+
const lastPathSegment = (0, _motionEdmAutogenCommon.lastPathSegmentOf)(path);
|
|
79
|
+
const parentPath = (0, _motionEdmAutogenCommon.parentPathOf)(path);
|
|
80
|
+
|
|
81
|
+
if ((0, _customFunctions.isFunctionCallExpression)(lastPathSegment)) {
|
|
82
|
+
acc.push((0, _common.validationError)('cannot be a custom function call', lastPathSegment, parentPath));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if ((0, _helpers.hasValidArgumentIndex)(lastPathSegment)) {
|
|
86
|
+
acc.push((0, _common.validationError)("must start with '$.'", lastPathSegment, parentPath));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if ((0, _helpers.isSpreadOperator)(lastPathSegment)) {
|
|
90
|
+
acc.push((0, _common.validationError)('cannot refer to the * operator', lastPathSegment, parentPath));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
acc.push(...validateSimpleTransformation(simpleTransformationExpression, path));
|
|
94
|
+
},
|
|
95
|
+
NestedUnsupportedTransformationExpression: (acc, path, value) => {
|
|
96
|
+
acc.push((0, _common.validationError)('must start with $[N] where N is an index', value, path));
|
|
97
|
+
},
|
|
98
|
+
TopLevelUnsupportedTransformationExpression: unsupportedTransformation => [(0, _common.validationError)('must start with $[N] where N is an index', unsupportedTransformation)],
|
|
99
|
+
TopLevelOmit: (source, fieldsToOmit) => (0, _common.validateOmitTransformation)({
|
|
100
|
+
source,
|
|
101
|
+
fieldsToOmit,
|
|
102
|
+
validateSource: validateRequestTransformation
|
|
103
|
+
}),
|
|
104
|
+
NestedOmit: (acc, path, source, fieldsToOmit) => acc.push(...(0, _common.validateOmitTransformation)({
|
|
105
|
+
source,
|
|
106
|
+
fieldsToOmit,
|
|
107
|
+
parentPath: path,
|
|
108
|
+
validateSource: validateRequestTransformation
|
|
109
|
+
}))
|
|
110
|
+
},
|
|
111
|
+
accumulator: []
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
isValid: errors.length === 0,
|
|
115
|
+
validationErrors: errors
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=validateRequestTransformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/transformations/validations/validateRequestTransformation.ts"],"names":["validateSimpleTransformation","simpleTransformation","path","validationErrors","transformationSegments","split","firstSegment","filter","isReservedCommonFieldName","forEach","invalidName","push","isSpreadOperator","hasValidArgumentIndex","length","validateRequestTransformation","transformation","errors","visitors","TopLevelSimpleTransformationExpression","CustomFunctionExpression","acc","functionName","argumentExpressions","rawExpression","argumentExpression","nestedPathSegments","nestedPathSegment","NestedSimpleTransformationExpression","simpleTransformationExpression","lastPathSegment","parentPath","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateSource","NestedOmit","accumulator","isValid"],"mappings":"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","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"]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.validateResponseTransformation = validateResponseTransformation;
|
|
5
|
+
|
|
6
|
+
var _motionEdmAutogenCommon = require("@wix/motion-edm-autogen-common");
|
|
7
|
+
|
|
8
|
+
var _lodash = require("lodash");
|
|
9
|
+
|
|
10
|
+
var _corvidEntity = require("../../corvid-entity");
|
|
11
|
+
|
|
12
|
+
var _helpers = require("../../helpers");
|
|
13
|
+
|
|
14
|
+
var _common = require("../common");
|
|
15
|
+
|
|
16
|
+
var _customFunctions = require("../custom-functions");
|
|
17
|
+
|
|
18
|
+
var _reduceTransformation = require("../reduceTransformation");
|
|
19
|
+
|
|
20
|
+
var _common2 = require("./common");
|
|
21
|
+
|
|
22
|
+
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;
|
|
24
|
+
const INVALID_PATH_STRING_MESSAGE = "must be a string starting with '$.'";
|
|
25
|
+
|
|
26
|
+
const validateArrayItemTransformation = (sourceArrayExpression, itemTransformation, parentPath = null) => {
|
|
27
|
+
const withOptionalParentPath = path => err => ({ ...err,
|
|
28
|
+
// @ts-expect-error
|
|
29
|
+
parentPath: [parentPath, path, _common2.validationError.parentPath].filter(s => s).join('.')
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const validationErrors = [];
|
|
33
|
+
|
|
34
|
+
if ((0, _helpers.isInvalidJsonPath)(sourceArrayExpression)) {
|
|
35
|
+
const fullPath = parentPath ? [parentPath, ARRAY_ITEMS_PATH_PROPERTY_NAME] : [ARRAY_ITEMS_PATH_PROPERTY_NAME];
|
|
36
|
+
validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, sourceArrayExpression, fullPath.join('.')));
|
|
37
|
+
}
|
|
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
|
|
41
|
+
...validateResponseTransformation(itemTransformation).validationErrors.map(withOptionalParentPath(ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME)));
|
|
42
|
+
return validationErrors;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const validateSimpleTransformationExpression = (simpleTransformationExpression, path = null) => {
|
|
46
|
+
const transformationSegments = simpleTransformationExpression.split('.');
|
|
47
|
+
const firstExpressionSegment = transformationSegments[0];
|
|
48
|
+
const validationErrors = [];
|
|
49
|
+
|
|
50
|
+
if (!(0, _helpers.isRootObjectIdentifier)(firstExpressionSegment)) {
|
|
51
|
+
validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, simpleTransformationExpression, path));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if ((0, _lodash.some)(transformationSegments, _helpers.isSpreadOperator)) {
|
|
55
|
+
validationErrors.push((0, _common2.validationError)('cannot refer to the * operator', simpleTransformationExpression, path));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if ((0, _helpers.isInvalidJsonPath)(simpleTransformationExpression)) {
|
|
59
|
+
validationErrors.push((0, _common2.validationError)('must be a valid json-path', simpleTransformationExpression, path));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
transformationSegments.filter(_corvidEntity.isReservedCorvidFieldName).forEach(invalidName => validationErrors.push((0, _common2.validationError)(`cannot refer to the ${invalidName} field`, simpleTransformationExpression, path)));
|
|
63
|
+
return validationErrors;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const validateCustomFunctionExpression = ({
|
|
67
|
+
functionName,
|
|
68
|
+
argumentExpressions,
|
|
69
|
+
rawExpression,
|
|
70
|
+
path = null
|
|
71
|
+
}) => {
|
|
72
|
+
const validationErrors = [];
|
|
73
|
+
|
|
74
|
+
if (functionName === null || argumentExpressions === null) {
|
|
75
|
+
validationErrors.push((0, _common2.validationError)('contains an invalid custom function expression', rawExpression, path));
|
|
76
|
+
return validationErrors;
|
|
77
|
+
} // TODO: validate all arguments
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
const argumentExpression = argumentExpressions[0];
|
|
81
|
+
|
|
82
|
+
const _argumentExpression$s = argumentExpression.split('.'),
|
|
83
|
+
firstSegment = _argumentExpression$s[0];
|
|
84
|
+
|
|
85
|
+
if ((0, _helpers.isInvalidJsonPath)(argumentExpression)) {
|
|
86
|
+
validationErrors.push((0, _common2.validationError)('must be a valid json-path', argumentExpression, path));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!(0, _helpers.isRootObjectIdentifier)(firstSegment)) {
|
|
90
|
+
validationErrors.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, argumentExpression, path));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return validationErrors;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
function validateResponseTransformation(transformation) {
|
|
97
|
+
const errors = (0, _reduceTransformation.reduceTransformation)(transformation, {
|
|
98
|
+
visitors: {
|
|
99
|
+
TopLevelSimpleTransformationExpression: simpleTransformation => validateSimpleTransformationExpression(simpleTransformation),
|
|
100
|
+
TopLevelCustomFunctionExpression: (functionName, argumentExpressions, rawExpression) => validateCustomFunctionExpression({
|
|
101
|
+
functionName,
|
|
102
|
+
argumentExpressions,
|
|
103
|
+
rawExpression
|
|
104
|
+
}),
|
|
105
|
+
CustomFunctionExpression: (acc, path, functionName, argumentExpressions, rawExpression) => {
|
|
106
|
+
acc.push(...validateCustomFunctionExpression({
|
|
107
|
+
functionName,
|
|
108
|
+
argumentExpressions,
|
|
109
|
+
rawExpression,
|
|
110
|
+
path
|
|
111
|
+
}));
|
|
112
|
+
},
|
|
113
|
+
NestedSimpleTransformationExpression: (acc, path, simpleTransformationExpression) => {
|
|
114
|
+
const lastPathSegment = (0, _motionEdmAutogenCommon.lastPathSegmentOf)(path);
|
|
115
|
+
const parentPath = (0, _motionEdmAutogenCommon.parentPathOf)(path);
|
|
116
|
+
acc.push(...validateSimpleTransformationExpression(simpleTransformationExpression, path));
|
|
117
|
+
|
|
118
|
+
if ((0, _customFunctions.isFunctionCallExpression)(lastPathSegment)) {
|
|
119
|
+
acc.push((0, _common2.validationError)('cannot be a custom function call', lastPathSegment, parentPath));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if ((0, _corvidEntity.isReservedCorvidFieldName)(lastPathSegment)) {
|
|
123
|
+
acc.push((0, _common2.validationError)(`cannot refer to the ${lastPathSegment} field`, lastPathSegment, parentPath));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if ((0, _helpers.hasValidArgumentIndex)(lastPathSegment)) {
|
|
127
|
+
acc.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, lastPathSegment, parentPath));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if ((0, _helpers.isRootObjectIdentifier)(lastPathSegment)) {
|
|
131
|
+
acc.push((0, _common2.validationError)('cannot refer to $ in a transformation key', lastPathSegment, parentPath));
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
NestedUnsupportedTransformationExpression: (acc, path, value) => {
|
|
135
|
+
acc.push((0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, value, path));
|
|
136
|
+
},
|
|
137
|
+
TopLevelUnsupportedTransformationExpression: unsupportedTransformation => [(0, _common2.validationError)(INVALID_PATH_STRING_MESSAGE, unsupportedTransformation)],
|
|
138
|
+
TopLevelOmit: (source, fieldsToOmit) => (0, _common2.validateOmitTransformation)({
|
|
139
|
+
source,
|
|
140
|
+
fieldsToOmit,
|
|
141
|
+
validateSource: validateResponseTransformation
|
|
142
|
+
}),
|
|
143
|
+
NestedOmit: (acc, path, source, fieldsToOmit) => acc.push(...(0, _common2.validateOmitTransformation)({
|
|
144
|
+
source,
|
|
145
|
+
fieldsToOmit,
|
|
146
|
+
parentPath: path,
|
|
147
|
+
validateSource: validateResponseTransformation
|
|
148
|
+
})),
|
|
149
|
+
MapArrayItems: (acc, path, sourceArrayExpression, itemTransformation) => {
|
|
150
|
+
acc.push(...validateArrayItemTransformation(sourceArrayExpression, itemTransformation, path));
|
|
151
|
+
},
|
|
152
|
+
TopLevelMapArrayItems: (sourceArrayExpression, itemTransformation) => validateArrayItemTransformation(sourceArrayExpression, itemTransformation)
|
|
153
|
+
},
|
|
154
|
+
accumulator: []
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
isValid: errors.length === 0,
|
|
158
|
+
validationErrors: errors
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=validateResponseTransformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/transformations/validations/validateResponseTransformation.ts"],"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","fullPath","push","validateResponseTransformation","map","validateSimpleTransformationExpression","simpleTransformationExpression","transformationSegments","split","firstExpressionSegment","isSpreadOperator","isReservedCorvidFieldName","forEach","invalidName","validateCustomFunctionExpression","functionName","argumentExpressions","rawExpression","argumentExpression","firstSegment","transformation","errors","visitors","TopLevelSimpleTransformationExpression","simpleTransformation","TopLevelCustomFunctionExpression","CustomFunctionExpression","acc","NestedSimpleTransformationExpression","lastPathSegment","NestedUnsupportedTransformationExpression","value","TopLevelUnsupportedTransformationExpression","unsupportedTransformation","TopLevelOmit","source","fieldsToOmit","validateSource","NestedOmit","MapArrayItems","TopLevelMapArrayItems","accumulator","isValid","length"],"mappings":"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","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"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { __makeTemplateObject } from "tslib";
|
|
2
|
+
import { aString, aRandomItemFrom } from '@wix/motion-runtime-test-context';
|
|
3
|
+
import { corvidEntities } from '..';
|
|
4
|
+
import { isReservedCorvidFieldName, isReservedCommonFieldName, } from '../lib/corvid-entity';
|
|
5
|
+
var toCorvidName = corvidEntities.toCorvidName, fromCorvidName = corvidEntities.fromCorvidName;
|
|
6
|
+
describe('corvid entities transformers', function () {
|
|
7
|
+
describe('toCorvidName', function () {
|
|
8
|
+
test.each(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n name | expected\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "], ["\n name | expected\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "])), 'id', '_id', 'createdDate', '_createdDate', 'updatedDate', '_updatedDate')('adjusts $name to $expected', function (_a) {
|
|
9
|
+
var name = _a.name, expected = _a.expected;
|
|
10
|
+
expect(toCorvidName(name)).toStrictEqual(expected);
|
|
11
|
+
});
|
|
12
|
+
test('returns the given name when it should not be changed', function () {
|
|
13
|
+
var name = aString();
|
|
14
|
+
expect(toCorvidName(name)).toStrictEqual(name);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('fromCorvidName', function () {
|
|
18
|
+
test.each(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n name | expected\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "], ["\n name | expected\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "])), '_id', 'id', '_createdDate', 'createdDate', '_updatedDate', 'updatedDate')('adjusts $name to $expected', function (_a) {
|
|
19
|
+
var name = _a.name, expected = _a.expected;
|
|
20
|
+
expect(fromCorvidName(name)).toStrictEqual(expected);
|
|
21
|
+
});
|
|
22
|
+
test('returns the given name when it should not be changed', function () {
|
|
23
|
+
var name = aString();
|
|
24
|
+
expect(fromCorvidName(name)).toStrictEqual(name);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('internal methods', function () {
|
|
28
|
+
var nonReservedName = aString();
|
|
29
|
+
describe('isReservedCorvidFieldName', function () {
|
|
30
|
+
test('returns true if the provided name is a reserved Corvid field-name', function () {
|
|
31
|
+
var reservedCorvidName = aRandomItemFrom([
|
|
32
|
+
'_id',
|
|
33
|
+
'_createdDate',
|
|
34
|
+
'_updatedDate',
|
|
35
|
+
]);
|
|
36
|
+
expect(isReservedCorvidFieldName(reservedCorvidName)).toBeTruthy();
|
|
37
|
+
});
|
|
38
|
+
test('returns false if the provided name is not a reserved common field-name', function () {
|
|
39
|
+
expect(isReservedCorvidFieldName(nonReservedName)).toBeFalsy();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('isReservedCommonFieldName', function () {
|
|
43
|
+
test('returns true if the provided name is a reserved common field-name', function () {
|
|
44
|
+
var commonReservedName = aRandomItemFrom([
|
|
45
|
+
'id',
|
|
46
|
+
'createdDate',
|
|
47
|
+
'updatedDate',
|
|
48
|
+
]);
|
|
49
|
+
expect(isReservedCommonFieldName(commonReservedName)).toBeTruthy();
|
|
50
|
+
});
|
|
51
|
+
test('returns false if the provided name is not a reserved common field-name', function () {
|
|
52
|
+
expect(isReservedCommonFieldName(nonReservedName)).toBeFalsy();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
var templateObject_1, templateObject_2;
|
|
58
|
+
//# sourceMappingURL=corvid-entity.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corvid-entity.spec.js","sourceRoot":"","sources":["../../../src/__tests__/corvid-entity.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import { aNumber, aString, anObject } from '@wix/motion-runtime-test-context';
|
|
3
|
+
import { getArgumentCardinality } from '..';
|
|
4
|
+
describe('getArgumentCardinality', function () {
|
|
5
|
+
describe('simple transformation', function () {
|
|
6
|
+
var simpleTransformation = "$[".concat(aNumber({
|
|
7
|
+
min: 0,
|
|
8
|
+
max: 9,
|
|
9
|
+
}), "].").concat(aString());
|
|
10
|
+
expect(getArgumentCardinality(simpleTransformation)).toStrictEqual(1);
|
|
11
|
+
});
|
|
12
|
+
describe('complex transformations', function () {
|
|
13
|
+
var _a;
|
|
14
|
+
var nonArgumentMapping = anObject();
|
|
15
|
+
var argumentMapping = __assign((_a = {}, _a[aString()] = '$[0].abc', _a[aString()] = '$[1].id', _a[aString()] = '$[2].a', _a[aString()] = '$[3].a.b.c', _a), nonArgumentMapping);
|
|
16
|
+
var argumentMappingArray = ['$[0].a', '$[1].b', 'a.b.c'];
|
|
17
|
+
test('counts the number of arguments referenced in a given transformation object', function () {
|
|
18
|
+
var complexMappingTransformation = __assign(__assign({}, nonArgumentMapping), argumentMapping);
|
|
19
|
+
expect(getArgumentCardinality(complexMappingTransformation)).toStrictEqual(4);
|
|
20
|
+
});
|
|
21
|
+
test('counts the number of arguments referenced in a transformation object with arrays', function () {
|
|
22
|
+
var _a;
|
|
23
|
+
var complexMappingTransformation = __assign(__assign({}, nonArgumentMapping), (_a = {}, _a[aString()] = argumentMappingArray, _a));
|
|
24
|
+
expect(getArgumentCardinality(complexMappingTransformation)).toStrictEqual(2);
|
|
25
|
+
});
|
|
26
|
+
test('counts only unique occurrences', function () {
|
|
27
|
+
var _a;
|
|
28
|
+
var complexMappingTransformation = __assign(__assign(__assign({}, nonArgumentMapping), argumentMapping), (_a = {}, _a[aString()] = argumentMappingArray, _a));
|
|
29
|
+
expect(getArgumentCardinality(complexMappingTransformation)).toStrictEqual(4);
|
|
30
|
+
});
|
|
31
|
+
test('does not fail on special transformation cases', function () {
|
|
32
|
+
var _a;
|
|
33
|
+
var specialTransformation = (_a = {},
|
|
34
|
+
_a[aString()] = { '@constant': true },
|
|
35
|
+
_a[aString()] = { '@constant': null },
|
|
36
|
+
_a[aString()] = '$[0].a.b.c.',
|
|
37
|
+
_a);
|
|
38
|
+
expect(getArgumentCardinality(specialTransformation)).toStrictEqual(1);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=getArgumentCardinality.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getArgumentCardinality.spec.js","sourceRoot":"","sources":["../../../src/__tests__/getArgumentCardinality.spec.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,IAAI,CAAC;AAE5C,QAAQ,CAAC,wBAAwB,EAAE;IACjC,QAAQ,CAAC,uBAAuB,EAAE;QAChC,IAAM,oBAAoB,GAAG,YAAK,OAAO,CAAC;YACxC,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP,CAAC,eAAK,OAAO,EAAE,CAAE,CAAC;QAEnB,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE;;QAClC,IAAM,kBAAkB,GAAG,QAAQ,EAAE,CAAC;QAEtC,IAAM,eAAe,yBAClB,OAAO,EAAE,IAAG,UAAU,KACtB,OAAO,EAAE,IAAG,SAAS,KACrB,OAAO,EAAE,IAAG,QAAQ,KACpB,OAAO,EAAE,IAAG,YAAY,OACtB,kBAAkB,CACtB,CAAC;QAEF,IAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,4EAA4E,EAAE;YACjF,IAAM,4BAA4B,yBAC7B,kBAAkB,GAClB,eAAe,CACnB,CAAC;YAEF,MAAM,CACJ,sBAAsB,CAAC,4BAA4B,CAAC,CACrD,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kFAAkF,EAAE;;YACvF,IAAM,4BAA4B,yBAC7B,kBAAkB,gBACpB,OAAO,EAAE,IAAG,oBAAoB,MAClC,CAAC;YAEF,MAAM,CACJ,sBAAsB,CAAC,4BAA4B,CAAC,CACrD,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gCAAgC,EAAE;;YACrC,IAAM,4BAA4B,kCAC7B,kBAAkB,GAClB,eAAe,gBACjB,OAAO,EAAE,IAAG,oBAAoB,MAClC,CAAC;YAEF,MAAM,CACJ,sBAAsB,CAAC,4BAA4B,CAAC,CACrD,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+CAA+C,EAAE;;YACpD,IAAM,qBAAqB;gBACzB,GAAC,OAAO,EAAE,IAAG,EAAE,WAAW,EAAE,IAAI,EAAE;gBAClC,GAAC,OAAO,EAAE,IAAG,EAAE,WAAW,EAAE,IAAI,EAAE;gBAClC,GAAC,OAAO,EAAE,IAAG,aAAa;mBAC3B,CAAC;YAEF,MAAM,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { __makeTemplateObject } from "tslib";
|
|
2
|
+
import { aSimpleMappingTransformation, aComplexMappingTransformation, aRandomJsonPath, aRandomResponseTransformationJsonPath, } from '@wix/motion-edm-autogen-test-context';
|
|
3
|
+
import { aNumber, aString } from '@wix/motion-runtime-test-context';
|
|
4
|
+
import { times } from 'lodash';
|
|
5
|
+
import { isSimpleTransformation, extractIndexAndPath, getArgumentIndex, isJsonPathExpression, stripJsonPathRootPrefix, isInvalidJsonValue, } from '../lib/helpers';
|
|
6
|
+
describe('helper functions', function () {
|
|
7
|
+
var index = aNumber({ min: 0, max: 1 });
|
|
8
|
+
// @ts-expect-error
|
|
9
|
+
var nestedPath = times(3, aString()).join('.');
|
|
10
|
+
var simpleTransformation = "$[".concat(index, "]");
|
|
11
|
+
var simpleTransformationWithNestedPath = "$[".concat(index, "].").concat(nestedPath);
|
|
12
|
+
describe('isSimpleTransformation', function () {
|
|
13
|
+
test.each(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n transformation | expectedValue | transformationType\n ", " | ", " | ", "\n ", " | ", " | ", "\n "], ["\n transformation | expectedValue | transformationType\n ", " | ", " | ", "\n ", " | ", " | ", "\n "])), aSimpleMappingTransformation().simpleMapping, true, 'simple', aComplexMappingTransformation().complexMapping, false, 'complex')('returns $expectedValue for $transformationType transformation', function (_a) {
|
|
14
|
+
var transformation = _a.transformation, expectedValue = _a.expectedValue;
|
|
15
|
+
expect(isSimpleTransformation(transformation)).toStrictEqual(expectedValue);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('extractIndexAndPath', function () {
|
|
19
|
+
test('extracts the index and nested-path of the argument from a simple tranformation', function () {
|
|
20
|
+
expect(extractIndexAndPath(simpleTransformationWithNestedPath)).toStrictEqual({ index: index, nestedPath: nestedPath });
|
|
21
|
+
});
|
|
22
|
+
test('sets the nestedPath to null when one could not be found', function () {
|
|
23
|
+
expect(extractIndexAndPath(simpleTransformation)).toStrictEqual({
|
|
24
|
+
index: index,
|
|
25
|
+
nestedPath: null,
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('getArgumentIndex', function () {
|
|
30
|
+
test('extracts the index of an argument within a jsonpath', function () {
|
|
31
|
+
expect(getArgumentIndex(simpleTransformation)).toStrictEqual(index);
|
|
32
|
+
});
|
|
33
|
+
test('return null when no index was found', function () {
|
|
34
|
+
expect(getArgumentIndex(aString())).toBeNull();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('isJsonPathExpression', function () {
|
|
38
|
+
test.each(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n description | expression | expectedResult\n ", " | ", " | ", "\n ", " | ", " | ", "\n "], ["\n description | expression | expectedResult\n ", " | ", " | ", "\n ", " | ", " | ", "\n "])), 'starts with $', aRandomJsonPath(), true, 'does not start with $', aString(), false)('return $expectedResult when the expression $description', function (_a) {
|
|
39
|
+
var expression = _a.expression, expectedResult = _a.expectedResult;
|
|
40
|
+
expect(isJsonPathExpression(expression)).toStrictEqual(expectedResult);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('stripJsonPathRootPrefix', function () {
|
|
44
|
+
var nonJsonPathString = aString();
|
|
45
|
+
var jsonPath = aRandomResponseTransformationJsonPath();
|
|
46
|
+
test.each(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n description | expression | expectedResult\n ", " | ", " | ", "\n ", " | ", " | ", "\n ", " | ", " | ", "\n "], ["\n description | expression | expectedResult\n ", " | ", " | ", "\n ", " | ", " | ", "\n ", " | ", " | ", "\n "])), 'is $', '$', '$', 'does not start with $', nonJsonPathString, nonJsonPathString, 'starts with $.', jsonPath, jsonPath.slice(2))('return $expectedResult when the expression $description', function (_a) {
|
|
47
|
+
var expression = _a.expression, expectedResult = _a.expectedResult;
|
|
48
|
+
expect(stripJsonPathRootPrefix(expression)).toStrictEqual(expectedResult);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('isInvalidJsonValue', function () {
|
|
52
|
+
test('returns true for an invalid json-value', function () {
|
|
53
|
+
expect(isInvalidJsonValue('x-y-z')).toBeTruthy();
|
|
54
|
+
});
|
|
55
|
+
test('returns false for a valid json-value', function () {
|
|
56
|
+
expect(isInvalidJsonValue('"string"')).toBeFalsy();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
61
|
+
//# sourceMappingURL=helpers.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../../../src/__tests__/helpers.spec.ts"],"names":[],"mappings":"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"}
|