Преглед на файлове

Packet2json refactor (#721)

* refactor packet2JSON to not use jquery

also added unit tests for it and switched to use chrome-headless instead
of phantomjs

* update package-lock

* squash: undo sha512 to sha1 conversion in package-lock
dev1
bbaldino преди 7 години
родител
ревизия
2ea6773e0e
променени са 5 файла, в които са добавени 156 реда и са изтрити 323 реда
  1. 1
    1
      karma.conf.js
  2. 11
    22
      modules/xmpp/ChatRoom.js
  3. 129
    0
      modules/xmpp/ChatRoom.spec.js
  4. 14
    298
      package-lock.json
  5. 1
    2
      package.json

+ 1
- 1
karma.conf.js Целия файл

@@ -55,7 +55,7 @@ module.exports = function(config) {
55 55
         // start these browsers
56 56
         // available browser launchers:
57 57
         // https://npmjs.org/browse/keyword/karma-launcher
58
-        browsers: [ 'PhantomJS' ],
58
+        browsers: [ 'ChromeHeadless' ],
59 59
 
60 60
         // Continuous Integration mode
61 61
         // if true, Karma captures browsers, runs the tests and exits

+ 11
- 22
modules/xmpp/ChatRoom.js Целия файл

@@ -15,37 +15,26 @@ import Recorder from './recording';
15 15
 
16 16
 const logger = getLogger(__filename);
17 17
 
18
-const parser = {
19
-    packet2JSON(packet, nodes) {
20
-        const self = this;
21
-
22
-        // eslint-disable-next-line newline-per-chained-call
23
-        $(packet).children().each(function() {
24
-            // eslint-disable-next-line no-invalid-this
25
-            const tagName = $(this).prop('tagName');
18
+export const parser = {
19
+    packet2JSON(xmlElement, nodes) {
20
+        for (const child of Array.from(xmlElement.children)) {
26 21
             const node = {
27
-                tagName
22
+                attributes: {},
23
+                children: [],
24
+                tagName: child.tagName
28 25
             };
29 26
 
30
-            node.attributes = {};
31
-
32
-            // eslint-disable-next-line no-invalid-this
33
-            $($(this)[0].attributes).each((index, attr) => {
27
+            for (const attr of Array.from(child.attributes)) {
34 28
                 node.attributes[attr.name] = attr.value;
35
-            });
36
-
37
-            // eslint-disable-next-line no-invalid-this
38
-            const text = Strophe.getText($(this)[0]);
29
+            }
30
+            const text = Strophe.getText(child);
39 31
 
40 32
             if (text) {
41 33
                 node.value = text;
42 34
             }
43
-            node.children = [];
44 35
             nodes.push(node);
45
-
46
-            // eslint-disable-next-line no-invalid-this
47
-            self.packet2JSON($(this), node.children);
48
-        });
36
+            this.packet2JSON(child, node.children);
37
+        }
49 38
     },
50 39
     json2packet(nodes, packet) {
51 40
         for (let i = 0; i < nodes.length; i++) {

+ 129
- 0
modules/xmpp/ChatRoom.spec.js Целия файл

@@ -0,0 +1,129 @@
1
+import { parser } from './ChatRoom';
2
+import { $pres } from 'strophe.js';
3
+
4
+// This rule makes creating the xml elements take up way more
5
+// space than necessary.
6
+/* eslint-disable newline-per-chained-call */
7
+
8
+describe('ChatRoom', () => {
9
+    describe('packet2JSON', () => {
10
+        let nodes = [];
11
+
12
+        beforeEach(() => {
13
+            nodes = [];
14
+        });
15
+
16
+        it('translates attributes correctly', () => {
17
+            const p = $pres({
18
+                to: 'tojid',
19
+                from: 'fromjid'
20
+            })
21
+            .c('fake-with-attr', {
22
+                fakeAttr1: 'attrValue1',
23
+                fakeAttr2: 'attrValue2'
24
+            }).up();
25
+
26
+            parser.packet2JSON(p.tree(), nodes);
27
+            expect(nodes.length).toBe(1);
28
+
29
+            const fakeWithAttr = nodes
30
+                .find(n => n.tagName === 'fake-with-attr');
31
+
32
+            expect(fakeWithAttr).toBeTruthy();
33
+            expect(Object.keys(fakeWithAttr.attributes).length).toEqual(2);
34
+            expect(fakeWithAttr.attributes.fakeAttr1).toBeTruthy();
35
+            expect(fakeWithAttr.attributes.fakeAttr1).toEqual('attrValue1');
36
+            expect(fakeWithAttr.attributes.fakeAttr2).toBeTruthy();
37
+            expect(fakeWithAttr.attributes.fakeAttr2).toEqual('attrValue2');
38
+            expect(fakeWithAttr.children.length).toEqual(0);
39
+            expect(fakeWithAttr.value).toBeFalsy();
40
+        });
41
+
42
+        it('translates element text correctly', () => {
43
+            const p = $pres({
44
+                to: 'tojid',
45
+                from: 'fromjid'
46
+            })
47
+            .c('user-agent').t('user-agent-text').up();
48
+
49
+            parser.packet2JSON(p.tree(), nodes);
50
+
51
+            expect(nodes.length).toBe(1);
52
+            const userAgent = nodes.find(n => n.tagName === 'user-agent');
53
+
54
+            expect(userAgent).toBeTruthy();
55
+            expect(Object.keys(userAgent.attributes).length).toEqual(0);
56
+            expect(userAgent.children.length).toEqual(0);
57
+            expect(userAgent.value).toEqual('user-agent-text');
58
+        });
59
+
60
+        it('translates elements with children correctly', () => {
61
+            const p = $pres({
62
+                to: 'tojid',
63
+                from: 'fromjid'
64
+            })
65
+            .c('identity')
66
+                .c('user')
67
+                    .c('id').t('id-text').up()
68
+                    .c('name').t('name-text').up()
69
+                    .c('avatar').t('avatar-text').up()
70
+                .up()
71
+                .c('group').t('group-text').up()
72
+            .up();
73
+
74
+            parser.packet2JSON(p.tree(), nodes);
75
+
76
+            const identity = nodes.find(n => n.tagName === 'identity');
77
+
78
+            expect(identity).toBeTruthy();
79
+            expect(Object.keys(identity.attributes).length).toEqual(0);
80
+            expect(identity.children.length).toEqual(2);
81
+            {
82
+                const user = identity.children
83
+                    .find(n => n.tagName === 'user');
84
+
85
+                expect(user).toBeTruthy();
86
+                expect(Object.keys(user.attributes).length).toEqual(0);
87
+                expect(user.children.length).toEqual(3);
88
+                {
89
+                    const id = user.children
90
+                        .find(n => n.tagName === 'id');
91
+
92
+                    expect(id).toBeTruthy();
93
+                    expect(Object.keys(id.attributes).length).toEqual(0);
94
+                    expect(id.children.length).toEqual(0);
95
+                    expect(id.value).toEqual('id-text');
96
+                }
97
+                {
98
+                    const name = user.children
99
+                        .find(n => n.tagName === 'name');
100
+
101
+                    expect(name).toBeTruthy();
102
+                    expect(Object.keys(name.attributes).length).toEqual(0);
103
+                    expect(name.children.length).toEqual(0);
104
+                    expect(name.value).toEqual('name-text');
105
+                }
106
+                {
107
+                    const avatar = user.children
108
+                        .find(n => n.tagName === 'avatar');
109
+
110
+                    expect(avatar).toBeTruthy();
111
+                    expect(Object.keys(avatar.attributes).length).toEqual(0);
112
+                    expect(avatar.children.length).toEqual(0);
113
+                    expect(avatar.value).toEqual('avatar-text');
114
+                }
115
+                expect(user.value).toBeFalsy();
116
+            }
117
+            {
118
+                const group = identity.children
119
+                    .find(n => n.tagName === 'group');
120
+
121
+                expect(group).toBeTruthy();
122
+                expect(Object.keys(group.attributes).length).toEqual(0);
123
+                expect(group.children.length).toEqual(0);
124
+                expect(group.value).toEqual('group-text');
125
+            }
126
+            expect(identity.value).toBeFalsy();
127
+        });
128
+    });
129
+});

+ 14
- 298
package-lock.json Целия файл

@@ -396,12 +396,6 @@
396 396
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
397 397
       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
398 398
     },
399
-    "aws-sign2": {
400
-      "version": "0.7.0",
401
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
402
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
403
-      "dev": true
404
-    },
405 399
     "aws4": {
406 400
       "version": "1.6.0",
407 401
       "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
@@ -1334,15 +1328,6 @@
1334 1328
         "type-is": "1.6.15"
1335 1329
       }
1336 1330
     },
1337
-    "boom": {
1338
-      "version": "4.3.1",
1339
-      "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
1340
-      "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
1341
-      "dev": true,
1342
-      "requires": {
1343
-        "hoek": "4.2.0"
1344
-      }
1345
-    },
1346 1331
     "bowser": {
1347 1332
       "version": "1.9.1",
1348 1333
       "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.1.tgz",
@@ -1493,7 +1478,7 @@
1493 1478
     "cacache": {
1494 1479
       "version": "10.0.4",
1495 1480
       "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
1496
-      "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
1481
+      "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=",
1497 1482
       "dev": true,
1498 1483
       "requires": {
1499 1484
         "bluebird": "3.5.1",
@@ -1514,7 +1499,7 @@
1514 1499
         "y18n": {
1515 1500
           "version": "4.0.0",
1516 1501
           "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
1517
-          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
1502
+          "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=",
1518 1503
           "dev": true
1519 1504
         }
1520 1505
       }
@@ -1884,26 +1869,6 @@
1884 1869
         "which": "1.3.0"
1885 1870
       }
1886 1871
     },
1887
-    "cryptiles": {
1888
-      "version": "3.1.2",
1889
-      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
1890
-      "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
1891
-      "dev": true,
1892
-      "requires": {
1893
-        "boom": "5.2.0"
1894
-      },
1895
-      "dependencies": {
1896
-        "boom": {
1897
-          "version": "5.2.0",
1898
-          "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
1899
-          "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
1900
-          "dev": true,
1901
-          "requires": {
1902
-            "hoek": "4.2.0"
1903
-          }
1904
-        }
1905
-      }
1906
-    },
1907 1872
     "crypto-browserify": {
1908 1873
       "version": "3.12.0",
1909 1874
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -2154,7 +2119,7 @@
2154 2119
     "duplexify": {
2155 2120
       "version": "3.5.4",
2156 2121
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
2157
-      "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==",
2122
+      "integrity": "sha1-S7RsF5bqvr7sTKmi5muAjLej2LQ=",
2158 2123
       "dev": true,
2159 2124
       "requires": {
2160 2125
         "end-of-stream": "1.4.1",
@@ -2385,12 +2350,6 @@
2385 2350
         "event-emitter": "0.3.5"
2386 2351
       }
2387 2352
     },
2388
-    "es6-promise": {
2389
-      "version": "4.2.2",
2390
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz",
2391
-      "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==",
2392
-      "dev": true
2393
-    },
2394 2353
     "es6-set": {
2395 2354
       "version": "0.1.5",
2396 2355
       "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
@@ -2846,29 +2805,6 @@
2846 2805
         "is-extglob": "1.0.0"
2847 2806
       }
2848 2807
     },
2849
-    "extract-zip": {
2850
-      "version": "1.6.6",
2851
-      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
2852
-      "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
2853
-      "dev": true,
2854
-      "requires": {
2855
-        "concat-stream": "1.6.0",
2856
-        "debug": "2.6.9",
2857
-        "mkdirp": "0.5.0",
2858
-        "yauzl": "2.4.1"
2859
-      },
2860
-      "dependencies": {
2861
-        "mkdirp": {
2862
-          "version": "0.5.0",
2863
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
2864
-          "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
2865
-          "dev": true,
2866
-          "requires": {
2867
-            "minimist": "0.0.8"
2868
-          }
2869
-        }
2870
-      }
2871
-    },
2872 2808
     "extsprintf": {
2873 2809
       "version": "1.3.0",
2874 2810
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -2892,15 +2828,6 @@
2892 2828
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2893 2829
       "dev": true
2894 2830
     },
2895
-    "fd-slicer": {
2896
-      "version": "1.0.1",
2897
-      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
2898
-      "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
2899
-      "dev": true,
2900
-      "requires": {
2901
-        "pend": "1.2.0"
2902
-      }
2903
-    },
2904 2831
     "figures": {
2905 2832
       "version": "2.0.0",
2906 2833
       "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@@ -3030,17 +2957,6 @@
3030 2957
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
3031 2958
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
3032 2959
     },
3033
-    "form-data": {
3034
-      "version": "2.3.1",
3035
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
3036
-      "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
3037
-      "dev": true,
3038
-      "requires": {
3039
-        "asynckit": "0.4.0",
3040
-        "combined-stream": "1.0.5",
3041
-        "mime-types": "2.1.17"
3042
-      }
3043
-    },
3044 2960
     "from2": {
3045 2961
       "version": "2.3.0",
3046 2962
       "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
@@ -3060,17 +2976,6 @@
3060 2976
         "null-check": "1.0.0"
3061 2977
       }
3062 2978
     },
3063
-    "fs-extra": {
3064
-      "version": "1.0.0",
3065
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
3066
-      "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
3067
-      "dev": true,
3068
-      "requires": {
3069
-        "graceful-fs": "4.1.11",
3070
-        "jsonfile": "2.4.0",
3071
-        "klaw": "1.3.1"
3072
-      }
3073
-    },
3074 2979
     "fs-write-stream-atomic": {
3075 2980
       "version": "1.0.10",
3076 2981
       "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
@@ -3450,22 +3355,6 @@
3450 3355
       "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3451 3356
       "dev": true
3452 3357
     },
3453
-    "har-schema": {
3454
-      "version": "2.0.0",
3455
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
3456
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
3457
-      "dev": true
3458
-    },
3459
-    "har-validator": {
3460
-      "version": "5.0.3",
3461
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
3462
-      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
3463
-      "dev": true,
3464
-      "requires": {
3465
-        "ajv": "5.5.2",
3466
-        "har-schema": "2.0.0"
3467
-      }
3468
-    },
3469 3358
     "has": {
3470 3359
       "version": "1.0.1",
3471 3360
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
@@ -3539,28 +3428,6 @@
3539 3428
         "minimalistic-assert": "1.0.0"
3540 3429
       }
3541 3430
     },
3542
-    "hasha": {
3543
-      "version": "2.2.0",
3544
-      "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
3545
-      "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
3546
-      "dev": true,
3547
-      "requires": {
3548
-        "is-stream": "1.1.0",
3549
-        "pinkie-promise": "2.0.1"
3550
-      }
3551
-    },
3552
-    "hawk": {
3553
-      "version": "6.0.2",
3554
-      "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
3555
-      "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
3556
-      "dev": true,
3557
-      "requires": {
3558
-        "boom": "4.3.1",
3559
-        "cryptiles": "3.1.2",
3560
-        "hoek": "4.2.0",
3561
-        "sntp": "2.1.0"
3562
-      }
3563
-    },
3564 3431
     "hmac-drbg": {
3565 3432
       "version": "1.0.1",
3566 3433
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -3572,12 +3439,6 @@
3572 3439
         "minimalistic-crypto-utils": "1.0.1"
3573 3440
       }
3574 3441
     },
3575
-    "hoek": {
3576
-      "version": "4.2.0",
3577
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
3578
-      "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
3579
-      "dev": true
3580
-    },
3581 3442
     "home-or-tmp": {
3582 3443
       "version": "2.0.0",
3583 3444
       "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
@@ -3663,17 +3524,6 @@
3663 3524
         "requires-port": "1.0.0"
3664 3525
       }
3665 3526
     },
3666
-    "http-signature": {
3667
-      "version": "1.2.0",
3668
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
3669
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
3670
-      "dev": true,
3671
-      "requires": {
3672
-        "assert-plus": "1.0.0",
3673
-        "jsprim": "1.4.1",
3674
-        "sshpk": "1.13.1"
3675
-      }
3676
-    },
3677 3527
     "https-browserify": {
3678 3528
       "version": "1.0.0",
3679 3529
       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
@@ -4130,15 +3980,6 @@
4130 3980
       "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
4131 3981
       "dev": true
4132 3982
     },
4133
-    "jsonfile": {
4134
-      "version": "2.4.0",
4135
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
4136
-      "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
4137
-      "dev": true,
4138
-      "requires": {
4139
-        "graceful-fs": "4.1.11"
4140
-      }
4141
-    },
4142 3983
     "jsonify": {
4143 3984
       "version": "0.0.0",
4144 3985
       "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
@@ -4206,9 +4047,9 @@
4206 4047
       }
4207 4048
     },
4208 4049
     "karma-chrome-launcher": {
4209
-      "version": "0.2.3",
4210
-      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz",
4211
-      "integrity": "sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk=",
4050
+      "version": "2.2.0",
4051
+      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
4052
+      "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=",
4212 4053
       "dev": true,
4213 4054
       "requires": {
4214 4055
         "fs-access": "1.0.1",
@@ -4221,16 +4062,6 @@
4221 4062
       "integrity": "sha1-W2RXeRrZuJqhc/B54+vhuMgFI2w=",
4222 4063
       "dev": true
4223 4064
     },
4224
-    "karma-phantomjs-launcher": {
4225
-      "version": "1.0.4",
4226
-      "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz",
4227
-      "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=",
4228
-      "dev": true,
4229
-      "requires": {
4230
-        "lodash": "4.17.4",
4231
-        "phantomjs-prebuilt": "2.1.16"
4232
-      }
4233
-    },
4234 4065
     "karma-webpack": {
4235 4066
       "version": "1.8.1",
4236 4067
       "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.1.tgz",
@@ -4273,12 +4104,6 @@
4273 4104
         }
4274 4105
       }
4275 4106
     },
4276
-    "kew": {
4277
-      "version": "0.7.0",
4278
-      "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
4279
-      "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
4280
-      "dev": true
4281
-    },
4282 4107
     "kind-of": {
4283 4108
       "version": "3.2.2",
4284 4109
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -4288,15 +4113,6 @@
4288 4113
         "is-buffer": "1.1.6"
4289 4114
       }
4290 4115
     },
4291
-    "klaw": {
4292
-      "version": "1.3.1",
4293
-      "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
4294
-      "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
4295
-      "dev": true,
4296
-      "requires": {
4297
-        "graceful-fs": "4.1.11"
4298
-      }
4299
-    },
4300 4116
     "lazy-cache": {
4301 4117
       "version": "1.0.4",
4302 4118
       "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
@@ -4590,7 +4406,7 @@
4590 4406
     "mississippi": {
4591 4407
       "version": "2.0.0",
4592 4408
       "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
4593
-      "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
4409
+      "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=",
4594 4410
       "dev": true,
4595 4411
       "requires": {
4596 4412
         "concat-stream": "1.6.0",
@@ -5246,43 +5062,6 @@
5246 5062
         "sha.js": "2.4.9"
5247 5063
       }
5248 5064
     },
5249
-    "pend": {
5250
-      "version": "1.2.0",
5251
-      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
5252
-      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
5253
-      "dev": true
5254
-    },
5255
-    "performance-now": {
5256
-      "version": "2.1.0",
5257
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
5258
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
5259
-      "dev": true
5260
-    },
5261
-    "phantomjs-prebuilt": {
5262
-      "version": "2.1.16",
5263
-      "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
5264
-      "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
5265
-      "dev": true,
5266
-      "requires": {
5267
-        "es6-promise": "4.2.2",
5268
-        "extract-zip": "1.6.6",
5269
-        "fs-extra": "1.0.0",
5270
-        "hasha": "2.2.0",
5271
-        "kew": "0.7.0",
5272
-        "progress": "1.1.8",
5273
-        "request": "2.83.0",
5274
-        "request-progress": "2.0.1",
5275
-        "which": "1.3.0"
5276
-      },
5277
-      "dependencies": {
5278
-        "progress": {
5279
-          "version": "1.1.8",
5280
-          "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
5281
-          "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
5282
-          "dev": true
5283
-        }
5284
-      }
5285
-    },
5286 5065
     "pify": {
5287 5066
       "version": "3.0.0",
5288 5067
       "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -5407,7 +5186,7 @@
5407 5186
     "pump": {
5408 5187
       "version": "2.0.1",
5409 5188
       "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
5410
-      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
5189
+      "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
5411 5190
       "dev": true,
5412 5191
       "requires": {
5413 5192
         "end-of-stream": "1.4.1",
@@ -5699,45 +5478,6 @@
5699 5478
         "is-finite": "1.0.2"
5700 5479
       }
5701 5480
     },
5702
-    "request": {
5703
-      "version": "2.83.0",
5704
-      "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
5705
-      "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
5706
-      "dev": true,
5707
-      "requires": {
5708
-        "aws-sign2": "0.7.0",
5709
-        "aws4": "1.6.0",
5710
-        "caseless": "0.12.0",
5711
-        "combined-stream": "1.0.5",
5712
-        "extend": "3.0.1",
5713
-        "forever-agent": "0.6.1",
5714
-        "form-data": "2.3.1",
5715
-        "har-validator": "5.0.3",
5716
-        "hawk": "6.0.2",
5717
-        "http-signature": "1.2.0",
5718
-        "is-typedarray": "1.0.0",
5719
-        "isstream": "0.1.2",
5720
-        "json-stringify-safe": "5.0.1",
5721
-        "mime-types": "2.1.17",
5722
-        "oauth-sign": "0.8.2",
5723
-        "performance-now": "2.1.0",
5724
-        "qs": "6.5.1",
5725
-        "safe-buffer": "5.1.1",
5726
-        "stringstream": "0.0.5",
5727
-        "tough-cookie": "2.3.3",
5728
-        "tunnel-agent": "0.6.0",
5729
-        "uuid": "3.2.1"
5730
-      }
5731
-    },
5732
-    "request-progress": {
5733
-      "version": "2.0.1",
5734
-      "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
5735
-      "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
5736
-      "dev": true,
5737
-      "requires": {
5738
-        "throttleit": "1.0.0"
5739
-      }
5740
-    },
5741 5481
     "require-directory": {
5742 5482
       "version": "2.1.1",
5743 5483
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -5868,7 +5608,7 @@
5868 5608
     "schema-utils": {
5869 5609
       "version": "0.4.5",
5870 5610
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
5871
-      "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
5611
+      "integrity": "sha1-IYNvBgiqwXt4+ePiTa/xSlyhOj4=",
5872 5612
       "dev": true,
5873 5613
       "requires": {
5874 5614
         "ajv": "6.2.1",
@@ -6008,15 +5748,6 @@
6008 5748
         "is-fullwidth-code-point": "2.0.0"
6009 5749
       }
6010 5750
     },
6011
-    "sntp": {
6012
-      "version": "2.1.0",
6013
-      "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
6014
-      "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
6015
-      "dev": true,
6016
-      "requires": {
6017
-        "hoek": "4.2.0"
6018
-      }
6019
-    },
6020 5751
     "socket.io": {
6021 5752
       "version": "1.7.4",
6022 5753
       "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
@@ -6452,12 +6183,6 @@
6452 6183
       "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6453 6184
       "dev": true
6454 6185
     },
6455
-    "throttleit": {
6456
-      "version": "1.0.0",
6457
-      "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
6458
-      "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
6459
-      "dev": true
6460
-    },
6461 6186
     "through": {
6462 6187
       "version": "2.3.8",
6463 6188
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -6578,7 +6303,7 @@
6578 6303
     "uglify-es": {
6579 6304
       "version": "3.3.9",
6580 6305
       "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
6581
-      "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
6306
+      "integrity": "sha1-DBxPBwC+2NvBJM2zBNJZLKID5nc=",
6582 6307
       "dev": true,
6583 6308
       "requires": {
6584 6309
         "commander": "2.13.0",
@@ -6588,7 +6313,7 @@
6588 6313
         "source-map": {
6589 6314
           "version": "0.6.1",
6590 6315
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6591
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6316
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6592 6317
           "dev": true
6593 6318
         }
6594 6319
       }
@@ -6603,7 +6328,7 @@
6603 6328
     "uglifyjs-webpack-plugin": {
6604 6329
       "version": "1.2.2",
6605 6330
       "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz",
6606
-      "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==",
6331
+      "integrity": "sha1-51FtQ2ev23FcOEeEHrRvlMRcork=",
6607 6332
       "dev": true,
6608 6333
       "requires": {
6609 6334
         "cacache": "10.0.4",
@@ -6619,7 +6344,7 @@
6619 6344
         "source-map": {
6620 6345
           "version": "0.6.1",
6621 6346
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6622
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6347
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6623 6348
           "dev": true
6624 6349
         }
6625 6350
       }
@@ -6986,7 +6711,7 @@
6986 6711
         "errno": {
6987 6712
           "version": "0.1.7",
6988 6713
           "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
6989
-          "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
6714
+          "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
6990 6715
           "dev": true,
6991 6716
           "requires": {
6992 6717
             "prr": "1.0.1"
@@ -7165,15 +6890,6 @@
7165 6890
         }
7166 6891
       }
7167 6892
     },
7168
-    "yauzl": {
7169
-      "version": "2.4.1",
7170
-      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
7171
-      "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
7172
-      "dev": true,
7173
-      "requires": {
7174
-        "fd-slicer": "1.0.1"
7175
-      }
7176
-    },
7177 6893
     "yeast": {
7178 6894
       "version": "0.1.2",
7179 6895
       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",

+ 1
- 2
package.json Целия файл

@@ -43,9 +43,8 @@
43 43
     "flow-bin": "0.57.3",
44 44
     "jasmine-core": "2.5.2",
45 45
     "karma": "0.13.22",
46
-    "karma-chrome-launcher": "0.2.3",
46
+    "karma-chrome-launcher": "2.2.0",
47 47
     "karma-jasmine": "0.3.8",
48
-    "karma-phantomjs-launcher": "1.0.4",
49 48
     "karma-webpack": "1.8.1",
50 49
     "precommit-hook": "3.0.0",
51 50
     "string-replace-loader": "1.3.0",

Loading…
Отказ
Запис