Переглянути джерело

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
         // start these browsers
55
         // start these browsers
56
         // available browser launchers:
56
         // available browser launchers:
57
         // https://npmjs.org/browse/keyword/karma-launcher
57
         // https://npmjs.org/browse/keyword/karma-launcher
58
-        browsers: [ 'PhantomJS' ],
58
+        browsers: [ 'ChromeHeadless' ],
59
 
59
 
60
         // Continuous Integration mode
60
         // Continuous Integration mode
61
         // if true, Karma captures browsers, runs the tests and exits
61
         // if true, Karma captures browsers, runs the tests and exits

+ 11
- 22
modules/xmpp/ChatRoom.js Переглянути файл

15
 
15
 
16
 const logger = getLogger(__filename);
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
             const node = {
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
                 node.attributes[attr.name] = attr.value;
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
             if (text) {
32
             if (text) {
41
                 node.value = text;
33
                 node.value = text;
42
             }
34
             }
43
-            node.children = [];
44
             nodes.push(node);
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
     json2packet(nodes, packet) {
39
     json2packet(nodes, packet) {
51
         for (let i = 0; i < nodes.length; i++) {
40
         for (let i = 0; i < nodes.length; i++) {

+ 129
- 0
modules/xmpp/ChatRoom.spec.js Переглянути файл

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
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
396
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
397
       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
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
     "aws4": {
399
     "aws4": {
406
       "version": "1.6.0",
400
       "version": "1.6.0",
407
       "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
401
       "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
1334
         "type-is": "1.6.15"
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
     "bowser": {
1331
     "bowser": {
1347
       "version": "1.9.1",
1332
       "version": "1.9.1",
1348
       "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.1.tgz",
1333
       "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.1.tgz",
1493
     "cacache": {
1478
     "cacache": {
1494
       "version": "10.0.4",
1479
       "version": "10.0.4",
1495
       "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
1480
       "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
1496
-      "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
1481
+      "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=",
1497
       "dev": true,
1482
       "dev": true,
1498
       "requires": {
1483
       "requires": {
1499
         "bluebird": "3.5.1",
1484
         "bluebird": "3.5.1",
1514
         "y18n": {
1499
         "y18n": {
1515
           "version": "4.0.0",
1500
           "version": "4.0.0",
1516
           "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
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
           "dev": true
1503
           "dev": true
1519
         }
1504
         }
1520
       }
1505
       }
1884
         "which": "1.3.0"
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
     "crypto-browserify": {
1872
     "crypto-browserify": {
1908
       "version": "3.12.0",
1873
       "version": "3.12.0",
1909
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
1874
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
2154
     "duplexify": {
2119
     "duplexify": {
2155
       "version": "3.5.4",
2120
       "version": "3.5.4",
2156
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
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
       "dev": true,
2123
       "dev": true,
2159
       "requires": {
2124
       "requires": {
2160
         "end-of-stream": "1.4.1",
2125
         "end-of-stream": "1.4.1",
2385
         "event-emitter": "0.3.5"
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
     "es6-set": {
2353
     "es6-set": {
2395
       "version": "0.1.5",
2354
       "version": "0.1.5",
2396
       "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
2355
       "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
2846
         "is-extglob": "1.0.0"
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
     "extsprintf": {
2808
     "extsprintf": {
2873
       "version": "1.3.0",
2809
       "version": "1.3.0",
2874
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
2810
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
2892
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2828
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2893
       "dev": true
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
     "figures": {
2831
     "figures": {
2905
       "version": "2.0.0",
2832
       "version": "2.0.0",
2906
       "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
2833
       "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
3030
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
2957
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
3031
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
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
     "from2": {
2960
     "from2": {
3045
       "version": "2.3.0",
2961
       "version": "2.3.0",
3046
       "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
2962
       "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
3060
         "null-check": "1.0.0"
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
     "fs-write-stream-atomic": {
2979
     "fs-write-stream-atomic": {
3075
       "version": "1.0.10",
2980
       "version": "1.0.10",
3076
       "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
2981
       "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
3450
       "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3355
       "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3451
       "dev": true
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
     "has": {
3358
     "has": {
3470
       "version": "1.0.1",
3359
       "version": "1.0.1",
3471
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
3360
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
3539
         "minimalistic-assert": "1.0.0"
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
     "hmac-drbg": {
3431
     "hmac-drbg": {
3565
       "version": "1.0.1",
3432
       "version": "1.0.1",
3566
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
3433
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
3572
         "minimalistic-crypto-utils": "1.0.1"
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
     "home-or-tmp": {
3442
     "home-or-tmp": {
3582
       "version": "2.0.0",
3443
       "version": "2.0.0",
3583
       "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
3444
       "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
3663
         "requires-port": "1.0.0"
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
     "https-browserify": {
3527
     "https-browserify": {
3678
       "version": "1.0.0",
3528
       "version": "1.0.0",
3679
       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
3529
       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
4130
       "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
3980
       "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
4131
       "dev": true
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
     "jsonify": {
3983
     "jsonify": {
4143
       "version": "0.0.0",
3984
       "version": "0.0.0",
4144
       "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
3985
       "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
4206
       }
4047
       }
4207
     },
4048
     },
4208
     "karma-chrome-launcher": {
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
       "dev": true,
4053
       "dev": true,
4213
       "requires": {
4054
       "requires": {
4214
         "fs-access": "1.0.1",
4055
         "fs-access": "1.0.1",
4221
       "integrity": "sha1-W2RXeRrZuJqhc/B54+vhuMgFI2w=",
4062
       "integrity": "sha1-W2RXeRrZuJqhc/B54+vhuMgFI2w=",
4222
       "dev": true
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
     "karma-webpack": {
4065
     "karma-webpack": {
4235
       "version": "1.8.1",
4066
       "version": "1.8.1",
4236
       "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.1.tgz",
4067
       "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.1.tgz",
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
     "kind-of": {
4107
     "kind-of": {
4283
       "version": "3.2.2",
4108
       "version": "3.2.2",
4284
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4109
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4288
         "is-buffer": "1.1.6"
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
     "lazy-cache": {
4116
     "lazy-cache": {
4301
       "version": "1.0.4",
4117
       "version": "1.0.4",
4302
       "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
4118
       "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
4590
     "mississippi": {
4406
     "mississippi": {
4591
       "version": "2.0.0",
4407
       "version": "2.0.0",
4592
       "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
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
       "dev": true,
4410
       "dev": true,
4595
       "requires": {
4411
       "requires": {
4596
         "concat-stream": "1.6.0",
4412
         "concat-stream": "1.6.0",
5246
         "sha.js": "2.4.9"
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
     "pify": {
5065
     "pify": {
5287
       "version": "3.0.0",
5066
       "version": "3.0.0",
5288
       "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
5067
       "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
5407
     "pump": {
5186
     "pump": {
5408
       "version": "2.0.1",
5187
       "version": "2.0.1",
5409
       "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
5188
       "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
5410
-      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
5189
+      "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
5411
       "dev": true,
5190
       "dev": true,
5412
       "requires": {
5191
       "requires": {
5413
         "end-of-stream": "1.4.1",
5192
         "end-of-stream": "1.4.1",
5699
         "is-finite": "1.0.2"
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
     "require-directory": {
5481
     "require-directory": {
5742
       "version": "2.1.1",
5482
       "version": "2.1.1",
5743
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
5483
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
5868
     "schema-utils": {
5608
     "schema-utils": {
5869
       "version": "0.4.5",
5609
       "version": "0.4.5",
5870
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
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
       "dev": true,
5612
       "dev": true,
5873
       "requires": {
5613
       "requires": {
5874
         "ajv": "6.2.1",
5614
         "ajv": "6.2.1",
6008
         "is-fullwidth-code-point": "2.0.0"
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
     "socket.io": {
5751
     "socket.io": {
6021
       "version": "1.7.4",
5752
       "version": "1.7.4",
6022
       "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
5753
       "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
6452
       "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6183
       "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6453
       "dev": true
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
     "through": {
6186
     "through": {
6462
       "version": "2.3.8",
6187
       "version": "2.3.8",
6463
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
6188
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
6578
     "uglify-es": {
6303
     "uglify-es": {
6579
       "version": "3.3.9",
6304
       "version": "3.3.9",
6580
       "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
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
       "dev": true,
6307
       "dev": true,
6583
       "requires": {
6308
       "requires": {
6584
         "commander": "2.13.0",
6309
         "commander": "2.13.0",
6588
         "source-map": {
6313
         "source-map": {
6589
           "version": "0.6.1",
6314
           "version": "0.6.1",
6590
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6315
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6591
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6316
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6592
           "dev": true
6317
           "dev": true
6593
         }
6318
         }
6594
       }
6319
       }
6603
     "uglifyjs-webpack-plugin": {
6328
     "uglifyjs-webpack-plugin": {
6604
       "version": "1.2.2",
6329
       "version": "1.2.2",
6605
       "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz",
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
       "dev": true,
6332
       "dev": true,
6608
       "requires": {
6333
       "requires": {
6609
         "cacache": "10.0.4",
6334
         "cacache": "10.0.4",
6619
         "source-map": {
6344
         "source-map": {
6620
           "version": "0.6.1",
6345
           "version": "0.6.1",
6621
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6346
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6622
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6347
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6623
           "dev": true
6348
           "dev": true
6624
         }
6349
         }
6625
       }
6350
       }
6986
         "errno": {
6711
         "errno": {
6987
           "version": "0.1.7",
6712
           "version": "0.1.7",
6988
           "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
6713
           "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
6989
-          "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
6714
+          "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
6990
           "dev": true,
6715
           "dev": true,
6991
           "requires": {
6716
           "requires": {
6992
             "prr": "1.0.1"
6717
             "prr": "1.0.1"
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
     "yeast": {
6893
     "yeast": {
7178
       "version": "0.1.2",
6894
       "version": "0.1.2",
7179
       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
6895
       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",

+ 1
- 2
package.json Переглянути файл

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

Завантаження…
Відмінити
Зберегти