UNPKG

7.87 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var lodash_1 = require("lodash");
4var lodash_2 = require("lodash");
5var lodash_3 = require("lodash");
6var lodash_4 = require("lodash");
7var lodash_5 = require("lodash");
8var lodash_6 = require("lodash");
9var lodash_7 = require("lodash");
10var lodash_8 = require("lodash");
11var lodash_9 = require("lodash");
12var lodash_10 = require("lodash");
13var lodash_11 = require("lodash");
14var lodash_12 = require("lodash");
15var lodash_13 = require("lodash");
16var lodash_14 = require("lodash");
17var lodash_15 = require("lodash");
18var lodash_16 = require("lodash");
19var lodash_17 = require("lodash");
20var lodash_18 = require("lodash");
21var lodash_19 = require("lodash");
22var lodash_20 = require("lodash");
23var lodash_21 = require("lodash");
24var lodash_22 = require("lodash");
25var lodash_23 = require("lodash");
26var lodash_24 = require("lodash");
27var lodash_25 = require("lodash");
28var lodash_26 = require("lodash");
29var lodash_27 = require("lodash");
30var lodash_28 = require("lodash");
31var lodash_29 = require("lodash");
32var lodash_30 = require("lodash");
33var lodash_31 = require("lodash");
34var lodash_32 = require("lodash");
35var lodash_33 = require("lodash");
36var lodash_34 = require("lodash");
37var lodash_35 = require("lodash");
38var lodash_36 = require("lodash");
39var lodash_37 = require("lodash");
40var lodash_38 = require("lodash");
41var lodash_39 = require("lodash");
42var lodash_40 = require("lodash");
43var lodash_41 = require("lodash");
44var lodash_42 = require("lodash");
45var lodash_43 = require("lodash");
46var lodash_44 = require("lodash");
47function getType(v) {
48 return Object.prototype.toString
49 .call(v)
50 .match(/\[object (.+)\]/)[1]
51 .toLowerCase();
52}
53var 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};
184var 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);
198function 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}
231exports.applyTransformations = applyTransformations;
232//# sourceMappingURL=transformations.js.map
\No newline at end of file