1 |
|
2 | if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
|
3 | if (! _$jscoverage['manikin-mongodb.js']) {
|
4 | _$jscoverage['manikin-mongodb.js'] = [];
|
5 | _$jscoverage['manikin-mongodb.js'][2] = 0;
|
6 | _$jscoverage['manikin-mongodb.js'][3] = 0;
|
7 | _$jscoverage['manikin-mongodb.js'][5] = 0;
|
8 | _$jscoverage['manikin-mongodb.js'][8] = 0;
|
9 | _$jscoverage['manikin-mongodb.js'][10] = 0;
|
10 | _$jscoverage['manikin-mongodb.js'][12] = 0;
|
11 | _$jscoverage['manikin-mongodb.js'][14] = 0;
|
12 | _$jscoverage['manikin-mongodb.js'][15] = 0;
|
13 | _$jscoverage['manikin-mongodb.js'][16] = 0;
|
14 | _$jscoverage['manikin-mongodb.js'][17] = 0;
|
15 | _$jscoverage['manikin-mongodb.js'][18] = 0;
|
16 | _$jscoverage['manikin-mongodb.js'][20] = 0;
|
17 | _$jscoverage['manikin-mongodb.js'][21] = 0;
|
18 | _$jscoverage['manikin-mongodb.js'][24] = 0;
|
19 | _$jscoverage['manikin-mongodb.js'][25] = 0;
|
20 | _$jscoverage['manikin-mongodb.js'][26] = 0;
|
21 | _$jscoverage['manikin-mongodb.js'][28] = 0;
|
22 | _$jscoverage['manikin-mongodb.js'][29] = 0;
|
23 | _$jscoverage['manikin-mongodb.js'][30] = 0;
|
24 | _$jscoverage['manikin-mongodb.js'][33] = 0;
|
25 | _$jscoverage['manikin-mongodb.js'][34] = 0;
|
26 | _$jscoverage['manikin-mongodb.js'][35] = 0;
|
27 | _$jscoverage['manikin-mongodb.js'][37] = 0;
|
28 | _$jscoverage['manikin-mongodb.js'][41] = 0;
|
29 | _$jscoverage['manikin-mongodb.js'][42] = 0;
|
30 | _$jscoverage['manikin-mongodb.js'][45] = 0;
|
31 | _$jscoverage['manikin-mongodb.js'][46] = 0;
|
32 | _$jscoverage['manikin-mongodb.js'][47] = 0;
|
33 | _$jscoverage['manikin-mongodb.js'][48] = 0;
|
34 | _$jscoverage['manikin-mongodb.js'][50] = 0;
|
35 | _$jscoverage['manikin-mongodb.js'][55] = 0;
|
36 | _$jscoverage['manikin-mongodb.js'][56] = 0;
|
37 | _$jscoverage['manikin-mongodb.js'][57] = 0;
|
38 | _$jscoverage['manikin-mongodb.js'][58] = 0;
|
39 | _$jscoverage['manikin-mongodb.js'][59] = 0;
|
40 | _$jscoverage['manikin-mongodb.js'][60] = 0;
|
41 | _$jscoverage['manikin-mongodb.js'][62] = 0;
|
42 | _$jscoverage['manikin-mongodb.js'][67] = 0;
|
43 | _$jscoverage['manikin-mongodb.js'][68] = 0;
|
44 | _$jscoverage['manikin-mongodb.js'][69] = 0;
|
45 | _$jscoverage['manikin-mongodb.js'][70] = 0;
|
46 | _$jscoverage['manikin-mongodb.js'][72] = 0;
|
47 | _$jscoverage['manikin-mongodb.js'][73] = 0;
|
48 | _$jscoverage['manikin-mongodb.js'][75] = 0;
|
49 | _$jscoverage['manikin-mongodb.js'][76] = 0;
|
50 | _$jscoverage['manikin-mongodb.js'][77] = 0;
|
51 | _$jscoverage['manikin-mongodb.js'][78] = 0;
|
52 | _$jscoverage['manikin-mongodb.js'][80] = 0;
|
53 | _$jscoverage['manikin-mongodb.js'][82] = 0;
|
54 | _$jscoverage['manikin-mongodb.js'][85] = 0;
|
55 | _$jscoverage['manikin-mongodb.js'][88] = 0;
|
56 | _$jscoverage['manikin-mongodb.js'][89] = 0;
|
57 | _$jscoverage['manikin-mongodb.js'][90] = 0;
|
58 | _$jscoverage['manikin-mongodb.js'][91] = 0;
|
59 | _$jscoverage['manikin-mongodb.js'][92] = 0;
|
60 | _$jscoverage['manikin-mongodb.js'][95] = 0;
|
61 | _$jscoverage['manikin-mongodb.js'][96] = 0;
|
62 | _$jscoverage['manikin-mongodb.js'][97] = 0;
|
63 | _$jscoverage['manikin-mongodb.js'][98] = 0;
|
64 | _$jscoverage['manikin-mongodb.js'][99] = 0;
|
65 | _$jscoverage['manikin-mongodb.js'][100] = 0;
|
66 | _$jscoverage['manikin-mongodb.js'][101] = 0;
|
67 | _$jscoverage['manikin-mongodb.js'][102] = 0;
|
68 | _$jscoverage['manikin-mongodb.js'][103] = 0;
|
69 | _$jscoverage['manikin-mongodb.js'][104] = 0;
|
70 | _$jscoverage['manikin-mongodb.js'][105] = 0;
|
71 | _$jscoverage['manikin-mongodb.js'][106] = 0;
|
72 | _$jscoverage['manikin-mongodb.js'][109] = 0;
|
73 | _$jscoverage['manikin-mongodb.js'][110] = 0;
|
74 | _$jscoverage['manikin-mongodb.js'][112] = 0;
|
75 | _$jscoverage['manikin-mongodb.js'][113] = 0;
|
76 | _$jscoverage['manikin-mongodb.js'][115] = 0;
|
77 | _$jscoverage['manikin-mongodb.js'][116] = 0;
|
78 | _$jscoverage['manikin-mongodb.js'][117] = 0;
|
79 | _$jscoverage['manikin-mongodb.js'][118] = 0;
|
80 | _$jscoverage['manikin-mongodb.js'][119] = 0;
|
81 | _$jscoverage['manikin-mongodb.js'][120] = 0;
|
82 | _$jscoverage['manikin-mongodb.js'][121] = 0;
|
83 | _$jscoverage['manikin-mongodb.js'][123] = 0;
|
84 | _$jscoverage['manikin-mongodb.js'][129] = 0;
|
85 | _$jscoverage['manikin-mongodb.js'][130] = 0;
|
86 | _$jscoverage['manikin-mongodb.js'][132] = 0;
|
87 | _$jscoverage['manikin-mongodb.js'][133] = 0;
|
88 | _$jscoverage['manikin-mongodb.js'][136] = 0;
|
89 | _$jscoverage['manikin-mongodb.js'][137] = 0;
|
90 | _$jscoverage['manikin-mongodb.js'][138] = 0;
|
91 | _$jscoverage['manikin-mongodb.js'][139] = 0;
|
92 | _$jscoverage['manikin-mongodb.js'][140] = 0;
|
93 | _$jscoverage['manikin-mongodb.js'][143] = 0;
|
94 | _$jscoverage['manikin-mongodb.js'][149] = 0;
|
95 | _$jscoverage['manikin-mongodb.js'][150] = 0;
|
96 | _$jscoverage['manikin-mongodb.js'][151] = 0;
|
97 | _$jscoverage['manikin-mongodb.js'][152] = 0;
|
98 | _$jscoverage['manikin-mongodb.js'][153] = 0;
|
99 | _$jscoverage['manikin-mongodb.js'][155] = 0;
|
100 | _$jscoverage['manikin-mongodb.js'][156] = 0;
|
101 | _$jscoverage['manikin-mongodb.js'][157] = 0;
|
102 | _$jscoverage['manikin-mongodb.js'][159] = 0;
|
103 | _$jscoverage['manikin-mongodb.js'][160] = 0;
|
104 | _$jscoverage['manikin-mongodb.js'][161] = 0;
|
105 | _$jscoverage['manikin-mongodb.js'][162] = 0;
|
106 | _$jscoverage['manikin-mongodb.js'][163] = 0;
|
107 | _$jscoverage['manikin-mongodb.js'][164] = 0;
|
108 | _$jscoverage['manikin-mongodb.js'][165] = 0;
|
109 | _$jscoverage['manikin-mongodb.js'][169] = 0;
|
110 | _$jscoverage['manikin-mongodb.js'][170] = 0;
|
111 | _$jscoverage['manikin-mongodb.js'][171] = 0;
|
112 | _$jscoverage['manikin-mongodb.js'][173] = 0;
|
113 | _$jscoverage['manikin-mongodb.js'][174] = 0;
|
114 | _$jscoverage['manikin-mongodb.js'][175] = 0;
|
115 | _$jscoverage['manikin-mongodb.js'][176] = 0;
|
116 | _$jscoverage['manikin-mongodb.js'][177] = 0;
|
117 | _$jscoverage['manikin-mongodb.js'][183] = 0;
|
118 | _$jscoverage['manikin-mongodb.js'][184] = 0;
|
119 | _$jscoverage['manikin-mongodb.js'][185] = 0;
|
120 | _$jscoverage['manikin-mongodb.js'][186] = 0;
|
121 | _$jscoverage['manikin-mongodb.js'][187] = 0;
|
122 | _$jscoverage['manikin-mongodb.js'][188] = 0;
|
123 | _$jscoverage['manikin-mongodb.js'][189] = 0;
|
124 | _$jscoverage['manikin-mongodb.js'][191] = 0;
|
125 | _$jscoverage['manikin-mongodb.js'][197] = 0;
|
126 | _$jscoverage['manikin-mongodb.js'][198] = 0;
|
127 | _$jscoverage['manikin-mongodb.js'][199] = 0;
|
128 | _$jscoverage['manikin-mongodb.js'][200] = 0;
|
129 | _$jscoverage['manikin-mongodb.js'][201] = 0;
|
130 | _$jscoverage['manikin-mongodb.js'][202] = 0;
|
131 | _$jscoverage['manikin-mongodb.js'][203] = 0;
|
132 | _$jscoverage['manikin-mongodb.js'][208] = 0;
|
133 | _$jscoverage['manikin-mongodb.js'][209] = 0;
|
134 | _$jscoverage['manikin-mongodb.js'][210] = 0;
|
135 | _$jscoverage['manikin-mongodb.js'][211] = 0;
|
136 | _$jscoverage['manikin-mongodb.js'][214] = 0;
|
137 | _$jscoverage['manikin-mongodb.js'][215] = 0;
|
138 | _$jscoverage['manikin-mongodb.js'][216] = 0;
|
139 | _$jscoverage['manikin-mongodb.js'][217] = 0;
|
140 | _$jscoverage['manikin-mongodb.js'][218] = 0;
|
141 | _$jscoverage['manikin-mongodb.js'][221] = 0;
|
142 | _$jscoverage['manikin-mongodb.js'][222] = 0;
|
143 | _$jscoverage['manikin-mongodb.js'][223] = 0;
|
144 | _$jscoverage['manikin-mongodb.js'][226] = 0;
|
145 | _$jscoverage['manikin-mongodb.js'][227] = 0;
|
146 | _$jscoverage['manikin-mongodb.js'][230] = 0;
|
147 | _$jscoverage['manikin-mongodb.js'][231] = 0;
|
148 | _$jscoverage['manikin-mongodb.js'][234] = 0;
|
149 | _$jscoverage['manikin-mongodb.js'][235] = 0;
|
150 | _$jscoverage['manikin-mongodb.js'][238] = 0;
|
151 | _$jscoverage['manikin-mongodb.js'][239] = 0;
|
152 | _$jscoverage['manikin-mongodb.js'][243] = 0;
|
153 | _$jscoverage['manikin-mongodb.js'][244] = 0;
|
154 | _$jscoverage['manikin-mongodb.js'][251] = 0;
|
155 | _$jscoverage['manikin-mongodb.js'][261] = 0;
|
156 | _$jscoverage['manikin-mongodb.js'][262] = 0;
|
157 | _$jscoverage['manikin-mongodb.js'][263] = 0;
|
158 | _$jscoverage['manikin-mongodb.js'][264] = 0;
|
159 | _$jscoverage['manikin-mongodb.js'][265] = 0;
|
160 | _$jscoverage['manikin-mongodb.js'][266] = 0;
|
161 | _$jscoverage['manikin-mongodb.js'][267] = 0;
|
162 | _$jscoverage['manikin-mongodb.js'][268] = 0;
|
163 | _$jscoverage['manikin-mongodb.js'][270] = 0;
|
164 | _$jscoverage['manikin-mongodb.js'][271] = 0;
|
165 | _$jscoverage['manikin-mongodb.js'][272] = 0;
|
166 | _$jscoverage['manikin-mongodb.js'][273] = 0;
|
167 | _$jscoverage['manikin-mongodb.js'][274] = 0;
|
168 | _$jscoverage['manikin-mongodb.js'][275] = 0;
|
169 | _$jscoverage['manikin-mongodb.js'][276] = 0;
|
170 | _$jscoverage['manikin-mongodb.js'][280] = 0;
|
171 | _$jscoverage['manikin-mongodb.js'][281] = 0;
|
172 | _$jscoverage['manikin-mongodb.js'][282] = 0;
|
173 | _$jscoverage['manikin-mongodb.js'][283] = 0;
|
174 | _$jscoverage['manikin-mongodb.js'][284] = 0;
|
175 | _$jscoverage['manikin-mongodb.js'][291] = 0;
|
176 | _$jscoverage['manikin-mongodb.js'][292] = 0;
|
177 | _$jscoverage['manikin-mongodb.js'][299] = 0;
|
178 | _$jscoverage['manikin-mongodb.js'][300] = 0;
|
179 | _$jscoverage['manikin-mongodb.js'][301] = 0;
|
180 | _$jscoverage['manikin-mongodb.js'][304] = 0;
|
181 | _$jscoverage['manikin-mongodb.js'][306] = 0;
|
182 | _$jscoverage['manikin-mongodb.js'][307] = 0;
|
183 | _$jscoverage['manikin-mongodb.js'][309] = 0;
|
184 | _$jscoverage['manikin-mongodb.js'][310] = 0;
|
185 | _$jscoverage['manikin-mongodb.js'][311] = 0;
|
186 | _$jscoverage['manikin-mongodb.js'][312] = 0;
|
187 | _$jscoverage['manikin-mongodb.js'][313] = 0;
|
188 | _$jscoverage['manikin-mongodb.js'][314] = 0;
|
189 | _$jscoverage['manikin-mongodb.js'][315] = 0;
|
190 | _$jscoverage['manikin-mongodb.js'][316] = 0;
|
191 | _$jscoverage['manikin-mongodb.js'][317] = 0;
|
192 | _$jscoverage['manikin-mongodb.js'][318] = 0;
|
193 | _$jscoverage['manikin-mongodb.js'][319] = 0;
|
194 | _$jscoverage['manikin-mongodb.js'][320] = 0;
|
195 | _$jscoverage['manikin-mongodb.js'][321] = 0;
|
196 | _$jscoverage['manikin-mongodb.js'][323] = 0;
|
197 | _$jscoverage['manikin-mongodb.js'][324] = 0;
|
198 | _$jscoverage['manikin-mongodb.js'][328] = 0;
|
199 | _$jscoverage['manikin-mongodb.js'][329] = 0;
|
200 | _$jscoverage['manikin-mongodb.js'][331] = 0;
|
201 | _$jscoverage['manikin-mongodb.js'][333] = 0;
|
202 | _$jscoverage['manikin-mongodb.js'][334] = 0;
|
203 | _$jscoverage['manikin-mongodb.js'][335] = 0;
|
204 | _$jscoverage['manikin-mongodb.js'][338] = 0;
|
205 | _$jscoverage['manikin-mongodb.js'][339] = 0;
|
206 | _$jscoverage['manikin-mongodb.js'][340] = 0;
|
207 | _$jscoverage['manikin-mongodb.js'][341] = 0;
|
208 | _$jscoverage['manikin-mongodb.js'][342] = 0;
|
209 | _$jscoverage['manikin-mongodb.js'][343] = 0;
|
210 | _$jscoverage['manikin-mongodb.js'][344] = 0;
|
211 | _$jscoverage['manikin-mongodb.js'][345] = 0;
|
212 | _$jscoverage['manikin-mongodb.js'][346] = 0;
|
213 | _$jscoverage['manikin-mongodb.js'][347] = 0;
|
214 | _$jscoverage['manikin-mongodb.js'][349] = 0;
|
215 | _$jscoverage['manikin-mongodb.js'][352] = 0;
|
216 | _$jscoverage['manikin-mongodb.js'][356] = 0;
|
217 | _$jscoverage['manikin-mongodb.js'][357] = 0;
|
218 | _$jscoverage['manikin-mongodb.js'][358] = 0;
|
219 | _$jscoverage['manikin-mongodb.js'][359] = 0;
|
220 | _$jscoverage['manikin-mongodb.js'][361] = 0;
|
221 | _$jscoverage['manikin-mongodb.js'][362] = 0;
|
222 | _$jscoverage['manikin-mongodb.js'][364] = 0;
|
223 | _$jscoverage['manikin-mongodb.js'][369] = 0;
|
224 | _$jscoverage['manikin-mongodb.js'][370] = 0;
|
225 | _$jscoverage['manikin-mongodb.js'][371] = 0;
|
226 | _$jscoverage['manikin-mongodb.js'][372] = 0;
|
227 | _$jscoverage['manikin-mongodb.js'][374] = 0;
|
228 | _$jscoverage['manikin-mongodb.js'][375] = 0;
|
229 | _$jscoverage['manikin-mongodb.js'][377] = 0;
|
230 | _$jscoverage['manikin-mongodb.js'][381] = 0;
|
231 | _$jscoverage['manikin-mongodb.js'][382] = 0;
|
232 | _$jscoverage['manikin-mongodb.js'][383] = 0;
|
233 | _$jscoverage['manikin-mongodb.js'][384] = 0;
|
234 | _$jscoverage['manikin-mongodb.js'][385] = 0;
|
235 | _$jscoverage['manikin-mongodb.js'][386] = 0;
|
236 | _$jscoverage['manikin-mongodb.js'][387] = 0;
|
237 | _$jscoverage['manikin-mongodb.js'][389] = 0;
|
238 | _$jscoverage['manikin-mongodb.js'][391] = 0;
|
239 | _$jscoverage['manikin-mongodb.js'][392] = 0;
|
240 | _$jscoverage['manikin-mongodb.js'][393] = 0;
|
241 | _$jscoverage['manikin-mongodb.js'][394] = 0;
|
242 | _$jscoverage['manikin-mongodb.js'][395] = 0;
|
243 | _$jscoverage['manikin-mongodb.js'][396] = 0;
|
244 | _$jscoverage['manikin-mongodb.js'][397] = 0;
|
245 | _$jscoverage['manikin-mongodb.js'][399] = 0;
|
246 | _$jscoverage['manikin-mongodb.js'][401] = 0;
|
247 | _$jscoverage['manikin-mongodb.js'][402] = 0;
|
248 | _$jscoverage['manikin-mongodb.js'][404] = 0;
|
249 | _$jscoverage['manikin-mongodb.js'][408] = 0;
|
250 | _$jscoverage['manikin-mongodb.js'][409] = 0;
|
251 | _$jscoverage['manikin-mongodb.js'][410] = 0;
|
252 | _$jscoverage['manikin-mongodb.js'][411] = 0;
|
253 | _$jscoverage['manikin-mongodb.js'][412] = 0;
|
254 | _$jscoverage['manikin-mongodb.js'][413] = 0;
|
255 | _$jscoverage['manikin-mongodb.js'][415] = 0;
|
256 | _$jscoverage['manikin-mongodb.js'][417] = 0;
|
257 | _$jscoverage['manikin-mongodb.js'][418] = 0;
|
258 | _$jscoverage['manikin-mongodb.js'][420] = 0;
|
259 | _$jscoverage['manikin-mongodb.js'][421] = 0;
|
260 | _$jscoverage['manikin-mongodb.js'][426] = 0;
|
261 | _$jscoverage['manikin-mongodb.js'][427] = 0;
|
262 | _$jscoverage['manikin-mongodb.js'][428] = 0;
|
263 | _$jscoverage['manikin-mongodb.js'][429] = 0;
|
264 | _$jscoverage['manikin-mongodb.js'][430] = 0;
|
265 | _$jscoverage['manikin-mongodb.js'][431] = 0;
|
266 | _$jscoverage['manikin-mongodb.js'][432] = 0;
|
267 | _$jscoverage['manikin-mongodb.js'][433] = 0;
|
268 | _$jscoverage['manikin-mongodb.js'][434] = 0;
|
269 | _$jscoverage['manikin-mongodb.js'][435] = 0;
|
270 | _$jscoverage['manikin-mongodb.js'][436] = 0;
|
271 | _$jscoverage['manikin-mongodb.js'][438] = 0;
|
272 | _$jscoverage['manikin-mongodb.js'][439] = 0;
|
273 | _$jscoverage['manikin-mongodb.js'][440] = 0;
|
274 | _$jscoverage['manikin-mongodb.js'][441] = 0;
|
275 | _$jscoverage['manikin-mongodb.js'][443] = 0;
|
276 | _$jscoverage['manikin-mongodb.js'][445] = 0;
|
277 | _$jscoverage['manikin-mongodb.js'][447] = 0;
|
278 | _$jscoverage['manikin-mongodb.js'][448] = 0;
|
279 | _$jscoverage['manikin-mongodb.js'][449] = 0;
|
280 | _$jscoverage['manikin-mongodb.js'][451] = 0;
|
281 | _$jscoverage['manikin-mongodb.js'][452] = 0;
|
282 | _$jscoverage['manikin-mongodb.js'][454] = 0;
|
283 | _$jscoverage['manikin-mongodb.js'][455] = 0;
|
284 | _$jscoverage['manikin-mongodb.js'][459] = 0;
|
285 | _$jscoverage['manikin-mongodb.js'][460] = 0;
|
286 | _$jscoverage['manikin-mongodb.js'][461] = 0;
|
287 | _$jscoverage['manikin-mongodb.js'][462] = 0;
|
288 | _$jscoverage['manikin-mongodb.js'][464] = 0;
|
289 | _$jscoverage['manikin-mongodb.js'][465] = 0;
|
290 | _$jscoverage['manikin-mongodb.js'][466] = 0;
|
291 | _$jscoverage['manikin-mongodb.js'][468] = 0;
|
292 | _$jscoverage['manikin-mongodb.js'][469] = 0;
|
293 | _$jscoverage['manikin-mongodb.js'][470] = 0;
|
294 | _$jscoverage['manikin-mongodb.js'][483] = 0;
|
295 | _$jscoverage['manikin-mongodb.js'][484] = 0;
|
296 | _$jscoverage['manikin-mongodb.js'][485] = 0;
|
297 | _$jscoverage['manikin-mongodb.js'][488] = 0;
|
298 | _$jscoverage['manikin-mongodb.js'][491] = 0;
|
299 | _$jscoverage['manikin-mongodb.js'][492] = 0;
|
300 | _$jscoverage['manikin-mongodb.js'][493] = 0;
|
301 | _$jscoverage['manikin-mongodb.js'][498] = 0;
|
302 | _$jscoverage['manikin-mongodb.js'][499] = 0;
|
303 | _$jscoverage['manikin-mongodb.js'][500] = 0;
|
304 | _$jscoverage['manikin-mongodb.js'][501] = 0;
|
305 | _$jscoverage['manikin-mongodb.js'][502] = 0;
|
306 | _$jscoverage['manikin-mongodb.js'][504] = 0;
|
307 | _$jscoverage['manikin-mongodb.js'][505] = 0;
|
308 | _$jscoverage['manikin-mongodb.js'][506] = 0;
|
309 | _$jscoverage['manikin-mongodb.js'][508] = 0;
|
310 | _$jscoverage['manikin-mongodb.js'][509] = 0;
|
311 | _$jscoverage['manikin-mongodb.js'][510] = 0;
|
312 | _$jscoverage['manikin-mongodb.js'][523] = 0;
|
313 | _$jscoverage['manikin-mongodb.js'][524] = 0;
|
314 | _$jscoverage['manikin-mongodb.js'][526] = 0;
|
315 | _$jscoverage['manikin-mongodb.js'][527] = 0;
|
316 | _$jscoverage['manikin-mongodb.js'][528] = 0;
|
317 | _$jscoverage['manikin-mongodb.js'][531] = 0;
|
318 | _$jscoverage['manikin-mongodb.js'][532] = 0;
|
319 | _$jscoverage['manikin-mongodb.js'][535] = 0;
|
320 | _$jscoverage['manikin-mongodb.js'][537] = 0;
|
321 | _$jscoverage['manikin-mongodb.js'][538] = 0;
|
322 | _$jscoverage['manikin-mongodb.js'][540] = 0;
|
323 | _$jscoverage['manikin-mongodb.js'][541] = 0;
|
324 | _$jscoverage['manikin-mongodb.js'][543] = 0;
|
325 | _$jscoverage['manikin-mongodb.js'][544] = 0;
|
326 | _$jscoverage['manikin-mongodb.js'][545] = 0;
|
327 | _$jscoverage['manikin-mongodb.js'][546] = 0;
|
328 | _$jscoverage['manikin-mongodb.js'][547] = 0;
|
329 | _$jscoverage['manikin-mongodb.js'][548] = 0;
|
330 | _$jscoverage['manikin-mongodb.js'][551] = 0;
|
331 | _$jscoverage['manikin-mongodb.js'][552] = 0;
|
332 | _$jscoverage['manikin-mongodb.js'][553] = 0;
|
333 | _$jscoverage['manikin-mongodb.js'][555] = 0;
|
334 | _$jscoverage['manikin-mongodb.js'][558] = 0;
|
335 | _$jscoverage['manikin-mongodb.js'][559] = 0;
|
336 | _$jscoverage['manikin-mongodb.js'][561] = 0;
|
337 | _$jscoverage['manikin-mongodb.js'][562] = 0;
|
338 | _$jscoverage['manikin-mongodb.js'][564] = 0;
|
339 | _$jscoverage['manikin-mongodb.js'][566] = 0;
|
340 | _$jscoverage['manikin-mongodb.js'][572] = 0;
|
341 | _$jscoverage['manikin-mongodb.js'][573] = 0;
|
342 | _$jscoverage['manikin-mongodb.js'][576] = 0;
|
343 | _$jscoverage['manikin-mongodb.js'][579] = 0;
|
344 | }
|
345 | _$jscoverage['manikin-mongodb.js'][2]++;
|
346 | (function () {
|
347 | _$jscoverage['manikin-mongodb.js'][3]++;
|
348 | 'use strict';
|
349 | _$jscoverage['manikin-mongodb.js'][5]++;
|
350 | var async, getKeys, massage, massageCore, massageOne, massaged, preprocFilter, propagate, tools, _, __slice = [].slice;
|
351 | _$jscoverage['manikin-mongodb.js'][8]++;
|
352 | async = require('async');
|
353 | _$jscoverage['manikin-mongodb.js'][10]++;
|
354 | _ = require('underscore');
|
355 | _$jscoverage['manikin-mongodb.js'][12]++;
|
356 | tools = require('./manikin-tools');
|
357 | _$jscoverage['manikin-mongodb.js'][14]++;
|
358 | preprocFilter = function (filter) {
|
359 | _$jscoverage['manikin-mongodb.js'][15]++;
|
360 | var x;
|
361 | _$jscoverage['manikin-mongodb.js'][16]++;
|
362 | x = _.extend({}, filter);
|
363 | _$jscoverage['manikin-mongodb.js'][17]++;
|
364 | if (x.id) {
|
365 | _$jscoverage['manikin-mongodb.js'][18]++;
|
366 | x._id = x.id;
|
367 | }
|
368 | _$jscoverage['manikin-mongodb.js'][20]++;
|
369 | delete x.id;
|
370 | _$jscoverage['manikin-mongodb.js'][21]++;
|
371 | return x;
|
372 | };
|
373 | _$jscoverage['manikin-mongodb.js'][24]++;
|
374 | massageOne = function (x) {
|
375 | _$jscoverage['manikin-mongodb.js'][25]++;
|
376 | if (!(x != null)) {
|
377 | _$jscoverage['manikin-mongodb.js'][26]++;
|
378 | return x;
|
379 | }
|
380 | _$jscoverage['manikin-mongodb.js'][28]++;
|
381 | x.id = x._id;
|
382 | _$jscoverage['manikin-mongodb.js'][29]++;
|
383 | delete x._id;
|
384 | _$jscoverage['manikin-mongodb.js'][30]++;
|
385 | return x;
|
386 | };
|
387 | _$jscoverage['manikin-mongodb.js'][33]++;
|
388 | massageCore = function (r2) {
|
389 | _$jscoverage['manikin-mongodb.js'][34]++;
|
390 | if (Array.isArray(r2)) {
|
391 | _$jscoverage['manikin-mongodb.js'][35]++;
|
392 | return r2.map(massageOne);
|
393 | } else {
|
394 | _$jscoverage['manikin-mongodb.js'][37]++;
|
395 | return massageOne(r2);
|
396 | }
|
397 | };
|
398 | _$jscoverage['manikin-mongodb.js'][41]++;
|
399 | massage = function (r2) {
|
400 | _$jscoverage['manikin-mongodb.js'][42]++;
|
401 | return massageCore(JSON.parse(JSON.stringify(r2)));
|
402 | };
|
403 | _$jscoverage['manikin-mongodb.js'][45]++;
|
404 | massaged = function (f) {
|
405 | _$jscoverage['manikin-mongodb.js'][46]++;
|
406 | return function (err, data) {
|
407 | _$jscoverage['manikin-mongodb.js'][47]++;
|
408 | if (err) {
|
409 | _$jscoverage['manikin-mongodb.js'][48]++;
|
410 | return f(err);
|
411 | } else {
|
412 | _$jscoverage['manikin-mongodb.js'][50]++;
|
413 | return f(null, massage(data));
|
414 | }
|
415 | };
|
416 | };
|
417 | _$jscoverage['manikin-mongodb.js'][55]++;
|
418 | propagate = function (callback, f) {
|
419 | _$jscoverage['manikin-mongodb.js'][56]++;
|
420 | return function () {
|
421 | _$jscoverage['manikin-mongodb.js'][57]++;
|
422 | var args, err;
|
423 | _$jscoverage['manikin-mongodb.js'][58]++;
|
424 | err = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
425 | _$jscoverage['manikin-mongodb.js'][59]++;
|
426 | if (err) {
|
427 | _$jscoverage['manikin-mongodb.js'][60]++;
|
428 | return callback(err);
|
429 | } else {
|
430 | _$jscoverage['manikin-mongodb.js'][62]++;
|
431 | return f.apply(this, args);
|
432 | }
|
433 | };
|
434 | };
|
435 | _$jscoverage['manikin-mongodb.js'][67]++;
|
436 | getKeys = function (data, target, prefix) {
|
437 | _$jscoverage['manikin-mongodb.js'][68]++;
|
438 | var valids;
|
439 | _$jscoverage['manikin-mongodb.js'][69]++;
|
440 | if (target == null) {
|
441 | _$jscoverage['manikin-mongodb.js'][70]++;
|
442 | target = [];
|
443 | }
|
444 | _$jscoverage['manikin-mongodb.js'][72]++;
|
445 | if (prefix == null) {
|
446 | _$jscoverage['manikin-mongodb.js'][73]++;
|
447 | prefix = '';
|
448 | }
|
449 | _$jscoverage['manikin-mongodb.js'][75]++;
|
450 | valids = [
|
451 | 'Array',
|
452 | 'String',
|
453 | 'Boolean',
|
454 | 'Date',
|
455 | 'Number',
|
456 | 'Null'
|
457 | ];
|
458 | _$jscoverage['manikin-mongodb.js'][76]++;
|
459 | Object.keys(data).forEach(function (key) {
|
460 | _$jscoverage['manikin-mongodb.js'][77]++;
|
461 | if (valids.some(function (x) {
|
462 | _$jscoverage['manikin-mongodb.js'][78]++;
|
463 | return _(data[key])['is' + x]();
|
464 | })) {
|
465 | _$jscoverage['manikin-mongodb.js'][80]++;
|
466 | return target.push(prefix + key);
|
467 | } else {
|
468 | _$jscoverage['manikin-mongodb.js'][82]++;
|
469 | return getKeys(data[key], target, prefix + key + '.');
|
470 | }
|
471 | });
|
472 | _$jscoverage['manikin-mongodb.js'][85]++;
|
473 | return target;
|
474 | };
|
475 | _$jscoverage['manikin-mongodb.js'][88]++;
|
476 | exports.create = function () {
|
477 | _$jscoverage['manikin-mongodb.js'][89]++;
|
478 | var Mixed, ObjectID, ObjectId, Schema, api, defModels, getMeta, insertOps, internalListSub, key, makeModel, metaData, models, mongoose, nullablesValidation, preRemoveCascadeNonNullable, preRemoveCascadeNullable, specTransform, specmodels;
|
479 | _$jscoverage['manikin-mongodb.js'][90]++;
|
480 | if (process.env.NODE_ENV !== 'production') {
|
481 | _$jscoverage['manikin-mongodb.js'][91]++;
|
482 | for (key in require.cache) {
|
483 | _$jscoverage['manikin-mongodb.js'][92]++;
|
484 | delete require.cache[key];
|
485 | }
|
486 | }
|
487 | _$jscoverage['manikin-mongodb.js'][95]++;
|
488 | mongoose = require('mongoose');
|
489 | _$jscoverage['manikin-mongodb.js'][96]++;
|
490 | Schema = mongoose.Schema;
|
491 | _$jscoverage['manikin-mongodb.js'][97]++;
|
492 | Mixed = mongoose.Schema.Types.Mixed;
|
493 | _$jscoverage['manikin-mongodb.js'][98]++;
|
494 | ObjectID = mongoose.mongo.ObjectID;
|
495 | _$jscoverage['manikin-mongodb.js'][99]++;
|
496 | ObjectId = mongoose.Schema.ObjectId;
|
497 | _$jscoverage['manikin-mongodb.js'][100]++;
|
498 | api = {};
|
499 | _$jscoverage['manikin-mongodb.js'][101]++;
|
500 | models = {};
|
501 | _$jscoverage['manikin-mongodb.js'][102]++;
|
502 | specmodels = {};
|
503 | _$jscoverage['manikin-mongodb.js'][103]++;
|
504 | metaData = null;
|
505 | _$jscoverage['manikin-mongodb.js'][104]++;
|
506 | makeModel = function (connection, name, schema) {
|
507 | _$jscoverage['manikin-mongodb.js'][105]++;
|
508 | var ss;
|
509 | _$jscoverage['manikin-mongodb.js'][106]++;
|
510 | ss = new Schema(schema, { strict: true });
|
511 | _$jscoverage['manikin-mongodb.js'][109]++;
|
512 | ss.set('versionKey', false);
|
513 | _$jscoverage['manikin-mongodb.js'][110]++;
|
514 | return connection.model(name, ss, name);
|
515 | };
|
516 | _$jscoverage['manikin-mongodb.js'][112]++;
|
517 | getMeta = function (modelName) {
|
518 | _$jscoverage['manikin-mongodb.js'][113]++;
|
519 | return metaData[modelName];
|
520 | };
|
521 | _$jscoverage['manikin-mongodb.js'][115]++;
|
522 | nullablesValidation = function (schema) {
|
523 | _$jscoverage['manikin-mongodb.js'][116]++;
|
524 | return function (next) {
|
525 | _$jscoverage['manikin-mongodb.js'][117]++;
|
526 | var nonNullOuters, outers, paths, self;
|
527 | _$jscoverage['manikin-mongodb.js'][118]++;
|
528 | self = this;
|
529 | _$jscoverage['manikin-mongodb.js'][119]++;
|
530 | paths = schema.paths;
|
531 | _$jscoverage['manikin-mongodb.js'][120]++;
|
532 | outers = Object.keys(paths).filter(function (x) {
|
533 | _$jscoverage['manikin-mongodb.js'][121]++;
|
534 | return paths[x].options.type === ObjectId && typeof paths[x].options.ref === 'string' && !paths[x].options['x-owner'];
|
535 | }).map(function (x) {
|
536 | _$jscoverage['manikin-mongodb.js'][123]++;
|
537 | return {
|
538 | plur: paths[x].options.ref,
|
539 | sing: x,
|
540 | validation: paths[x].options['x-validation']
|
541 | };
|
542 | });
|
543 | _$jscoverage['manikin-mongodb.js'][129]++;
|
544 | nonNullOuters = outers.filter(function (x) {
|
545 | _$jscoverage['manikin-mongodb.js'][130]++;
|
546 | return self[x.sing] != null;
|
547 | });
|
548 | _$jscoverage['manikin-mongodb.js'][132]++;
|
549 | return async.forEach(nonNullOuters, function (o, callback) {
|
550 | _$jscoverage['manikin-mongodb.js'][133]++;
|
551 | return api.getOne(o.plur, { id: self[o.sing] }, function (err, data) {
|
552 | _$jscoverage['manikin-mongodb.js'][136]++;
|
553 | if (err || !data) {
|
554 | _$jscoverage['manikin-mongodb.js'][137]++;
|
555 | return callback(new Error('Invalid pointer'));
|
556 | } else {
|
557 | _$jscoverage['manikin-mongodb.js'][138]++;
|
558 | if (o.validation) {
|
559 | _$jscoverage['manikin-mongodb.js'][139]++;
|
560 | return o.validation(self, data, function (err) {
|
561 | _$jscoverage['manikin-mongodb.js'][140]++;
|
562 | return callback(err ? new Error(err) : void 0);
|
563 | });
|
564 | } else {
|
565 | _$jscoverage['manikin-mongodb.js'][143]++;
|
566 | return callback();
|
567 | }
|
568 | }
|
569 | });
|
570 | }, next);
|
571 | };
|
572 | };
|
573 | _$jscoverage['manikin-mongodb.js'][149]++;
|
574 | internalListSub = function (model, outer, id, filter, callback) {
|
575 | _$jscoverage['manikin-mongodb.js'][150]++;
|
576 | var finalFilter;
|
577 | _$jscoverage['manikin-mongodb.js'][151]++;
|
578 | if (filter[outer] != null && filter[outer].toString() !== id.toString()) {
|
579 | _$jscoverage['manikin-mongodb.js'][152]++;
|
580 | callback(new Error('No such id'));
|
581 | _$jscoverage['manikin-mongodb.js'][153]++;
|
582 | return;
|
583 | }
|
584 | _$jscoverage['manikin-mongodb.js'][155]++;
|
585 | filter = preprocFilter(filter);
|
586 | _$jscoverage['manikin-mongodb.js'][156]++;
|
587 | finalFilter = _.extend({}, filter, _.object([[
|
588 | outer,
|
589 | id
|
590 | ]]));
|
591 | _$jscoverage['manikin-mongodb.js'][157]++;
|
592 | return models[model].find(finalFilter, callback);
|
593 | };
|
594 | _$jscoverage['manikin-mongodb.js'][159]++;
|
595 | preRemoveCascadeNonNullable = function (owner, id, next) {
|
596 | _$jscoverage['manikin-mongodb.js'][160]++;
|
597 | var manys;
|
598 | _$jscoverage['manikin-mongodb.js'][161]++;
|
599 | manys = getMeta(owner.modelName).manyToMany;
|
600 | _$jscoverage['manikin-mongodb.js'][162]++;
|
601 | return async.forEach(manys, function (many, callback) {
|
602 | _$jscoverage['manikin-mongodb.js'][163]++;
|
603 | var obj;
|
604 | _$jscoverage['manikin-mongodb.js'][164]++;
|
605 | obj = _.object([[
|
606 | many.inverseName,
|
607 | id
|
608 | ]]);
|
609 | _$jscoverage['manikin-mongodb.js'][165]++;
|
610 | return models[many.ref].update(obj, { $pull: obj }, callback);
|
611 | }, function (err) {
|
612 | _$jscoverage['manikin-mongodb.js'][169]++;
|
613 | var flattenedModels;
|
614 | _$jscoverage['manikin-mongodb.js'][170]++;
|
615 | if (err) {
|
616 | _$jscoverage['manikin-mongodb.js'][171]++;
|
617 | return next(err);
|
618 | }
|
619 | _$jscoverage['manikin-mongodb.js'][173]++;
|
620 | flattenedModels = getMeta(owner.modelName).owns;
|
621 | _$jscoverage['manikin-mongodb.js'][174]++;
|
622 | return async.forEach(flattenedModels, function (mod, callback) {
|
623 | _$jscoverage['manikin-mongodb.js'][175]++;
|
624 | return internalListSub(mod.name, mod.field, id, {}, propagate(callback, function (data) {
|
625 | _$jscoverage['manikin-mongodb.js'][176]++;
|
626 | return async.forEach(data, function (item, callback) {
|
627 | _$jscoverage['manikin-mongodb.js'][177]++;
|
628 | return item.remove(callback);
|
629 | }, callback);
|
630 | }));
|
631 | }, next);
|
632 | });
|
633 | };
|
634 | _$jscoverage['manikin-mongodb.js'][183]++;
|
635 | preRemoveCascadeNullable = function (owner, id, next) {
|
636 | _$jscoverage['manikin-mongodb.js'][184]++;
|
637 | var flattenedModels, ownedModels;
|
638 | _$jscoverage['manikin-mongodb.js'][185]++;
|
639 | ownedModels = Object.keys(models).map(function (modelName) {
|
640 | _$jscoverage['manikin-mongodb.js'][186]++;
|
641 | var paths;
|
642 | _$jscoverage['manikin-mongodb.js'][187]++;
|
643 | paths = models[modelName].schema.paths;
|
644 | _$jscoverage['manikin-mongodb.js'][188]++;
|
645 | return Object.keys(paths).filter(function (x) {
|
646 | _$jscoverage['manikin-mongodb.js'][189]++;
|
647 | return paths[x].options.type === ObjectId && paths[x].options.ref === owner.modelName && !paths[x].options['x-owner'];
|
648 | }).map(function (x) {
|
649 | _$jscoverage['manikin-mongodb.js'][191]++;
|
650 | return {
|
651 | name: modelName,
|
652 | field: x
|
653 | };
|
654 | });
|
655 | });
|
656 | _$jscoverage['manikin-mongodb.js'][197]++;
|
657 | flattenedModels = _.flatten(ownedModels);
|
658 | _$jscoverage['manikin-mongodb.js'][198]++;
|
659 | return async.forEach(flattenedModels, function (mod, callback) {
|
660 | _$jscoverage['manikin-mongodb.js'][199]++;
|
661 | return internalListSub(mod.name, mod.field, id, {}, propagate(callback, function (data) {
|
662 | _$jscoverage['manikin-mongodb.js'][200]++;
|
663 | return async.forEach(data, function (item, callback) {
|
664 | _$jscoverage['manikin-mongodb.js'][201]++;
|
665 | item[mod.field] = null;
|
666 | _$jscoverage['manikin-mongodb.js'][202]++;
|
667 | item.save();
|
668 | _$jscoverage['manikin-mongodb.js'][203]++;
|
669 | return callback();
|
670 | }, callback);
|
671 | }));
|
672 | }, next);
|
673 | };
|
674 | _$jscoverage['manikin-mongodb.js'][208]++;
|
675 | specTransform = function (allspec, modelName, tgt, src, keys) {
|
676 | _$jscoverage['manikin-mongodb.js'][209]++;
|
677 | return keys.forEach(function (key) {
|
678 | _$jscoverage['manikin-mongodb.js'][210]++;
|
679 | if (src[key].type === 'mixed') {
|
680 | _$jscoverage['manikin-mongodb.js'][211]++;
|
681 | return tgt[key] = { type: Mixed };
|
682 | } else {
|
683 | _$jscoverage['manikin-mongodb.js'][214]++;
|
684 | if (src[key].type === 'nested') {
|
685 | _$jscoverage['manikin-mongodb.js'][215]++;
|
686 | tgt[key] = {};
|
687 | _$jscoverage['manikin-mongodb.js'][216]++;
|
688 | return specTransform(allspec, modelName, tgt[key], src[key], _.without(Object.keys(src[key]), 'type'));
|
689 | } else {
|
690 | _$jscoverage['manikin-mongodb.js'][217]++;
|
691 | if (src[key].type === 'string') {
|
692 | _$jscoverage['manikin-mongodb.js'][218]++;
|
693 | tgt[key] = _.extend({}, src[key], { type: String });
|
694 | _$jscoverage['manikin-mongodb.js'][221]++;
|
695 | if (src[key].validate != null) {
|
696 | _$jscoverage['manikin-mongodb.js'][222]++;
|
697 | return tgt[key].validate = function (value, callback) {
|
698 | _$jscoverage['manikin-mongodb.js'][223]++;
|
699 | return src[key].validate(api, value, callback);
|
700 | };
|
701 | }
|
702 | } else {
|
703 | _$jscoverage['manikin-mongodb.js'][226]++;
|
704 | if (src[key].type === 'number') {
|
705 | _$jscoverage['manikin-mongodb.js'][227]++;
|
706 | return tgt[key] = _.extend({}, src[key], { type: Number });
|
707 | } else {
|
708 | _$jscoverage['manikin-mongodb.js'][230]++;
|
709 | if (src[key].type === 'date') {
|
710 | _$jscoverage['manikin-mongodb.js'][231]++;
|
711 | return tgt[key] = _.extend({}, src[key], { type: Date });
|
712 | } else {
|
713 | _$jscoverage['manikin-mongodb.js'][234]++;
|
714 | if (src[key].type === 'boolean') {
|
715 | _$jscoverage['manikin-mongodb.js'][235]++;
|
716 | return tgt[key] = _.extend({}, src[key], { type: Boolean });
|
717 | } else {
|
718 | _$jscoverage['manikin-mongodb.js'][238]++;
|
719 | if (src[key].type === 'hasOne') {
|
720 | _$jscoverage['manikin-mongodb.js'][239]++;
|
721 | return tgt[key] = {
|
722 | ref: src[key].model,
|
723 | 'x-validation': src[key].validation
|
724 | };
|
725 | } else {
|
726 | _$jscoverage['manikin-mongodb.js'][243]++;
|
727 | if (src[key].type === 'hasMany') {
|
728 | _$jscoverage['manikin-mongodb.js'][244]++;
|
729 | tgt[key] = [{
|
730 | type: ObjectId,
|
731 | ref: src[key].model,
|
732 | inverseName: src[key].inverseName
|
733 | }];
|
734 | _$jscoverage['manikin-mongodb.js'][251]++;
|
735 | return allspec[src[key].model][src[key].inverseName] = [{
|
736 | type: ObjectId,
|
737 | ref: modelName,
|
738 | inverseName: key
|
739 | }];
|
740 | }
|
741 | }
|
742 | }
|
743 | }
|
744 | }
|
745 | }
|
746 | }
|
747 | }
|
748 | });
|
749 | };
|
750 | _$jscoverage['manikin-mongodb.js'][261]++;
|
751 | defModels = function (models) {
|
752 | _$jscoverage['manikin-mongodb.js'][262]++;
|
753 | var allspec, newrest, toDef;
|
754 | _$jscoverage['manikin-mongodb.js'][263]++;
|
755 | specmodels = tools.desugar(models);
|
756 | _$jscoverage['manikin-mongodb.js'][264]++;
|
757 | toDef = [];
|
758 | _$jscoverage['manikin-mongodb.js'][265]++;
|
759 | newrest = {};
|
760 | _$jscoverage['manikin-mongodb.js'][266]++;
|
761 | allspec = {};
|
762 | _$jscoverage['manikin-mongodb.js'][267]++;
|
763 | Object.keys(specmodels).forEach(function (modelName) {
|
764 | _$jscoverage['manikin-mongodb.js'][268]++;
|
765 | return allspec[modelName] = {};
|
766 | });
|
767 | _$jscoverage['manikin-mongodb.js'][270]++;
|
768 | Object.keys(specmodels).forEach(function (modelName) {
|
769 | _$jscoverage['manikin-mongodb.js'][271]++;
|
770 | var inspec, owners, spec;
|
771 | _$jscoverage['manikin-mongodb.js'][272]++;
|
772 | spec = allspec[modelName];
|
773 | _$jscoverage['manikin-mongodb.js'][273]++;
|
774 | owners = specmodels[modelName].owners || {};
|
775 | _$jscoverage['manikin-mongodb.js'][274]++;
|
776 | inspec = specmodels[modelName].fields || {};
|
777 | _$jscoverage['manikin-mongodb.js'][275]++;
|
778 | specTransform(allspec, modelName, spec, inspec, Object.keys(inspec));
|
779 | _$jscoverage['manikin-mongodb.js'][276]++;
|
780 | return newrest[modelName] = _.extend({}, specmodels[modelName], { fields: spec });
|
781 | });
|
782 | _$jscoverage['manikin-mongodb.js'][280]++;
|
783 | Object.keys(newrest).forEach(function (modelName) {
|
784 | _$jscoverage['manikin-mongodb.js'][281]++;
|
785 | var conf;
|
786 | _$jscoverage['manikin-mongodb.js'][282]++;
|
787 | conf = newrest[modelName];
|
788 | _$jscoverage['manikin-mongodb.js'][283]++;
|
789 | Object.keys(conf.owners).forEach(function (ownerName) {
|
790 | _$jscoverage['manikin-mongodb.js'][284]++;
|
791 | return conf.fields[ownerName] = {
|
792 | type: ObjectId,
|
793 | ref: conf.owners[ownerName],
|
794 | required: true,
|
795 | 'x-owner': true
|
796 | };
|
797 | });
|
798 | _$jscoverage['manikin-mongodb.js'][291]++;
|
799 | Object.keys(conf.indirectOwners).forEach(function (p) {
|
800 | _$jscoverage['manikin-mongodb.js'][292]++;
|
801 | return conf.fields[p] = {
|
802 | type: ObjectId,
|
803 | ref: conf.indirectOwners[p],
|
804 | required: true,
|
805 | 'x-indirect-owner': true
|
806 | };
|
807 | });
|
808 | _$jscoverage['manikin-mongodb.js'][299]++;
|
809 | Object.keys(conf.fields).forEach(function (fieldName) {
|
810 | _$jscoverage['manikin-mongodb.js'][300]++;
|
811 | if (conf.fields[fieldName].ref != null) {
|
812 | _$jscoverage['manikin-mongodb.js'][301]++;
|
813 | return conf.fields[fieldName].type = ObjectId;
|
814 | }
|
815 | });
|
816 | _$jscoverage['manikin-mongodb.js'][304]++;
|
817 | return toDef.push([
|
818 | modelName,
|
819 | newrest[modelName]
|
820 | ]);
|
821 | });
|
822 | _$jscoverage['manikin-mongodb.js'][306]++;
|
823 | metaData = tools.getMeta(specmodels);
|
824 | _$jscoverage['manikin-mongodb.js'][307]++;
|
825 | return toDef;
|
826 | };
|
827 | _$jscoverage['manikin-mongodb.js'][309]++;
|
828 | (function () {
|
829 | _$jscoverage['manikin-mongodb.js'][310]++;
|
830 | var connection;
|
831 | _$jscoverage['manikin-mongodb.js'][311]++;
|
832 | connection = null;
|
833 | _$jscoverage['manikin-mongodb.js'][312]++;
|
834 | api.connect = function (databaseUrl, inputModels, callback) {
|
835 | _$jscoverage['manikin-mongodb.js'][313]++;
|
836 | try {
|
837 | _$jscoverage['manikin-mongodb.js'][314]++;
|
838 | connection = mongoose.createConnection(databaseUrl);
|
839 | _$jscoverage['manikin-mongodb.js'][315]++;
|
840 | defModels(inputModels).forEach(function (_arg) {
|
841 | _$jscoverage['manikin-mongodb.js'][316]++;
|
842 | var name, v;
|
843 | _$jscoverage['manikin-mongodb.js'][317]++;
|
844 | name = _arg[0], v = _arg[1];
|
845 | _$jscoverage['manikin-mongodb.js'][318]++;
|
846 | models[name] = makeModel(connection, name, v.fields);
|
847 | _$jscoverage['manikin-mongodb.js'][319]++;
|
848 | models[name].schema.pre('save', nullablesValidation(models[name].schema));
|
849 | _$jscoverage['manikin-mongodb.js'][320]++;
|
850 | models[name].schema.pre('remove', function (next) {
|
851 | _$jscoverage['manikin-mongodb.js'][321]++;
|
852 | return preRemoveCascadeNonNullable(models[name], this._id.toString(), next);
|
853 | });
|
854 | _$jscoverage['manikin-mongodb.js'][323]++;
|
855 | return models[name].schema.pre('remove', function (next) {
|
856 | _$jscoverage['manikin-mongodb.js'][324]++;
|
857 | return preRemoveCascadeNullable(models[name], this._id.toString(), next);
|
858 | });
|
859 | });
|
860 | } catch (ex) {
|
861 | _$jscoverage['manikin-mongodb.js'][328]++;
|
862 | callback(ex);
|
863 | _$jscoverage['manikin-mongodb.js'][329]++;
|
864 | return;
|
865 | }
|
866 | _$jscoverage['manikin-mongodb.js'][331]++;
|
867 | return callback();
|
868 | };
|
869 | _$jscoverage['manikin-mongodb.js'][333]++;
|
870 | return api.close = function (callback) {
|
871 | _$jscoverage['manikin-mongodb.js'][334]++;
|
872 | connection.close();
|
873 | _$jscoverage['manikin-mongodb.js'][335]++;
|
874 | return callback();
|
875 | };
|
876 | }());
|
877 | _$jscoverage['manikin-mongodb.js'][338]++;
|
878 | api.post = function (model, indata, callback) {
|
879 | _$jscoverage['manikin-mongodb.js'][339]++;
|
880 | var owners, ownersOwners, ownersRaw, saveFunc;
|
881 | _$jscoverage['manikin-mongodb.js'][340]++;
|
882 | saveFunc = function (data) {
|
883 | _$jscoverage['manikin-mongodb.js'][341]++;
|
884 | return new models[model](data).save(function (err) {
|
885 | _$jscoverage['manikin-mongodb.js'][342]++;
|
886 | var fieldMatch, valueMatch;
|
887 | _$jscoverage['manikin-mongodb.js'][343]++;
|
888 | if (err && err.code === 11000) {
|
889 | _$jscoverage['manikin-mongodb.js'][344]++;
|
890 | fieldMatch = err.err.match(/([a-zA-Z]+)_1/);
|
891 | _$jscoverage['manikin-mongodb.js'][345]++;
|
892 | valueMatch = err.err.match(/"([a-zA-Z]+)"/);
|
893 | _$jscoverage['manikin-mongodb.js'][346]++;
|
894 | if (fieldMatch && valueMatch) {
|
895 | _$jscoverage['manikin-mongodb.js'][347]++;
|
896 | return callback(new Error('Duplicate value \'' + valueMatch[1] + '\' for ' + fieldMatch[1]));
|
897 | } else {
|
898 | _$jscoverage['manikin-mongodb.js'][349]++;
|
899 | return callback(new Error('Unique constraint violated'));
|
900 | }
|
901 | } else {
|
902 | _$jscoverage['manikin-mongodb.js'][352]++;
|
903 | return massaged(callback).apply(this, arguments);
|
904 | }
|
905 | });
|
906 | };
|
907 | _$jscoverage['manikin-mongodb.js'][356]++;
|
908 | ownersRaw = getMeta(model).owners;
|
909 | _$jscoverage['manikin-mongodb.js'][357]++;
|
910 | owners = _(ownersRaw).pluck('plur');
|
911 | _$jscoverage['manikin-mongodb.js'][358]++;
|
912 | ownersOwners = _.flatten(owners.map(function (x) {
|
913 | _$jscoverage['manikin-mongodb.js'][359]++;
|
914 | return getMeta(x).owners;
|
915 | }));
|
916 | _$jscoverage['manikin-mongodb.js'][361]++;
|
917 | if (ownersOwners.length === 0) {
|
918 | _$jscoverage['manikin-mongodb.js'][362]++;
|
919 | return saveFunc(indata);
|
920 | } else {
|
921 | _$jscoverage['manikin-mongodb.js'][364]++;
|
922 | return api.getOne(owners[0], { filter: { id: indata[ownersRaw[0].sing] } }, propagate(callback, function (ownerdata) {
|
923 | _$jscoverage['manikin-mongodb.js'][369]++;
|
924 | var metaFields, paths;
|
925 | _$jscoverage['manikin-mongodb.js'][370]++;
|
926 | paths = models[owners[0]].schema.paths;
|
927 | _$jscoverage['manikin-mongodb.js'][371]++;
|
928 | metaFields = Object.keys(paths).filter(function (key) {
|
929 | _$jscoverage['manikin-mongodb.js'][372]++;
|
930 | return !!paths[key].options['x-owner'] || !!paths[key].options['x-indirect-owner'];
|
931 | });
|
932 | _$jscoverage['manikin-mongodb.js'][374]++;
|
933 | metaFields.forEach(function (key) {
|
934 | _$jscoverage['manikin-mongodb.js'][375]++;
|
935 | return indata[key] = ownerdata[key];
|
936 | });
|
937 | _$jscoverage['manikin-mongodb.js'][377]++;
|
938 | return saveFunc(indata);
|
939 | }));
|
940 | }
|
941 | };
|
942 | _$jscoverage['manikin-mongodb.js'][381]++;
|
943 | api.list = function (model, filter, callback) {
|
944 | _$jscoverage['manikin-mongodb.js'][382]++;
|
945 | var defaultSort, rr;
|
946 | _$jscoverage['manikin-mongodb.js'][383]++;
|
947 | filter = preprocFilter(filter);
|
948 | _$jscoverage['manikin-mongodb.js'][384]++;
|
949 | defaultSort = specmodels[model].defaultSort;
|
950 | _$jscoverage['manikin-mongodb.js'][385]++;
|
951 | rr = models[model].find(filter);
|
952 | _$jscoverage['manikin-mongodb.js'][386]++;
|
953 | if (defaultSort != null) {
|
954 | _$jscoverage['manikin-mongodb.js'][387]++;
|
955 | rr = rr.sort(_.object([[
|
956 | defaultSort,
|
957 | 'asc'
|
958 | ]]));
|
959 | }
|
960 | _$jscoverage['manikin-mongodb.js'][389]++;
|
961 | return rr.exec(massaged(callback));
|
962 | };
|
963 | _$jscoverage['manikin-mongodb.js'][391]++;
|
964 | api.getOne = function (model, config, callback) {
|
965 | _$jscoverage['manikin-mongodb.js'][392]++;
|
966 | var filter;
|
967 | _$jscoverage['manikin-mongodb.js'][393]++;
|
968 | filter = preprocFilter(config.filter || {});
|
969 | _$jscoverage['manikin-mongodb.js'][394]++;
|
970 | return models[model].findOne(filter, function (err, data) {
|
971 | _$jscoverage['manikin-mongodb.js'][395]++;
|
972 | if (err) {
|
973 | _$jscoverage['manikin-mongodb.js'][396]++;
|
974 | if (err.toString() === 'Error: Invalid ObjectId') {
|
975 | _$jscoverage['manikin-mongodb.js'][397]++;
|
976 | callback(new Error('No such id'));
|
977 | } else {
|
978 | _$jscoverage['manikin-mongodb.js'][399]++;
|
979 | callback(err);
|
980 | }
|
981 | } else {
|
982 | _$jscoverage['manikin-mongodb.js'][401]++;
|
983 | if (!(data != null)) {
|
984 | _$jscoverage['manikin-mongodb.js'][402]++;
|
985 | return callback(new Error('No match'));
|
986 | } else {
|
987 | _$jscoverage['manikin-mongodb.js'][404]++;
|
988 | return callback(null, massage(data));
|
989 | }
|
990 | }
|
991 | });
|
992 | };
|
993 | _$jscoverage['manikin-mongodb.js'][408]++;
|
994 | api.delOne = function (model, filter, callback) {
|
995 | _$jscoverage['manikin-mongodb.js'][409]++;
|
996 | filter = preprocFilter(filter);
|
997 | _$jscoverage['manikin-mongodb.js'][410]++;
|
998 | return models[model].findOne(filter, function (err, d) {
|
999 | _$jscoverage['manikin-mongodb.js'][411]++;
|
1000 | if (err) {
|
1001 | _$jscoverage['manikin-mongodb.js'][412]++;
|
1002 | if (err.toString() === 'Error: Invalid ObjectId') {
|
1003 | _$jscoverage['manikin-mongodb.js'][413]++;
|
1004 | return callback(new Error('No such id'));
|
1005 | } else {
|
1006 | _$jscoverage['manikin-mongodb.js'][415]++;
|
1007 | return callback(err);
|
1008 | }
|
1009 | } else {
|
1010 | _$jscoverage['manikin-mongodb.js'][417]++;
|
1011 | if (!(d != null)) {
|
1012 | _$jscoverage['manikin-mongodb.js'][418]++;
|
1013 | return callback(new Error('No such id'));
|
1014 | } else {
|
1015 | _$jscoverage['manikin-mongodb.js'][420]++;
|
1016 | return d.remove(function (err) {
|
1017 | _$jscoverage['manikin-mongodb.js'][421]++;
|
1018 | return callback(err, !err ? massage(d) : void 0);
|
1019 | });
|
1020 | }
|
1021 | }
|
1022 | });
|
1023 | };
|
1024 | _$jscoverage['manikin-mongodb.js'][426]++;
|
1025 | api.putOne = function (modelName, data, filter, callback) {
|
1026 | _$jscoverage['manikin-mongodb.js'][427]++;
|
1027 | var inputFields, inputFieldsValid, invalidFields, model, validField;
|
1028 | _$jscoverage['manikin-mongodb.js'][428]++;
|
1029 | filter = preprocFilter(filter);
|
1030 | _$jscoverage['manikin-mongodb.js'][429]++;
|
1031 | model = models[modelName];
|
1032 | _$jscoverage['manikin-mongodb.js'][430]++;
|
1033 | inputFieldsValid = getKeys(data);
|
1034 | _$jscoverage['manikin-mongodb.js'][431]++;
|
1035 | inputFields = Object.keys(data);
|
1036 | _$jscoverage['manikin-mongodb.js'][432]++;
|
1037 | validField = Object.keys(model.schema.paths);
|
1038 | _$jscoverage['manikin-mongodb.js'][433]++;
|
1039 | invalidFields = _.difference(inputFieldsValid, validField);
|
1040 | _$jscoverage['manikin-mongodb.js'][434]++;
|
1041 | if (invalidFields.length > 0) {
|
1042 | _$jscoverage['manikin-mongodb.js'][435]++;
|
1043 | callback(new Error('Invalid fields: ' + invalidFields.join(', ')));
|
1044 | _$jscoverage['manikin-mongodb.js'][436]++;
|
1045 | return;
|
1046 | }
|
1047 | _$jscoverage['manikin-mongodb.js'][438]++;
|
1048 | return model.findOne(filter, function (err, d) {
|
1049 | _$jscoverage['manikin-mongodb.js'][439]++;
|
1050 | if (err != null) {
|
1051 | _$jscoverage['manikin-mongodb.js'][440]++;
|
1052 | if (err.message === 'Invalid ObjectId') {
|
1053 | _$jscoverage['manikin-mongodb.js'][441]++;
|
1054 | callback(new Error('No such id'));
|
1055 | } else {
|
1056 | _$jscoverage['manikin-mongodb.js'][443]++;
|
1057 | callback(err);
|
1058 | }
|
1059 | _$jscoverage['manikin-mongodb.js'][445]++;
|
1060 | return;
|
1061 | }
|
1062 | _$jscoverage['manikin-mongodb.js'][447]++;
|
1063 | if (!(d != null)) {
|
1064 | _$jscoverage['manikin-mongodb.js'][448]++;
|
1065 | callback(new Error('No such id'));
|
1066 | _$jscoverage['manikin-mongodb.js'][449]++;
|
1067 | return;
|
1068 | }
|
1069 | _$jscoverage['manikin-mongodb.js'][451]++;
|
1070 | inputFields.forEach(function (key) {
|
1071 | _$jscoverage['manikin-mongodb.js'][452]++;
|
1072 | return d[key] = data[key];
|
1073 | });
|
1074 | _$jscoverage['manikin-mongodb.js'][454]++;
|
1075 | return d.save(function (err) {
|
1076 | _$jscoverage['manikin-mongodb.js'][455]++;
|
1077 | return callback(err, err ? null : massage(d));
|
1078 | });
|
1079 | });
|
1080 | };
|
1081 | _$jscoverage['manikin-mongodb.js'][459]++;
|
1082 | api.delMany = function (primaryModel, primaryId, propertyName, secondaryId, callback) {
|
1083 | _$jscoverage['manikin-mongodb.js'][460]++;
|
1084 | var inverseName, mm, secondaryModel;
|
1085 | _$jscoverage['manikin-mongodb.js'][461]++;
|
1086 | mm = getMeta(primaryModel).manyToMany.filter(function (x) {
|
1087 | _$jscoverage['manikin-mongodb.js'][462]++;
|
1088 | return x.name === propertyName;
|
1089 | })[0];
|
1090 | _$jscoverage['manikin-mongodb.js'][464]++;
|
1091 | if (!(mm != null)) {
|
1092 | _$jscoverage['manikin-mongodb.js'][465]++;
|
1093 | callback(new Error('Invalid many-to-many property'));
|
1094 | _$jscoverage['manikin-mongodb.js'][466]++;
|
1095 | return;
|
1096 | }
|
1097 | _$jscoverage['manikin-mongodb.js'][468]++;
|
1098 | secondaryModel = mm.ref;
|
1099 | _$jscoverage['manikin-mongodb.js'][469]++;
|
1100 | inverseName = mm.inverseName;
|
1101 | _$jscoverage['manikin-mongodb.js'][470]++;
|
1102 | return async.forEach([
|
1103 | {
|
1104 | model: primaryModel,
|
1105 | id: primaryId,
|
1106 | property: propertyName,
|
1107 | secondaryId: secondaryId
|
1108 | },
|
1109 | {
|
1110 | model: secondaryModel,
|
1111 | id: secondaryId,
|
1112 | property: inverseName,
|
1113 | secondaryId: primaryId
|
1114 | }
|
1115 | ], function (item, callback) {
|
1116 | _$jscoverage['manikin-mongodb.js'][483]++;
|
1117 | return models[item.model].findById(item.id, propagate(callback, function (data) {
|
1118 | _$jscoverage['manikin-mongodb.js'][484]++;
|
1119 | var conditions, options, update;
|
1120 | _$jscoverage['manikin-mongodb.js'][485]++;
|
1121 | conditions = { _id: item.id };
|
1122 | _$jscoverage['manikin-mongodb.js'][488]++;
|
1123 | update = {
|
1124 | $pull: _.object([[
|
1125 | item.property,
|
1126 | item.secondaryId
|
1127 | ]])
|
1128 | };
|
1129 | _$jscoverage['manikin-mongodb.js'][491]++;
|
1130 | options = {};
|
1131 | _$jscoverage['manikin-mongodb.js'][492]++;
|
1132 | return models[item.model].update(conditions, update, options, function (err, numAffected) {
|
1133 | _$jscoverage['manikin-mongodb.js'][493]++;
|
1134 | return callback(err);
|
1135 | });
|
1136 | }));
|
1137 | }, callback);
|
1138 | };
|
1139 | _$jscoverage['manikin-mongodb.js'][498]++;
|
1140 | insertOps = [];
|
1141 | _$jscoverage['manikin-mongodb.js'][499]++;
|
1142 | api.postMany = function (primaryModel, primaryId, propertyName, secondaryId, callback) {
|
1143 | _$jscoverage['manikin-mongodb.js'][500]++;
|
1144 | var hasAlready, insertOpMatch, insertOpNow, inverseName, mm, secondaryModel;
|
1145 | _$jscoverage['manikin-mongodb.js'][501]++;
|
1146 | mm = getMeta(primaryModel).manyToMany.filter(function (x) {
|
1147 | _$jscoverage['manikin-mongodb.js'][502]++;
|
1148 | return x.name === propertyName;
|
1149 | })[0];
|
1150 | _$jscoverage['manikin-mongodb.js'][504]++;
|
1151 | if (!(mm != null)) {
|
1152 | _$jscoverage['manikin-mongodb.js'][505]++;
|
1153 | callback(new Error('Invalid many-to-many property'));
|
1154 | _$jscoverage['manikin-mongodb.js'][506]++;
|
1155 | return;
|
1156 | }
|
1157 | _$jscoverage['manikin-mongodb.js'][508]++;
|
1158 | secondaryModel = mm.ref;
|
1159 | _$jscoverage['manikin-mongodb.js'][509]++;
|
1160 | inverseName = mm.inverseName;
|
1161 | _$jscoverage['manikin-mongodb.js'][510]++;
|
1162 | insertOpNow = [
|
1163 | {
|
1164 | primaryModel: primaryModel,
|
1165 | primaryId: primaryId,
|
1166 | propertyName: propertyName,
|
1167 | secondaryId: secondaryId
|
1168 | },
|
1169 | {
|
1170 | primaryModel: secondaryModel,
|
1171 | primaryId: secondaryId,
|
1172 | propertyName: inverseName,
|
1173 | secondaryId: primaryId
|
1174 | }
|
1175 | ];
|
1176 | _$jscoverage['manikin-mongodb.js'][523]++;
|
1177 | insertOpMatch = function (x1, x2) {
|
1178 | _$jscoverage['manikin-mongodb.js'][524]++;
|
1179 | return x1.primaryModel === x2.primaryModel && x1.primaryId === x2.primaryId && x1.propertyName === x2.propertyName && x1.secondaryId === x2.secondaryId;
|
1180 | };
|
1181 | _$jscoverage['manikin-mongodb.js'][526]++;
|
1182 | hasAlready = insertOps.some(function (x) {
|
1183 | _$jscoverage['manikin-mongodb.js'][527]++;
|
1184 | return insertOpNow.some(function (y) {
|
1185 | _$jscoverage['manikin-mongodb.js'][528]++;
|
1186 | return insertOpMatch(x, y);
|
1187 | });
|
1188 | });
|
1189 | _$jscoverage['manikin-mongodb.js'][531]++;
|
1190 | if (hasAlready) {
|
1191 | _$jscoverage['manikin-mongodb.js'][532]++;
|
1192 | callback(null, { status: 'insert already in progress' });
|
1193 | _$jscoverage['manikin-mongodb.js'][535]++;
|
1194 | return;
|
1195 | }
|
1196 | _$jscoverage['manikin-mongodb.js'][537]++;
|
1197 | insertOpNow.forEach(function (op) {
|
1198 | _$jscoverage['manikin-mongodb.js'][538]++;
|
1199 | return insertOps.push(op);
|
1200 | });
|
1201 | _$jscoverage['manikin-mongodb.js'][540]++;
|
1202 | return async.map(insertOpNow, function (item, callback) {
|
1203 | _$jscoverage['manikin-mongodb.js'][541]++;
|
1204 | return models[item.primaryModel].findById(item.primaryId, callback);
|
1205 | }, propagate(callback, function (datas) {
|
1206 | _$jscoverage['manikin-mongodb.js'][543]++;
|
1207 | var updated;
|
1208 | _$jscoverage['manikin-mongodb.js'][544]++;
|
1209 | updated = [
|
1210 | false,
|
1211 | false
|
1212 | ];
|
1213 | _$jscoverage['manikin-mongodb.js'][545]++;
|
1214 | insertOpNow.forEach(function (conf, i) {
|
1215 | _$jscoverage['manikin-mongodb.js'][546]++;
|
1216 | if (-1 === datas[i][conf.propertyName].indexOf(conf.secondaryId)) {
|
1217 | _$jscoverage['manikin-mongodb.js'][547]++;
|
1218 | datas[i][conf.propertyName].push(conf.secondaryId);
|
1219 | _$jscoverage['manikin-mongodb.js'][548]++;
|
1220 | return updated[i] = true;
|
1221 | }
|
1222 | });
|
1223 | _$jscoverage['manikin-mongodb.js'][551]++;
|
1224 | return async.forEach([
|
1225 | 0,
|
1226 | 1
|
1227 | ], function (index, callback) {
|
1228 | _$jscoverage['manikin-mongodb.js'][552]++;
|
1229 | if (updated[index]) {
|
1230 | _$jscoverage['manikin-mongodb.js'][553]++;
|
1231 | return datas[index].save(callback);
|
1232 | } else {
|
1233 | _$jscoverage['manikin-mongodb.js'][555]++;
|
1234 | return callback();
|
1235 | }
|
1236 | }, function (err) {
|
1237 | _$jscoverage['manikin-mongodb.js'][558]++;
|
1238 | if (err) {
|
1239 | _$jscoverage['manikin-mongodb.js'][559]++;
|
1240 | return callback(err);
|
1241 | }
|
1242 | _$jscoverage['manikin-mongodb.js'][561]++;
|
1243 | insertOps = insertOps.filter(function (x) {
|
1244 | _$jscoverage['manikin-mongodb.js'][562]++;
|
1245 | return !_(insertOpNow).contains(x);
|
1246 | });
|
1247 | _$jscoverage['manikin-mongodb.js'][564]++;
|
1248 | return callback(null, {
|
1249 | status: updated.some(function (x) {
|
1250 | _$jscoverage['manikin-mongodb.js'][566]++;
|
1251 | return x;
|
1252 | }) ? 'inserted' : 'already inserted'
|
1253 | });
|
1254 | });
|
1255 | }));
|
1256 | };
|
1257 | _$jscoverage['manikin-mongodb.js'][572]++;
|
1258 | api.getMany = function (primaryModel, primaryId, propertyName, callback) {
|
1259 | _$jscoverage['manikin-mongodb.js'][573]++;
|
1260 | return models[primaryModel].findOne({ _id: primaryId }).populate(propertyName).exec(function (err, story) {
|
1261 | _$jscoverage['manikin-mongodb.js'][576]++;
|
1262 | return callback(err, massage(story[propertyName]));
|
1263 | });
|
1264 | };
|
1265 | _$jscoverage['manikin-mongodb.js'][579]++;
|
1266 | return api;
|
1267 | };
|
1268 | }.call(this));
|
1269 | _$jscoverage['manikin-mongodb.js'].source = ["// Generated by CoffeeScript 1.4.0","(function() {"," \"use strict\";",""," var async, getKeys, massage, massageCore, massageOne, massaged, preprocFilter, propagate, tools, _,"," __slice = [].slice;",""," async = require('async');",""," _ = require('underscore');",""," tools = require('./manikin-tools');",""," preprocFilter = function(filter) {"," var x;"," x = _.extend({}, filter);"," if (x.id) {"," x._id = x.id;"," }"," delete x.id;"," return x;"," };",""," massageOne = function(x) {"," if (!(x != null)) {"," return x;"," }"," x.id = x._id;"," delete x._id;"," return x;"," };",""," massageCore = function(r2) {"," if (Array.isArray(r2)) {"," return r2.map(massageOne);"," } else {"," return massageOne(r2);"," }"," };",""," massage = function(r2) {"," return massageCore(JSON.parse(JSON.stringify(r2)));"," };",""," massaged = function(f) {"," return function(err, data) {"," if (err) {"," return f(err);"," } else {"," return f(null, massage(data));"," }"," };"," };",""," propagate = function(callback, f) {"," return function() {"," var args, err;"," err = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];"," if (err) {"," return callback(err);"," } else {"," return f.apply(this, args);"," }"," };"," };",""," getKeys = function(data, target, prefix) {"," var valids;"," if (target == null) {"," target = [];"," }"," if (prefix == null) {"," prefix = '';"," }"," valids = ['Array', 'String', 'Boolean', 'Date', 'Number', 'Null'];"," Object.keys(data).forEach(function(key) {"," if (valids.some(function(x) {"," return _(data[key])['is' + x]();"," })) {"," return target.push(prefix + key);"," } else {"," return getKeys(data[key], target, prefix + key + '.');"," }"," });"," return target;"," };",""," exports.create = function() {"," var Mixed, ObjectID, ObjectId, Schema, api, defModels, getMeta, insertOps, internalListSub, key, makeModel, metaData, models, mongoose, nullablesValidation, preRemoveCascadeNonNullable, preRemoveCascadeNullable, specTransform, specmodels;"," if (process.env.NODE_ENV !== 'production') {"," for (key in require.cache) {"," delete require.cache[key];"," }"," }"," mongoose = require('mongoose');"," Schema = mongoose.Schema;"," Mixed = mongoose.Schema.Types.Mixed;"," ObjectID = mongoose.mongo.ObjectID;"," ObjectId = mongoose.Schema.ObjectId;"," api = {};"," models = {};"," specmodels = {};"," metaData = null;"," makeModel = function(connection, name, schema) {"," var ss;"," ss = new Schema(schema, {"," strict: true"," });"," ss.set('versionKey', false);"," return connection.model(name, ss, name);"," };"," getMeta = function(modelName) {"," return metaData[modelName];"," };"," nullablesValidation = function(schema) {"," return function(next) {"," var nonNullOuters, outers, paths, self;"," self = this;"," paths = schema.paths;"," outers = Object.keys(paths).filter(function(x) {"," return paths[x].options.type === ObjectId && typeof paths[x].options.ref === 'string' && !paths[x].options['x-owner'];"," }).map(function(x) {"," return {"," plur: paths[x].options.ref,"," sing: x,"," validation: paths[x].options['x-validation']"," };"," });"," nonNullOuters = outers.filter(function(x) {"," return self[x.sing] != null;"," });"," return async.forEach(nonNullOuters, function(o, callback) {"," return api.getOne(o.plur, {"," id: self[o.sing]"," }, function(err, data) {"," if (err || !data) {"," return callback(new Error(\"Invalid pointer\"));"," } else if (o.validation) {"," return o.validation(self, data, function(err) {"," return callback(err ? new Error(err) : void 0);"," });"," } else {"," return callback();"," }"," });"," }, next);"," };"," };"," internalListSub = function(model, outer, id, filter, callback) {"," var finalFilter;"," if ((filter[outer] != null) && filter[outer].toString() !== id.toString()) {"," callback(new Error('No such id'));"," return;"," }"," filter = preprocFilter(filter);"," finalFilter = _.extend({}, filter, _.object([[outer, id]]));"," return models[model].find(finalFilter, callback);"," };"," preRemoveCascadeNonNullable = function(owner, id, next) {"," var manys;"," manys = getMeta(owner.modelName).manyToMany;"," return async.forEach(manys, function(many, callback) {"," var obj;"," obj = _.object([[many.inverseName, id]]);"," return models[many.ref].update(obj, {"," $pull: obj"," }, callback);"," }, function(err) {"," var flattenedModels;"," if (err) {"," return next(err);"," }"," flattenedModels = getMeta(owner.modelName).owns;"," return async.forEach(flattenedModels, function(mod, callback) {"," return internalListSub(mod.name, mod.field, id, {}, propagate(callback, function(data) {"," return async.forEach(data, function(item, callback) {"," return item.remove(callback);"," }, callback);"," }));"," }, next);"," });"," };"," preRemoveCascadeNullable = function(owner, id, next) {"," var flattenedModels, ownedModels;"," ownedModels = Object.keys(models).map(function(modelName) {"," var paths;"," paths = models[modelName].schema.paths;"," return Object.keys(paths).filter(function(x) {"," return paths[x].options.type === ObjectId && paths[x].options.ref === owner.modelName && !paths[x].options['x-owner'];"," }).map(function(x) {"," return {"," name: modelName,"," field: x"," };"," });"," });"," flattenedModels = _.flatten(ownedModels);"," return async.forEach(flattenedModels, function(mod, callback) {"," return internalListSub(mod.name, mod.field, id, {}, propagate(callback, function(data) {"," return async.forEach(data, function(item, callback) {"," item[mod.field] = null;"," item.save();"," return callback();"," }, callback);"," }));"," }, next);"," };"," specTransform = function(allspec, modelName, tgt, src, keys) {"," return keys.forEach(function(key) {"," if (src[key].type === 'mixed') {"," return tgt[key] = {"," type: Mixed"," };"," } else if (src[key].type === 'nested') {"," tgt[key] = {};"," return specTransform(allspec, modelName, tgt[key], src[key], _.without(Object.keys(src[key]), 'type'));"," } else if (src[key].type === 'string') {"," tgt[key] = _.extend({}, src[key], {"," type: String"," });"," if (src[key].validate != null) {"," return tgt[key].validate = function(value, callback) {"," return src[key].validate(api, value, callback);"," };"," }"," } else if (src[key].type === 'number') {"," return tgt[key] = _.extend({}, src[key], {"," type: Number"," });"," } else if (src[key].type === 'date') {"," return tgt[key] = _.extend({}, src[key], {"," type: Date"," });"," } else if (src[key].type === 'boolean') {"," return tgt[key] = _.extend({}, src[key], {"," type: Boolean"," });"," } else if (src[key].type === 'hasOne') {"," return tgt[key] = {"," ref: src[key].model,"," 'x-validation': src[key].validation"," };"," } else if (src[key].type === 'hasMany') {"," tgt[key] = ["," {"," type: ObjectId,"," ref: src[key].model,"," inverseName: src[key].inverseName"," }"," ];"," return allspec[src[key].model][src[key].inverseName] = ["," {"," type: ObjectId,"," ref: modelName,"," inverseName: key"," }"," ];"," }"," });"," };"," defModels = function(models) {"," var allspec, newrest, toDef;"," specmodels = tools.desugar(models);"," toDef = [];"," newrest = {};"," allspec = {};"," Object.keys(specmodels).forEach(function(modelName) {"," return allspec[modelName] = {};"," });"," Object.keys(specmodels).forEach(function(modelName) {"," var inspec, owners, spec;"," spec = allspec[modelName];"," owners = specmodels[modelName].owners || {};"," inspec = specmodels[modelName].fields || {};"," specTransform(allspec, modelName, spec, inspec, Object.keys(inspec));"," return newrest[modelName] = _.extend({}, specmodels[modelName], {"," fields: spec"," });"," });"," Object.keys(newrest).forEach(function(modelName) {"," var conf;"," conf = newrest[modelName];"," Object.keys(conf.owners).forEach(function(ownerName) {"," return conf.fields[ownerName] = {"," type: ObjectId,"," ref: conf.owners[ownerName],"," required: true,"," 'x-owner': true"," };"," });"," Object.keys(conf.indirectOwners).forEach(function(p) {"," return conf.fields[p] = {"," type: ObjectId,"," ref: conf.indirectOwners[p],"," required: true,"," 'x-indirect-owner': true"," };"," });"," Object.keys(conf.fields).forEach(function(fieldName) {"," if (conf.fields[fieldName].ref != null) {"," return conf.fields[fieldName].type = ObjectId;"," }"," });"," return toDef.push([modelName, newrest[modelName]]);"," });"," metaData = tools.getMeta(specmodels);"," return toDef;"," };"," (function() {"," var connection;"," connection = null;"," api.connect = function(databaseUrl, inputModels, callback) {"," try {"," connection = mongoose.createConnection(databaseUrl);"," defModels(inputModels).forEach(function(_arg) {"," var name, v;"," name = _arg[0], v = _arg[1];"," models[name] = makeModel(connection, name, v.fields);"," models[name].schema.pre('save', nullablesValidation(models[name].schema));"," models[name].schema.pre('remove', function(next) {"," return preRemoveCascadeNonNullable(models[name], this._id.toString(), next);"," });"," return models[name].schema.pre('remove', function(next) {"," return preRemoveCascadeNullable(models[name], this._id.toString(), next);"," });"," });"," } catch (ex) {"," callback(ex);"," return;"," }"," return callback();"," };"," return api.close = function(callback) {"," connection.close();"," return callback();"," };"," })();"," api.post = function(model, indata, callback) {"," var owners, ownersOwners, ownersRaw, saveFunc;"," saveFunc = function(data) {"," return new models[model](data).save(function(err) {"," var fieldMatch, valueMatch;"," if (err && err.code === 11000) {"," fieldMatch = err.err.match(/([a-zA-Z]+)_1/);"," valueMatch = err.err.match(/\"([a-zA-Z]+)\"/);"," if (fieldMatch && valueMatch) {"," return callback(new Error(\"Duplicate value '\" + valueMatch[1] + \"' for \" + fieldMatch[1]));"," } else {"," return callback(new Error(\"Unique constraint violated\"));"," }"," } else {"," return massaged(callback).apply(this, arguments);"," }"," });"," };"," ownersRaw = getMeta(model).owners;"," owners = _(ownersRaw).pluck('plur');"," ownersOwners = _.flatten(owners.map(function(x) {"," return getMeta(x).owners;"," }));"," if (ownersOwners.length === 0) {"," return saveFunc(indata);"," } else {"," return api.getOne(owners[0], {"," filter: {"," id: indata[ownersRaw[0].sing]"," }"," }, propagate(callback, function(ownerdata) {"," var metaFields, paths;"," paths = models[owners[0]].schema.paths;"," metaFields = Object.keys(paths).filter(function(key) {"," return !!paths[key].options['x-owner'] || !!paths[key].options['x-indirect-owner'];"," });"," metaFields.forEach(function(key) {"," return indata[key] = ownerdata[key];"," });"," return saveFunc(indata);"," }));"," }"," };"," api.list = function(model, filter, callback) {"," var defaultSort, rr;"," filter = preprocFilter(filter);"," defaultSort = specmodels[model].defaultSort;"," rr = models[model].find(filter);"," if (defaultSort != null) {"," rr = rr.sort(_.object([[defaultSort, 'asc']]));"," }"," return rr.exec(massaged(callback));"," };"," api.getOne = function(model, config, callback) {"," var filter;"," filter = preprocFilter(config.filter || {});"," return models[model].findOne(filter, function(err, data) {"," if (err) {"," if (err.toString() === 'Error: Invalid ObjectId') {"," callback(new Error('No such id'));"," } else {"," callback(err);"," }"," } else if (!(data != null)) {"," return callback(new Error('No match'));"," } else {"," return callback(null, massage(data));"," }"," });"," };"," api.delOne = function(model, filter, callback) {"," filter = preprocFilter(filter);"," return models[model].findOne(filter, function(err, d) {"," if (err) {"," if (err.toString() === 'Error: Invalid ObjectId') {"," return callback(new Error('No such id'));"," } else {"," return callback(err);"," }"," } else if (!(d != null)) {"," return callback(new Error('No such id'));"," } else {"," return d.remove(function(err) {"," return callback(err, !err ? massage(d) : void 0);"," });"," }"," });"," };"," api.putOne = function(modelName, data, filter, callback) {"," var inputFields, inputFieldsValid, invalidFields, model, validField;"," filter = preprocFilter(filter);"," model = models[modelName];"," inputFieldsValid = getKeys(data);"," inputFields = Object.keys(data);"," validField = Object.keys(model.schema.paths);"," invalidFields = _.difference(inputFieldsValid, validField);"," if (invalidFields.length > 0) {"," callback(new Error(\"Invalid fields: \" + invalidFields.join(', ')));"," return;"," }"," return model.findOne(filter, function(err, d) {"," if (err != null) {"," if (err.message === 'Invalid ObjectId') {"," callback(new Error(\"No such id\"));"," } else {"," callback(err);"," }"," return;"," }"," if (!(d != null)) {"," callback(new Error(\"No such id\"));"," return;"," }"," inputFields.forEach(function(key) {"," return d[key] = data[key];"," });"," return d.save(function(err) {"," return callback(err, err ? null : massage(d));"," });"," });"," };"," api.delMany = function(primaryModel, primaryId, propertyName, secondaryId, callback) {"," var inverseName, mm, secondaryModel;"," mm = getMeta(primaryModel).manyToMany.filter(function(x) {"," return x.name === propertyName;"," })[0];"," if (!(mm != null)) {"," callback(new Error('Invalid many-to-many property'));"," return;"," }"," secondaryModel = mm.ref;"," inverseName = mm.inverseName;"," return async.forEach(["," {"," model: primaryModel,"," id: primaryId,"," property: propertyName,"," secondaryId: secondaryId"," }, {"," model: secondaryModel,"," id: secondaryId,"," property: inverseName,"," secondaryId: primaryId"," }"," ], function(item, callback) {"," return models[item.model].findById(item.id, propagate(callback, function(data) {"," var conditions, options, update;"," conditions = {"," _id: item.id"," };"," update = {"," $pull: _.object([[item.property, item.secondaryId]])"," };"," options = {};"," return models[item.model].update(conditions, update, options, function(err, numAffected) {"," return callback(err);"," });"," }));"," }, callback);"," };"," insertOps = [];"," api.postMany = function(primaryModel, primaryId, propertyName, secondaryId, callback) {"," var hasAlready, insertOpMatch, insertOpNow, inverseName, mm, secondaryModel;"," mm = getMeta(primaryModel).manyToMany.filter(function(x) {"," return x.name === propertyName;"," })[0];"," if (!(mm != null)) {"," callback(new Error('Invalid many-to-many property'));"," return;"," }"," secondaryModel = mm.ref;"," inverseName = mm.inverseName;"," insertOpNow = ["," {"," primaryModel: primaryModel,"," primaryId: primaryId,"," propertyName: propertyName,"," secondaryId: secondaryId"," }, {"," primaryModel: secondaryModel,"," primaryId: secondaryId,"," propertyName: inverseName,"," secondaryId: primaryId"," }"," ];"," insertOpMatch = function(x1, x2) {"," return x1.primaryModel === x2.primaryModel && x1.primaryId === x2.primaryId && x1.propertyName === x2.propertyName && x1.secondaryId === x2.secondaryId;"," };"," hasAlready = insertOps.some(function(x) {"," return insertOpNow.some(function(y) {"," return insertOpMatch(x, y);"," });"," });"," if (hasAlready) {"," callback(null, {"," status: 'insert already in progress'"," });"," return;"," }"," insertOpNow.forEach(function(op) {"," return insertOps.push(op);"," });"," return async.map(insertOpNow, function(item, callback) {"," return models[item.primaryModel].findById(item.primaryId, callback);"," }, propagate(callback, function(datas) {"," var updated;"," updated = [false, false];"," insertOpNow.forEach(function(conf, i) {"," if (-1 === datas[i][conf.propertyName].indexOf(conf.secondaryId)) {"," datas[i][conf.propertyName].push(conf.secondaryId);"," return updated[i] = true;"," }"," });"," return async.forEach([0, 1], function(index, callback) {"," if (updated[index]) {"," return datas[index].save(callback);"," } else {"," return callback();"," }"," }, function(err) {"," if (err) {"," return callback(err);"," }"," insertOps = insertOps.filter(function(x) {"," return !_(insertOpNow).contains(x);"," });"," return callback(null, {"," status: (updated.some(function(x) {"," return x;"," }) ? 'inserted' : 'already inserted')"," });"," });"," }));"," };"," api.getMany = function(primaryModel, primaryId, propertyName, callback) {"," return models[primaryModel].findOne({"," _id: primaryId"," }).populate(propertyName).exec(function(err, story) {"," return callback(err, massage(story[propertyName]));"," });"," };"," return api;"," };","","}).call(this);"]; |
\ | No newline at end of file |