1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var lodash_1 = require("lodash");
|
4 | var lodash_2 = require("lodash");
|
5 | var lodash_3 = require("lodash");
|
6 | var lodash_4 = require("lodash");
|
7 | var lodash_5 = require("lodash");
|
8 | var lodash_6 = require("lodash");
|
9 | var lodash_7 = require("lodash");
|
10 | var lodash_8 = require("lodash");
|
11 | var lodash_9 = require("lodash");
|
12 | var lodash_10 = require("lodash");
|
13 | var lodash_11 = require("lodash");
|
14 | var lodash_12 = require("lodash");
|
15 | var lodash_13 = require("lodash");
|
16 | var lodash_14 = require("lodash");
|
17 | var lodash_15 = require("lodash");
|
18 | var lodash_16 = require("lodash");
|
19 | var lodash_17 = require("lodash");
|
20 | var lodash_18 = require("lodash");
|
21 | var lodash_19 = require("lodash");
|
22 | var lodash_20 = require("lodash");
|
23 | var lodash_21 = require("lodash");
|
24 | var lodash_22 = require("lodash");
|
25 | var lodash_23 = require("lodash");
|
26 | var lodash_24 = require("lodash");
|
27 | var lodash_25 = require("lodash");
|
28 | var lodash_26 = require("lodash");
|
29 | var lodash_27 = require("lodash");
|
30 | var lodash_28 = require("lodash");
|
31 | var lodash_29 = require("lodash");
|
32 | var lodash_30 = require("lodash");
|
33 | var lodash_31 = require("lodash");
|
34 | var lodash_32 = require("lodash");
|
35 | var lodash_33 = require("lodash");
|
36 | var lodash_34 = require("lodash");
|
37 | var lodash_35 = require("lodash");
|
38 | var lodash_36 = require("lodash");
|
39 | var lodash_37 = require("lodash");
|
40 | var lodash_38 = require("lodash");
|
41 | var lodash_39 = require("lodash");
|
42 | var lodash_40 = require("lodash");
|
43 | var lodash_41 = require("lodash");
|
44 | var lodash_42 = require("lodash");
|
45 | var lodash_43 = require("lodash");
|
46 | var lodash_44 = require("lodash");
|
47 | function getType(v) {
|
48 | return Object.prototype.toString
|
49 | .call(v)
|
50 | .match(/\[object (.+)\]/)[1]
|
51 | .toLowerCase();
|
52 | }
|
53 | var transformations = {
|
54 | array: {
|
55 | each: function (array, arg) {
|
56 | return lodash_10.map(array, function (item) { return applyTransformations(item, arg); });
|
57 | },
|
58 | map: lodash_10.map,
|
59 | keyBy: lodash_11.keyBy,
|
60 | chunk: lodash_12.chunk,
|
61 | drop: lodash_13.drop,
|
62 | dropRight: lodash_14.dropRight,
|
63 | take: lodash_15.take,
|
64 | takeRight: lodash_16.takeRight,
|
65 | flattenDepth: lodash_17.flattenDepth,
|
66 | fromPairs: lodash_18.fromPairs,
|
67 | nth: lodash_19.nth,
|
68 | reverse: lodash_20.reverse,
|
69 | uniq: lodash_21.uniq,
|
70 | uniqBy: lodash_22.uniqBy,
|
71 | countBy: lodash_23.countBy,
|
72 | filter: lodash_24.filter,
|
73 | reject: lodash_25.reject,
|
74 | filterIf: function (array, arg) {
|
75 | return lodash_24.filter(array, function (item) { return applyTransformations(item, arg); });
|
76 | },
|
77 | rejectIf: function (array, arg) {
|
78 | return lodash_25.reject(array, function (item) { return applyTransformations(item, arg); });
|
79 | },
|
80 | groupBy: lodash_26.groupBy,
|
81 | sortBy: lodash_27.sortBy,
|
82 | minBy: lodash_28.minBy,
|
83 | maxBy: lodash_29.maxBy,
|
84 | meanBy: lodash_30.meanBy,
|
85 | sumBy: lodash_31.sumBy,
|
86 | join: lodash_32.join,
|
87 | },
|
88 | object: {
|
89 | get: lodash_33.get,
|
90 | assign: function (src, args) {
|
91 | return (Array.isArray(args) ? args : [args]).reduce(function (obj, path) {
|
92 | var source = lodash_33.get(obj, path);
|
93 | if (source && typeof source === 'object') {
|
94 | return lodash_44.omit(lodash_36.assign(obj, lodash_33.get(obj, path)), path);
|
95 | }
|
96 | else {
|
97 | return obj;
|
98 | }
|
99 | }, src);
|
100 | },
|
101 | mapValues: lodash_37.mapValues,
|
102 | at: lodash_38.at,
|
103 | toPairs: lodash_39.toPairs,
|
104 | invert: lodash_40.invert,
|
105 | invertBy: lodash_41.invertBy,
|
106 | keys: lodash_42.keys,
|
107 | values: lodash_43.values,
|
108 | },
|
109 | number: {
|
110 | lt: lodash_5.lt,
|
111 | lte: lodash_6.lte,
|
112 | gt: lodash_7.gt,
|
113 | gte: lodash_8.gte,
|
114 | eq: lodash_9.eq,
|
115 | },
|
116 | string: {
|
117 | startsWith: lodash_3.startsWith,
|
118 | endsWith: lodash_4.endsWith,
|
119 | match: function (src, args) {
|
120 | return src.match(new RegExp(args.match, args.flags));
|
121 | },
|
122 | isMatch: function (src, args) {
|
123 | return new RegExp(args.match, args.flags).test(src);
|
124 | },
|
125 | toJSON: function (str) {
|
126 | return JSON.parse(str);
|
127 | },
|
128 | },
|
129 | '*': {
|
130 | stringify: function (src) {
|
131 | return JSON.stringify(src);
|
132 | },
|
133 | trim: function (src) {
|
134 | if (typeof src === 'string') {
|
135 | return src.trim();
|
136 | }
|
137 | else {
|
138 | if (typeof src === 'function') {
|
139 | return function () {
|
140 | var args = [];
|
141 | for (var _i = 0; _i < arguments.length; _i++) {
|
142 | args[_i] = arguments[_i];
|
143 | }
|
144 | var result = src.apply(void 0, args);
|
145 | if (typeof result === 'string') {
|
146 | return result.trim();
|
147 | }
|
148 | else {
|
149 | return result;
|
150 | }
|
151 | };
|
152 | }
|
153 | else {
|
154 | return src;
|
155 | }
|
156 | }
|
157 | },
|
158 | convert: function (obj, type) {
|
159 | if (obj !== null || obj !== undefined) {
|
160 | switch (type) {
|
161 | case 'toNumber':
|
162 | return parseFloat(obj);
|
163 | case 'toString':
|
164 | return obj.toString();
|
165 | default:
|
166 | }
|
167 | }
|
168 | else {
|
169 | switch (type) {
|
170 | case 'toNumber':
|
171 | return NaN;
|
172 | case 'toString':
|
173 | return '';
|
174 | default:
|
175 | }
|
176 | }
|
177 | },
|
178 | dive: function (src, args) { return function (obj, key) {
|
179 | lodash_35.unset(obj, key);
|
180 | lodash_34.set(obj, args, src);
|
181 | }; },
|
182 | },
|
183 | };
|
184 | var opToExpectedType = (function (trans) {
|
185 | var result = {};
|
186 | for (var type in trans) {
|
187 | if (trans.hasOwnProperty(type)) {
|
188 | var names = trans[type];
|
189 | for (var name in names) {
|
190 | if (names.hasOwnProperty(name)) {
|
191 | result[name] = type;
|
192 | }
|
193 | }
|
194 | }
|
195 | }
|
196 | return result;
|
197 | })(transformations);
|
198 | function applyTransformations(object, args) {
|
199 | if (!args || object === null || object === undefined) {
|
200 | return object;
|
201 | }
|
202 | for (var op in args) {
|
203 | if (args.hasOwnProperty(op)) {
|
204 | var arg = args[op];
|
205 | if (op === 'and') {
|
206 | object = lodash_1.every(arg, function (predicateArgs) {
|
207 | return applyTransformations(object, predicateArgs);
|
208 | });
|
209 | continue;
|
210 | }
|
211 | if (op === 'or') {
|
212 | object = lodash_2.some(arg, function (predicateArgs) {
|
213 | return applyTransformations(object, predicateArgs);
|
214 | });
|
215 | continue;
|
216 | }
|
217 | var expectedType = opToExpectedType[op];
|
218 | if (!(object === undefined || object === null)) {
|
219 | var type = getType(object);
|
220 | if (expectedType !== '*' &&
|
221 | expectedType !== type &&
|
222 | type !== undefined) {
|
223 | throw Error("\"" + op + "\" transformation expect \"" + expectedType + "\" but got \"" + type + "\"");
|
224 | }
|
225 | }
|
226 | object = transformations[expectedType][op](object, arg);
|
227 | }
|
228 | }
|
229 | return object === undefined ? null : object;
|
230 | }
|
231 | exports.applyTransformations = applyTransformations;
|
232 |
|
\ | No newline at end of file |