diff --git a/package-lock.json b/package-lock.json
index 81067f782..5bb6bd97f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4793,12 +4793,6 @@
"through": ">=2.2.7 <3"
}
},
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -4885,12 +4879,6 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
"dev": true
},
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
"angular-calendar": {
"version": "0.29.0-beta.1",
"resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.29.0-beta.1.tgz",
@@ -5026,16 +5014,6 @@
"integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==",
"dev": true
},
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
"arg": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz",
@@ -5079,12 +5057,6 @@
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
"array-flat-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz",
@@ -5228,12 +5200,6 @@
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
"dev": true
},
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
- "dev": true
- },
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
@@ -5403,24 +5369,6 @@
"object.assign": "^4.1.0"
}
},
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
- "requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
- },
- "dependencies": {
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- }
- }
- },
"backo2": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
@@ -5547,15 +5495,6 @@
"integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
"dev": true
},
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
"blocking-proxy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
@@ -5939,24 +5878,6 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- }
- }
- },
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -6537,12 +6458,6 @@
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
"dev": true
},
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -7157,15 +7072,6 @@
}
}
},
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
"custom-event": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
@@ -7581,12 +7487,6 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -8262,57 +8162,6 @@
}
}
},
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "dev": true,
- "requires": {
- "fill-range": "^2.1.0"
- },
- "dependencies": {
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
- }
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
@@ -8643,12 +8492,6 @@
}
}
},
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
"fileset": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
@@ -8768,12 +8611,6 @@
}
}
},
- "find-index": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
- "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
- "dev": true
- },
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
@@ -8831,15 +8668,6 @@
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -9493,86 +9321,12 @@
}
}
},
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- }
- },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
- "dev": true,
- "requires": {
- "globule": "^1.0.0"
- }
- },
"genfun": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
@@ -9590,12 +9344,6 @@
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -9651,42 +9399,6 @@
"path-is-absolute": "^1.0.0"
}
},
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
"glob-parent": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
@@ -9696,15 +9408,6 @@
"is-glob": "^4.0.1"
}
},
- "glob2base": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
- "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
- "dev": true,
- "requires": {
- "find-index": "^0.1.1"
- }
- },
"global-dirs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
@@ -9742,17 +9445,6 @@
}
}
},
- "globule": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz",
- "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==",
- "dev": true,
- "requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
- }
- },
"graceful-fs": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
@@ -9840,12 +9532,6 @@
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
"dev": true
},
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -10226,12 +9912,6 @@
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
- "in-publish": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
- "dev": true
- },
"indent-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
@@ -10368,12 +10048,6 @@
"ipaddr.js": "^1.9.0"
}
},
- "interpret": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
- "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
- "dev": true
- },
"invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -10545,21 +10219,6 @@
"integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
"dev": true
},
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "dev": true,
- "requires": {
- "is-primitive": "^2.0.0"
- }
- },
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -10571,12 +10230,6 @@
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
- "is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true
- },
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
@@ -10691,18 +10344,6 @@
"isobject": "^3.0.1"
}
},
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
- },
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
@@ -10754,12 +10395,6 @@
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -11035,12 +10670,6 @@
}
}
},
- "js-base64": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
- "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
- "dev": true
- },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -11669,45 +11298,6 @@
}
}
},
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- }
- }
- },
"loader-runner": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
@@ -11891,16 +11481,6 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -11971,12 +11551,6 @@
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
"map-stream": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
@@ -11997,12 +11571,6 @@
"resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz",
"integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78="
},
- "math-random": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
- "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
- "dev": true
- },
"md5.js": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@@ -12036,24 +11604,6 @@
"readable-stream": "^2.0.1"
}
},
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- }
- },
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -12397,651 +11947,66 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
- },
- "multicast-dns": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
- "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
- "dev": true,
- "requires": {
- "dns-packet": "^1.3.1",
- "thunky": "^1.0.2"
- }
- },
- "multicast-dns-service-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
- "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
- },
- "nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
- "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
- "dev": true
- },
- "ngmakelib": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/ngmakelib/-/ngmakelib-0.2.6.tgz",
- "integrity": "sha512-/osi6KbSCr+Tu3epUd+QOyUpYvLyqnhfcs3urunC8ceAt/zdrm9CxDSSc6yKbX4l+r04ZdT1XowNir4JgKvCAA==",
- "dev": true,
- "requires": {
- "@angular/compiler-cli": "^9.1.7",
- "cpx": "^1.5.0",
- "node-sass": "^4.14.1",
- "rollup": "^0.50.0",
- "shelljs": "^0.7.8"
- },
- "dependencies": {
- "@angular/compiler-cli": {
- "version": "9.1.7",
- "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.7.tgz",
- "integrity": "sha512-8HT8+UuSohrXlF90eewG2XuhtOEIfJ2UlijnSB10/+ZyroSdTKckoiFSps86nTd/EfrBblqNUMbwjOxIkzac3w==",
- "dev": true,
- "requires": {
- "canonical-path": "1.0.0",
- "chokidar": "^3.0.0",
- "convert-source-map": "^1.5.1",
- "dependency-graph": "^0.7.2",
- "fs-extra": "4.0.2",
- "magic-string": "^0.25.0",
- "minimist": "^1.2.0",
- "reflect-metadata": "^0.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.6.1",
- "sourcemap-codec": "^1.4.8",
- "yargs": "15.3.0"
- },
- "dependencies": {
- "yargs": {
- "version": "15.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz",
- "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==",
- "dev": true,
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.0"
- }
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
- "dev": true,
- "requires": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "cpx": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz",
- "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.9.2",
- "chokidar": "^1.6.0",
- "duplexer": "^0.1.1",
- "glob": "^7.0.5",
- "glob2base": "^0.0.12",
- "minimatch": "^3.0.2",
- "mkdirp": "^0.5.1",
- "resolve": "^1.1.7",
- "safe-buffer": "^5.0.1",
- "shell-quote": "^1.6.1",
- "subarg": "^1.0.0"
- },
- "dependencies": {
- "anymatch": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
- "dev": true,
- "requires": {
- "micromatch": "^2.1.5",
- "normalize-path": "^2.0.0"
- }
- },
- "chokidar": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
- "dev": true,
- "requires": {
- "anymatch": "^1.3.0",
- "async-each": "^1.0.0",
- "fsevents": "^1.0.0",
- "glob-parent": "^2.0.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^2.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "cross-spawn": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- },
- "dependencies": {
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "node-sass": {
- "version": "4.14.1",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
- "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
- "dev": true,
- "requires": {
- "async-foreach": "^0.1.3",
- "chalk": "^1.1.1",
- "cross-spawn": "^3.0.0",
- "gaze": "^1.0.0",
- "get-stdin": "^4.0.1",
- "glob": "^7.0.3",
- "in-publish": "^2.0.0",
- "lodash": "^4.17.15",
- "meow": "^3.7.0",
- "mkdirp": "^0.5.1",
- "nan": "^2.13.2",
- "node-gyp": "^3.8.0",
- "npmlog": "^4.0.0",
- "request": "^2.88.0",
- "sass-graph": "2.2.5",
- "stdout-stream": "^1.4.0",
- "true-case-path": "^1.0.2"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "sass-graph": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
- "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "lodash": "^4.0.0",
- "scss-tokenizer": "^0.2.3",
- "yargs": "^13.3.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- }
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
}
},
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -13065,45 +12030,6 @@
"integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
"dev": true
},
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "dev": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- },
- "dependencies": {
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true
- },
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "dev": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- }
- }
- },
"node-libs-browser": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
@@ -13160,15 +12086,6 @@
}
}
},
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -16819,18 +15736,6 @@
"path-key": "^2.0.0"
}
},
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -17035,16 +15940,6 @@
"es-abstract": "^1.5.1"
}
},
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
- }
- },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -17400,35 +16295,6 @@
"safe-buffer": "^5.1.1"
}
},
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
"parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@@ -18311,12 +17177,6 @@
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
"dev": true
},
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
"pretty-bytes": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz",
@@ -18495,12 +17355,6 @@
"event-stream": "=3.3.4"
}
},
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
"psl": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
@@ -18619,25 +17473,6 @@
"integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==",
"dev": true
},
- "randomatic": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
- "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -18734,67 +17569,6 @@
"util-promisify": "^2.1.0"
}
},
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
@@ -18833,36 +17607,6 @@
"readable-stream": "^2.0.2"
}
},
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- },
- "dependencies": {
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- }
- }
- },
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -18899,15 +17643,6 @@
"private": "^0.1.8"
}
},
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "dev": true,
- "requires": {
- "is-equal-shallow": "^0.1.3"
- }
- },
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
@@ -19064,15 +17799,6 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
@@ -19240,12 +17966,6 @@
"inherits": "^2.0.1"
}
},
- "rollup": {
- "version": "0.50.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.1.tgz",
- "integrity": "sha512-XwrnqjSTk+yR8GbP6hiJuVe83MVmBw/gm4P3qP34A10fRXvv6ppl0ZUg1+Pj1tIZSR/aw5ZaILLEiVxwXIAdAw==",
- "dev": true
- },
"rrule": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/rrule/-/rrule-2.6.4.tgz",
@@ -19277,9 +17997,8 @@
}
},
"runbox-searchindex": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/runbox-searchindex/-/runbox-searchindex-0.1.0.tgz",
- "integrity": "sha512-eTJQx6vMjr7yfu0zSfpAd3tJ/BF0ST0h8FtDtEBr5Ejhg/Dv5QlDi43FsdBhLp29lujcLH8d12wz9+S7KU/JpA=="
+ "version": "https://registry.npmjs.org/@runbox-tadzik/runbox-searchindex/-/runbox-searchindex-0.2.0.tgz",
+ "integrity": "sha512-j5wFHYRKUmcAdoU/vMlTQHRbPAv/VjHl1bK2p2yQ5zYxMpuW/Pw7TU1twBciA0qHXlMrhGL0w+S89MkhyT4y0A=="
},
"rxjs": {
"version": "6.5.5",
@@ -19389,27 +18108,6 @@
}
}
},
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
- "dev": true,
- "requires": {
- "js-base64": "^2.1.8",
- "source-map": "^0.4.2"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -19643,23 +18341,6 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
- "shell-quote": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
- "dev": true
- },
- "shelljs": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
- "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- }
- },
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@@ -20394,15 +19075,6 @@
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"dev": true
},
- "stdout-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
- "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
@@ -20776,15 +19448,6 @@
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- }
- },
"style-loader": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz",
@@ -20869,15 +19532,6 @@
"when": "~3.6.x"
}
},
- "subarg": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
- "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
- "dev": true,
- "requires": {
- "minimist": "^1.1.0"
- }
- },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -21186,21 +19840,6 @@
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
},
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
- "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
- "dev": true,
- "requires": {
- "glob": "^7.1.2"
- }
- },
"ts-loader": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz",
@@ -22359,27 +20998,6 @@
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- },
- "dependencies": {
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- }
- }
- },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
diff --git a/package.json b/package.json
index fed11858a..5615cc24b 100644
--- a/package.json
+++ b/package.json
@@ -23,10 +23,7 @@
"start-e2e-server": "start-test mockserver 15000 start-use-mockserver",
"run-cypress-tests": "cypress run",
"cypress-e2e": "start-test start-e2e-server 4201 run-cypress-tests",
- "ci-tests": "node run-ci-tests.js",
- "lib": "node ngmakelib-conf.js",
- "libwatch": "node ngmakelib-conf.js --watch",
- "publishlib": "cd .ngmakelibtmp/dist && npm publish"
+ "ci-tests": "node run-ci-tests.js"
},
"dependencies": {
"@angular/animations": "9.0.0",
@@ -57,7 +54,7 @@
"moment-timezone": "^0.5.28",
"npm": "^6.14.5",
"rrule": "^2.6.4",
- "runbox-searchindex": "^0.1.0",
+ "runbox-searchindex": "https://registry.npmjs.org/@runbox-tadzik/runbox-searchindex/-/runbox-searchindex-0.2.0.tgz",
"rxjs": "^6.5.5",
"rxjs-compat": "^6.5.5",
"tinymce": "^5.2.2",
@@ -83,7 +80,6 @@
"karma-firefox-launcher": "^1.3.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.5.3",
- "ngmakelib": "^0.2.6",
"protractor": "^7.0.0",
"start-server-and-test": "^1.11.0",
"ts-loader": "^6.2.2",
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 967e1d22b..6b3b87765 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -30,19 +30,17 @@ import { MatIconRegistry } from '@angular/material/icon';
import { MatSidenav } from '@angular/material/sidenav';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MoveMessageDialogComponent } from './actions/movemessage.action';
-import { Router, RouterOutlet, ActivatedRoute, NavigationEnd } from '@angular/router';
+import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
import { DomSanitizer } from '@angular/platform-browser';
import { HttpClient } from '@angular/common/http';
-import { MessageTableRow, MessageTableRowTool } from './messagetable/messagetablerow';
import { MessageListService } from './rmmapi/messagelist.service';
-import { MessageInfo } from './xapian/messageinfo';
-import { InfoDialog, InfoParams } from './dialog/info.dialog';
-import { RunboxMe, RunboxWebmailAPI, FolderListEntry, MessageFlagChange } from './rmmapi/rbwebmail';
+import { MessageInfo } from 'runbox-searchindex/messageinfo';
+import { RunboxWebmailAPI, FolderListEntry, MessageFlagChange } from './rmmapi/rbwebmail';
import { DraftDeskService } from './compose/draftdesk.service';
import { RMM7MessageActions } from './mailviewer/rmm7messageactions';
import { FolderListComponent, CreateFolderEvent, RenameFolderEvent, MoveFolderEvent } from './folder/folder.module';
-import { SimpleInputDialog, SimpleInputDialogParams, ProgressDialog } from './dialog/dialog.module';
-import { map, first, take, skip, bufferCount, mergeMap, filter, tap, throttleTime , debounceTime } from 'rxjs/operators';
+import { ProgressDialog } from './dialog/dialog.module';
+import { map, take, skip, bufferCount, mergeMap, filter, tap, throttleTime , debounceTime } from 'rxjs/operators';
import { ConfirmDialog } from './dialog/confirmdialog.component';
import { WebSocketSearchService } from './websocketsearch/websocketsearch.service';
import { WebSocketSearchMailRow } from './websocketsearch/websocketsearchmailrow.class';
diff --git a/src/app/common/mailaddressinfo.spec.ts b/src/app/common/mailaddressinfo.spec.ts
deleted file mode 100644
index d378aab79..000000000
--- a/src/app/common/mailaddressinfo.spec.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2020 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-import { MailAddressInfo } from '../common/mailaddressinfo';
-
-describe('MailAddressInfo', () => {
- it('Construct with name and email', () => {
- const ma = new MailAddressInfo('Test', 'test1@runbox.com');
- expect(ma.name).toBe('Test');
- expect(ma.address).toBe('test1@runbox.com');
- expect(ma.nameAndAddress).toBe('"Test" ');
- });
- it('Parse single email address', () => {
- const ma = MailAddressInfo.parse('test1@runbox.com');
- expect(ma[0].name).toBe(null);
- expect(ma[0].address).toBe('test1@runbox.com');
- expect(ma[0].nameAndAddress).toBe('test1@runbox.com');
- });
- it('Parse full single address', () => {
- const ma = MailAddressInfo.parse('"Test" ');
- expect(ma[0].name).toBe('Test');
- expect(ma[0].address).toBe('test1@runbox.com');
- expect(ma[0].nameAndAddress).toBe('"Test" ');
- });
- it('Parse full single address, no quotes', () => {
- const ma = MailAddressInfo.parse('Test ');
- expect(ma[0].name).toBe('Test');
- expect(ma[0].address).toBe('test1@runbox.com');
- expect(ma[0].nameAndAddress).toBe('"Test" ');
- });
- it('Parse address list', () => {
- const ma_list = MailAddressInfo.parse('test1@runbox.com,test2@runbox.com');
- expect(ma_list[0].name).toBe(null);
- expect(ma_list[0].address).toBe('test1@runbox.com');
- expect(ma_list[0].nameAndAddress).toBe('test1@runbox.com');
- expect(ma_list[1].name).toBe(null);
- expect(ma_list[1].address).toBe('test2@runbox.com');
- expect(ma_list[1].nameAndAddress).toBe('test2@runbox.com');
- });
- it('Parse empty names address', () => {
- const ma_list = MailAddressInfo.parse('"" ');
- expect(ma_list[0].name).toBe('');
- expect(ma_list[0].address).toBe('test1@runbox.com');
- expect(ma_list[0].nameAndAddress).toBe('test1@runbox.com');
- });
- it('Parse full address list', () => {
- const ma_list = MailAddressInfo.parse('"Test1" , "Test2" ');
- expect(ma_list[0].name).toBe('Test1');
- expect(ma_list[0].address).toBe('test1@runbox.com');
- expect(ma_list[0].nameAndAddress).toBe('"Test1" ');
- expect(ma_list[1].name).toBe('Test2');
- expect(ma_list[1].address).toBe('test2@runbox.com');
- expect(ma_list[1].nameAndAddress).toBe('"Test2" ');
- });
-});
diff --git a/src/app/common/mailaddressinfo.ts b/src/app/common/mailaddressinfo.ts
deleted file mode 100644
index bcf8333ca..000000000
--- a/src/app/common/mailaddressinfo.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-export class MailAddressInfo {
- nameAndAddress: string;
-
- constructor(public name: string, public address: string) {
- this.nameAndAddress = name ? `"${name}" <${address}>` : address;
- }
-
- public static parse(mailaddr: string): MailAddressInfo[] {
- const ret: MailAddressInfo[] = [];
- let namePart = false;
- let addrPart = false;
- let lastStart = 0;
- let name: string = null;
- let addr: string = null;
- for (let n = 0; n < mailaddr.length; n++) {
- const ch = mailaddr.charAt(n);
-
- switch (ch) {
- case '"':
- namePart = !namePart;
-
- if (namePart) {
- lastStart = n + 1;
- } else {
- name = mailaddr.substring(lastStart, n).trim();
- }
- break;
- case ',':
- if (!namePart) {
- if (!addr) {
- addr = mailaddr.substring(lastStart, n).trim();
- }
- ret.push(new MailAddressInfo(name, addr));
- addr = null;
- name = null;
- lastStart = n + 1;
- }
- break;
- case '<':
- if (!namePart) {
- addrPart = true;
- if (name == null) {
- name = mailaddr.substring(lastStart, n).trim();
- }
- lastStart = n + 1;
- }
- break;
- case '>':
- if (!namePart) {
- addrPart = false;
- addr = mailaddr.substring(lastStart, n).trim();
- }
- break;
- }
- }
- if (!addr) {
- addr = mailaddr.substring(lastStart, mailaddr.length).trim();
- }
- ret.push(new MailAddressInfo(name, addr));
- return ret;
- }
-}
diff --git a/src/app/compose/compose.component.ts b/src/app/compose/compose.component.ts
index bea8b2621..a366bb1e7 100644
--- a/src/app/compose/compose.component.ts
+++ b/src/app/compose/compose.component.ts
@@ -36,7 +36,7 @@ import { DialogService } from '../dialog/dialog.service';
import { TinyMCEPlugin } from '../rmm/plugin/tinymce.plugin';
import { RecipientsService } from './recipients.service';
import { isValidEmailArray } from './emailvalidator';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { AppSettingsService } from '../app-settings';
declare const tinymce: any;
diff --git a/src/app/compose/draftdesk.service.spec.ts b/src/app/compose/draftdesk.service.spec.ts
index 2f8b74830..b80c700df 100644
--- a/src/app/compose/draftdesk.service.spec.ts
+++ b/src/app/compose/draftdesk.service.spec.ts
@@ -19,7 +19,7 @@
import {DraftFormModel} from './draftdesk.service';
import { FromAddress } from '../rmmapi/from_address';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
describe('DraftDesk', () => {
diff --git a/src/app/compose/draftdesk.service.ts b/src/app/compose/draftdesk.service.ts
index 91049255d..c6e11bfd2 100644
--- a/src/app/compose/draftdesk.service.ts
+++ b/src/app/compose/draftdesk.service.ts
@@ -20,8 +20,8 @@
import { Injectable } from '@angular/core';
import { RunboxWebmailAPI } from '../rmmapi/rbwebmail';
import { FromAddress } from '../rmmapi/from_address';
-import { MessageInfo } from '../xapian/messageinfo';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MessageInfo } from 'runbox-searchindex/messageinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { Observable, from, of, AsyncSubject } from 'rxjs';
import { map, mergeMap, bufferCount, take } from 'rxjs/operators';
diff --git a/src/app/compose/emailvalidator.ts b/src/app/compose/emailvalidator.ts
index 84ca33ef4..fa5215726 100644
--- a/src/app/compose/emailvalidator.ts
+++ b/src/app/compose/emailvalidator.ts
@@ -17,7 +17,7 @@
// along with Runbox 7. If not, see .
// ---------- END RUNBOX LICENSE ----------
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
const EMAIL_REGEXP =
// tslint:disable-next-line:max-line-length
diff --git a/src/app/compose/mailrecipientinput.component.ts b/src/app/compose/mailrecipientinput.component.ts
index dbf21d13f..5a487342c 100644
--- a/src/app/compose/mailrecipientinput.component.ts
+++ b/src/app/compose/mailrecipientinput.component.ts
@@ -27,7 +27,7 @@ import { ENTER } from '@angular/cdk/keycodes';
import { debounceTime } from 'rxjs/operators';
import { RecipientsService } from './recipients.service';
import { Recipient } from './recipient';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { isValidEmailArray } from './emailvalidator';
const COMMA = 188;
diff --git a/src/app/compose/recipients.service.spec.ts b/src/app/compose/recipients.service.spec.ts
index 21ddd79d6..de747f292 100644
--- a/src/app/compose/recipients.service.spec.ts
+++ b/src/app/compose/recipients.service.spec.ts
@@ -25,11 +25,11 @@ import { SearchService } from '../xapian/searchservice';
import { StorageService } from '../storage.service';
import { AsyncSubject, of, Subject } from 'rxjs';
import { take } from 'rxjs/operators';
-import { XapianAPI } from '../xapian/rmmxapianapi';
+import { XapianAPI } from 'runbox-searchindex/rmmxapianapi';
import { xapianLoadedSubject } from '../xapian/xapianwebloader';
import { Contact } from '../contacts-app/contact';
import { RunboxWebmailAPI } from '../rmmapi/rbwebmail';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
declare var FS;
declare var MEMFS;
diff --git a/src/app/compose/recipients.service.ts b/src/app/compose/recipients.service.ts
index 6ed0bbcb9..4d0bfcaca 100644
--- a/src/app/compose/recipients.service.ts
+++ b/src/app/compose/recipients.service.ts
@@ -23,7 +23,7 @@ import { SearchService } from '../xapian/searchservice';
import { ContactsService } from '../contacts-app/contacts.service';
import { ContactKind, Contact } from '../contacts-app/contact';
import { isValidEmail } from './emailvalidator';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { Recipient } from './recipient';
import { RunboxWebmailAPI } from '../rmmapi/rbwebmail';
import * as moment from 'moment';
diff --git a/src/app/lib.module.ts b/src/app/lib.module.ts
deleted file mode 100644
index 2fa4c2636..000000000
--- a/src/app/lib.module.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-/**
- * Code for exporting to the library module (for reuse on the server)
- */
-
-export * from './xapian/downloadablesearchindexmap.class';
-export * from './xapian/messageinfo';
-export * from './messagetable/messagetablerow';
-export * from './xapian/rmmxapianapi';
diff --git a/src/app/popular-recipients/popular-recipients.component.spec.ts b/src/app/popular-recipients/popular-recipients.component.spec.ts
index a974f755a..5d000e39c 100644
--- a/src/app/popular-recipients/popular-recipients.component.spec.ts
+++ b/src/app/popular-recipients/popular-recipients.component.spec.ts
@@ -25,7 +25,7 @@ import { MatIconModule } from '@angular/material/icon';
import { PopularRecipientsComponent } from './popular-recipients.component';
import { RecipientsService } from '../compose/recipients.service';
-import { MailAddressInfo } from '../common/mailaddressinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { of } from 'rxjs';
diff --git a/src/app/rmmapi/messagelist.service.ts b/src/app/rmmapi/messagelist.service.ts
index 16da1320e..25581950b 100644
--- a/src/app/rmmapi/messagelist.service.ts
+++ b/src/app/rmmapi/messagelist.service.ts
@@ -17,16 +17,18 @@
// along with Runbox 7. If not, see .
// ---------- END RUNBOX LICENSE ----------
-import {throwError as observableThrowError, BehaviorSubject , Observable, ReplaySubject } from 'rxjs';
-import { distinctUntilChanged } from 'rxjs/operators';
import { Injectable } from '@angular/core';
+
+import { throwError as observableThrowError, BehaviorSubject, ReplaySubject } from 'rxjs';
+import { catchError, distinctUntilChanged, map, filter, take } from 'rxjs/operators';
+
+import { MessageInfo } from 'runbox-searchindex/messageinfo';
+
import { RunboxWebmailAPI, FolderListEntry } from './rbwebmail';
import { SearchService } from '../xapian/searchservice';
-import { MessageInfo } from '../xapian/messageinfo';
import { AppComponent } from '../app.component';
import { CanvasTableColumn } from '../canvastable/canvastable';
import { MessageTableRowTool } from '../messagetable/messagetablerow';
-import { catchError, map, filter, take } from 'rxjs/operators';
export class FolderMessageCountEntry {
constructor(
@@ -112,8 +114,11 @@ export class MessageListService {
const folderCounts = {};
for (const folder of folders) {
const path = folder.folderPath;
+
if (xapianFolders.has(path)) {
- folderCounts[path] = this.searchservice.getMessageCountsForFolder(path);
+ const res = this.searchservice.api.getFolderMessageCounts(folder.folderName);
+
+ folderCounts[path] = new FolderMessageCountEntry(res[1], res[0]);
} else {
folderCounts[path] = FolderMessageCountEntry.of(folder);
}
diff --git a/src/app/rmmapi/rbwebmail.ts b/src/app/rmmapi/rbwebmail.ts
index 424618c1a..880ddbf36 100644
--- a/src/app/rmmapi/rbwebmail.ts
+++ b/src/app/rmmapi/rbwebmail.ts
@@ -18,11 +18,10 @@
// ---------- END RUNBOX LICENSE ----------
import { Injectable, NgZone } from '@angular/core';
-import { Router } from '@angular/router';
-import { Observable , of, from , Subject , AsyncSubject } from 'rxjs';
+import { Observable, of, Subject, AsyncSubject } from 'rxjs';
import { share } from 'rxjs/operators';
-import { MessageInfo } from '../xapian/messageinfo';
-import { MailAddressInfo } from './../common/mailaddressinfo';
+import { MessageInfo } from 'runbox-searchindex/messageinfo';
+import { MailAddressInfo } from 'runbox-searchindex/mailaddressinfo';
import { Contact } from '../contacts-app/contact';
import { RunboxCalendar } from '../calendar-app/runbox-calendar';
@@ -31,13 +30,10 @@ import { Product } from '../account-app/product';
import { DraftFormModel } from '../compose/draftdesk.service';
import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
-import { catchError, map, mergeMap, tap, bufferCount } from 'rxjs/operators';
+import { map, mergeMap, tap } from 'rxjs/operators';
-import { ProgressDialog } from '../dialog/dialog.module';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { RunboxLocale } from '../rmmapi/rblocale';
-import { ProgressSnackbarComponent } from '../dialog/progresssnackbar.component';
-import { Profile } from '../profiles/profile';
import { RMM } from '../rmm';
import { FromAddress } from './from_address';
diff --git a/src/app/xapian/downloadablesearchindexmap.class.ts b/src/app/xapian/downloadablesearchindexmap.class.ts
deleted file mode 100644
index feb3d30c0..000000000
--- a/src/app/xapian/downloadablesearchindexmap.class.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-export class DownloadablePartitionFile {
- filename: string;
- compressedsize: number;
- uncompressedsize: number;
- downloaded?: number;
-}
-
-export class DownloadablePartition {
- numberOfMessages: number;
- folder: string;
- files: DownloadablePartitionFile[];
-}
-
-export class DownloadableSearchIndexMap {
- partitions: DownloadablePartition[] = [];
-}
diff --git a/src/app/xapian/indexer.ts b/src/app/xapian/indexer.ts
index 2f5b8794f..f42797e12 100644
--- a/src/app/xapian/indexer.ts
+++ b/src/app/xapian/indexer.ts
@@ -17,8 +17,8 @@
// along with Runbox 7. If not, see .
// ---------- END RUNBOX LICENSE ----------
-import { XapianAPI } from './rmmxapianapi';
-import { MessageInfo, IndexingTools } from './messageinfo';
+import { XapianAPI } from 'runbox-searchindex/rmmxapianapi';
+import { MessageInfo, IndexingTools } from 'runbox-searchindex/messageinfo';
import { Subject } from 'rxjs';
declare var IDBFS;
diff --git a/src/app/xapian/messageinfo.spec.ts b/src/app/xapian/messageinfo.spec.ts
deleted file mode 100644
index 683a5f918..000000000
--- a/src/app/xapian/messageinfo.spec.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-import { MessageInfo, IndexingTools } from './messageinfo';
-import { MailAddressInfo } from '../common/mailaddressinfo';
-import { XapianAPI } from './rmmxapianapi';
-
-describe('MessageInfo', () => {
- it('testGetSubjectWithoutAbbreviation', () => {
- expect(MessageInfo.getSubjectWithoutAbbreviation('Re: Testing the subject')).toBe('Testing the subject');
- expect(MessageInfo.getSubjectWithoutAbbreviation('FWD: Testing the subject')).toBe('Testing the subject');
- expect(MessageInfo.getSubjectWithoutAbbreviation('Re: Fwd: Testing the subject')).toBe('Testing the subject');
- expect(MessageInfo.getSubjectWithoutAbbreviation('SV: Fwd: Test FWD: svar')).toBe('Test FWD: svar');
- expect(MessageInfo.getSubjectWithoutAbbreviation('')).toBe('');
- expect(MessageInfo.getSubjectWithoutAbbreviation(null)).toBe('');
- });
-
- it('testAddMessageToIndexWithDeleteFolders', () => {
- console.log(`Testing that messages added to specified folders will be deleted`);
- const msg = new MessageInfo(1,
- new Date(),
- new Date(),
- 'Spam',
- false,
- false,
- false,
- MailAddressInfo.parse('test@example.com'),
- MailAddressInfo.parse('test2@example.com'),
- [],
- [],
- 'Test subject',
- 'The text',
- 50,
- false
- );
-
- let addCalled = false;
- let removeCalled = false;
- const indexingtools = new IndexingTools({
- addSortableEmailToXapianIndex: () => {
- addCalled = true;
- },
-
- deleteDocumentByUniqueTerm: () => {
- removeCalled = true;
- }
- } as any);
-
- indexingtools.addMessageToIndex(msg);
- expect(addCalled).toBeTruthy();
- addCalled = false;
- indexingtools.addMessageToIndex(msg, ['Trash', 'Spam']);
- expect(removeCalled).toBeTruthy();
- removeCalled = false;
- msg.folder = 'Inbox';
-
- indexingtools.addMessageToIndex(msg, ['Trash', 'Spam']);
- expect(removeCalled).toBeFalsy();
- expect(addCalled).toBeTruthy();
- });
-});
diff --git a/src/app/xapian/messageinfo.ts b/src/app/xapian/messageinfo.ts
deleted file mode 100644
index 190c92f3b..000000000
--- a/src/app/xapian/messageinfo.ts
+++ /dev/null
@@ -1,172 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-import { XapianAPI } from './rmmxapianapi';
-import { MailAddressInfo } from './../common/mailaddressinfo';
-
-export class MessageInfo {
- deletedFlag: boolean;
-
- constructor(
- public id: number,
- public changedDate: Date,
- public messageDate: Date,
- public folder: string,
- public seenFlag: boolean,
- public answeredFlag: boolean,
- public flaggedFlag: boolean,
- public from: MailAddressInfo[],
- public to: MailAddressInfo[],
- public cc: MailAddressInfo[],
- public bcc: MailAddressInfo[],
- public subject: string,
- public plaintext: string,
- public size: number,
- public attachment: boolean) {
- }
-
- static getSubjectWithoutAbbreviation(subject: string) {
- const emailsubjectabbreviations = [
- 'RE:',
- 'Re:',
- 'FWD:',
- 'Fwd:',
- 'Fw:',
- 'SV:',
- 'VS:',
- 'VB:'
- ];
- const subjectparts = subject ? subject.split(' ') : [];
- let subjectTextStart = 0;
- while (emailsubjectabbreviations.find(abbr => abbr === subjectparts[subjectTextStart])) {
- subjectTextStart ++;
- }
- return subjectparts.slice(subjectTextStart).join(' ');
- }
-}
-
-export class IndexingTools {
-
- constructor(private indexAPI: XapianAPI) {
-
- }
-
- public hashCode(str: string): number {
- let hash = 0;
- if (!str || str.length === 0) {
- return hash;
- }
-
- for (let i = 0; i < str.length; i++) {
- const char = str.charCodeAt(i);
- // tslint:disable-next-line:no-bitwise
- hash = ((hash << 5) - hash) + char;
- // tslint:disable-next-line:no-bitwise
- hash = hash & hash; // Convert to 32bit integer
- }
- return hash;
- }
-
- public markMessageSeen(messageId: number, seenFlag: boolean) {
- try {
- if (seenFlag === true) {
- this.indexAPI.addTermToDocument(`Q${messageId}`, 'XFseen');
- } else if (seenFlag === false) {
- this.indexAPI.removeTermFromDocument(`Q${messageId}`, 'XFseen');
- }
- } catch (e) {
- console.error(e);
- }
- }
-
- public flagMessage(messageId: number, flag: boolean) {
- try {
- if (flag === true) {
- this.indexAPI.addTermToDocument(`Q${messageId}`, 'XFflagged');
- } else if (flag === false) {
- this.indexAPI.removeTermFromDocument(`Q${messageId}`, 'XFflagged');
- }
- } catch (e) {
- console.error(e);
- }
- }
-
- public addMessageToIndex(msginfo: MessageInfo,
- foldersNotToIndex?: string[]
- ) {
- if (
- foldersNotToIndex && foldersNotToIndex.find(foldername =>
- msginfo.folder === foldername)
- ) {
- this.indexAPI.deleteDocumentByUniqueTerm('Q' + msginfo.id);
- console.log('Deleted msg id search index', msginfo.id);
- return;
- }
-
- let conversationId = msginfo.subject ? msginfo.subject.toUpperCase() : '0';
-
- const beforeSubjectAbbreviationRemoval = conversationId;
-
- // Remove email subject abbreviation (Re fwd etc)
- conversationId = MessageInfo.getSubjectWithoutAbbreviation(conversationId);
- const afterSubjectAbbreviationRemoval: string = conversationId;
-
- let recipients = [];
-
- if (msginfo.to) {
- recipients = recipients.concat(msginfo.to.map((mailAddr) => mailAddr.nameAndAddress.substr(0, 200)));
- }
- if (msginfo.cc) {
- recipients = recipients.concat(msginfo.cc.map((mailAddr) => mailAddr.nameAndAddress.substr(0, 200)));
- }
-
- // Remove non alphanumeric characters so that it's possible to use Xapian range processor
- conversationId = conversationId.replace(/[^0-9A-Z]/g, '');
-
- // Add last word hash to conversation id
- const lastWordHash = msginfo.plaintext ? this.hashCode(msginfo.plaintext.split(/\s/)
- .reverse()
- .find((word) => word.replace(/[^a-z0-9]+/ig, '').trim().length >= 3)) : 0;
- conversationId += '' + (0x100000000 + lastWordHash).toString(16).substr(1).toUpperCase();
-
- const msgDateString = msginfo.messageDate.toJSON().substr(0, 'YYYY-MM-DD HH:mm'.length).replace(/[^0-9]/g, '');
-
- const fromAddressInfo = msginfo.from && msginfo.from[0] ? msginfo.from[0] : new MailAddressInfo('', '');
- const visibleFrom = fromAddressInfo.name ? fromAddressInfo.name : fromAddressInfo.address ? fromAddressInfo.address : '';
-
- // console.log(conversationId);
- this.indexAPI.addSortableEmailToXapianIndex(
- 'Q' + msginfo.id,
- visibleFrom,
- visibleFrom.toUpperCase(),
- fromAddressInfo.address,
- recipients,
- msginfo.subject,
- conversationId,
- msgDateString,
- msginfo.size,
- msginfo.plaintext ? msginfo.plaintext : '',
- msginfo.folder,
- msginfo.seenFlag,
- msginfo.flaggedFlag,
- msginfo.answeredFlag,
- msginfo.attachment
- );
- }
-}
diff --git a/src/app/xapian/rmmxapianapi.ts b/src/app/xapian/rmmxapianapi.ts
deleted file mode 100644
index 2d6cd5c0e..000000000
--- a/src/app/xapian/rmmxapianapi.ts
+++ /dev/null
@@ -1,273 +0,0 @@
-// --------- BEGIN RUNBOX LICENSE ---------
-// Copyright (C) 2016-2018 Runbox Solutions AS (runbox.com).
-//
-// This file is part of Runbox 7.
-//
-// Runbox 7 is free software: You can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation, either version 3 of the License, or (at your
-// option) any later version.
-//
-// Runbox 7 is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Runbox 7. If not, see .
-// ---------- END RUNBOX LICENSE ----------
-
-declare var Module;
-
-const emAllocateString = function (str) {
- if (!str) {
- str = '';
- }
-
- const $str = Module._malloc(str.length * 4 + 1);
- Module.stringToUTF8(str, $str, str.length * 4 + 1);
- return $str;
-};
-
-export class XapianAPI {
-
- public initXapianIndex: (path: string) => void = Module.cwrap('initXapianIndex', null, ['string']);
- public initXapianIndexReadOnly: (path: string) => void = Module.cwrap('initXapianIndexReadOnly', null, ['string']);
- public addSingleFileXapianIndex: (path: string) => void = Module.cwrap('addSingleFileXapianIndex', null, ['string']);
- public addFolderXapianIndex: (path: string) => void = Module.cwrap('addFolderXapianIndex', null, ['string']);
- public compactDatabase: () => void = Module.cwrap('compactDatabase', null, []);
- public compactToWritableDatabase: (path: string) => void = Module.cwrap('compactToWritableDatabase', null, ['string']);
- public addToXapianIndex: (id: string, val: string) => void = Module.cwrap('addToXapianIndex', null, ['string', 'string']);
- public commitXapianUpdates: () => void = Module.cwrap('commitXapianUpdates', null, []);
- public getXapianDocCount: () => number = Module.cwrap('getDocCount', 'number', []);
- public getLastDocid: () => number = Module.cwrap('getLastDocid', 'number', []);
- public reloadXapianDatabase: () => void = Module.cwrap('reloadDatabase', null, []);
- public closeXapianDatabase: () => void = Module.cwrap('closeDatabase', null, []);
- public setStringValueRange: (valuenumber: number, prefix: string) =>
- void = Module.cwrap('setStringValueRange', null, ['number', 'string']);
- public clearValueRange: () => void = Module.cwrap('clearValueRange', null, []);
- public getNumericValue: (docid: number, slot: number) => number = Module.cwrap('getNumericValue', 'number', ['number', 'number']);
- public termlist: (prefix: string) => number = Module.cwrap('termlist', 'number', ['string']);
- public documentTermList: (docid: number) => number = Module.cwrap('documentTermList', 'number', ['number']);
- public documentXTermList: (docid: number) => number = Module.cwrap('documentXTermList', 'number', ['number']);
- public deleteDocumentByUniqueTerm: (id: string) => void = Module.cwrap('deleteDocumentByUniqueTerm', null, ['string']);
- public deleteDocumentFromAddedWritablesByUniqueTerm: (id: string) => number =
- Module.cwrap('deleteDocumentFromAddedWritablesByUniqueTerm', 'number', ['string']);
- public setStringValue: (docid: number, slot: number, val: string) => void =
- Module.cwrap('setStringValue', null, ['number', 'number', 'string']);
- public changeDocumentsFolder: (unique_term: string, folder: string) =>
- void = Module.cwrap('changeDocumentsFolder', null, ['string', 'string']);
- public addTermToDocument: (idterm: string, termname: string) => void = Module.cwrap('addTermToDocument', null, ['string', 'string']);
- public removeTermFromDocument: (idterm: string, termname: string) => void =
- Module.cwrap('removeTermFromDocument', null, ['string', 'string']);
- public addTextToDocument: (idterm: string, withoutpositions: boolean, text: string) => void =
- Module.cwrap('addTextToDocument', null, ['string', 'boolean', 'string']);
- public getDocIdFromUniqueIdTerm: (idterm: string) => number =
- Module.cwrap('getDocIdFromUniqueIdTerm', 'number', ['string']);
-
- public getStringValue(docid, slot): string {
- const $ret = Module._malloc(1024);
- Module._getStringValue(docid, slot, $ret);
- const ret = Module.UTF8ToString($ret);
- Module._free($ret);
- return ret;
- }
-
- public listFolders(): any[] {
- const $ret = Module._malloc(8192);
- Module._listFolders($ret);
- const cret = Module.UTF8ToString($ret);
- Module._free($ret);
- const ret: any[] = cret.split(',');
- ret.forEach((r: string, ndx: number) => {
- ret[ndx] = r.split(':');
- ret[ndx][1] = parseInt(ret[ndx][1], 10);
- });
- return ret;
- }
-
- public listUnreadFolders(): any[] {
- const $ret = Module._malloc(8192);
- const folderCount: number = Module._listUnreadFolders($ret);
- if (folderCount > 0) {
- const cret = Module.UTF8ToString($ret);
- Module._free($ret);
- const ret: any[] = cret.split(',');
- ret.forEach((r: string, ndx: number) => {
- ret[ndx] = r.split(':');
- ret[ndx][1] = parseInt(ret[ndx][1], 10);
- });
- return ret;
- } else {
- return [];
- }
- }
-
- public queryXapianIndex(querystring, offset, maxresults): Array {
- const $searchResults = Module._malloc(4 * maxresults);
- Module.HEAP8.set(new Uint8Array(maxresults * 4), $searchResults);
-
- const $queryString = emAllocateString(querystring);
- const $resultIdTerm = Module._malloc(128);
-
- const hits = Module._queryIndex($queryString, $searchResults, offset, maxresults);
- // console.log(hits);
- const results = new Array(hits);
- for (let n = 0; n < hits; n++) {
- const docid = Module.getValue($searchResults + (n * 4), 'i32');
- Module._getDocumentData(docid, $resultIdTerm);
- results[n] = Module.UTF8ToString($resultIdTerm);
- }
- Module._free($searchResults);
- Module._free($queryString);
- Module._free($resultIdTerm);
- return results;
-
- }
-
- public sortedXapianQuery(querystring: string,
- sortcol: number,
- reverse: number,
- offset: number,
- maxresults: number,
- collapsecol: number): Array {
- const $searchResults = Module._malloc(4 * maxresults);
- const $collapseCount = Module._malloc(4 * maxresults);
-
- Module.HEAP8.set(new Uint8Array(maxresults * 4), $searchResults);
- Module.HEAP8.set(new Uint8Array(maxresults * 4), $collapseCount);
-
- const $queryString = emAllocateString(querystring);
-
- const hits = Module._sortedXapianQuery($queryString, sortcol, reverse, $searchResults, offset, maxresults, collapsecol, $collapseCount);
- // console.log("Sorted xapian query returned "+hits);
-
- const results = new Array(hits);
- for (let n = 0; n < hits; n++) {
- results[n] = [
- Module.getValue($searchResults + (n * 4), 'i32'),
- Module.getValue($collapseCount + (n * 4), 'i32')
- ];
-
- }
- Module._free($collapseCount);
- Module._free($searchResults);
- Module._free($queryString);
- return results;
- }
-
- public getDocumentData(docid) {
- const $docdata = Module._malloc(1024);
- Module._getDocumentData(docid, $docdata);
- const ret = Module.UTF8ToString($docdata);
- Module._free($docdata);
- return ret;
- }
-
- public addSortableEmailToXapianIndex(
- idTerm, // Message id
- sender, // from (name or email address if no name is present)
- sortableFrom, // e.g. uppercase of the field above
- fromEmailAddress,
- recipients, // Array of strings with recipient email addresses
- subject,
- sortableSubject, // Uppercase of subject
- dateString, // Datestring (YYYYMMDDHHmm)
- messageSize, // mail message size in bytes
- text, // mail text content (may also add attachment text here)
- folder: string,
- seen: boolean, // seen_flag (0 if unread, 1 if read)
- flagged: boolean, // seen_flag (0 if unread, 1 if read)
- answered: boolean, // seen_flag (0 if unread, 1 if read)
- attachment: boolean // (0 if no attachments, 1 if message has attachments)
- ) {
- let $pointerPtr = 0;
-
- let pointers;
- if (recipients) {
- pointers = new Uint32Array(recipients.length);
- for (let n = 0; n < recipients.length; n++) {
- const recp = recipients[n];
-
- const $recp = Module._malloc(recp.length * 4 + 1);
- Module.stringToUTF8(recp, $recp, recp.length * 4 + 1);
- pointers[n] = $recp;
- }
-
- // Allocate bytes needed for the array of pointers
- const nPointerBytes = pointers.length * pointers.BYTES_PER_ELEMENT;
- $pointerPtr = Module._malloc(nPointerBytes);
-
- // Copy array of pointers to Emscripten heap
- const pointerHeap = new Uint8Array(Module.HEAPU8.buffer, $pointerPtr, nPointerBytes);
- pointerHeap.set(new Uint8Array(pointers.buffer));
-
- }
-
-
- const $idTerm = emAllocateString(idTerm);
- const $sender = emAllocateString(sender);
- const $sortableFrom = emAllocateString(sortableFrom);
- const $fromEmailAddress = emAllocateString(fromEmailAddress);
- const $subject = emAllocateString(subject);
- const $sortableSubject = emAllocateString(sortableSubject);
- const $dateString = emAllocateString(dateString);
- const $text = emAllocateString(text);
- const $folder = emAllocateString(folder);
-
- Module._addSortableEmailToXapianIndex(
- $idTerm,
- $sender,
- $sortableFrom,
- $fromEmailAddress,
- recipients ? recipients.length : 0,
- $pointerPtr,
- $subject,
- $sortableSubject,
- $dateString,
- messageSize,
- $text,
- $folder,
- (seen ? 1 : 0) +
- (flagged ? 2 : 0) +
- (answered ? 4 : 0) +
- (attachment ? 8 : 0)
- );
- Module._free($folder);
- Module._free($text);
- Module._free($dateString);
- Module._free($sortableSubject);
- Module._free($subject);
- Module._free($fromEmailAddress);
- Module._free($sortableFrom);
- Module._free($sender);
- Module._free($idTerm);
-
- if (pointers) {
- Module._free($pointerPtr);
-
- for (let n = pointers.length - 1; n >= 0; n--) {
- Module._free(pointers[n]);
- }
- }
- }
-
- hasMessageId(id: number): boolean {
- window['termlistresult'] = [];
- this.termlist('Q' + id);
- return window['termlistresult'].findIndex(t => t === '') > -1;
- }
-}
-
-export class SearchParams {
- constructor(
- public querystring: string,
- public sortcol: number,
- public reverse: number,
- public offset: number,
- public maxresults: number,
- public collapsecol: number
- ) {
-
- }
-}
diff --git a/src/app/xapian/searchservice.spec.ts b/src/app/xapian/searchservice.spec.ts
index ae099115c..54fbfc25b 100644
--- a/src/app/xapian/searchservice.spec.ts
+++ b/src/app/xapian/searchservice.spec.ts
@@ -26,7 +26,7 @@ import { MatDialogModule } from '@angular/material/dialog';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MessageListService } from '../rmmapi/messagelist.service';
-import { XapianAPI } from './rmmxapianapi';
+import { XapianAPI } from 'runbox-searchindex/rmmxapianapi';
import { xapianLoadedSubject } from './xapianwebloader';
declare var FS;
diff --git a/src/app/xapian/searchservice.ts b/src/app/xapian/searchservice.ts
index 46e6636de..91c09e627 100644
--- a/src/app/xapian/searchservice.ts
+++ b/src/app/xapian/searchservice.ts
@@ -17,26 +17,27 @@
// along with Runbox 7. If not, see .
// ---------- END RUNBOX LICENSE ----------
-import {Injectable, NgZone} from '@angular/core';
-import { Observable , AsyncSubject, Subject , of, from } from 'rxjs';
-import { XapianAPI } from './rmmxapianapi';
-import { RunboxWebmailAPI, FolderListEntry } from '../rmmapi/rbwebmail';
-import { MessageInfo,
- IndexingTools } from './messageinfo';
+import { Injectable, NgZone } from '@angular/core';
+import { HttpClient, HttpRequest, HttpResponse, HttpEventType } from '@angular/common/http';
+import { MatDialog } from '@angular/material/dialog';
+import { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';
+
+import { Observable, AsyncSubject, Subject, of, from } from 'rxjs';
+import { mergeMap, map, filter, catchError, tap, take, bufferCount } from 'rxjs/operators';
+
+import { XapianAPI } from 'runbox-searchindex/rmmxapianapi';
+import { DownloadableSearchIndexMap, DownloadablePartition } from 'runbox-searchindex/downloadablesearchindexmap.class';
+import { MessageInfo, IndexingTools } from 'runbox-searchindex/messageinfo';
+
+import { RunboxWebmailAPI } from '../rmmapi/rbwebmail';
import { CanvasTableColumn} from '../canvastable/canvastable';
import { AppComponent } from '../app.component';
import { MessageTableRowTool} from '../messagetable/messagetablerow';
-import { MatDialog } from '@angular/material/dialog';
-import { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';
import { ProgressDialog } from '../dialog/progress.dialog';
import { MessageListService, FolderMessageCountEntry } from '../rmmapi/messagelist.service';
-import { mergeMap, map, filter, catchError, tap, take, bufferCount } from 'rxjs/operators';
-import { HttpClient, HttpRequest, HttpResponse, HttpEventType } from '@angular/common/http';
import { ConfirmDialog } from '../dialog/confirmdialog.component';
-import { DownloadableSearchIndexMap, DownloadablePartition } from './downloadablesearchindexmap.class';
import { SyncProgressComponent } from './syncprogress.component';
import { xapianLoadedSubject } from './xapianwebloader';
-import { InfoDialog, InfoParams } from '../dialog/info.dialog';
declare var FS;
declare var IDBFS;