@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.
Files changed (182) hide show
  1. package/dist/cjs/__tests__/corvid-entity.spec.js +68 -0
  2. package/dist/cjs/__tests__/corvid-entity.spec.js.map +1 -0
  3. package/dist/cjs/__tests__/getArgumentCardinality.spec.js +58 -0
  4. package/dist/cjs/__tests__/getArgumentCardinality.spec.js.map +1 -0
  5. package/dist/cjs/__tests__/helpers.spec.js +90 -0
  6. package/dist/cjs/__tests__/helpers.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/reduceTransformation.spec.js +478 -0
  8. package/dist/cjs/__tests__/reduceTransformation.spec.js.map +1 -0
  9. package/dist/cjs/__tests__/transformations/custom-functions.spec.js +111 -0
  10. package/dist/cjs/__tests__/transformations/custom-functions.spec.js.map +1 -0
  11. package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js +47 -0
  12. package/dist/cjs/__tests__/transformations/preset/create-transformation.spec.js.map +1 -0
  13. package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js +75 -0
  14. package/dist/cjs/__tests__/transformations/preset/delete-transformation.spec.js.map +1 -0
  15. package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js +46 -0
  16. package/dist/cjs/__tests__/transformations/preset/get-transformation.spec.js.map +1 -0
  17. package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js +28 -0
  18. package/dist/cjs/__tests__/transformations/preset/list-transformation.spec.js.map +1 -0
  19. package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js +66 -0
  20. package/dist/cjs/__tests__/transformations/preset/query-transformation.spec.js.map +1 -0
  21. package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js +90 -0
  22. package/dist/cjs/__tests__/transformations/preset/update-transformation.spec.js.map +1 -0
  23. package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js +291 -0
  24. package/dist/cjs/__tests__/validations/validateRequestTransformation.spec.js.map +1 -0
  25. package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js +370 -0
  26. package/dist/cjs/__tests__/validations/validateResponseTransformation.spec.js.map +1 -0
  27. package/dist/cjs/index.js +102 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/lib/corvid-entity/index.js +32 -0
  30. package/dist/cjs/lib/corvid-entity/index.js.map +1 -0
  31. package/dist/cjs/lib/getArgumentCardinality.js +34 -0
  32. package/dist/cjs/lib/getArgumentCardinality.js.map +1 -0
  33. package/dist/cjs/lib/helpers.js +111 -0
  34. package/dist/cjs/lib/helpers.js.map +1 -0
  35. package/dist/cjs/lib/transformations/common.js +24 -0
  36. package/dist/cjs/lib/transformations/common.js.map +1 -0
  37. package/dist/cjs/lib/transformations/constants.js +23 -0
  38. package/dist/cjs/lib/transformations/constants.js.map +1 -0
  39. package/dist/cjs/lib/transformations/custom-functions.js +46 -0
  40. package/dist/cjs/lib/transformations/custom-functions.js.map +1 -0
  41. package/dist/cjs/lib/transformations/preset/create.js +17 -0
  42. package/dist/cjs/lib/transformations/preset/create.js.map +1 -0
  43. package/dist/cjs/lib/transformations/preset/delete.js +42 -0
  44. package/dist/cjs/lib/transformations/preset/delete.js.map +1 -0
  45. package/dist/cjs/lib/transformations/preset/get.js +17 -0
  46. package/dist/cjs/lib/transformations/preset/get.js.map +1 -0
  47. package/dist/cjs/lib/transformations/preset/list.js +13 -0
  48. package/dist/cjs/lib/transformations/preset/list.js.map +1 -0
  49. package/dist/cjs/lib/transformations/preset/query.js +40 -0
  50. package/dist/cjs/lib/transformations/preset/query.js.map +1 -0
  51. package/dist/cjs/lib/transformations/preset/update.js +37 -0
  52. package/dist/cjs/lib/transformations/preset/update.js.map +1 -0
  53. package/dist/cjs/lib/transformations/reduceTransformation.js +180 -0
  54. package/dist/cjs/lib/transformations/reduceTransformation.js.map +1 -0
  55. package/dist/cjs/lib/transformations/validations/common.js +50 -0
  56. package/dist/cjs/lib/transformations/validations/common.js.map +1 -0
  57. package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js +118 -0
  58. package/dist/cjs/lib/transformations/validations/validateRequestTransformation.js.map +1 -0
  59. package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js +161 -0
  60. package/dist/cjs/lib/transformations/validations/validateResponseTransformation.js.map +1 -0
  61. package/dist/esm/__tests__/corvid-entity.spec.js +58 -0
  62. package/dist/esm/__tests__/corvid-entity.spec.js.map +1 -0
  63. package/dist/esm/__tests__/getArgumentCardinality.spec.js +42 -0
  64. package/dist/esm/__tests__/getArgumentCardinality.spec.js.map +1 -0
  65. package/dist/esm/__tests__/helpers.spec.js +61 -0
  66. package/dist/esm/__tests__/helpers.spec.js.map +1 -0
  67. package/dist/esm/__tests__/reduceTransformation.spec.js +416 -0
  68. package/dist/esm/__tests__/reduceTransformation.spec.js.map +1 -0
  69. package/dist/esm/__tests__/transformations/custom-functions.spec.js +87 -0
  70. package/dist/esm/__tests__/transformations/custom-functions.spec.js.map +1 -0
  71. package/dist/esm/__tests__/transformations/preset/create-transformation.spec.js +40 -0
  72. package/dist/esm/__tests__/transformations/preset/create-transformation.spec.js.map +1 -0
  73. package/dist/esm/__tests__/transformations/preset/delete-transformation.spec.js +65 -0
  74. package/dist/esm/__tests__/transformations/preset/delete-transformation.spec.js.map +1 -0
  75. package/dist/esm/__tests__/transformations/preset/get-transformation.spec.js +39 -0
  76. package/dist/esm/__tests__/transformations/preset/get-transformation.spec.js.map +1 -0
  77. package/dist/esm/__tests__/transformations/preset/list-transformation.spec.js +22 -0
  78. package/dist/esm/__tests__/transformations/preset/list-transformation.spec.js.map +1 -0
  79. package/dist/esm/__tests__/transformations/preset/query-transformation.spec.js +57 -0
  80. package/dist/esm/__tests__/transformations/preset/query-transformation.spec.js.map +1 -0
  81. package/dist/esm/__tests__/transformations/preset/update-transformation.spec.js +85 -0
  82. package/dist/esm/__tests__/transformations/preset/update-transformation.spec.js.map +1 -0
  83. package/dist/esm/__tests__/validations/validateRequestTransformation.spec.js +200 -0
  84. package/dist/esm/__tests__/validations/validateRequestTransformation.spec.js.map +1 -0
  85. package/dist/esm/__tests__/validations/validateResponseTransformation.spec.js +246 -0
  86. package/dist/esm/__tests__/validations/validateResponseTransformation.spec.js.map +1 -0
  87. package/dist/esm/index.js +47 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/lib/corvid-entity/index.js +17 -0
  90. package/dist/esm/lib/corvid-entity/index.js.map +1 -0
  91. package/dist/esm/lib/getArgumentCardinality.js +30 -0
  92. package/dist/esm/lib/getArgumentCardinality.js.map +1 -0
  93. package/dist/esm/lib/helpers.js +56 -0
  94. package/dist/esm/lib/helpers.js.map +1 -0
  95. package/dist/esm/lib/transformations/common.js +17 -0
  96. package/dist/esm/lib/transformations/common.js.map +1 -0
  97. package/dist/esm/lib/transformations/constants.js +18 -0
  98. package/dist/esm/lib/transformations/constants.js.map +1 -0
  99. package/dist/esm/lib/transformations/custom-functions.js +34 -0
  100. package/dist/esm/lib/transformations/custom-functions.js.map +1 -0
  101. package/dist/esm/lib/transformations/preset/create.js +8 -0
  102. package/dist/esm/lib/transformations/preset/create.js.map +1 -0
  103. package/dist/esm/lib/transformations/preset/delete.js +25 -0
  104. package/dist/esm/lib/transformations/preset/delete.js.map +1 -0
  105. package/dist/esm/lib/transformations/preset/get.js +8 -0
  106. package/dist/esm/lib/transformations/preset/get.js.map +1 -0
  107. package/dist/esm/lib/transformations/preset/list.js +6 -0
  108. package/dist/esm/lib/transformations/preset/list.js.map +1 -0
  109. package/dist/esm/lib/transformations/preset/query.js +28 -0
  110. package/dist/esm/lib/transformations/preset/query.js.map +1 -0
  111. package/dist/esm/lib/transformations/preset/update.js +18 -0
  112. package/dist/esm/lib/transformations/preset/update.js.map +1 -0
  113. package/dist/esm/lib/transformations/reduceTransformation.js +122 -0
  114. package/dist/esm/lib/transformations/reduceTransformation.js.map +1 -0
  115. package/dist/esm/lib/transformations/validations/common.js +35 -0
  116. package/dist/esm/lib/transformations/validations/common.js.map +1 -0
  117. package/dist/esm/lib/transformations/validations/validateRequestTransformation.js +107 -0
  118. package/dist/esm/lib/transformations/validations/validateRequestTransformation.js.map +1 -0
  119. package/dist/esm/lib/transformations/validations/validateResponseTransformation.js +142 -0
  120. package/dist/esm/lib/transformations/validations/validateResponseTransformation.js.map +1 -0
  121. package/dist/tsconfig.tsbuildinfo +1 -0
  122. package/dist/types/__tests__/corvid-entity.spec.d.ts +2 -0
  123. package/dist/types/__tests__/corvid-entity.spec.d.ts.map +1 -0
  124. package/dist/types/__tests__/getArgumentCardinality.spec.d.ts +2 -0
  125. package/dist/types/__tests__/getArgumentCardinality.spec.d.ts.map +1 -0
  126. package/dist/types/__tests__/helpers.spec.d.ts +2 -0
  127. package/dist/types/__tests__/helpers.spec.d.ts.map +1 -0
  128. package/dist/types/__tests__/reduceTransformation.spec.d.ts +2 -0
  129. package/dist/types/__tests__/reduceTransformation.spec.d.ts.map +1 -0
  130. package/dist/types/__tests__/transformations/custom-functions.spec.d.ts +2 -0
  131. package/dist/types/__tests__/transformations/custom-functions.spec.d.ts.map +1 -0
  132. package/dist/types/__tests__/transformations/preset/create-transformation.spec.d.ts +2 -0
  133. package/dist/types/__tests__/transformations/preset/create-transformation.spec.d.ts.map +1 -0
  134. package/dist/types/__tests__/transformations/preset/delete-transformation.spec.d.ts +2 -0
  135. package/dist/types/__tests__/transformations/preset/delete-transformation.spec.d.ts.map +1 -0
  136. package/dist/types/__tests__/transformations/preset/get-transformation.spec.d.ts +2 -0
  137. package/dist/types/__tests__/transformations/preset/get-transformation.spec.d.ts.map +1 -0
  138. package/dist/types/__tests__/transformations/preset/list-transformation.spec.d.ts +2 -0
  139. package/dist/types/__tests__/transformations/preset/list-transformation.spec.d.ts.map +1 -0
  140. package/dist/types/__tests__/transformations/preset/query-transformation.spec.d.ts +2 -0
  141. package/dist/types/__tests__/transformations/preset/query-transformation.spec.d.ts.map +1 -0
  142. package/dist/types/__tests__/transformations/preset/update-transformation.spec.d.ts +2 -0
  143. package/dist/types/__tests__/transformations/preset/update-transformation.spec.d.ts.map +1 -0
  144. package/dist/types/__tests__/validations/validateRequestTransformation.spec.d.ts +2 -0
  145. package/dist/types/__tests__/validations/validateRequestTransformation.spec.d.ts.map +1 -0
  146. package/dist/types/__tests__/validations/validateResponseTransformation.spec.d.ts +2 -0
  147. package/dist/types/__tests__/validations/validateResponseTransformation.spec.d.ts.map +1 -0
  148. package/dist/types/index.d.ts +55 -0
  149. package/dist/types/index.d.ts.map +1 -0
  150. package/dist/types/lib/corvid-entity/index.d.ts +13 -0
  151. package/dist/types/lib/corvid-entity/index.d.ts.map +1 -0
  152. package/dist/types/lib/getArgumentCardinality.d.ts +3 -0
  153. package/dist/types/lib/getArgumentCardinality.d.ts.map +1 -0
  154. package/dist/types/lib/helpers.d.ts +28 -0
  155. package/dist/types/lib/helpers.d.ts.map +1 -0
  156. package/dist/types/lib/transformations/common.d.ts +15 -0
  157. package/dist/types/lib/transformations/common.d.ts.map +1 -0
  158. package/dist/types/lib/transformations/constants.d.ts +18 -0
  159. package/dist/types/lib/transformations/constants.d.ts.map +1 -0
  160. package/dist/types/lib/transformations/custom-functions.d.ts +13 -0
  161. package/dist/types/lib/transformations/custom-functions.d.ts.map +1 -0
  162. package/dist/types/lib/transformations/preset/create.d.ts +6 -0
  163. package/dist/types/lib/transformations/preset/create.d.ts.map +1 -0
  164. package/dist/types/lib/transformations/preset/delete.d.ts +7 -0
  165. package/dist/types/lib/transformations/preset/delete.d.ts.map +1 -0
  166. package/dist/types/lib/transformations/preset/get.d.ts +6 -0
  167. package/dist/types/lib/transformations/preset/get.d.ts.map +1 -0
  168. package/dist/types/lib/transformations/preset/list.d.ts +4 -0
  169. package/dist/types/lib/transformations/preset/list.d.ts.map +1 -0
  170. package/dist/types/lib/transformations/preset/query.d.ts +20 -0
  171. package/dist/types/lib/transformations/preset/query.d.ts.map +1 -0
  172. package/dist/types/lib/transformations/preset/update.d.ts +8 -0
  173. package/dist/types/lib/transformations/preset/update.d.ts.map +1 -0
  174. package/dist/types/lib/transformations/reduceTransformation.d.ts +6 -0
  175. package/dist/types/lib/transformations/reduceTransformation.d.ts.map +1 -0
  176. package/dist/types/lib/transformations/validations/common.d.ts +13 -0
  177. package/dist/types/lib/transformations/validations/common.d.ts.map +1 -0
  178. package/dist/types/lib/transformations/validations/validateRequestTransformation.d.ts +6 -0
  179. package/dist/types/lib/transformations/validations/validateRequestTransformation.d.ts.map +1 -0
  180. package/dist/types/lib/transformations/validations/validateResponseTransformation.d.ts +6 -0
  181. package/dist/types/lib/transformations/validations/validateResponseTransformation.d.ts.map +1 -0
  182. package/package.json +72 -0
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+
3
+ var _motionRuntimeTestContext = require("@wix/motion-runtime-test-context");
4
+
5
+ var _lodash = require("lodash");
6
+
7
+ var _ = require("../..");
8
+
9
+ const validateResponseTransformation = _.validation.validateResponseTransformation;
10
+ describe('validateResponseTransformation', () => {
11
+ describe('valid transformations', () => {
12
+ const validResults = {
13
+ isValid: true,
14
+ validationErrors: []
15
+ };
16
+ test('returns valid transformation response for a valid simple transformation', () => {
17
+ const validTransformation = '$.a.b.c';
18
+ expect(validateResponseTransformation(validTransformation)).toStrictEqual(validResults);
19
+ });
20
+ test('returns valid transformation response for a valid complex transformation', () => {
21
+ const validTransformation = {
22
+ aaa: '$.a.b.c'
23
+ };
24
+ expect(validateResponseTransformation(validTransformation)).toStrictEqual(validResults);
25
+ });
26
+ });
27
+ describe('invalid transformations', () => {
28
+ const parentKey = (0, _motionRuntimeTestContext.aString)();
29
+
30
+ const validationErrorWith = ({
31
+ parentPath,
32
+ invalidValue,
33
+ description
34
+ }) => ({
35
+ isValid: false,
36
+ validationErrors: expect.arrayContaining([expect.objectContaining({
37
+ parentPath,
38
+ invalidValue,
39
+ description
40
+ })])
41
+ });
42
+
43
+ describe('invalid simple transformations', () => {
44
+ test('returns a validation error when the transformation starts with an index argument', () => {
45
+ const transformation = '$[0].a.b.c';
46
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
47
+ parentPath: null,
48
+ invalidValue: transformation,
49
+ description: "must be a string starting with '$.'"
50
+ }));
51
+ });
52
+ });
53
+ describe('invalid complex-transformation keys', () => {
54
+ test.each`
55
+ description | transformationKey | expectedValidationMessage
56
+ ${'refers to an argument index'} | ${'$[0]'} | ${"must be a string starting with '$.'"}
57
+ ${'refers to the root identifier'} | ${'$'} | ${'cannot refer to $ in a transformation key'}
58
+ ${'refers to a custom function'} | ${'#someFunction'} | ${'cannot be a custom function call'}
59
+ `('returns a validation error when a transformation value segment $description', ({
60
+ transformationKey,
61
+ expectedValidationMessage
62
+ }) => {
63
+ const transformation = {
64
+ d: {
65
+ e: {
66
+ f: {
67
+ [transformationKey]: '$.a.b.c'
68
+ }
69
+ }
70
+ },
71
+ '*': '$[1]'
72
+ };
73
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
74
+ parentPath: 'd.e.f',
75
+ invalidValue: transformationKey,
76
+ description: expectedValidationMessage
77
+ }));
78
+ });
79
+ });
80
+ describe('invalid transformations values', () => {
81
+ describe('custom function expressions', () => {
82
+ const invalidCustomFunctionName = '#1a';
83
+ describe('invalid custom function-name is used', () => {
84
+ test.each`
85
+ description | transformation | expectedParentPath
86
+ ${'top level'} | ${invalidCustomFunctionName} | ${null}
87
+ ${'nested'} | ${{
88
+ a: {
89
+ b: {
90
+ c: invalidCustomFunctionName
91
+ }
92
+ }
93
+ }} | ${'a.b.c'}
94
+ `('returns a validation error for $description cases', ({
95
+ expectedParentPath,
96
+ transformation
97
+ }) => {
98
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
99
+ parentPath: expectedParentPath,
100
+ invalidValue: invalidCustomFunctionName,
101
+ description: 'contains an invalid custom function expression'
102
+ }));
103
+ });
104
+ });
105
+ describe('a custom function argument is invalid in response transformation', () => {
106
+ const invalidCustomFunctionExpression = '#someFunction($[0])';
107
+ test.each`
108
+ description | transformation | expectedParentPath
109
+ ${'top level'} | ${invalidCustomFunctionExpression} | ${null}
110
+ ${'nested'} | ${{
111
+ a: {
112
+ b: {
113
+ c: invalidCustomFunctionExpression
114
+ }
115
+ }
116
+ }} | ${'a.b.c'}
117
+ `('returns a validation error for $description cases', ({
118
+ expectedParentPath,
119
+ transformation
120
+ }) => {
121
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
122
+ parentPath: expectedParentPath,
123
+ invalidValue: '$[0]',
124
+ description: "must be a string starting with '$.'"
125
+ }));
126
+ });
127
+ });
128
+ test('returns a validation error when an argument index is used', () => {
129
+ const argumentExpression = '$[1].a.b.c.';
130
+ const path = 'd.e.f';
131
+ const transformation = (0, _lodash.set)({}, path, argumentExpression);
132
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
133
+ parentPath: path,
134
+ invalidValue: argumentExpression,
135
+ description: "must be a string starting with '$.'"
136
+ }));
137
+ });
138
+ });
139
+ describe.each`
140
+ description | transformationValue | expectedValidationMessage
141
+ ${'does not start with $'} | ${'a.b.c'} | ${"must be a string starting with '$.'"}
142
+ ${'refers to * in the path'} | ${'$.a.b.*'} | ${'cannot refer to the * operator'}
143
+ `('returns a validation error when a transformation value segment $description', ({
144
+ transformationValue,
145
+ expectedValidationMessage
146
+ }) => {
147
+ test('simple transformation', () => {
148
+ expect(validateResponseTransformation(transformationValue)).toStrictEqual(validationErrorWith({
149
+ parentPath: null,
150
+ invalidValue: transformationValue,
151
+ description: expectedValidationMessage
152
+ }));
153
+ });
154
+ test('complex transformation', () => {
155
+ const transformation = {
156
+ d: {
157
+ e: {
158
+ f: transformationValue
159
+ }
160
+ }
161
+ };
162
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
163
+ parentPath: 'd.e.f',
164
+ invalidValue: transformationValue,
165
+ description: expectedValidationMessage
166
+ }));
167
+ });
168
+ });
169
+ describe('special fields', () => {
170
+ describe.each(['_id', '_createdDate', '_updatedDate'])('%s', specialField => {
171
+ const expectedValidationMessage = `cannot refer to the ${specialField} field`;
172
+ test('returns a validation error when a transformation value segment $description', () => {
173
+ const transformation = {
174
+ d: {
175
+ e: {
176
+ f: {
177
+ [specialField]: '$.a.b.c'
178
+ }
179
+ }
180
+ },
181
+ '*': '$[1]'
182
+ };
183
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
184
+ parentPath: 'd.e.f',
185
+ invalidValue: specialField,
186
+ description: expectedValidationMessage
187
+ }));
188
+ });
189
+ describe('simple transformation', () => {
190
+ test(`returns a validation error when a segment refers to the special field ${specialField}`, () => {
191
+ const transformationValue = `$.a.b.${specialField}`;
192
+ expect(validateResponseTransformation(transformationValue)).toStrictEqual(validationErrorWith({
193
+ parentPath: null,
194
+ invalidValue: transformationValue,
195
+ description: expectedValidationMessage
196
+ }));
197
+ });
198
+ });
199
+ test('complex transformation', () => {
200
+ const transformationValue = `$.a.b.${specialField}`;
201
+ const transformation = {
202
+ d: {
203
+ e: {
204
+ f: transformationValue
205
+ }
206
+ }
207
+ };
208
+ expect(validateResponseTransformation(transformation)).toStrictEqual(validationErrorWith({
209
+ parentPath: 'd.e.f',
210
+ invalidValue: transformationValue,
211
+ description: expectedValidationMessage
212
+ }));
213
+ });
214
+ });
215
+ });
216
+ });
217
+ describe('omit transformation', () => {
218
+ describe('invalid @source', () => {
219
+ const invalidSourceValue = 'a.b.c';
220
+ const invalidSourceTransformation = {
221
+ '@source': invalidSourceValue,
222
+ '@omit': (0, _lodash.times)(2, () => (0, _motionRuntimeTestContext.aString)())
223
+ };
224
+ test.each`
225
+ description | invalidTransformation | expectedParentPath
226
+ ${'top level'} | ${invalidSourceTransformation} | ${'@source'}
227
+ ${'nested'} | ${{
228
+ [parentKey]: invalidSourceTransformation
229
+ }} | ${`${parentKey}.@source`}
230
+ `('returns a validation error when the @source value is invalid', ({
231
+ invalidTransformation,
232
+ expectedParentPath
233
+ }) => {
234
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
235
+ parentPath: expectedParentPath,
236
+ invalidValue: invalidSourceValue,
237
+ description: "must be a string starting with '$.'"
238
+ }));
239
+ });
240
+ });
241
+ describe('invalid @omit', () => {
242
+ const transformationWithOmitValue = value => ({
243
+ '@source': '$.a.b.c',
244
+ '@omit': value
245
+ });
246
+
247
+ const nonArray = (0, _motionRuntimeTestContext.aString)();
248
+ const nonStringArray = (0, _lodash.times)(2, () => (0, _motionRuntimeTestContext.aNumber)());
249
+ const arrayWithInvalidPaths = ['a.b.c', (0, _motionRuntimeTestContext.aString)()];
250
+ describe.each`
251
+ description | invalidTransformation | expectedParentPath
252
+ ${'top level'} | ${transformationWithOmitValue(nonArray)} | ${'@omit'}
253
+ ${'nested'} | ${{
254
+ [parentKey]: transformationWithOmitValue(nonArray)
255
+ }} | ${`${parentKey}.@omit`}
256
+ `('@omit is not an array', ({
257
+ description,
258
+ invalidTransformation,
259
+ expectedParentPath
260
+ }) => {
261
+ test(`returns a validation error for invalid ${description} transformation`, () => {
262
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
263
+ parentPath: expectedParentPath,
264
+ invalidValue: nonArray,
265
+ description: 'must be an array of strings'
266
+ }));
267
+ });
268
+ });
269
+ describe.each`
270
+ description | invalidTransformation | expectedParentPath
271
+ ${'top level'} | ${transformationWithOmitValue(nonStringArray)} | ${'@omit'}
272
+ ${'nested'} | ${{
273
+ [parentKey]: transformationWithOmitValue(nonStringArray)
274
+ }} | ${`${parentKey}.@omit`}
275
+ `('@omit is an array of non-strings', ({
276
+ description,
277
+ invalidTransformation,
278
+ expectedParentPath
279
+ }) => {
280
+ test(`returns a validation error for invalid ${description} transformation`, () => {
281
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
282
+ parentPath: expectedParentPath,
283
+ invalidValue: nonStringArray,
284
+ description: 'must be an array of strings'
285
+ }));
286
+ });
287
+ });
288
+ /* eslint-disable max-len */
289
+
290
+ describe.each`
291
+ description | invalidTransformation | expectedParentPath
292
+ ${'top level'} | ${transformationWithOmitValue(arrayWithInvalidPaths)} | ${'@omit'}
293
+ ${'nested'} | ${{
294
+ [parentKey]: transformationWithOmitValue(arrayWithInvalidPaths)
295
+ }} | ${`${parentKey}.@omit`}
296
+ `('@omit is an array of invalid string paths', ({
297
+ description,
298
+ invalidTransformation,
299
+ expectedParentPath
300
+ }) => {
301
+ /* eslint-enable max-len */
302
+ test(`returns a validation error for invalid ${description} transformation`, () => {
303
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
304
+ parentPath: expectedParentPath,
305
+ invalidValue: arrayWithInvalidPaths,
306
+ description: 'must contain non-nested paths only'
307
+ }));
308
+ });
309
+ });
310
+ });
311
+ });
312
+ describe('array-item transformation', () => {
313
+ const validValue = '$.d.e.f';
314
+
315
+ const invalidPathTransformationWith = invalidPathValue => ({
316
+ '@path': invalidPathValue,
317
+ '@itemTransformation': validValue
318
+ });
319
+
320
+ describe.each`
321
+ invalidValue | description
322
+ ${'$[0].should.fail'} | ${'invalid path value'}
323
+ ${(0, _motionRuntimeTestContext.aRandomItemFrom)([(0, _motionRuntimeTestContext.aBoolean)(), (0, _motionRuntimeTestContext.aNumber)(), (0, _motionRuntimeTestContext.anObject)()])} | ${'invalid path type'}
324
+ `('$description', ({
325
+ invalidValue
326
+ }) => {
327
+ test.each`
328
+ description | invalidTransformation | expectedParentPath
329
+ ${'top-level'} | ${invalidPathTransformationWith(invalidValue)} | ${'@path'}
330
+ ${'nested'} | ${{
331
+ [parentKey]: invalidPathTransformationWith(invalidValue)
332
+ }} | ${`${parentKey}.@path`}
333
+ `('returns a validation error when the @path value is invalid for $description transformation', ({
334
+ invalidTransformation,
335
+ expectedParentPath
336
+ }) => {
337
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
338
+ parentPath: expectedParentPath,
339
+ invalidValue,
340
+ description: "must be a string starting with '$.'"
341
+ }));
342
+ });
343
+ });
344
+ describe('invalid @itemTransformation', () => {
345
+ const invalidValue = '$[0].should.fail';
346
+ const invalidPathTransformation = {
347
+ '@path': validValue,
348
+ '@itemTransformation': invalidValue
349
+ };
350
+ test.each`
351
+ description | invalidTransformation | expectedParentPath
352
+ ${'top-level'} | ${invalidPathTransformation} | ${'@itemTransformation'}
353
+ ${'nested'} | ${{
354
+ [parentKey]: invalidPathTransformation
355
+ }} | ${`${parentKey}.@itemTransformation`}
356
+ `('returns a validation error when the @itemTransformation value is invalid for $description transformation', ({
357
+ invalidTransformation,
358
+ expectedParentPath
359
+ }) => {
360
+ expect(validateResponseTransformation(invalidTransformation)).toStrictEqual(validationErrorWith({
361
+ parentPath: expectedParentPath,
362
+ invalidValue,
363
+ description: "must be a string starting with '$.'"
364
+ }));
365
+ });
366
+ });
367
+ });
368
+ });
369
+ });
370
+ //# sourceMappingURL=validateResponseTransformation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/__tests__/validations/validateResponseTransformation.spec.ts"],"names":["validateResponseTransformation","validation","describe","validResults","isValid","validationErrors","test","validTransformation","expect","toStrictEqual","aaa","parentKey","validationErrorWith","parentPath","invalidValue","description","arrayContaining","objectContaining","transformation","each","transformationKey","expectedValidationMessage","d","e","f","invalidCustomFunctionName","a","b","c","expectedParentPath","invalidCustomFunctionExpression","argumentExpression","path","transformationValue","specialField","invalidSourceValue","invalidSourceTransformation","invalidTransformation","transformationWithOmitValue","value","nonArray","nonStringArray","arrayWithInvalidPaths","validValue","invalidPathTransformationWith","invalidPathValue","invalidPathTransformation"],"mappings":"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","sourcesContent":["import {\n aString,\n aNumber,\n aRandomItemFrom,\n aBoolean,\n anObject,\n} from '@wix/motion-runtime-test-context';\nimport { set, times } from 'lodash';\nimport { validation } from '../..';\n\nconst { validateResponseTransformation } = validation;\n\ndescribe('validateResponseTransformation', () => {\n describe('valid transformations', () => {\n const validResults = { isValid: true, validationErrors: [] };\n\n test('returns valid transformation response for a valid simple transformation', () => {\n const validTransformation = '$.a.b.c';\n\n expect(validateResponseTransformation(validTransformation)).toStrictEqual(\n validResults,\n );\n });\n\n test('returns valid transformation response for a valid complex transformation', () => {\n const validTransformation = { aaa: '$.a.b.c' };\n\n expect(validateResponseTransformation(validTransformation)).toStrictEqual(\n validResults,\n );\n });\n });\n\n describe('invalid transformations', () => {\n const parentKey = aString();\n\n const validationErrorWith = ({\n parentPath,\n invalidValue,\n description,\n }) => ({\n isValid: false,\n validationErrors: expect.arrayContaining([\n expect.objectContaining({\n parentPath,\n invalidValue,\n description,\n }),\n ]),\n });\n\n describe('invalid simple transformations', () => {\n test('returns a validation error when the transformation starts with an index argument', () => {\n const transformation = '$[0].a.b.c';\n\n expect(validateResponseTransformation(transformation)).toStrictEqual(\n validationErrorWith({\n parentPath: null,\n invalidValue: transformation,\n description: \"must be a string starting with '$.'\",\n }),\n );\n });\n });\n\n describe('invalid complex-transformation keys', () => {\n test.each`\n description | transformationKey | expectedValidationMessage\n ${'refers to an argument index'} | ${'$[0]'} | ${\"must be a string starting with '$.'\"}\n ${'refers to the root identifier'} | ${'$'} | ${'cannot refer to $ in a transformation key'}\n ${'refers to a custom function'} | ${'#someFunction'} | ${'cannot be a custom function call'}\n `(\n 'returns a validation error when a transformation value segment $description',\n ({ transformationKey, expectedValidationMessage }) => {\n const transformation = {\n d: { e: { f: { [transformationKey]: '$.a.b.c' } } },\n '*': '$[1]',\n };\n\n expect(validateResponseTransformation(transformation)).toStrictEqual(\n validationErrorWith({\n parentPath: 'd.e.f',\n invalidValue: transformationKey,\n description: expectedValidationMessage,\n }),\n );\n },\n );\n });\n\n describe('invalid transformations values', () => {\n describe('custom function expressions', () => {\n const invalidCustomFunctionName = '#1a';\n\n describe('invalid custom function-name is used', () => {\n test.each`\n description | transformation | expectedParentPath\n ${'top level'} | ${invalidCustomFunctionName} | ${null}\n ${'nested'} | ${{ a: { b: { c: invalidCustomFunctionName } } }} | ${'a.b.c'}\n `(\n 'returns a validation error for $description cases',\n ({ expectedParentPath, transformation }) => {\n expect(\n validateResponseTransformation(transformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: invalidCustomFunctionName,\n description: 'contains an invalid custom function expression',\n }),\n );\n },\n );\n });\n\n describe('a custom function argument is invalid in response transformation', () => {\n const invalidCustomFunctionExpression = '#someFunction($[0])';\n\n test.each`\n description | transformation | expectedParentPath\n ${'top level'} | ${invalidCustomFunctionExpression} | ${null}\n ${'nested'} | ${{ a: { b: { c: invalidCustomFunctionExpression } } }} | ${'a.b.c'}\n `(\n 'returns a validation error for $description cases',\n ({ expectedParentPath, transformation }) => {\n expect(\n validateResponseTransformation(transformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: '$[0]',\n description: \"must be a string starting with '$.'\",\n }),\n );\n },\n );\n });\n\n test('returns a validation error when an argument index is used', () => {\n const argumentExpression = '$[1].a.b.c.';\n const path = 'd.e.f';\n const transformation = set({}, path, argumentExpression);\n\n expect(validateResponseTransformation(transformation)).toStrictEqual(\n validationErrorWith({\n parentPath: path,\n invalidValue: argumentExpression,\n description: \"must be a string starting with '$.'\",\n }),\n );\n });\n });\n\n describe.each`\n description | transformationValue | expectedValidationMessage\n ${'does not start with $'} | ${'a.b.c'} | ${\"must be a string starting with '$.'\"}\n ${'refers to * in the path'} | ${'$.a.b.*'} | ${'cannot refer to the * operator'}\n `(\n 'returns a validation error when a transformation value segment $description',\n ({ transformationValue, expectedValidationMessage }) => {\n test('simple transformation', () => {\n expect(\n validateResponseTransformation(transformationValue),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: null,\n invalidValue: transformationValue,\n description: expectedValidationMessage,\n }),\n );\n });\n\n test('complex transformation', () => {\n const transformation = { d: { e: { f: transformationValue } } };\n\n expect(\n validateResponseTransformation(transformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: 'd.e.f',\n invalidValue: transformationValue,\n description: expectedValidationMessage,\n }),\n );\n });\n },\n );\n\n describe('special fields', () => {\n describe.each(['_id', '_createdDate', '_updatedDate'])(\n '%s',\n (specialField) => {\n const expectedValidationMessage = `cannot refer to the ${specialField} field`;\n\n test('returns a validation error when a transformation value segment $description', () => {\n const transformation = {\n d: { e: { f: { [specialField]: '$.a.b.c' } } },\n '*': '$[1]',\n };\n\n expect(\n validateResponseTransformation(transformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: 'd.e.f',\n invalidValue: specialField,\n description: expectedValidationMessage,\n }),\n );\n });\n\n describe('simple transformation', () => {\n test(`returns a validation error when a segment refers to the special field ${specialField}`, () => {\n const transformationValue = `$.a.b.${specialField}`;\n\n expect(\n validateResponseTransformation(transformationValue),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: null,\n invalidValue: transformationValue,\n description: expectedValidationMessage,\n }),\n );\n });\n });\n\n test('complex transformation', () => {\n const transformationValue = `$.a.b.${specialField}`;\n const transformation = { d: { e: { f: transformationValue } } };\n\n expect(\n validateResponseTransformation(transformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: 'd.e.f',\n invalidValue: transformationValue,\n description: expectedValidationMessage,\n }),\n );\n });\n },\n );\n });\n });\n\n describe('omit transformation', () => {\n describe('invalid @source', () => {\n const invalidSourceValue = 'a.b.c';\n const invalidSourceTransformation = {\n '@source': invalidSourceValue,\n '@omit': times(2, () => aString()),\n };\n\n test.each`\n description | invalidTransformation | expectedParentPath\n ${'top level'} | ${invalidSourceTransformation} | ${'@source'}\n ${'nested'} | ${{ [parentKey]: invalidSourceTransformation }} | ${`${parentKey}.@source`}\n `(\n 'returns a validation error when the @source value is invalid',\n ({ invalidTransformation, expectedParentPath }) => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: invalidSourceValue,\n description: \"must be a string starting with '$.'\",\n }),\n );\n },\n );\n });\n\n describe('invalid @omit', () => {\n const transformationWithOmitValue = (value) => ({\n '@source': '$.a.b.c',\n '@omit': value,\n });\n\n const nonArray = aString();\n const nonStringArray = times(2, () => aNumber());\n const arrayWithInvalidPaths = ['a.b.c', aString()];\n\n describe.each`\n description | invalidTransformation | expectedParentPath\n ${'top level'} | ${transformationWithOmitValue(nonArray)} | ${'@omit'}\n ${'nested'} | ${{ [parentKey]: transformationWithOmitValue(nonArray) }} | ${`${parentKey}.@omit`}\n `(\n '@omit is not an array',\n ({ description, invalidTransformation, expectedParentPath }) => {\n test(`returns a validation error for invalid ${description} transformation`, () => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: nonArray,\n description: 'must be an array of strings',\n }),\n );\n });\n },\n );\n\n describe.each`\n description | invalidTransformation | expectedParentPath\n ${'top level'} | ${transformationWithOmitValue(nonStringArray)} | ${'@omit'}\n ${'nested'} | ${{ [parentKey]: transformationWithOmitValue(nonStringArray) }} | ${`${parentKey}.@omit`}\n `(\n '@omit is an array of non-strings',\n ({ description, invalidTransformation, expectedParentPath }) => {\n test(`returns a validation error for invalid ${description} transformation`, () => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: nonStringArray,\n description: 'must be an array of strings',\n }),\n );\n });\n },\n );\n\n /* eslint-disable max-len */\n describe.each`\n description | invalidTransformation | expectedParentPath\n ${'top level'} | ${transformationWithOmitValue(arrayWithInvalidPaths)} | ${'@omit'}\n ${'nested'} | ${{ [parentKey]: transformationWithOmitValue(arrayWithInvalidPaths) }} | ${`${parentKey}.@omit`}\n `(\n '@omit is an array of invalid string paths',\n ({ description, invalidTransformation, expectedParentPath }) => {\n /* eslint-enable max-len */\n test(`returns a validation error for invalid ${description} transformation`, () => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue: arrayWithInvalidPaths,\n description: 'must contain non-nested paths only',\n }),\n );\n });\n },\n );\n });\n });\n\n describe('array-item transformation', () => {\n const validValue = '$.d.e.f';\n\n const invalidPathTransformationWith = (invalidPathValue) => ({\n '@path': invalidPathValue,\n '@itemTransformation': validValue,\n });\n\n describe.each`\n invalidValue | description\n ${'$[0].should.fail'} | ${'invalid path value'}\n ${aRandomItemFrom([aBoolean(), aNumber(), anObject()])} | ${'invalid path type'}\n `('$description', ({ invalidValue }) => {\n test.each`\n description | invalidTransformation | expectedParentPath\n ${'top-level'} | ${invalidPathTransformationWith(invalidValue)} | ${'@path'}\n ${'nested'} | ${{ [parentKey]: invalidPathTransformationWith(invalidValue) }} | ${`${parentKey}.@path`}\n `(\n 'returns a validation error when the @path value is invalid for $description transformation',\n ({ invalidTransformation, expectedParentPath }) => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue,\n description: \"must be a string starting with '$.'\",\n }),\n );\n },\n );\n });\n\n describe('invalid @itemTransformation', () => {\n const invalidValue = '$[0].should.fail';\n const invalidPathTransformation = {\n '@path': validValue,\n '@itemTransformation': invalidValue,\n };\n\n test.each`\n description | invalidTransformation | expectedParentPath\n ${'top-level'} | ${invalidPathTransformation} | ${'@itemTransformation'}\n ${'nested'} | ${{ [parentKey]: invalidPathTransformation }} | ${`${parentKey}.@itemTransformation`}\n `(\n 'returns a validation error when the @itemTransformation value is invalid for $description transformation',\n ({ invalidTransformation, expectedParentPath }) => {\n expect(\n validateResponseTransformation(invalidTransformation),\n ).toStrictEqual(\n validationErrorWith({\n parentPath: expectedParentPath,\n invalidValue,\n description: \"must be a string starting with '$.'\",\n }),\n );\n },\n );\n });\n });\n });\n});\n"]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.validation = exports.transformations = exports.preset = exports.namingHints = exports.corvidEntities = void 0;
5
+
6
+ var _corvidEntity = require("./lib/corvid-entity");
7
+
8
+ var _getArgumentCardinality = require("./lib/getArgumentCardinality");
9
+
10
+ exports.getArgumentCardinality = _getArgumentCardinality.getArgumentCardinality;
11
+
12
+ var _helpers = require("./lib/helpers");
13
+
14
+ exports.isSimpleTransformation = _helpers.isSimpleTransformation;
15
+ exports.isArrayIndexString = _helpers.isArrayIndexString;
16
+ exports.isSpreadOperator = _helpers.isSpreadOperator;
17
+ exports.extractIndexAndPath = _helpers.extractIndexAndPath;
18
+ exports.isIdentityResponseTransformation = _helpers.isIdentityResponseTransformation;
19
+ exports.isRootObjectIdentifier = _helpers.isRootObjectIdentifier;
20
+ exports.stripJsonPathRootPrefix = _helpers.stripJsonPathRootPrefix;
21
+ exports.getArgumentIndex = _helpers.getArgumentIndex;
22
+ exports.isMapArrayItemsTransformation = _helpers.isMapArrayItemsTransformation;
23
+ exports.isOmitTransformation = _helpers.isOmitTransformation;
24
+ exports.parseOmitTransformation = _helpers.parseOmitTransformation;
25
+ exports.isJsonPathExpression = _helpers.isJsonPathExpression;
26
+
27
+ var _common = require("./lib/transformations/common");
28
+
29
+ var _customFunctions = require("./lib/transformations/custom-functions");
30
+
31
+ exports.runCustomFunctionCallExpression = _customFunctions.runCustomFunctionCallExpression;
32
+ exports.parseCustomFunctionCall = _customFunctions.parseCustomFunctionCall;
33
+ exports.isFunctionCallExpression = _customFunctions.isFunctionCallExpression;
34
+
35
+ var _create = require("./lib/transformations/preset/create");
36
+
37
+ var _delete = require("./lib/transformations/preset/delete");
38
+
39
+ var _get = require("./lib/transformations/preset/get");
40
+
41
+ var _list = require("./lib/transformations/preset/list");
42
+
43
+ var _query = require("./lib/transformations/preset/query");
44
+
45
+ var _update = require("./lib/transformations/preset/update");
46
+
47
+ var _reduceTransformation = require("./lib/transformations/reduceTransformation");
48
+
49
+ exports.reduceTransformation = _reduceTransformation.reduceTransformation;
50
+
51
+ var _validateRequestTransformation = require("./lib/transformations/validations/validateRequestTransformation");
52
+
53
+ var _validateResponseTransformation = require("./lib/transformations/validations/validateResponseTransformation");
54
+
55
+ const JS_SINGLE_ARG_UNCHANGED = _common.transformations.JS_SINGLE_ARG_UNCHANGED,
56
+ RESPONSE_OBJECT_UNCHANGED = _common.transformations.RESPONSE_OBJECT_UNCHANGED,
57
+ ARRAY_ITEMS_PATH_PROPERTY_NAME = _common.transformations.ARRAY_ITEMS_PATH_PROPERTY_NAME,
58
+ ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME = _common.transformations.ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,
59
+ OMIT_SOURCE_PROPERTY_NAME = _common.transformations.OMIT_SOURCE_PROPERTY_NAME,
60
+ FIELDS_TO_OMIT_PROPERTY_NAME = _common.transformations.FIELDS_TO_OMIT_PROPERTY_NAME;
61
+ const transformations = {
62
+ JS_SINGLE_ARG_UNCHANGED,
63
+ RESPONSE_OBJECT_UNCHANGED,
64
+ ARRAY_ITEMS_PATH_PROPERTY_NAME,
65
+ ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,
66
+ OMIT_SOURCE_PROPERTY_NAME,
67
+ FIELDS_TO_OMIT_PROPERTY_NAME
68
+ };
69
+ exports.transformations = transformations;
70
+
71
+ const transformationBuilder = (buildRequestTransformation, buildResponseTransformation) => ({
72
+ buildRequestTransformation,
73
+ buildResponseTransformation
74
+ });
75
+
76
+ const preset = {
77
+ create: transformationBuilder(_create.buildRequestTransformation, _create.buildResponseTransformation),
78
+ update: transformationBuilder(_update.buildRequestTransformation, _update.buildResponseTransformation),
79
+ delete: transformationBuilder(_delete.buildRequestTransformation, _delete.buildResponseTransformation),
80
+ get: transformationBuilder(_get.buildRequestTransformation, _get.buildResponseTransformation),
81
+ list: transformationBuilder(_list.buildRequestTransformation, _list.buildResponseTransformation),
82
+ query: { ...transformationBuilder(_query.buildRequestTransformation, _query.buildResponseTransformation),
83
+ ITEMS_RESULT_PROPERTY_NAME: _query.ITEMS_RESULT_PROPERTY_NAME,
84
+ PAGING_METADATA_RESULT_PROPERTY_NAME: _query.PAGING_METADATA_RESULT_PROPERTY_NAME
85
+ }
86
+ };
87
+ exports.preset = preset;
88
+ const namingHints = {
89
+ OPTIONS: 'OPTIONS'
90
+ };
91
+ exports.namingHints = namingHints;
92
+ const validation = {
93
+ validateRequestTransformation: _validateRequestTransformation.validateRequestTransformation,
94
+ validateResponseTransformation: _validateResponseTransformation.validateResponseTransformation
95
+ };
96
+ exports.validation = validation;
97
+ const corvidEntities = {
98
+ toCorvidName: _corvidEntity.toCorvidName,
99
+ fromCorvidName: _corvidEntity.fromCorvidName
100
+ };
101
+ exports.corvidEntities = corvidEntities;
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"names":["JS_SINGLE_ARG_UNCHANGED","allTransformations","RESPONSE_OBJECT_UNCHANGED","ARRAY_ITEMS_PATH_PROPERTY_NAME","ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME","OMIT_SOURCE_PROPERTY_NAME","FIELDS_TO_OMIT_PROPERTY_NAME","transformations","transformationBuilder","buildRequestTransformation","buildResponseTransformation","preset","create","buildCreateRequestTransformation","buildCreateResponseTransformation","update","buildUpdateRequestTransformation","buildUpdateResponseTransformation","delete","buildDeleteRequestTransformation","buildDeleteResponseTransformation","get","buildGetRequestTransformation","buildGetResponseTransformation","list","buildListRequestTransformation","buildListResponseTransformation","query","buildQueryRequestTransformation","buildQueryResponseTransformation","ITEMS_RESULT_PROPERTY_NAME","PAGING_METADATA_RESULT_PROPERTY_NAME","namingHints","OPTIONS","validation","validateRequestTransformation","validateResponseTransformation","corvidEntities","toCorvidName","fromCorvidName"],"mappings":";;;;;AAAA;;AACA;;;;AACA;;;;;;;;;;;;;;;AAcA;;AAoBA;;;;;;AAMA;;AAIA;;AAIA;;AAIA;;AAIA;;AAMA;;AAIA;;;;AACA;;AACA;;AApDA,MACEA,uBADF,GAOIC,uBAPJ,CACED,uBADF;AAAA,MAEEE,yBAFF,GAOID,uBAPJ,CAEEC,yBAFF;AAAA,MAGEC,8BAHF,GAOIF,uBAPJ,CAGEE,8BAHF;AAAA,MAIEC,uCAJF,GAOIH,uBAPJ,CAIEG,uCAJF;AAAA,MAKEC,yBALF,GAOIJ,uBAPJ,CAKEI,yBALF;AAAA,MAMEC,4BANF,GAOIL,uBAPJ,CAMEK,4BANF;AASA,MAAMC,eAAe,GAAG;AACtBP,EAAAA,uBADsB;AAEtBE,EAAAA,yBAFsB;AAGtBC,EAAAA,8BAHsB;AAItBC,EAAAA,uCAJsB;AAKtBC,EAAAA,yBALsB;AAMtBC,EAAAA;AANsB,CAAxB;;;AA6CA,MAAME,qBAAqB,GAAG,CAC5BC,0BAD4B,EAE5BC,2BAF4B,MAGxB;AACJD,EAAAA,0BADI;AAEJC,EAAAA;AAFI,CAHwB,CAA9B;;AAQA,MAAMC,MAAM,GAAG;AACbC,EAAAA,MAAM,EAAEJ,qBAAqB,CAC3BK,kCAD2B,EAE3BC,mCAF2B,CADhB;AAKbC,EAAAA,MAAM,EAAEP,qBAAqB,CAC3BQ,kCAD2B,EAE3BC,mCAF2B,CALhB;AASbC,EAAAA,MAAM,EAAEV,qBAAqB,CAC3BW,kCAD2B,EAE3BC,mCAF2B,CAThB;AAabC,EAAAA,GAAG,EAAEb,qBAAqB,CACxBc,+BADwB,EAExBC,gCAFwB,CAbb;AAiBbC,EAAAA,IAAI,EAAEhB,qBAAqB,CACzBiB,gCADyB,EAEzBC,iCAFyB,CAjBd;AAqBbC,EAAAA,KAAK,EAAE,EACL,GAAGnB,qBAAqB,CACtBoB,iCADsB,EAEtBC,kCAFsB,CADnB;AAKLC,IAAAA,0BAA0B,EAA1BA,iCALK;AAMLC,IAAAA,oCAAoC,EAApCA;AANK;AArBM,CAAf;;AA+BA,MAAMC,WAAW,GAAG;AAAEC,EAAAA,OAAO,EAAE;AAAX,CAApB;;AAEA,MAAMC,UAAU,GAAG;AACjBC,EAAAA,6BAA6B,EAA7BA,4DADiB;AAEjBC,EAAAA,8BAA8B,EAA9BA;AAFiB,CAAnB;;AAKA,MAAMC,cAAc,GAAG;AACrBC,EAAAA,YAAY,EAAZA,0BADqB;AAErBC,EAAAA,cAAc,EAAdA;AAFqB,CAAvB","sourcesContent":["import { toCorvidName, fromCorvidName } from './lib/corvid-entity';\nimport { getArgumentCardinality } from './lib/getArgumentCardinality';\nimport {\n isSimpleTransformation,\n isArrayIndexString,\n isSpreadOperator,\n extractIndexAndPath,\n isIdentityResponseTransformation,\n isRootObjectIdentifier,\n stripJsonPathRootPrefix,\n getArgumentIndex,\n isMapArrayItemsTransformation,\n isOmitTransformation,\n parseOmitTransformation,\n isJsonPathExpression,\n} from './lib/helpers';\nimport { transformations as allTransformations } from './lib/transformations/common';\n\nconst {\n JS_SINGLE_ARG_UNCHANGED,\n RESPONSE_OBJECT_UNCHANGED,\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n OMIT_SOURCE_PROPERTY_NAME,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n} = allTransformations;\n\nconst transformations = {\n JS_SINGLE_ARG_UNCHANGED,\n RESPONSE_OBJECT_UNCHANGED,\n ARRAY_ITEMS_PATH_PROPERTY_NAME,\n ARRAY_ITEM_TRANSFORMATION_PROPERTY_NAME,\n OMIT_SOURCE_PROPERTY_NAME,\n FIELDS_TO_OMIT_PROPERTY_NAME,\n};\n\nimport {\n runCustomFunctionCallExpression,\n parseCustomFunctionCall,\n isFunctionCallExpression,\n} from './lib/transformations/custom-functions';\n\nimport {\n buildRequestTransformation as buildCreateRequestTransformation,\n buildResponseTransformation as buildCreateResponseTransformation,\n} from './lib/transformations/preset/create';\nimport {\n buildRequestTransformation as buildDeleteRequestTransformation,\n buildResponseTransformation as buildDeleteResponseTransformation,\n} from './lib/transformations/preset/delete';\nimport {\n buildRequestTransformation as buildGetRequestTransformation,\n buildResponseTransformation as buildGetResponseTransformation,\n} from './lib/transformations/preset/get';\nimport {\n buildRequestTransformation as buildListRequestTransformation,\n buildResponseTransformation as buildListResponseTransformation,\n} from './lib/transformations/preset/list';\nimport {\n buildRequestTransformation as buildQueryRequestTransformation,\n buildResponseTransformation as buildQueryResponseTransformation,\n ITEMS_RESULT_PROPERTY_NAME,\n PAGING_METADATA_RESULT_PROPERTY_NAME,\n} from './lib/transformations/preset/query';\nimport {\n buildRequestTransformation as buildUpdateRequestTransformation,\n buildResponseTransformation as buildUpdateResponseTransformation,\n} from './lib/transformations/preset/update';\nimport { reduceTransformation } from './lib/transformations/reduceTransformation';\nimport { validateRequestTransformation } from './lib/transformations/validations/validateRequestTransformation';\nimport { validateResponseTransformation } from './lib/transformations/validations/validateResponseTransformation';\n\nconst transformationBuilder = (\n buildRequestTransformation,\n buildResponseTransformation,\n) => ({\n buildRequestTransformation,\n buildResponseTransformation,\n});\n\nconst preset = {\n create: transformationBuilder(\n buildCreateRequestTransformation,\n buildCreateResponseTransformation,\n ),\n update: transformationBuilder(\n buildUpdateRequestTransformation,\n buildUpdateResponseTransformation,\n ),\n delete: transformationBuilder(\n buildDeleteRequestTransformation,\n buildDeleteResponseTransformation,\n ),\n get: transformationBuilder(\n buildGetRequestTransformation,\n buildGetResponseTransformation,\n ),\n list: transformationBuilder(\n buildListRequestTransformation,\n buildListResponseTransformation,\n ),\n query: {\n ...transformationBuilder(\n buildQueryRequestTransformation,\n buildQueryResponseTransformation,\n ),\n ITEMS_RESULT_PROPERTY_NAME,\n PAGING_METADATA_RESULT_PROPERTY_NAME,\n },\n};\n\nconst namingHints = { OPTIONS: 'OPTIONS' };\n\nconst validation = {\n validateRequestTransformation,\n validateResponseTransformation,\n};\n\nconst corvidEntities = {\n toCorvidName,\n fromCorvidName,\n};\n\nexport {\n transformations,\n preset,\n namingHints,\n getArgumentCardinality,\n isSimpleTransformation,\n isArrayIndexString,\n isSpreadOperator,\n isMapArrayItemsTransformation,\n isOmitTransformation,\n parseOmitTransformation,\n isFunctionCallExpression,\n parseCustomFunctionCall,\n extractIndexAndPath,\n isIdentityResponseTransformation,\n isRootObjectIdentifier,\n stripJsonPathRootPrefix,\n getArgumentIndex,\n isJsonPathExpression,\n validation,\n corvidEntities,\n runCustomFunctionCallExpression,\n reduceTransformation,\n};\n"]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.toCorvidName = exports.isReservedCorvidFieldName = exports.isReservedCommonFieldName = exports.fromCorvidName = exports.TO_CORVID_ENTITY_RENAMED_KEYS = exports.FROM_CORVID_ENTITY_RENAMED_KEYS = void 0;
5
+
6
+ var _lodash = require("lodash");
7
+
8
+ const TO_CORVID_ENTITY_RENAMED_KEYS = {
9
+ id: '_id',
10
+ createdDate: '_createdDate',
11
+ updatedDate: '_updatedDate'
12
+ };
13
+ exports.TO_CORVID_ENTITY_RENAMED_KEYS = TO_CORVID_ENTITY_RENAMED_KEYS;
14
+ const FROM_CORVID_ENTITY_RENAMED_KEYS = (0, _lodash.invert)(TO_CORVID_ENTITY_RENAMED_KEYS);
15
+ exports.FROM_CORVID_ENTITY_RENAMED_KEYS = FROM_CORVID_ENTITY_RENAMED_KEYS;
16
+
17
+ const isReservedCorvidFieldName = name => name in FROM_CORVID_ENTITY_RENAMED_KEYS;
18
+
19
+ exports.isReservedCorvidFieldName = isReservedCorvidFieldName;
20
+
21
+ const isReservedCommonFieldName = name => name in TO_CORVID_ENTITY_RENAMED_KEYS;
22
+
23
+ exports.isReservedCommonFieldName = isReservedCommonFieldName;
24
+
25
+ const toCorvidName = name => TO_CORVID_ENTITY_RENAMED_KEYS[name] || name;
26
+
27
+ exports.toCorvidName = toCorvidName;
28
+
29
+ const fromCorvidName = name => FROM_CORVID_ENTITY_RENAMED_KEYS[name] || name;
30
+
31
+ exports.fromCorvidName = fromCorvidName;
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/corvid-entity/index.ts"],"names":["TO_CORVID_ENTITY_RENAMED_KEYS","id","createdDate","updatedDate","FROM_CORVID_ENTITY_RENAMED_KEYS","isReservedCorvidFieldName","name","isReservedCommonFieldName","toCorvidName","fromCorvidName"],"mappings":";;;;;AAAA;;AAEA,MAAMA,6BAA6B,GAAG;AACpCC,EAAAA,EAAE,EAAE,KADgC;AAEpCC,EAAAA,WAAW,EAAE,cAFuB;AAGpCC,EAAAA,WAAW,EAAE;AAHuB,CAAtC;;AAKA,MAAMC,+BAA+B,GAAG,oBAAOJ,6BAAP,CAAxC;;;AAEA,MAAMK,yBAAyB,GAAIC,IAAD,IAChCA,IAAI,IAAIF,+BADV;;;;AAGA,MAAMG,yBAAyB,GAAID,IAAD,IAChCA,IAAI,IAAIN,6BADV;;;;AAGA,MAAMQ,YAAY,GAAIF,IAAD,IAAUN,6BAA6B,CAACM,IAAD,CAA7B,IAAuCA,IAAtE;;;;AAEA,MAAMG,cAAc,GAAIH,IAAD,IAAUF,+BAA+B,CAACE,IAAD,CAA/B,IAAyCA,IAA1E","sourcesContent":["import { invert } from 'lodash';\n\nconst TO_CORVID_ENTITY_RENAMED_KEYS = {\n id: '_id',\n createdDate: '_createdDate',\n updatedDate: '_updatedDate',\n};\nconst FROM_CORVID_ENTITY_RENAMED_KEYS = invert(TO_CORVID_ENTITY_RENAMED_KEYS);\n\nconst isReservedCorvidFieldName = (name) =>\n name in FROM_CORVID_ENTITY_RENAMED_KEYS;\n\nconst isReservedCommonFieldName = (name) =>\n name in TO_CORVID_ENTITY_RENAMED_KEYS;\n\nconst toCorvidName = (name) => TO_CORVID_ENTITY_RENAMED_KEYS[name] || name;\n\nconst fromCorvidName = (name) => FROM_CORVID_ENTITY_RENAMED_KEYS[name] || name;\n\nexport {\n TO_CORVID_ENTITY_RENAMED_KEYS,\n FROM_CORVID_ENTITY_RENAMED_KEYS,\n toCorvidName,\n fromCorvidName,\n isReservedCorvidFieldName,\n isReservedCommonFieldName,\n};\n"]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.getArgumentCardinality = void 0;
5
+
6
+ var _lodash = require("lodash");
7
+
8
+ const extractArgumentFromString = (str, seen = new Set()) => {
9
+ // We expect a single argument in a valid string-transformation at most, e.g. $[1].someField
10
+ const matches = str.match(/(\$\[\d+\])/);
11
+
12
+ if (matches) {
13
+ seen.add(matches.pop());
14
+ }
15
+
16
+ return seen;
17
+ };
18
+
19
+ const extractArgumensFromObject = (object, seen = new Set()) => Object.keys(object).reduce((acc, key) => {
20
+ const value = object[key];
21
+
22
+ if ((0, _lodash.isPlainObject)(value) || (0, _lodash.isArray)(value)) {
23
+ extractArgumensFromObject(value, seen);
24
+ } else if (typeof value === 'string') {
25
+ extractArgumentFromString(value, seen);
26
+ }
27
+
28
+ return acc;
29
+ }, seen);
30
+
31
+ const getArgumentCardinality = transformation => typeof transformation === 'string' ? extractArgumentFromString(transformation).size : extractArgumensFromObject(transformation).size;
32
+
33
+ exports.getArgumentCardinality = getArgumentCardinality;
34
+ //# sourceMappingURL=getArgumentCardinality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/getArgumentCardinality.ts"],"names":["extractArgumentFromString","str","seen","Set","matches","match","add","pop","extractArgumensFromObject","object","Object","keys","reduce","acc","key","value","getArgumentCardinality","transformation","size"],"mappings":";;;;;AAAA;;AAEA,MAAMA,yBAAyB,GAAG,CAACC,GAAD,EAAMC,IAAI,GAAG,IAAIC,GAAJ,EAAb,KAA2B;AAC3D;AACA,QAAMC,OAAO,GAAGH,GAAG,CAACI,KAAJ,CAAU,aAAV,CAAhB;;AAEA,MAAID,OAAJ,EAAa;AACXF,IAAAA,IAAI,CAACI,GAAL,CAASF,OAAO,CAACG,GAAR,EAAT;AACD;;AAED,SAAOL,IAAP;AACD,CATD;;AAWA,MAAMM,yBAAyB,GAAG,CAACC,MAAD,EAASP,IAAI,GAAG,IAAIC,GAAJ,EAAhB,KAChCO,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBG,MAApB,CAA2B,CAACC,GAAD,EAAMC,GAAN,KAAc;AACvC,QAAMC,KAAK,GAAGN,MAAM,CAACK,GAAD,CAApB;;AAEA,MAAI,2BAAcC,KAAd,KAAwB,qBAAQA,KAAR,CAA5B,EAA4C;AAC1CP,IAAAA,yBAAyB,CAACO,KAAD,EAAQb,IAAR,CAAzB;AACD,GAFD,MAEO,IAAI,OAAOa,KAAP,KAAiB,QAArB,EAA+B;AACpCf,IAAAA,yBAAyB,CAACe,KAAD,EAAQb,IAAR,CAAzB;AACD;;AAED,SAAOW,GAAP;AACD,CAVD,EAUGX,IAVH,CADF;;AAaA,MAAMc,sBAAsB,GAAIC,cAAD,IAC7B,OAAOA,cAAP,KAA0B,QAA1B,GACIjB,yBAAyB,CAACiB,cAAD,CAAzB,CAA0CC,IAD9C,GAEIV,yBAAyB,CAACS,cAAD,CAAzB,CAA0CC,IAHhD","sourcesContent":["import { isPlainObject, isArray } from 'lodash';\n\nconst extractArgumentFromString = (str, seen = new Set()) => {\n // We expect a single argument in a valid string-transformation at most, e.g. $[1].someField\n const matches = str.match(/(\\$\\[\\d+\\])/);\n\n if (matches) {\n seen.add(matches.pop());\n }\n\n return seen;\n};\n\nconst extractArgumensFromObject = (object, seen = new Set()) =>\n Object.keys(object).reduce((acc, key) => {\n const value = object[key];\n\n if (isPlainObject(value) || isArray(value)) {\n extractArgumensFromObject(value, seen);\n } else if (typeof value === 'string') {\n extractArgumentFromString(value, seen);\n }\n\n return acc;\n }, seen);\n\nconst getArgumentCardinality = (transformation) =>\n typeof transformation === 'string'\n ? extractArgumentFromString(transformation).size\n : extractArgumensFromObject(transformation).size;\n\nexport { getArgumentCardinality };\n"]}