From 4839e558560da85a5cacb8f75806f87e3f77f59a Mon Sep 17 00:00:00 2001 From: Vikash Verma Date: Fri, 18 Oct 2019 13:49:39 +0530 Subject: [PATCH] + Updated Trends Database with category column and updated search functionalities with categery include. + Updated newsApi trends request. + Added Team reports functionality. + Added teamPublishCount in the Team Report, updated deprection of route in Team section, Updated TeamReport Model + Added 2- way Authentication for Mail and Mobile, Updated Team insights + Updated facebook scopes, pinterest scopes, Pinterest Borad validation Updated, Updated Schedule validations. + modified: 1.signup 2.schedule new: 1.TeamReport. --- socioboard-api/feeds/config/configuration.js | 256 +- .../controllers/networkInsightControllers.js | 20 + .../feeds/core/networkInsights/routes.js | 41 + .../utils/networkinsightlibs.js | 231 +- .../library/mixins/userteamaccount.js | 213 +- .../library/mongoose/models/notifications.js | 2 +- .../library/mongoose/models/publishedposts.js | 15 + .../library/mongoose/models/teamInsights.js | 113 + socioboard-api/library/network/pinterest.js | 2 +- socioboard-api/library/network/trends.js | 2 +- socioboard-api/library/package-lock.json | 2 +- ...070645-addColumnsIn-userScheduleDetails.js | 4 +- ...081903-add_otp_fields_inUserActivations.js | 24 + .../sequelize-cli/models/user_activations.js | 22 +- .../library/utility/coreServices.js | 6 + .../library/utility/mailServices.js | 6 +- .../Insights/controllers/insightController.js | 32 +- .../notification/core/Insights/routes.js | 24 + .../core/Insights/utils/insightLibs.js | 22 +- .../core/mail/controllers/mailController.js | 16 +- .../notification/core/mail/utils/mailLibs.js | 2 +- socioboard-api/notification/startup/routes.js | 13 +- .../controllers/schedulerControllers.js | 2 +- .../core/scheduler/utils/schedulerlibs.js | 4 +- socioboard-api/user/config/configuration.js | 338 +- socioboard-api/user/core/admin/adminRoutes.js | 4 +- .../authorized/controllers/usercontroller.js | 4 +- socioboard-api/user/core/authorized/routes.js | 4 +- .../core/authorized/utils/authorizedlibs.js | 21 +- .../user/core/libraries/userlibs.js | 30 +- .../user/core/profiles/utils/profilelibs.js | 13 +- .../core/team/controllers/teammanagement.js | 4 +- socioboard-api/user/core/team/routes.js | 3 +- .../user/core/team/utils/teamlibs.js | 156 +- .../controllers/usercontroller.js | 54 +- .../user/core/unauthorized/routes.js | 33 +- .../unauthorized/utils/unauthorizedlibs.js | 187 + socioboard-api/user/package-lock.json | 4422 ++++---- socioboard-api/user/package.json | 1 - socioboard-api/user/startup/swagger.js | 4 +- .../Controllers/DiscoveryController.php | 3 +- .../DiscoveryPublishController.php | 5 +- .../Views/boardMe/LoadPage.blade.php | 1 + .../Views/boardMe/boardViewJS.blade.php | 15 +- .../Discovery/Views/dailymotion.blade.php | 5 +- .../Modules/Discovery/Views/flickr.blade.php | 10 +- .../Modules/Discovery/Views/giphy.blade.php | 6 +- .../Modules/Discovery/Views/imgur.blade.php | 9 +- .../Discovery/Views/incPostModal.blade.php | 40 +- .../Modules/Discovery/Views/pixabay.blade.php | 6 +- .../Modules/Discovery/Views/twitter.blade.php | 11 +- .../Controllers/ScheduleController.php | 372 +- .../Schedule/Views/post_history.blade.php | 11 +- .../Modules/Schedule/Views/schedule.blade.php | 16 +- .../Schedule/Views/schedule_edit.blade.php | 851 ++ .../app/Modules/Schedule/routes/web.php | 3 +- .../Team/Controllers/GoogleController.php | 2 +- .../Team/Controllers/PinterestController.php | 43 +- .../Team/Controllers/ReportController.php | 32 + .../Team/Controllers/TeamController.php | 17 +- .../Team/Controllers/YoutubeController.php | 6 +- .../Views/AppInsight/TwitterReport.blade.php | 11 +- .../AppInsight/YoutubeFanpageReport.blade.php | 2 +- .../AppInsight/instagramInsight.blade.php | 4 - .../Views/AppInsight/teamReport.blade.php | 698 ++ .../Team/Views/Pinterest/incJS.blade.php | 78 + .../Views/Pinterest/inc_profile.blade.php | 50 +- .../Team/Views/Pinterest/index.blade.php | 1 + .../Team/Views/Twitter/incJS.blade.php | 5 +- .../Team/Views/Twitter/inc_posts.blade.php | 10 +- .../app/Modules/Team/Views/viewTeam.blade.php | 408 +- .../app/Modules/Team/routes/web.php | 7 +- .../User/Controllers/UserController.php | 62 +- .../User/Views/dashboard/dashboard.blade.php | 11 +- .../User/Views/dashboard/incNav.blade.php | 6 +- .../dashboard/incNotificationJs.blade.php | 77 +- .../User/Views/dashboard/master.blade.php | 4 +- .../dashboard/seeAllNotifications.blade.php | 54 +- .../User/Views/dashboard/settings.blade.php | 98 +- .../app/Modules/User/Views/master.blade.php | 10 +- .../app/Modules/User/Views/signup.blade.php | 143 +- .../Modules/User/Views/twoStepAuth.blade.php | 318 + .../app/Modules/User/helper.php | 17 +- .../app/Modules/User/routes/web.php | 7 +- ...019_07_25_133655_create_sessions_table.php | 35 + .../2019_08_05_075817_create_admins_table.php | 31 + ...019_08_05_131006_create_sessions_table.php | 35 + socioboard-web-php/environmentfile.env | 10 +- .../daterangepicker/daterangepicker.js | 2 +- .../assets/plugins/intel-tel-input/demo.css | 62 + .../plugins/intel-tel-input/img/flags.png | Bin 0 -> 70857 bytes .../plugins/intel-tel-input/img/flags@2x.png | Bin 0 -> 174369 bytes .../plugins/intel-tel-input/intlTelInput.css | 970 ++ .../plugins/intel-tel-input/intlTelInput.js | 1319 +++ .../assets/plugins/intel-tel-input/utils.js | 453 + .../intl-tel-input-16.0.0/.eslintignore | 3 + .../plugins/intl-tel-input-16.0.0/.eslintrc | 50 + .../.github/CONTRIBUTING.md | 51 + .../.github/ISSUE_TEMPLATE.md | 15 + .../plugins/intl-tel-input-16.0.0/.gitignore | 17 + .../plugins/intl-tel-input-16.0.0/.grenrc.js | 10 + .../plugins/intl-tel-input-16.0.0/.travis.yml | 6 + .../intl-tel-input-16.0.0/CHANGELOG.md | 338 + .../intl-tel-input-16.0.0/Gruntfile.js | 26 + .../plugins/intl-tel-input-16.0.0/LICENSE | 21 + .../plugins/intl-tel-input-16.0.0/README.md | 413 + .../plugins/intl-tel-input-16.0.0/bower.json | 7 + .../intl-tel-input-16.0.0/build/css/demo.css | 62 + .../build/css/intlTelInput.css | 928 ++ .../build/css/intlTelInput.min.css | 1 + .../intl-tel-input-16.0.0/build/img/flags.png | Bin 0 -> 70857 bytes .../build/img/flags@2x.png | Bin 0 -> 174369 bytes .../build/js/intlTelInput-jquery.js | 1354 +++ .../build/js/intlTelInput-jquery.min.js | 8 + .../build/js/intlTelInput.js | 1326 +++ .../build/js/intlTelInput.min.js | 8 + .../intl-tel-input-16.0.0/build/js/utils.js | 468 + .../intl-tel-input-16.0.0/composer.json | 29 + .../plugins/intl-tel-input-16.0.0/demo.html | 47 + .../examples/css/countrySync.css | 10 + .../examples/css/isValidNumber.css | 12 + .../examples/css/prism.css | 126 + .../examples/gen/country-sync.html | 100 + .../examples/gen/default-country-ip.html | 58 + .../examples/gen/display-number.html | 49 + .../examples/gen/hidden-input.html | 56 + .../examples/gen/init-promise.html | 68 + .../examples/gen/is-valid-number.html | 88 + .../examples/gen/js/countrySync.js | 31 + .../examples/gen/js/defaultCountryIp.js | 11 + .../examples/gen/js/displayNumber.js | 4 + .../examples/gen/js/hiddenInput.js | 5 + .../examples/gen/js/initPromise.js | 9 + .../examples/gen/js/isValidNumber.js | 37 + .../examples/gen/js/modifyCountryData.js | 11 + .../examples/gen/js/multipleInstances.js | 13 + .../examples/gen/js/nationalMode.js | 18 + .../examples/gen/js/onlyCountriesEurope.js | 8 + .../examples/gen/modify-country-data.html | 54 + .../examples/gen/multiple-instances.html | 62 + .../examples/gen/national-mode.html | 65 + .../examples/gen/only-countries-europe.html | 51 + .../examples/js/countrySync.js.ejs | 31 + .../examples/js/defaultCountryIp.js.ejs | 11 + .../examples/js/displayNumber.js.ejs | 4 + .../examples/js/hiddenInput.js.ejs | 5 + .../examples/js/initPromise.js.ejs | 9 + .../examples/js/isValidNumber.js.ejs | 37 + .../examples/js/modifyCountryData.js.ejs | 11 + .../examples/js/multipleInstances.js.ejs | 13 + .../examples/js/nationalMode.js.ejs | 18 + .../examples/js/onlyCountriesEurope.js.ejs | 8 + .../examples/js/prism.js | 11 + .../examples/partials/countrySync.html | 13 + .../examples/partials/defaultCountryIp.html | 2 + .../examples/partials/displayNumber.html | 1 + .../examples/partials/hiddenInput.html | 4 + .../examples/partials/initPromise.html | 8 + .../examples/partials/isValidNumber.html | 3 + .../examples/partials/multipleInstances.html | 3 + .../examples/partials/nationalMode.html | 2 + .../examples/partials/simpleInput.html | 1 + .../examples/template.html.ejs | 45 + .../intl-tel-input-16.0.0/grunt/babel.js | 13 + .../intl-tel-input-16.0.0/grunt/bump.js | 10 + .../intl-tel-input-16.0.0/grunt/concat.js | 12 + .../intl-tel-input-16.0.0/grunt/cssmin.js | 9 + .../intl-tel-input-16.0.0/grunt/eslint.js | 5 + .../intl-tel-input-16.0.0/grunt/exec.js | 8 + .../intl-tel-input-16.0.0/grunt/imagemin.js | 15 + .../intl-tel-input-16.0.0/grunt/jasmine.js | 26 + .../intl-tel-input-16.0.0/grunt/replace.js | 289 + .../grunt/responsive_images.js | 42 + .../intl-tel-input-16.0.0/grunt/retinafy.js | 20 + .../intl-tel-input-16.0.0/grunt/sass.js | 25 + .../intl-tel-input-16.0.0/grunt/shell.js | 7 + .../intl-tel-input-16.0.0/grunt/sprite.js | 31 + .../intl-tel-input-16.0.0/grunt/template.js | 285 + .../grunt/tmpl/sprite.scss.mustache | 32 + .../intl-tel-input-16.0.0/grunt/uglify.js | 30 + .../intl-tel-input-16.0.0/grunt/watch.js | 16 + .../plugins/intl-tel-input-16.0.0/index.js | 4 + .../intl-tel-input-16.0.0/package-lock.json | 9720 +++++++++++++++++ .../intl-tel-input-16.0.0/package.json | 66 + .../screenshots/separateDialCode.png | Bin 0 -> 4030 bytes .../screenshots/vanilla.png | Bin 0 -> 34032 bytes .../plugins/intl-tel-input-16.0.0/spec.html | 117 + .../intl-tel-input-16.0.0/src/css/demo.scss | 81 + .../src/css/intlTelInput.scss | 300 + .../intl-tel-input-16.0.0/src/css/sprite.scss | 1058 ++ .../intl-tel-input-16.0.0/src/js/data.js | 1328 +++ .../src/js/intlTelInput.js | 1430 +++ .../src/js/intro-jquery.js | 11 + .../intl-tel-input-16.0.0/src/js/intro.js | 9 + .../src/js/outro-jquery.js | 40 + .../intl-tel-input-16.0.0/src/js/outro.js | 10 + .../intl-tel-input-16.0.0/src/js/utils.js | 167 + .../src/spec/helpers/helpers.js | 141 + .../tests/core/closecountrydropdownEvent.js | 46 + .../src/spec/tests/core/countrychangeEvent.js | 49 + .../src/spec/tests/core/dropdownShortcuts.js | 149 + .../src/spec/tests/core/initialValues.js | 142 + .../src/spec/tests/core/multipleInstances.js | 80 + .../src/spec/tests/core/usingDropdown.js | 81 + .../src/spec/tests/core/usingInput.js | 149 + .../src/spec/tests/methods/destroy.js | 93 + .../src/spec/tests/methods/getExtension.js | 34 + .../src/spec/tests/methods/getNumber.js | 73 + .../src/spec/tests/methods/getNumberType.js | 30 + .../tests/methods/getSelectedCountryData.js | 30 + .../spec/tests/methods/getValidationError.js | 30 + .../src/spec/tests/methods/isValidNumber.js | 73 + .../src/spec/tests/methods/setCountry.js | 26 + .../src/spec/tests/methods/setNumber.js | 67 + .../tests/methods/setPlaceholderNumberType.js | 27 + .../src/spec/tests/options/allowDropdown.js | 81 + .../spec/tests/options/autoHideDialCode.js | 111 + .../src/spec/tests/options/autoPlaceholder.js | 114 + .../src/spec/tests/options/customContainer.js | 29 + .../spec/tests/options/customPlaceholder.js | 29 + .../spec/tests/options/dropdownContainer.js | 82 + .../spec/tests/options/excludeCountries.js | 51 + .../src/spec/tests/options/formatOnDisplay.js | 76 + .../src/spec/tests/options/geoIpLookup.js | 100 + .../src/spec/tests/options/initialCountry.js | 54 + .../src/spec/tests/options/nationalMode.js | 102 + .../src/spec/tests/options/onlyCountries.js | 93 + .../tests/options/placeholderNumberType.js | 31 + .../spec/tests/options/preferredCountries.js | 63 + .../spec/tests/options/separateDialCode.js | 126 + .../src/spec/tests/options/utilsScript.js | 38 + .../src/spec/tests/static/defaults.js | 28 + .../src/spec/tests/static/getCountryData.js | 21 + .../src/spec/tests/static/loadUtils.js | 190 + 234 files changed, 33983 insertions(+), 3160 deletions(-) create mode 100644 socioboard-api/library/mongoose/models/teamInsights.js create mode 100644 socioboard-api/library/sequelize-cli/migrations/20191014081903-add_otp_fields_inUserActivations.js create mode 100644 socioboard-web-php/app/Modules/Schedule/Views/schedule_edit.blade.php create mode 100644 socioboard-web-php/app/Modules/Team/Views/AppInsight/teamReport.blade.php create mode 100644 socioboard-web-php/app/Modules/User/Views/twoStepAuth.blade.php create mode 100644 socioboard-web-php/database/migrations/2019_07_25_133655_create_sessions_table.php create mode 100644 socioboard-web-php/database/migrations/2019_08_05_075817_create_admins_table.php create mode 100644 socioboard-web-php/database/migrations/2019_08_05_131006_create_sessions_table.php create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/demo.css create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/img/flags.png create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/img/flags@2x.png create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/intlTelInput.css create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/intlTelInput.js create mode 100644 socioboard-web-php/public/assets/plugins/intel-tel-input/utils.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.eslintignore create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.eslintrc create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.github/CONTRIBUTING.md create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.github/ISSUE_TEMPLATE.md create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.gitignore create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.grenrc.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/.travis.yml create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/CHANGELOG.md create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/Gruntfile.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/LICENSE create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/README.md create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/bower.json create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/demo.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.min.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags.png create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags@2x.png create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput-jquery.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput-jquery.min.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput.min.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/utils.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/composer.json create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/demo.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/countrySync.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/isValidNumber.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/prism.css create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/country-sync.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/default-country-ip.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/display-number.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/hidden-input.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/init-promise.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/is-valid-number.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/countrySync.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/defaultCountryIp.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/displayNumber.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/hiddenInput.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/initPromise.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/isValidNumber.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/modifyCountryData.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/multipleInstances.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/nationalMode.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/onlyCountriesEurope.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/modify-country-data.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/multiple-instances.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/national-mode.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/only-countries-europe.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/countrySync.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/defaultCountryIp.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/displayNumber.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/hiddenInput.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/initPromise.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/isValidNumber.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/modifyCountryData.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/multipleInstances.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/nationalMode.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/onlyCountriesEurope.js.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/prism.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/countrySync.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/defaultCountryIp.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/displayNumber.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/hiddenInput.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/initPromise.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/isValidNumber.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/multipleInstances.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/nationalMode.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/simpleInput.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/template.html.ejs create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/babel.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/bump.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/concat.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/cssmin.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/eslint.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/exec.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/imagemin.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/jasmine.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/replace.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/responsive_images.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/retinafy.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sass.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/shell.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sprite.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/template.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/tmpl/sprite.scss.mustache create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/uglify.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/watch.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/index.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package-lock.json create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package.json create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/separateDialCode.png create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/vanilla.png create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/spec.html create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/demo.scss create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/intlTelInput.scss create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/sprite.scss create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/data.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intlTelInput.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intro-jquery.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intro.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/outro-jquery.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/outro.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/utils.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/helpers/helpers.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/closecountrydropdownEvent.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/countrychangeEvent.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/dropdownShortcuts.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/initialValues.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/multipleInstances.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/usingDropdown.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/core/usingInput.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/destroy.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/getExtension.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/getNumber.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/getNumberType.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/getSelectedCountryData.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/getValidationError.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/isValidNumber.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/setCountry.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/setNumber.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/methods/setPlaceholderNumberType.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/allowDropdown.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/autoHideDialCode.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/autoPlaceholder.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/customContainer.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/customPlaceholder.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/dropdownContainer.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/excludeCountries.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/formatOnDisplay.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/geoIpLookup.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/initialCountry.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/nationalMode.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/onlyCountries.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/placeholderNumberType.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/preferredCountries.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/separateDialCode.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/options/utilsScript.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/static/defaults.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/static/getCountryData.js create mode 100644 socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/spec/tests/static/loadUtils.js diff --git a/socioboard-api/feeds/config/configuration.js b/socioboard-api/feeds/config/configuration.js index bd887cb40..e5f947fb0 100644 --- a/socioboard-api/feeds/config/configuration.js +++ b/socioboard-api/feeds/config/configuration.js @@ -16,205 +16,213 @@ module.exports = { "LinkedIn": "LinkedIn", "Pinterest": "Pinterest", "AdminWebhooks": "AdminWebhooks", - "Boards": "Boards" + "Boards": "Boards", + "Team": "Team" }, "trend_event_label": { - "giphy_feeds": "Socio3001: User({{user}}) fetched giphy feeds of keyword({{keyword}}).", - "giphy_feeds_failed": "Socio7001: User({{user}}) cant able to fetch giphy feeds of keyword({{keyword}}).", - "giphy_feeds_failed_byApi": "Socio7001: User({{user}}) cant able to fetch giphy feeds of keyword({{keyword}}) because of API key Error.", + "giphy_feeds": "Socio3001: User({{user}})(ID: {{id}}) fetched giphy feeds of keyword({{keyword}}) with filter({{filter}}).", + "giphy_feeds_failed": "Socio7001: User({{user}})(ID: {{id}}) cant able to fetch giphy feeds of keyword({{keyword}}) with filter({{filter}}).", + "giphy_feeds_failed_byApi": "Socio7001: User({{user}})(ID: {{id}}) cant able to fetch giphy feeds of keyword({{keyword}}) with filter({{filter}}) because of API key Error.", - "newsapi_feeds": "Socio3002: User({{user}}) fetched newsapi feeds of keyword({{keyword}}).", - "newsapi_feeds_failed": "Socio7002: User({{user}}) cant able to fetch newsapi feeds of keyword({{keyword}}).", - "newsapi_feeds_failed_byApi": "Socio7002: User({{user}}) cant able to fetch newsapi feeds of keyword({{keyword}}) because of API key Error.", + "newsapi_feeds": "Socio3002: User({{user}})(ID: {{id}}) fetched newsapi feeds of keyword({{keyword}}) with with sort of({{sort}}).", + "newsapi_feeds_failed": "Socio7002: User({{user}})(ID: {{id}}) cant able to fetch newsapi feeds of keyword({{keyword}}) with sort of({{sort}}).", + "newsapi_feeds_failed_byApi": "Socio7002: User({{user}})(ID: {{id}}) cant able to fetch newsapi feeds of keyword({{keyword}}) with sort of({{sort}}) because of API key Error.", - "flickr_feeds": "Socio3003: User({{user}}) fetched filcker feeds of keyword({{keyword}}).", - "flickr_feeds_failed": "Socio7003: User({{user}}) cant able to fetch filcker feeds of keyword({{keyword}}).", - "flickr_feeds_failed_byApi": "Socio7003: User({{user}}) cant able to fetch filcker feeds of keyword({{keyword}}) because of API key Error.", + "flickr_feeds": "Socio3003: User({{user}})(ID: {{id}}) fetched filcker feeds of keyword({{keyword}}) with sort of({{sort}}).", + "flickr_feeds_failed": "Socio7003: User({{user}})(ID: {{id}}) cant able to fetch filcker feeds of keyword({{keyword}}) with sort of({{sort}}).", + "flickr_feeds_failed_byApi": "Socio7003: User({{user}})(ID: {{id}}) cant able to fetch filcker feeds of keyword({{keyword}}) with sort of({{sort}}) because of API key Error.", - "daily_motion_feeds": "Socio3004: User({{user}}) fetched dailyMotion feeds.", - "daily_motion_feeds_failed": "Socio7004: User({{user}}) cant able to fetch dailyMotion feeds.", - "daily_motion_feeds_failed_byApi": "Socio7004: User({{user}}) cant able to fetch dailyMotion feeds because of API key Error...", + "daily_motion_feeds": "Socio3004: User({{user}})(ID: {{id}}) fetched dailyMotion feeds with filter({{filter}}) and with sort of({{sort}}).", + "daily_motion_feeds_failed": "Socio7004: User({{user}})(ID: {{id}}) cant able to fetch dailyMotion feeds with filter({{filter}}) and with sort of({{sort}}).", + "daily_motion_feeds_failed_byApi": "Socio7004: User({{user}})(ID: {{id}}) cant able to fetch dailyMotion feeds with filter({{filter}}) and with sort of({{sort}}) because of API key Error...", - "imgur_feeds": "Socio3005: User({{user}}) fetched imgur posts of keyword({{keyword}}).", - "imgur_feeds_failed": "Socio7005: User({{user}}) cant able to fetch imgur posts of keyword({{keyword}}).", - "imgur_feeds_failed_byApi": "Socio7005: User({{user}}) cant able to fetch imgur posts of keyword({{keyword}}) because of API key Error.", + "imgur_feeds": "Socio3005: User({{user}})(ID: {{id}}) fetched imgur posts of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}).", + "imgur_feeds_failed": "Socio7005: User({{user}})(ID: {{id}}) cant able to fetch imgur posts of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}).", + "imgur_feeds_failed_byApi": "Socio7005: User({{user}})(ID: {{id}}) cant able to fetch imgur posts of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}) because of API key Error.", - "rss_feeds": "Socio3006: User({{user}}) fetched rss feeds of url({{url}}).", - "rss_feeds_failed": "Socio7006: User({{user}}) cant able to fetch rss feeds of url({{url}}).", + "rss_feeds": "Socio3006: User({{user}})(ID: {{id}}) fetched rss feeds of url({{url}}).", + "rss_feeds_failed": "Socio7006: User({{user}})(ID: {{id}}) cant able to fetch rss feeds of url({{url}}).", - "youtube_feeds": "Socio3007: User({{user}}) fetched youtube feeds of keyword({{keyword}}).", - "youtube_feeds_failed": "Socio7007: User({{user}}) cant able to fetch youtube feeds of keyword({{keyword}}).", - "youtube_feeds_failed_byApi": "Socio7007: User({{user}}) cant able to fetch youtube feeds of keyword({{keyword}}) because of API key Error.", + "youtube_feeds": "Socio3007: User({{user}})(ID: {{id}}) fetched youtube feeds of keyword({{keyword}}) with sort of({{sort}}).", + "youtube_feeds_failed": "Socio7007: User({{user}})(ID: {{id}}) cant able to fetch youtube feeds of keyword({{keyword}}) with sort of({{sort}}).", + "youtube_feeds_failed_byApi": "Socio7007: User({{user}})(ID: {{id}}) cant able to fetch youtube feeds of keyword({{keyword}}) with sort of({{sort}}) because of API key Error.", - "twitter_current_trends": "Socio3008: User({{user}}) fetched current twitter trends of Country({{country}})", - "twitter_current_trends_failed": "Socio7008: User({{user}}) cant able to fetch current trends of Country({{country}})", + "twitter_current_trends": "Socio3008: User({{user}})(ID: {{id}}) fetched current twitter trends of Country({{country}})", + "twitter_current_trends_failed": "Socio7008: User({{user}})(ID: {{id}}) cant able to fetch current trends of Country({{country}})", - "twitter_keyword_trends": "Socio3009: User({{user}}) fetched twitter trendings of keyword({{keyword}}).", - "twitter_keyword_trends_failed": "Socio7009: User({{user}}) cant able to fetch twitter trendings of keyword({{keyword}}).", + "twitter_keyword_trends": "Socio3009: User({{user}})(ID: {{id}}) fetched twitter trendings of keyword({{keyword}}).", + "twitter_keyword_trends_failed": "Socio7009: User({{user}})(ID: {{id}}) cant able to fetch twitter trendings of keyword({{keyword}}).", - "pixabay_feeds": "Socio3031: User({{user}}) fetched pixabay feeds of keyword({{keyword}}).", - "pixabay_feeds_failed": "Socio7031: User({{user}}) cant able to fetch pixabay feeds of keyword({{keyword}}).", - "pixabay_feeds_failed_byApi": "Socio7031: User({{user}}) cant able to fetch pixabay feeds of keyword({{keyword}}) because of API key Error.", + "pixabay_feeds": "Socio3010: User({{user}})(ID: {{id}}) fetched pixabay feeds of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}).", + "pixabay_feeds_failed": "Socio7010: User({{user}})(ID: {{id}}) cant able to fetch pixabay feeds of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}).", + "pixabay_feeds_failed_byApi": "Socio7011: User({{user}})(ID: {{id}}) cant able to fetch pixabay feeds of keyword({{keyword}}) with filter({{filter}}) and with sort of({{sort}}) because of API key Error.", }, "feed_event_label": { + "facebook_feed": "Socio3100: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched facebook feeds of account({{accountId}}).", + "facebook_feed_failed": "Socio7100: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch facebook feeds of account({{accountId}}).", - "facebook_feed": "Socio3010: User({{user}}) of team({{teamId}}) fetched facebook feeds of account({{accountId}}).", - "facebook_feed_failed": "Socio7010: User({{user}}) of team({{teamId}}) cant able to fetch facebook feeds of account({{accountId}}).", + "twitter_tweet_list": "Socio3101: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter tweets of account({{accountId}}).", + "twitter_tweet_list_failed": "Socio7101: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch twitter tweets of account({{accountId}}).", - "twitter_tweet_list": "Socio3011: User({{user}}) of team({{teamId}}) fetched twitter tweets of account({{accountId}}).", - "twitter_tweet_list_failed": "Socio7011: User({{user}}) of team({{teamId}}) cant able to fetch twitter tweets of account({{accountId}}).", + "twitter_timeline_tweets": "Socio3102: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter home timeline tweets of account({{accountId}}).", + "twitter_timeline_tweets_failed": "Socio7102: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch twitter timeline tweets of account({{accountId}}).", - "twitter_timeline_tweets": "Socio3012: User({{user}}) of team({{teamId}}) fetched twitter home timeline tweets of account({{accountId}}).", - "twitter_timeline_tweets_failed": "Socio7012: User({{user}}) of team({{teamId}}) cant able to fetch twitter timeline tweets of account({{accountId}}).", + "twitter_mention_tweets": "Socio3103: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter mentioned timeline tweets of account({{accountId}}).", + "twitter_mention_tweets_failed": "Socio7103: User({{user}})(ID: {{id}}) of team({{teamId}}) of team({{teamId}}) cant able to fetch twitter mentioned timeline tweets of account({{accountId}}).", - "twitter_mention_tweets": "Socio3013: User({{user}}) of team({{teamId}}) fetched twitter mentioned timeline tweets of account({{accountId}}).", - "twitter_mention_tweets_failed": "Socio7013: User({{user}}) of team({{teamId}}) of team({{teamId}}) cant able to fetch twitter mentioned timeline tweets of account({{accountId}}).", + "keyword_tweets": "Socio3104: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched keyword matching tweets of account({{accountId}}).", + "keyword_tweets_failed": "Socio7104: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch keyword matching tweets of account({{accountId}}).", - "keyword_tweets": "Socio3014: User({{user}}) of team({{teamId}}) fetched keyword matching tweets of account({{accountId}}).", - "keyword_tweets_failed": "Socio7014: User({{user}}) of team({{teamId}}) cant able to fetch keyword matching tweets of account({{accountId}}).", + "linkedin_company_pages": "Socio3105: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched linkedin company pages of account({{accountId}}).", + "linkedin_company_pages_failed": "Socio7105: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch linkedin company pages of account({{accountId}}).", - "linkedin_company_pages": "Socio3015: User({{user}}) of team({{teamId}}) fetched linkedin company pages of account({{accountId}}).", - "linkedin_company_pages_failed": "Socio7015: User({{user}}) of team({{teamId}}) cant able to fetch linkedin company pages of account({{accountId}}).", + "pinterst_pins": "Socio3106: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched pinterest pins of account({{accountId}}) of board({{board}}).", + "pinterst_pins_failed": "Socio7106: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch pinterest pins of account({{accountId}}) of board({{board}}).", - "pinterst_pins": "Socio3016: User({{user}}) of team({{teamId}}) fetched pinterest pins of account({{accountId}}).", - "pinterst_pins_failed": "Socio7016: User({{user}}) of team({{teamId}}) cant able to fetch pinterst pins of account({{accountId}}).", + "youtube_feeds": "Socio3017: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched youtube feeds of account({{accountId}}).", + "youtube_feeds_failed": "Socio7107: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch youtube feeds of account({{accountId}}).", - "youtube_feeds": "Socio3017: User({{user}}) of team({{teamId}}) fetched youtube feeds of account({{accountId}}).", - "youtube_feeds_failed": "Socio7017: User({{user}}) of team({{teamId}}) cant able to fetch youtube feeds of account({{accountId}}).", + "instagram_feeds": "Socio3018: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched instagram feeds of account({{accountId}}).", + "instagram_feeds_failed": "Socio7108: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram feeds of account({{accountId}}).", - "instagram_feeds": "Socio3018: User({{user}}) of team({{teamId}}) fetched instagram feeds of account({{accountId}}).", - "instagram_feeds_failed": "Socio7018: User({{user}}) of team({{teamId}}) cant able to fetch instagram feeds of account({{accountId}}).", + "instagram_business_feeds": "Socio3109: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched instagram business feeds of account({{accountId}}).", + "instagram_business_feeds_failed": "Socio7109: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram business feeds of account({{accountId}}).", - "instagram_business_feeds": "Socio3019: User({{user}}) of team({{teamId}}) fetched instagram business feeds of account({{accountId}}).", - "instagram_business_feeds_failed": "Socio7019: User({{user}}) of team({{teamId}}) cant able to fetch instagram business feeds of account({{accountId}}).", + "instagram_recent_feeds": "Socio3110: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched instagram recent feeds of account({{accountId}}).", + "instagram_recent_feeds_failed": "Socio7110: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram recent feeds of account({{accountId}}).", - "instagram_recent_feeds": "Socio3020: User({{user}}) of team({{teamId}}) fetched instagram recent feeds of account({{accountId}}).", - "instagram_recent_feeds_failed": "Socio7020: User({{user}}) of team({{teamId}}) cant able to fetch instagram recent feeds of account({{accountId}}).", - - "facebook_recent_feed": "Socio3010: User({{user}}) of team({{teamId}}) fetched facebook recent feeds of account({{accountId}}).", - "facebook_recent_feed_failed": "Socio7010: User({{user}}) of team({{teamId}}) cant able to fetch facebook recent feeds of account({{accountId}}).", - - "twitter_recent_tweet_list": "Socio3011: User({{user}}) of team({{teamId}}) fetched twitter recent tweets of account({{accountId}}).", - "twitter_recent_tweet_list_failed": "Socio7011: User({{user}}) of team({{teamId}}) cant able to fetch twitter recent tweets of account({{accountId}}).", + "facebook_recent_feed": "Socio3111: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched facebook recent feeds of account({{accountId}}).", + "facebook_recent_feed_failed": "Socio7111: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch facebook recent feeds of account({{accountId}}).", + "twitter_recent_tweet_list": "Socio3112: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter recent tweets of account({{accountId}}).", + "twitter_recent_tweet_list_failed": "Socio7112: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch twitter recent tweets of account({{accountId}}).", }, "like_comment_event_label": { - "facebook_like": "Socio3019: User({{user}}) of team({{teamId}}) successfully liked facebook post({{post}}).", - "facebook_like_failed": "Socio7019: User({{user}}) of team({{teamId}}) cant able to like facebook post({{post}}).", + "facebook_like": "Socio3200: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully liked facebook post({{post}}).", + "facebook_like_failed": "Socio7200: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to like facebook post({{post}}).", + + "facebook_comment": "Socio3201: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully commented facebook post({{post}}).", + "facebook_comment_failed": "Socio7201: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to comment facebook post({{post}}).", - "facebook_comment": "Socio3020: User({{user}}) of team({{teamId}}) successfully commented facebook post({{post}}).", - "facebook_comment_failed": "Socio7020: User({{user}}) of team({{teamId}}) cant able to comment facebook post({{post}}).", + "twitter_like": "Socio3202: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully liked twitter post({{post}}).", + "twitter_like_failed": "Socio7202: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to like twitter post({{post}}).", - "twitter_like": "Socio3021: User({{user}}) of team({{teamId}}) successfully liked twitter post({{post}}).", - "twitter_like_failed": "Socio7021: User({{user}}) of team({{teamId}}) cant able to like twitter post({{post}}).", + "twitter_dislike": "Socio3203: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully disliked twitter post({{post}}).", + "twitter_dislike_failed": "Socio7203: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to dislike twitter post({{post}}).", - "twitter_dislike": "Socio3022: User({{user}}) of team({{teamId}}) successfully disliked twitter post({{post}}).", - "twitter_dislike_failed": "Socio7022: User({{user}}) of team({{teamId}}) cant able to dislike twitter post({{post}}).", + "twitter_comment": "Socio3204: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully commented twitter post({{post}})", + "twitter_comment_failed": "Socio7204: User({{user}})(ID: {{id}}) of team({{teamId}}) cant ablet to comment twitter post({{post}}).", - "twitter_comment": "Socio3023: User({{user}}) of team({{teamId}}) successfully commented twitter post({{post}})", - "twitter_comment_failed": "Socio7023: User({{user}}) of team({{teamId}}) cant ablet to comment twitter post({{post}}).", + "twitter_comment_delete": "Socio3205: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully deleted twitter comment({{post}}).", + "twitter_comment_delete_failed": "Socio7205: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to delete twitter commnet({{post}}).", - "twitter_comment_delete": "Socio3024: User({{user}}) of team({{teamId}}) successfully deleted twitter comment({{post}}).", - "twitter_comment_delete_failed": "Socio7024: User({{user}}) of team({{teamId}}) cant able to delete twitter commnet({{post}}).", + "youtube_like": "Socio3206: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully liked Youtube post({{post}}).", + "youtube_like_failed": "Socio7206: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to like youtube post({{post}}).", - "youtube_like": "Socio3025: User({{user}}) of team({{teamId}}) successfully liked Youtube post({{post}}).", - "youtube_like_failed": "Socio7025: User({{user}}) of team({{teamId}}) cant able to like youtube post({{post}}).", + "youtube_comment": "Socio3207: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully commented youtube post({{post}}).", + "youtube_comment_failed": "Socio7207: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to comment youtube post({{post}}).", - "youtube_comment": "Socio3026: User({{user}}) of team({{teamId}}) successfully commented youtube post({{post}}).", - "youtube_comment_failed": "Socio7026: User({{user}}) of team({{teamId}}) cant able to comment youtube post({{post}}).", + "youtube_comment_reply": "Socio3208: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully replied to Youtube comment({{post}}).", + "youtube_comment_reply_failed": "Socio7208: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to reply to youtube comment({{post}}).", - "youtube_comment_reply": "Socio3027: User({{user}}) of team({{teamId}}) successfully replied to Youtube comment({{post}}).", - "youtube_comment_reply_failed": "Socio7027: User({{user}}) of team({{teamId}}) cant able to reply to youtube comment({{post}}).", + "insta_business_comment": "Socio3209: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully fetched insta business({{accountId}}) comments.", + "insta_business_comment_failed": "Socio3209: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch insta business({{accountId}}) comments.", + + "insta_business_reply_comment": "Socio3210: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully replied to insta business({{accountId}}) comment({{commentId}}).", + "insta_business_reply_comment_failed": "Socio3210: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to reply to insta business({{accountId}}) comment({{commentId}}).", }, "friends_event_label": { - "twitter_followers": "Socio3028: User({{user}}) of team({{teamId}}) fetched followers for twitter account({{accountId}}).", - "twitter_followers_failed": "Socio7028: User({{user}}) of team({{teamId}}) cant able to fetch followers for twitter account({{accountId}}).", + "twitter_followers": "Socio3350: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched followers for twitter account({{accountId}}).", + "twitter_followers_failed": "Socio7350: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch followers for twitter account({{accountId}}).", - "twitter_following": "Socio3029: User({{user}}) of team({{teamId}}) fetched followings of twitter account({{accountId}}).", - "twitter_following_failed": "Socio7029: User({{user}}) of team({{teamId}}) cant able to fetch followings of twitter account({{accountId}}).", + "twitter_following": "Socio3351: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched followings of twitter account({{accountId}}).", + "twitter_following_failed": "Socio7351: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch followings of twitter account({{accountId}}).", - "twitter_user_search": "Socio3030: User({{user}}) of team({{teamId}}) fetched users matched with keyword({{keyword}}).", - "twitter_user_search_failed": "Socio7030: User({{user}}) of team({{teamId}}) cant able to fetch users matched with keyword({{keyword}}).", + "twitter_user_search": "Socio3352: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched users matched with keyword({{keyword}}).", + "twitter_user_search_failed": "Socio7352: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch users matched with keyword({{keyword}}).", }, "friends_stats_update": { - "twitter_stats_update": "Socio3032: User({{user}}) fetched the stats details of twitter account({{accountId}}) from team({{teamId}}).", - "twitter_stats_update_failed": "Socio7032: User({{user}}) cant able to fetch the stats details of twitter account({{accountId}}) from team({{teamId}}).", + "twitter_stats_update": "Socio3391: User({{user}})(ID: {{id}}) fetched the stats details of twitter account({{accountId}}) from team({{teamId}}).", + "twitter_stats_update_failed": "Socio7391: User({{user}})(ID: {{id}}) cant able to fetch the stats details of twitter account({{accountId}}) from team({{teamId}}).", }, "networkInsights_event_label": { - "fb_page_insights": "User({{user}}) of team({{teamId}}) fetched facebook page insights of account({{accountId}}).", - "fb_page_insights_failed": "User({{user}}) of team({{teamId}}) cant able to fetch facebook page insights of account({{accountId}}).", + "fb_page_insights": "Socio3400: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched facebook page insights of account({{accountId}}).", + "fb_page_insights_failed": "Socio7400: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch facebook page insights of account({{accountId}}).", + + "youtube_insights": "Socio3401: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched youtube insights of account({{accountId}}).", + "youtube_insights_failed": "Socio7401: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch youtube insights of account({{accountId}}).", - "youtube_insights": "User({{user}}) of team({{teamId}}) fetched youtube insights of account({{accountId}}).", - "youtube_insights_failed": "User({{user}}) of team({{teamId}}) cant able to fetch youtube insights of account({{accountId}}).", + "linkedIn_company_insights": "Socio3402: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched linkedIn company insights of account({{accountId}}).", + "linkedIn_company_insights_failed": "Socio7402: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch linkedIn company insights of account({{accountId}}).", - "linkedIn_company_insights": "User({{user}}) of team({{teamId}}) fetched linkedIn company insights of account({{accountId}}).", - "linkedIn_company_insights_failed": "User({{user}}) of team({{teamId}}) cant able to fetch linkedIn company insights of account({{accountId}}).", + "instagram_business_insights": "Socio3403: User({{user}})(ID: {{id}}) of team({teamId}) fetched instagram business insights of account({{accountId}}).", + "instagram_business_insights_failed": "Socio7403: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram business insights of account({{accountId}}).", - "instagram_business_insights": "User({{user}}) of team({teamId}) fetched instagram business insights of account({{accountId}}).", - "instagram_business_insights_failed": "User({{user}}) of team({{teamId}}) cant able to fetch instagram business insights of account({{accountId}}).", + "twitter_insights": "Socio3404: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter insights of account({{accountId}}).", + "twitter_insights_failed": "Socio7404: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch twitter insights of account({{accountId}}).", - "twitter_insights": "User({{user}}) of team({{teamId}}) fetched twitter insights of account({{accountId}}).", - "twitter_insights_failed": "User({{user}}) of team({{teamId}}) cant able to fetch twitter insights of account({{accountId}}).", + "team_insights": "Socio3405: User({{user}})(ID: {{id}}) fetched team insights of team({{teamId}}).", + "team_insights_failed": "Socio7405: User({{user}})(ID: {{id}}) cant able to fetch team insights of team({{teamId}}).", }, "admin_webhooks_event_label": { - "twitter_webhooks_start": "Admin({{admin}}) started twitter webhooks.", - "twitter_webhooks_start_failed": "Admin({{admin}}) cant able to start twitter webhooks.", + "twitter_webhooks_start": "Socio3500: Admin({{admin}})(ID: {{id}}) started twitter webhooks.", + "twitter_webhooks_start_failed": "Socio7500: Admin({{admin}})(ID: {{id}}) cant able to start twitter webhooks.", - "twitter_webhooks_stop": "Admin({{admin}}) stopped twitter webhooks.", - "twitter_webhooks_stop_failed": "Admin({{admin}}) cant able to stop twitter webhooks.", + "twitter_webhooks_stop": "Socio3501: Admin({{admin}})(ID: {{id}}) stopped twitter webhooks.", + "twitter_webhooks_stop_failed": "Socio7501: Admin({{admin}})(ID: {{id}}) cant able to stop twitter webhooks.", - "twitter_subscription_list": "Admin({{admin}}) fetched all subscription List.", - "twitter_subscription_list_failed": "Admin({{admin}}) cant able to fetch all subscription List.", + "twitter_subscription_list": "Socio3502: Admin({{admin}})(ID: {{id}}) fetched all subscription List.", + "twitter_subscription_list_failed": "Socio7502: Admin({{admin}})(ID: {{id}}) cant able to fetch all subscription List.", }, "friendship_stats_event_lable": { - "fb_profile_stats": "User({{user}}) of team({{teamId}}) fetched facebook profile updated details of account({{accountId}}).", - "fb_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch facebook profile updated details of account({{accountId}}).", + "fb_profile_stats": "Socio3600: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched facebook profile updated details of account({{accountId}}).", + "fb_profile_stats_failed": "Socio7600: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch facebook profile updated details of account({{accountId}}).", - "fb_page_stats": "User({{user}}) of team({{teamId}}) fetched facebook page updated details of account({{accountId}}).", - "fb_page_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch facebook page updated details of account({{accountId}}).", + "fb_page_stats": "Socio3601: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched facebook page updated details of account({{accountId}}).", + "fb_page_stats_failed": "Socio7601: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch facebook page updated details of account({{accountId}}).", - "twitter_profile_stats": "User({{user}}) of team({{teamId}}) fetched twitter profile updated details of account({{accountId}}).", - "twitter_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch twitter profile updated details of account({{accountId}}).", + "twitter_profile_stats": "Socio3602: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched twitter profile updated details of account({{accountId}}).", + "twitter_profile_stats_failed": "Socio7602: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch twitter profile updated details of account({{accountId}}).", - "instagram_profile_stats": "User({{user}}) of team({{teamId}}) fetched instagram profile updated details of account({{accountId}}).", - "instagram_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch instagram profile updated details of account({{accountId}}).", + "instagram_profile_stats": "Socio3603: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched instagram profile updated details of account({{accountId}}).", + "instagram_profile_stats_failed": "Socio7603: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram profile updated details of account({{accountId}}).", - "linkedIn_profile_stats": "User({{user}}) of team({{teamId}}) fetched linkedIn profile updated details of account({{accountId}}).", - "linkedIn_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch linkedIn profile updated details of account({{accountId}}).", + "linkedIn_profile_stats": "Socio3604: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched linkedIn profile updated details of account({{accountId}}).", + "linkedIn_profile_stats_failed": "Socio7604: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch linkedIn profile updated details of account({{accountId}}).", - "youtube_profile_stats": "User({{user}}) of team({{teamId}}) fetched youtube channel updated details of account({{accountId}}).", - "youtube_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch youtube channel updated details of account({{accountId}}).", + "youtube_profile_stats": "Socio3605: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched youtube channel updated details of account({{accountId}}).", + "youtube_profile_stats_failed": "Socio7605: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch youtube channel updated details of account({{accountId}}).", - "pinterest_profile_stats": "User({{user}}) of team({{teamId}}) fetched pinterest profile updated details of account({{accountId}}).", - "pinterest_profile_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch pinterest profile updated details` of account({{accountId}}).", + "pinterest_profile_stats": "Socio3606: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched pinterest profile updated details of account({{accountId}}).", + "pinterest_profile_stats_failed": "Socio7606: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch pinterest profile updated details` of account({{accountId}}).", - "instagram_business_stats": "User({{user}}) of team({{teamId}}) fetched instagram business updated details of account({{accountId}}).", - "instagram_business_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch instagram business updated details of account({{accountId}}).", + "instagram_business_stats": "Socio3607: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched instagram business updated details of account({{accountId}}).", + "instagram_business_stats_failed": "Socio7607: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch instagram business updated details of account({{accountId}}).", - "linkedin_company_stats": "User({{user}}) of team({{teamId}}) fetched linkedin company updated details of account({{accountId}}).", - "linkedin_company_stats_failed": "User({{user}}) of team({{teamId}}) cant able to fetch linkedin company updated details of account({{accountId}}).", + "linkedin_company_stats": "Socio3608: User({{user}})(ID: {{id}}) of team({{teamId}}) fetched linkedin company updated details of account({{accountId}}).", + "linkedin_company_stats_failed": "Socio7608: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch linkedin company updated details of account({{accountId}}).", }, "board_event_lable": { - "create_board": "User({{user}}) of team({{teamId}}) successfully created board of keyword({{keyword}}).", - "create_board_failed": "User({{user}}) of team({{teamId}}) cant able to create board of keyword({{keyword}}).", + "create_board": "Socio3700: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully created board of keyword({{keyword}}).", + "create_board_failed": "Socio7700: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to create board of keyword({{keyword}}).", - "fetch_board": "User({{user}}) of team({{teamId}}) successfully fetched all boards.", - "fetch_board_failed": "User({{user}}) of team({{teamId}}) cant able to fetch boards.", + "fetch_board": "Socio3701: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully fetched all boards.", + "fetch_board_failed": "Socio7701: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to fetch boards.", - "edit_board": "User({{user}}) of team({{teamId}}) successfully edited board of boardId({{boardId}}).", - "edit_board_failed": "User({{user}}) of team({{teamId}}) cant able to edit board of boardId({{boardId}}).", + "edit_board": "Socio3702: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully edited board of boardId({{boardId}}).", + "edit_board_failed": "Socio7702: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to edit board of boardId({{boardId}}).", - "delete_board": "User({{user}}) of team({{teamId}}) successfully deleted board of boardId({{boardId}}).", - "delete_board_failed": "User({{user}}) of team({{teamId}}) cant able to delete board of boardId({{boardId}}).", + "delete_board": "Socio3703: User({{user}})(ID: {{id}}) of team({{teamId}}) successfully deleted board of boardId({{boardId}}).", + "delete_board_failed": "Socio7703: User({{user}})(ID: {{id}}) of team({{teamId}}) cant able to delete board of boardId({{boardId}}).", } } }; \ No newline at end of file diff --git a/socioboard-api/feeds/core/networkInsights/controllers/networkInsightControllers.js b/socioboard-api/feeds/core/networkInsights/controllers/networkInsightControllers.js index 0199bacb4..91c65f747 100644 --- a/socioboard-api/feeds/core/networkInsights/controllers/networkInsightControllers.js +++ b/socioboard-api/feeds/core/networkInsights/controllers/networkInsightControllers.js @@ -113,6 +113,26 @@ class NetworkInsightController { }); } + getTeamInsights(req, res) { + var networkInsightLibs = new NetworkInsightLibs(); + return networkInsightLibs.getTeamInsights(req.body.userScopeId, req.query.teamId, req.query.filterPeriod, req.query.since, req.query.untill) + .then((response) => { + analyticsServices.registerEvents({ + category: req.body.userScopeEmail, + action: configruation.feeds_service_events.event_action.Team, + label: configruation.feeds_service_events.networkInsights_event_label.team_insights.replace('{{user}}', req.body.userScopeName).replace('{{accountId}}', req.query.accountId).replace('{{id}}', req.body.userScopeId).replace('{{teamId}}', req.query.teamId) + }); + res.status(200).json({ code: 200, status: "success", result: response }); + }) + .catch((error) => { + analyticsServices.registerEvents({ + category: req.body.userScopeEmail, + action: configruation.feeds_service_events.event_action.Team, + label: configruation.feeds_service_events.networkInsights_event_label.team_insights_failed.replace('{{user}}', req.body.userScopeName).replace('{{accountId}}', req.query.accountId).replace('{{id}}', req.body.userScopeId).replace('{{teamId}}', req.query.teamId) + }); + res.status(200).json({ code: 400, status: "failed", error: error.message }); + }); + } } module.exports = new NetworkInsightController(); diff --git a/socioboard-api/feeds/core/networkInsights/routes.js b/socioboard-api/feeds/core/networkInsights/routes.js index d31727c01..bcadf5f8e 100644 --- a/socioboard-api/feeds/core/networkInsights/routes.js +++ b/socioboard-api/feeds/core/networkInsights/routes.js @@ -234,6 +234,47 @@ routes.get('/getInstagramBusinessInsights', networkSightController.getInstagramB */ routes.get('/getTwitterInsights', networkSightController.getTwitterInsights); +/** + * @swagger + * /v1/networkinsights/getTeamInsights: + * get: + * operationId: secured_networkinsights_getTeamInsights + * summary: Secured + * security: + * - AccessToken: [] + * tags: + * - NetworkInsights + * description: To fetch the Team insights + * produces: + * - application/json + * parameters: + * - in: query + * description: Team Id + * name: teamId + * type: integer + * - in: query + * description: Filter Period 1- Today, 2-Yesterday, 3-Last week, 4-Last 30 days, 5- this month, 6- last month, 7- custom range + * name: filterPeriod + * type: integer + * enum: [1,2,3,4,5,6,7] + * - in: query + * description: Custom since range in YYYY-MM-DD format + * name: since + * type: string + * - in: query + * description: Custom untill range in YYYY-MM-DD format + * name: untill + * type: string + * responses: + * 200: + * description: Return success! + * 404: + * description: Return Not Found or ErrorMessage + * 401: + * $ref: "#/responses/unauthorizedError" + */ +routes.get('/getTeamInsights', networkSightController.getTeamInsights); + module.exports = routes; diff --git a/socioboard-api/feeds/core/networkInsights/utils/networkinsightlibs.js b/socioboard-api/feeds/core/networkInsights/utils/networkinsightlibs.js index 8a20fc0f4..649affd84 100644 --- a/socioboard-api/feeds/core/networkInsights/utils/networkinsightlibs.js +++ b/socioboard-api/feeds/core/networkInsights/utils/networkinsightlibs.js @@ -6,6 +6,7 @@ const LinkedInHelper = require('../../../../library/network/linkedin'); const UserTeamAccount = require('../../../../library/mixins/userteamaccount'); const TwitterInsightMongoModel = require('../../../../library/mongoose/models/twitterInsights'); +const TeamInsightsMongoModel = require('../../../../library/mongoose/models/teamInsights'); const moment = require('moment'); class NetworkInsightLibs { @@ -297,55 +298,135 @@ class NetworkInsightLibs { // Validating whether that account is belongs to Twitter or not return this.getSocialAccount(4, accountId, userId, teamId) .then(() => { - switch (Number(filterPeriod)) { - case 1: - since = moment().startOf('day'); - untill = moment().endOf('day'); - break; - case 2: - since = moment().subtract(1, 'days').startOf('day'); - untill = moment().subtract(1, 'days').endOf('day'); - break; - case 3: - since = moment().subtract(1, 'weeks').startOf('weeks'); - untill = moment().subtract(1, 'weeks').endOf('weeks'); - break; - case 4: - since = moment().subtract(30, 'days').startOf('day'); - untill = moment(); - break; - case 5: - since = moment().startOf('month'); - untill = moment(); - break; - case 6: - since = moment().startOf('month').subtract(1, 'days').startOf('month'); - untill = moment().startOf('month').subtract(1, 'days').endOf('month'); - break; - case 7: - if (filterPeriod == 7) { - if (!since || !untill) throw new Error('Invalid Inputs'); - else { - since = moment(since).startOf('day'); - untill = moment(untill).endOf('day'); - } - } - break; - default: - throw new Error("please choose valid filter type"); - } - if (since <= untill) { - var twitterInsightMongoModelObject = new TwitterInsightMongoModel(); - // Fetching insights from Twitter insight model of mongo DB - return twitterInsightMongoModelObject.getInsights(accountId, since, untill) - .then((response) => { - resolve(response); - }) - .catch((error) => { - throw new Error(error.message); - }); - } - else throw new Error('Check range values. since should be lesser than or equals to until'); + return this.getFilteredPeriod(filterPeriod, since, untill) + .then((dates) => { + var twitterInsightMongoModelObject = new TwitterInsightMongoModel(); + // Fetching insights from Twitter insight model of mongo DB + return twitterInsightMongoModelObject.getInsights(accountId, dates.since, dates.untill) + .then((response) => { + resolve(response); + }) + .catch((error) => { + throw new Error(error.message); + }); + }) + .catch((error) => { + throw error; + }); + }) + .catch((error) => { + reject(error); + }) + } + }); + } + + getTeamInsights(userId, teamId, filterPeriod, since, untill) { + return new Promise((resolve, reject) => { + if (!teamId || !userId || !filterPeriod) { + reject(new Error('Invalid Inputs')); + } + else { + var InsightResult = ''; + var facebookInsights = {}; + var twitterInsights = {}; + var youtubeInsights = {}; + var instagramBusinessInsights = {}; + var teamMembstats = {}; + + var Facebook = []; + var Twitter = []; + var InstagramBusiness = []; + var Youtube = []; + + return this.getFilteredPeriod(filterPeriod, since, untill) + .then((dates) => { + return this.isTeamValidForUser(userId, teamId) + .then(() => { + var teamInsightsMongoModelObject = new TeamInsightsMongoModel(); + return teamInsightsMongoModelObject.getInsights(teamId, dates.since, dates.untill) + .then((result) => { + InsightResult = result; + if (InsightResult.length > 0) { + return Promise.all(InsightResult.map(eachDay => { + // Intitializing with 0 + twitterInsights.follower_count = 0; twitterInsights.following_count = 0; twitterInsights.total_like_count = 0; twitterInsights.total_post_count = 0; + instagramBusinessInsights.friendship_count = 0; instagramBusinessInsights.follower_count = 0; instagramBusinessInsights.following_count = 0; instagramBusinessInsights.total_post_count = 0; + facebookInsights.friendship_count = 0; facebookInsights.page_count = 0; + youtubeInsights.subscription_count = 0; youtubeInsights.total_post_count = 0; + + teamMembstats.teamMembersCount = eachDay.teamMembersCount; + teamMembstats.invitedList = eachDay.invitedList; + teamMembstats.socialProfilesCount = eachDay.socialProfilesCount; + + var account_type = [1, 4, 5, 9] + return Promise.all(account_type.map(account => { + switch (Number(account)) { + case 1: + var facebookTemp = {}; + eachDay.SocialAccountStats[0].facebookStats.forEach(facebook => { + facebookTemp.facebookInsights = {}; + facebookTemp.facebookInsights.friendship_count = facebookInsights.friendship_count += facebook.facebookStats.friendship_count; + facebookTemp.facebookInsights.page_count = facebookInsights.page_count += facebook.facebookStats.page_count; + facebookTemp.facebookInsights.date = facebookInsights.date = eachDay.date; + }); + Facebook.push({ facebookInsights: facebookTemp.facebookInsights }); + break; + case 4: + var twitterTemp = {}; + eachDay.SocialAccountStats[0].twitterStats.forEach(twitter => { + twitterTemp.twitterInsights = {}; + twitterTemp.twitterInsights.follower_count = twitterInsights.follower_count += twitter.twitterStats.follower_count; + twitterTemp.twitterInsights.following_count = twitterInsights.following_count += twitter.twitterStats.following_count; + twitterTemp.twitterInsights.total_like_count = twitterInsights.total_like_count += twitter.twitterStats.total_like_count; + twitterTemp.twitterInsights.total_post_count = twitterInsights.total_post_count += twitter.twitterStats.total_post_count; + twitterTemp.twitterInsights.date = twitterInsights.date = eachDay.date; + }); + Twitter.push({ twitterInsights: twitterTemp.twitterInsights }); + break; + case 5: + var instgramBusinessTemp = {}; + eachDay.SocialAccountStats[0].instagramStats.forEach(instaBusiness => { + instgramBusinessTemp.instagramBusinessInsights = {}; + instgramBusinessTemp.instagramBusinessInsights.friendship_count = instagramBusinessInsights.friendship_count += instaBusiness.instagramStats.friendship_count; + instgramBusinessTemp.instagramBusinessInsights.follower_count = instagramBusinessInsights.follower_count += instaBusiness.instagramStats.follower_count; + instgramBusinessTemp.instagramBusinessInsights.following_count = instagramBusinessInsights.following_count += instaBusiness.instagramStats.following_count; + instgramBusinessTemp.instagramBusinessInsights.total_post_count = instagramBusinessInsights.total_post_count += instaBusiness.instagramStats.total_post_count; + instgramBusinessTemp.instagramBusinessInsights.date = instagramBusinessInsights.date = InsightResult[0].date; + }); + InstagramBusiness.push({ instagramBusinessInsights: instgramBusinessTemp.instagramBusinessInsights }) + break; + case 9: + var youtubeTemp = {}; + eachDay.SocialAccountStats[0].youtubeStats.forEach(youtube => { + youtubeTemp.youtubeInsights = {}; + youtubeTemp.youtubeInsights.subscription_count = youtubeInsights.subscription_count += youtube.youtubeStats.subscription_count; + youtubeTemp.youtubeInsights.total_post_count = youtubeInsights.total_post_count += youtube.youtubeStats.total_post_count; + youtubeTemp.youtubeInsights.date = youtubeInsights.date = InsightResult[0].date; + }); + Youtube.push({ youtubeInsights: youtubeTemp.youtubeInsights }); + break; + default: + break; + } + })); + })) + .then(() => { + resolve({ + TeamMemberStats: teamMembstats, + Facebook: Facebook, + Twitter: Twitter, + InstagramBusiness: InstagramBusiness, + Youtube: Youtube + }); + }); + } + else { + throw new Error("Sorry, No Team-Reports available in this Time Period"); + } + // https://stackoverflow.com/questions/41336812/are-nested-catches-within-promises-required + }); + }); }) .catch((error) => { reject(error); @@ -353,6 +434,58 @@ class NetworkInsightLibs { } }); } + + getFilteredPeriod(filterPeriod, since, untill) { + return new Promise((resolve, reject) => { + if (!filterPeriod) { + reject(new Error("Invalid filterPeriod")); + } else { + switch (Number(filterPeriod)) { + case 1: + since = moment().startOf('day'); + untill = moment().endOf('day'); + break; + case 2: + since = moment().subtract(1, 'days').startOf('day'); + untill = moment().subtract(1, 'days').endOf('day'); + break; + case 3: + since = moment().subtract(1, 'weeks').startOf('weeks'); + untill = moment().subtract(1, 'weeks').endOf('weeks'); + break; + case 4: + since = moment().subtract(30, 'days').startOf('day'); + untill = moment(); + break; + case 5: + since = moment().startOf('month'); + untill = moment(); + break; + case 6: + since = moment().startOf('month').subtract(1, 'days').startOf('month'); + untill = moment().startOf('month').subtract(1, 'days').endOf('month'); + break; + case 7: + if (filterPeriod == 7) { + if (!since || !untill) throw new Error('Invalid Inputs'); + else { + since = moment(since).startOf('day'); + untill = moment(untill).endOf('day'); + } + } + break; + default: + throw new Error("please choose valid filter type"); + } + if (since <= untill) { + resolve({ since, untill }); + } + else { + reject('Check range values.since should be lesser than or equals to until') + } + } + }) + } } module.exports = NetworkInsightLibs; \ No newline at end of file diff --git a/socioboard-api/library/mixins/userteamaccount.js b/socioboard-api/library/mixins/userteamaccount.js index 746233d85..68fcbcc28 100644 --- a/socioboard-api/library/mixins/userteamaccount.js +++ b/socioboard-api/library/mixins/userteamaccount.js @@ -1,15 +1,17 @@ const db = require('../sequelize-cli/models/index'); const CoreServices = require('../utility/coreServices'); +const TeamInsightsMongoModel = require('../mongoose/models/teamInsights'); +const PublishedPostsMongoModel = require('../mongoose/models/publishedposts'); const moment = require('moment'); const lodash = require('lodash'); const socialAccount = db.social_accounts; -const scheduleDetails = db.users_schedule_details; +const userDetails = db.user_details; const userTeamJoinTable = db.join_table_users_teams; const teamSocialAccountJoinTable = db.join_table_teams_social_accounts; const accountFeedsUpdateTable = db.social_account_feeds_updates; const Operator = db.Sequelize.Op; - +const teamInfo = db.team_informations; const updateFriendsTable = db.social_account_friends_counts; const coreServices = new CoreServices(); @@ -275,9 +277,214 @@ const UserTeamAccount = { .catch((error) => reject(error)); } }); - } + }, + createOrUpdateTeamReport(teamId, update) { + return new Promise((resolve, reject) => { + if (!teamId) { + reject(new Error("Invalid Inputs")); + } else { + var teamDetails = null; + var SocialAccountStats = {}; + SocialAccountStats.facebookStats = []; + SocialAccountStats.twitterStats = []; + SocialAccountStats.instagramStats = []; + SocialAccountStats.youtubeStats = []; + var teamMembers = 0; + var invitedList = 0; + var socialProfiles = 0; + var data = {}; + var updatedData = {}; + return teamInfo.findAll({ + where: { + team_id: teamId + }, + attributes: ['team_id', 'team_name', 'team_logo', 'team_description', 'team_admin_id'], + include: [{ + model: socialAccount, + as: 'SocialAccount', + attributes: ['account_id', 'account_type', 'first_name', 'last_name', 'email', 'social_id', 'profile_pic_url', 'cover_pic_url', 'friendship_counts'], + through: { + attributes: ['is_account_locked'] + } + }] + }) + .then((teamSocialAccounts) => { + teamDetails = teamSocialAccounts; + return userTeamJoinTable.findAll({ + where: { + team_id: teamId, + }, + attributes: ['id', 'team_id', 'invitation_accepted', 'permission', 'user_id'], + raw: true + }); + }) + .then((teamMembersData) => { + teamMembersData.forEach(element => { + if (element.invitation_accepted == true) { + teamMembers += 1; + } + if (element.invitation_accepted == false) { + invitedList += 1; + } + }); + return Promise.all(teamDetails.map(accounts => { + socialProfiles = accounts.SocialAccount.length; + return Promise.all(accounts.SocialAccount.map(account => { + var fields = []; + switch (Number(account.account_type)) { + case 1: + fields = ['account_id', 'friendship_count', 'page_count']; + break; + case 4: + fields = ['account_id', 'follower_count', 'following_count', 'total_like_count', 'total_post_count']; + break; + case 5: + fields = ['account_id', 'friendship_count', 'follower_count', 'following_count', 'total_post_count']; + break; + case 9: + fields = ['account_id', 'subscription_count', 'total_post_count']; + break; + default: + break; + } + if (fields.length > 0) { + return updateFriendsTable.findOne({ + where: { account_id: account.account_id }, + attributes: fields, + raw: true + }) + .then((resultData) => { + var data = resultData; + switch (Number(account.account_type)) { + case 1: + SocialAccountStats.facebookStats.push({ facebookStats: data }); + break; + case 4: + SocialAccountStats.twitterStats.push({ twitterStats: data }); + break; + case 5: + SocialAccountStats.instagramStats.push({ instagramStats: data }); + break; + case 9: + SocialAccountStats.youtubeStats.push({ youtubeStats: data }); + break; + default: + break; + } + }) + .catch((error) => { + throw error; + }); + } + })); + })); + }) + .then(() => { + var publishedPostsMongoModelObject = new PublishedPostsMongoModel(); + return publishedPostsMongoModelObject.getTeamPublishedCount(teamId); + }) + .then((publishedCount) => { + data = { + teamId: teamId, + insights: { + teamMembersCount: teamMembers, + invitedList: invitedList, + socialProfilesCount: socialProfiles, + publishCount: publishedCount, + SocialAccountStats: SocialAccountStats + } + }; + updatedData = [{ + teamMembersCount: teamMembers, + invitedList: invitedList, + socialProfilesCount: socialProfiles, + publishCount: publishedCount, + SocialAccountStats: SocialAccountStats + }]; + var teamInsightsMongoModelObject = new TeamInsightsMongoModel(); + // insertInsights(data) then addTeamInsights(teamId, updatedData) + // update or insert, Update status is', update, 'update data is \n\n', updatedData; + if (!update || update == null || update == false) + return teamInsightsMongoModelObject.insertInsights(data); + else + return teamInsightsMongoModelObject.addTeamInsights(teamId, updatedData); + }) + .then(() => { + resolve(updatedData); + }) + .catch((error) => { + reject(error); + }); + } + }); + }, + + getTeamSocialAccounts(userId, teamId) { + return new Promise((resolve, reject) => { + if (!userId || !teamId) { + reject(new Error('Invalid Inputs')); + } else { + var filteredTeams = null; + return userDetails.findOne({ + where: { user_id: userId }, + attributes: ['user_id'], + include: [{ + model: teamInfo, + as: 'Team', + where: { team_id: teamId }, + attributes: ['team_id'], + through: { + where: { + [Operator.and]: [{ + invitation_accepted: true + }, { + left_from_team: false + }] + } + } + }] + }) + .then((teamInformation) => { + filteredTeams = teamInformation; + if (!teamInformation) { + throw new Error("Team not found or access denied!"); + } + else if (teamInformation.count == 0) { + throw new Error({ + isNoTeam: true, + message: "User don't have any team!" + }); + } + else { + return Promise.all(teamInformation.Team.map(function (teamResponse) { + return teamInfo.findAll({ + where: { + team_id: teamResponse.dataValues.team_id + }, + attributes: ['team_id', 'team_name', 'team_logo', 'team_description', 'team_admin_id'], + include: [{ + model: socialAccount, + as: 'SocialAccount', + attributes: ['account_id', 'account_type', 'first_name', 'last_name', 'email', 'social_id', 'profile_pic_url', 'cover_pic_url', 'friendship_counts'], + through: { + attributes: ['is_account_locked'] + } + }] + }); + })); + } + }) + .then((teamDetails) => { + resolve({ teamDetails, filteredTeams }); + }) + .catch((error) => { + reject(error); + }) + } + }) + } }; diff --git a/socioboard-api/library/mongoose/models/notifications.js b/socioboard-api/library/mongoose/models/notifications.js index 5bab7da11..6b2f8250d 100644 --- a/socioboard-api/library/mongoose/models/notifications.js +++ b/socioboard-api/library/mongoose/models/notifications.js @@ -39,7 +39,7 @@ notificationInfo.methods.getNotificationsDetails = function (id, teamId, userId, return this.model('Notifications') .find(query) - .sort({ publishedDate: -1 }) + .sort({ dateTime: -1 }) .skip(skip) .limit(limit) .then((result) => { diff --git a/socioboard-api/library/mongoose/models/publishedposts.js b/socioboard-api/library/mongoose/models/publishedposts.js index 6f40bbdd0..c7a948416 100644 --- a/socioboard-api/library/mongoose/models/publishedposts.js +++ b/socioboard-api/library/mongoose/models/publishedposts.js @@ -86,6 +86,21 @@ publishedPost.methods.getAccountPublishCount = function (accountId) { }); }; +publishedPost.methods.getTeamPublishedCount = function (teamId) { + // Fetching total posts counts published in an account + var query = { + TeamId: Number(teamId) + }; + return this.model('PublishedPosts') + .find(query) + .then((result) => { + return result.length; + }) + .catch((error) => { + throw error; + }); +}; + publishedPost.methods.getSchedulePublishedReport = function (mongoId, skip, limit) { // Fetching publish details of a specified content id diff --git a/socioboard-api/library/mongoose/models/teamInsights.js b/socioboard-api/library/mongoose/models/teamInsights.js new file mode 100644 index 000000000..8830c7195 --- /dev/null +++ b/socioboard-api/library/mongoose/models/teamInsights.js @@ -0,0 +1,113 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +mongoose.set('useCreateIndex', true); + +const teamInsights = new Schema({ + // accountId: { type: Number, index: true }, + teamId: { type: Number, index: true }, + insights: { + type: [{ + teamMembersCount: { type: Number, default: 0 }, + invitedList: { type: Number, default: 0 }, + socialProfilesCount: { type: Number, default: 0 }, + publishCount: { type: Number, default: 0 }, + SocialAccountStats: { + type: + [{ + facebookStats: { + type: [{ + facebookStats: { + account_id: { type: Number }, + friendship_count: { type: Number }, + page_count: { type: Number }, + }, + }] + }, + twitterStats: { + type: [{ + twitterStats: { + account_id: { type: Number }, + follower_count: { type: Number }, + following_count: { type: Number }, + total_like_count: { type: Number }, + total_post_count: { type: Number }, + }, + }] + }, + instagramStats: { + type: [{ + instagramStats: { + account_id: { type: Number }, + friendship_count: { type: Number }, + follower_count: { type: Number }, + following_count: { type: Number }, + total_post_count: { type: Number }, + }, + }] + }, + youtubeStats: { + type: [{ + youtubeStats: { + account_id: { type: Number }, + subscription_count: { type: Number }, + total_post_count: { type: Number }, + }, + }] + }, + }], + }, + date: { type: Date, default: Date.now } + }] + } +}); + +teamInsights.methods.insertInsights = function (data) { + return this.model('TeamInsights') + .insertMany(data) + .then((result) => { + return result.length; + }).catch((error) => { + throw error; + }); +}; + +teamInsights.methods.addTeamInsights = function (teamId, insightData) { + var query = { + teamId: teamId + }; + var updateObject = { $push: { insights: insightData } }; + return this.model('TeamInsights') + .findOneAndUpdate(query, updateObject) + .then(function (result) { + return result; + }) + .catch(function (error) { + throw error; + }); +}; + +teamInsights.methods.getInsights = function (teamId, since, untill) { + var query = { + teamId: teamId, + }; + return this.model('TeamInsights') + .find(query) + .then(function (result) { + if (result && result[0] && result[0].insights.length > 0) { + var filteredInsights = result[0].insights.filter(element => { + return element.date >= since && element.date <= untill; + }); + return filteredInsights; + } + else + return []; + }) + .catch(function (error) { + throw error; + }); +}; + +const TwitterInsightsModel = mongoose.model('TeamInsights', teamInsights); + +module.exports = TwitterInsightsModel; \ No newline at end of file diff --git a/socioboard-api/library/network/pinterest.js b/socioboard-api/library/network/pinterest.js index 4bddffb71..ae8c5cd1e 100644 --- a/socioboard-api/library/network/pinterest.js +++ b/socioboard-api/library/network/pinterest.js @@ -174,7 +174,7 @@ Pinterest.prototype.getBoardDetails = function (access_token, boardurl) { // Checking whether it sent error in callback or not if (error) { // Sending response - resolve({}); + reject(error); } else { // Formating the response var parsedBody = JSON.parse(body); diff --git a/socioboard-api/library/network/trends.js b/socioboard-api/library/network/trends.js index bbf3a86e7..a7cee2cc0 100644 --- a/socioboard-api/library/network/trends.js +++ b/socioboard-api/library/network/trends.js @@ -352,7 +352,7 @@ class Trends { dailymotionDetails: [] }; if (error) { - console.log(error); + logger.error(error); return dailymotionMongoObject.getPreviousPost(offset, sort, dailymotion.count) .then((dailymotionDetails) => { dailymotionResponse.dailymotionDetails = dailymotionDetails; diff --git a/socioboard-api/library/package-lock.json b/socioboard-api/library/package-lock.json index b97a77cef..fbd2e0842 100644 --- a/socioboard-api/library/package-lock.json +++ b/socioboard-api/library/package-lock.json @@ -3141,4 +3141,4 @@ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } -} +} \ No newline at end of file diff --git a/socioboard-api/library/sequelize-cli/migrations/20190730070645-addColumnsIn-userScheduleDetails.js b/socioboard-api/library/sequelize-cli/migrations/20190730070645-addColumnsIn-userScheduleDetails.js index b2e9921f4..1ded078f0 100644 --- a/socioboard-api/library/sequelize-cli/migrations/20190730070645-addColumnsIn-userScheduleDetails.js +++ b/socioboard-api/library/sequelize-cli/migrations/20190730070645-addColumnsIn-userScheduleDetails.js @@ -9,9 +9,9 @@ module.exports = { }, down: (queryInterface, Sequelize) => { - return queryInterface.addColumn('users_schedule_details', 'start_date', { type: Sequelize.DATE, allowNull: true }) + return queryInterface.removeColumn('users_schedule_details', 'start_date') .then(() => { - return queryInterface.addColumn('users_schedule_details', 'interval', { type: Sequelize.INTEGER, allowNull: true }); + return queryInterface.removeColumn('users_schedule_details', 'interval'); }); } }; diff --git a/socioboard-api/library/sequelize-cli/migrations/20191014081903-add_otp_fields_inUserActivations.js b/socioboard-api/library/sequelize-cli/migrations/20191014081903-add_otp_fields_inUserActivations.js new file mode 100644 index 000000000..19e7afa83 --- /dev/null +++ b/socioboard-api/library/sequelize-cli/migrations/20191014081903-add_otp_fields_inUserActivations.js @@ -0,0 +1,24 @@ +'use strict'; + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.addColumn('user_activations', 'otp_token', { type: Sequelize.STRING(32), allowNull: true, comment: 'first half for email, next half for phone' }) + .then(() => { + return queryInterface.addColumn('user_activations', 'otp_token_expire', { + type: Sequelize.DATE, allowNull: true, validate: { + isDate: { + args: true, + msg: "otp_token_expire should be a valid date format." + } + }, comment: 'expires in 10 minutes' + }); + }); + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.removeColumn('user_activations', 'otp_token') + .then(() => { + return queryInterface.removeColumn('user_activations', 'otp_token_expire'); + }); + } +}; diff --git a/socioboard-api/library/sequelize-cli/models/user_activations.js b/socioboard-api/library/sequelize-cli/models/user_activations.js index 820f0bf64..d6fedb2a0 100644 --- a/socioboard-api/library/sequelize-cli/models/user_activations.js +++ b/socioboard-api/library/sequelize-cli/models/user_activations.js @@ -170,12 +170,24 @@ module.exports = (sequelize, Sequelize) => { } } }, - + otp_token: { + type: Sequelize.STRING(32), + allowNull: true, + comment: 'first half for email, next half for phone' + }, + otp_token_expire: { + type: Sequelize.DATE, allowNull: true, validate: { + isDate: { + args: true, + msg: "otp_token_expire should be a valid date format." + } + }, comment: 'expires in 10 minutes' + } }, { - hooks: { - beforeCreate, - } - }); + hooks: { + beforeCreate, + } + }); user_activations.associate = function (models) { // associations can be defined here diff --git a/socioboard-api/library/utility/coreServices.js b/socioboard-api/library/utility/coreServices.js index 517bedb98..7a71f35d7 100644 --- a/socioboard-api/library/utility/coreServices.js +++ b/socioboard-api/library/utility/coreServices.js @@ -72,6 +72,12 @@ CoreServices.prototype.getRandomNumbers = function () { return randomNum.substring(0, 4); }; +CoreServices.prototype.getRandomNumbersByLength = function (len) { + var randomNum = Math.floor(10093404234099 + Math.random() * 90010234092439); + randomNum = String(randomNum); + return randomNum.substring(0, len); +}; + CoreServices.prototype.getRandomCharacters = function (len) { charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; var randomString = ''; diff --git a/socioboard-api/library/utility/mailServices.js b/socioboard-api/library/utility/mailServices.js index a430163c8..eec8e741b 100644 --- a/socioboard-api/library/utility/mailServices.js +++ b/socioboard-api/library/utility/mailServices.js @@ -30,6 +30,10 @@ class MailService extends MailBase { // Replace -[Email] [AccountType] loginReminderNotification: 'Account Expiry - SocioBoard

Hi [FirstName],

You have not logged in to your SocioBoard account since [LastLogin].We miss you.

Please login to SocioBoard account by clicking here

Please feel free to contact us in case you have any questions

Best regards
Support Team
SocioBoard

Copyright © 2019 Socioboard. All rights reserved.
If you do not want to recieve emails from us, you can unsubscribe.
', + + // Replace -[OTP] + mail_otp: '
Welcome to SOCIOBOARD 2<->way Authentication ,
Congratulations! Your OTP is: [OTP].



Please, Use this OTP within 10 minutes otherwise OTP will get expire


Hope you have a great time at Socioboard. Keep socioboarding... :)

Warm regards,

Socioboard Team
' + }; } @@ -129,8 +133,6 @@ class MailService extends MailBase { }); } - - /** * To send the email to specify user * @param {Number} defaultService - To specify which method need to use while sending emails diff --git a/socioboard-api/notification/core/Insights/controllers/insightController.js b/socioboard-api/notification/core/Insights/controllers/insightController.js index f4f3b01fe..17f30d3b9 100644 --- a/socioboard-api/notification/core/Insights/controllers/insightController.js +++ b/socioboard-api/notification/core/Insights/controllers/insightController.js @@ -5,13 +5,14 @@ const insightLibs = new InsightLibs(); class InsightControllers { - constructor(){ + constructor() { this.setupTwitterInsightsCrons(); + this.setupTeamReportInsightCrons(); } setupTwitterInsightsCrons() { logger.info("Cron setup intialized for twitter insights services..."); - schedule.scheduleJob('00 22 * * *', () => { + schedule.scheduleJob('00 22 * * *', () => { logger.info(`Cron started for updating all twitter account insight's which is not locked for atleast a team, started time ${moment()}`); return insightLibs.twtInsights() .then(() => { @@ -24,6 +25,22 @@ class InsightControllers { logger.info("Cron setup completed for twitter insights services..."); } + setupTeamReportInsightCrons() { + logger.info("Cron setup intialized for teams report insights services..."); + schedule.scheduleJob('00 32 * * *', () => { + logger.info(`Cron started for updating all teams report insight's, started time ${moment()}`); + return insightLibs.updateTeamReport() + .then(() => { + logger.info(`Cron process completed for updating all teams report insight, completed time ${moment()}`); + }) + .catch((error) => { + logger.error(error); + logger.info(`Cron process errored while updating all teams report insight, stopped time ${moment()}`); + }); + }); + logger.info("Cron setup completed for teams report insights services..."); + } + twtInsights(req, res) { return insightLibs.twtInsights() .then((result) => { @@ -33,6 +50,17 @@ class InsightControllers { res.status(200).json({ code: 400, status: "failed", error: error.message }); }); } + + updateTeamReport(req, res) { + return insightLibs.updateTeamReport() + .then((response) => { + res.status(200).json({ code: 200, status: 'success', TeamInsights: response }); + }) + .catch((error) => { + res.status(200).json({ code: 400, status: "failed", error: error.message }); + }); + } + } module.exports = new InsightControllers(); \ No newline at end of file diff --git a/socioboard-api/notification/core/Insights/routes.js b/socioboard-api/notification/core/Insights/routes.js index 515ade06f..3196fa575 100644 --- a/socioboard-api/notification/core/Insights/routes.js +++ b/socioboard-api/notification/core/Insights/routes.js @@ -32,4 +32,28 @@ const routes = require('express').Router(); routes.put('/twtInsights', insightController.twtInsights); +/** +* @swagger +* /v1/report/updateTeamReport: +* put: +* operationId: secured_report_updateTeamReport +* summary: Secured - Admin Only +* security: +* - AccessToken: [] +* tags: +* - Insights +* description: To update TeamReports +* produces: +* - application/json +* responses: +* 200: +* description: Return success! +* 404: +* description: Return Not Found or ErrorMessage +* 401: +* $ref: "#/responses/unauthorizedError" +*/ +routes.put('/updateTeamReport', insightController.updateTeamReport); + + module.exports = routes; diff --git a/socioboard-api/notification/core/Insights/utils/insightLibs.js b/socioboard-api/notification/core/Insights/utils/insightLibs.js index 67fefbe45..ac2f259fb 100644 --- a/socioboard-api/notification/core/Insights/utils/insightLibs.js +++ b/socioboard-api/notification/core/Insights/utils/insightLibs.js @@ -1,13 +1,13 @@ const db = require('../../../../library/sequelize-cli/models/index'); const socialAccounts = db.social_accounts; const teamSocialAccount = db.join_table_teams_social_accounts; -const logger = require('../../../utils/logger'); const config = require('config'); const TwitterHelper = require('../../../../library/network/twitter'); const TwitterInsightMongoModel = require('../../../../library/mongoose/models/twitterInsights'); const UserTeamAccount = require('../../../../library/mixins/userteamaccount'); +const teamInfo = db.team_informations; class InsightLibs { constructor() { @@ -65,7 +65,7 @@ class InsightLibs { throw new Error('No running accounts found.'); }) .catch((error) => { - logger.error(error.message); + throw error }); })) .then(() => { @@ -83,6 +83,24 @@ class InsightLibs { }); }); } + + updateTeamReport() { + return new Promise((resolve, reject) => { + return teamInfo.findAll({ raw: true }) + .then((teamsDetails) => { + // Update reports for each team + return Promise.all(teamsDetails.map(teamInfo => { + return this.createOrUpdateTeamReport(teamInfo.team_id, true); + })); + }) + .then(() => { + resolve('successfully updated insights of all teams'); + }) + .catch((error) => { + reject(error); + }) + }); + } } module.exports = InsightLibs; \ No newline at end of file diff --git a/socioboard-api/notification/core/mail/controllers/mailController.js b/socioboard-api/notification/core/mail/controllers/mailController.js index 29c2be5a6..f7cca4d8e 100644 --- a/socioboard-api/notification/core/mail/controllers/mailController.js +++ b/socioboard-api/notification/core/mail/controllers/mailController.js @@ -18,7 +18,7 @@ class MailController { setupMailServicesCrons() { logger.info("Cron setup intialized for mail services..."); - schedule.scheduleJob('20 0 * * *', () => { + schedule.scheduleJob('20 0 * * *', () => { logger.info(`Cron started to notify all user's whose plan going to expire within 7 days, started time ${moment()}`); return mailLibs.sendExpireAlert() .then(() => { @@ -29,7 +29,7 @@ class MailController { }); }); - schedule.scheduleJob('0 1 * * *', () => { + schedule.scheduleJob('0 1 * * *', () => { logger.info(`Cron started to notify all user's whose plan already expired, started time ${moment()}`); return mailLibs.sendExpiredInitimation() .then(() => { @@ -40,7 +40,7 @@ class MailController { }); }); - schedule.scheduleJob('0 2 * * *', () => { + schedule.scheduleJob('0 2 * * *', () => { logger.info(`Cron started to notify all user's who didnt login application in last 3 days, started time ${moment()}`); return mailLibs.sendLoginReminder() .then(() => { @@ -56,7 +56,7 @@ class MailController { - sendExpireAlert(req, res) { + sendExpireAlert(req, res) { return mailLibs.sendExpireAlert() .then(() => { analyticsServices.registerEvents({ @@ -76,7 +76,7 @@ class MailController { }); } - sendExpiredInitimation(req, res) { + sendExpiredInitimation(req, res) { return mailLibs.sendExpiredInitimation() .then(() => { analyticsServices.registerEvents({ @@ -96,7 +96,7 @@ class MailController { }); } - sendLoginReminder(req, res) { + sendLoginReminder(req, res) { return mailLibs.sendLoginReminder() .then(() => { analyticsServices.registerEvents({ @@ -116,7 +116,7 @@ class MailController { }); } - sendCustomNotifications(req, res) { + sendCustomNotifications(req, res) { return mailLibs.sendCustomNotifications(req.body.notificationDetails) .then(() => { analyticsServices.registerEvents({ @@ -136,7 +136,7 @@ class MailController { }); } - getUsersMailedInfo(req, res) { + getUsersMailedInfo(req, res) { return mailLibs.getUsersMailedInfo(req.query.days, req.query.notifyType, req.query.email) .then((message) => { analyticsServices.registerEvents({ diff --git a/socioboard-api/notification/core/mail/utils/mailLibs.js b/socioboard-api/notification/core/mail/utils/mailLibs.js index 23edfe373..e1cdcb5ef 100644 --- a/socioboard-api/notification/core/mail/utils/mailLibs.js +++ b/socioboard-api/notification/core/mail/utils/mailLibs.js @@ -72,7 +72,7 @@ class MailLibs { }) .then(function (users) { logger.info(`Expired users are : ${JSON.stringify(users)}`); - console.log(JSON.stringify(users)); + logger.info(JSON.stringify(users)); // Creating object for sending emails var sendEmailServiceObject = new SendEmailService(config.get('mailService')); var scheduleObject = { diff --git a/socioboard-api/notification/startup/routes.js b/socioboard-api/notification/startup/routes.js index c0dfa20e2..fb12ba06a 100644 --- a/socioboard-api/notification/startup/routes.js +++ b/socioboard-api/notification/startup/routes.js @@ -8,25 +8,26 @@ class Routes { constructor(app, io) { this.configureCors(app); - + const notifyRoutes = require('../core/notify/routes')(io); const socketLibs = require("../core/notify/socketServices")(io); - + app.use("/v1/notify/", notifyRoutes); io.on('connection', socketLibs.handleSocket); app.use(authenticate); - + app.use(adminAuthenticate); app.use('/v1/mail/', mails); - app.use('/v1/insights/',insight); + app.use('/v1/insights/', insight); // for twitter + app.use('/v1/report/', insight); // for Team Reports app.use("/", function (req, res) { res.status(404).send("Woops! 404 Not Found"); }); - - + + } configureCors(app) { diff --git a/socioboard-api/publish/core/scheduler/controllers/schedulerControllers.js b/socioboard-api/publish/core/scheduler/controllers/schedulerControllers.js index 25ae7b3ef..f4bf5aeb7 100644 --- a/socioboard-api/publish/core/scheduler/controllers/schedulerControllers.js +++ b/socioboard-api/publish/core/scheduler/controllers/schedulerControllers.js @@ -58,7 +58,7 @@ scheduleServices.getParticularScheduleDetails = (req, res) => { action: configruation.publiser_service_events.event_action.Scheduler, label: configruation.publiser_service_events.schedule_event_label.getParticularSchedule_details.replace('{{user}}', req.body.userScopeName).replace('{{id}}', req.body.userScopeId).replace('{{scId}}', req.query.scId) }); - res.status(200).json(response); + res.status(200).json({ code: 200, status: "success", data: response }); }) .catch((error) => { analyticsServices.registerEvents({ diff --git a/socioboard-api/publish/core/scheduler/utils/schedulerlibs.js b/socioboard-api/publish/core/scheduler/utils/schedulerlibs.js index 60367d95b..13f684bf6 100644 --- a/socioboard-api/publish/core/scheduler/utils/schedulerlibs.js +++ b/socioboard-api/publish/core/scheduler/utils/schedulerlibs.js @@ -453,7 +453,7 @@ class ScheduleLibs extends ScheduleBase { }, { schedule_id: scheduleId }, { - schedule_status: [1, 3] + schedule_status: [1, 3, 5] }, { team_id: teamId }] @@ -461,7 +461,7 @@ class ScheduleLibs extends ScheduleBase { }) .then((scheduleData) => { if (!scheduleData) - throw new Error("Schedule details aren't available to edit, Please make sure following, 1.schedule should be in ready or waiting for admin approval state, \n\r 2. valid teamId!"); + throw new Error("Schedule details aren't available to edit, Please make sure following, 1.schedule should be in ready or waiting for admin approval state or Drafted one, \n\r 2. valid teamId!"); else { scheduleIdDetails = scheduleData; return scheduledInformations.findAll({ where: { schedule_id: scheduleId } }); diff --git a/socioboard-api/user/config/configuration.js b/socioboard-api/user/config/configuration.js index fa925c12d..8395a769c 100644 --- a/socioboard-api/user/config/configuration.js +++ b/socioboard-api/user/config/configuration.js @@ -71,267 +71,293 @@ module.exports = { "facebook_redirect_url": "Socio1021: User fethed facebook link to sign-up.", "google_redirect_url": "Socio1022: User fetched google link to sign-up.", "signup_redirect_url_failed": "Socio5021: User cant able to fetch google link to sign-up.", + + "two_way_auth": "Socio1022: User logged in with 2 way authentication", + "two_way_auth_failed": "Socio5022: User cant able to logged in with 2 way authentication", + }, // (1041 -1100)- (5041 -5100) "authorized_event_label": { - "change_password": "Socio1041: User({{user}}) password has been changed.", - "change_password_failed": "Socio5041: User({{user}}) password can't able to change.", + "change_password": "Socio1041: User({{user}})(ID: {{id}}) password has been changed.", + "change_password_failed": "Socio5041: User({{user}})(ID: {{id}}) password can't able to change.", + + "get_userData_success": "Socio1042: User({{user}})(ID: {{id}}) fetched all details", + "get_userData_failed": "Socio5042: User({{user}})(ID: {{id}}) cant able to fetch all details", + + "change_plan": "Socio1043: User({{user}})(ID: {{id}}) plan has been changed.", + "change_plan_failed": "Socio5043: User({{user}})(ID: {{id}}) plan can't able to change.", - "get_userData_success": "Socio1042: User({{user}}) fetched all details", - "get_userData_failed": "Socio5042: User({{user}}) cant able to fetch all details", + "change_payment_type": "Socio1044: User({{user}})(ID: {{id}}) payment type has been changed.", + "change_payment_type_failed": "Socio5044: User({{user}})(ID: {{id}}) payemnt type can't able to change.", - "change_plan": "Socio1043: User({{user}}) plan has been changed.", - "change_plan_failed": "Socio5043: User({{user}}) plan can't able to change.", + "change_twostep": "Socio1045: User({{user}})(ID: {{id}}) did changes in two step login options.", + "change_twostep_failed": "Socio5045: User({{user}})(ID: {{id}}) can't able changes in two step login options.", - "change_payment_type": "Socio1044: User({{user}}) payment type has been changed.", - "change_payment_type_failed": "Socio5044: User({{user}}) payemnt type can't able to change.", + "update_profile": "Socio1046: User({{user}})(ID: {{id}}) profile updated successfully.", + "update_profile_failed": "Socio5046: User({{user}})(ID: {{id}}) profile can't able to update.", - "change_twostep": "Socio1045: User({{user}}) did changes in two step login options.", - "change_twostep_failed": "Socio5045: User({{user}}) can't able changes in two step login options.", + "short_url": "Socio1047: User({{user}})(ID: {{id}}) fetched short url for ({{url}}).", + "short_url_failed": "Socio5047: User({{user}})(ID: {{id}}) cant able to fetch short url for ({{url}}).", - "update_profile": "Socio1046: User({{user}}) profile updated successfully.", - "update_profile_failed": "Socio5046: User({{user}}) profile can't able to update.", + "change_shorten_status": "Socio1048: User({{user}})(ID: {{id}}) changed shorten status to {{status}}.", + "change_shorten_status_failed": "Socio5048: User({{user}})(ID: {{id}}) cant able to change shorten status to {{status}}.", }, // (1101-1200) - (5101-5200) "team_event_label": { - "fetch_all_team": "Socio1101: User({{user}}) fetched all team details.", - "fetch_all_team_failed": "Socio5101: User({{user}}) cant able to fetch all team details.", + "fetch_all_team": "Socio1101: User({{user}})(ID: {{id}}) fetched all team details.", + "fetch_all_team_failed": "Socio5101: User({{user}})(ID: {{id}}) cant able to fetch all team details.", - "fetch_team": "Socio1102: User({{user}}) fetched team({{teamId}}) details.", - "fetch_team_failed": "Socio5102: User({{user}}) cant able to fetch team({{teamId}}) details.", + "fetch_team": "Socio1102: User({{user}})(ID: {{id}}) fetched team({{teamId}}) details.", + "fetch_team_failed": "Socio5102: User({{user}})(ID: {{id}}) cant able to fetch team({{teamId}}) details.", - "fetch_profiles": "Socio1103: User({{user}}) fetched all social profiles.", - "fetch_profiles_failed": "Socio5103: User({{user}}) can't able to fetch all social profiles.", + "fetch_profiles": "Socio1103: User({{user}})(ID: {{id}}) fetched all social profiles.", + "fetch_profiles_failed": "Socio5103: User({{user}})(ID: {{id}}) can't able to fetch all social profiles.", - "create_team": "Socio1104: User({{user}}) created a team({{teamId}}).", - "create_team_failed": "Socio5104: User({{user}}) cant able to create a team.", + "create_team": "Socio1104: User({{user}})(ID: {{id}}) created a team({{teamId}}).", + "create_team_failed": "Socio5104: User({{user}})(ID: {{id}}) cant able to create a team.", - "edit_team": "Socio1105: User({{user}}) edited a team({{teamId}}).", - "edit_team_failed": "Socio5105: User({{user}}) cant able to edit a team({{teamId}}).", + "edit_team": "Socio1105: User({{user}})(ID: {{id}}) edited a team({{teamId}}).", + "edit_team_failed": "Socio5105: User({{user}})(ID: {{id}}) cant able to edit a team({{teamId}}).", - "delete_team": "Socio1106: User({{user}}) deleted a team({{teamId}}).", - "delete_team_failed": "Socio5106: User({{user}}) cant able to delete a team({{teamId}}).", + "delete_team": "Socio1106: User({{user}})(ID: {{id}}) deleted a team({{teamId}}).", + "delete_team_failed": "Socio5106: User({{user}})(ID: {{id}}) cant able to delete a team({{teamId}}).", - "invite_team": "Socio1107: User({{user}}) invited a member({{email}}) for a team({{teamId}}).", - "invite_team_failed": "Socio5107: User({{user}}) cant able to invite a member({{email}}) for a team({{teamId}}).", + "invite_team": "Socio1107: User({{user}})(ID: {{id}}) invited a member({{email}}) for a team({{teamId}}).", + "invite_team_failed": "Socio5107: User({{user}})(ID: {{id}}) cant able to invite a member({{email}}) for a team({{teamId}}).", - "fetch_team_invitation": "Socio1108: User({{user}}) fetched the team invitation.", - "fetch_team_invitation_failed": "Socio5108: User({{user}}) cant able to fetched the team invitations.", + "fetch_team_invitation": "Socio1108: User({{user}})(ID: {{id}}) fetched the team invitation.", + "fetch_team_invitation_failed": "Socio5108: User({{user}})(ID: {{id}}) cant able to fetched the team invitations.", - "accept_team_invitation": "Socio1109: User({{user}}) accepted the team({{teamId}}) invitation.", - "accept_team_invitation_failed": "Socio5109: User({{user}}) cant able to accept the team({{teamId}}) invitations.", + "accept_team_invitation": "Socio1109: User({{user}})(ID: {{id}}) accepted the team({{teamId}}) invitation.", + "accept_team_invitation_failed": "Socio5109: User({{user}})(ID: {{id}}) cant able to accept the team({{teamId}}) invitations.", - "decline_team_invitation": "Socio1110: User({{user}}) declined the team({{teamId}}) invitation.", - "decline_team_invitation_failed": "Socio5110: User({{user}}) cant able to decline the team({{teamId}}) invitations.", + "decline_team_invitation": "Socio1110: User({{user}})(ID: {{id}}) declined the team({{teamId}}) invitation.", + "decline_team_invitation_failed": "Socio5110: User({{user}})(ID: {{id}}) cant able to decline the team({{teamId}}) invitations.", - "withdraw_team_invitation": "Socio1111: User({{user}}) withdraw the team({{teamId}}) invitation for email({{email}}).", - "withdraw_team_invitation_failed": "Socio5111: User({{user}}) cant able to withdraw the team({{teamId}}) invitation for email({{email}}).", + "withdraw_team_invitation": "Socio1111: User({{user}})(ID: {{id}}) withdraw the team({{teamId}}) invitation for email({{email}}).", + "withdraw_team_invitation_failed": "Socio5111: User({{user}})(ID: {{id}}) cant able to withdraw the team({{teamId}}) invitation for email({{email}}).", - "profile_redirect_url": "Socio1112: User({{user}}) fetched redirect url of ({{url}}).", - "profile_redirect_url_failed": "Socio5112: User({{user}}) cant able to fetch redirect url of ({{url}}).", + "profile_redirect_url": "Socio1112: User({{user}})(ID: {{id}}) fetched redirect url of ({{url}}).", + "profile_redirect_url_failed": "Socio5112: User({{user}})(ID: {{id}}) cant able to fetch redirect url of ({{url}}).", - "add_social_profile": "Socio1113: User({{user}}) added social profile({{profileId}}).", - "add_social_profile_failed": "Socio5113: User({{user}}) cant able to add social profile.", + "add_social_profile": "Socio1113: User({{user}})(ID: {{id}}) added social profile({{profileId}}).", + "add_social_profile_failed": "Socio5113: User({{user}})(ID: {{id}}) cant able to add social profile.", - "bulk_add_social_profile": "Socio1114: User({{user}}) added bulk social profiles to team({{teamId}}).", - "bulk_add_social_profile_failed": "Socio5114: User({{user}}) cant able to add bulk social profiles to team({{teamId}}).", + "bulk_add_social_profile": "Socio1114: User({{user}})(ID: {{id}}) added bulk social profiles to team({{teamId}}).", + "bulk_add_social_profile_failed": "Socio5114: User({{user}})(ID: {{id}}) cant able to add bulk social profiles to team({{teamId}}).", - "delete_social_profile": "Socio1115: User({{user}}) deleted a social profile({{profileId}}).", - "delete_social_profile_failed": "Socio5115: User({{user}}) cant able to delete social profile({{profileId}}).", + "delete_social_profile": "Socio1115: User({{user}})(ID: {{id}}) deleted a social profile({{profileId}}).", + "delete_social_profile_failed": "Socio5115: User({{user}})(ID: {{id}}) cant able to delete social profile({{profileId}}).", - "add_other_team_social_profile": "Socio1116: User({{user}}) added a social profile({{profileId}}) to team({{teamId}}).", - "add_other_team_social_profile_failed": "Socio5116: User({{user}}) cant able to add a social profile to other team.", + "add_other_team_social_profile": "Socio1116: User({{user}})(ID: {{id}}) added a social profile({{profileId}}) to team({{teamId}}).", + "add_other_team_social_profile_failed": "Socio5116: User({{user}})(ID: {{id}}) cant able to add a social profile to other team.", - "delete_current_team_social_profile": "Socio1117: User({{user}}) removed a social profile from the team.", - "delete_current_team_social_profile_failed": "Socio5117: User({{user}}) cant able to remove a social profile from the team.", + "delete_current_team_social_profile": "Socio1117: User({{user}})(ID: {{id}}) removed a social profile from the team.", + "delete_current_team_social_profile_failed": "Socio5117: User({{user}})(ID: {{id}}) cant able to remove a social profile from the team.", - "leave_team": "Socio1118: User({{user}}) left from the team of ({{TeamId}}).", - "leave_team_failed": "Socio5118: User({{user}}) can't able to left the team of({{TeamId}}).", + "leave_team": "Socio1118: User({{user}})(ID: {{id}}) left from the team of ({{TeamId}}).", + "leave_team_failed": "Socio5118: User({{user}})(ID: {{id}}) can't able to left the team of({{TeamId}}).", - "edit_permission": "Socio1119: User({{user}}) edited the permission of the user({{user1}}).", - "edit_permission_failed": "Socio5119: User({{user}}) can't able to edit the permission of the user({{user1}}).", + "edit_permission": "Socio1119: User({{user}})(ID: {{id}}) edited the permission of the user({{user1}}).", + "edit_permission_failed": "Socio5119: User({{user}})(ID: {{id}}) can't able to edit the permission of the user({{user1}}).", - "lock_profiles": "Socio1120: User({{user}}) locked some social profiles({{accounts}}).", - "lock_profiles_failed": "Socio5120: User({{user}}) can't able to lock social profiles({{accounts}}).", + "lock_profiles": "Socio1120: User({{user}})(ID: {{id}}) locked some social profiles({{accounts}}).", + "lock_profiles_failed": "Socio5120: User({{user}})(ID: {{id}}) can't able to lock social profiles({{accounts}}).", - "unlock_profiles": "Socio1121: User({{user}}) unlocked some social profiles({{accounts}}).", - "unlock_profiles_failed": "Socio5121: User({{user}}) can't able to unlock social profiles({{accounts}}).", + "unlock_profiles": "Socio1121: User({{user}})(ID: {{id}}) unlocked some social profiles({{accounts}}).", + "unlock_profiles_failed": "Socio5121: User({{user}})(ID: {{id}}) can't able to unlock social profiles({{accounts}}).", - "invited_list": "Socio1122: User({{user}}) fetched all his invitations sent list.", - "invited_list_failed": "Socio5122: User({{user}}) cant able to fetch all his invitations sent list.", + "invited_list": "Socio1122: User({{user}})(ID: {{id}}) fetched all his invitations sent list.", + "invited_list_failed": "Socio5122: User({{user}})(ID: {{id}}) cant able to fetch all his invitations sent list.", - "fetch_invited_list": "Socio1123: User({{user}}) fetched invited list.", - "fetch_invited_list_failed": "Socio5123: User({{user}}) cant able to fetch invited list.", + "fetch_invited_list": "Socio1123: User({{user}})(ID: {{id}}) fetched invited list.", + "fetch_invited_list_failed": "Socio5123: User({{user}})(ID: {{id}}) cant able to fetch invited list.", - "remove_team_member": "Socio1124: User({{user}}) removed a member({{memberId}}) from the Team({{teamId}})", - "remove_team_member_failed": "Socio5124: User({{user}}) cant able to remove a member({{memberId}}) from the Team({{teamId}})", + "remove_team_member": "Socio1124: User({{user}})(ID: {{id}}) removed a member({{memberId}}) from the Team({{teamId}})", + "remove_team_member_failed": "Socio5124: User({{user}})(ID: {{id}}) cant able to remove a member({{memberId}}) from the Team({{teamId}})", + + "fetch_profiles_byId": "Socio1125: User({{user}})(ID: {{id}}) fetched social profile({{accountId}}) details.", + "fetch_profiles_byId_failed": "Socio5125: User({{user}})(ID: {{id}}) can't able to fetch social profile({{accountId}}) details.", }, //(1201-1300)-(5201-5300) "profile_event_label": { - "facebook_page_details": "Socio1201: User({{user}}) fetched facebook pages.", - "facebook_page_details_failed": "Socio5201: User({{user}}) cant able to fetch facebook pages.", + "facebook_page_details": "Socio1201: User({{user}})(ID: {{id}}) fetched facebook pages.", + "facebook_page_details_failed": "Socio5201: User({{user}})(ID: {{id}}) cant able to fetch facebook pages.", - "facebook_group_details": "Socio1202: User({{user}}) fetched facebook group details of account({{profileId}}) of team({{teamId}}).", - "facebook_group_details_failed": "Socio5202: User({{user}}) cant able to fetch facebook group details of account({{profileId}}) of team({{teamId}}).", + "facebook_group_details": "Socio1202: User({{user}})(ID: {{id}}) fetched facebook group details of account({{profileId}}) of team({{teamId}}).", + "facebook_group_details_failed": "Socio5202: User({{user}})(ID: {{id}}) cant able to fetch facebook group details of account({{profileId}}) of team({{teamId}}).", - "linkedIn_company_page_details": "Socio1203: User({{user}}) fetched linkedIn company pages.", - "linkedIn_company_page_details_failed": "Socio5203: User({{user}}) cant able to fetch linkedIn company pages.", + "linkedIn_company_page_details": "Socio1203: User({{user}})(ID: {{id}}) fetched linkedIn company pages.", + "linkedIn_company_page_details_failed": "Socio5203: User({{user}})(ID: {{id}}) cant able to fetch linkedIn company pages.", - "youtube_channel_details": "Socio1204: User({{user}}) fetched youtube channel data.", - "youtube_channel_details_failed": "Socio5204: User({{user}}) cant able to fetch youtube channel data.", + "youtube_channel_details": "Socio1204: User({{user}})(ID: {{id}}) fetched youtube channel data.", + "youtube_channel_details_failed": "Socio5204: User({{user}})(ID: {{id}}) cant able to fetch youtube channel data.", - "google_analytics_details": "Socio1205: User({{user}}) fetched google analytics data.", - "google_analytics_details_failed": "Socio5205: User({{user}}) cant able to fetch google analytics data.", + "google_analytics_details": "Socio1205: User({{user}})(ID: {{id}}) fetched google analytics data.", + "google_analytics_details_failed": "Socio5205: User({{user}})(ID: {{id}}) cant able to fetch google analytics data.", - "short_url": "Socio1206: User({{user}}) fetched short url for ({{url}}).", - "short_url_failed": "Socio5206: User({{user}}) cant able to fetch short url for ({{url}}).", + "short_url": "Socio1206: User({{user}})(ID: {{id}}) fetched short url for ({{url}}).", + "short_url_failed": "Socio5206: User({{user}})(ID: {{id}}) cant able to fetch short url for ({{url}}).", - "create_pinterest_board": "Socio1207: User({{user}}) created a pinterest board.", - "create_pinterest_board_failed": "Socio5207: User({{user}}) cant able to create a pinterest board.", + "create_pinterest_board": "Socio1207: User({{user}})(ID: {{id}}) created a pinterest board.", + "create_pinterest_board_failed": "Socio5207: User({{user}})(ID: {{id}}) cant able to create a pinterest board.", - "fetch_pinterest_board": "Socio1208: User({{user}}) fetched new pinterest boards of account({{profileId}}).", - "fetch_pinterest_board_failed": "Socio5208: User({{user}}) cant able to fetch new pinterest boards of account({{profileId}}).", + "fetch_pinterest_board": "Socio1208: User({{user}})(ID: {{id}}) fetched new pinterest boards of account({{profileId}}).", + "fetch_pinterest_board_failed": "Socio5208: User({{user}})(ID: {{id}}) cant able to fetch new pinterest boards of account({{profileId}}).", - "delete_pinterest_board": "Socio1209: User({{user}}) deleted a pinterest board({{board}}).", - "delete_pinterest_board_failed": "Socio5209: User({{user}}) cant able to delete a pinterest board({{board}}).", + "delete_pinterest_board": "Socio1209: User({{user}})(ID: {{id}}) deleted a pinterest board({{board}}).", + "delete_pinterest_board_failed": "Socio5209: User({{user}})(ID: {{id}}) cant able to delete a pinterest board({{board}}).", - "facebook_own_group_details": "Socio1210: User({{user}}) fetched own facebook group details", - "facebook_own_group_details_failed": "Socio5210: User({{user}}) cant able to fetch own facebook group details", + "facebook_own_group_details": "Socio1210: User({{user}})(ID: {{id}}) fetched own facebook group details", + "facebook_own_group_details_failed": "Socio5210: User({{user}})(ID: {{id}}) cant able to fetch own facebook group details", - "instagram_business_details": "Socio1211: User({{user}}) fetched instagram business details.", - "instagram_business_details_failed": "Socio5211: User({{user}}) can't able to fetch instagram business details.", + "instagram_business_details": "Socio1211: User({{user}})(ID: {{id}}) fetched instagram business details.", + "instagram_business_details_failed": "Socio5211: User({{user}})(ID: {{id}}) can't able to fetch instagram business details.", }, //(1301-1350)-(5301-5350) "payment_event_label": { - "fetch_payment_redirect_url": "Socio1301: User({{user}}) fetched payment redirect url for plan({{plan}}) of mode({{mode}}) with couponCode({{coupon}}).", - "fetch_payment_redirect_url_failed": "Socio5301: User({{user}}) cant able to fetch payment redirect url for plan({{plan}}) of mode({{mode}}) with couponCode({{coupon}}).", - - "payment_success": "Socio1302: User({{user}}) paid successfully of payerId({{payerId}}).", - "payment_failed": "Socio5302: User({{user}}) cant able to pay in mode({{mode}}).", - "payment_under_process": "Socio1303: User payment is in under processing.", + "fetch_payment_redirect_url": "Socio1301: User({{user}})(ID: {{id}}) fetched payment redirect url for plan({{plan}}) of mode({{mode}}) with couponCode({{coupon}}).", + "fetch_payment_redirect_url_failed": "Socio5301: User({{user}})(ID: {{id}}) cant able to fetch payment redirect url for plan({{plan}}) of mode({{mode}}) with couponCode({{coupon}}).", + + "payment_success": "Socio1302: User({{user}})(ID: {{id}}) paid successfully.", + "payment_failed": "Socio5302: User({{user}})(ID: {{id}}) cant able to pay in mode({{mode}}).", + "payment_under_process": "Socio1303: User(ID: {{id}}) payment is in under processing.", + + "get_last_payment_info": "Socio1304: User({{user}})(ID: {{id}}) fetched last payment data.", + "get_last_payment_info_failed": "Socio5304: User({{user}})(ID: {{id}}) cant able to fetch last payment data.", - "get_last_payment_info": "Socio1304: User({{user}}) fetched last payment data.", - "get_last_payment_info_failed": "Socio5304: User({{user}}) cant able to fetch last payment data.", + "get_full_payment_history": "Socio1305: User({{user}})(ID: {{id}}) fetched full payments history.", + "get_full_payment_history_failed": "Socio5305: User({{user}})(ID: {{id}}) cant able to fetch full payments history.", + + "get_payment_invoice": "Socio1306: User({{user}})(ID: {{id}}) downloaded last payment Invoice.", + "get_payment_invoice_failed": "Socio5306: User({{user}})(ID: {{id}}) cant able to download last payment Invoice.", - "get_full_payment_history": "Socio1305: User({{user}}) fetched full payments history.", - "get_full_payment_history_failed": "Socio5305: User({{user}}) cant able to fetch full payments history.", }, //(1351-1450)-(5351-5450) "notify_event_lable": { - "send_team_notification": "Socio1351: User({{user}}) sent a team notification to team({{teamId}}).", - "send_team_notification_failed": "Socio5351: User cant able to send a team notification to team({{teamId}}).", + "send_team_notification": "Socio1351: User({{user}})(ID: {{id}}) sent a team notification to team({{teamId}}).", + "send_team_notification_failed": "Socio5351: User(ID: {{id}}) cant able to send a team notification to team({{teamId}}).", - "send_user_notification": "Socio1352: User sent a user notification to team({{user}}).", - "send_user_notification_failed": "Socio5352: User cant able to send a user notification to team({{user}}).", + "send_user_notification": "Socio1352: User(ID: {{id}}) sent a user notification to team({{user}}).", + "send_user_notification_failed": "Socio5352: User(ID: {{id}}) cant able to send a user notification to team({{user}}).", - "get_user_notification": "Socio1353: User fetched notification of user({{user}}).", - "get_user_notification_failed": "Socio5353: User cant able to fetch notification of user({{user}}).", + "get_user_notification": "Socio1353: User(ID: {{id}}) fetched notification of user({{user}}).", + "get_user_notification_failed": "Socio5353: User(ID: {{id}}) cant able to fetch notification of user({{user}}).", }, //(1451-1500)-(5451-5500) "emails_event_lable": { - "email_expire": "Socio1451: Admin({{admin}}) sent email to users whos account going to expire in a week.", - "email_expire_failed": "Socio5451: Admin({{admin}}) cant able to send mail to users whos account going to expire in a week.", + "email_expire": "Socio1451: Admin({{admin}})(ID: {{id}}) sent email to users whos account going to expire in a week.", + "email_expire_failed": "Socio5451: Admin({{admin}})(ID: {{id}}) cant able to send mail to users whos account going to expire in a week.", - "email_expired": "Socio1452: Admin({{admin}}) sent mail to users whos account is expired.", - "email_expired_failed": "Socio5452: Admin({{admin}}) cant able to send mail to users whos account is expired.", + "email_expired": "Socio1452: Admin({{admin}})(ID: {{id}}) sent mail to users whos account is expired.", + "email_expired_failed": "Socio5452: Admin({{admin}})(ID: {{id}}) cant able to send mail to users whos account is expired.", - "recent_login": "Socio1453: Admin({{admin}}) sent mail to the last 3 days inactive users.", - "recent_login_failed": "Socio5453: Admin({{admin}}) cant able to send mail to the last 3 days inactive users.", + "recent_login": "Socio1453: Admin({{admin}})(ID: {{id}}) sent mail to the last 3 days inactive users.", + "recent_login_failed": "Socio5453: Admin({{admin}})(ID: {{id}}) cant able to send mail to the last 3 days inactive users.", - "notification_email": "Socio1454: Admin({{admin}}) successfully sent notifcation to all active users.", - "notification_email_failed": "Socio5454: Admin({{admin}}) failed to send notifcation to all active users.", + "notification_email": "Socio1454: Admin({{admin}})(ID: {{id}}) successfully sent notifcation to all active users.", + "notification_email_failed": "Socio5454: Admin({{admin}})(ID: {{id}}) failed to send notifcation to all active users.", - "mails_sent_list": "Socio1455: Admin({{admin}}) fetched sent mails of a perticular user({{user}}).", - "mails_sent_list_failed": "Socio5455: Admin({{admin}}) failed to fetch sent mails of a perticular user({{user}}).", + "mails_sent_list": "Socio1455: Admin({{admin}})(ID: {{id}}) fetched sent mails of a perticular user({{user}}).", + "mails_sent_list_failed": "Socio5455: Admin({{admin}})(ID: {{id}}) failed to fetch sent mails of a perticular user({{user}}).", }, //(1501-1550)-(5501-5550) "app_insights_event_lable": { - "get_all_realTime_users": "Socio1501: Admin({{admin}}) fetched all real time users data.", - "get_all_realTime_users_failed": "Socio5501: Admin({{admin}}) cant able to fetch all real time users data.", + "get_all_realTime_users": "Socio1501: Admin({{admin}})(ID: {{id}}) fetched all real time users data.", + "get_all_realTime_users_failed": "Socio5501: Admin({{admin}})(ID: {{id}}) cant able to fetch all real time users data.", + + "get_all_users": "Socio1502: Admin({{admin}})(ID: {{id}}) fetched all user list between {{startdate}} to {{enddate}}.", + "get_all_users_failed": "Socio5502: Admin({{admin}})(ID: {{id}}) cant able to fetch user list between {{startdate}} to {{enddate}}.", + + "get_user_action_count": "Socio1503: Admin({{admin}})(ID: {{id}}) fetched action count of user({{user}}).", + "get_user_action_count_failed": "Socio5503: Admin({{admin}})(ID: {{id}}) cant able to fetch action count of user({{user}}).", - "get_all_users": "Socio1502: Admin({{admin}}) fetched all user list between {{startdate}} to {{enddate}}.", - "get_all_users_failed": "Socio5502: Admin({{admin}}) cant able to fetch user list between {{startdate}} to {{enddate}}.", + "get_user_activities": "Socio1504: Admin({{admin}})(ID: {{id}}) fetched activitites of user({{user}}).", + "get_user_activities_failed": "Socio5504: Admin({{admin}})(ID: {{id}}) cant able to fetch activitites of user({{user}}).", - "get_user_action_count": "Socio1503: Admin({{admin}}) fetched action count of user({{user}}).", - "get_user_action_count_failed": "Socio5503: Admin({{admin}}) cant able to fetch action count of user({{user}}).", + "get_user_realTime_activities": "Socio1505: Admin({{admin}})(ID: {{id}}) fetched real time activitites of user({{user}}).", + "get_user_realTime_activities_failed": "Socio5505: Admin({{admin}})(ID: {{id}}) cant able to fetch real time activitites of user({{user}}).", - "get_user_activities": "Socio1504: Admin({{admin}}) fetched activitites of user({{user}}).", - "get_user_activities_failed": "Socio5504: Admin({{admin}}) cant able to fetch activitites of user({{user}}).", + "get_user_activities_by_action": "Socio1506: Admin({{admin}})(ID: {{id}}) fetched activitites of user({{user}}) with action({{action}}).", + "get_user_activities_by_action_failed": "Socio5506: Admin({{admin}})(ID: {{id}}) cant able to fetch activitites of user({{user}}) with action({{action}}).", - "get_user_realTime_activities": "Socio1505: Admin({{admin}}) fetched real time activitites of user({{user}}).", - "get_user_realTime_activities_failed": "Socio5505: Admin({{admin}}) cant able to fetch real time activitites of user({{user}}).", + "get_today_action_count": "Socio1507: Admin({{admin}})(ID: {{id}}) fetched todays action counts for all users.", + "get_today_action_count_failed": "Socio5507: Admin({{admin}})(ID: {{id}}) cant able to fetch todays action count for all users.", + + "get_user_activities_byDate": "Socio1504: Admin({{admin}})(ID: {{id}}) fetched activitites of user({{user}}) between date {{startDate}} to {{endDate}}.", + "get_user_activities_byDate_failed": "Socio5504: Admin({{admin}})(ID: {{id}}) cant able to fetch activitites of user({{user}}) between date {{startDate}} to {{endDate}}.", }, //(1551-1650)-(5551-5650) "admin_event_lable": { - "get_user_stats": "Socio1551: Admin({{admin}}) fetched user stats.", - "get_user_stats_failed": "Socio5551: Admin({{admin}}) cant able to fetch user stats.", + "get_user_stats": "Socio1551: Admin({{admin}})(ID: {{id}}) fetched user stats.", + "get_user_stats_failed": "Socio5551: Admin({{admin}})(ID: {{id}}) cant able to fetch user stats.", + + "get_monthly_user_stats": "Socio1551: Admin({{admin}})(ID: {{id}}) fetched user monthly stats.", + "get_monthly_user_stats_failed": "Socio5551: Admin({{admin}})(ID: {{id}}) cant able to fetch user monthly stats.", + + "get_users": "Socio1553: Admin({{admin}})(ID: {{id}}) fetched all users.", + "get_users_failed": "Socio5553: Admin({{admin}})(ID: {{id}}) cant able to fetch all users.", - "get_monthly_user_stats": "Socio1551: Admin({{admin}}) fetched user monthly stats.", - "get_monthly_user_stats_failed": "Socio5551: Admin({{admin}}) cant able to fetch user monthly stats.", + "user_payment_hystory": "Socio1554: Admin({{admin}})(ID: {{id}}) fetched user payment history of user({{user}}).", + "user_payment_hystory_failed": "Socio5554: Admin({{admin}})(ID: {{id}}) cant able to fetch user payment history of user({{user}}).", - "get_users": "Socio1553: Admin({{admin}}) fetched all users.", - "get_users_failed": "Socio5553: Admin({{admin}}) cant able to fetch all users.", + "update_user_lock": "Socio1555: Admin({{admin}})(ID: {{id}}) updated user({{user}}) activation state.", + "update_user_lock_failed": "Socio5555: Admin({{admin}})(ID: {{id}}) cant able to update user({{user}}) activation state.", - "user_payment_hystory": "Socio1554: Admin({{admin}}) fetched user payment history of user({{user}}).", - "user_payment_hystory_failed": "Socio5554: Admin({{admin}}) cant able to fetch user payment history of user({{user}}).", + "update_plan_for_trail": "Socio1556: Admin({{admin}})(ID: {{id}}) updated a plan({{planId}}) of trail period days({{days}}) for user({{user}}).", + "update_plan_for_trail_failed": "Socio5556: Admin({{admin}})(ID: {{id}}) cant able to update a plan({{planId}}) of trail period days({{days}}) for user({{user}}).", - "update_user_lock": "Socio1555: Admin({{admin}}) updated user({{user}}) activation state.", - "update_user_lock_failed": "Socio5555: Admin({{admin}}) cant able to update user({{user}}) activation state.", + "update_two_step": "Socio1557: Admin({{admin}})(ID: {{id}}) updated a user({{user}}) two step verification process to({{value}}).", + "update_two_step_failed": "Socio5557: Admin({{admin}})(ID: {{id}}) updated a user({{user}}) two step verification process to({{value}}).", - "update_plan_for_trail": "Socio1556: Admin({{admin}}) updated a plan({{planId}}) of trail period time.", - "update_plan_for_trail_failed": "Socio5556: Admin({{admin}}) cant able to update a plan({{planId}}) of trail period time.", + "get_packages": "Socio1558: Admin({{admin}})(ID: {{id}}) feteched all packages.", + "get_packages_failed": "Socio5558: Admin({{admin}})(ID: {{id}}) cant able to fetch all packages.", - "update_two_step": "Socio1557: Admin({{admin}}) updated a user({{user}}) two step verification process to({{value}}).", - "update_two_step_failed": "Socio5557: Admin({{admin}}) updated a user({{user}}) two step verification process to({{value}}).", + "add_packages": "Socio1559: Admin({{admin}})(ID: {{id}}) added a package.", + "add_packages_failed": "Socio5559: Admin({{admin}})(ID: {{id}}) cant able to add a package.", - "get_packages": "Socio1558: Admin({{admin}}) feteched all packages.", - "get_packages_failed": "Socio5558: Admin({{admin}}) cant able to fetch all packages.", + "edit_packages": "Socio1560: Admin({{admin}})(ID: {{id}}) edited a package({{package}}).", + "edit_packages_failed": "Socio5560: Admin({{admin}})(ID: {{id}}) cant able to edit a package({{package}}).", - "add_packages": "Socio1559: Admin({{admin}}) added a package.", - "add_packages_failed": "Socio5559: Admin({{admin}}) cant able to add a package.", + "update_package_activation": "Socio1561: Admin({{admin}})(ID: {{id}}) updated package({{package}}) status to({{value}}).", + "update_package_activation_failed": "Socio5561: Admin({{admin}})(ID: {{id}}) cant able to update package({{package}}) status to({{value}}).", - "edit_packages": "Socio1560: Admin({{admin}}) edited a package({{package}}).", - "edit_packages_failed": "Socio5560: Admin({{admin}}) cant able to edit a package({{package}}).", + "create_coupons": "Socio1562: Admin({{admin}})(ID: {{id}}) created a coupon({{coupon}}).", + "create_coupons_failed": "Socio5562: Admin({{admin}})(ID: {{id}}) cant able to create a coupon({{coupon}}).", - "update_package_activation": "Socio1561: Admin({{admin}}) updated package({{package}}) status to({{value}}).", - "update_package_activation_failed": "Socio5561: Admin({{admin}}) cant able to package({{package}}) status to({{value}}).", + "change_coupon_status": "Socio1563: Admin({{admin}})(ID: {{id}}) changed coupon({{coupon}}) status{{status}}.", + "change_coupon_status_failed": "Socio5563: Admin({{admin}})(ID: {{id}}) cant able to change coupon({{coupon}}) status{{status}}.", - "create_coupons": "Socio1562: Admin({{admin}}) created a coupon({{coupon}}).", - "create_coupons_failed": "Socio5562: Admin({{admin}}) cant able to create a coupon({{coupon}}).", + "get_coupons": "Socio1564: Admin({{admin}})(ID: {{id}}) fetched all coupons details.", + "get_coupons_failed": "Socio5564: Admin({{admin}})(ID: {{id}}) cant able to fetch all coupons details.", - "change_coupon_status": "Socio1563: Admin({{admin}}) changed coupon({{coupon}}) status.", - "change_coupon_status_failed": "Socio5563: Admin({{admin}}) cant able to change coupon({{coupon}}) status.", + "get_user_applied_coupons": "Socio1565: Admin({{admin}})(ID: {{id}}) fetched all coupons used by an user({{user}}).", + "get_user_applied_coupons_failed": "Socio5565: Admin({{admin}})(ID: {{id}}) cant able to fetch all coupons used by an user({{user}}).", - "get_coupons": "Socio1564: Admin({{admin}}) fetched all coupons details.", - "get_coupons_failed": "Socio5564: Admin({{admin}}) cant able to fetch all coupons details.", + "get_unverified_payments": "Socio1566: Admin({{admin}})(ID: {{id}}) fetched all un-verified payments of payment mode({{type}}).", + "get_unverified_payments_failed": "Socio5566: Admin({{admin}})(ID: {{id}}) cant able to fetch all un-verified payments of payment mode({{type}}).", - "get_user_applied_coupons": "Socio1565: Admin({{admin}}) feteched all coupons used by an user({{user}}).", - "get_user_applied_coupons_failed": "Socio5565: Admin({{admin}}) cant able to fetch all coupons used by an user({{user}}).", + "verify_payment": "Socio1567: Admin({{admin}})(ID: {{id}}) verified payment id({{payment}}) of user({{user}}).", + "verify_payment_failed": "Socio5567: Admin({{admin}})(ID: {{id}}) cant able to verify payment id({{payment}}) of user({{user}}).", - "get_unverified_payments": "Socio1566: Admin({{admin}}) fetched all un-verified payments of payment mode({{type}}).", - "get_unverified_payments_failed": "Socio5566: Admin({{admin}}) cant able to fetch all un-verified payments of payment mode({{type}}).", + "recent_signup": "Socio1568: Admin({{admin}})(ID: {{id}}) fetched recent signup users with filtertype({{filter}})", + "recent_signup_failed": "Socio5568: Admin({{admin}})(ID: {{id}}) cant able to fetch recent signup users with filtertype({{filter}})", - "verify_payment": "Socio1567: Admin({{admin}}) verified payment id({{payment}}) of user({{user}}).", - "verify_payment_failed": "Socio5567: Admin({{admin}}) cant able to verify payment id({{payment}}) of user({{user}}).", - - "recent_signup": "Socio1568: Admin({{admin}}) fetched recent signup users with filtertype({{filter}})", - "recent_signup_failed": "Socio5568: Admin({{admin}}) cant able to fetch recent signup users with filtertype({{filter}})", - } } diff --git a/socioboard-api/user/core/admin/adminRoutes.js b/socioboard-api/user/core/admin/adminRoutes.js index b9febac95..6f2f8dc5c 100644 --- a/socioboard-api/user/core/admin/adminRoutes.js +++ b/socioboard-api/user/core/admin/adminRoutes.js @@ -304,10 +304,10 @@ routes.put('/updatePlanForTrail', adminController.updatePlanForTrail); * type: integer * required: true * - in: query -* description: Specify Two step login either 0-disable or 1-enable +* description: Specify Two step login either 0-disable or 1-Only Phone, 2-phone & email * name: options * type: integer -* enum: [0,1] +* enum: [0,1,2] * default: 0 * responses: * 200: diff --git a/socioboard-api/user/core/authorized/controllers/usercontroller.js b/socioboard-api/user/core/authorized/controllers/usercontroller.js index 140ff4260..b4746b65a 100644 --- a/socioboard-api/user/core/authorized/controllers/usercontroller.js +++ b/socioboard-api/user/core/authorized/controllers/usercontroller.js @@ -114,14 +114,14 @@ class AuthorizedUserController { change2StepOptions(req, res) { return authorizedLibs.change2StepOptions(req.body.userScopeId, req.query.twoStepActivate) - .then(() => { + .then((response) => { analyticsServices.registerEvents({ category: req.body.userScopeEmail, action: configruation.user_service_events.event_action.Users, label: configruation.user_service_events.authorized_event_label.change_twostep.replace('{{user}}', req.query.userScopeName).replace('{{id}}', req.body.userScopeId), value: req.query.twoStepActivate }); - res.status(200).json({ code: 200, status: "success" }); + res.status(200).json({ code: 200, status: "success", messag: response }); }) .catch((error) => { analyticsServices.registerEvents({ diff --git a/socioboard-api/user/core/authorized/routes.js b/socioboard-api/user/core/authorized/routes.js index f4236ef09..75ea02d2d 100644 --- a/socioboard-api/user/core/authorized/routes.js +++ b/socioboard-api/user/core/authorized/routes.js @@ -163,9 +163,11 @@ routes.get('/changePaymentType', authorizedUserController.changePaymentType); * - application/x-www-form-urlencoded * parameters: * - in: query - * description: Specify Two step activate (1-for Active, 0-for Non-Active) + * description: Specify Two step activate (0-for Non-Active, 1-for Mobile, 2-for Mobile & Email ) * name: twoStepActivate * type: integer + * enum: [0, 1, 2] + * default: 1 * responses: * 200: * description: Return success! diff --git a/socioboard-api/user/core/authorized/utils/authorizedlibs.js b/socioboard-api/user/core/authorized/utils/authorizedlibs.js index 3d926fcce..673234465 100644 --- a/socioboard-api/user/core/authorized/utils/authorizedlibs.js +++ b/socioboard-api/user/core/authorized/utils/authorizedlibs.js @@ -147,7 +147,7 @@ class AuthorizedLibs extends UserLibs { change2StepOptions(userId, twoStepActivate) { return new Promise((resolve, reject) => { - if (!userId || (twoStepActivate != 0 && twoStepActivate != 1)) { + if (!userId || (twoStepActivate != 0 && twoStepActivate != 1 && twoStepActivate != 2)) { reject({ error: true, message: "Invalid Inputs" }); } else { // Fetching user activation details @@ -156,6 +156,19 @@ class AuthorizedLibs extends UserLibs { if (user === null) throw new Error('No user found!'); else { + if (twoStepActivate == 2) { + if (!user.phone_no || user.phone_no == 0 || user.phone_no == null) { + throw new Error('Sorry, You need to have proper phone number to make 2 way authentication with phonenumber.'); + } + else { + return user.Activations.update({ + activate_2step_verification: twoStepActivate + }) + .catch(function (error) { + throw new Error(error.message); + }); + } + } // Updating user with Changes in 2step authentication return user.Activations.update({ activate_2step_verification: twoStepActivate @@ -166,7 +179,7 @@ class AuthorizedLibs extends UserLibs { } }) .then(() => { - resolve('success'); + resolve(twoStepActivate == 1 ? "Please keep your mobile available while log-in to Socioboard." : twoStepActivate == 2 ? 'Please keep open of email and mobile while sign-in to Socioboard' : "Your sign-in is not secure."); }) .catch((error) => { reject(error); @@ -288,7 +301,7 @@ class AuthorizedLibs extends UserLibs { throw new Error('Current Status and updated status are same.'); } else { - // If not we are updating with requested status + // If not, we are updating with requested status return user.Activations.update({ shortenStatus: status }) @@ -317,7 +330,7 @@ class AuthorizedLibs extends UserLibs { // Fetching the user activation details like 2 step, shortenUrl return userDetails.findOne({ where: { user_id: userId }, - attributes: ['user_id', 'email'], + attributes: ['user_id', 'email', 'phone_no', 'phone_code'], include: [{ model: userActivation, as: "Activations", diff --git a/socioboard-api/user/core/libraries/userlibs.js b/socioboard-api/user/core/libraries/userlibs.js index 455e3d1f5..58f78b3aa 100644 --- a/socioboard-api/user/core/libraries/userlibs.js +++ b/socioboard-api/user/core/libraries/userlibs.js @@ -32,7 +32,7 @@ class UserLibs { model: userActivation, as: "Activations", where: { id: db.Sequelize.col('user_activation_id') }, - attributes: ['id', 'last_login', 'user_plan', 'payment_type', 'account_expire_date', 'signup_type', 'activation_status', 'activate_2step_verification', 'shortenStatus', 'email_validate_token', 'forgot_password_validate_token', 'forgot_password_token_expire'] + attributes: ['id', 'last_login', 'user_plan', 'payment_type', 'account_expire_date', 'signup_type', 'activation_status', 'activate_2step_verification', 'shortenStatus', 'email_validate_token', 'forgot_password_validate_token', 'forgot_password_token_expire', 'otp_token', 'otp_token_expire'] }] }) .then((userDetails) => { @@ -63,7 +63,7 @@ class UserLibs { model: userActivation, as: "Activations", where: { id: db.Sequelize.col('user_activation_id') }, - attributes: ['id', 'last_login', 'user_plan', 'payment_type', 'account_expire_date', 'signup_type', 'activation_status', 'activate_2step_verification', 'email_validate_token'] + attributes: ['id', 'last_login', 'user_plan', 'payment_type', 'account_expire_date', 'signup_type', 'activation_status', 'activate_2step_verification', 'email_validate_token', 'otp_token', 'otp_token_expire'] }] }) .then((userDetails) => { @@ -103,6 +103,32 @@ class UserLibs { }); } + getOTPToken(userId) { + return new Promise((resolve, reject) => { + if (!userId && userId != 0) { + reject({ message: 'Invalid UserId', error: true }); + } else { + var userInfo = {}; + return this.updateUserLoginTime(userId) + .then(() => { + return this.getUserDetails(userId); + }) + .then((userDetails) => { + var userDetails = userDetails.toJSON(); + userInfo.user_id = userDetails.user_id; + userInfo.email = userDetails.email; + return this.authorizeServices.createToken(userInfo); + }) + .then((accessToken) => { + resolve(accessToken); + }) + .catch((error) => { + reject(error); + }); + } + }); + } + getUserAccessToken(userId) { return new Promise((resolve, reject) => { if (!userId && userId != 0) { diff --git a/socioboard-api/user/core/profiles/utils/profilelibs.js b/socioboard-api/user/core/profiles/utils/profilelibs.js index e31928963..3573fcb9e 100644 --- a/socioboard-api/user/core/profiles/utils/profilelibs.js +++ b/socioboard-api/user/core/profiles/utils/profilelibs.js @@ -472,8 +472,15 @@ class ProfileLibs { } else { if (response.toString().includes('DuplicateBoardSlugException')) throw new Error('Duplicate board!'); - else - throw new Error(JSON.stringify(response)); + else { + // Invalid board name. + // { message: 'Invalid board name.', type: 'api' } + // throw new Error(JSON.stringify(response)); + if (response.message.includes('Invalid board name.')) + throw new Error('Please check, requested board is already created.'); + else + throw new Error('Your rate limit is exceeded. Try after 1 Hour'); + } //throw new Error('Please check requested board is already created.'); } }) @@ -526,7 +533,7 @@ class ProfileLibs { } }) .then((response) => { - if (response.message == 'Authorization failed') { + if (response.message) { throw new Error(response.message); } else return pinterestBoards.destroy({ where: { id: id } }); diff --git a/socioboard-api/user/core/team/controllers/teammanagement.js b/socioboard-api/user/core/team/controllers/teammanagement.js index c26543a26..86752c1b4 100644 --- a/socioboard-api/user/core/team/controllers/teammanagement.js +++ b/socioboard-api/user/core/team/controllers/teammanagement.js @@ -552,7 +552,7 @@ class TeamController { } getTeamInsights(req, res) { - return teamLibs.getTeamInsights(req.query.teamId, req.body.userScopeId, req.body.userScopeName) + return teamLibs.getTeamInsights(req.query.TeamId, req.body.userScopeId, req.body.userScopeName) .then((response) => { analyticsServices.registerEvents({ category: req.body.userScopeEmail, @@ -560,7 +560,7 @@ class TeamController { label: configruation.user_service_events.team_event_label.unlock_profiles.replace("{{accounts}}", req.body).replace('{{user}}', req.body.userScopeName).replace('{{id}}', req.body.userScopeId), value: req.body }); - res.status(200).json({ code: 200, status: 'success', message: "Accounts are unlocked successfully.", updatedProfiles: response.updatedProfiles, errorProfiles: response.errorProfiles }); + res.status(200).json({ code: 200, status: 'success', TeamInsights: response }); }) .catch((error) => { analyticsServices.registerEvents({ diff --git a/socioboard-api/user/core/team/routes.js b/socioboard-api/user/core/team/routes.js index 60ce31f3d..4756cef69 100644 --- a/socioboard-api/user/core/team/routes.js +++ b/socioboard-api/user/core/team/routes.js @@ -840,7 +840,8 @@ routes.put('/unlockProfiles', teamManagementController.unlockProfiles); * /v1/team/getTeamInsights: * get: * operationId: secured_team_getTeamInsights - * summary: Secured + * summary: + * deprecated : true * security: * - AccessToken: [] * tags: diff --git a/socioboard-api/user/core/team/utils/teamlibs.js b/socioboard-api/user/core/team/utils/teamlibs.js index e5dc8eb94..e2d1b6d89 100644 --- a/socioboard-api/user/core/team/utils/teamlibs.js +++ b/socioboard-api/user/core/team/utils/teamlibs.js @@ -520,6 +520,9 @@ class TeamLibs { .then((user) => { return teamDetails.setUser(user, { transaction: t, through: { invitation_accepted: true, permission: 1, left_from_team: false, invited_by: 0 } }); }) + .then(() => { + return UserTeamAccount.createOrUpdateTeamReport(teamDetails.dataValues.team_id, ''); + }) .then(() => { logger.info(teamDetails); resolve(teamDetails.toJSON()); @@ -2774,8 +2777,159 @@ class TeamLibs { }); } - getTeamInsights(teamId, userId, userName) { + getTeamInsights(teamId, userId, userName, update) { + + return new Promise((resolve, reject) => { + + resolve('Sorry, we are not using this route,') + if (!userId || !teamId || !userName) { + reject(new Error("Invalid Inputs")); + } else { + var filteredTeams = null; + var teamDetails = null; + var SocialAccountStats = {}; + SocialAccountStats.facebookStats = []; + SocialAccountStats.twitterStats = []; + SocialAccountStats.instagramStats = []; + SocialAccountStats.youtubeStats = []; + + var teamMembers = 0; + var invitedList = 0; + var socialProfiles = 0; + var data = {}; + var updatedData = {}; + return this.getTeamSocialAccounts(userId, teamId) + .then((teamSocialAccounts) => { + filteredTeams = teamSocialAccounts.filteredTeams; + teamDetails = teamSocialAccounts.teamDetails; + return Promise.all(filteredTeams.Team.map(function (teamResponse) { + return userTeamJoinTable.findAll({ + where: { + team_id: teamResponse.dataValues.team_id, + }, + attributes: ['id', 'team_id', 'invitation_accepted', 'permission', 'user_id'], + raw: true + }); + })); + }) + .then((teamMembersData) => { + teamMembersData.forEach(element => { + if (element[0].invitation_accepted == true) { + teamMembers += 1; + } + if (element[0].invitation_accepted == false) { + invitedList += 1; + } + }); + return Promise.all(teamDetails[0].map(accounts => { + socialProfiles = accounts.SocialAccount.length; + return Promise.all(accounts.SocialAccount.map(account => { + var fields = []; + switch (Number(account.account_type)) { + case 1: + fields = ['account_id', 'friendship_count', 'page_count']; + break; + case 4: + fields = ['account_id', 'follower_count', 'following_count', 'total_like_count', 'total_post_count']; + break; + case 5: + fields = ['account_id', 'friendship_count', 'follower_count', 'following_count', 'total_post_count']; + break; + case 9: + fields = ['account_id', 'subscription_count', 'total_post_count']; + break; + default: + break; + } + if (fields.length > 0) { + return updateFriendsTable.findOne({ + where: { account_id: account.account_id }, + attributes: fields + }) + .then((resultData) => { + var data = resultData.toJSON(); + switch (Number(account.account_type)) { + case 1: + SocialAccountStats.facebookStats.push({ facebookStats: data }); + break; + case 4: + SocialAccountStats.twitterStats.push({ twitterStats: data }); + break; + case 5: + SocialAccountStats.instagramStats.push({ instagramStats: data }); + break; + case 9: + SocialAccountStats.youtubeStats.push({ youTubeStats: data }); + break; + default: + break; + } + }) + .catch((error) => { + logger.error(error.message); + }); + } + })); + })); + }) + .then(function () { + data = { + teamId: teamId, + insights: { + teamMembersCount: teamMembers, + invitedList: invitedList, + socialProfilesCount: socialProfiles, + SocialAccountStats: SocialAccountStats + } + }; + updatedData = [{ + teamMembersCount: teamMembers, + invitedList: invitedList, + socialProfilesCount: socialProfiles, + SocialAccountStats: SocialAccountStats + + }]; + + var teamInsightsMongoModelObject = TeamInsightsMongoModel(); + // insertInsights(data) then addTeamInsights(teamId, updatedData) + console.log('update or insert, Update status is', update); + if (!update || update == null || update == false) + return teamInsightsMongoModelObject.insertInsights(data); + else + return teamInsightsMongoModelObject.addTeamInsights(teamId, updatedData) + }) + .then(() => { + resolve(updatedData); + }) + .catch((error) => { + throw error; + }); + } + }); + } + + createTeamInsights(teamId, userId, userName) { + return new Promise((resolve, reject) => { + if (!userId || !teamId || !userName) { + reject(new Error("Invalid Inputs")); + } else { + return this.getTeamSocialAccounts(userId, teamId) + .then((teamInformation) => { + if (!teamInformation.filteredTeams) + throw new Error("Team not found or access denied!"); + else + return this.createOrUpdateTeamReport(teamId, ''); + }) + .then((teamSocialAccounts) => { + resolve(teamSocialAccounts); + }) + .catch((error) => { + reject(error); + }); + } + }); } + } module.exports = TeamLibs; diff --git a/socioboard-api/user/core/unauthorized/controllers/usercontroller.js b/socioboard-api/user/core/unauthorized/controllers/usercontroller.js index e0a218a48..ef79ee739 100644 --- a/socioboard-api/user/core/unauthorized/controllers/usercontroller.js +++ b/socioboard-api/user/core/unauthorized/controllers/usercontroller.js @@ -70,8 +70,8 @@ class UserControllers { throw new Error("User has already register!"); else { if (!requestBody.user.profilePicture || requestBody.user.profilePicture == '') { - requestBody.user.profilePicture = `${config.get("user_socioboard.host_url")}${config.get('profile_url_assert')}`; - requestBody.user.profilePicture = requestBody.user.profilePicture.replace("http","https"); + requestBody.user.profilePicture = `${config.get("user_socioboard.host_url")}${config.get('profile_url_assert')}`; + requestBody.user.profilePicture = requestBody.user.profilePicture.replace("http", "https"); logger.info(requestBody.user.profilePicture); } requestBody.user.isAdminUser = false; @@ -276,14 +276,27 @@ class UserControllers { .then((userInfo) => { logger.info(`Fetched User : ${JSON.stringify(userInfo)}`); if (result.isTwoStepEnabled) { - logger.info('2 step'); - analyticsServices.registerEvents({ - category: fetchedEmail, - action: configruation.user_service_events.event_action.Open, - label: configruation.user_service_events.unauthorized_event_label.login_twostep_request - }); - var csrf = authorizeServices.encrypt(JSON.stringify(userInfo.user)); - res.status(200).json({ code: 200, status: "success", isTwoStepEnabled: true, redirectUrl: `${config.get('user_socioboard.host_url')}/v1/twoStepLogin?csrf=${csrf}` }); + // create OTPtoken + // send mail + return unauthorizedLibs.getOTPToken(fetchedUserId) + .then((OTPtoken) => { + return unauthorizedLibs.sendOTP({ email: fetchedEmail, userId: fetchedUserId }) + .then((message) => { + logger.info('2 step'); + analyticsServices.registerEvents({ + category: fetchedEmail, + action: configruation.user_service_events.event_action.Open, + label: configruation.user_service_events.unauthorized_event_label.login_twostep_request + }); + res.status(200).json({ code: 200, status: "success", isTwoStepEnabled: true, message: message, user: { user_id: fetchedUserId, email: fetchedEmail }, OTPToken: OTPtoken }); + }) + .catch((error) => { + throw new Error('Error while sending otp mail'); + }) + }) + .catch((error) => { + throw new Error('Error while generating OTP token'); + }); } else { logger.info('success'); analyticsServices.registerEvents({ @@ -452,7 +465,7 @@ class UserControllers { csrf: csrf_guid, version: account_kit_api_version, }; - response.status(200).json({ code: 200, status: "success", viewDetails: view }); + res.status(200).json({ code: 200, status: "success", viewDetails: view }); } twoStepLoginSuccess(request, response) { @@ -529,6 +542,25 @@ class UserControllers { }); } + twoStepLoginValidate(req, res) { + return unauthorizedLibs.twoStepLoginValidate(req.query.email, req.query.emailtoken, req.query.mobiletoken) + .then((userInfo) => { + analyticsServices.registerEvents({ + category: req.query.email, + action: configruation.user_service_events.event_action.Open, + label: configruation.user_service_events.unauthorized_event_label.two_way_auth + }); + res.status(200).json({ code: 200, status: "success", user: userInfo.user, accessToken: userInfo.accessToken }); + }).catch((error) => { + analyticsServices.registerEvents({ + category: req.query.email, + action: configruation.user_service_events.event_action.Open, + label: configruation.user_service_events.unauthorized_event_label.two_way_auth_failed + }); + res.status(200).json({ code: 404, status: "failed", error: error.message }); + }); + } + paypalSuccess(req, res) { res.status(200).json({ code: 200, status: 'success', message: "Paypal Success Status " }); } diff --git a/socioboard-api/user/core/unauthorized/routes.js b/socioboard-api/user/core/unauthorized/routes.js index 36ccd3023..660a38b1d 100644 --- a/socioboard-api/user/core/unauthorized/routes.js +++ b/socioboard-api/user/core/unauthorized/routes.js @@ -402,7 +402,7 @@ routes.get('/twoStepLogin', unauthorizedUserController.twoStepLogin); * post: * tags: * - Open - * description: To request for reset the password + * description: To request for validating 2 step * summary: NOTE It should run only when otp verified successfully * produces: * - application/json @@ -423,6 +423,37 @@ routes.get('/twoStepLogin', unauthorizedUserController.twoStepLogin); */ routes.post('/twoStepLoginSuccess', unauthorizedUserController.twoStepLoginSuccess); +/** + * @swagger + * /v1/twoStepLoginValidate: + * post: + * tags: + * - Open + * description: To request for verifying the user OTP's + * summary: NOTE It should run only when otp entered + * produces: + * - application/json + * parameters: + * - in: query + * description: Provide email + * name: email + * type: string + * - in: query + * description: Enter email verification Code + * name: emailtoken + * type: number + * - in: query + * description: Enter mobile verification Code + * name: mobiletoken + * type: number + * responses: + * 200: + * description: Return success! + * 404: + * description: Return Not Found or ErrorMessage + */ +routes.post('/twoStepLoginValidate', unauthorizedUserController.twoStepLoginValidate); + routes.post("/payuMoneySuccess", unauthorizedUserController.payuMoneySuccess); diff --git a/socioboard-api/user/core/unauthorized/utils/unauthorizedlibs.js b/socioboard-api/user/core/unauthorized/utils/unauthorizedlibs.js index 82312f669..9ce012ef2 100644 --- a/socioboard-api/user/core/unauthorized/utils/unauthorizedlibs.js +++ b/socioboard-api/user/core/unauthorized/utils/unauthorizedlibs.js @@ -10,6 +10,7 @@ const Facebook = require('../../../../library/network/facebook'); const Google = require('../../../../library/network/google'); const UserLibs = require('../../libraries/userlibs'); const logger = require('../../../utils/logger'); +var http = require("https"); const UserTeamAccount = require('../../../../library/mixins/userteamaccount'); @@ -177,6 +178,10 @@ class UnAuthorizedUtils extends UserLibs { } } }) + .then(() => { + // create team report for that team + return this.createOrUpdateTeamReport(team.dataValues.team_id, ''); + }) .then(() => { resolve({ userId: fetchedUserId, userInfo: userInfo }); }) @@ -501,6 +506,188 @@ class UnAuthorizedUtils extends UserLibs { }); } + sendOTP(userInfo) { + return new Promise((resolve, reject) => { + if (!userInfo) { + reject({ error: true, message: 'Invalid UserInfo' }); + } else { + var OTP = this.coreServices.getRandomNumbersByLength(12); + var newExpireDate = moment().add(10, "minutes"); + + return this.getUserDetails(userInfo.userId) + .then((user) => { + var otpCondition = user.Activations.activate_2step_verification; + var userPhoneNumber = user.phone_no; + var phoneCode = user.phone_code; + return user.Activations.update({ + otp_token: String(OTP), + otp_token_expire: newExpireDate + }) + .then((result) => { + + // check condition on which it should send OTP + if (otpCondition == 1) { + + var mobileOtp = OTP.slice(6, 12); + return this.sendOtpToMobile(mobileOtp, phoneCode, userPhoneNumber) + .then(() => { + resolve('Mobile OTP sent successfully, Please verify it'); + }) + .catch((error) => { + reject("can't able to send Mobile OTP message."); + }); + } + if (otpCondition == 2) { + var mobileOtp = OTP.slice(6, 12); + this.sendOtpToMobile(mobileOtp, phoneCode, userPhoneNumber); + + // .then(() => { + var mailOtp = OTP.slice(0, 6); + return this.sendOtpToEmail(mailOtp, userInfo.email); + // }) + + } + }).then(() => { + resolve(otpCondition == 1 ? "Mobile OTP sent successfully, Please verify it" : "Mobile & Email OTP sent successfully, Please verify it"); + }) + .catch((error) => { console.log(error); throw error; }) + }) + .catch((error) => reject(error)); + } + }); + } + + sendOtpToMobile(otp, country, mobileNumber) { + return new Promise((resolve, reject) => { + if (!otp || !mobileNumber || mobileNumber == 0 || country == 0 || !country) { + reject(new Error('Invalid Inputs to send Mobile OTP')); + } + else { + + var options = { + "method": "POST", + "hostname": "api.msg91.com", + "port": null, + "path": "/api/v2/sendsms?country=91", + "headers": { + "authkey": config.get('mobileOtp.authkey'), + "content-type": "application/json" + } + }; + + var req = http.request(options, function (res) { + var chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + var body = Buffer.concat(chunks); + logger.info(body.toString()); + }); + }); + + req.write(JSON.stringify({ + sender: config.get('mobileOtp.sender'), + route: config.get('mobileOtp.route'), + country: country, + sms: + [{ message: `Your Socioboard 2-way OTP is: ${otp}`, to: [mobileNumber] }] + })); + req.end(); + resolve(); + } + }) + } + + sendOtpToEmail(otp, email) { + return new Promise((resolve, reject) => { + if (!otp || !email) { + reject(new Error('Invalid Inputs to send Email OTP')); + } else { + var htmlContent = this.sendEmailServices.template.mail_otp.replace('[OTP]', otp); + var emailDetails = { + "subject": config.get('mailTitles.OTP_title'), + "toMail": email, + "htmlContent": htmlContent + }; + this.sendEmailServices.sendMails(config.get('mailService.defaultMailOption'), emailDetails) + .then((result) => { + logger.info(`OTP mail status: ${JSON.stringify(result)}`); + }) + .catch((error) => { + logger.error(`OTP mail status: ${JSON.stringify(error)}`); + }); + resolve(); + } + }) + } + + + + twoStepLoginValidate(email, emailOtp, mobileOtp) { + return new Promise((resolve, reject) => { + if (!email) { + reject(new Error('Invalid Inputs')); + } else { + return this.getUserDetailsByEmail(email) + .then((user) => { + // condition for checking what option is selected by user + // for mobile OTP + if (user.Activations.activate_2step_verification == 1) { + if (!email || !mobileOtp) + throw new Error("As per your 2-way request you need to enter Mobile OTP"); + else { + var mobOtp = user.Activations.otp_token.slice(6, 12); + // validating mobile otp + if (mobOtp == Number(mobOtp)) { + return this.getUserAccessToken(user.user_id) + .then((userInfo) => { + resolve({ user: userInfo.user, accessToken: userInfo.accessToken }); + }) + .catch((error) => { + throw new Error('Error in creating AccessToken'); + }) + } + else + throw new Error("OTP's are not matching, please try again"); + } + } + // for Mobile and Email OTP + if (user.Activations.activate_2step_verification == 2) { + // condition for checking inputs + if (!email || !emailOtp || !mobileOtp) + throw new Error("As per your 2-way request you need to enter Email & Mobile OTP's"); + else { + // Validate Mobile and Email OTP + + if (moment(user.Activations.otp_token_expire).add(10, "minutes") < moment().subtract(5, "hours").subtract(30, "minutes")) + throw new Error('OTP got expired'); + else { + var mailOtp = user.Activations.otp_token.slice(0, 6); + var mobOtp = user.Activations.otp_token.slice(6, 12); + // validating mail otp and mobile otp + if (mailOtp == Number(emailOtp) && mobOtp == Number(mobileOtp)) { + return this.getUserAccessToken(user.user_id) + .then((userInfo) => { + resolve({ user: userInfo.user, accessToken: userInfo.accessToken }); + }) + .catch((error) => { + throw new Error('Error in creating AccessToken'); + }) + } + else + throw new Error("OTP's are not matching, please try again"); + } + } + } + }) + .catch((error) => { console.log(error); reject(error); }) + } + }) + } + sendForgotPasswordMail(userInfo) { return new Promise((resolve, reject) => { if (!userInfo) { diff --git a/socioboard-api/user/package-lock.json b/socioboard-api/user/package-lock.json index 807c90ccf..b2c9b4c45 100644 --- a/socioboard-api/user/package-lock.json +++ b/socioboard-api/user/package-lock.json @@ -10,7 +10,7 @@ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "7.0.0" } }, "@babel/core": { @@ -19,20 +19,20 @@ "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helpers": "^7.4.3", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.4.0", + "@babel/helpers": "7.4.3", + "@babel/parser": "7.4.3", + "@babel/template": "7.4.0", + "@babel/traverse": "7.4.3", + "@babel/types": "7.4.0", + "convert-source-map": "1.6.0", + "debug": "4.1.1", + "json5": "2.1.0", + "lodash": "4.17.11", + "resolve": "1.10.0", + "semver": "5.7.0", + "source-map": "0.5.7" }, "dependencies": { "debug": { @@ -41,7 +41,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "json5": { @@ -50,7 +50,7 @@ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.0" } }, "ms": { @@ -67,11 +67,11 @@ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.4.0", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -80,9 +80,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.4.0", + "@babel/types": "7.4.0" } }, "@babel/helper-get-function-arity": { @@ -91,7 +91,7 @@ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.4.0" } }, "@babel/helper-plugin-utils": { @@ -106,7 +106,7 @@ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "7.4.0" } }, "@babel/helpers": { @@ -115,9 +115,9 @@ "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", "dev": true, "requires": { - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0" + "@babel/template": "7.4.0", + "@babel/traverse": "7.4.3", + "@babel/types": "7.4.0" } }, "@babel/highlight": { @@ -126,9 +126,9 @@ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + "chalk": "2.4.2", + "esutils": "2.0.2", + "js-tokens": "4.0.0" } }, "@babel/parser": { @@ -143,7 +143,7 @@ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/template": { @@ -152,9 +152,9 @@ "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.4.3", + "@babel/types": "7.4.0" } }, "@babel/traverse": { @@ -163,15 +163,15 @@ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.4.0", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.4.0", + "@babel/parser": "7.4.3", + "@babel/types": "7.4.0", + "debug": "4.1.1", + "globals": "11.11.0", + "lodash": "4.17.11" }, "dependencies": { "debug": { @@ -180,7 +180,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -197,9 +197,9 @@ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } }, "@cnakazawa/watch": { @@ -208,8 +208,8 @@ "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.2", + "minimist": "1.2.0" } }, "@jest/console": { @@ -218,9 +218,9 @@ "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "dev": true, "requires": { - "@jest/source-map": "^24.3.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "@jest/source-map": "24.3.0", + "chalk": "2.4.2", + "slash": "2.0.0" } }, "@jest/core": { @@ -229,33 +229,33 @@ "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.7.0", - "jest-config": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-message-util": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-resolve-dependencies": "^24.7.1", - "jest-runner": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "jest-watcher": "^24.7.1", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "strip-ansi": "^5.0.0" + "@jest/console": "24.7.1", + "@jest/reporters": "24.7.1", + "@jest/test-result": "24.7.1", + "@jest/transform": "24.7.1", + "@jest/types": "24.7.0", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "graceful-fs": "4.1.15", + "jest-changed-files": "24.7.0", + "jest-config": "24.7.1", + "jest-haste-map": "24.7.1", + "jest-message-util": "24.7.1", + "jest-regex-util": "24.3.0", + "jest-resolve-dependencies": "24.7.1", + "jest-runner": "24.7.1", + "jest-runtime": "24.7.1", + "jest-snapshot": "24.7.1", + "jest-util": "24.7.1", + "jest-validate": "24.7.0", + "jest-watcher": "24.7.1", + "micromatch": "3.1.10", + "p-each-series": "1.0.0", + "pirates": "4.0.1", + "realpath-native": "1.1.0", + "rimraf": "2.6.3", + "strip-ansi": "5.2.0" }, "dependencies": { "ansi-regex": { @@ -270,7 +270,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } } } @@ -281,10 +281,10 @@ "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==", "dev": true, "requires": { - "@jest/fake-timers": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0" + "@jest/fake-timers": "24.7.1", + "@jest/transform": "24.7.1", + "@jest/types": "24.7.0", + "jest-mock": "24.7.0" } }, "@jest/fake-timers": { @@ -293,9 +293,9 @@ "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-mock": "^24.7.0" + "@jest/types": "24.7.0", + "jest-message-util": "24.7.1", + "jest-mock": "24.7.0" } }, "@jest/reporters": { @@ -304,26 +304,26 @@ "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-api": "^2.1.1", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-source-maps": "^3.0.1", - "jest-haste-map": "^24.7.1", - "jest-resolve": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "node-notifier": "^5.2.1", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "@jest/environment": "24.7.1", + "@jest/test-result": "24.7.1", + "@jest/transform": "24.7.1", + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "glob": "7.1.3", + "istanbul-api": "2.1.7", + "istanbul-lib-coverage": "2.0.3", + "istanbul-lib-instrument": "3.1.0", + "istanbul-lib-source-maps": "3.0.2", + "jest-haste-map": "24.7.1", + "jest-resolve": "24.7.1", + "jest-runtime": "24.7.1", + "jest-util": "24.7.1", + "jest-worker": "24.6.0", + "node-notifier": "5.4.0", + "slash": "2.0.0", + "source-map": "0.6.1", + "string-length": "2.0.0" }, "dependencies": { "source-map": { @@ -340,9 +340,9 @@ "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", "dev": true, "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "callsites": "3.1.0", + "graceful-fs": "4.1.15", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -359,9 +359,9 @@ "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@jest/console": "24.7.1", + "@jest/types": "24.7.0", + "@types/istanbul-lib-coverage": "2.0.0" } }, "@jest/test-sequencer": { @@ -370,10 +370,10 @@ "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==", "dev": true, "requires": { - "@jest/test-result": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-runner": "^24.7.1", - "jest-runtime": "^24.7.1" + "@jest/test-result": "24.7.1", + "jest-haste-map": "24.7.1", + "jest-runner": "24.7.1", + "jest-runtime": "24.7.1" } }, "@jest/transform": { @@ -382,20 +382,20 @@ "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.7.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-util": "^24.7.1", - "micromatch": "^3.1.10", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", + "@babel/core": "7.4.3", + "@jest/types": "24.7.0", + "babel-plugin-istanbul": "5.1.1", + "chalk": "2.4.2", + "convert-source-map": "1.6.0", + "fast-json-stable-stringify": "2.0.0", + "graceful-fs": "4.1.15", + "jest-haste-map": "24.7.1", + "jest-regex-util": "24.3.0", + "jest-util": "24.7.1", + "micromatch": "3.1.10", + "realpath-native": "1.1.0", + "slash": "2.0.0", + "source-map": "0.6.1", "write-file-atomic": "2.4.1" }, "dependencies": { @@ -411,9 +411,9 @@ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.1.15", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } } } @@ -424,8 +424,8 @@ "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/yargs": "^12.0.9" + "@types/istanbul-lib-coverage": "2.0.0", + "@types/yargs": "12.0.12" } }, "@types/babel__core": { @@ -434,11 +434,11 @@ "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@babel/parser": "7.4.3", + "@babel/types": "7.4.0", + "@types/babel__generator": "7.0.2", + "@types/babel__template": "7.0.2", + "@types/babel__traverse": "7.0.6" } }, "@types/babel__generator": { @@ -447,7 +447,7 @@ "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.4.0" } }, "@types/babel__template": { @@ -456,8 +456,8 @@ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/parser": "7.4.3", + "@babel/types": "7.4.0" } }, "@types/babel__traverse": { @@ -466,7 +466,7 @@ "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "7.4.0" } }, "@types/istanbul-lib-coverage": { @@ -503,7 +503,7 @@ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "requires": { - "event-target-shim": "^5.0.0" + "event-target-shim": "5.0.1" } }, "accepts": { @@ -511,7 +511,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.22", "negotiator": "0.6.1" } }, @@ -527,8 +527,8 @@ "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "acorn": "6.1.1", + "acorn-walk": "6.1.1" }, "dependencies": { "acorn": { @@ -555,7 +555,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "requires": { - "es6-promisify": "^5.0.0" + "es6-promisify": "5.0.0" } }, "ajv": { @@ -563,10 +563,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-align": { @@ -574,7 +574,7 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "string-width": "^2.0.0" + "string-width": "2.1.1" } }, "ansi-escapes": { @@ -593,7 +593,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "anymatch": { @@ -601,8 +601,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "normalize-path": { @@ -610,7 +610,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } } } @@ -621,7 +621,7 @@ "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "default-require-extensions": "2.0.0" } }, "argparse": { @@ -629,7 +629,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -679,7 +679,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "assert-plus": { @@ -703,7 +703,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "requires": { - "lodash": "^4.17.11" + "lodash": "4.17.11" } }, "async-each": { @@ -742,13 +742,13 @@ "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==", "dev": true, "requires": { - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.6.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "@jest/transform": "24.7.1", + "@jest/types": "24.7.0", + "@types/babel__core": "7.1.1", + "babel-plugin-istanbul": "5.1.1", + "babel-preset-jest": "24.6.0", + "chalk": "2.4.2", + "slash": "2.0.0" } }, "babel-plugin-istanbul": { @@ -757,9 +757,9 @@ "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", "dev": true, "requires": { - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.0.0", - "test-exclude": "^5.0.0" + "find-up": "3.0.0", + "istanbul-lib-instrument": "3.1.0", + "test-exclude": "5.1.0" } }, "babel-plugin-jest-hoist": { @@ -768,7 +768,7 @@ "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "dev": true, "requires": { - "@types/babel__traverse": "^7.0.6" + "@types/babel__traverse": "7.0.6" } }, "babel-preset-jest": { @@ -777,8 +777,8 @@ "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.6.0" + "@babel/plugin-syntax-object-rest-spread": "7.2.0", + "babel-plugin-jest-hoist": "24.6.0" } }, "backo2": { @@ -796,13 +796,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -810,7 +810,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -818,7 +818,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -826,7 +826,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -834,9 +834,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } @@ -869,7 +869,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "bcryptjs": { @@ -900,26 +900,21 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, "body-parser": { "version": "1.18.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.16" } }, "boxen": { @@ -927,13 +922,13 @@ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.2", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.1" } }, "brace-expansion": { @@ -941,7 +936,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -950,16 +945,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -967,7 +962,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -1001,14 +996,9 @@ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { - "node-int64": "^0.4.0" + "node-int64": "0.4.0" } }, - "bson": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz", - "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg==" - }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1029,15 +1019,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" } }, "call-me-maybe": { @@ -1072,7 +1062,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.4" } }, "capture-stack-trace": { @@ -1090,9 +1080,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "chokidar": { @@ -1100,18 +1090,18 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "2.0.0", + "async-each": "1.0.2", + "braces": "2.3.2", + "fsevents": "1.2.7", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.2" } }, "ci-info": { @@ -1124,10 +1114,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -1135,7 +1125,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -1151,9 +1141,9 @@ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "co": { @@ -1173,8 +1163,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color": { @@ -1182,8 +1172,8 @@ "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "1.9.3", + "color-string": "1.5.3" } }, "color-convert": { @@ -1204,8 +1194,8 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" } }, "colornames": { @@ -1223,8 +1213,8 @@ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.1.tgz", "integrity": "sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw==", "requires": { - "color": "3.0.x", - "text-hex": "1.0.x" + "color": "3.0.0", + "text-hex": "1.0.0" } }, "combined-stream": { @@ -1232,7 +1222,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -1272,10 +1262,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "optional": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" } }, "config": { @@ -1283,7 +1273,7 @@ "resolved": "https://registry.npmjs.org/config/-/config-3.1.0.tgz", "integrity": "sha512-t6oDeNQbsIWa+D/KF4959TANzjSHLv1BA/hvL8tHEA3OUSWgBXELKaONSI6nr9oanbKs0DXonjOWLcrtZ3yTAA==", "requires": { - "json5": "^1.0.1" + "json5": "1.0.1" } }, "configstore": { @@ -1291,12 +1281,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.15", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.4.2", + "xdg-basedir": "3.0.0" } }, "content-disposition": { @@ -1320,7 +1310,7 @@ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" } }, "cookie": { @@ -1362,7 +1352,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "^1.0.0" + "capture-stack-trace": "1.0.1" } }, "cron-parser": { @@ -1370,8 +1360,8 @@ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.11.0.tgz", "integrity": "sha512-L5LAGlvq2xmCLErhjQRX8IL5v72y8jhGOaxrarYOhse0kJjJGb/vY/0sV/c7F/SylJGkUIY2iZPPJXZD3glZqA==", "requires": { - "is-nan": "^1.2.1", - "moment-timezone": "^0.5.23" + "is-nan": "1.2.1", + "moment-timezone": "0.5.23" } }, "cross-spawn": { @@ -1379,9 +1369,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "crypto-random-string": { @@ -1401,7 +1391,7 @@ "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "0.3.6" } }, "cycle": { @@ -1414,7 +1404,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "dasherize": { @@ -1428,9 +1418,9 @@ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "2.0.0", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "7.0.0" }, "dependencies": { "whatwg-url": { @@ -1439,9 +1429,9 @@ "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } } } @@ -1482,7 +1472,7 @@ "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, "requires": { - "strip-bom": "^3.0.0" + "strip-bom": "3.0.0" } }, "define-properties": { @@ -1490,7 +1480,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "^1.0.12" + "object-keys": "1.1.1" } }, "define-property": { @@ -1498,8 +1488,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -1507,7 +1497,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1515,7 +1505,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1523,9 +1513,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } @@ -1556,9 +1546,9 @@ "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", "requires": { - "colorspace": "1.1.x", - "enabled": "1.0.x", - "kuler": "1.0.x" + "colorspace": "1.1.1", + "enabled": "1.0.2", + "kuler": "1.0.1" } }, "diff-sequences": { @@ -1577,7 +1567,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.2" } }, "domexception": { @@ -1586,7 +1576,7 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "4.0.2" } }, "dont-sniff-mimetype": { @@ -1599,7 +1589,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "1.0.1" } }, "duplexer3": { @@ -1612,8 +1602,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "ecdsa-sig-formatter": { @@ -1621,7 +1611,7 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "ee-first": { @@ -1634,7 +1624,7 @@ "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", "requires": { - "env-variable": "0.0.x" + "env-variable": "0.0.5" } }, "encodeurl": { @@ -1648,7 +1638,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "engine.io": { @@ -1656,12 +1646,12 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.5", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~6.1.0" + "debug": "3.1.0", + "engine.io-parser": "2.1.3", + "ws": "6.1.4" }, "dependencies": { "debug": { @@ -1681,14 +1671,14 @@ "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "debug": "3.1.0", + "engine.io-parser": "2.1.3", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", + "ws": "6.1.4", + "xmlhttprequest-ssl": "1.5.5", "yeast": "0.1.2" }, "dependencies": { @@ -1708,10 +1698,10 @@ "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "requires": { "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", + "arraybuffer.slice": "0.0.7", "base64-arraybuffer": "0.1.5", "blob": "0.0.5", - "has-binary2": "~1.0.2" + "has-binary2": "1.0.3" } }, "env-variable": { @@ -1725,7 +1715,7 @@ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" }, "dependencies": { "is-arrayish": { @@ -1742,12 +1732,12 @@ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4", + "object-keys": "1.1.1" } }, "es-to-primitive": { @@ -1756,9 +1746,9 @@ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" } }, "es6-promise": { @@ -1771,7 +1761,7 @@ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "^4.0.3" + "es6-promise": "4.2.6" } }, "escape-html": { @@ -1790,11 +1780,11 @@ "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" }, "dependencies": { "esprima": { @@ -1849,13 +1839,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "exit": { @@ -1869,13 +1859,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -1883,7 +1873,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -1891,7 +1881,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -1902,12 +1892,12 @@ "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.3.0", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-regex-util": "^24.3.0" + "@jest/types": "24.7.0", + "ansi-styles": "3.2.1", + "jest-get-type": "24.3.0", + "jest-matcher-utils": "24.7.0", + "jest-message-util": "24.7.1", + "jest-regex-util": "24.3.0" } }, "expect-ct": { @@ -1920,36 +1910,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.3", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", + "proxy-addr": "2.0.4", "qs": "6.5.2", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.2", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" } }, "express-x-hub": { @@ -1957,8 +1947,8 @@ "resolved": "https://registry.npmjs.org/express-x-hub/-/express-x-hub-1.0.4.tgz", "integrity": "sha1-k5F9pHj1xRf1t0onAHlfYWoqDR0=", "requires": { - "raw-body": "^2.1.4", - "type-is": "^1.6.9" + "raw-body": "2.3.3", + "type-is": "1.6.16" } }, "express-xml-bodyparser": { @@ -1966,7 +1956,7 @@ "resolved": "https://registry.npmjs.org/express-xml-bodyparser/-/express-xml-bodyparser-0.3.0.tgz", "integrity": "sha1-sfWpit9sbkEsTMumNCNLgpRcYr4=", "requires": { - "xml2js": "^0.4.11" + "xml2js": "0.4.19" } }, "extend": { @@ -1979,8 +1969,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -1988,7 +1978,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -1998,14 +1988,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2013,7 +2003,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -2021,7 +2011,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -2029,7 +2019,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -2037,7 +2027,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -2045,9 +2035,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } @@ -2101,7 +2091,7 @@ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "^2.0.0" + "bser": "2.0.0" } }, "fd-slicer": { @@ -2110,7 +2100,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "optional": true, "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "feature-policy": { @@ -2128,7 +2118,7 @@ "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", "requires": { - "moment": "^2.11.2" + "moment": "2.24.0" } }, "fileset": { @@ -2137,8 +2127,8 @@ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "glob": "7.1.3", + "minimatch": "3.0.4" } }, "fill-range": { @@ -2146,10 +2136,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -2157,7 +2147,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2168,12 +2158,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" } }, "find-up": { @@ -2182,7 +2172,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "for-in": { @@ -2200,9 +2190,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.22" } }, "format-util": { @@ -2220,7 +2210,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "frameguard": { @@ -2239,9 +2229,9 @@ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "optional": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" + "graceful-fs": "4.1.15", + "jsonfile": "2.4.0", + "klaw": "1.3.1" } }, "fs.realpath": { @@ -2255,8 +2245,8 @@ "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "2.13.2", + "node-pre-gyp": "0.10.3" }, "dependencies": { "abbrev": { @@ -2266,8 +2256,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -2285,15 +2274,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2304,18 +2291,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2350,7 +2334,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "fs.realpath": { @@ -2378,12 +2362,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { @@ -2396,7 +2380,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -2404,7 +2388,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -2412,14 +2396,13 @@ "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -2429,9 +2412,8 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -2442,23 +2424,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "minizlib": { @@ -2466,13 +2445,12 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2487,9 +2465,9 @@ "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.24", + "sax": "1.2.4" } }, "node-pre-gyp": { @@ -2497,16 +2475,16 @@ "bundled": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.4", + "nopt": "4.0.1", + "npm-packlist": "1.2.0", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.6.3", + "semver": "5.6.0", + "tar": "4.4.8" } }, "nopt": { @@ -2514,8 +2492,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -2528,8 +2506,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.5" } }, "npmlog": { @@ -2545,8 +2523,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -2556,9 +2533,8 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -2576,8 +2552,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -2595,10 +2571,10 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -2627,13 +2603,12 @@ "bundled": true, "optional": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.3" } }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -2663,11 +2638,10 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -2675,15 +2649,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -2696,13 +2669,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "chownr": "1.1.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "util-deprecate": { @@ -2720,13 +2693,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -2741,10 +2712,10 @@ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.3.tgz", "integrity": "sha512-6Lc1P0NjbPNQ2FGgTRurz32P6FktNJbwLqXvrUNhfwzKb9iizcWuAJiHoSG2W186K9ZL0X6ST5xD9gJWhHI1sg==", "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.3.0" + "abort-controller": "3.0.0", + "extend": "3.0.2", + "https-proxy-agent": "2.2.1", + "node-fetch": "2.3.0" } }, "gcp-metadata": { @@ -2752,8 +2723,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", "requires": { - "gaxios": "^1.0.2", - "json-bigint": "^0.3.0" + "gaxios": "1.8.3", + "json-bigint": "0.3.0" } }, "get-caller-file": { @@ -2777,7 +2748,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { @@ -2785,12 +2756,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-parent": { @@ -2798,8 +2769,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -2807,7 +2778,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -2817,7 +2788,7 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { - "ini": "^1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -2831,15 +2802,15 @@ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", "requires": { - "base64-js": "^1.3.0", - "fast-text-encoding": "^1.0.0", - "gaxios": "^1.2.1", - "gcp-metadata": "^1.0.0", - "gtoken": "^2.3.2", - "https-proxy-agent": "^2.2.1", - "jws": "^3.1.5", - "lru-cache": "^5.0.0", - "semver": "^5.5.0" + "base64-js": "1.3.0", + "fast-text-encoding": "1.0.0", + "gaxios": "1.8.3", + "gcp-metadata": "1.0.0", + "gtoken": "2.3.3", + "https-proxy-agent": "2.2.1", + "jws": "3.2.2", + "lru-cache": "5.1.1", + "semver": "5.7.0" }, "dependencies": { "lru-cache": { @@ -2847,7 +2818,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "yallist": "^3.0.2" + "yallist": "3.0.3" } }, "yallist": { @@ -2862,8 +2833,8 @@ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", "requires": { - "node-forge": "^0.8.0", - "pify": "^4.0.0" + "node-forge": "0.8.2", + "pify": "4.0.1" }, "dependencies": { "pify": { @@ -2878,8 +2849,8 @@ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-39.2.0.tgz", "integrity": "sha512-66X8TG1B33zAt177sG1CoKoYHPP/B66tEpnnSANGCqotMuY5gqSQO8G/0gqHZR2jRgc5CHSSNOJCnpI0SuDxMQ==", "requires": { - "google-auth-library": "^3.0.0", - "googleapis-common": "^0.7.0" + "google-auth-library": "3.1.2", + "googleapis-common": "0.7.2" } }, "googleapis-common": { @@ -2887,12 +2858,12 @@ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.7.2.tgz", "integrity": "sha512-9DEJIiO4nS7nw0VE1YVkEfXEj8x8MxsuB+yZIpOBULFSN9OIKcUU8UuKgSZFU4lJmRioMfngktrbkMwWJcUhQg==", "requires": { - "gaxios": "^1.2.2", - "google-auth-library": "^3.0.0", - "pify": "^4.0.0", - "qs": "^6.5.2", - "url-template": "^2.0.8", - "uuid": "^3.2.1" + "gaxios": "1.8.3", + "google-auth-library": "3.1.2", + "pify": "4.0.1", + "qs": "6.5.2", + "url-template": "2.0.8", + "uuid": "3.3.2" }, "dependencies": { "pify": { @@ -2907,17 +2878,17 @@ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "graceful-fs": { @@ -2936,11 +2907,11 @@ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", "requires": { - "gaxios": "^1.0.4", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.5", - "mime": "^2.2.0", - "pify": "^4.0.0" + "gaxios": "1.8.3", + "google-p12-pem": "1.0.4", + "jws": "3.2.2", + "mime": "2.4.2", + "pify": "4.0.1" }, "dependencies": { "mime": { @@ -2965,8 +2936,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "ajv": "6.10.0", + "har-schema": "2.0.0" } }, "has": { @@ -2975,7 +2946,7 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-binary2": { @@ -3014,9 +2985,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, "has-values": { @@ -3024,8 +2995,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "kind-of": { @@ -3033,7 +3004,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3044,8 +3015,8 @@ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", "optional": true, "requires": { - "is-stream": "^1.0.1", - "pinkie-promise": "^2.0.0" + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" } }, "helmet": { @@ -3130,7 +3101,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "1.0.5" } }, "html-pdf": { @@ -3138,7 +3109,7 @@ "resolved": "https://registry.npmjs.org/html-pdf/-/html-pdf-2.2.0.tgz", "integrity": "sha1-S8+Rwky1YOR6o/rP0DPg4b8kG5E=", "requires": { - "phantomjs-prebuilt": "^2.1.4" + "phantomjs-prebuilt": "2.1.16" } }, "http-errors": { @@ -3146,10 +3117,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.4.0" } }, "http-signature": { @@ -3157,9 +3128,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" } }, "https-proxy-agent": { @@ -3167,8 +3138,8 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "4.2.1", + "debug": "3.2.6" }, "dependencies": { "debug": { @@ -3176,7 +3147,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -3191,7 +3162,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ienoopen": { @@ -3215,8 +3186,8 @@ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "3.0.0", + "resolve-cwd": "2.0.0" } }, "imurmurhash": { @@ -3234,8 +3205,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -3254,7 +3225,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } }, "invert-kv": { @@ -3273,7 +3244,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3281,7 +3252,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3296,7 +3267,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.13.1" } }, "is-buffer": { @@ -3315,7 +3286,7 @@ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "requires": { - "ci-info": "^1.5.0" + "ci-info": "1.6.0" } }, "is-data-descriptor": { @@ -3323,7 +3294,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3331,7 +3302,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3347,9 +3318,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -3385,7 +3356,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "is-installed-globally": { @@ -3393,8 +3364,8 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-nan": { @@ -3402,7 +3373,7 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", "integrity": "sha1-n69ltvttskt/XAYoR16nH5iEAeI=", "requires": { - "define-properties": "^1.1.1" + "define-properties": "1.1.3" } }, "is-npm": { @@ -3415,7 +3386,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3423,7 +3394,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3438,7 +3409,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "1.0.2" } }, "is-plain-object": { @@ -3446,7 +3417,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "is-redirect": { @@ -3460,7 +3431,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-retry-allowed": { @@ -3479,7 +3450,7 @@ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "1.0.0" } }, "is-typedarray": { @@ -3524,19 +3495,19 @@ "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", "dev": true, "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.5", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" + "async": "2.6.2", + "compare-versions": "3.4.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "2.0.5", + "istanbul-lib-hook": "2.0.7", + "istanbul-lib-instrument": "3.3.0", + "istanbul-lib-report": "2.0.8", + "istanbul-lib-source-maps": "3.0.6", + "istanbul-reports": "2.2.6", + "js-yaml": "3.13.1", + "make-dir": "2.1.0", + "minimatch": "3.0.4", + "once": "1.4.0" }, "dependencies": { "debug": { @@ -3545,7 +3516,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "handlebars": { @@ -3554,10 +3525,10 @@ "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "neo-async": "2.6.0", + "optimist": "0.6.1", + "source-map": "0.6.1", + "uglify-js": "3.5.4" } }, "istanbul-lib-coverage": { @@ -3572,7 +3543,7 @@ "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", "dev": true, "requires": { - "append-transform": "^1.0.0" + "append-transform": "1.0.0" } }, "istanbul-lib-instrument": { @@ -3581,13 +3552,13 @@ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/generator": "7.4.0", + "@babel/parser": "7.4.3", + "@babel/template": "7.4.0", + "@babel/traverse": "7.4.3", + "@babel/types": "7.4.0", + "istanbul-lib-coverage": "2.0.5", + "semver": "6.1.1" } }, "istanbul-lib-report": { @@ -3596,9 +3567,9 @@ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "2.0.5", + "make-dir": "2.1.0", + "supports-color": "6.1.0" } }, "istanbul-lib-source-maps": { @@ -3607,11 +3578,11 @@ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" + "debug": "4.1.1", + "istanbul-lib-coverage": "2.0.5", + "make-dir": "2.1.0", + "rimraf": "2.6.3", + "source-map": "0.6.1" } }, "istanbul-reports": { @@ -3620,7 +3591,7 @@ "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "handlebars": "4.1.2" } }, "js-yaml": { @@ -3629,8 +3600,8 @@ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "make-dir": { @@ -3639,8 +3610,8 @@ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "pify": "4.0.1", + "semver": "5.7.0" }, "dependencies": { "semver": { @@ -3681,7 +3652,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -3698,13 +3669,13 @@ "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", - "semver": "^5.5.0" + "@babel/generator": "7.4.0", + "@babel/parser": "7.4.3", + "@babel/template": "7.4.0", + "@babel/traverse": "7.4.3", + "@babel/types": "7.4.0", + "istanbul-lib-coverage": "2.0.3", + "semver": "5.7.0" } }, "istanbul-lib-source-maps": { @@ -3713,11 +3684,11 @@ "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "rimraf": "^2.6.2", - "source-map": "^0.6.1" + "debug": "4.1.1", + "istanbul-lib-coverage": "2.0.3", + "make-dir": "1.3.0", + "rimraf": "2.6.3", + "source-map": "0.6.1" }, "dependencies": { "debug": { @@ -3726,7 +3697,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -3749,8 +3720,8 @@ "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==", "dev": true, "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.7.1" + "import-local": "2.0.0", + "jest-cli": "24.7.1" }, "dependencies": { "ci-info": { @@ -3765,7 +3736,7 @@ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "2.0.0" } }, "jest-cli": { @@ -3774,19 +3745,19 @@ "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==", "dev": true, "requires": { - "@jest/core": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^12.0.2" + "@jest/core": "24.7.1", + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "import-local": "2.0.0", + "is-ci": "2.0.0", + "jest-config": "24.7.1", + "jest-util": "24.7.1", + "jest-validate": "24.7.0", + "prompts": "2.0.4", + "realpath-native": "1.1.0", + "yargs": "12.0.5" } } } @@ -3797,9 +3768,9 @@ "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "@jest/types": "24.7.0", + "execa": "1.0.0", + "throat": "4.1.0" }, "dependencies": { "cross-spawn": { @@ -3808,11 +3779,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "execa": { @@ -3821,13 +3792,13 @@ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "get-stream": { @@ -3836,7 +3807,7 @@ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } } } @@ -3847,23 +3818,23 @@ "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.7.1", - "@jest/types": "^24.7.0", - "babel-jest": "^24.7.1", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.7.1", - "jest-environment-node": "^24.7.1", - "jest-get-type": "^24.3.0", - "jest-jasmine2": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.7.0", - "realpath-native": "^1.1.0" + "@babel/core": "7.4.3", + "@jest/test-sequencer": "24.7.1", + "@jest/types": "24.7.0", + "babel-jest": "24.7.1", + "chalk": "2.4.2", + "glob": "7.1.3", + "jest-environment-jsdom": "24.7.1", + "jest-environment-node": "24.7.1", + "jest-get-type": "24.3.0", + "jest-jasmine2": "24.7.1", + "jest-regex-util": "24.3.0", + "jest-resolve": "24.7.1", + "jest-util": "24.7.1", + "jest-validate": "24.7.0", + "micromatch": "3.1.10", + "pretty-format": "24.7.0", + "realpath-native": "1.1.0" } }, "jest-diff": { @@ -3872,10 +3843,10 @@ "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.3.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.7.0" + "chalk": "2.4.2", + "diff-sequences": "24.3.0", + "jest-get-type": "24.3.0", + "pretty-format": "24.7.0" } }, "jest-docblock": { @@ -3884,7 +3855,7 @@ "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "2.1.0" } }, "jest-each": { @@ -3893,11 +3864,11 @@ "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "jest-util": "^24.7.1", - "pretty-format": "^24.7.0" + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "jest-get-type": "24.3.0", + "jest-util": "24.7.1", + "pretty-format": "24.7.0" } }, "jest-environment-jsdom": { @@ -3906,12 +3877,12 @@ "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0", - "jest-util": "^24.7.1", - "jsdom": "^11.5.1" + "@jest/environment": "24.7.1", + "@jest/fake-timers": "24.7.1", + "@jest/types": "24.7.0", + "jest-mock": "24.7.0", + "jest-util": "24.7.1", + "jsdom": "11.12.0" } }, "jest-environment-node": { @@ -3920,11 +3891,11 @@ "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0", - "jest-util": "^24.7.1" + "@jest/environment": "24.7.1", + "@jest/fake-timers": "24.7.1", + "@jest/types": "24.7.0", + "jest-mock": "24.7.0", + "jest-util": "24.7.1" } }, "jest-get-type": { @@ -3939,18 +3910,18 @@ "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.4.0", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.7.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.0", + "fsevents": "1.2.7", + "graceful-fs": "4.1.15", + "invariant": "2.2.4", + "jest-serializer": "24.4.0", + "jest-util": "24.7.1", + "jest-worker": "24.6.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-jasmine2": { @@ -3959,22 +3930,22 @@ "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.7.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.7.1", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "pretty-format": "^24.7.0", - "throat": "^4.0.0" + "@babel/traverse": "7.4.3", + "@jest/environment": "24.7.1", + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "co": "4.6.0", + "expect": "24.7.1", + "is-generator-fn": "2.1.0", + "jest-each": "24.7.1", + "jest-matcher-utils": "24.7.0", + "jest-message-util": "24.7.1", + "jest-runtime": "24.7.1", + "jest-snapshot": "24.7.1", + "jest-util": "24.7.1", + "pretty-format": "24.7.0", + "throat": "4.1.0" } }, "jest-leak-detector": { @@ -3983,7 +3954,7 @@ "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==", "dev": true, "requires": { - "pretty-format": "^24.7.0" + "pretty-format": "24.7.0" } }, "jest-matcher-utils": { @@ -3992,10 +3963,10 @@ "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.7.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.7.0" + "chalk": "2.4.2", + "jest-diff": "24.7.0", + "jest-get-type": "24.3.0", + "pretty-format": "24.7.0" } }, "jest-message-util": { @@ -4004,14 +3975,14 @@ "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "@babel/code-frame": "7.0.0", + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "@types/stack-utils": "1.0.1", + "chalk": "2.4.2", + "micromatch": "3.1.10", + "slash": "2.0.0", + "stack-utils": "1.0.2" } }, "jest-mock": { @@ -4020,7 +3991,7 @@ "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==", "dev": true, "requires": { - "@jest/types": "^24.7.0" + "@jest/types": "24.7.0" } }, "jest-pnp-resolver": { @@ -4041,11 +4012,11 @@ "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "@jest/types": "24.7.0", + "browser-resolve": "1.11.3", + "chalk": "2.4.2", + "jest-pnp-resolver": "1.2.1", + "realpath-native": "1.1.0" } }, "jest-resolve-dependencies": { @@ -4054,9 +4025,9 @@ "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.7.1" + "@jest/types": "24.7.0", + "jest-regex-util": "24.3.0", + "jest-snapshot": "24.7.1" } }, "jest-runner": { @@ -4065,25 +4036,25 @@ "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.7.1", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.7.1", - "jest-jasmine2": "^24.7.1", - "jest-leak-detector": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-resolve": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "@jest/console": "24.7.1", + "@jest/environment": "24.7.1", + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "graceful-fs": "4.1.15", + "jest-config": "24.7.1", + "jest-docblock": "24.3.0", + "jest-haste-map": "24.7.1", + "jest-jasmine2": "24.7.1", + "jest-leak-detector": "24.7.0", + "jest-message-util": "24.7.1", + "jest-resolve": "24.7.1", + "jest-runtime": "24.7.1", + "jest-util": "24.7.1", + "jest-worker": "24.6.0", + "source-map-support": "0.5.12", + "throat": "4.1.0" } }, "jest-runtime": { @@ -4092,29 +4063,29 @@ "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.7.1", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/yargs": "^12.0.2", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-message-util": "^24.7.1", - "jest-mock": "^24.7.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^12.0.2" + "@jest/console": "24.7.1", + "@jest/environment": "24.7.1", + "@jest/source-map": "24.3.0", + "@jest/transform": "24.7.1", + "@jest/types": "24.7.0", + "@types/yargs": "12.0.12", + "chalk": "2.4.2", + "exit": "0.1.2", + "glob": "7.1.3", + "graceful-fs": "4.1.15", + "jest-config": "24.7.1", + "jest-haste-map": "24.7.1", + "jest-message-util": "24.7.1", + "jest-mock": "24.7.0", + "jest-regex-util": "24.3.0", + "jest-resolve": "24.7.1", + "jest-snapshot": "24.7.1", + "jest-util": "24.7.1", + "jest-validate": "24.7.0", + "realpath-native": "1.1.0", + "slash": "2.0.0", + "strip-bom": "3.0.0", + "yargs": "12.0.5" } }, "jest-serializer": { @@ -4129,18 +4100,18 @@ "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "expect": "^24.7.1", - "jest-diff": "^24.7.0", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-resolve": "^24.7.1", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.7.0", - "semver": "^5.5.0" + "@babel/types": "7.4.0", + "@jest/types": "24.7.0", + "chalk": "2.4.2", + "expect": "24.7.1", + "jest-diff": "24.7.0", + "jest-matcher-utils": "24.7.0", + "jest-message-util": "24.7.1", + "jest-resolve": "24.7.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "24.7.0", + "semver": "5.7.0" } }, "jest-util": { @@ -4149,18 +4120,18 @@ "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "@jest/console": "24.7.1", + "@jest/fake-timers": "24.7.1", + "@jest/source-map": "24.3.0", + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "callsites": "3.1.0", + "chalk": "2.4.2", + "graceful-fs": "4.1.15", + "is-ci": "2.0.0", + "mkdirp": "0.5.1", + "slash": "2.0.0", + "source-map": "0.6.1" }, "dependencies": { "ci-info": { @@ -4175,7 +4146,7 @@ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "2.0.0" } }, "source-map": { @@ -4192,12 +4163,12 @@ "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "camelcase": "^5.0.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "leven": "^2.1.0", - "pretty-format": "^24.7.0" + "@jest/types": "24.7.0", + "camelcase": "5.3.1", + "chalk": "2.4.2", + "jest-get-type": "24.3.0", + "leven": "2.1.0", + "pretty-format": "24.7.0" }, "dependencies": { "camelcase": { @@ -4214,13 +4185,13 @@ "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==", "dev": true, "requires": { - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/yargs": "^12.0.9", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.7.1", - "string-length": "^2.0.0" + "@jest/test-result": "24.7.1", + "@jest/types": "24.7.0", + "@types/yargs": "12.0.12", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "jest-util": "24.7.1", + "string-length": "2.0.0" } }, "jest-worker": { @@ -4229,8 +4200,8 @@ "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "dev": true, "requires": { - "merge-stream": "^1.0.1", - "supports-color": "^6.1.0" + "merge-stream": "1.0.1", + "supports-color": "6.1.0" }, "dependencies": { "supports-color": { @@ -4239,7 +4210,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -4255,8 +4226,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "jsbn": { @@ -4270,32 +4241,32 @@ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", + "abab": "2.0.0", + "acorn": "5.7.3", + "acorn-globals": "4.3.0", + "array-equal": "1.0.0", + "cssom": "0.3.6", + "cssstyle": "1.2.2", + "data-urls": "1.1.0", + "domexception": "1.0.1", + "escodegen": "1.11.1", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.3.0", + "nwsapi": "2.1.3", "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "pn": "1.1.0", + "request": "2.88.0", + "request-promise-native": "1.0.7", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.5.0", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.5", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "6.5.0", + "ws": "5.2.2", + "xml-name-validator": "3.0.0" }, "dependencies": { "ws": { @@ -4304,7 +4275,7 @@ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "1.0.0" } } } @@ -4320,7 +4291,7 @@ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", "requires": { - "bignumber.js": "^7.0.0" + "bignumber.js": "7.2.1" } }, "json-parse-better-errors": { @@ -4339,10 +4310,10 @@ "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-5.1.3.tgz", "integrity": "sha512-CpDFlBwz/6la78hZxyB9FECVKGYjIIl3Ms3KLqFj99W7IIb7D00/RDgc++IGB4BBALl0QRhh5m4q5WNSopvLtQ==", "requires": { - "call-me-maybe": "^1.0.1", - "debug": "^3.1.0", - "js-yaml": "^3.12.0", - "ono": "^4.0.6" + "call-me-maybe": "1.0.1", + "debug": "3.2.6", + "js-yaml": "3.13.1", + "ono": "4.0.11" }, "dependencies": { "debug": { @@ -4350,7 +4321,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -4375,7 +4346,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.0" } }, "jsonfile": { @@ -4384,7 +4355,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "optional": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.15" } }, "jsonschema": { @@ -4415,7 +4386,7 @@ "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "jws": { @@ -4423,15 +4394,10 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" + "jwa": "1.4.1", + "safe-buffer": "5.1.2" } }, - "kareem": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", - "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" - }, "kew": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", @@ -4449,7 +4415,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "optional": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.15" } }, "kleur": { @@ -4463,7 +4429,7 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", "requires": { - "colornames": "^1.1.1" + "colornames": "1.1.1" } }, "latest-version": { @@ -4471,7 +4437,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "package-json": "^4.0.0" + "package-json": "4.0.1" } }, "lcid": { @@ -4480,7 +4446,7 @@ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "2.0.0" } }, "left-pad": { @@ -4501,8 +4467,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "load-json-file": { @@ -4511,10 +4477,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "graceful-fs": "4.1.15", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" } }, "locate-path": { @@ -4523,8 +4489,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "lodash": { @@ -4553,11 +4519,11 @@ "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", - "ms": "^2.1.1", - "triple-beam": "^1.3.0" + "colors": "1.3.3", + "fast-safe-stringify": "2.0.6", + "fecha": "2.3.3", + "ms": "2.1.1", + "triple-beam": "1.3.0" }, "dependencies": { "ms": { @@ -4578,7 +4544,7 @@ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "js-tokens": "4.0.0" } }, "lowercase-keys": { @@ -4591,8 +4557,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "make-dir": { @@ -4600,7 +4566,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "makeerror": { @@ -4609,7 +4575,7 @@ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.4" } }, "map-age-cleaner": { @@ -4618,7 +4584,7 @@ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, "requires": { - "p-defer": "^1.0.0" + "p-defer": "1.0.0" } }, "map-cache": { @@ -4631,7 +4597,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "media-typer": { @@ -4645,17 +4611,11 @@ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "map-age-cleaner": "0.1.3", + "mimic-fn": "2.1.0", + "p-is-promise": "2.1.0" } }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -4667,7 +4627,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "^2.0.1" + "readable-stream": "2.3.6" } }, "methods": { @@ -4680,19 +4640,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "mime": { @@ -4710,7 +4670,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.38.0" } }, "mimic-fn": { @@ -4724,7 +4684,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -4737,8 +4697,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -4746,7 +4706,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -4776,98 +4736,19 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz", "integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==", "requires": { - "moment": ">= 2.9.0" - } - }, - "mongodb": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.7.tgz", - "integrity": "sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==", - "requires": { - "mongodb-core": "3.2.7", - "safe-buffer": "^5.1.2" - } - }, - "mongodb-core": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz", - "integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==", - "requires": { - "bson": "^1.1.1", - "require_optional": "^1.0.1", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" + "moment": "2.24.0" } }, - "mongoose": { - "version": "5.6.12", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.6.12.tgz", - "integrity": "sha512-1E/wEGw1widyblhrLUBEOatm1COS0jyks0tKBiuvjPoncty4Msbk0X1EZWUxFtkZuhlbXeILJPYlKBDzxFmPfg==", - "requires": { - "async": "2.6.2", - "bson": "~1.1.1", - "kareem": "2.3.1", - "mongodb": "3.2.7", - "mongodb-core": "3.2.7", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.6.0", - "mquery": "3.2.1", - "ms": "2.1.2", - "regexp-clone": "1.0.0", - "safe-buffer": "5.1.2", - "sift": "7.0.1", - "sliced": "1.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" - }, "morgan": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "2.0.1", "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" - } - }, - "mpath": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz", - "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw==" - }, - "mquery": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.1.tgz", - "integrity": "sha512-kY/K8QToZWTTocm0U+r8rqcJCp5PRl6e8tPmoDs5OeSO3DInZE2rAL6AYH+V406JTo8305LdASOQcxRDqHojyw==", - "requires": { - "bluebird": "3.5.1", - "debug": "3.1.0", - "regexp-clone": "^1.0.0", - "safe-buffer": "5.1.2", - "sliced": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.2" } }, "ms": { @@ -4891,17 +4772,17 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "natural-compare": { @@ -4960,11 +4841,11 @@ "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", "dev": true, "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "growly": "1.3.0", + "is-wsl": "1.1.0", + "semver": "5.7.0", + "shellwords": "0.1.1", + "which": "1.3.1" } }, "node-schedule": { @@ -4972,9 +4853,9 @@ "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz", "integrity": "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==", "requires": { - "cron-parser": "^2.7.3", + "cron-parser": "2.11.0", "long-timeout": "0.1.1", - "sorted-array-functions": "^1.0.0" + "sorted-array-functions": "1.2.0" } }, "nodemon": { @@ -4982,16 +4863,16 @@ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.11.tgz", "integrity": "sha512-KdN3tm1zkarlqNo4+W9raU3ihM4H15MVMSE/f9rYDZmFgDHAfAJsomYrHhApAkuUemYjFyEeXlpCOQ2v5gtBEw==", "requires": { - "chokidar": "^2.1.5", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.6", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.5.0" + "chokidar": "2.1.5", + "debug": "3.2.6", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.6", + "semver": "5.7.0", + "supports-color": "5.5.0", + "touch": "3.1.0", + "undefsafe": "2.0.2", + "update-notifier": "2.5.0" }, "dependencies": { "debug": { @@ -4999,7 +4880,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -5014,7 +4895,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -5023,10 +4904,10 @@ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.7.1", + "resolve": "1.10.0", + "semver": "5.7.0", + "validate-npm-package-license": "3.0.4" } }, "normalize-path": { @@ -5039,136 +4920,136 @@ "resolved": "https://registry.npmjs.org/npm/-/npm-6.10.1.tgz", "integrity": "sha512-ejR83c5aPTip5hPhziypqkJu06vb5tDIugCXx1c5+04RbMjtZeMA6BfsuGnV9EBdEwzKoaHkQ9sJWQAq+LjHYw==", "requires": { - "JSONStream": "^1.3.5", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "aproba": "^2.0.0", - "archy": "~1.0.0", - "bin-links": "^1.1.2", - "bluebird": "^3.5.5", - "byte-size": "^5.0.1", - "cacache": "^11.3.3", - "call-limit": "^1.1.1", - "chownr": "^1.1.2", - "ci-info": "^2.0.0", - "cli-columns": "^3.1.2", - "cli-table3": "^0.5.1", - "cmd-shim": "~2.0.2", - "columnify": "~1.5.4", - "config-chain": "^1.1.12", - "debuglog": "*", - "detect-indent": "~5.0.0", - "detect-newline": "^2.1.0", - "dezalgo": "~1.0.3", - "editor": "~1.0.0", - "figgy-pudding": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "fs-vacuum": "~1.2.10", - "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.0.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "has-unicode": "~2.0.1", - "hosted-git-info": "^2.7.1", - "iferr": "^1.0.2", - "imurmurhash": "*", - "inflight": "~1.0.6", - "inherits": "^2.0.4", - "ini": "^1.3.5", - "init-package-json": "^1.10.3", - "is-cidr": "^3.0.0", - "json-parse-better-errors": "^1.0.2", - "lazy-property": "~1.0.0", - "libcipm": "^4.0.0", - "libnpm": "^3.0.0", - "libnpmaccess": "*", - "libnpmhook": "^5.0.2", - "libnpmorg": "*", - "libnpmsearch": "^2.0.1", - "libnpmteam": "*", - "libnpx": "^10.2.0", - "lock-verify": "^2.1.0", - "lockfile": "^1.0.4", - "lodash._baseindexof": "*", - "lodash._baseuniq": "~4.6.0", - "lodash._bindcallback": "*", - "lodash._cacheindexof": "*", - "lodash._createcache": "*", - "lodash._getnative": "*", - "lodash.clonedeep": "~4.5.0", - "lodash.restparam": "*", - "lodash.union": "~4.6.0", - "lodash.uniq": "~4.5.0", - "lodash.without": "~4.4.0", - "lru-cache": "^5.1.1", - "meant": "~1.0.1", - "mississippi": "^3.0.0", - "mkdirp": "~0.5.1", - "move-concurrently": "^1.0.1", - "node-gyp": "^5.0.2", - "nopt": "~4.0.1", - "normalize-package-data": "^2.5.0", - "npm-audit-report": "^1.3.2", - "npm-cache-filename": "~1.0.2", - "npm-install-checks": "~3.0.0", - "npm-lifecycle": "^3.0.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.4.4", - "npm-pick-manifest": "^2.2.3", - "npm-profile": "*", - "npm-registry-fetch": "^3.9.1", - "npm-user-validate": "~1.0.0", - "npmlog": "~4.1.2", - "once": "~1.4.0", - "opener": "^1.5.1", - "osenv": "^0.1.5", - "pacote": "^9.5.1", - "path-is-inside": "~1.0.2", - "promise-inflight": "~1.0.1", - "qrcode-terminal": "^0.12.0", - "query-string": "^6.8.1", - "qw": "~1.0.1", - "read": "~1.0.7", - "read-cmd-shim": "~1.0.1", - "read-installed": "~4.0.3", - "read-package-json": "^2.0.13", - "read-package-tree": "^5.3.1", - "readable-stream": "^3.4.0", - "readdir-scoped-modules": "^1.1.0", - "request": "^2.88.0", - "retry": "^0.12.0", - "rimraf": "^2.6.3", - "safe-buffer": "^5.1.2", - "semver": "^5.7.0", - "sha": "^3.0.0", - "slide": "~1.1.6", - "sorted-object": "~2.0.1", - "sorted-union-stream": "~2.1.3", - "ssri": "^6.0.1", - "stringify-package": "^1.0.0", - "tar": "^4.4.10", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", + "JSONStream": "1.3.5", + "abbrev": "1.1.1", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "2.0.0", + "archy": "1.0.0", + "bin-links": "1.1.2", + "bluebird": "3.5.5", + "byte-size": "5.0.1", + "cacache": "11.3.3", + "call-limit": "1.1.1", + "chownr": "1.1.2", + "ci-info": "2.0.0", + "cli-columns": "3.1.2", + "cli-table3": "0.5.1", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.12", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "detect-newline": "2.1.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "figgy-pudding": "3.5.1", + "find-npm-prefix": "1.0.2", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.0.1", + "glob": "7.1.4", + "graceful-fs": "4.2.0", + "has-unicode": "2.0.1", + "hosted-git-info": "2.7.1", + "iferr": "1.0.2", + "imurmurhash": "0.1.4", + "inflight": "1.0.6", + "inherits": "2.0.4", + "ini": "1.3.5", + "init-package-json": "1.10.3", + "is-cidr": "3.0.0", + "json-parse-better-errors": "1.0.2", + "lazy-property": "1.0.0", + "libcipm": "4.0.0", + "libnpm": "3.0.0", + "libnpmaccess": "3.0.1", + "libnpmhook": "5.0.2", + "libnpmorg": "1.0.0", + "libnpmsearch": "2.0.1", + "libnpmteam": "1.0.1", + "libnpx": "10.2.0", + "lock-verify": "2.1.0", + "lockfile": "1.0.4", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "5.1.1", + "meant": "1.0.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "node-gyp": "5.0.2", + "nopt": "4.0.1", + "normalize-package-data": "2.5.0", + "npm-audit-report": "1.3.2", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-lifecycle": "3.0.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.4.4", + "npm-pick-manifest": "2.2.3", + "npm-profile": "4.0.1", + "npm-registry-fetch": "3.9.1", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.5.1", + "osenv": "0.1.5", + "pacote": "9.5.1", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "qrcode-terminal": "0.12.0", + "query-string": "6.8.1", + "qw": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.13", + "read-package-tree": "5.3.1", + "readable-stream": "3.4.0", + "readdir-scoped-modules": "1.1.0", + "request": "2.88.0", + "retry": "0.12.0", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "semver": "5.7.0", + "sha": "3.0.0", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "6.0.1", + "stringify-package": "1.0.0", + "tar": "4.4.10", + "text-table": "0.2.0", + "tiny-relative-date": "1.3.0", "uid-number": "0.0.6", - "umask": "~1.1.0", - "unique-filename": "^1.1.1", - "unpipe": "~1.0.0", - "update-notifier": "^2.5.0", - "uuid": "^3.3.2", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^1.3.1", - "worker-farm": "^1.7.0", - "write-file-atomic": "^2.4.3" + "umask": "1.1.0", + "unique-filename": "1.1.1", + "unpipe": "1.0.0", + "update-notifier": "2.5.0", + "uuid": "3.3.2", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0", + "which": "1.3.1", + "worker-farm": "1.7.0", + "write-file-atomic": "2.4.3" }, "dependencies": { "JSONStream": { "version": "1.3.5", "bundled": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "jsonparse": "1.3.1", + "through": "2.3.8" } }, "abbrev": { @@ -5179,31 +5060,31 @@ "version": "4.2.1", "bundled": true, "requires": { - "es6-promisify": "^5.0.0" + "es6-promisify": "5.0.0" } }, "agentkeepalive": { "version": "3.4.1", "bundled": true, "requires": { - "humanize-ms": "^1.2.1" + "humanize-ms": "1.2.1" } }, "ajv": { "version": "5.5.2", "bundled": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ansi-align": { "version": "2.0.0", "bundled": true, "requires": { - "string-width": "^2.0.0" + "string-width": "2.1.1" } }, "ansi-regex": { @@ -5214,7 +5095,7 @@ "version": "3.2.1", "bundled": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } }, "ansicolors": { @@ -5237,28 +5118,28 @@ "version": "1.1.4", "bundled": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5271,7 +5152,7 @@ "version": "0.2.4", "bundled": true, "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "assert-plus": { @@ -5299,18 +5180,18 @@ "bundled": true, "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "bin-links": { "version": "1.1.2", "bundled": true, "requires": { - "bluebird": "^3.5.0", - "cmd-shim": "^2.0.2", - "gentle-fs": "^2.0.0", - "graceful-fs": "^4.1.11", - "write-file-atomic": "^2.3.0" + "bluebird": "3.5.5", + "cmd-shim": "2.0.2", + "gentle-fs": "2.0.1", + "graceful-fs": "4.2.0", + "write-file-atomic": "2.4.3" } }, "bluebird": { @@ -5321,20 +5202,20 @@ "version": "1.3.0", "bundled": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" } }, "brace-expansion": { "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -5358,32 +5239,32 @@ "version": "11.3.3", "bundled": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "bluebird": "3.5.5", + "chownr": "1.1.2", + "figgy-pudding": "3.5.1", + "glob": "7.1.4", + "graceful-fs": "4.2.0", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.3", + "ssri": "6.0.1", + "unique-filename": "1.1.1", + "y18n": "4.0.0" }, "dependencies": { "glob": { "version": "7.1.4", "bundled": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } @@ -5408,9 +5289,9 @@ "version": "2.4.1", "bundled": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, "chownr": { @@ -5425,7 +5306,7 @@ "version": "2.0.10", "bundled": true, "requires": { - "ip-regex": "^2.1.0" + "ip-regex": "2.1.0" } }, "cli-boxes": { @@ -5436,26 +5317,26 @@ "version": "3.1.2", "bundled": true, "requires": { - "string-width": "^2.0.0", - "strip-ansi": "^3.0.1" + "string-width": "2.1.1", + "strip-ansi": "3.0.1" } }, "cli-table3": { "version": "0.5.1", "bundled": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "colors": "1.3.3", + "object-assign": "4.1.1", + "string-width": "2.1.1" } }, "cliui": { "version": "4.1.0", "bundled": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" }, "dependencies": { "ansi-regex": { @@ -5466,7 +5347,7 @@ "version": "4.0.0", "bundled": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -5479,8 +5360,8 @@ "version": "2.0.2", "bundled": true, "requires": { - "graceful-fs": "^4.1.2", - "mkdirp": "~0.5.0" + "graceful-fs": "4.2.0", + "mkdirp": "0.5.1" } }, "co": { @@ -5495,7 +5376,7 @@ "version": "1.9.1", "bundled": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -5511,15 +5392,15 @@ "version": "1.5.4", "bundled": true, "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" } }, "combined-stream": { "version": "1.0.6", "bundled": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "concat-map": { @@ -5530,30 +5411,30 @@ "version": "1.6.2", "bundled": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.0.0", + "inherits": "2.0.4", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5562,20 +5443,20 @@ "version": "1.1.12", "bundled": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "ini": "1.3.5", + "proto-list": "1.2.4" } }, "configstore": { "version": "3.1.2", "bundled": true, "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.2.0", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.4.3", + "xdg-basedir": "3.0.0" } }, "console-control-strings": { @@ -5586,12 +5467,12 @@ "version": "1.0.5", "bundled": true, "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.3", + "run-queue": "1.0.3" }, "dependencies": { "aproba": { @@ -5612,24 +5493,24 @@ "version": "3.0.2", "bundled": true, "requires": { - "capture-stack-trace": "^1.0.0" + "capture-stack-trace": "1.0.0" } }, "cross-spawn": { "version": "5.1.0", "bundled": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" }, "dependencies": { "lru-cache": { "version": "4.1.5", "bundled": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "yallist": { @@ -5650,7 +5531,7 @@ "version": "1.14.1", "bundled": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "debug": { @@ -5686,14 +5567,14 @@ "version": "1.0.3", "bundled": true, "requires": { - "clone": "^1.0.2" + "clone": "1.0.4" } }, "define-properties": { "version": "1.1.3", "bundled": true, "requires": { - "object-keys": "^1.0.12" + "object-keys": "1.0.12" } }, "delayed-stream": { @@ -5716,15 +5597,15 @@ "version": "1.0.3", "bundled": true, "requires": { - "asap": "^2.0.0", - "wrappy": "1" + "asap": "2.0.6", + "wrappy": "1.0.2" } }, "dot-prop": { "version": "4.2.0", "bundled": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "1.0.1" } }, "dotenv": { @@ -5739,30 +5620,30 @@ "version": "3.6.0", "bundled": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.1", + "inherits": "2.0.4", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5772,8 +5653,8 @@ "bundled": true, "optional": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "editor": { @@ -5784,14 +5665,14 @@ "version": "0.1.12", "bundled": true, "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.23" } }, "end-of-stream": { "version": "1.4.1", "bundled": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "env-paths": { @@ -5806,27 +5687,27 @@ "version": "0.1.7", "bundled": true, "requires": { - "prr": "~1.0.1" + "prr": "1.0.1" } }, "es-abstract": { "version": "1.12.0", "bundled": true, "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" } }, "es-to-primitive": { "version": "1.2.0", "bundled": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" } }, "es6-promise": { @@ -5837,7 +5718,7 @@ "version": "5.0.0", "bundled": true, "requires": { - "es6-promise": "^4.0.3" + "es6-promise": "4.2.6" } }, "escape-string-regexp": { @@ -5848,13 +5729,13 @@ "version": "0.7.0", "bundled": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" }, "dependencies": { "get-stream": { @@ -5891,35 +5772,35 @@ "version": "2.1.0", "bundled": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "flush-write-stream": { "version": "1.0.3", "bundled": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "2.0.4", + "readable-stream": "2.3.6" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5932,37 +5813,37 @@ "version": "2.3.2", "bundled": true, "requires": { - "asynckit": "^0.4.0", + "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "mime-types": "2.1.19" } }, "from2": { "version": "2.3.0", "bundled": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "inherits": "2.0.4", + "readable-stream": "2.3.6" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5971,26 +5852,26 @@ "version": "1.2.6", "bundled": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.3" } }, "fs-vacuum": { "version": "1.2.10", "bundled": true, "requires": { - "graceful-fs": "^4.1.2", - "path-is-inside": "^1.0.1", - "rimraf": "^2.5.2" + "graceful-fs": "4.2.0", + "path-is-inside": "1.0.2", + "rimraf": "2.6.3" } }, "fs-write-stream-atomic": { "version": "1.0.10", "bundled": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "graceful-fs": "4.2.0", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" }, "dependencies": { "iferr": { @@ -6001,20 +5882,20 @@ "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -6031,14 +5912,14 @@ "version": "2.7.4", "bundled": 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" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" }, "dependencies": { "aproba": { @@ -6049,9 +5930,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } @@ -6064,14 +5945,14 @@ "version": "2.0.1", "bundled": true, "requires": { - "aproba": "^1.1.2", - "fs-vacuum": "^1.2.10", - "graceful-fs": "^4.1.11", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "path-is-inside": "^1.0.2", - "read-cmd-shim": "^1.0.1", - "slide": "^1.1.6" + "aproba": "1.2.0", + "fs-vacuum": "1.2.10", + "graceful-fs": "4.2.0", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "path-is-inside": "1.0.2", + "read-cmd-shim": "1.0.1", + "slide": "1.1.6" }, "dependencies": { "aproba": { @@ -6092,50 +5973,50 @@ "version": "4.1.0", "bundled": true, "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "getpass": { "version": "0.1.7", "bundled": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { "version": "7.1.4", "bundled": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "global-dirs": { "version": "0.1.1", "bundled": true, "requires": { - "ini": "^1.3.4" + "ini": "1.3.5" } }, "got": { "version": "6.7.1", "bundled": true, "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" }, "dependencies": { "get-stream": { @@ -6156,15 +6037,15 @@ "version": "5.1.0", "bundled": true, "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has": { "version": "1.0.3", "bundled": true, "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-flag": { @@ -6191,7 +6072,7 @@ "version": "2.1.0", "bundled": true, "requires": { - "agent-base": "4", + "agent-base": "4.2.1", "debug": "3.1.0" } }, @@ -6199,31 +6080,31 @@ "version": "1.2.0", "bundled": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" } }, "https-proxy-agent": { "version": "2.2.1", "bundled": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "4.2.1", + "debug": "3.1.0" } }, "humanize-ms": { "version": "1.2.1", "bundled": true, "requires": { - "ms": "^2.0.0" + "ms": "2.1.1" } }, "iconv-lite": { "version": "0.4.23", "bundled": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "iferr": { @@ -6234,7 +6115,7 @@ "version": "3.0.1", "bundled": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "import-lazy": { @@ -6249,8 +6130,8 @@ "version": "1.0.6", "bundled": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -6265,14 +6146,14 @@ "version": "1.10.3", "bundled": true, "requires": { - "glob": "^7.1.1", - "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "1 || 2", - "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^3.0.1", - "validate-npm-package-name": "^3.0.0" + "glob": "7.1.4", + "npm-package-arg": "6.1.0", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.13", + "semver": "5.7.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0" } }, "invert-kv": { @@ -6295,7 +6176,7 @@ "version": "1.1.0", "bundled": true, "requires": { - "ci-info": "^1.0.0" + "ci-info": "1.6.0" }, "dependencies": { "ci-info": { @@ -6308,7 +6189,7 @@ "version": "3.0.0", "bundled": true, "requires": { - "cidr-regex": "^2.0.10" + "cidr-regex": "2.0.10" } }, "is-date-object": { @@ -6319,15 +6200,15 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-installed-globally": { "version": "0.1.0", "bundled": true, "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -6342,7 +6223,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "1.0.2" } }, "is-redirect": { @@ -6353,7 +6234,7 @@ "version": "1.0.4", "bundled": true, "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-retry-allowed": { @@ -6368,7 +6249,7 @@ "version": "1.0.2", "bundled": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "1.0.0" } }, "is-typedarray": { @@ -6426,7 +6307,7 @@ "version": "3.1.0", "bundled": true, "requires": { - "package-json": "^4.0.0" + "package-json": "4.0.1" } }, "lazy-property": { @@ -6437,64 +6318,64 @@ "version": "1.0.0", "bundled": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "libcipm": { "version": "4.0.0", "bundled": true, "requires": { - "bin-links": "^1.1.2", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "graceful-fs": "^4.1.11", - "ini": "^1.3.5", - "lock-verify": "^2.0.2", - "mkdirp": "^0.5.1", - "npm-lifecycle": "^3.0.0", - "npm-logical-tree": "^1.2.1", - "npm-package-arg": "^6.1.0", - "pacote": "^9.1.0", - "read-package-json": "^2.0.13", - "rimraf": "^2.6.2", - "worker-farm": "^1.6.0" + "bin-links": "1.1.2", + "bluebird": "3.5.5", + "figgy-pudding": "3.5.1", + "find-npm-prefix": "1.0.2", + "graceful-fs": "4.2.0", + "ini": "1.3.5", + "lock-verify": "2.1.0", + "mkdirp": "0.5.1", + "npm-lifecycle": "3.0.0", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.0", + "pacote": "9.5.1", + "read-package-json": "2.0.13", + "rimraf": "2.6.3", + "worker-farm": "1.7.0" } }, "libnpm": { "version": "3.0.0", "bundled": true, "requires": { - "bin-links": "^1.1.2", - "bluebird": "^3.5.3", - "find-npm-prefix": "^1.0.2", - "libnpmaccess": "^3.0.1", - "libnpmconfig": "^1.2.1", - "libnpmhook": "^5.0.2", - "libnpmorg": "^1.0.0", - "libnpmpublish": "^1.1.0", - "libnpmsearch": "^2.0.0", - "libnpmteam": "^1.0.1", - "lock-verify": "^2.0.2", - "npm-lifecycle": "^3.0.0", - "npm-logical-tree": "^1.2.1", - "npm-package-arg": "^6.1.0", - "npm-profile": "^4.0.1", - "npm-registry-fetch": "^3.8.0", - "npmlog": "^4.1.2", - "pacote": "^9.2.3", - "read-package-json": "^2.0.13", - "stringify-package": "^1.0.0" + "bin-links": "1.1.2", + "bluebird": "3.5.5", + "find-npm-prefix": "1.0.2", + "libnpmaccess": "3.0.1", + "libnpmconfig": "1.2.1", + "libnpmhook": "5.0.2", + "libnpmorg": "1.0.0", + "libnpmpublish": "1.1.1", + "libnpmsearch": "2.0.1", + "libnpmteam": "1.0.1", + "lock-verify": "2.1.0", + "npm-lifecycle": "3.0.0", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.0", + "npm-profile": "4.0.1", + "npm-registry-fetch": "3.9.1", + "npmlog": "4.1.2", + "pacote": "9.5.1", + "read-package-json": "2.0.13", + "stringify-package": "1.0.0" } }, "libnpmaccess": { "version": "3.0.1", "bundled": true, "requires": { - "aproba": "^2.0.0", - "get-stream": "^4.0.0", - "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^3.8.0" + "aproba": "2.0.0", + "get-stream": "4.1.0", + "npm-package-arg": "6.1.0", + "npm-registry-fetch": "3.9.1" }, "dependencies": { "aproba": { @@ -6507,38 +6388,38 @@ "version": "1.2.1", "bundled": true, "requires": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" + "figgy-pudding": "3.5.1", + "find-up": "3.0.0", + "ini": "1.3.5" }, "dependencies": { "find-up": { "version": "3.0.0", "bundled": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "locate-path": { "version": "3.0.0", "bundled": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { "version": "2.2.0", "bundled": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { "version": "3.0.0", "bundled": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.0" } }, "p-try": { @@ -6551,20 +6432,20 @@ "version": "5.0.2", "bundled": true, "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "3.9.1" } }, "libnpmorg": { "version": "1.0.0", "bundled": true, "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "3.9.1" }, "dependencies": { "aproba": { @@ -6577,34 +6458,34 @@ "version": "1.1.1", "bundled": true, "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "lodash.clonedeep": "^4.5.0", - "normalize-package-data": "^2.4.0", - "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^3.8.0", - "semver": "^5.5.1", - "ssri": "^6.0.1" + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "lodash.clonedeep": "4.5.0", + "normalize-package-data": "2.5.0", + "npm-package-arg": "6.1.0", + "npm-registry-fetch": "3.9.1", + "semver": "5.7.0", + "ssri": "6.0.1" } }, "libnpmsearch": { "version": "2.0.1", "bundled": true, "requires": { - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "3.9.1" } }, "libnpmteam": { "version": "1.0.1", "bundled": true, "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "3.9.1" }, "dependencies": { "aproba": { @@ -6617,37 +6498,37 @@ "version": "10.2.0", "bundled": true, "requires": { - "dotenv": "^5.0.1", - "npm-package-arg": "^6.0.0", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.0", - "update-notifier": "^2.3.0", - "which": "^1.3.0", - "y18n": "^4.0.0", - "yargs": "^11.0.0" + "dotenv": "5.0.1", + "npm-package-arg": "6.1.0", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "update-notifier": "2.5.0", + "which": "1.3.1", + "y18n": "4.0.0", + "yargs": "11.0.0" } }, "locate-path": { "version": "2.0.0", "bundled": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" } }, "lock-verify": { "version": "2.1.0", "bundled": true, "requires": { - "npm-package-arg": "^6.1.0", - "semver": "^5.4.1" + "npm-package-arg": "6.1.0", + "semver": "5.7.0" } }, "lockfile": { "version": "1.0.4", "bundled": true, "requires": { - "signal-exit": "^3.0.2" + "signal-exit": "3.0.2" } }, "lodash._baseindexof": { @@ -6658,8 +6539,8 @@ "version": "4.6.0", "bundled": true, "requires": { - "lodash._createset": "~4.0.0", - "lodash._root": "~3.0.0" + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" } }, "lodash._bindcallback": { @@ -6674,7 +6555,7 @@ "version": "3.1.2", "bundled": true, "requires": { - "lodash._getnative": "^3.0.0" + "lodash._getnative": "3.9.1" } }, "lodash._createset": { @@ -6717,31 +6598,31 @@ "version": "5.1.1", "bundled": true, "requires": { - "yallist": "^3.0.2" + "yallist": "3.0.3" } }, "make-dir": { "version": "1.3.0", "bundled": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "make-fetch-happen": { "version": "4.0.2", "bundled": true, "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^11.3.3", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "agentkeepalive": "3.4.1", + "cacache": "11.3.3", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.1", + "ssri": "6.0.1" } }, "meant": { @@ -6752,7 +6633,7 @@ "version": "1.1.0", "bundled": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "mime-db": { @@ -6763,7 +6644,7 @@ "version": "2.1.19", "bundled": true, "requires": { - "mime-db": "~1.35.0" + "mime-db": "1.35.0" } }, "mimic-fn": { @@ -6774,7 +6655,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -6785,8 +6666,8 @@ "version": "2.3.3", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.2" }, "dependencies": { "yallist": { @@ -6799,23 +6680,23 @@ "version": "1.2.1", "bundled": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.3" } }, "mississippi": { "version": "3.0.0", "bundled": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" } }, "mkdirp": { @@ -6829,12 +6710,12 @@ "version": "1.0.1", "bundled": true, "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.3", + "run-queue": "1.0.3" }, "dependencies": { "aproba": { @@ -6855,33 +6736,33 @@ "version": "2.0.2", "bundled": true, "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.2" } }, "node-gyp": { "version": "5.0.2", "bundled": true, "requires": { - "env-paths": "^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", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^4.4.8", - "which": "1" + "env-paths": "1.0.0", + "glob": "7.1.4", + "graceful-fs": "4.2.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "request": "2.88.0", + "rimraf": "2.6.3", + "semver": "5.3.0", + "tar": "4.4.10", + "which": "1.3.1" }, "dependencies": { "nopt": { "version": "3.0.6", "bundled": true, "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "semver": { @@ -6894,25 +6775,25 @@ "version": "4.0.1", "bundled": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "normalize-package-data": { "version": "2.5.0", "bundled": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.7.1", + "resolve": "1.10.0", + "semver": "5.7.0", + "validate-npm-package-license": "3.0.4" }, "dependencies": { "resolve": { "version": "1.10.0", "bundled": true, "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } } } @@ -6921,8 +6802,8 @@ "version": "1.3.2", "bundled": true, "requires": { - "cli-table3": "^0.5.0", - "console-control-strings": "^1.1.0" + "cli-table3": "0.5.1", + "console-control-strings": "1.1.0" } }, "npm-bundled": { @@ -6937,21 +6818,21 @@ "version": "3.0.0", "bundled": true, "requires": { - "semver": "^2.3.0 || 3.x || 4 || 5" + "semver": "5.7.0" } }, "npm-lifecycle": { "version": "3.0.0", "bundled": true, "requires": { - "byline": "^5.0.0", - "graceful-fs": "^4.1.15", - "node-gyp": "^5.0.2", - "resolve-from": "^4.0.0", - "slide": "^1.1.6", + "byline": "5.0.0", + "graceful-fs": "4.2.0", + "node-gyp": "5.0.2", + "resolve-from": "4.0.0", + "slide": "1.1.6", "uid-number": "0.0.6", - "umask": "^1.1.0", - "which": "^1.3.1" + "umask": "1.1.0", + "which": "1.3.1" } }, "npm-logical-tree": { @@ -6962,65 +6843,65 @@ "version": "6.1.0", "bundled": true, "requires": { - "hosted-git-info": "^2.6.0", - "osenv": "^0.1.5", - "semver": "^5.5.0", - "validate-npm-package-name": "^3.0.0" + "hosted-git-info": "2.7.1", + "osenv": "0.1.5", + "semver": "5.7.0", + "validate-npm-package-name": "3.0.0" } }, "npm-packlist": { "version": "1.4.4", "bundled": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.6" } }, "npm-pick-manifest": { "version": "2.2.3", "bundled": true, "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "figgy-pudding": "3.5.1", + "npm-package-arg": "6.1.0", + "semver": "5.7.0" } }, "npm-profile": { "version": "4.0.1", "bundled": true, "requires": { - "aproba": "^1.1.2 || 2", - "figgy-pudding": "^3.4.1", - "npm-registry-fetch": "^3.8.0" + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "npm-registry-fetch": "3.9.1" } }, "npm-registry-fetch": { "version": "3.9.1", "bundled": true, "requires": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^4.0.2", - "npm-package-arg": "^6.1.0" + "JSONStream": "1.3.5", + "bluebird": "3.5.5", + "figgy-pudding": "3.5.1", + "lru-cache": "5.1.1", + "make-fetch-happen": "4.0.2", + "npm-package-arg": "6.1.0" }, "dependencies": { "make-fetch-happen": { "version": "4.0.2", "bundled": true, "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^11.3.3", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "agentkeepalive": "3.4.1", + "cacache": "11.3.3", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.1", + "ssri": "6.0.1" } } } @@ -7029,7 +6910,7 @@ "version": "2.0.2", "bundled": true, "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" } }, "npm-user-validate": { @@ -7040,10 +6921,10 @@ "version": "4.1.2", "bundled": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -7066,15 +6947,15 @@ "version": "2.0.3", "bundled": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "1.1.3", + "es-abstract": "1.12.0" } }, "once": { "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "opener": { @@ -7089,9 +6970,9 @@ "version": "2.1.0", "bundled": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, "os-tmpdir": { @@ -7102,8 +6983,8 @@ "version": "0.1.5", "bundled": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "p-finally": { @@ -7114,14 +6995,14 @@ "version": "1.2.0", "bundled": true, "requires": { - "p-try": "^1.0.0" + "p-try": "1.0.0" } }, "p-locate": { "version": "2.0.0", "bundled": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.2.0" } }, "p-try": { @@ -7132,51 +7013,51 @@ "version": "4.0.1", "bundled": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.7.0" } }, "pacote": { "version": "9.5.1", "bundled": true, "requires": { - "bluebird": "^3.5.3", - "cacache": "^11.3.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^4.0.1", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.2.3", - "npm-registry-fetch": "^3.8.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.8", - "unique-filename": "^1.1.1", - "which": "^1.3.1" + "bluebird": "3.5.5", + "cacache": "11.3.3", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "glob": "7.1.4", + "lru-cache": "5.1.1", + "make-fetch-happen": "4.0.2", + "minimatch": "3.0.4", + "minipass": "2.3.5", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.5.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.4.4", + "npm-pick-manifest": "2.2.3", + "npm-registry-fetch": "3.9.1", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.1", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "semver": "5.7.0", + "ssri": "6.0.1", + "tar": "4.4.10", + "unique-filename": "1.1.1", + "which": "1.3.1" }, "dependencies": { "minipass": { "version": "2.3.5", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } } } @@ -7185,29 +7066,29 @@ "version": "1.1.0", "bundled": true, "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "cyclist": "0.2.2", + "inherits": "2.0.4", + "readable-stream": "2.3.6" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -7256,8 +7137,8 @@ "version": "1.1.1", "bundled": true, "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" + "err-code": "1.1.2", + "retry": "0.10.1" }, "dependencies": { "retry": { @@ -7270,7 +7151,7 @@ "version": "0.3.0", "bundled": true, "requires": { - "read": "1" + "read": "1.0.7" } }, "proto-list": { @@ -7281,7 +7162,7 @@ "version": "5.0.1", "bundled": true, "requires": { - "genfun": "^5.0.0" + "genfun": "5.0.0" } }, "prr": { @@ -7300,25 +7181,25 @@ "version": "3.0.0", "bundled": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, "pumpify": { "version": "1.5.1", "bundled": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "duplexify": "3.6.0", + "inherits": "2.0.4", + "pump": "2.0.1" }, "dependencies": { "pump": { "version": "2.0.1", "bundled": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } } } @@ -7339,9 +7220,9 @@ "version": "6.8.1", "bundled": true, "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "decode-uri-component": "0.2.0", + "split-on-first": "1.1.0", + "strict-uri-encode": "2.0.0" } }, "qw": { @@ -7352,10 +7233,10 @@ "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -7368,107 +7249,107 @@ "version": "1.0.7", "bundled": true, "requires": { - "mute-stream": "~0.0.4" + "mute-stream": "0.0.7" } }, "read-cmd-shim": { "version": "1.0.1", "bundled": true, "requires": { - "graceful-fs": "^4.1.2" + "graceful-fs": "4.2.0" } }, "read-installed": { "version": "4.0.3", "bundled": true, "requires": { - "debuglog": "^1.0.1", - "graceful-fs": "^4.1.2", - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "slide": "~1.1.3", - "util-extend": "^1.0.1" + "debuglog": "1.0.1", + "graceful-fs": "4.2.0", + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.1.0", + "semver": "5.7.0", + "slide": "1.1.6", + "util-extend": "1.0.3" } }, "read-package-json": { "version": "2.0.13", "bundled": true, "requires": { - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "json-parse-better-errors": "^1.0.1", - "normalize-package-data": "^2.0.0", - "slash": "^1.0.0" + "glob": "7.1.4", + "graceful-fs": "4.2.0", + "json-parse-better-errors": "1.0.2", + "normalize-package-data": "2.5.0", + "slash": "1.0.0" } }, "read-package-tree": { "version": "5.3.1", "bundled": true, "requires": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.1.0", + "util-promisify": "2.1.0" } }, "readable-stream": { "version": "3.4.0", "bundled": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "2.0.4", + "string_decoder": "1.2.0", + "util-deprecate": "1.0.2" } }, "readdir-scoped-modules": { "version": "1.1.0", "bundled": true, "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.2.0", + "once": "1.4.0" } }, "registry-auth-token": { "version": "3.3.2", "bundled": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { "version": "3.1.0", "bundled": true, "requires": { - "rc": "^1.0.1" + "rc": "1.2.7" } }, "request": { "version": "2.88.0", "bundled": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" } }, "require-directory": { @@ -7491,14 +7372,14 @@ "version": "2.6.3", "bundled": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.4" } }, "run-queue": { "version": "1.0.3", "bundled": true, "requires": { - "aproba": "^1.1.1" + "aproba": "1.2.0" }, "dependencies": { "aproba": { @@ -7523,7 +7404,7 @@ "version": "2.1.0", "bundled": true, "requires": { - "semver": "^5.0.3" + "semver": "5.7.0" } }, "set-blocking": { @@ -7534,14 +7415,14 @@ "version": "3.0.0", "bundled": true, "requires": { - "graceful-fs": "^4.1.2" + "graceful-fs": "4.2.0" } }, "shebang-command": { "version": "1.2.0", "bundled": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -7568,16 +7449,16 @@ "version": "2.2.0", "bundled": true, "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.0.1" + "ip": "1.1.5", + "smart-buffer": "4.0.1" } }, "socks-proxy-agent": { "version": "4.0.1", "bundled": true, "requires": { - "agent-base": "~4.2.0", - "socks": "~2.2.0" + "agent-base": "4.2.1", + "socks": "2.2.0" } }, "sorted-object": { @@ -7588,16 +7469,16 @@ "version": "2.1.3", "bundled": true, "requires": { - "from2": "^1.3.0", - "stream-iterate": "^1.1.0" + "from2": "1.3.0", + "stream-iterate": "1.2.0" }, "dependencies": { "from2": { "version": "1.3.0", "bundled": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.10" + "inherits": "2.0.4", + "readable-stream": "1.1.14" } }, "isarray": { @@ -7608,10 +7489,10 @@ "version": "1.1.14", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.4", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "string_decoder": { @@ -7624,8 +7505,8 @@ "version": "3.0.0", "bundled": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.3" } }, "spdx-exceptions": { @@ -7636,8 +7517,8 @@ "version": "3.0.0", "bundled": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.3" } }, "spdx-license-ids": { @@ -7652,58 +7533,58 @@ "version": "1.14.2", "bundled": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "ssri": { "version": "6.0.1", "bundled": true, "requires": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "3.5.1" } }, "stream-each": { "version": "1.2.2", "bundled": true, "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" } }, "stream-iterate": { "version": "1.2.0", "bundled": true, "requires": { - "readable-stream": "^2.1.5", - "stream-shift": "^1.0.0" + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -7720,8 +7601,8 @@ "version": "2.1.1", "bundled": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "ansi-regex": { @@ -7736,7 +7617,7 @@ "version": "4.0.0", "bundled": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -7745,7 +7626,7 @@ "version": "1.2.0", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "stringify-package": { @@ -7756,7 +7637,7 @@ "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-eof": { @@ -7771,28 +7652,28 @@ "version": "5.4.0", "bundled": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "tar": { "version": "4.4.10", "bundled": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.5", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "1.1.2", + "fs-minipass": "1.2.6", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" }, "dependencies": { "minipass": { "version": "2.3.5", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "yallist": { @@ -7805,7 +7686,7 @@ "version": "1.2.0", "bundled": true, "requires": { - "execa": "^0.7.0" + "execa": "0.7.0" } }, "text-table": { @@ -7820,28 +7701,28 @@ "version": "2.0.3", "bundled": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.6", + "xtend": "4.0.1" }, "dependencies": { "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -7858,15 +7739,15 @@ "version": "2.4.3", "bundled": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "1.1.29", + "punycode": "1.4.1" } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -7890,21 +7771,21 @@ "version": "1.1.1", "bundled": true, "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "2.0.0" } }, "unique-slug": { "version": "2.0.0", "bundled": true, "requires": { - "imurmurhash": "^0.1.4" + "imurmurhash": "0.1.4" } }, "unique-string": { "version": "1.0.0", "bundled": true, "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "1.0.0" } }, "unpipe": { @@ -7919,23 +7800,23 @@ "version": "2.5.0", "bundled": true, "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" } }, "url-parse-lax": { "version": "1.0.0", "bundled": true, "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } }, "util-deprecate": { @@ -7950,7 +7831,7 @@ "version": "2.1.0", "bundled": true, "requires": { - "object.getownpropertydescriptors": "^2.0.3" + "object.getownpropertydescriptors": "2.0.3" } }, "uuid": { @@ -7961,38 +7842,38 @@ "version": "3.0.4", "bundled": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "validate-npm-package-name": { "version": "3.0.0", "bundled": true, "requires": { - "builtins": "^1.0.3" + "builtins": "1.0.3" } }, "verror": { "version": "1.10.0", "bundled": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "wcwidth": { "version": "1.0.1", "bundled": true, "requires": { - "defaults": "^1.0.3" + "defaults": "1.0.3" } }, "which": { "version": "1.3.1", "bundled": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -8003,16 +7884,16 @@ "version": "1.1.2", "bundled": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" }, "dependencies": { "string-width": { "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } @@ -8021,31 +7902,31 @@ "version": "2.0.0", "bundled": true, "requires": { - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "worker-farm": { "version": "1.7.0", "bundled": true, "requires": { - "errno": "~0.1.7" + "errno": "0.1.7" } }, "wrap-ansi": { "version": "2.1.0", "bundled": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "string-width": { "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } @@ -8058,9 +7939,9 @@ "version": "2.4.3", "bundled": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.2.0", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } }, "xdg-basedir": { @@ -8083,18 +7964,18 @@ "version": "11.0.0", "bundled": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" }, "dependencies": { "y18n": { @@ -8107,7 +7988,7 @@ "version": "9.0.2", "bundled": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } } } @@ -8117,7 +7998,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" } }, "number-is-nan": { @@ -8147,9 +8028,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -8157,7 +8038,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "kind-of": { @@ -8165,7 +8046,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8185,7 +8066,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" } }, "object.getownpropertydescriptors": { @@ -8194,8 +8075,8 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "1.1.3", + "es-abstract": "1.13.0" } }, "object.pick": { @@ -8203,7 +8084,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "on-finished": { @@ -8224,7 +8105,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "one-time": { @@ -8237,7 +8118,7 @@ "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", "requires": { - "format-util": "^1.0.3" + "format-util": "1.0.3" } }, "openapi-schema-validation": { @@ -8246,7 +8127,7 @@ "integrity": "sha512-K8LqLpkUf2S04p2Nphq9L+3bGFh/kJypxIG2NVGKX0ffzT4NQI9HirhiY6Iurfej9lCu7y4Ndm4tv+lm86Ck7w==", "requires": { "jsonschema": "1.2.4", - "jsonschema-draft4": "^1.0.0", + "jsonschema-draft4": "1.0.0", "swagger-schema-official": "2.0.0-bab6bed" } }, @@ -8256,8 +8137,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { @@ -8274,12 +8155,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { "wordwrap": { @@ -8296,9 +8177,9 @@ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "execa": "1.0.0", + "lcid": "2.0.0", + "mem": "4.3.0" }, "dependencies": { "cross-spawn": { @@ -8307,11 +8188,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "execa": { @@ -8320,13 +8201,13 @@ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "get-stream": { @@ -8335,7 +8216,7 @@ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } } } @@ -8352,7 +8233,7 @@ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "p-reduce": "1.0.0" } }, "p-finally": { @@ -8372,7 +8253,7 @@ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -8381,7 +8262,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.0" } }, "p-reduce": { @@ -8401,10 +8282,10 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "6.7.1", + "registry-auth-token": "3.4.0", + "registry-url": "3.1.0", + "semver": "5.7.0" } }, "parse-json": { @@ -8413,8 +8294,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" } }, "parse5": { @@ -8428,7 +8309,7 @@ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseuri": { @@ -8436,7 +8317,7 @@ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseurl": { @@ -8492,7 +8373,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "pend": { @@ -8512,15 +8393,15 @@ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", "optional": true, "requires": { - "es6-promise": "^4.0.3", - "extract-zip": "^1.6.5", - "fs-extra": "^1.0.0", - "hasha": "^2.2.0", - "kew": "^0.7.0", - "progress": "^1.1.8", - "request": "^2.81.0", - "request-progress": "^2.0.1", - "which": "^1.2.10" + "es6-promise": "4.2.6", + "extract-zip": "1.6.7", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.88.0", + "request-progress": "2.0.1", + "which": "1.3.1" } }, "pify": { @@ -8540,7 +8421,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "optional": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pirates": { @@ -8549,7 +8430,7 @@ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "node-modules-regexp": "1.0.0" } }, "pkg-dir": { @@ -8558,7 +8439,7 @@ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "3.0.0" } }, "platform": { @@ -8594,10 +8475,10 @@ "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.7.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.8.6" }, "dependencies": { "ansi-regex": { @@ -8625,8 +8506,8 @@ "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", "dev": true, "requires": { - "kleur": "^3.0.2", - "sisteransi": "^1.0.0" + "kleur": "3.0.3", + "sisteransi": "1.0.0" } }, "proxy-addr": { @@ -8634,7 +8515,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.8.0" } }, @@ -8659,8 +8540,8 @@ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, "punycode": { @@ -8694,10 +8575,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" } }, "react-is": { @@ -8712,9 +8593,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "load-json-file": "4.0.0", + "normalize-package-data": "2.5.0", + "path-type": "3.0.0" } }, "read-pkg-up": { @@ -8723,8 +8604,8 @@ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "find-up": "3.0.0", + "read-pkg": "3.0.0" } }, "readable-stream": { @@ -8732,13 +8613,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -8746,9 +8627,9 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "graceful-fs": "4.1.15", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" } }, "realpath-native": { @@ -8757,7 +8638,7 @@ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "dev": true, "requires": { - "util.promisify": "^1.0.0" + "util.promisify": "1.0.0" } }, "referrer-policy": { @@ -8770,22 +8651,17 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, - "regexp-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", - "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" - }, "registry-auth-token": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "1.2.8", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -8793,7 +8669,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "^1.0.1" + "rc": "1.2.8" } }, "remove-trailing-separator": { @@ -8816,26 +8692,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.22", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" }, "dependencies": { "punycode": { @@ -8848,8 +8724,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "1.1.31", + "punycode": "1.4.1" } } } @@ -8860,7 +8736,7 @@ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", "optional": true, "requires": { - "throttleit": "^1.0.0" + "throttleit": "1.0.0" } }, "request-promise-core": { @@ -8869,7 +8745,7 @@ "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "4.17.11" } }, "request-promise-native": { @@ -8879,8 +8755,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "stealthy-require": "1.1.1", + "tough-cookie": "2.5.0" } }, "require-directory": { @@ -8895,29 +8771,13 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - }, - "dependencies": { - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - } - } - }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } }, "resolve-cwd": { @@ -8926,7 +8786,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" } }, "resolve-from": { @@ -8951,7 +8811,7 @@ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.3" } }, "rsvp": { @@ -8970,7 +8830,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { @@ -8984,15 +8844,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.3", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.2", + "execa": "1.0.0", + "fb-watchman": "2.0.0", + "micromatch": "3.1.10", + "minimist": "1.2.0", + "walker": "1.0.7" }, "dependencies": { "cross-spawn": { @@ -9001,11 +8861,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "execa": { @@ -9014,13 +8874,13 @@ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "get-stream": { @@ -9029,20 +8889,11 @@ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } } } }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -9058,7 +8909,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "semver": "^5.0.3" + "semver": "5.7.0" } }, "send": { @@ -9067,18 +8918,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" } }, "serve-static": { @@ -9086,9 +8937,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -9103,10 +8954,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -9114,7 +8965,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9129,7 +8980,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -9143,11 +8994,6 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, - "sift": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", - "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -9158,7 +9004,7 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { - "is-arrayish": "^0.3.1" + "is-arrayish": "0.3.2" } }, "sisteransi": { @@ -9173,24 +9019,19 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" }, "dependencies": { "define-property": { @@ -9198,7 +9039,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9206,7 +9047,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9216,9 +9057,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -9226,7 +9067,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -9234,7 +9075,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -9242,7 +9083,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -9250,9 +9091,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } @@ -9262,7 +9103,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9270,7 +9111,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9280,12 +9121,12 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", "requires": { - "debug": "~4.1.0", - "engine.io": "~3.3.1", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", + "debug": "4.1.1", + "engine.io": "3.3.2", + "has-binary2": "1.0.3", + "socket.io-adapter": "1.1.1", "socket.io-client": "2.2.0", - "socket.io-parser": "~3.3.0" + "socket.io-parser": "3.3.0" }, "dependencies": { "debug": { @@ -9293,7 +9134,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -9317,15 +9158,15 @@ "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.3.1", - "has-binary2": "~1.0.2", + "debug": "3.1.0", + "engine.io-client": "3.3.2", + "has-binary2": "1.0.3", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", + "socket.io-parser": "3.3.0", "to-array": "0.1.4" }, "dependencies": { @@ -9345,7 +9186,7 @@ "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", "requires": { "component-emitter": "1.2.1", - "debug": "~3.1.0", + "debug": "3.1.0", "isarray": "2.0.1" }, "dependencies": { @@ -9379,11 +9220,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { @@ -9392,8 +9233,8 @@ "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "buffer-from": "1.1.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -9409,23 +9250,14 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.4" } }, "spdx-exceptions": { @@ -9440,8 +9272,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.4" } }, "spdx-license-ids": { @@ -9455,7 +9287,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -9468,15 +9300,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "stack-trace": { @@ -9495,8 +9327,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -9504,7 +9336,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -9526,8 +9358,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" } }, "string-width": { @@ -9535,8 +9367,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "string_decoder": { @@ -9544,7 +9376,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -9552,7 +9384,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } }, "strip-bom": { @@ -9576,7 +9408,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "swagger-jsdoc": { @@ -9596,8 +9428,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } } } @@ -9612,14 +9444,14 @@ "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-5.0.5.tgz", "integrity": "sha512-6UiaUT9nH5nEzvxDvwZpTfhCs2VOwxrP9neZ83QpsTA3mMGHdun4x8vSXiqjaGQzLh2LG8ND5TRhmVNG1hRUqA==", "requires": { - "call-me-maybe": "^1.0.1", - "debug": "^3.1.0", - "json-schema-ref-parser": "^5.1.3", - "ono": "^4.0.6", - "openapi-schema-validation": "^0.4.2", - "swagger-methods": "^1.0.4", + "call-me-maybe": "1.0.1", + "debug": "3.2.6", + "json-schema-ref-parser": "5.1.3", + "ono": "4.0.11", + "openapi-schema-validation": "0.4.2", + "swagger-methods": "1.0.8", "swagger-schema-official": "2.0.0-bab6bed", - "z-schema": "^3.23.0" + "z-schema": "3.25.1" }, "dependencies": { "debug": { @@ -9627,7 +9459,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -9652,7 +9484,7 @@ "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.0.2.tgz", "integrity": "sha512-XZtXI2+SKT3fgvJSGg4P7Dtmkzr50uoSb09IxbUWmjL538TIGRMZtfdEkjZEEq44xgGNAxMryzBEUdUnkXr8dA==", "requires": { - "swagger-ui-dist": "^3.18.1" + "swagger-ui-dist": "3.22.0" } }, "symbol-tree": { @@ -9666,7 +9498,7 @@ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { - "execa": "^0.7.0" + "execa": "0.7.0" } }, "test-exclude": { @@ -9675,10 +9507,10 @@ "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", "dev": true, "requires": { - "arrify": "^1.0.1", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^1.0.1" + "arrify": "1.0.1", + "minimatch": "3.0.4", + "read-pkg-up": "4.0.0", + "require-main-filename": "1.0.1" } }, "text-hex": { @@ -9725,7 +9557,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9733,7 +9565,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9743,10 +9575,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -9754,8 +9586,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } }, "touch": { @@ -9763,7 +9595,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "requires": { - "nopt": "~1.0.10" + "nopt": "1.0.10" } }, "tough-cookie": { @@ -9772,8 +9604,8 @@ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "1.1.31", + "punycode": "2.1.1" } }, "tr46": { @@ -9782,7 +9614,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "trim-right": { @@ -9801,7 +9633,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -9815,7 +9647,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "type-is": { @@ -9824,7 +9656,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.22" } }, "typedarray": { @@ -9840,8 +9672,8 @@ "dev": true, "optional": true, "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" + "commander": "2.20.0", + "source-map": "0.6.1" }, "dependencies": { "commander": { @@ -9865,7 +9697,7 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "requires": { - "debug": "^2.2.0" + "debug": "2.6.9" } }, "union-value": { @@ -9873,10 +9705,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { @@ -9884,7 +9716,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { @@ -9892,10 +9724,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -9905,7 +9737,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "1.0.0" } }, "unpipe": { @@ -9918,8 +9750,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -9927,9 +9759,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -9964,16 +9796,16 @@ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "boxen": "1.3.0", + "chalk": "2.4.2", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" } }, "uri-js": { @@ -9981,7 +9813,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "urix": { @@ -9994,7 +9826,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } }, "url-template": { @@ -10018,8 +9850,8 @@ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "1.1.3", + "object.getownpropertydescriptors": "2.0.3" } }, "utils-merge": { @@ -10038,8 +9870,8 @@ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" } }, "validator": { @@ -10057,9 +9889,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "w3c-hr-time": { @@ -10068,7 +9900,7 @@ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "0.1.3" } }, "walker": { @@ -10077,7 +9909,7 @@ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.11" } }, "webidl-conversions": { @@ -10101,7 +9933,7 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } } } @@ -10118,9 +9950,9 @@ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } }, "which": { @@ -10128,7 +9960,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -10142,7 +9974,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "requires": { - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "winston": { @@ -10150,15 +9982,15 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", "requires": { - "async": "^2.6.1", - "diagnostics": "^1.1.1", - "is-stream": "^1.1.0", - "logform": "^2.1.1", + "async": "2.6.2", + "diagnostics": "1.1.1", + "is-stream": "1.1.0", + "logform": "2.1.2", "one-time": "0.0.4", - "readable-stream": "^3.1.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.3.0" + "readable-stream": "3.3.0", + "stack-trace": "0.0.10", + "triple-beam": "1.3.0", + "winston-transport": "4.3.0" }, "dependencies": { "readable-stream": { @@ -10166,9 +9998,9 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "2.0.3", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } } } @@ -10178,9 +10010,9 @@ "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.4.tgz", "integrity": "sha512-mMEfFsSm6GmkFF+f4/0UJtG4N1vSaczGmXLVJYmS/+u2zUaIPcw2ZRuwUg2TvVBjswgiraN+vNnAG8z4fRUZ4w==", "requires": { - "cycle": "~1.0.3", - "logform": "^1.6.0", - "triple-beam": "^1.2.0" + "cycle": "1.0.3", + "logform": "1.10.0", + "triple-beam": "1.3.0" }, "dependencies": { "logform": { @@ -10188,11 +10020,11 @@ "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", - "ms": "^2.1.1", - "triple-beam": "^1.2.0" + "colors": "1.3.3", + "fast-safe-stringify": "2.0.6", + "fecha": "2.3.3", + "ms": "2.1.1", + "triple-beam": "1.3.0" } }, "ms": { @@ -10207,12 +10039,12 @@ "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.8.0.tgz", "integrity": "sha512-k3usQWe2Iqudi4Ys/tAiGJODSXvqMF+esOIiMJRpWNYnrbuAXBccpaODttDP3GiGVx3H8tE/pS8K3CvkNMqXiw==", "requires": { - "file-stream-rotator": "^0.4.1", - "object-hash": "^1.3.0", - "semver": "^5.6.0", - "triple-beam": "^1.3.0", - "winston-compat": "^0.1.4", - "winston-transport": "^4.2.0" + "file-stream-rotator": "0.4.1", + "object-hash": "1.3.1", + "semver": "5.7.0", + "triple-beam": "1.3.0", + "winston-compat": "0.1.4", + "winston-transport": "4.3.0" } }, "winston-transport": { @@ -10220,8 +10052,8 @@ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", "requires": { - "readable-stream": "^2.3.6", - "triple-beam": "^1.2.0" + "readable-stream": "2.3.6", + "triple-beam": "1.3.0" } }, "wordwrap": { @@ -10236,8 +10068,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "ansi-regex": { @@ -10252,7 +10084,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -10261,9 +10093,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -10272,7 +10104,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -10287,9 +10119,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.1.15", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } }, "ws": { @@ -10297,7 +10129,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "1.0.0" } }, "x-xss-protection": { @@ -10321,8 +10153,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "sax": "1.2.4", + "xmlbuilder": "9.0.7" } }, "xmlbuilder": { @@ -10352,18 +10184,18 @@ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "3.0.0", + "get-caller-file": "1.0.3", + "os-locale": "3.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "11.1.1" } }, "yargs-parser": { @@ -10372,8 +10204,8 @@ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" }, "dependencies": { "camelcase": { @@ -10390,7 +10222,7 @@ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "optional": true, "requires": { - "fd-slicer": "~1.0.1" + "fd-slicer": "1.0.1" } }, "yeast": { @@ -10403,11 +10235,11 @@ "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", "requires": { - "commander": "^2.7.1", - "core-js": "^2.5.7", - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^10.0.0" + "commander": "2.17.1", + "core-js": "2.6.9", + "lodash.get": "4.4.2", + "lodash.isequal": "4.5.0", + "validator": "10.11.0" } } } diff --git a/socioboard-api/user/package.json b/socioboard-api/user/package.json index 6d77ab8e7..15477fb3e 100644 --- a/socioboard-api/user/package.json +++ b/socioboard-api/user/package.json @@ -26,7 +26,6 @@ "html-pdf": "^2.2.0", "lodash": "^4.17.11", "moment": "^2.24.0", - "mongoose": "^5.6.12", "morgan": "^1.9.1", "mustache": "^3.0.1", "node-schedule": "^1.3.2", diff --git a/socioboard-api/user/startup/swagger.js b/socioboard-api/user/startup/swagger.js index 97fb7ab3c..63bc54f5a 100644 --- a/socioboard-api/user/startup/swagger.js +++ b/socioboard-api/user/startup/swagger.js @@ -31,8 +31,8 @@ class Swagger { `${rootDir}/core/authorized/routes.js`, `${rootDir}/core/team/routes.js`, `${rootDir}/core/profiles/routes.js`, - `${rootDir}/core/payments/routes.js`, - `${rootDir}/core/admin/adminRoutes.js`, + `${rootDir}/core/payments/routes.js`, + `${rootDir}/core/admin/adminRoutes.js`, `${rootDir}/core/appinsights/routes.js` ], diff --git a/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryController.php b/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryController.php index 447528611..f46ae1b9e 100644 --- a/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryController.php +++ b/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryController.php @@ -560,7 +560,8 @@ public function boardView(Request $request){ 'boardName' => $request->boardName, 'key' => $request->key, ]; - return view('Discovery::boardMe.boardView')->with(['data'=>$data, "socialAccount" => Session::get('currentTeam')['SocialAccount']]); + return view('Discovery::boardMe.boardView')->with(['data'=>$data, "socialAccount" => Session::get('currentTeam')['SocialAccount'], + "pinterestBoards" => Session::get('pinterestBoards')]); } diff --git a/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryPublishController.php b/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryPublishController.php index 2d82bc6af..6d2562743 100644 --- a/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryPublishController.php +++ b/socioboard-web-php/app/Modules/Discovery/Controllers/DiscoveryPublishController.php @@ -152,7 +152,7 @@ public function publishdatadiscovery(Request $request) $result['message']="For posting on boards image, message and link are necessary"; return ($result); } - if(!filter_var($request->link, FILTER_VALIDATE_URL)){ + if($request->link != null && !filter_var($request->link, FILTER_VALIDATE_URL)){ $result['code']=400; $result['status']="failure"; $result['message']="Provide valid URL"; @@ -200,7 +200,6 @@ public function publishdatadiscovery(Request $request) } } - $publishData=array( "postType"=>$postType, "postStatus"=>$request->postStatus, @@ -211,9 +210,7 @@ public function publishdatadiscovery(Request $request) "pinBoards"=> $pinboardata ); - $publishresponse = $helper->apiCallPostPublish($publishData,"publish/publishPosts?teamId=".$team); - if($publishresponse['statusCode'] == 200 && $publishresponse['data']['code']==200 && $publishresponse['data']['status']=="success"){ $result['code']=200; $result['message']=$publishresponse['data']['message']; diff --git a/socioboard-web-php/app/Modules/Discovery/Views/boardMe/LoadPage.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/boardMe/LoadPage.blade.php index b20bfe7d1..cf1258ef1 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/boardMe/LoadPage.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/boardMe/LoadPage.blade.php @@ -180,6 +180,7 @@ class="close" var newKeyword = $('#boardKeyword').val(); var oldKeyword = $('#oldKeyword').val(); var boardId = $('#boardId').val(); + console.log(boardId); var board = $('#boardName').val(); var form = document.getElementById('boardEdit'); var formData = new FormData(form); diff --git a/socioboard-web-php/app/Modules/Discovery/Views/boardMe/boardViewJS.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/boardMe/boardViewJS.blade.php index 7183ed2fa..ecf4a951c 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/boardMe/boardViewJS.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/boardMe/boardViewJS.blade.php @@ -1,6 +1,11 @@ -@endsection \ No newline at end of file +@endsection diff --git a/socioboard-web-php/app/Modules/Discovery/Views/flickr.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/flickr.blade.php index 45c608053..07326989b 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/flickr.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/flickr.blade.php @@ -108,6 +108,7 @@ appenddata += "
  • "; }else if(value.indexOf(".mp4") >= 1){ + document.getElementById("pills-pinterest-profile-tab").style.display = "none"; appenddata += "
  • "; }else{ @@ -152,9 +153,15 @@ function post(postStatus){ var formData = new FormData(form); var selected = []; + $('#checkboxes input:checked').each(function() { selected.push($(this).attr('name')); }); + var selectedBoards = []; + $('#boardsCheckbox input:checked').each(function() { + selectedBoards.push($(this).attr('name')); + }); + formData.append('selectedBoards',selectedBoards); formData.append('checked',selected); formData.append('imagevideos',result); formData.append('postStatus',postStatus); @@ -334,7 +341,6 @@ function getFlickr(keyword,sort,pageId,search){ if ($(window).scrollTop() + $(window).height() >= $("#flickr").height() && action == 'inactive') { // $('#load_popular_message').html(""); action = 'active'; - console.log(data,sortBy); setTimeout(function () { getFlickr(data, sortBy,pageId1,0); }, 1000); @@ -344,4 +350,4 @@ function getFlickr(keyword,sort,pageId,search){ -@endsection \ No newline at end of file +@endsection diff --git a/socioboard-web-php/app/Modules/Discovery/Views/giphy.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/giphy.blade.php index c768d13e5..82db7c583 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/giphy.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/giphy.blade.php @@ -97,7 +97,6 @@ $(document).ready(function(){ $(document).on('click','.resocio', function(){ - document.getElementById("pills-pinterest-profile-tab").style.display = "none"; $('.clearimag').remove(); $('.post-thumb').remove(); var appenddata=""; @@ -161,6 +160,11 @@ function post(postStatus){ $('#checkboxes input:checked').each(function() { selected.push($(this).attr('name')); }); + var selectedBoards = []; + $('#boardsCheckbox input:checked').each(function() { + selectedBoards.push($(this).attr('name')); + }); + formData.append('selectedBoards',selectedBoards); formData.append('checked',selected); formData.append('imagevideos',result); formData.append('postStatus',postStatus); diff --git a/socioboard-web-php/app/Modules/Discovery/Views/imgur.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/imgur.blade.php index 4eac825f2..945ddc4fb 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/imgur.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/imgur.blade.php @@ -134,7 +134,6 @@ $(document).ready(function(){ $(document).on('click','.resocio', function(){ - document.getElementById("pills-pinterest-profile-tab").style.display = "none"; $('.clearimag').remove(); $('.post-thumb').remove(); var appenddata=""; @@ -142,7 +141,7 @@ msg = $(this).closest('.card').find('.messageSocio').text(); var image = $(this).closest('.card').find('img').attr('src'); val = $(this).closest('.card').find('input').val(); - result = val.split(',') + result = val.split(','); console.log(result,image,val,msg); $.each(result, function(key,value) { if(value.indexOf(".jpg") >= 1){ @@ -198,12 +197,18 @@ function post(postStatus){ var formData = new FormData(form); var selected = []; + var selectedBoards = []; $('#checkboxes input:checked').each(function() { selected.push($(this).attr('name')); }); + $('#boardsCheckbox input:checked').each(function() { + selectedBoards.push($(this).attr('name')); + }); formData.append('checked',selected); formData.append('imagevideos',result); formData.append('postStatus',postStatus); + formData.append('selectedBoards',selectedBoards); + $.ajax({ url: "/publish-data-discovery", diff --git a/socioboard-web-php/app/Modules/Discovery/Views/incPostModal.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/incPostModal.blade.php index 5923a852d..33d28a6eb 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/incPostModal.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/incPostModal.blade.php @@ -23,27 +23,27 @@
    -
    - Note: Add only 4 items at a single time. -
      -
    • - - - - -
    • -
    • - - - - -
    • -
    -
    + {{--
    --}} + {{--Note: Add only 4 items at a single time.--}} + {{--
      --}} + {{--
    • --}} + {{----}} + {{----}} + {{----}} + {{----}} + {{--
    • --}} + {{--
    • --}} + {{----}} + {{----}} + {{----}} + {{----}} + {{--
    • --}} + {{--
    --}} + {{--
    --}} -
    + {{--
    --}}
      {{--
    • --}} diff --git a/socioboard-web-php/app/Modules/Discovery/Views/pixabay.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/pixabay.blade.php index d97e83e81..fbc9fd16e 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/pixabay.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/pixabay.blade.php @@ -116,7 +116,6 @@ $(document).ready(function(){ $(document).on('click','.resocio', function(){ - document.getElementById("pills-pinterest-profile-tab").style.display = "none"; $('.clearimag').remove(); $('.post-thumb').remove(); var appenddata=""; @@ -184,6 +183,11 @@ function post(postStatus){ $('#checkboxes input:checked').each(function() { selected.push($(this).attr('name')); }); + var selectedBoards = []; + $('#boardsCheckbox input:checked').each(function() { + selectedBoards.push($(this).attr('name')); + }); + formData.append('selectedBoards',selectedBoards); formData.append('checked',selected); formData.append('imagevideos',result); formData.append('postStatus',postStatus); diff --git a/socioboard-web-php/app/Modules/Discovery/Views/twitter.blade.php b/socioboard-web-php/app/Modules/Discovery/Views/twitter.blade.php index 7254fe2dd..6ef4fc5ce 100644 --- a/socioboard-web-php/app/Modules/Discovery/Views/twitter.blade.php +++ b/socioboard-web-php/app/Modules/Discovery/Views/twitter.blade.php @@ -177,8 +177,10 @@ class="fas fa-cog text-primary float-right"> // var image = $('a').hasClass('MediaCard-borderOverlay').show(); // val = $(this).closest('.card').find('input').val(); // result = val.split(','); - if (image !== '') - appenddata += "
    • "; $('#normal_post_area').data("emojioneArea").setText(msg); @@ -217,6 +219,11 @@ function post(postStatus) { $('#checkboxes input:checked').each(function () { selected.push($(this).attr('name')); }); + var selectedBoards = []; + $('#boardsCheckbox input:checked').each(function() { + selectedBoards.push($(this).attr('name')); + }); + formData.append('selectedBoards',selectedBoards); formData.append('checked', selected); formData.append('imagevideos', image); formData.append('postStatus', postStatus); diff --git a/socioboard-web-php/app/Modules/Schedule/Controllers/ScheduleController.php b/socioboard-web-php/app/Modules/Schedule/Controllers/ScheduleController.php index b02b50595..7d206b9d4 100644 --- a/socioboard-web-php/app/Modules/Schedule/Controllers/ScheduleController.php +++ b/socioboard-web-php/app/Modules/Schedule/Controllers/ScheduleController.php @@ -14,6 +14,290 @@ class ScheduleController extends Controller { + public function editSchedulePost(Request $request){ + if ($request->isMethod('post')) { + $helper = Helper::getInstance(); + $accountType = []; + $publishData = []; + $publishVideos = []; + $timeDArray = []; + $accountDetail = []; + $linkMedia = ""; + $postType = "Text"; + $timestamp = ""; + $pinboardata = []; + $privacy = env('POST_PRIVACY'); // default public + + $postStatus = $request->scheduleStatus; + if($postStatus == 1) $moduleName = "Schedule"; + elseif($postStatus == 5) $moduleName = "Draft"; + if ($request->sMessage == "" && $request->sLink == "") { + $result['code'] = 404; + $result['status'] = "failure"; + $result['message'] = "Oops you forgot to provide message/link"; + return ($result); + } + $accountType = explode(",", $request["checked"]); //16--2 id--type + + + $Days = explode(",", $request["selectDays"]); + $publishImages = []; +//for checking if profiles selected are not + if (count($accountType) == 1 && $accountType[0] == "" && $request->selectedBoards == "") { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "Please select atleast 1 account."; + return ($result); + } + + if ($request->selectedBoards != "") { + if ($request->mediaUploaded == "" && $request->imageName == "") { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "For posting on boards image and link is neccessdary"; + return ($result); + } + $k = 0; + $baordsAcc = explode(',', $request->selectedBoards); + $j = 0; + for ($i = 0; $i < count($baordsAcc); $i++) { + if (isset($boardsData[$j - 1]['accountId']) && $boardsData[$j - 1]['accountId'] == explode('_', $baordsAcc[$i])[0]) { + $boardsData[$j - 1]['boardId'][$k] = explode('_', $baordsAcc[$i])[1]; + $k++; + unset($baordsAcc[$i]); + $baordsAcc = array_values($baordsAcc); + $i--;; + print_r($i); + echo "
      "; + } else { + $k = 0; + $boardsData[$j]['accountId'] = (int)explode('_', $baordsAcc[$i])[0]; + $boardsData[$j]['boardId'][$k] = explode('_', $baordsAcc[$i])[1]; + $data = explode('_', $baordsAcc[$i])[0] . "--" . env('PINTEREST'); + array_push($accountType, $data); + $k++; + $j++; + + } + } + + for ($m = 0; $m < count($boardsData); $m++) { + array_push($pinboardata, $boardsData[$m]); + } + + } + if ($request->daywsiseChecked == 1) { + if ($request->dayWiseDateTime == null || count($Days) == 0) { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "For day-wise schedule, please provide day and time to schedule the post"; + return ($result); + } else { + $timestampDay = strtotime($request->dayWiseDateTime); + $timestampDay = gmdate("Y-m-d\TH:i:s.ms\Z", $timestampDay); + foreach ($Days as $day) { + $obt = new \stdClass(); + $obt->dayId = (int)$day; + $obt->timings = (array)$timestampDay; + $timeDArray[] = $obt; +// $timeDArray[] = array("dayId"=>(int)$day, +// "timings"=>$timestampDay); // json encode this in daywiseScheduleTimer of schedule data + } + + } + } +// return json_encode($timeDArray); + if ($request->normalChecked == 1) { + if ($request->normalDateTime == null) { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "For normal schedule, please provide time to schedule the post"; + return ($result); + } else { + $timestamp = strtotime($request->normalDateTime); + $timestamp = gmdate("Y-m-d\TH:i:s.ms\Z", $timestamp); + } + } + try { + $team = Session::get('currentTeam')['team_id']; + if ($request->hasFile('imageName')) { + + //type image + if ($request->hasFile('videoupload')) { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "Please select only images or videos. Not both at a time"; + return ($result); + } + + //TODO image validation has to be done + foreach ($request->imageName as $image) { + if (substr($image->getMimeType(), 0, 5) == 'image') { + $postType = "Image"; + $pathToStorage = storage_path("uploadimages"); + if (!file_exists($pathToStorage)) + mkdir($pathToStorage, 0777, true); + $publishimage = $image->getClientOriginalName(); + $path = $pathToStorage . "/" . $publishimage; + Log::info("Publish file Path:" . $path); + file_put_contents($path, file_get_contents($image->path())); + $filedata = array("name" => "media", + "file" => $path); + $response = $helper->apiCallPostPublish($filedata, "upload/media?title=schedule&teamId=" . $team . "&privacy=" . $privacy, true); + if ($response['statusCode'] == 200) { + + //getting filename for + $publishImages[] = $response['data']['mediaDetails'][0]['media_url']; + File::Delete($filedata['file']); + Log::info("Deleted a file -> " . $filedata['file'] . " after sending file to api. Dated-> " . date('y/m/d')); + } + + + } else { + $result['code'] = 400; + $result['status'] = "failure"; + $result['message'] = "Select only images or videos"; + return ($result); + } + } + } else if (isset($request->videoupload)) { + //type video + foreach ($request->videoupload as $video) { + + $postType = "Video"; + $pathToStorage = storage_path("uploadvideos"); + if (!file_exists($pathToStorage)) + mkdir($pathToStorage, 0777, true); + $publishimage = $video->getClientOriginalName(); + $path = $pathToStorage . "/" . $publishimage; + Log::info("Publish file Path:" . $path); + file_put_contents($path, file_get_contents($video->path())); + $videodata = array("name" => "media", + "file" => $path); + $response = $helper->apiCallPostPublish($videodata, "upload/media?teamId=" . $team . "&privacy=0", true); + + if ($response['statusCode'] == 200) { + //getting filename for + $publishImages[] = $response['data']['mediaDetails'][0]['media_url']; + File::Delete($videodata['file']); + Log::info("Deleted a file -> " . $videodata['file'] . " after sending file to api. Dated-> " . date('y/m/d')); + } + + } + } + + if ($request->sLink != '') { + //type link + $postType = "Link"; + $linkMedia = $request->slink; + $postType = "Link"; + if ((int)Session::get('user')['userDetails']->Activations->shortenStatus == 1) { + $shortenLinkResponse = $helper->apiCallGet("user/getShortenUrl?longurl=" . $linkMedia); + if ($shortenLinkResponse->code == 200) { + $linkMedia = $shortenLinkResponse->message->shortLink; + } + } + } + +// $pin = array("accountId"=>0, +// "boardId"=>['2222']); +// $pinD = json_encode($pin ); + + + //accounts array + foreach ($accountType as $a) { + + if ($a != "") { + $splitedAccData = explode('--', $a); + $oba = new \stdClass(); + $oba->accountType = $splitedAccData[1]; + $oba->accountId = $splitedAccData[0]; + $accountDetail[] = ($oba); + } + + + } + //merge the already-uploaded and newly-uploaded file arrays + if ($request->mediaUploaded !== null) { + $postType = "Image"; + $array = array(json_decode($request->mediaUploaded)); + $publishImages = array_merge($publishImages, ...$array); + } + Log::info("scheduling"); + if ($request->daywsiseChecked == 1) { + Log::info("Daywise scheduling"); + $publishData['postInfo'] = array( + "postType" => $postType, + "description" => $request->sMessage, + "shareLink" => $linkMedia, + "mediaUrl" => $publishImages, + "postingSocialIds" => ($accountDetail), + "pinBoards" => $pinboardata, + "scheduleCategory" => ENV('DAYWISE_SCHEDULE'), + "teamId" => $team, + "moduleName" => $moduleName, + "moduleValues" => "", + "scheduleStatus" => (int)$postStatus, + "normalScheduleDate" => $timestamp, + "daywiseScheduleTimer" => ($timeDArray) + ); + + $publishresponse = $helper->apiCallPublishPut($publishData, "schedule/edit?scheduleId=".$request->scheduleId."&teamId=".$request->teamId); + Log::info("Daywise scheduling"); + Log::info($publishresponse); + + } + if ($request->normalChecked == 1) { + $publishData['postInfo'] = array( + "postType" => $postType, + "description" => $request->sMessage, + "shareLink" => $linkMedia, + "mediaUrl" => $publishImages, + "postingSocialIds" => ($accountDetail), + "pinBoards" => $pinboardata, + "scheduleCategory" => env('NORMAL_SCHEDULE'), + "teamId" => $team, + "moduleName" => $moduleName, + "moduleValues" => "", + "scheduleStatus" => (int)$postStatus, + "normalScheduleDate" => $timestamp, + "daywiseScheduleTimer" => ($timeDArray) + ); + + $publishresponse = $helper->apiCallPublishPut($publishData, "schedule/edit?scheduleId=".$request->scheduleId."&teamId=".$request->teamId); + + Log::info("Normal scheduling"); + Log::info($publishresponse); + + } + if ($publishresponse['statusCode'] == 200 && $publishresponse['data']['code'] == 200 && $publishresponse['data']['status'] == "success") { + Log::info("Edited successful"); + $result['code'] = 200; + $result['message'] = "Edited successfully"; + $result['status'] = "success"; + return $result; + } else if ($publishresponse['data']['code'] == 400 && $publishresponse['data']['status'] == "failed") { + $result['code'] = 500; + $result['status'] = "failure"; + $result['message'] = $publishresponse['data']['error']; + return ($result); + } else { + $result['code'] = 500; + $result['status'] = "failure"; + $result['message'] = $publishresponse['data']['error']; + return ($result); + } + } catch (\Exception $e) { + Log::info("Schedule exception " . $e->getMessage() . " in file => " . $e->getFile() . " at line => " . $e->getLine()); + $result['code'] = 500; + $result['status'] = "failure"; + $result['message'] = "Something went wrong.. Please try again later"; + return ($result); + } + + } + } + public function schedule(Request $request) { if ($request->isMethod('get')) { @@ -23,7 +307,6 @@ public function schedule(Request $request) "pinterestBoards" => Session::get('pinterestBoards') ]); } else if ($request->isMethod('post')) { - $helper = Helper::getInstance(); $accountType = []; $publishData = []; @@ -37,6 +320,8 @@ public function schedule(Request $request) $privacy = env('POST_PRIVACY'); // default public $postStatus = $request->scheduleType; + if($request->scheduleStatus == 1) $moduleName = "Schedule"; + elseif($request->scheduleStatus == 5) $moduleName = "Draft"; if ($request->sMessage == "" && $request->sLink == "") { $result['code'] = 404; $result['status'] = "failure"; @@ -45,7 +330,6 @@ public function schedule(Request $request) } $accountType = explode(",", $request["checked"]); //16--2 id--type - $Days = explode(",", $request["selectDays"]); $publishImages = []; //for checking if profiles selected are not @@ -57,7 +341,7 @@ public function schedule(Request $request) } if($request->selectedBoards != ""){ - if($request->sLink == "" || $request->imageName == ""){ + if($request->mediaUploaded == "" && $request->imageName == ""){ $result['code']=400; $result['status']="failure"; $result['message']="For posting on boards image and link is neccessdary"; @@ -91,6 +375,7 @@ public function schedule(Request $request) array_push($pinboardata,$boardsData[$m]); } + } if ($request->daywsiseChecked == 1) { if ($request->dayWiseDateTime == null || count($Days) == 0) { @@ -223,9 +508,14 @@ public function schedule(Request $request) } - - + //merge the already-uploaded and newly-uploaded file arrays + if ($request->mediaUploaded !== null) { + $postType = "Image"; + $array = array(json_decode($request->mediaUploaded)); + $publishImages = array_merge($publishImages, ...$array); + } Log::info("scheduling"); + if($request->daywsiseChecked == 1){ Log::info("Daywise scheduling"); $publishData['postInfo'] = array( @@ -237,19 +527,18 @@ public function schedule(Request $request) "pinBoards" => $pinboardata , "scheduleCategory" => ENV('DAYWISE_SCHEDULE'), "teamId" => $team, - "moduleName" => "Schedule", + "moduleName" => $moduleName, "moduleValues" => "", "scheduleStatus" => (int)$postStatus, "normalScheduleDate" => $timestamp, "daywiseScheduleTimer" => ($timeDArray) ); - $publishresponse = $helper->apiCallPostPublish($publishData, "schedule/create"); Log::info("Daywise scheduling"); Log::info($publishresponse); } - if($request->normalChecked == 1){ + if($request->normalChecked == 1){ $publishData['postInfo'] = array( "postType" => $postType, "description" => $request->sMessage, @@ -259,7 +548,7 @@ public function schedule(Request $request) "pinBoards" => $pinboardata , "scheduleCategory" => env('NORMAL_SCHEDULE'), "teamId" => $team, - "moduleName" => "Schedule", + "moduleName" => $moduleName, "moduleValues" => "", "scheduleStatus" => (int)$postStatus, "normalScheduleDate" => $timestamp, @@ -271,8 +560,13 @@ public function schedule(Request $request) } + if ($publishresponse['statusCode'] == 200 && $publishresponse['data']['code'] == 200 && $publishresponse['data']['status'] == "success") { - Log::info("SChedule successful"); + + //if draft to schedule then delete the draft once scheduled. + if($request->draftToSchedule == 1) $responseDelete = $helper->apiCallPublishDelete("schedule/delete?scheduleId=".$request->scheduleId); + + Log::info("SChedule successful"); $result['code'] = 200; $result['message'] = "Scheduled successfully"; $result['status'] = "success"; @@ -298,15 +592,12 @@ public function schedule(Request $request) } } - - public function postHistory(Request $request){ if($request->isMethod('get')){ return view('Schedule::post_history'); } } - public function getPostHistory(Request $request){ try{ $icon=""; @@ -317,6 +608,7 @@ public function getPostHistory(Request $request){ $publishresponse=""; if($request->methods == 'socio' || $request->methods == "daywise"){ $publishresponse = $helper->apiCallPublishGet("schedule/getScheduleDetailsByCategories?scheduleStatus=".$request->scheuleStatus."&scheduleCategory=".$request->scheduleCategory."&fetchPageId=".$request->pageId); + }else if($request->methods == 'draft'){ $publishresponse = $helper->apiCallPublishGet("schedule/getFilteredScheduleDetails?scheduleStatus=5&fetchPageId=".$request->pageId); }else if($request->methods == "history") { @@ -331,35 +623,37 @@ public function getPostHistory(Request $request){ case 1: $contents[$i]['scheduleStatus'] = "Ready queue"; $contents[$i]['cancel'] =''; + $contents[$i]['edit'] =''; break; case 2: $contents[$i]['scheduleStatus'] = "Wait (pause) state"; $contents[$i]['cancel'] =""; + $contents[$i]['edit'] =''; break; case 3: $contents[$i]['scheduleStatus'] = "Approval pending"; $contents[$i]['cancel'] =""; - + $contents[$i]['edit'] =''; break; case 4: $contents[$i]['scheduleStatus'] = "Rejected"; $contents[$i]['cancel'] =""; - + $contents[$i]['edit'] =""; break; case 5: $contents[$i]['scheduleStatus'] = "Draft"; $contents[$i]['cancel'] =""; - + $contents[$i]['edit'] =''; break; case 6: $contents[$i]['scheduleStatus'] = "Completed"; $contents[$i]['cancel'] =""; - + $contents[$i]['edit'] =""; break; case 7: $contents[$i]['scheduleStatus'] = "Canceled"; $contents[$i]['cancel'] =""; - + $contents[$i]['edit'] =""; break; } //info required from post contents @@ -417,6 +711,7 @@ public function getPostHistory(Request $request){ } $result['content'] = $contents; + } else { @@ -444,6 +739,43 @@ public function getPostHistory(Request $request){ } + public function scheduleEdit(Request $request){ + $helper = Helper::getInstance(); + $scheduleId = $request->scheduleId; + $teamId = $request->teamId; + $result[] = ""; + try{ + $response = $helper->apiCallPublishGet("schedule/getParticularScheduleDetails?scId=".$scheduleId); + if($response->code == 200 ){ + $data = $response->data->postContents; + $result['scheduleStatus'] = $data[0]->scheduleStatus; + $result['postType'] = $data[0]->postType; + $result['description'] = $data[0]->description; + $result['shareLink'] = $data[0]->shareLink; + $result['scheduleCategory'] = $data[0]->scheduleCategory; + $result['teamId'] = $data[0]->teamId; + $result['moduleName'] = $data[0]->moduleName; + $result['normalScheduleDate'] = $data[0]->normalScheduleDate; + $result['daywiseScheduleTimer'] = $data[0]->daywiseScheduleTimer; + $result['ownerId'] = $data[0]->ownerId; + $result['postingSocialIds'] = $data[0]->postingSocialIds; + $result['pinBoards'] = $data[0]->pinBoards; + $result['mediaUrl'] = $data[0]->mediaUrl; + return view('Schedule::schedule_edit', [ + "socialAccount" => Session::get('currentTeam')['SocialAccount'], + "pinterestBoards" => Session::get('pinterestBoards'), + "scheduleDetails" => $result, + "scheduleId" => $request->scheduleId + ]); + } + else return Redirect::back(); + + }catch(\Exception $e){ + + } + + + } //post-now-draft public function getDraftHistory(Request $request){ @@ -481,8 +813,6 @@ public function getDraftHistory(Request $request){ } - - public function scheduleAction(Request $request){ $helper = Helper::getInstance(); $data=[]; @@ -524,9 +854,7 @@ public function scheduleAction(Request $request){ } } - //Image library - public function imageLibrary(Request $request, $type){ try{ if($request->isMethod('GET')){ diff --git a/socioboard-web-php/app/Modules/Schedule/Views/post_history.blade.php b/socioboard-web-php/app/Modules/Schedule/Views/post_history.blade.php index 42d2eb446..e3aad7533 100644 --- a/socioboard-web-php/app/Modules/Schedule/Views/post_history.blade.php +++ b/socioboard-web-php/app/Modules/Schedule/Views/post_history.blade.php @@ -377,7 +377,6 @@ function getScheduledPostHistory(scheuleStatus, scheduleCategory, pageId,method) }, cache: false, success: function(data){ - // document.getElementById("Button").disabled = true; if(data.code == 200){ if(data.content.length == 0){ @@ -394,13 +393,13 @@ function getScheduledPostHistory(scheuleStatus, scheduleCategory, pageId,method) ); } for(var i=0; i < data.content.length ;i++ ){ - if(data.content[i].message === "" ){ + if(data.content[i].message !== "" ){ appendData = ' '+data.content[i].schedulername+' ' + - ''+ data.content[i].message +' '+ data.content[i].postingSocialIds +' '+ data.content[i].scheduleStatus +' '+ data.content[i].cancel +'' + + ''+ data.content[i].message +' '+ data.content[i].postingSocialIds +' '+ data.content[i].scheduleStatus +' '+ data.content[i].cancel +' ' +data.content[i].edit + ' '; }else{ appendData = ' '+data.content[i].schedulername+' ' + - 'No message '+ data.content[i].postingSocialIds +' '+ data.content[i].scheduleStatus +' '+ data.content[i].cancel +'' + + 'No message '+ data.content[i].postingSocialIds +' '+ data.content[i].scheduleStatus +' '+ data.content[i].cancel +' ' +data.content[i].edit+ ' '; } // @@ -480,7 +479,7 @@ function getDraftHistory(scheduleStatus, scheduleCategory, pageId,method){ }else{ appendData = ' '+data.content[i].schedulername+' ' + 'No message '+ data.content[i].postingSocialIds +' '+ data.content[i].scheduleStatus +' '+ data.content[i].cancel +'' + - ' '; + ' '; } // $(tableID).DataTable().destroy(); @@ -529,4 +528,4 @@ function deleteSchedule(scheduleId, deleteAction) { }); } - @endsection \ No newline at end of file + @endsection diff --git a/socioboard-web-php/app/Modules/Schedule/Views/schedule.blade.php b/socioboard-web-php/app/Modules/Schedule/Views/schedule.blade.php index c9ef5e29e..76fb6163e 100644 --- a/socioboard-web-php/app/Modules/Schedule/Views/schedule.blade.php +++ b/socioboard-web-php/app/Modules/Schedule/Views/schedule.blade.php @@ -405,9 +405,13 @@ class="mr-3 pp_50 rounded-circle" // schedule_post $(function () { // schedule_post normal - $('#schedule_normal_post').datetimepicker(); + $('#schedule_normal_post').datetimepicker({ + minDate:moment() + }); // day wise schedule post - $('#day_schedule_post').datetimepicker(); + $('#day_schedule_post').datetimepicker({ + minDate:moment() + }); }); // --------------------- // @@ -419,6 +423,7 @@ class="mr-3 pp_50 rounded-circle" normalChecked = 1; $("#schedule_normal_div").show(); } else { + normalChecked = 0; $("#schedule_normal_div").hide(); } }); @@ -429,6 +434,7 @@ class="mr-3 pp_50 rounded-circle" daywsiseChecked = 1; $("#day_wise_schedule_div").show(); } else { + daywsiseChecked = 0; $("#day_wise_schedule_div").hide(); } }); @@ -523,7 +529,6 @@ class="mr-3 pp_50 rounded-circle" } // return array of file name } - }); $('body').on('click', '.remove-pic', function () { @@ -574,6 +579,8 @@ function schedule(scheduleType){ formData.append('normalDateTime',$('#schedule_normal_post').val()); formData.append('dayWiseDateTime',$('#day_schedule_post').val()); formData.append('selectedBoards',selectedBoards); + formData.append('draftToSchedule', 0); + formData.append('scheduleStatus', scheduleType); @@ -626,6 +633,7 @@ function schedule(scheduleType){ $(".emojionearea-editor").text(""); $("#hint_brand").css("display","none"); $("#option_upload").css("display","block"); + window.location.href = "{{env('APP_URL')}}post_history"; }else if(response.code == 500){ swal("Something went wrong... Please try again after sometime"); document.getElementById("scheduleForm").reset(); @@ -654,4 +662,4 @@ function schedule(scheduleType){ } - @endsection \ No newline at end of file + @endsection diff --git a/socioboard-web-php/app/Modules/Schedule/Views/schedule_edit.blade.php b/socioboard-web-php/app/Modules/Schedule/Views/schedule_edit.blade.php new file mode 100644 index 000000000..4eb1446a7 --- /dev/null +++ b/socioboard-web-php/app/Modules/Schedule/Views/schedule_edit.blade.php @@ -0,0 +1,851 @@ +@extends('User::dashboard.master') +@section('title') + SocioBoard |Edit Schedule Message +@endsection + +@section('schedule') + +
      +
      +
      +
      +

      Edit Schedule Message

      +
      +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      + +
      +

      + +
      +
      + Note: Add only 4 items at a single time. +
        +
      • + + + + +
      • +
      • + + + + +
      • +
      +
      + +
      +
        +
      • + + + + +
      • +
      +
      +
      + +
      + +
      +
      + +
      +
      + +
      +
      +
      +
      +
      Choose Facebook Pages for posting
      +
      +
        + @for($i=0;$iaccount_type == env('FACEBOOKPAGE')) + @if($socialAccount[$i]->join_table_teams_social_accounts->is_account_locked == false) +
      • +
        + page title +
        + +
        + + +
        +
        +
        {{$socialAccount[$i]->first_name}}
        + Follower: + {{$socialAccount[$i]->friendship_counts}} + +
        +
        +
      • + @endif + + @endif + @endfor +
      +
      +
      +
      +
      +
      +
      +
      +
      Choose Twitter profile for posting
      +
      +
        + @for($i=0;$iaccount_type == env('TWITTER') ) + @if($socialAccount[$i]->join_table_teams_social_accounts->is_account_locked == false) +
      • +
        + page title + +
        + +
        + + +
        +
        +
        {{$socialAccount[$i]->first_name}}
        + Follower: + {{$socialAccount[$i]->friendship_counts}} + +
        +
        +
      • + @endif + @endif + @endfor +
      +
      +
      +
      +
      +
      +
      +
      +
      Choose Linkedin Profile and Pages for posting +
      +
      +
        + @for($i=0;$iaccount_type == env('LINKEDIN') || $socialAccount[$i]->account_type == env('LINKEDINCOMPANY')) + {{--should give a condition for lock--}} +
      • +
        + page title +
        + +
        + + +
        +
        +
        {{$socialAccount[$i]->first_name}}
        + Follower: + {{$socialAccount[$i]->friendship_counts}} + +
        +
        +
      • + @endif + @endfor +
      +
      +
      +
      +
      +
      +
      +
      +
      Choose Pinterest Profile for posting
      +
      + @for($i=0;$iaccount_type == env('PINTEREST')) + @if($socialAccount[$i]->join_table_teams_social_accounts->is_account_locked == false) +
      +
      +
      +
      + avatar +
      +
      {{$socialAccount[$i]->first_name}}
      + +
      +
      +
      +
      + @if($i == 0) +
      + @else +
      + @endif + +
      +
        + @for($j=0;$jaccount_id == $socialAccount[$i]->account_id) + + @for($l=0;$lboards);$l++) +
      • +
        + {{----}} +
        + +
        + + +
        +
        +
        {{$pinterestBoards[$j]->boards[$l]->board_name}}
        +
        +
        +
      • + @endfor + @endif + @endfor +
      +
      +
      +
      + @endif + @endif + @endfor +
      +
      +
      +
      + {{--todo take from np--}} +
      + {{--todo take from np--}} +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      + + +
      +
      + + +
      +
      +
      + + +
      +
      + +
      + + + + + + + +
      +
      +
      +
      + + +
      +
      +
      +
      + +
      + @if($scheduleDetails['scheduleStatus']==1) + + @elseif($scheduleDetails['scheduleStatus']==5) + + + @endif +
      +
      +
      +
      +
      + +
      + +
      + +@endsection + + +@section('script') + + + + + + + +@endsection diff --git a/socioboard-web-php/app/Modules/Schedule/routes/web.php b/socioboard-web-php/app/Modules/Schedule/routes/web.php index e02d67f1f..a1da6d2c7 100644 --- a/socioboard-web-php/app/Modules/Schedule/routes/web.php +++ b/socioboard-web-php/app/Modules/Schedule/routes/web.php @@ -10,7 +10,8 @@ Route::post('get-draft-history','ScheduleController@getDraftHistory'); Route::post('get-post-history','ScheduleController@getPostHistory'); Route::post('schedule-action','ScheduleController@scheduleAction'); - + Route::get('/scheduleEdit','ScheduleController@scheduleEdit'); + Route::post('/edit-schedule-post','ScheduleController@editSchedulePost'); // Route::post('schedule_post','ScheduleController@schedule'); diff --git a/socioboard-web-php/app/Modules/Team/Controllers/GoogleController.php b/socioboard-web-php/app/Modules/Team/Controllers/GoogleController.php index 77acc13bb..387ff6535 100644 --- a/socioboard-web-php/app/Modules/Team/Controllers/GoogleController.php +++ b/socioboard-web-php/app/Modules/Team/Controllers/GoogleController.php @@ -33,7 +33,6 @@ public function googleAdd($network,$teamid,Request $request){ try{ $help = Helper::getInstance(); $response = $help->apiCallGet('team/getProfileRedirectUrl?teamId='.$teamid."&network=".$network); - if($response->code == 200 && $response->status == "success" ){ $data = (str_replace("state=","state=".$network."_",$response->navigateUrl)); header('Location: '.$data); @@ -73,6 +72,7 @@ public function googleCallback(Request $request){ $response = $help->apiCallGet('profile/getYoutubeChannels?code=' . $request->code); if ($response->code == 200 && $response->status) { + Session::put('youtubeChannels', $response->channels); return redirect('dashboard/' . $team); } else if ($response->code == 400 && $response->status == "failed") { return redirect('dashboard/' . $team)->with('FBError', $response->error); diff --git a/socioboard-web-php/app/Modules/Team/Controllers/PinterestController.php b/socioboard-web-php/app/Modules/Team/Controllers/PinterestController.php index dc4c471dd..cf77d3b23 100644 --- a/socioboard-web-php/app/Modules/Team/Controllers/PinterestController.php +++ b/socioboard-web-php/app/Modules/Team/Controllers/PinterestController.php @@ -27,6 +27,48 @@ public function __construct() $this->API_URL = env('API_URL') . env('VERSION') . '/'; } + public function boardCreate(Request $request){ + + $result = []; +// $api_url = $this->API_URL . "profile/createPinterestBoards?accountId=".$request->accountId."&boardName=".urlencode($request->boardName)."&boardDescription=".urlencode($request->boardDesc); + try { + $response = Helper::getInstance()->apiCallGet("profile/createPinterestBoards?accountId=".$request->accountId."&boardName=".urlencode($request->boardName)."&boardDescription=".urlencode($request->boardDesc)); + + if ($response->code == 200 && $response->status == "success") { + $result['code'] = 200; + return $response; + } else { + $result['code'] = 201; + $result['error'] = $result->error; + } + }catch (\Exception $e){ + if($e->getCode() === 404){ + } + + } + + } + + public function boardDelete(Request $request){ + $result = []; + try { + $response = Helper::getInstance()->apiDelete("profile/deletePinterestBoards?accountId=".$request->accountId."&boardId=".$request->boardId); + if ($response->code == 200 && $response->status == "success") { + $result['code'] = 200; + return $response; + } else { + $result['code'] = 201; + return $response; + } + + }catch (\Exception $e){ + if($e->getCode() === 404){ + } + + } + } + + public function viewPage($account_id, $page_id = 0) { @@ -103,7 +145,6 @@ public function getBoards($account_id) { try { $response = Helper::getInstance()->apiCallGet("profile/fetchNewPinterestBoards?accountId=" . $account_id . ""); - if ($response->code == 200 && $response->status == "success") { return $response->boards; } else { diff --git a/socioboard-web-php/app/Modules/Team/Controllers/ReportController.php b/socioboard-web-php/app/Modules/Team/Controllers/ReportController.php index cfe58e63f..93c36ffda 100644 --- a/socioboard-web-php/app/Modules/Team/Controllers/ReportController.php +++ b/socioboard-web-php/app/Modules/Team/Controllers/ReportController.php @@ -78,6 +78,38 @@ public function reportingTo(Request $request,$accountId,$network){ } + public function teamReport(Request $request, $teamId){ + return view('Team::AppInsight.teamReport', ['teamId' => $teamId]); + + } + + public function getTeamReport(Request $request){ + $helper = Helper::getInstance(); + $result = []; + try{ + $response = $helper->apiCallGetFeeds("networkinsights/getTeamInsights?teamId=".Session::get('currentTeam')['team_id']."&filterPeriod=".$request->filterPeriod."&since=".$request->since."&untill=".$request->until); + if($response->code == 200){ + $result['code'] = 200; + $result['teamMemberStats'] = $response->result->TeamMemberStats; + $result['facebook'] = $response->result->Facebook; + $result['twitter'] = $response->result->Twitter; + $result['insta'] = $response->result->InstagramBusiness; + $result['youtube'] = $response->result->Youtube; + } + else{ + $result['code'] = 201; + $result['error'] = $response->error; + } + return $result; + }catch (\Exception $e){ + Log::info("Exception Team insight".date('y-m-d h:m:s').$e->getMessage()." @ ".$e->getLine()." in ".$e->getFile()); + $result['code'] = 500; + $result['message']= "Something went wrong"; + return $result; + } + + } + public function getFacebookFanInsight(Request $request){ try{ $team_id = Session::get('currentTeam')['team_id']; diff --git a/socioboard-web-php/app/Modules/Team/Controllers/TeamController.php b/socioboard-web-php/app/Modules/Team/Controllers/TeamController.php index 03654a788..1bd980979 100644 --- a/socioboard-web-php/app/Modules/Team/Controllers/TeamController.php +++ b/socioboard-web-php/app/Modules/Team/Controllers/TeamController.php @@ -94,6 +94,10 @@ public function createTeam(Request $request) } } + public function clearAddSession(){ + if(session()->has('youtubeChannels')) Session::forget('youtubeChannels'); + } + public function viewTeam($id) { $help = Helper::getInstance(); @@ -110,10 +114,10 @@ public function viewTeam($id) 'teamMembers' => $resp->teamMembers, 'memberProfileDetails' => $resp->memberProfileDetails ); + Session::put('team', $team); $teamSess = Session::get('team'); - } @@ -190,7 +194,6 @@ public function viewTeam($id) $profAvailable = $allSocioAcc->profiles; // $reindex = array_values($allSocioAcc->profiles); } - return view('Team::viewTeam', ['defaultTeam' => $teamDefault, 'teamDetails' => $teamDetails, 'adminDetails' => $adminDetails, @@ -401,6 +404,14 @@ public function addToOtherTeam(Request $request) //TODO check cases } + public function deleteTeamSocialProfile(Request $request){ + $data = []; + $helper = Helper::getInstance(); + $response = $helper->apiDelete("team/deleteTeamSocialProfile?AccountId=".$request->accountId."&TeamId=".$request->teamId); + return $response; + } + + public function editteam(Request $request) { @@ -413,7 +424,7 @@ public function editteam(Request $request) $data['TeamInfo'] = $teamInfo; //200 => success, 400=> Not able to edit team currently, 500=> Something went wrong from our side:( try { - $response = Helper::getInstance()->apiCallPost($data, "team/edit?TeamId=" . $request->teamId); + $response = Helper::getInstance()->apiCallPost($data, "team/edit?TeamId=" . session()->get('currentTeam')['team_id']); if ($response['statusCode'] == 200 && $response['data']['code'] == 200 && $response['data']['status'] == "success") { $team = Helper::getInstance()->getTeamNewSession(); $result['code'] = 200; diff --git a/socioboard-web-php/app/Modules/Team/Controllers/YoutubeController.php b/socioboard-web-php/app/Modules/Team/Controllers/YoutubeController.php index b0d2ab76f..ecb616c48 100644 --- a/socioboard-web-php/app/Modules/Team/Controllers/YoutubeController.php +++ b/socioboard-web-php/app/Modules/Team/Controllers/YoutubeController.php @@ -37,14 +37,16 @@ public function getProfileFeeds(Request $request,$account_id,$network){ return view('Team::youtube.youtubeFeeds')->with(["account_id"=>$account_id, "account_type"=>$network, "socialAccount"=> Session::get('currentTeam')['SocialAccount'], - "profileData" => $responseForParticular->profile + "profileData" => $responseForParticular->profile, + "pinterestBoards"=> Session::get('pinterestBoards') ]); }else if($network == env('INSTAGRAMBUSINESSPAGE')){//D:\bitbuckets\socioboard-upwork\web\app\Modules\Team\Views\instagram\instagramBusinessFeeds.blade.php return view('Team::instagram.instagramBusinessFeeds')->with(["account_id"=>$account_id, "account_type"=>$network, "socialAccount"=> Session::get('currentTeam')['SocialAccount'], "profileData" => $responseForParticular->profile, - "instagramStats"=>\unserialize($responseForParticular->profile->info) + "instagramStats"=>\unserialize($responseForParticular->profile->info), + "pinterestBoards"=> Session::get('pinterestBoards') ]); } }else if($responseForParticular->code == 400){ diff --git a/socioboard-web-php/app/Modules/Team/Views/AppInsight/TwitterReport.blade.php b/socioboard-web-php/app/Modules/Team/Views/AppInsight/TwitterReport.blade.php index b07436bbb..7c9ead309 100644 --- a/socioboard-web-php/app/Modules/Team/Views/AppInsight/TwitterReport.blade.php +++ b/socioboard-web-php/app/Modules/Team/Views/AppInsight/TwitterReport.blade.php @@ -16,7 +16,7 @@ @include("Team::AppInsight.incProfileSelect")
      - +
      @@ -110,6 +110,7 @@ function getFacebookInsight(accountId, filterPeriod, since, until){ beforeSend: function(){ chartData =[]; chart = am4core.create("fb_pages", am4charts.XYChart); + console.log("Chartb-->", chart.xAxes); }, cache: false, success: function(response){ @@ -136,7 +137,7 @@ function getFacebookInsight(accountId, filterPeriod, since, until){ posts: 0 }); } - + console.log(chartData); }else if(response.code == 400){ swal(response.message); @@ -153,10 +154,11 @@ function getFacebookInsight(accountId, filterPeriod, since, until){ } chart.data = chartData; - + console.log("Charta-->", chart.xAxes); // Create axes var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); dateAxis.renderer.minGridDistance = 50; + console.log("Chartab-->", chart.xAxes); // Create series @@ -280,6 +282,7 @@ function cb(start, end) { if(count>0){ setTimeout(function(){ $('#reportrange').click() var filterTpe = $($('.ranges>ul').find('.active')).attr('data-range-key'); + console.log(filterTpe); switch(filterTpe){ case "Today": filterPeriod=1; @@ -300,7 +303,7 @@ function cb(start, end) { filterPeriod=6; break; case "Custom Range": - filterPeriod=6; + filterPeriod=7; break; default : filterPeriod=1; diff --git a/socioboard-web-php/app/Modules/Team/Views/AppInsight/YoutubeFanpageReport.blade.php b/socioboard-web-php/app/Modules/Team/Views/AppInsight/YoutubeFanpageReport.blade.php index f7e63b4d9..551fe167b 100644 --- a/socioboard-web-php/app/Modules/Team/Views/AppInsight/YoutubeFanpageReport.blade.php +++ b/socioboard-web-php/app/Modules/Team/Views/AppInsight/YoutubeFanpageReport.blade.php @@ -262,7 +262,7 @@ function cb(start, end) { filterPeriod=6; break; case "Custom Range": - filterPeriod=6; + filterPeriod=; break; default : filterPeriod=1; diff --git a/socioboard-web-php/app/Modules/Team/Views/AppInsight/instagramInsight.blade.php b/socioboard-web-php/app/Modules/Team/Views/AppInsight/instagramInsight.blade.php index c28706cd0..38515453f 100644 --- a/socioboard-web-php/app/Modules/Team/Views/AppInsight/instagramInsight.blade.php +++ b/socioboard-web-php/app/Modules/Team/Views/AppInsight/instagramInsight.blade.php @@ -64,10 +64,6 @@

      - {{--
      --}} - {{-- IMPRESSIONS BY AGE &--}} - {{--GENDER--}} - {{--
      --}}
      diff --git a/socioboard-web-php/app/Modules/Team/Views/AppInsight/teamReport.blade.php b/socioboard-web-php/app/Modules/Team/Views/AppInsight/teamReport.blade.php new file mode 100644 index 000000000..e852d1e01 --- /dev/null +++ b/socioboard-web-php/app/Modules/Team/Views/AppInsight/teamReport.blade.php @@ -0,0 +1,698 @@ + + + + + + + SocioBoard | Team Reports + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + @include('User::dashboard.incSidebar') + @include('User::dashboard.incNav') +
      +
      +
      +
      +
      +

      {{session()->get('currentTeam')['team_name']}} Team Report

      +
      +
      +
      + + +
      +
      + +
      +
      +
      +
      +
      No. Of Team Members
      +

      +
      +
      +
      +
      +
      +
      +
      +
      +
      Invitation Sent
      +

      +
      +
      +
      +
      +
      +
      +
      +
      +
      Social Profiles Added
      +

      +
      +
      +
      +
      +
      +
      +
      +
      +
      No. Of Posts published
      +

      0

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      + TWITTER STATS +
      + Stats for Twitter accounts in the {{session()->get('currentTeam')['team_name']}} group. +
      + + + +
      TWITTER DAILY ENGAGEMENT
      + +
      +
      +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      + FACEBOOK STATS +
      + Stats for Facebook accounts in the {{session()->get('currentTeam')['team_name']}} group. +
      +
      MY FACEBOOK PAGES
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      + + +
      +
      +
      +
      + INSTAGRAM STATS +
      + Stats for Instagram accounts in the {{session()->get('currentTeam')['team_name']}} group. + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      + YOUTUBE STATS +
      + Stats for YouTube accounts in the {{session()->get('currentTeam')['team_name']}} group. + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +@include('User::dashboard.incNotificationJs') + + + + \ No newline at end of file diff --git a/socioboard-web-php/app/Modules/Team/Views/Pinterest/incJS.blade.php b/socioboard-web-php/app/Modules/Team/Views/Pinterest/incJS.blade.php index c6517dbcf..979ae421f 100644 --- a/socioboard-web-php/app/Modules/Team/Views/Pinterest/incJS.blade.php +++ b/socioboard-web-php/app/Modules/Team/Views/Pinterest/incJS.blade.php @@ -1,4 +1,49 @@ + @if($feeds != null) @foreach($feeds as $post)
      @@ -20,7 +21,11 @@
      - + @if($post->isLiked == 'true') + + @else + + @endif
      Comments @@ -48,6 +53,9 @@
      @endforeach + @else +
      No feeds to show....
      + @endif {{--
      diff --git a/socioboard-web-php/app/Modules/Team/Views/viewTeam.blade.php b/socioboard-web-php/app/Modules/Team/Views/viewTeam.blade.php index 8c02f4050..65f8c9ef9 100644 --- a/socioboard-web-php/app/Modules/Team/Views/viewTeam.blade.php +++ b/socioboard-web-php/app/Modules/Team/Views/viewTeam.blade.php @@ -14,37 +14,37 @@ } - @endsection +@endsection {{--@section('nav')--}} - {{----}} {{--@endsection--}} @section('viewTeam')
      @@ -58,10 +58,10 @@
      -
      {{$teamDetails['team_name']}}
      +
      {{$teamDetails['team_name']}}

      @if($defaultTeam == 1) -

      This is By default team...

      +

      This is By default team...

      @endif

      Admin of {{$teamDetails['team_name']}} Team

      @@ -72,69 +72,77 @@
      {{$adminDetails['email']}}
      {{----}} + {{--data-placement="top" title="edit">--}} + @if($defaultTeam != 1) - @if($defaultTeam != 1) - - @endif + + + @endif
      -
      Profile Linked To Team Name
      +
      Profile Linked To {{$teamDetails['team_name']}}
      -
      +
      @if($teamDetails['SocialAccount'] != null) - @for($i=0;$i - avatar -
      -
      {{$teamDetails['SocialAccount'][$i]->first_name}}
      - @switch($teamDetails['SocialAccount'][$i]->account_type ) - @case(1) - {{env('ACCOUNT_FB')}} - @break - @case(2) - {{env('ACCOUNT_FBPAGE')}} - @break - @case(3) - {{env('ACCOUNT_FBGROUP')}} - @break - @case(4) - {{env('ACCOUNT_TWITTER')}} - @break - @case(5) - {{env('ACCOUNT_INSTA')}} - @break - @case(6) - {{env('ACCOUNT_LINKEDIN')}} - @break - @case(7) - {{env('ACCOUNT_LINKEDINBUSINESS')}} - @break - @case(8) - {{env('ACCOUNT_GPLUS')}} - @break - @case(9) - {{env('ACCOUNT_YOUTUBE')}} - @break - @case(10) - {{env('ACCOUNT_GANALYTICS')}} - @break - - @default -

      No profiles available for

      - @endswitch + @for($i=0;$i + avatar +
      +
      {{$teamDetails['SocialAccount'][$i]->first_name}}
      + @switch($teamDetails['SocialAccount'][$i]->account_type ) + @case(1) + {{env('ACCOUNT_FB')}} + @break + @case(2) + {{env('ACCOUNT_FBPAGE')}} + @break + @case(3) + {{env('ACCOUNT_FBGROUP')}} + @break + @case(4) + {{env('ACCOUNT_TWITTER')}} + @break + @case(5) + {{env('ACCOUNT_INSTA')}} + @break + @case(6) + {{env('ACCOUNT_LINKEDIN')}} + @break + @case(7) + {{env('ACCOUNT_LINKEDINBUSINESS')}} + @break + @case(8) + {{env('ACCOUNT_GPLUS')}} + @break + @case(9) + {{env('ACCOUNT_YOUTUBE')}} + @break + @case(10) + {{env('ACCOUNT_GANALYTICS')}} + @break + @case(11) + {{env('ACCOUNT_PINTEREST')}} + @break + @case(12) + {{env('ACCOUNT_INSTA_BUSINESS')}} + @break + + @default +

      No profiles available for

      + @endswitch +
      + {{----}}
      -
      - @endfor + @endfor @else

      No profiles available for

      @endif @@ -151,58 +159,67 @@

      Drag profile to add in your team

      @if( $profileAvailablecount != 0) -
      +
      +
      {{--{{$profilesAvailable[0]->account_id}}--}} @for($i=0;$i - avatar -
      -
      {{$profilesAvailable[$i]->first_name}}
      - - @switch($profilesAvailable[$i]->account_type) - @case(1) - {{env('ACCOUNT_FB')}} - @break - @case(2) - {{env('ACCOUNT_FBPAGE')}} - @break - @case(3) - {{env('ACCOUNT_FBGROUP')}} - @break - @case(4) - {{env('ACCOUNT_TWITTER')}} - @break - @case(5) - {{env('ACCOUNT_INSTA')}} - @break - @case(6) - {{env('ACCOUNT_LINKEDIN')}} - @break - @case(7) - {{env('ACCOUNT_LINKEDINBUSINESS')}} - @break - @case(8) - {{env('ACCOUNT_GPLUS')}} - @break - @case(9) - {{env('ACCOUNT_YOUTUBE')}} - @break - @case(10) - {{env('ACCOUNT_GANALYTICS')}} - @break - - @default -

      No profiles available for

      - @endswitch +
      + avatar +
      +
      {{$profilesAvailable[$i]->first_name}}
      + + @switch($profilesAvailable[$i]->account_type) + @case(1) + {{env('ACCOUNT_FB')}} + @break + @case(2) + {{env('ACCOUNT_FBPAGE')}} + @break + @case(3) + {{env('ACCOUNT_FBGROUP')}} + @break + @case(4) + {{env('ACCOUNT_TWITTER')}} + @break + @case(5) + {{env('ACCOUNT_INSTA')}} + @break + @case(6) + {{env('ACCOUNT_LINKEDIN')}} + @break + @case(7) + {{env('ACCOUNT_LINKEDINBUSINESS')}} + @break + @case(8) + {{env('ACCOUNT_GPLUS')}} + @break + @case(9) + {{env('ACCOUNT_YOUTUBE')}} + @break + @case(10) + {{env('ACCOUNT_GANALYTICS')}} + @break + @case(11) + {{env('ACCOUNT_PINTEREST')}} + @break + @case(12) + {{env('ACCOUNT_INSTA_BUSINESS')}} + @break + + @default +

      No profiles available for

      + @endswitch +
      -
      @endfor
      - @else +
      + + @else

      No profiles available for

      - @endif + @endif
      @@ -211,13 +228,13 @@
      Accepted Team Members
      - @for($i=0;$i avatar
      {{$teamMemeberActivation[$i]->first_name}}
      - @if($teamMemeberActivation[$i]->invitation_accepted == true) - accepted + @if($teamMemeberActivation[$i]->invitation_accepted == true) + accepted @if($adminDetails['email'] !== $teamMemeberActivation[$i]->email ) @if($adminDetails['email'] !== session('user')['userDetails']->email)
      @@ -229,16 +246,16 @@
      @endif @endif - @else + @else
      - pending + pending - @endif -
      + @endif +
      - @endfor + @endfor

      @@ -250,12 +267,12 @@

      {{--
      --}} - {{----}} - {{----}} + {{----}} + {{----}} {{--
      --}}
      @@ -287,13 +304,13 @@
      - +
      + name="teamDesc" placeholder="Enter team description">
      @@ -302,8 +319,8 @@
      {{----}}
      @@ -582,43 +599,86 @@ function checkAdmin(){ document.addEventListener("drop", function (event) { event.preventDefault(); if (event.target.className == "droptarget") { - + console.log($(event.target).attr('id')); document.getElementById("info_profile_text").style.color = ""; event.target.style.border = ""; var data = event.dataTransfer.getData("Text"); event.target.appendChild(document.getElementById(data)); var ac =data.split("dragtarget")[1]; -// return 1; - $.ajax({ - url: "/addToOtherTeam", - data: { - 'teamId':team, - 'accountId':ac - }, - type: 'POST', - beforeSend:function(){ - }, - success: function (response) { - /*202=>validation error - * 200 =>success - * 400=>access denied, email not found - * 500 => exception - * */ - - if(response.code == 202){ - - }else if(response.code == 200){ - - }else if(response.code == 400){ - - }else{ + + if($(event.target).attr('id') == 'add') { + $.ajax({ + url: "/addToOtherTeam", + data: { + 'teamId':$('#teamId').val(), + 'accountId':ac + }, + type: 'POST', + beforeSend:function(){ + }, + success: function (response) { + /*202=>validation error + * 200 =>success + * 400=>access denied, email not found + * 500 => exception + * */ + + if(response.code == 202){ + + }else if(response.code == 200){ + + }else if(response.code == 400){ + + }else{ + } + }, + error:function(error){ + } - }, - error:function(error){ - $('#invite_mail').text("Not able to send invitation"); - } - }) + }) + + + + + + + } + + if($(event.target).attr('id') == 'delete') { + $.ajax({ + url: "/deleteTeamSocialProfile", + data: { + 'teamId':$('#teamId').val(), + 'accountId':ac + }, + type: 'POST', + beforeSend:function(){ + }, + success: function (response) { + + if(response.code == 202){ + + }else if(response.code == 200){ + + }else if(response.code == 400){ + + }else{ + } + }, + error:function(error){ + + } + }) + + + + + + + } + + } }); - @endsection \ No newline at end of file +@endsection diff --git a/socioboard-web-php/app/Modules/Team/routes/web.php b/socioboard-web-php/app/Modules/Team/routes/web.php index 89b1048a9..04a8e9b3d 100644 --- a/socioboard-web-php/app/Modules/Team/routes/web.php +++ b/socioboard-web-php/app/Modules/Team/routes/web.php @@ -14,6 +14,7 @@ Route::post('/delete-team', 'TeamController@deleteTeam'); Route::post('/invite-team/{id}', 'TeamController@inviteTeam'); Route::post('/addToOtherTeam', 'TeamController@addToOtherTeam'); + Route::post('/deleteTeamSocialProfile', 'TeamController@deleteTeamSocialProfile'); Route::post('/edit-team', 'TeamController@editteam'); Route::get('accept-invitation', 'TeamController@acceptInvitation'); Route::post('accept-invitation', 'TeamController@acceptInvitation'); // accept inv @@ -29,7 +30,7 @@ Route::post('facebookPageAdd', 'FacebookController@facebookPageAdd'); Route::post('insta-business-add', 'FacebookController@instaBusinessAdd'); - + Route::get('clear-add-profile-session','TeamController@clearAddSession'); Route::post('deleteSocialAccount', 'FacebookController@deleteSocialAccount'); @@ -125,6 +126,8 @@ //pinterest Route::get('pinterest/{network}/{teamid}', 'PinterestController@pinterestAdd'); Route::get('pinterest-callback', 'PinterestController@pinterestCallback'); + Route::get('pin-board-create', 'PinterestController@boardCreate'); + Route::get('pin-board-delete','PinterestController@boardDelete'); //publish @@ -133,10 +136,12 @@ //App insight Route::get('report/{account_id}/{network}', 'ReportController@reportingTo'); + Route::get('team-report/{team_id}', 'ReportController@teamReport'); Route::post('get-facebook-insight', 'ReportController@getFacebookFanInsight'); Route::post('get-youtube-insight', 'ReportController@getYoutubeInsight'); Route::post('get-insta-insight', 'ReportController@getInstaInsight'); Route::post('get-twitter-insight', 'ReportController@getTwitterInsight'); + Route::post('get-team-insight', 'ReportController@getTeamReport'); //youtube Feeds diff --git a/socioboard-web-php/app/Modules/User/Controllers/UserController.php b/socioboard-web-php/app/Modules/User/Controllers/UserController.php index 9eb67cac1..3bea25713 100644 --- a/socioboard-web-php/app/Modules/User/Controllers/UserController.php +++ b/socioboard-web-php/app/Modules/User/Controllers/UserController.php @@ -57,10 +57,8 @@ public function signup(Request $request) $validator = Validator::make($request->all(), $rules,$customMessage); if ($validator->fails()) { - - return redirect()->back()->withErrors($validator)->withInput(); + return $validator->errors(); } else { - // $iterations = 1000; //// Generate a random IV using openssl_random_pseudo_bytes() //// random_bytes() or another suitable source of randomness @@ -71,14 +69,14 @@ public function signup(Request $request) $user = array( "userName" => $request->username, "email" => $request->email_id, - "password" =>$request->passwd, + "password" =>md5($request->passwd), "firstName" => $request->first_name, - "profilePicture"=>env('APP_URL')."assets/imgs/user-avatar.png", - "phoneCode"=>'0', - "phoneNo"=>0, - "country"=>'NA', - "timeZone"=>'NA', - "aboutMe"=>"" + "profilePicture" =>env('APP_URL')."assets/imgs/user-avatar.png", + "phoneCode" => $request->dialcode, + "phoneNo" => $request->phone, + "country" => 'NA', + "timeZone" => 'NA', + "aboutMe" => "" // "isAdminUser"=>false ); // $userActivation = array( @@ -105,23 +103,32 @@ public function signup(Request $request) $result =json_decode($response->getBody()->getContents()) ; - if($result->code == 400){ - return redirect('signup')->with('error', $result->error); + if($result->code == 400){ + $res['code'] = 400; + $res['error'] = $result->error; + return $res; } if($response->getStatusCode() == 200){ - - return redirect('login')->with('status', 'Registered Successfully!'); + $res['code'] = 200; + $res['message'] = 'Registered Successfully!'; + return $res; }else if($response->getStatusCode() == 400){ - return redirect('signup')->with('error', 'Registration failed:('); + $res['code'] = 400; + $res['error'] = 'Registration failed:('; + return $res; }else{ - return redirect('signup')->with('error', 'Registration failed:('); + $res['code'] = 400; + $res['error'] = 'Registration failed:('; + return $res; } } } catch (\Exception $e) { Log::info("Sign up Exception ".$e->getLine()." => ".$e->getMessage()); - return redirect('signup')->with('error', 'Registration failed:('); + $res['code'] = 400; + $res['error'] = 'Registration failed:('; + return $result; throw new \Exception("Exception " . $e->getMessage()); } } @@ -152,7 +159,7 @@ public function login(Request $request) $loginData = array( "user" => $request->email, - "password" => $request->passwd + "password" => md5($request->passwd) ); // $data = json_encode($loginData); @@ -163,7 +170,8 @@ public function login(Request $request) if ($response->getStatusCode() == 200) { //if not admin if (isset($result->isTwoStepEnabled)) { - return redirect($result->redirectUrl); + return redirect()->route('twoStepAuth', ['email' => $result->user->email]); +// return redirect(env('APP_URL').two-step-authentication); } if ($result->code == 404 && $result->status = "failure") return redirect('login')->with('invalid', $result->message); @@ -291,6 +299,7 @@ public function dashboard(Request $request,$team){ $teamId[] = $team[0]->team_id; } + return view('User::dashboard.dashboard',[ 'user'=>$user, 'activation'=>(array)$user['Activations'], @@ -387,7 +396,6 @@ public function verifyPasswordToken(Request $request){ $resetEmail = $request['email'] ; return redirect('login')->with('resetPassword', $resetEmail); } -// dd($response->getStatusCode()); } catch(\Exception $e){ if($e->getCode() === 404){ Log::info('Exception ' . $e->getLine() . "=> code =>" . $e->getCode() . " => message => " . $e->getMessage()); @@ -560,10 +568,12 @@ public function twoStepAuthentication(Request $request){ } }elseif($request->isMethod('get')){ - return view('User::twoStep',['csrf'=>$request->csrf]); + return view('User::twoStep',['csrf'=>$request->csrf, 'email' => $request->email]); } } + + // this function is written cause after 2 step auth we cannot hit another api directly so we //we are redirecting it to a new page and from here we are moving to dahboard page based on the team id public function getDetailsForDashboard(){ @@ -683,7 +693,7 @@ public function profileUpdate(Request $request){ $rules = array( "firstName" => 'max:15|min:2|regex:/^[a-zA-Z]+$/', ///([0-9]*)([a-zA-Z]+)([0-9]*)/ Alphanumeeric "lastName" => 'max:15|min:2|regex:/^[a-zA-Z]+$/', - "phone" => 'regex:/[0-9]{10}/', + "phone" => 'size:10', ); $customMessage =[ 'firstName' => 'Please provide valid characters as input with atleast 2 and atmost 15 characters ', @@ -813,6 +823,10 @@ public function getUserNotification(Request $request){ if($responseForParticular->code == 200 && $responseForParticular->status == "success"){ $result['code'] =200; $result['status'] ="success"; + foreach($responseForParticular->notifications as $notification){ + $time = $notification->dateTime; + $notification->dateTime = \Carbon\Carbon::parse($time)->diffForHumans(); + } $result['notifications'] = $responseForParticular->notifications; } else if($responseForParticular->code == 404 && $responseForParticular->status == "failed"){ @@ -841,6 +855,10 @@ public function getTeamNotification(Request $request){ if($responseForParticular->code == 200 && $responseForParticular->status == "success"){ $result['code'] =200; $result['status'] ="success"; + foreach($responseForParticular->notifications as $notification){ + $time = $notification->dateTime; + $notification->dateTime = \Carbon\Carbon::parse($time)->diffForHumans(); + } $result['notifications'] = $responseForParticular->notifications; } else if($responseForParticular->code == 404 && $responseForParticular->status == "failed"){ diff --git a/socioboard-web-php/app/Modules/User/Views/dashboard/dashboard.blade.php b/socioboard-web-php/app/Modules/User/Views/dashboard/dashboard.blade.php index c6a2718f8..699fdfe1e 100644 --- a/socioboard-web-php/app/Modules/User/Views/dashboard/dashboard.blade.php +++ b/socioboard-web-php/app/Modules/User/Views/dashboard/dashboard.blade.php @@ -321,7 +321,7 @@ class="fab fa-pinterest-p">
      - + @if($fbpcount == 1)
      @@ -493,6 +493,7 @@ class="fab fa-pinterest-p">
      {{--to show analytics acc--}} + @if($youtubeChannels == 1)
      @@ -500,8 +501,9 @@ class="fab fa-pinterest-p">
      • + @for($i=0; $iget('youtubeChannels')); $i++) - @if(!isset(session()->get('youtubeChannels')[$i]->isAlreadyAdded)) + @if(!isset(session()->get('youtubeChannels')[$i]->isAlreadyAdded))
        page title
        @@ -516,14 +518,19 @@ class="fab fa-pinterest-p"> comments: {{session()->get('youtubeChannels')[$i]->friendshipCount->commentCount}}
        + @else +
        Channel {{session()->get('youtubeChannels')[$i]->channelName }} is already added
        + @endif @endfor
      + @if($youtubeChannelsCount > 0)

       

      + @endif
      diff --git a/socioboard-web-php/app/Modules/User/Views/dashboard/incNav.blade.php b/socioboard-web-php/app/Modules/User/Views/dashboard/incNav.blade.php index b1ac6bc61..91180db31 100644 --- a/socioboard-web-php/app/Modules/User/Views/dashboard/incNav.blade.php +++ b/socioboard-web-php/app/Modules/User/Views/dashboard/incNav.blade.php @@ -135,6 +135,8 @@ data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" >Report
    • "); + // add the flag + tmp += "
      "); + // and the country name and dial code + tmp += "".concat(c.name, ""); + tmp += "+".concat(c.dialCode, ""); + // close the list item + tmp += "
    • "; + } + this.countryList.insertAdjacentHTML("beforeend", tmp); + } + }, { + key: "_setInitialState", + value: function _setInitialState() { + var val = this.telInput.value; + var dialCode = this._getDialCode(val); + var isRegionlessNanp = this._isRegionlessNanp(val); + var _this$options = this.options, initialCountry = _this$options.initialCountry, nationalMode = _this$options.nationalMode, autoHideDialCode = _this$options.autoHideDialCode, separateDialCode = _this$options.separateDialCode; + // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the + // flag, else fall back to the default country + if (dialCode && !isRegionlessNanp) { + this._updateFlagFromNumber(val); + } else if (initialCountry !== "auto") { + // see if we should select a flag + if (initialCountry) { + this._setFlag(initialCountry.toLowerCase()); + } else { + if (dialCode && isRegionlessNanp) { + // has intl dial code, is regionless nanp, and no initialCountry, so default to US + this._setFlag("us"); + } else { + // no dial code and no initialCountry, so default to first in list + this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2; + if (!val) { + this._setFlag(this.defaultCountry); + } + } + } + // if empty and no nationalMode and no autoHideDialCode then insert the default dial code + if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) { + this.telInput.value = "+".concat(this.selectedCountryData.dialCode); + } + } + // NOTE: if initialCountry is set to auto, that will be handled separately + // format - note this wont be run after _updateDialCode as that's only called if no val + if (val) this._updateValFromNumber(val); + } + }, { + key: "_initListeners", + value: function _initListeners() { + this._initKeyListeners(); + if (this.options.autoHideDialCode) this._initFocusListeners(); + if (this.options.allowDropdown) this._initDropdownListeners(); + if (this.hiddenInput) this._initHiddenInputListener(); + } + }, { + key: "_initHiddenInputListener", + value: function _initHiddenInputListener() { + var _this3 = this; + this._handleHiddenInputSubmit = function() { + _this3.hiddenInput.value = _this3.getNumber(); + }; + if (this.telInput.form) this.telInput.form.addEventListener("submit", this._handleHiddenInputSubmit); + } + }, { + key: "_getClosestLabel", + value: function _getClosestLabel() { + var el = this.telInput; + while (el && el.tagName !== "LABEL") { + el = el.parentNode; + } + return el; + } + }, { + key: "_initDropdownListeners", + value: function _initDropdownListeners() { + var _this4 = this; + // hack for input nested inside label (which is valid markup): clicking the selected-flag to + // open the dropdown would then automatically trigger a 2nd click on the input which would + // close it again + this._handleLabelClick = function(e) { + // if the dropdown is closed, then focus the input, else ignore the click + if (_this4.countryList.classList.contains("hide")) _this4.telInput.focus(); else e.preventDefault(); + }; + var label = this._getClosestLabel(); + if (label) label.addEventListener("click", this._handleLabelClick); + // toggle country dropdown on click + this._handleClickSelectedFlag = function() { + // only intercept this event if we're opening the dropdown + // else let it bubble up to the top ("click-off-to-close" listener) + // we cannot just stopPropagation as it may be needed to close another instance + if (_this4.countryList.classList.contains("hide") && !_this4.telInput.disabled && !_this4.telInput.readOnly) { + _this4._showDropdown(); + } + }; + this.selectedFlag.addEventListener("click", this._handleClickSelectedFlag); + // open dropdown list if currently focused + this._handleFlagsContainerKeydown = function(e) { + var isDropdownHidden = _this4.countryList.classList.contains("hide"); + if (isDropdownHidden && [ "ArrowUp", "ArrowDown", " ", "Enter" ].indexOf(e.key) !== -1) { + // prevent form from being submitted if "ENTER" was pressed + e.preventDefault(); + // prevent event from being handled again by document + e.stopPropagation(); + _this4._showDropdown(); + } + // allow navigation from dropdown to input on TAB + if (e.key === "Tab") _this4._closeDropdown(); + }; + this.flagsContainer.addEventListener("keydown", this._handleFlagsContainerKeydown); + } + }, { + key: "_initRequests", + value: function _initRequests() { + var _this5 = this; + // if the user has specified the path to the utils script, fetch it on window.load, else resolve + if (this.options.utilsScript && !window.intlTelInputUtils) { + // if the plugin is being initialised after the window.load event has already been fired + if (window.intlTelInputGlobals.windowLoaded) { + window.intlTelInputGlobals.loadUtils(this.options.utilsScript); + } else { + // wait until the load event so we don't block any other requests e.g. the flags image + window.addEventListener("load", function() { + window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript); + }); + } + } else this.resolveUtilsScriptPromise(); + if (this.options.initialCountry === "auto") this._loadAutoCountry(); else this.resolveAutoCountryPromise(); + } + }, { + key: "_loadAutoCountry", + value: function _loadAutoCountry() { + // 3 options: + // 1) already loaded (we're done) + // 2) not already started loading (start) + // 3) already started loading (do nothing - just wait for loading callback to fire) + if (window.intlTelInputGlobals.autoCountry) { + this.handleAutoCountry(); + } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) { + // don't do this twice! + window.intlTelInputGlobals.startedLoadingAutoCountry = true; + if (typeof this.options.geoIpLookup === "function") { + this.options.geoIpLookup(function(countryCode) { + window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase(); + // tell all instances the auto country is ready + // TODO: this should just be the current instances + // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight + // away (e.g. if they have already done the geo ip lookup somewhere else). Using + // setTimeout means that the current thread of execution will finish before executing + // this, which allows the plugin to finish initialising. + setTimeout(function() { + return forEachInstance("handleAutoCountry"); + }); + }, function() { + return forEachInstance("rejectAutoCountryPromise"); + }); + } + } + } + }, { + key: "_initKeyListeners", + value: function _initKeyListeners() { + var _this6 = this; + // update flag on keyup + this._handleKeyupEvent = function() { + if (_this6._updateFlagFromNumber(_this6.telInput.value)) { + _this6._triggerCountryChange(); + } + }; + this.telInput.addEventListener("keyup", this._handleKeyupEvent); + // update flag on cut/paste events (now supported in all major browsers) + this._handleClipboardEvent = function() { + // hack because "paste" event is fired before input is updated + setTimeout(_this6._handleKeyupEvent); + }; + this.telInput.addEventListener("cut", this._handleClipboardEvent); + this.telInput.addEventListener("paste", this._handleClipboardEvent); + } + }, { + key: "_cap", + value: function _cap(number) { + var max = this.telInput.getAttribute("maxlength"); + return max && number.length > max ? number.substr(0, max) : number; + } + }, { + key: "_initFocusListeners", + value: function _initFocusListeners() { + var _this7 = this; + // mousedown decides where the cursor goes, so if we're focusing we must preventDefault as + // we'll be inserting the dial code, and we want the cursor to be at the end no matter where + // they click + this._handleMousedownFocusEvent = function(e) { + if (_this7.telInput !== document.activeElement && !_this7.telInput.value) { + e.preventDefault(); + // but this also cancels the focus, so we must trigger that manually + _this7.telInput.focus(); + } + }; + this.telInput.addEventListener("mousedown", this._handleMousedownFocusEvent); + this._handleKeypressPlusEvent = function(e) { + if (e.key === "+") _this7.telInput.value = ""; + }; + // on focus: if empty, insert the dial code for the currently selected flag + this._handleFocusEvent = function() { + if (!_this7.telInput.value && !_this7.telInput.readOnly && _this7.selectedCountryData.dialCode) { + // insert the dial code + _this7.telInput.value = "+".concat(_this7.selectedCountryData.dialCode); + // after auto-inserting a dial code, if the first key they hit is '+' then assume they are + // entering a new number, so remove the dial code. use keypress instead of keydown because + // keydown gets triggered for the shift key (required to hit the + key), and instead of + // keyup because that shows the new '+' before removing the old one + _this7.telInput.addEventListener("keypress", _this7._handleKeypressPlusEvent); + // after tabbing in, make sure the cursor is at the end we must use setTimeout to get + // outside of the focus handler as it seems the selection happens after that + setTimeout(function() { + var len = _this7.telInput.value.length; + _this7.telInput.setSelectionRange(len, len); + }); + } + }; + this.telInput.addEventListener("focus", this._handleFocusEvent); + // on blur or form submit: if just a dial code then remove it + this._handleSubmitOrBlurEvent = function() { + _this7._removeEmptyDialCode(); + }; + if (this.telInput.form) this.telInput.form.addEventListener("submit", this._handleSubmitOrBlurEvent); + this.telInput.addEventListener("blur", this._handleSubmitOrBlurEvent); + } + }, { + key: "_removeEmptyDialCode", + value: function _removeEmptyDialCode() { + var startsPlus = this.telInput.value.charAt(0) === "+"; + if (startsPlus) { + var numeric = this._getNumeric(this.telInput.value); + // if just a plus, or if just a dial code + if (!numeric || this.selectedCountryData.dialCode === numeric) { + this.telInput.value = ""; + } + } + // remove the keypress listener we added on focus + this.telInput.removeEventListener("keypress", this._handleKeypressPlusEvent); + } + }, { + key: "_getNumeric", + value: function _getNumeric(s) { + return s.replace(/\D/g, ""); + } + }, { + key: "_trigger", + value: function _trigger(name) { + // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax + var e = document.createEvent("Event"); + e.initEvent(name, true, true); + // can bubble, and is cancellable + this.telInput.dispatchEvent(e); + } + }, { + key: "_showDropdown", + value: function _showDropdown() { + this.countryList.classList.remove("hide"); + this.countryList.setAttribute("aria-expanded", "true"); + this._setDropdownPosition(); + // update highlighting and scroll to active list item + if (this.activeItem) { + this._highlightListItem(this.activeItem); + this._scrollTo(this.activeItem); + } + // bind all the dropdown-related listeners: mouseover, click, click-off, keydown + this._bindDropdownListeners(); + // update the arrow + this.dropdownArrow.classList.add("up"); + this._trigger("open:countrydropdown"); + } + }, { + key: "_toggleClass", + value: function _toggleClass(el, className, shouldHaveClass) { + if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className); + } + }, { + key: "_setDropdownPosition", + value: function _setDropdownPosition() { + var _this8 = this; + if (this.options.dropdownContainer) { + this.options.dropdownContainer.appendChild(this.dropdown); + } + if (!this.isMobile) { + var pos = this.telInput.getBoundingClientRect(); + // windowTop from https://stackoverflow.com/a/14384091/217866 + var windowTop = window.pageYOffset || document.documentElement.scrollTop; + var inputTop = pos.top + windowTop; + var dropdownHeight = this.countryList.offsetHeight; + // dropdownFitsBelow = (dropdownBottom < windowBottom) + var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight; + var dropdownFitsAbove = inputTop - dropdownHeight > windowTop; + // by default, the dropdown will be below the input. If we want to position it above the + // input, we add the dropup class. + this._toggleClass(this.countryList, "dropup", !dropdownFitsBelow && dropdownFitsAbove); + // if dropdownContainer is enabled, calculate postion + if (this.options.dropdownContainer) { + // by default the dropdown will be directly over the input because it's not in the flow. + // If we want to position it below, we need to add some extra top value. + var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight; + // calculate placement + this.dropdown.style.top = "".concat(inputTop + extraTop, "px"); + this.dropdown.style.left = "".concat(pos.left + document.body.scrollLeft, "px"); + // close menu on window scroll + this._handleWindowScroll = function() { + return _this8._closeDropdown(); + }; + window.addEventListener("scroll", this._handleWindowScroll); + } + } + } + }, { + key: "_getClosestListItem", + value: function _getClosestListItem(target) { + var el = target; + while (el && el !== this.countryList && !el.classList.contains("country")) { + el = el.parentNode; + } + // if we reached the countryList element, then return null + return el === this.countryList ? null : el; + } + }, { + key: "_bindDropdownListeners", + value: function _bindDropdownListeners() { + var _this9 = this; + // when mouse over a list item, just highlight that one + // we add the class "highlight", so if they hit "enter" we know which one to select + this._handleMouseoverCountryList = function(e) { + // handle event delegation, as we're listening for this event on the countryList + var listItem = _this9._getClosestListItem(e.target); + if (listItem) _this9._highlightListItem(listItem); + }; + this.countryList.addEventListener("mouseover", this._handleMouseoverCountryList); + // listen for country selection + this._handleClickCountryList = function(e) { + var listItem = _this9._getClosestListItem(e.target); + if (listItem) _this9._selectListItem(listItem); + }; + this.countryList.addEventListener("click", this._handleClickCountryList); + // click off to close + // (except when this initial opening click is bubbling up) + // we cannot just stopPropagation as it may be needed to close another instance + var isOpening = true; + this._handleClickOffToClose = function() { + if (!isOpening) _this9._closeDropdown(); + isOpening = false; + }; + document.documentElement.addEventListener("click", this._handleClickOffToClose); + // listen for up/down scrolling, enter to select, or letters to jump to country name. + // use keydown as keypress doesn't fire for non-char keys and we want to catch if they + // just hit down and hold it to scroll down (no keyup event). + // listen on the document because that's where key events are triggered if no input has focus + var query = ""; + var queryTimer = null; + this._handleKeydownOnDropdown = function(e) { + // prevent down key from scrolling the whole page, + // and enter key from submitting a form etc + e.preventDefault(); + // up and down to navigate + if (e.key === "ArrowUp" || e.key === "ArrowDown") _this9._handleUpDownKey(e.key); else if (e.key === "Enter") _this9._handleEnterKey(); else if (e.key === "Escape") _this9._closeDropdown(); else if (/^[a-zA-ZÀ-ÿ ]$/.test(e.key)) { + // jump to countries that start with the query string + if (queryTimer) clearTimeout(queryTimer); + query += e.key.toLowerCase(); + _this9._searchForCountry(query); + // if the timer hits 1 second, reset the query + queryTimer = setTimeout(function() { + query = ""; + }, 1e3); + } + }; + document.addEventListener("keydown", this._handleKeydownOnDropdown); + } + }, { + key: "_handleUpDownKey", + value: function _handleUpDownKey(key) { + var next = key === "ArrowUp" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling; + if (next) { + // skip the divider + if (next.classList.contains("divider")) { + next = key === "ArrowUp" ? next.previousElementSibling : next.nextElementSibling; + } + this._highlightListItem(next); + this._scrollTo(next); + } + } + }, { + key: "_handleEnterKey", + value: function _handleEnterKey() { + if (this.highlightedItem) this._selectListItem(this.highlightedItem); + } + }, { + key: "_searchForCountry", + value: function _searchForCountry(query) { + for (var i = 0; i < this.countries.length; i++) { + if (this._startsWith(this.countries[i].name, query)) { + var listItem = this.countryList.querySelector("#iti-item-".concat(this.countries[i].iso2)); + // update highlighting and scroll + this._highlightListItem(listItem); + this._scrollTo(listItem, true); + break; + } + } + } + }, { + key: "_startsWith", + value: function _startsWith(a, b) { + return a.substr(0, b.length).toLowerCase() === b; + } + }, { + key: "_updateValFromNumber", + value: function _updateValFromNumber(originalNumber) { + var number = originalNumber; + if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) { + var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== "+"); + var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL; + var format = useNational ? NATIONAL : INTERNATIONAL; + number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format); + } + number = this._beforeSetNumber(number); + this.telInput.value = number; + } + }, { + key: "_updateFlagFromNumber", + value: function _updateFlagFromNumber(originalNumber) { + // if we're in nationalMode and we already have US/Canada selected, make sure the number starts + // with a +1 so _getDialCode will be able to extract the area code + // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag + // from the number), that means we're initialising the plugin with a number that already has a + // dial code, so fine to ignore this bit + var number = originalNumber; + var isNanp = this.selectedCountryData.dialCode === "1"; + if (number && this.options.nationalMode && isNanp && number.charAt(0) !== "+") { + if (number.charAt(0) !== "1") number = "1".concat(number); + number = "+".concat(number); + } + // try and extract valid dial code from input + var dialCode = this._getDialCode(number); + var numeric = this._getNumeric(number); + var countryCode = null; + if (dialCode) { + // check if one of the matching countries is already selected + var countryCodes = this.countryCodes[this._getNumeric(dialCode)]; + var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1; + // check if the given number contains a NANP area code i.e. the only dialCode that could be + // extracted was +1 (instead of say +1204) and the actual number's length is >=4 + var isNanpAreaCode = dialCode === "+1" && numeric.length >= 4; + var isRegionlessNanpNumber = this.selectedCountryData.dialCode === "1" && this._isRegionlessNanp(numeric); + // only update the flag if: + // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp) + // AND + // B) either a matching country is not already selected OR the number contains a NANP area + // code (ensure the flag is set to the first matching country) + if (!isRegionlessNanpNumber && (!alreadySelected || isNanpAreaCode)) { + // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first + // non-empty index + for (var j = 0; j < countryCodes.length; j++) { + if (countryCodes[j]) { + countryCode = countryCodes[j]; + break; + } + } + } + } else if (number.charAt(0) === "+" && numeric.length) { + // invalid dial code, so empty + // Note: use getNumeric here because the number has not been formatted yet, so could contain + // bad chars + countryCode = ""; + } else if (!number || number === "+") { + // empty, or just a plus, so default + countryCode = this.defaultCountry; + } + if (countryCode !== null) { + return this._setFlag(countryCode); + } + return false; + } + }, { + key: "_isRegionlessNanp", + value: function _isRegionlessNanp(number) { + var numeric = this._getNumeric(number); + if (numeric.charAt(0) === "1") { + var areaCode = numeric.substr(1, 3); + return regionlessNanpNumbers.indexOf(areaCode) !== -1; + } + return false; + } + }, { + key: "_highlightListItem", + value: function _highlightListItem(listItem) { + var prevItem = this.highlightedItem; + if (prevItem) prevItem.classList.remove("highlight"); + this.highlightedItem = listItem; + this.highlightedItem.classList.add("highlight"); + } + }, { + key: "_getCountryData", + value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) { + var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries; + for (var i = 0; i < countryList.length; i++) { + if (countryList[i].iso2 === countryCode) { + return countryList[i]; + } + } + if (allowFail) { + return null; + } + throw new Error("No country data for '".concat(countryCode, "'")); + } + }, { + key: "_setFlag", + value: function _setFlag(countryCode) { + var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {}; + // do this first as it will throw an error and stop if countryCode is invalid + this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {}; + // update the defaultCountry - we only need the iso2 from now on, so just store that + if (this.selectedCountryData.iso2) { + this.defaultCountry = this.selectedCountryData.iso2; + } + this.selectedFlagInner.setAttribute("class", "iti-flag ".concat(countryCode)); + // update the selected country's title attribute + var title = countryCode ? "".concat(this.selectedCountryData.name, ": +").concat(this.selectedCountryData.dialCode) : "Unknown"; + this.selectedFlag.setAttribute("title", title); + if (this.options.separateDialCode) { + var dialCode = this.selectedCountryData.dialCode ? "+".concat(this.selectedCountryData.dialCode) : ""; + var parent = this.telInput.parentNode; + if (prevCountry.dialCode) { + parent.classList.remove("iti-sdc-".concat(prevCountry.dialCode.length + 1)); + } + if (dialCode) { + parent.classList.add("iti-sdc-".concat(dialCode.length)); + } + this.selectedDialCode.innerHTML = dialCode; + } + // and the input's placeholder + this._updatePlaceholder(); + // update the active list item + if (this.options.allowDropdown) { + var prevItem = this.activeItem; + if (prevItem) { + prevItem.classList.remove("active"); + prevItem.setAttribute("aria-selected", "false"); + } + if (countryCode) { + var nextItem = this.countryList.querySelector("#iti-item-".concat(countryCode)); + nextItem.setAttribute("aria-selected", "true"); + nextItem.classList.add("active"); + this.activeItem = nextItem; + this.countryList.setAttribute("aria-activedescendant", nextItem.getAttribute("id")); + } + } + // return if the flag has changed or not + return prevCountry.iso2 !== countryCode; + } + }, { + key: "_updatePlaceholder", + value: function _updatePlaceholder() { + var shouldSetPlaceholder = this.options.autoPlaceholder === "aggressive" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === "polite"; + if (window.intlTelInputUtils && shouldSetPlaceholder) { + var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType]; + var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : ""; + placeholder = this._beforeSetNumber(placeholder); + if (typeof this.options.customPlaceholder === "function") { + placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData); + } + this.telInput.setAttribute("placeholder", placeholder); + } + } + }, { + key: "_selectListItem", + value: function _selectListItem(listItem) { + // update selected flag and active list item + var flagChanged = this._setFlag(listItem.getAttribute("data-country-code")); + this._closeDropdown(); + this._updateDialCode(listItem.getAttribute("data-dial-code"), true); + // focus the input + this.telInput.focus(); + // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto + // inserting dial code), who try to put the cursor at the beginning the first time + var len = this.telInput.value.length; + this.telInput.setSelectionRange(len, len); + if (flagChanged) { + this._triggerCountryChange(); + } + } + }, { + key: "_closeDropdown", + value: function _closeDropdown() { + this.countryList.classList.add("hide"); + this.countryList.setAttribute("aria-expanded", "false"); + // update the arrow + this.dropdownArrow.classList.remove("up"); + // unbind key events + document.removeEventListener("keydown", this._handleKeydownOnDropdown); + document.documentElement.removeEventListener("click", this._handleClickOffToClose); + this.countryList.removeEventListener("mouseover", this._handleMouseoverCountryList); + this.countryList.removeEventListener("click", this._handleClickCountryList); + // remove menu from container + if (this.options.dropdownContainer) { + if (!this.isMobile) window.removeEventListener("scroll", this._handleWindowScroll); + if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown); + } + this._trigger("close:countrydropdown"); + } + }, { + key: "_scrollTo", + value: function _scrollTo(element, middle) { + var container = this.countryList; + // windowTop from https://stackoverflow.com/a/14384091/217866 + var windowTop = window.pageYOffset || document.documentElement.scrollTop; + var containerHeight = container.offsetHeight; + var containerTop = container.getBoundingClientRect().top + windowTop; + var containerBottom = containerTop + containerHeight; + var elementHeight = element.offsetHeight; + var elementTop = element.getBoundingClientRect().top + windowTop; + var elementBottom = elementTop + elementHeight; + var newScrollTop = elementTop - containerTop + container.scrollTop; + var middleOffset = containerHeight / 2 - elementHeight / 2; + if (elementTop < containerTop) { + // scroll up + if (middle) newScrollTop -= middleOffset; + container.scrollTop = newScrollTop; + } else if (elementBottom > containerBottom) { + // scroll down + if (middle) newScrollTop += middleOffset; + var heightDifference = containerHeight - elementHeight; + container.scrollTop = newScrollTop - heightDifference; + } + } + }, { + key: "_updateDialCode", + value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) { + var inputVal = this.telInput.value; + // save having to pass this every time + var newDialCode = "+".concat(newDialCodeBare); + var newNumber; + if (inputVal.charAt(0) === "+") { + // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not) + var prevDialCode = this._getDialCode(inputVal); + if (prevDialCode) { + // current number contains a valid dial code, so replace it + newNumber = inputVal.replace(prevDialCode, newDialCode); + } else { + // current number contains an invalid dial code, so ditch it + // (no way to determine where the invalid dial code ends and the rest of the number begins) + newNumber = newDialCode; + } + } else if (this.options.nationalMode || this.options.separateDialCode) { + // don't do anything + return; + } else { + // nationalMode is disabled + if (inputVal) { + // there is an existing value with no dial code: prefix the new dial code + newNumber = newDialCode + inputVal; + } else if (hasSelectedListItem || !this.options.autoHideDialCode) { + // no existing value and either they've just selected a list item, or autoHideDialCode is + // disabled: insert new dial code + newNumber = newDialCode; + } else { + return; + } + } + this.telInput.value = newNumber; + } + }, { + key: "_getDialCode", + value: function _getDialCode(number) { + var dialCode = ""; + // only interested in international numbers (starting with a plus) + if (number.charAt(0) === "+") { + var numericChars = ""; + // iterate over chars + for (var i = 0; i < number.length; i++) { + var c = number.charAt(i); + // if char is number (https://stackoverflow.com/a/8935649/217866) + if (!isNaN(parseInt(c, 10))) { + numericChars += c; + // if current numericChars make a valid dial code + if (this.countryCodes[numericChars]) { + // store the actual raw string (useful for matching later) + dialCode = number.substr(0, i + 1); + } + // longest dial code is 4 chars + if (numericChars.length === 4) { + break; + } + } + } + } + return dialCode; + } + }, { + key: "_getFullNumber", + value: function _getFullNumber() { + var val = this.telInput.value.trim(); + var dialCode = this.selectedCountryData.dialCode; + var prefix; + var numericVal = this._getNumeric(val); + // normalized means ensure starts with a 1, so we can match against the full dial code + var normalizedVal = numericVal.charAt(0) === "1" ? numericVal : "1".concat(numericVal); + if (this.options.separateDialCode) { + // when using separateDialCode, it is visible so is effectively part of the typed number + prefix = "+".concat(dialCode); + } else if (val && val.charAt(0) !== "+" && val.charAt(0) !== "1" && dialCode && dialCode.charAt(0) === "1" && dialCode.length === 4 && dialCode !== normalizedVal.substr(0, 4)) { + // ensure national NANP numbers contain the area code + prefix = dialCode.substr(1); + } else { + prefix = ""; + } + return prefix + val; + } + }, { + key: "_beforeSetNumber", + value: function _beforeSetNumber(originalNumber) { + var number = originalNumber; + if (this.options.separateDialCode) { + var dialCode = this._getDialCode(number); + if (dialCode) { + // US dialCode is "+1", which is what we want + // CA dialCode is "+1 123", which is wrong - should be "+1" (as it has multiple area codes) + // AS dialCode is "+1 684", which is what we want (as it doesn't have area codes) + // Solution: if the country has area codes, then revert to just the dial code + if (this.selectedCountryData.areaCodes !== null) { + dialCode = "+".concat(this.selectedCountryData.dialCode); + } + // a lot of numbers will have a space separating the dial code and the main number, and + // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get + // rid of it + // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc + var start = number[dialCode.length] === " " || number[dialCode.length] === "-" ? dialCode.length + 1 : dialCode.length; + number = number.substr(start); + } + } + return this._cap(number); + } + }, { + key: "_triggerCountryChange", + value: function _triggerCountryChange() { + this._trigger("countrychange"); + } + }, { + key: "handleAutoCountry", + value: function handleAutoCountry() { + if (this.options.initialCountry === "auto") { + // we must set this even if there is an initial val in the input: in case the initial val is + // invalid and they delete it - they should see their auto country + this.defaultCountry = window.intlTelInputGlobals.autoCountry; + // if there's no initial value in the input, then update the flag + if (!this.telInput.value) { + this.setCountry(this.defaultCountry); + } + this.resolveAutoCountryPromise(); + } + } + }, { + key: "handleUtils", + value: function handleUtils() { + // if the request was successful + if (window.intlTelInputUtils) { + // if there's an initial value in the input, then format it + if (this.telInput.value) { + this._updateValFromNumber(this.telInput.value); + } + this._updatePlaceholder(); + } + this.resolveUtilsScriptPromise(); + } + }, { + key: "destroy", + value: function destroy() { + var form = this.telInput.form; + if (this.options.allowDropdown) { + // make sure the dropdown is closed (and unbind listeners) + this._closeDropdown(); + this.selectedFlag.removeEventListener("click", this._handleClickSelectedFlag); + this.flagsContainer.removeEventListener("keydown", this._handleFlagsContainerKeydown); + // label click hack + var label = this._getClosestLabel(); + if (label) label.removeEventListener("click", this._handleLabelClick); + } + // unbind hiddenInput listeners + if (this.hiddenInput && form) form.removeEventListener("submit", this._handleHiddenInputSubmit); + // unbind autoHideDialCode listeners + if (this.options.autoHideDialCode) { + this.telInput.removeEventListener("mousedown", this._handleMousedownFocusEvent); + this.telInput.removeEventListener("focus", this._handleFocusEvent); + if (form) form.removeEventListener("submit", this._handleSubmitOrBlurEvent); + this.telInput.removeEventListener("blur", this._handleSubmitOrBlurEvent); + } + // unbind all events: key events, and focus/blur events if autoHideDialCode=true + this.telInput.removeEventListener("keyup", this._handleKeyupEvent); + this.telInput.removeEventListener("cut", this._handleClipboardEvent); + this.telInput.removeEventListener("paste", this._handleClipboardEvent); + // remove markup (but leave the original input) + var wrapper = this.telInput.parentNode; + wrapper.parentNode.insertBefore(this.telInput, wrapper); + wrapper.parentNode.removeChild(wrapper); + delete window.intlTelInputGlobals.instances[this.id]; + } + }, { + key: "getExtension", + value: function getExtension() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2); + } + return ""; + } + }, { + key: "getNumber", + value: function getNumber(format) { + if (window.intlTelInputUtils) { + var iso2 = this.selectedCountryData.iso2; + return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format); + } + return ""; + } + }, { + key: "getNumberType", + value: function getNumberType() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2); + } + return -99; + } + }, { + key: "getSelectedCountryData", + value: function getSelectedCountryData() { + return this.selectedCountryData; + } + }, { + key: "getValidationError", + value: function getValidationError() { + if (window.intlTelInputUtils) { + var iso2 = this.selectedCountryData.iso2; + return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2); + } + return -99; + } + }, { + key: "isValidNumber", + value: function isValidNumber() { + var val = this._getFullNumber().trim(); + var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : ""; + return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null; + } + }, { + key: "setCountry", + value: function setCountry(originalCountryCode) { + var countryCode = originalCountryCode.toLowerCase(); + // check if already selected + if (!this.selectedFlagInner.classList.contains(countryCode)) { + this._setFlag(countryCode); + this._updateDialCode(this.selectedCountryData.dialCode, false); + this._triggerCountryChange(); + } + } + }, { + key: "setNumber", + value: function setNumber(number) { + // we must update the flag first, which updates this.selectedCountryData, which is used for + // formatting the number before displaying it + var flagChanged = this._updateFlagFromNumber(number); + this._updateValFromNumber(number); + if (flagChanged) { + this._triggerCountryChange(); + } + } + }, { + key: "setPlaceholderNumberType", + value: function setPlaceholderNumberType(type) { + this.options.placeholderNumberType = type; + this._updatePlaceholder(); + } + } ]); + return Iti; + }(); + /******************** + * STATIC METHODS + ********************/ + // get the country data object + window.intlTelInputGlobals.getCountryData = function() { + return allCountries; + }; + // inject a + + ``` + +5. **Recommended:** initialise the plugin with the `utilsScript` option to enable formatting/validation, and to allow you to extract full international numbers using `getNumber`. + + +## Recommended Usage +We highly recommend you load the included utils.js using the `utilsScript` option. Then the plugin is built to always deal with numbers in the full international format (e.g. "+17024181234") and convert them accordingly - even when `nationalMode` or `separateDialCode` is enabled. I recommend you get, store, and set numbers exclusively in this format for simplicity - then you don't have to deal with handling the country code separately, as full international numbers include the country code information. + +You can always get the full international number (including country code) using `getNumber`, then you only have to store that one string in your database (you don't have to store the country separately), and then the next time you initialise the plugin with that number it will automatically set the country and format it according to the options you specify (e.g. if you enable `nationalMode` it will automatically remove the international dial code for you). + + +## Options +Note: any options that take country codes should be [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) codes + +**allowDropdown** +Type: `Boolean` Default: `true` +Whether or not to allow the dropdown. If disabled, there is no dropdown arrow, and the selected flag is not clickable. Also we display the selected flag on the right instead because it is just a marker of state. + +**~~autoFormat~~ [REMOVED]** +Automatically format the number as the user types. Unfortunately this had to be removed for the reasons listed here: [#346 Disable and remove autoFormat feature](https://github.com/jackocnr/intl-tel-input/issues/346). + +**autoHideDialCode** +Type: `Boolean` Default: `true` +If there is just a dial code in the input: remove it on blur or submit. This is to prevent just a dial code getting submitted with the form. Requires `nationalMode` to be set to `false`. + +**autoPlaceholder** +Type: `String` Default: `"polite"` +Set the input's placeholder to an example number for the selected country, and update it if the country changes. You can specify the number type using the `placeholderNumberType` option. By default it is set to `"polite"`, which means it will only set the placeholder if the input doesn't already have one. You can also set it to `"aggressive"`, which will replace any existing placeholder, or `"off"`. Requires the `utilsScript` option. + +**customContainer** +Type: `String` Default: `""` +Additional classes to add to the parent div. + +**customPlaceholder** +Type: `Function` Default: `null` +Change the placeholder generated by autoPlaceholder. Must return a string. + +```js +intlTelInput(input, { + customPlaceholder: function(selectedCountryPlaceholder, selectedCountryData) { + return "e.g. " + selectedCountryPlaceholder; + }, +}); +``` + +**dropdownContainer** +Type: `Node` Default: `null` +Expects a node e.g. `document.body`. Instead of putting the country dropdown next to the input, append it to the specified node, and it will then be positioned absolutely next to the input using JavaScript. This is useful when the input is inside a container with `overflow: hidden`. Note that the absolute positioning can be broken by scrolling, so it will automatically close on the `window` scroll event. + +**excludeCountries** +Type: `Array` Default: `undefined` +In the dropdown, display all countries except the ones you specify here. + +**formatOnDisplay** +Type: `Boolean` Default: `true` +Format the input value (according to the `nationalMode` option) during initialisation, and on `setNumber`. Requires the `utilsScript` option. + +**geoIpLookup** +Type: `Function` Default: `null` +When setting `initialCountry` to `"auto"`, you must use this option to specify a custom function that looks up the user's location, and then calls the success callback with the relevant country code. Also note that when instantiating the plugin, if the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) object is defined, one of those is returned under the `promise` instance property, so you can do something like `iti.promise.then(callback)` to know when initialisation requests like this have completed. + +Here is an example using the [ipinfo.io](https://ipinfo.io/) service: +```js +intlTelInput(input, { + initialCountry: "auto", + geoIpLookup: function(success, failure) { + $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { + var countryCode = (resp && resp.country) ? resp.country : ""; + success(countryCode); + }); + }, +}); +``` +_Note that the callback must still be called in the event of an error, hence the use of `always` in this example._ +_Tip: store the result in a cookie to avoid repeat lookups!_ + +**hiddenInput** +Type: `String` Default: `""` +Add a hidden input with the given name. Alternatively, if your input name contains square brackets (e.g. `name="phone_number[main]"`) then it will give the hidden input the same name, replacing the contents of the brackets with the given name (e.g. if you init the plugin with `hiddenInput: "full"`, then in this case the hidden input would have `name="phone_number[full]"`). On submit, it will automatically populate the hidden input with the full international number (using `getNumber`). This is a quick way for people using non-ajax forms to get the full international number, even when `nationalMode` is enabled. _Note: requires the input to be inside a form element, as this feature works by listening for the submit event on the closest form element. Also note that since this uses `getNumber` internally, it expects a valid number, and so should only be used after validation._ + +**initialCountry** +Type: `String` Default: `""` +Set the initial country selection by specifying its country code. You can also set it to `"auto"`, which will lookup the user's country based on their IP address (requires the `geoIpLookup` option - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/default-country-ip.html)). Note that the `"auto"` option will not update the country selection if the input already contains a number. + +If you leave `initialCountry` blank, it will default to the first country in the list. + +**localizedCountries** +Type: `Object` Default: `{}` +Allows to translate the countries by its given iso code e.g.: + +```js +{ 'de': 'Deutschland' } +``` + +**nationalMode** +Type: `Boolean` Default: `true` +Allow users to enter national numbers (and not have to think about international dial codes). Formatting, validation and placeholders still work. Then you can use `getNumber` to extract a full international number - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/national-mode.html). This option now defaults to `true`, and it is recommended that you leave it that way as it provides a better experience for the user. + +**onlyCountries** +Type: `Array` Default: `undefined` +In the dropdown, display only the countries you specify - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/only-countries-europe.html). + +**placeholderNumberType** +Type: `String` Default: `"MOBILE"` +Specify [one of the keys](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/utils.js#L119) from the global enum `intlTelInputUtils.numberType` e.g. `"FIXED_LINE"` to set the number type to use for the placeholder. + +**preferredCountries** +Type: `Array` Default: `["us", "gb"]` +Specify the countries to appear at the top of the list. + +**~~preventInvalidNumbers~~ [REMOVED]** +Prevent the user from entering invalid characters. Unfortunately this had to be removed for the reasons listed here: [#79 Limit Input Characters to Formatted String Length](https://github.com/jackocnr/intl-tel-input/issues/79#issuecomment-121799307). + +**separateDialCode** +Type: `Boolean` Default: `false` +Display the country dial code next to the selected flag so it's not part of the typed number. Note that this will disable `nationalMode` because technically we are dealing with international numbers, but with the dial code separated. + + + +**utilsScript** +Type: `String` Default: `""` Example: `"build/js/utils.js"` +Enable formatting/validation etc. by specifying the URL of the included utils.js script (or alternatively just point it to the file on [cdnjs.com](https://cdnjs.com/libraries/intl-tel-input)). The script is fetched when the page has finished loading (on the window load event) to prevent blocking (the script is ~215KB). When instantiating the plugin, if the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) object is defined, one of those is returned under the `promise` instance property, so you can do something like `iti.promise.then(callback)` to know when initialisation requests like this have finished. See [Utilities Script](#utilities-script) for more information. _Note that if you're lazy loading the plugin script itself (intlTelInput.js) this will not work and you will need to use the `loadUtils` method instead._ + + +## Public Methods +In these examples, `iti` refers to the plugin instance which gets returned when you initialise the plugin e.g. `var iti = intlTelInput(input)` + +**destroy** +Remove the plugin from the input, and unbind any event listeners. +```js +iti.destroy(); +``` + +**getExtension** +Get the extension from the current number. Requires the `utilsScript` option. +```js +var extension = iti.getExtension(); +``` +Returns a string e.g. if the input value was `"(702) 555-5555 ext. 1234"`, this would return `"1234"` + +**getNumber** +Get the current number in the given format (defaults to [E.164 standard](http://en.wikipedia.org/wiki/E.164)). The different formats are available in the enum `intlTelInputUtils.numberFormat` - which you can see [here](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/utils.js#L109). Requires the `utilsScript` option. _Note that even if `nationalMode` is enabled, this can still return a full international number. Also note that this method expects a valid number, and so should only be used after validation._ +```js +var number = iti.getNumber(); +// or +var number = iti.getNumber(intlTelInputUtils.numberFormat.E164); +``` +Returns a string e.g. `"+17024181234"` + +**getNumberType** +Get the type (fixed-line/mobile/toll-free etc) of the current number. Requires the `utilsScript` option. +```js +var numberType = iti.getNumberType(); +``` +Returns an integer, which you can match against the [various options](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/utils.js#L119) in the global enum `intlTelInputUtils.numberType` e.g. +```js +if (numberType === intlTelInputUtils.numberType.MOBILE) { + // is a mobile number +} +``` +_Note that in the US there's no way to differentiate between fixed-line and mobile numbers, so instead it will return `FIXED_LINE_OR_MOBILE`._ + +**getSelectedCountryData** +Get the country data for the currently selected flag. +```js +var countryData = iti.getSelectedCountryData(); +``` +Returns something like this: +```js +{ + name: "Afghanistan (‫اÙغانستان‬‎)", + iso2: "af", + dialCode: "93" +} +``` + +**getValidationError** +Get more information about a validation error. Requires the `utilsScript` option. +```js +var error = iti.getValidationError(); +``` +Returns an integer, which you can match against the [various options](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/utils.js#L153) in the global enum `intlTelInputUtils.validationError` e.g. +```js +if (error === intlTelInputUtils.validationError.TOO_SHORT) { + // the number is too short +} +``` + +**isValidNumber** +Validate the current number - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/is-valid-number.html). Expects an internationally formatted number (unless `nationalMode` is enabled). If validation fails, you can use `getValidationError` to get more information. Requires the `utilsScript` option. Also see `getNumberType` if you want to make sure the user enters a certain type of number e.g. a mobile number. +```js +var isValid = iti.isValidNumber(); +``` +Returns: `true`/`false` + +**setCountry** +Change the country selection (e.g. when the user is entering their address). +```js +iti.setCountry("gb"); +``` + +**setNumber** +Insert a number, and update the selected flag accordingly. _Note that if `formatOnDisplay` is enabled, this will attempt to format the number according to the `nationalMode` option._ +```js +iti.setNumber("+447733123456"); +``` + +**setPlaceholderNumberType** +Change the placeholderNumberType option. +```js +iti.setPlaceholderNumberType("FIXED_LINE"); +``` + + +## Static Methods + +**getCountryData** +Get all of the plugin's country data - either to re-use elsewhere e.g. to populate a country dropdown - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/country-sync.html), or to modify - [see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/modify-country-data.html). Note that any modifications must be done before initialising the plugin. +```js +var countryData = window.intlTelInputGlobals.getCountryData(); +``` +Returns an array of country objects: +```js +[{ + name: "Afghanistan (‫اÙغانستان‬‎)", + iso2: "af", + dialCode: "93" +}, ...] +``` + +**getInstance** +After initialising the plugin, you can always access the instance again using this method, by just passing in the relevant input element. +```js +var input = document.querySelector('#phone'); +var iti = window.intlTelInputGlobals.getInstance(input); +iti.isValidNumber(); // etc +``` + +**loadUtils** +_Note: this is only needed if you're lazy loading the plugin script itself (intlTelInput.js). If not then just use the `utilsScript` option._ +Load the utils.js script (included in the lib directory) to enable formatting/validation etc. See [Utilities Script](#utilities-script) for more information. This method should only be called once per page. If the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) object is defined, one of those is returned so you can use `.then(callback)` to know when it's finished. +```js +window.intlTelInputGlobals.loadUtils("build/js/utils.js"); +``` + +**~~setCountryData~~ [REMOVED]** +Set the plugin's country data. This method was removed because it makes much more sense to just use `getCountryData` and then modify that ([see example](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/modify-country-data.html)) instead of having to generate the whole thing yourself - the country data has become increasingly complicated and for each country we now have five properties: the name, [iso2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), international dial code, priority (in case two countries have the same international dial code), and finally a list of area codes used in that country - see [data.js](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/data.js#L36) for more info. + + +## Events +You can listen for the following events on the input. + +**countrychange** +This is triggered when the user selects a country from the dropdown. +```js +input.addEventListener("countrychange", function() { + // do something with iti.getSelectedCountryData() +}); +``` +See an example here: [Country sync](http://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/country-sync.html) + +**open:countrydropdown** +This is triggered when the user opens the dropdown. + +**close:countrydropdown** +This is triggered when the user closes the dropdown. + + +## Utilities Script +The utilities script ([build/js/utils.js](build/js/utils.js)) is a custom build of Google's [libphonenumber](https://github.com/googlei18n/libphonenumber) which enables the following features: + +* Formatting upon initialisation, as well as with `getNumber` and `setNumber` +* Validation with `isValidNumber`, `getNumberType` and `getValidationError` methods +* Placeholder set to an example number for the selected country - even specify the type of number (e.g. mobile) using the `placeholderNumberType` option +* Extract the standardised (E.164) international number with `getNumber` even when using the `nationalMode` option + +International number formatting/validation is hard (it varies by country/district, and we currently support ~230 countries). The only comprehensive solution I have found is libphonenumber, from which I have precompiled the relevant parts into a single JavaScript file and included in the build directory. Unfortunately even after minification it is still ~215KB, but if you use the `utilsScript` option then it will only fetch the script when the page has finished loading (to prevent blocking). If size is not a concern, then you can manually include the script yourself however you like, and as long as it has loaded before you initialise the plugin then it should work fine. + +To recompile the utils script yourself (e.g. to update the version of libphonenumber it is built from), see the [contributing guide](https://github.com/jackocnr/intl-tel-input/blob/master/.github/CONTRIBUTING.md#updating-to-a-new-version-of-libphonenumber). + + +## Troubleshooting + +**Full width input** +If you want your input to be full-width, you need to set the container to be the same i.e. +```css +.iti { width: 100%; } +``` + +**dropdownContainer: dropdown not closing on scroll** +If you have a scrolling container other than `window` which is causing problems by not closing the dropdown on scroll, simply listen for the scroll event on that element, and trigger a scroll event on `window`, which in turn will close the dropdown e.g. + +```js +scrollingElement.addEventListener("scroll", function() { + var e = document.createEvent('Event'); + e.initEvent("scroll", true, true); + window.dispatchEvent(e); +}); +``` + +**Input margin** +For the sake of alignment, the default CSS forces the input's vertical margin to `0px`. If you want vertical margin, you should add it to the container (with class `iti`). + +**Displaying error messages** +If your error handling code inserts an error message before the `` it will break the layout. Instead you must insert it before the container (with class `iti`). + +**Dropdown position** +The dropdown should automatically appear above/below the input depending on the available space. For this to work properly, you must only initialise the plugin after the `` has been added to the DOM. + +**Placeholders** +In order to get the automatic country-specific placeholders, simply omit the placeholder attribute on the ``. + +**Bootstrap input groups** +A couple of CSS fixes are required to get the plugin to play nice with Bootstrap [input groups](http://getbootstrap.com/components/#input-groups). You can see a Codepen [here](http://codepen.io/jackocnr/pen/EyPXed). +_Note: there is currently [a bug](https://bugs.webkit.org/show_bug.cgi?id=141822) in Mobile Safari which causes a crash when you click the dropdown arrow (a CSS triangle) inside an input group. The simplest workaround is to remove the CSS triangle with this line: `.intl-tel-input .iti-flag .arrow {border: none;}`_ + + +## Contributing +See the [contributing guide](https://github.com/jackocnr/intl-tel-input/blob/master/.github/CONTRIBUTING.md) for instructions on setting up the project and making changes, and also for how to update to a new version of libphonenumber, or how to update the flag images. + + +## Attributions +* Flag images from [region-flags](https://github.com/behdad/region-flags) +* Original country data from mledoze's [World countries in JSON, CSV and XML](https://github.com/mledoze/countries) +* Formatting/validation/example number code from [libphonenumber](https://github.com/googlei18n/libphonenumber) +* Feature contributions are listed in the wiki: [Contributions](https://github.com/jackocnr/intl-tel-input/wiki/Contributions) + + +## Links +* List of [sites using intl-tel-input](https://github.com/jackocnr/intl-tel-input/wiki/Sites-using-intl-tel-input) +* List of [integrations with intl-tel-input](https://github.com/jackocnr/intl-tel-input/wiki/Integrations) +* Android native port: [IntlPhoneInput](https://github.com/Rimoto/IntlPhoneInput) +* Typescript type definitions are available in the [DefinitelyTyped repo](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/intl-tel-input/intl-tel-input.d.ts) (more info [here](https://github.com/jackocnr/intl-tel-input/issues/433#issuecomment-228517623)) + + + + +Tested on [BrowserStack](https://www.browserstack.com) diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/bower.json b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/bower.json new file mode 100644 index 000000000..aa10dda64 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/bower.json @@ -0,0 +1,7 @@ +{ + "name": "intl-tel-input", + "main": [ + "./build/js/intlTelInput.js", + "./build/css/intlTelInput.css" + ] +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/demo.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/demo.css new file mode 100644 index 000000000..7db21aa42 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/demo.css @@ -0,0 +1,62 @@ +* { + box-sizing: border-box; + -moz-box-sizing: border-box; } + +body { + margin: 20px; + font-size: 14px; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + color: #555; } + +.iti__hide { + display: none; } + +pre { + margin: 0 !important; + display: inline-block; } + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + background: none; } + +input, button { + height: 35px; + margin: 0; + padding: 6px 12px; + border-radius: 2px; + font-family: inherit; + font-size: 100%; + color: inherit; } + input[disabled], button[disabled] { + background-color: #eee; } + +input, select { + border: 1px solid #CCC; + width: 250px; } + +::-webkit-input-placeholder { + color: #BBB; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #BBB; + opacity: 1; } + +:-ms-input-placeholder { + color: #BBB; } + +button { + color: #FFF; + background-color: #428BCA; + border: 1px solid #357EBD; } + button:hover { + background-color: #3276B1; + border-color: #285E8E; + cursor: pointer; } + +#result { + margin-bottom: 100px; } diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.css new file mode 100644 index 000000000..cb773f938 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.css @@ -0,0 +1,928 @@ +.iti { + position: relative; + display: inline-block; } + .iti * { + box-sizing: border-box; + -moz-box-sizing: border-box; } + .iti__hide { + display: none; } + .iti__v-hide { + visibility: hidden; } + .iti input, .iti input[type=text], .iti input[type=tel] { + position: relative; + z-index: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; + padding-right: 36px; + margin-right: 0; } + .iti__flag-container { + position: absolute; + top: 0; + bottom: 0; + right: 0; + padding: 1px; } + .iti__selected-flag { + z-index: 1; + position: relative; + display: flex; + align-items: center; + height: 100%; + padding: 0 6px 0 8px; } + .iti__arrow { + margin-left: 6px; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 4px solid #555; } + .iti__arrow--up { + border-top: none; + border-bottom: 4px solid #555; } + .iti__country-list { + position: absolute; + z-index: 2; + list-style: none; + text-align: left; + padding: 0; + margin: 0 0 0 -1px; + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); + background-color: white; + border: 1px solid #CCC; + white-space: nowrap; + max-height: 200px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; } + .iti__country-list--dropup { + bottom: 100%; + margin-bottom: -1px; } + @media (max-width: 500px) { + .iti__country-list { + white-space: normal; } } + .iti__flag-box { + display: inline-block; + width: 20px; } + .iti__divider { + padding-bottom: 5px; + margin-bottom: 5px; + border-bottom: 1px solid #CCC; } + .iti__country { + padding: 5px 10px; + outline: none; } + .iti__dial-code { + color: #999; } + .iti__country.iti__highlight { + background-color: rgba(0, 0, 0, 0.05); } + .iti__flag-box, .iti__country-name, .iti__dial-code { + vertical-align: middle; } + .iti__flag-box, .iti__country-name { + margin-right: 6px; } + .iti--allow-dropdown input, .iti--allow-dropdown input[type=text], .iti--allow-dropdown input[type=tel], .iti--separate-dial-code input, .iti--separate-dial-code input[type=text], .iti--separate-dial-code input[type=tel] { + padding-right: 6px; + padding-left: 52px; + margin-left: 0; } + .iti--allow-dropdown .iti__flag-container, .iti--separate-dial-code .iti__flag-container { + right: auto; + left: 0; } + .iti--allow-dropdown .iti__flag-container:hover { + cursor: pointer; } + .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { + background-color: rgba(0, 0, 0, 0.05); } + .iti--allow-dropdown input[disabled] + .iti__flag-container:hover, + .iti--allow-dropdown input[readonly] + .iti__flag-container:hover { + cursor: default; } + .iti--allow-dropdown input[disabled] + .iti__flag-container:hover .iti__selected-flag, + .iti--allow-dropdown input[readonly] + .iti__flag-container:hover .iti__selected-flag { + background-color: transparent; } + .iti--separate-dial-code .iti__selected-flag { + background-color: rgba(0, 0, 0, 0.05); } + .iti--separate-dial-code .iti__selected-dial-code { + margin-left: 6px; } + .iti--container { + position: absolute; + top: -1000px; + left: -1000px; + z-index: 1060; + padding: 1px; } + .iti--container:hover { + cursor: pointer; } + +.iti-mobile .iti--container { + top: 30px; + bottom: 30px; + left: 30px; + right: 30px; + position: fixed; } + +.iti-mobile .iti__country-list { + max-height: 100%; + width: 100%; } + +.iti-mobile .iti__country { + padding: 10px 10px; + line-height: 1.5em; } + +.iti__flag { + width: 20px; } + .iti__flag.iti__be { + width: 18px; } + .iti__flag.iti__ch { + width: 15px; } + .iti__flag.iti__mc { + width: 19px; } + .iti__flag.iti__ne { + width: 18px; } + .iti__flag.iti__np { + width: 13px; } + .iti__flag.iti__va { + width: 15px; } + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .iti__flag { + background-size: 5652px 15px; } } + .iti__flag.iti__ac { + height: 10px; + background-position: 0px 0px; } + .iti__flag.iti__ad { + height: 14px; + background-position: -22px 0px; } + .iti__flag.iti__ae { + height: 10px; + background-position: -44px 0px; } + .iti__flag.iti__af { + height: 14px; + background-position: -66px 0px; } + .iti__flag.iti__ag { + height: 14px; + background-position: -88px 0px; } + .iti__flag.iti__ai { + height: 10px; + background-position: -110px 0px; } + .iti__flag.iti__al { + height: 15px; + background-position: -132px 0px; } + .iti__flag.iti__am { + height: 10px; + background-position: -154px 0px; } + .iti__flag.iti__ao { + height: 14px; + background-position: -176px 0px; } + .iti__flag.iti__aq { + height: 14px; + background-position: -198px 0px; } + .iti__flag.iti__ar { + height: 13px; + background-position: -220px 0px; } + .iti__flag.iti__as { + height: 10px; + background-position: -242px 0px; } + .iti__flag.iti__at { + height: 14px; + background-position: -264px 0px; } + .iti__flag.iti__au { + height: 10px; + background-position: -286px 0px; } + .iti__flag.iti__aw { + height: 14px; + background-position: -308px 0px; } + .iti__flag.iti__ax { + height: 13px; + background-position: -330px 0px; } + .iti__flag.iti__az { + height: 10px; + background-position: -352px 0px; } + .iti__flag.iti__ba { + height: 10px; + background-position: -374px 0px; } + .iti__flag.iti__bb { + height: 14px; + background-position: -396px 0px; } + .iti__flag.iti__bd { + height: 12px; + background-position: -418px 0px; } + .iti__flag.iti__be { + height: 15px; + background-position: -440px 0px; } + .iti__flag.iti__bf { + height: 14px; + background-position: -460px 0px; } + .iti__flag.iti__bg { + height: 12px; + background-position: -482px 0px; } + .iti__flag.iti__bh { + height: 12px; + background-position: -504px 0px; } + .iti__flag.iti__bi { + height: 12px; + background-position: -526px 0px; } + .iti__flag.iti__bj { + height: 14px; + background-position: -548px 0px; } + .iti__flag.iti__bl { + height: 14px; + background-position: -570px 0px; } + .iti__flag.iti__bm { + height: 10px; + background-position: -592px 0px; } + .iti__flag.iti__bn { + height: 10px; + background-position: -614px 0px; } + .iti__flag.iti__bo { + height: 14px; + background-position: -636px 0px; } + .iti__flag.iti__bq { + height: 14px; + background-position: -658px 0px; } + .iti__flag.iti__br { + height: 14px; + background-position: -680px 0px; } + .iti__flag.iti__bs { + height: 10px; + background-position: -702px 0px; } + .iti__flag.iti__bt { + height: 14px; + background-position: -724px 0px; } + .iti__flag.iti__bv { + height: 15px; + background-position: -746px 0px; } + .iti__flag.iti__bw { + height: 14px; + background-position: -768px 0px; } + .iti__flag.iti__by { + height: 10px; + background-position: -790px 0px; } + .iti__flag.iti__bz { + height: 14px; + background-position: -812px 0px; } + .iti__flag.iti__ca { + height: 10px; + background-position: -834px 0px; } + .iti__flag.iti__cc { + height: 10px; + background-position: -856px 0px; } + .iti__flag.iti__cd { + height: 15px; + background-position: -878px 0px; } + .iti__flag.iti__cf { + height: 14px; + background-position: -900px 0px; } + .iti__flag.iti__cg { + height: 14px; + background-position: -922px 0px; } + .iti__flag.iti__ch { + height: 15px; + background-position: -944px 0px; } + .iti__flag.iti__ci { + height: 14px; + background-position: -961px 0px; } + .iti__flag.iti__ck { + height: 10px; + background-position: -983px 0px; } + .iti__flag.iti__cl { + height: 14px; + background-position: -1005px 0px; } + .iti__flag.iti__cm { + height: 14px; + background-position: -1027px 0px; } + .iti__flag.iti__cn { + height: 14px; + background-position: -1049px 0px; } + .iti__flag.iti__co { + height: 14px; + background-position: -1071px 0px; } + .iti__flag.iti__cp { + height: 14px; + background-position: -1093px 0px; } + .iti__flag.iti__cr { + height: 12px; + background-position: -1115px 0px; } + .iti__flag.iti__cu { + height: 10px; + background-position: -1137px 0px; } + .iti__flag.iti__cv { + height: 12px; + background-position: -1159px 0px; } + .iti__flag.iti__cw { + height: 14px; + background-position: -1181px 0px; } + .iti__flag.iti__cx { + height: 10px; + background-position: -1203px 0px; } + .iti__flag.iti__cy { + height: 14px; + background-position: -1225px 0px; } + .iti__flag.iti__cz { + height: 14px; + background-position: -1247px 0px; } + .iti__flag.iti__de { + height: 12px; + background-position: -1269px 0px; } + .iti__flag.iti__dg { + height: 10px; + background-position: -1291px 0px; } + .iti__flag.iti__dj { + height: 14px; + background-position: -1313px 0px; } + .iti__flag.iti__dk { + height: 15px; + background-position: -1335px 0px; } + .iti__flag.iti__dm { + height: 10px; + background-position: -1357px 0px; } + .iti__flag.iti__do { + height: 14px; + background-position: -1379px 0px; } + .iti__flag.iti__dz { + height: 14px; + background-position: -1401px 0px; } + .iti__flag.iti__ea { + height: 14px; + background-position: -1423px 0px; } + .iti__flag.iti__ec { + height: 14px; + background-position: -1445px 0px; } + .iti__flag.iti__ee { + height: 13px; + background-position: -1467px 0px; } + .iti__flag.iti__eg { + height: 14px; + background-position: -1489px 0px; } + .iti__flag.iti__eh { + height: 10px; + background-position: -1511px 0px; } + .iti__flag.iti__er { + height: 10px; + background-position: -1533px 0px; } + .iti__flag.iti__es { + height: 14px; + background-position: -1555px 0px; } + .iti__flag.iti__et { + height: 10px; + background-position: -1577px 0px; } + .iti__flag.iti__eu { + height: 14px; + background-position: -1599px 0px; } + .iti__flag.iti__fi { + height: 12px; + background-position: -1621px 0px; } + .iti__flag.iti__fj { + height: 10px; + background-position: -1643px 0px; } + .iti__flag.iti__fk { + height: 10px; + background-position: -1665px 0px; } + .iti__flag.iti__fm { + height: 11px; + background-position: -1687px 0px; } + .iti__flag.iti__fo { + height: 15px; + background-position: -1709px 0px; } + .iti__flag.iti__fr { + height: 14px; + background-position: -1731px 0px; } + .iti__flag.iti__ga { + height: 15px; + background-position: -1753px 0px; } + .iti__flag.iti__gb { + height: 10px; + background-position: -1775px 0px; } + .iti__flag.iti__gd { + height: 12px; + background-position: -1797px 0px; } + .iti__flag.iti__ge { + height: 14px; + background-position: -1819px 0px; } + .iti__flag.iti__gf { + height: 14px; + background-position: -1841px 0px; } + .iti__flag.iti__gg { + height: 14px; + background-position: -1863px 0px; } + .iti__flag.iti__gh { + height: 14px; + background-position: -1885px 0px; } + .iti__flag.iti__gi { + height: 10px; + background-position: -1907px 0px; } + .iti__flag.iti__gl { + height: 14px; + background-position: -1929px 0px; } + .iti__flag.iti__gm { + height: 14px; + background-position: -1951px 0px; } + .iti__flag.iti__gn { + height: 14px; + background-position: -1973px 0px; } + .iti__flag.iti__gp { + height: 14px; + background-position: -1995px 0px; } + .iti__flag.iti__gq { + height: 14px; + background-position: -2017px 0px; } + .iti__flag.iti__gr { + height: 14px; + background-position: -2039px 0px; } + .iti__flag.iti__gs { + height: 10px; + background-position: -2061px 0px; } + .iti__flag.iti__gt { + height: 13px; + background-position: -2083px 0px; } + .iti__flag.iti__gu { + height: 11px; + background-position: -2105px 0px; } + .iti__flag.iti__gw { + height: 10px; + background-position: -2127px 0px; } + .iti__flag.iti__gy { + height: 12px; + background-position: -2149px 0px; } + .iti__flag.iti__hk { + height: 14px; + background-position: -2171px 0px; } + .iti__flag.iti__hm { + height: 10px; + background-position: -2193px 0px; } + .iti__flag.iti__hn { + height: 10px; + background-position: -2215px 0px; } + .iti__flag.iti__hr { + height: 10px; + background-position: -2237px 0px; } + .iti__flag.iti__ht { + height: 12px; + background-position: -2259px 0px; } + .iti__flag.iti__hu { + height: 10px; + background-position: -2281px 0px; } + .iti__flag.iti__ic { + height: 14px; + background-position: -2303px 0px; } + .iti__flag.iti__id { + height: 14px; + background-position: -2325px 0px; } + .iti__flag.iti__ie { + height: 10px; + background-position: -2347px 0px; } + .iti__flag.iti__il { + height: 15px; + background-position: -2369px 0px; } + .iti__flag.iti__im { + height: 10px; + background-position: -2391px 0px; } + .iti__flag.iti__in { + height: 14px; + background-position: -2413px 0px; } + .iti__flag.iti__io { + height: 10px; + background-position: -2435px 0px; } + .iti__flag.iti__iq { + height: 14px; + background-position: -2457px 0px; } + .iti__flag.iti__ir { + height: 12px; + background-position: -2479px 0px; } + .iti__flag.iti__is { + height: 15px; + background-position: -2501px 0px; } + .iti__flag.iti__it { + height: 14px; + background-position: -2523px 0px; } + .iti__flag.iti__je { + height: 12px; + background-position: -2545px 0px; } + .iti__flag.iti__jm { + height: 10px; + background-position: -2567px 0px; } + .iti__flag.iti__jo { + height: 10px; + background-position: -2589px 0px; } + .iti__flag.iti__jp { + height: 14px; + background-position: -2611px 0px; } + .iti__flag.iti__ke { + height: 14px; + background-position: -2633px 0px; } + .iti__flag.iti__kg { + height: 12px; + background-position: -2655px 0px; } + .iti__flag.iti__kh { + height: 13px; + background-position: -2677px 0px; } + .iti__flag.iti__ki { + height: 10px; + background-position: -2699px 0px; } + .iti__flag.iti__km { + height: 12px; + background-position: -2721px 0px; } + .iti__flag.iti__kn { + height: 14px; + background-position: -2743px 0px; } + .iti__flag.iti__kp { + height: 10px; + background-position: -2765px 0px; } + .iti__flag.iti__kr { + height: 14px; + background-position: -2787px 0px; } + .iti__flag.iti__kw { + height: 10px; + background-position: -2809px 0px; } + .iti__flag.iti__ky { + height: 10px; + background-position: -2831px 0px; } + .iti__flag.iti__kz { + height: 10px; + background-position: -2853px 0px; } + .iti__flag.iti__la { + height: 14px; + background-position: -2875px 0px; } + .iti__flag.iti__lb { + height: 14px; + background-position: -2897px 0px; } + .iti__flag.iti__lc { + height: 10px; + background-position: -2919px 0px; } + .iti__flag.iti__li { + height: 12px; + background-position: -2941px 0px; } + .iti__flag.iti__lk { + height: 10px; + background-position: -2963px 0px; } + .iti__flag.iti__lr { + height: 11px; + background-position: -2985px 0px; } + .iti__flag.iti__ls { + height: 14px; + background-position: -3007px 0px; } + .iti__flag.iti__lt { + height: 12px; + background-position: -3029px 0px; } + .iti__flag.iti__lu { + height: 12px; + background-position: -3051px 0px; } + .iti__flag.iti__lv { + height: 10px; + background-position: -3073px 0px; } + .iti__flag.iti__ly { + height: 10px; + background-position: -3095px 0px; } + .iti__flag.iti__ma { + height: 14px; + background-position: -3117px 0px; } + .iti__flag.iti__mc { + height: 15px; + background-position: -3139px 0px; } + .iti__flag.iti__md { + height: 10px; + background-position: -3160px 0px; } + .iti__flag.iti__me { + height: 10px; + background-position: -3182px 0px; } + .iti__flag.iti__mf { + height: 14px; + background-position: -3204px 0px; } + .iti__flag.iti__mg { + height: 14px; + background-position: -3226px 0px; } + .iti__flag.iti__mh { + height: 11px; + background-position: -3248px 0px; } + .iti__flag.iti__mk { + height: 10px; + background-position: -3270px 0px; } + .iti__flag.iti__ml { + height: 14px; + background-position: -3292px 0px; } + .iti__flag.iti__mm { + height: 14px; + background-position: -3314px 0px; } + .iti__flag.iti__mn { + height: 10px; + background-position: -3336px 0px; } + .iti__flag.iti__mo { + height: 14px; + background-position: -3358px 0px; } + .iti__flag.iti__mp { + height: 10px; + background-position: -3380px 0px; } + .iti__flag.iti__mq { + height: 14px; + background-position: -3402px 0px; } + .iti__flag.iti__mr { + height: 14px; + background-position: -3424px 0px; } + .iti__flag.iti__ms { + height: 10px; + background-position: -3446px 0px; } + .iti__flag.iti__mt { + height: 14px; + background-position: -3468px 0px; } + .iti__flag.iti__mu { + height: 14px; + background-position: -3490px 0px; } + .iti__flag.iti__mv { + height: 14px; + background-position: -3512px 0px; } + .iti__flag.iti__mw { + height: 14px; + background-position: -3534px 0px; } + .iti__flag.iti__mx { + height: 12px; + background-position: -3556px 0px; } + .iti__flag.iti__my { + height: 10px; + background-position: -3578px 0px; } + .iti__flag.iti__mz { + height: 14px; + background-position: -3600px 0px; } + .iti__flag.iti__na { + height: 14px; + background-position: -3622px 0px; } + .iti__flag.iti__nc { + height: 10px; + background-position: -3644px 0px; } + .iti__flag.iti__ne { + height: 15px; + background-position: -3666px 0px; } + .iti__flag.iti__nf { + height: 10px; + background-position: -3686px 0px; } + .iti__flag.iti__ng { + height: 10px; + background-position: -3708px 0px; } + .iti__flag.iti__ni { + height: 12px; + background-position: -3730px 0px; } + .iti__flag.iti__nl { + height: 14px; + background-position: -3752px 0px; } + .iti__flag.iti__no { + height: 15px; + background-position: -3774px 0px; } + .iti__flag.iti__np { + height: 15px; + background-position: -3796px 0px; } + .iti__flag.iti__nr { + height: 10px; + background-position: -3811px 0px; } + .iti__flag.iti__nu { + height: 10px; + background-position: -3833px 0px; } + .iti__flag.iti__nz { + height: 10px; + background-position: -3855px 0px; } + .iti__flag.iti__om { + height: 10px; + background-position: -3877px 0px; } + .iti__flag.iti__pa { + height: 14px; + background-position: -3899px 0px; } + .iti__flag.iti__pe { + height: 14px; + background-position: -3921px 0px; } + .iti__flag.iti__pf { + height: 14px; + background-position: -3943px 0px; } + .iti__flag.iti__pg { + height: 15px; + background-position: -3965px 0px; } + .iti__flag.iti__ph { + height: 10px; + background-position: -3987px 0px; } + .iti__flag.iti__pk { + height: 14px; + background-position: -4009px 0px; } + .iti__flag.iti__pl { + height: 13px; + background-position: -4031px 0px; } + .iti__flag.iti__pm { + height: 14px; + background-position: -4053px 0px; } + .iti__flag.iti__pn { + height: 10px; + background-position: -4075px 0px; } + .iti__flag.iti__pr { + height: 14px; + background-position: -4097px 0px; } + .iti__flag.iti__ps { + height: 10px; + background-position: -4119px 0px; } + .iti__flag.iti__pt { + height: 14px; + background-position: -4141px 0px; } + .iti__flag.iti__pw { + height: 13px; + background-position: -4163px 0px; } + .iti__flag.iti__py { + height: 11px; + background-position: -4185px 0px; } + .iti__flag.iti__qa { + height: 8px; + background-position: -4207px 0px; } + .iti__flag.iti__re { + height: 14px; + background-position: -4229px 0px; } + .iti__flag.iti__ro { + height: 14px; + background-position: -4251px 0px; } + .iti__flag.iti__rs { + height: 14px; + background-position: -4273px 0px; } + .iti__flag.iti__ru { + height: 14px; + background-position: -4295px 0px; } + .iti__flag.iti__rw { + height: 14px; + background-position: -4317px 0px; } + .iti__flag.iti__sa { + height: 14px; + background-position: -4339px 0px; } + .iti__flag.iti__sb { + height: 10px; + background-position: -4361px 0px; } + .iti__flag.iti__sc { + height: 10px; + background-position: -4383px 0px; } + .iti__flag.iti__sd { + height: 10px; + background-position: -4405px 0px; } + .iti__flag.iti__se { + height: 13px; + background-position: -4427px 0px; } + .iti__flag.iti__sg { + height: 14px; + background-position: -4449px 0px; } + .iti__flag.iti__sh { + height: 10px; + background-position: -4471px 0px; } + .iti__flag.iti__si { + height: 10px; + background-position: -4493px 0px; } + .iti__flag.iti__sj { + height: 15px; + background-position: -4515px 0px; } + .iti__flag.iti__sk { + height: 14px; + background-position: -4537px 0px; } + .iti__flag.iti__sl { + height: 14px; + background-position: -4559px 0px; } + .iti__flag.iti__sm { + height: 15px; + background-position: -4581px 0px; } + .iti__flag.iti__sn { + height: 14px; + background-position: -4603px 0px; } + .iti__flag.iti__so { + height: 14px; + background-position: -4625px 0px; } + .iti__flag.iti__sr { + height: 14px; + background-position: -4647px 0px; } + .iti__flag.iti__ss { + height: 10px; + background-position: -4669px 0px; } + .iti__flag.iti__st { + height: 10px; + background-position: -4691px 0px; } + .iti__flag.iti__sv { + height: 12px; + background-position: -4713px 0px; } + .iti__flag.iti__sx { + height: 14px; + background-position: -4735px 0px; } + .iti__flag.iti__sy { + height: 14px; + background-position: -4757px 0px; } + .iti__flag.iti__sz { + height: 14px; + background-position: -4779px 0px; } + .iti__flag.iti__ta { + height: 10px; + background-position: -4801px 0px; } + .iti__flag.iti__tc { + height: 10px; + background-position: -4823px 0px; } + .iti__flag.iti__td { + height: 14px; + background-position: -4845px 0px; } + .iti__flag.iti__tf { + height: 14px; + background-position: -4867px 0px; } + .iti__flag.iti__tg { + height: 13px; + background-position: -4889px 0px; } + .iti__flag.iti__th { + height: 14px; + background-position: -4911px 0px; } + .iti__flag.iti__tj { + height: 10px; + background-position: -4933px 0px; } + .iti__flag.iti__tk { + height: 10px; + background-position: -4955px 0px; } + .iti__flag.iti__tl { + height: 10px; + background-position: -4977px 0px; } + .iti__flag.iti__tm { + height: 14px; + background-position: -4999px 0px; } + .iti__flag.iti__tn { + height: 14px; + background-position: -5021px 0px; } + .iti__flag.iti__to { + height: 10px; + background-position: -5043px 0px; } + .iti__flag.iti__tr { + height: 14px; + background-position: -5065px 0px; } + .iti__flag.iti__tt { + height: 12px; + background-position: -5087px 0px; } + .iti__flag.iti__tv { + height: 10px; + background-position: -5109px 0px; } + .iti__flag.iti__tw { + height: 14px; + background-position: -5131px 0px; } + .iti__flag.iti__tz { + height: 14px; + background-position: -5153px 0px; } + .iti__flag.iti__ua { + height: 14px; + background-position: -5175px 0px; } + .iti__flag.iti__ug { + height: 14px; + background-position: -5197px 0px; } + .iti__flag.iti__um { + height: 11px; + background-position: -5219px 0px; } + .iti__flag.iti__un { + height: 14px; + background-position: -5241px 0px; } + .iti__flag.iti__us { + height: 11px; + background-position: -5263px 0px; } + .iti__flag.iti__uy { + height: 14px; + background-position: -5285px 0px; } + .iti__flag.iti__uz { + height: 10px; + background-position: -5307px 0px; } + .iti__flag.iti__va { + height: 15px; + background-position: -5329px 0px; } + .iti__flag.iti__vc { + height: 14px; + background-position: -5346px 0px; } + .iti__flag.iti__ve { + height: 14px; + background-position: -5368px 0px; } + .iti__flag.iti__vg { + height: 10px; + background-position: -5390px 0px; } + .iti__flag.iti__vi { + height: 14px; + background-position: -5412px 0px; } + .iti__flag.iti__vn { + height: 14px; + background-position: -5434px 0px; } + .iti__flag.iti__vu { + height: 12px; + background-position: -5456px 0px; } + .iti__flag.iti__wf { + height: 14px; + background-position: -5478px 0px; } + .iti__flag.iti__ws { + height: 10px; + background-position: -5500px 0px; } + .iti__flag.iti__xk { + height: 15px; + background-position: -5522px 0px; } + .iti__flag.iti__ye { + height: 14px; + background-position: -5544px 0px; } + .iti__flag.iti__yt { + height: 14px; + background-position: -5566px 0px; } + .iti__flag.iti__za { + height: 14px; + background-position: -5588px 0px; } + .iti__flag.iti__zm { + height: 14px; + background-position: -5610px 0px; } + .iti__flag.iti__zw { + height: 10px; + background-position: -5632px 0px; } + +.iti__flag { + height: 15px; + box-shadow: 0px 0px 1px 0px #888; + background-image: url("../img/flags.png"); + background-repeat: no-repeat; + background-color: #DBDBDB; + background-position: 20px 0; } + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .iti__flag { + background-image: url("../img/flags@2x.png"); } } + +.iti__flag.iti__np { + background-color: transparent; } diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.min.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.min.css new file mode 100644 index 000000000..4deb52bc5 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/css/intlTelInput.min.css @@ -0,0 +1 @@ +.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box;-moz-box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti input,.iti input[type=tel],.iti input[type=text]{position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;padding-right:36px;margin-right:0}.iti__flag-container{position:absolute;top:0;bottom:0;right:0;padding:1px}.iti__selected-flag{z-index:1;position:relative;display:flex;align-items:center;height:100%;padding:0 6px 0 8px}.iti__arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.iti__arrow--up{border-top:none;border-bottom:4px solid #555}.iti__country-list{position:absolute;z-index:2;list-style:none;text-align:left;padding:0;margin:0 0 0 -1px;box-shadow:1px 1px 4px rgba(0,0,0,.2);background-color:#fff;border:1px solid #ccc;white-space:nowrap;max-height:200px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti__country-list--dropup{bottom:100%;margin-bottom:-1px}@media (max-width:500px){.iti__country-list{white-space:normal}}.iti__flag-box{display:inline-block;width:20px}.iti__divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.iti__country{padding:5px 10px;outline:0}.iti__dial-code{color:#999}.iti__country.iti__highlight{background-color:rgba(0,0,0,.05)}.iti__country-name,.iti__dial-code,.iti__flag-box{vertical-align:middle}.iti__country-name,.iti__flag-box{margin-right:6px}.iti--allow-dropdown input,.iti--allow-dropdown input[type=tel],.iti--allow-dropdown input[type=text],.iti--separate-dial-code input,.iti--separate-dial-code input[type=tel],.iti--separate-dial-code input[type=text]{padding-right:6px;padding-left:52px;margin-left:0}.iti--allow-dropdown .iti__flag-container,.iti--separate-dial-code .iti__flag-container{right:auto;left:0}.iti--allow-dropdown .iti__flag-container:hover{cursor:pointer}.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:rgba(0,0,0,.05)}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover{cursor:default}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover .iti__selected-flag,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover .iti__selected-flag{background-color:transparent}.iti--separate-dial-code .iti__selected-flag{background-color:rgba(0,0,0,.05)}.iti--separate-dial-code .iti__selected-dial-code{margin-left:6px}.iti--container{position:absolute;top:-1000px;left:-1000px;z-index:1060;padding:1px}.iti--container:hover{cursor:pointer}.iti-mobile .iti--container{top:30px;bottom:30px;left:30px;right:30px;position:fixed}.iti-mobile .iti__country-list{max-height:100%;width:100%}.iti-mobile .iti__country{padding:10px 10px;line-height:1.5em}.iti__flag{width:20px}.iti__flag.iti__be{width:18px}.iti__flag.iti__ch{width:15px}.iti__flag.iti__mc{width:19px}.iti__flag.iti__ne{width:18px}.iti__flag.iti__np{width:13px}.iti__flag.iti__va{width:15px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-size:5652px 15px}}.iti__flag.iti__ac{height:10px;background-position:0 0}.iti__flag.iti__ad{height:14px;background-position:-22px 0}.iti__flag.iti__ae{height:10px;background-position:-44px 0}.iti__flag.iti__af{height:14px;background-position:-66px 0}.iti__flag.iti__ag{height:14px;background-position:-88px 0}.iti__flag.iti__ai{height:10px;background-position:-110px 0}.iti__flag.iti__al{height:15px;background-position:-132px 0}.iti__flag.iti__am{height:10px;background-position:-154px 0}.iti__flag.iti__ao{height:14px;background-position:-176px 0}.iti__flag.iti__aq{height:14px;background-position:-198px 0}.iti__flag.iti__ar{height:13px;background-position:-220px 0}.iti__flag.iti__as{height:10px;background-position:-242px 0}.iti__flag.iti__at{height:14px;background-position:-264px 0}.iti__flag.iti__au{height:10px;background-position:-286px 0}.iti__flag.iti__aw{height:14px;background-position:-308px 0}.iti__flag.iti__ax{height:13px;background-position:-330px 0}.iti__flag.iti__az{height:10px;background-position:-352px 0}.iti__flag.iti__ba{height:10px;background-position:-374px 0}.iti__flag.iti__bb{height:14px;background-position:-396px 0}.iti__flag.iti__bd{height:12px;background-position:-418px 0}.iti__flag.iti__be{height:15px;background-position:-440px 0}.iti__flag.iti__bf{height:14px;background-position:-460px 0}.iti__flag.iti__bg{height:12px;background-position:-482px 0}.iti__flag.iti__bh{height:12px;background-position:-504px 0}.iti__flag.iti__bi{height:12px;background-position:-526px 0}.iti__flag.iti__bj{height:14px;background-position:-548px 0}.iti__flag.iti__bl{height:14px;background-position:-570px 0}.iti__flag.iti__bm{height:10px;background-position:-592px 0}.iti__flag.iti__bn{height:10px;background-position:-614px 0}.iti__flag.iti__bo{height:14px;background-position:-636px 0}.iti__flag.iti__bq{height:14px;background-position:-658px 0}.iti__flag.iti__br{height:14px;background-position:-680px 0}.iti__flag.iti__bs{height:10px;background-position:-702px 0}.iti__flag.iti__bt{height:14px;background-position:-724px 0}.iti__flag.iti__bv{height:15px;background-position:-746px 0}.iti__flag.iti__bw{height:14px;background-position:-768px 0}.iti__flag.iti__by{height:10px;background-position:-790px 0}.iti__flag.iti__bz{height:14px;background-position:-812px 0}.iti__flag.iti__ca{height:10px;background-position:-834px 0}.iti__flag.iti__cc{height:10px;background-position:-856px 0}.iti__flag.iti__cd{height:15px;background-position:-878px 0}.iti__flag.iti__cf{height:14px;background-position:-900px 0}.iti__flag.iti__cg{height:14px;background-position:-922px 0}.iti__flag.iti__ch{height:15px;background-position:-944px 0}.iti__flag.iti__ci{height:14px;background-position:-961px 0}.iti__flag.iti__ck{height:10px;background-position:-983px 0}.iti__flag.iti__cl{height:14px;background-position:-1005px 0}.iti__flag.iti__cm{height:14px;background-position:-1027px 0}.iti__flag.iti__cn{height:14px;background-position:-1049px 0}.iti__flag.iti__co{height:14px;background-position:-1071px 0}.iti__flag.iti__cp{height:14px;background-position:-1093px 0}.iti__flag.iti__cr{height:12px;background-position:-1115px 0}.iti__flag.iti__cu{height:10px;background-position:-1137px 0}.iti__flag.iti__cv{height:12px;background-position:-1159px 0}.iti__flag.iti__cw{height:14px;background-position:-1181px 0}.iti__flag.iti__cx{height:10px;background-position:-1203px 0}.iti__flag.iti__cy{height:14px;background-position:-1225px 0}.iti__flag.iti__cz{height:14px;background-position:-1247px 0}.iti__flag.iti__de{height:12px;background-position:-1269px 0}.iti__flag.iti__dg{height:10px;background-position:-1291px 0}.iti__flag.iti__dj{height:14px;background-position:-1313px 0}.iti__flag.iti__dk{height:15px;background-position:-1335px 0}.iti__flag.iti__dm{height:10px;background-position:-1357px 0}.iti__flag.iti__do{height:14px;background-position:-1379px 0}.iti__flag.iti__dz{height:14px;background-position:-1401px 0}.iti__flag.iti__ea{height:14px;background-position:-1423px 0}.iti__flag.iti__ec{height:14px;background-position:-1445px 0}.iti__flag.iti__ee{height:13px;background-position:-1467px 0}.iti__flag.iti__eg{height:14px;background-position:-1489px 0}.iti__flag.iti__eh{height:10px;background-position:-1511px 0}.iti__flag.iti__er{height:10px;background-position:-1533px 0}.iti__flag.iti__es{height:14px;background-position:-1555px 0}.iti__flag.iti__et{height:10px;background-position:-1577px 0}.iti__flag.iti__eu{height:14px;background-position:-1599px 0}.iti__flag.iti__fi{height:12px;background-position:-1621px 0}.iti__flag.iti__fj{height:10px;background-position:-1643px 0}.iti__flag.iti__fk{height:10px;background-position:-1665px 0}.iti__flag.iti__fm{height:11px;background-position:-1687px 0}.iti__flag.iti__fo{height:15px;background-position:-1709px 0}.iti__flag.iti__fr{height:14px;background-position:-1731px 0}.iti__flag.iti__ga{height:15px;background-position:-1753px 0}.iti__flag.iti__gb{height:10px;background-position:-1775px 0}.iti__flag.iti__gd{height:12px;background-position:-1797px 0}.iti__flag.iti__ge{height:14px;background-position:-1819px 0}.iti__flag.iti__gf{height:14px;background-position:-1841px 0}.iti__flag.iti__gg{height:14px;background-position:-1863px 0}.iti__flag.iti__gh{height:14px;background-position:-1885px 0}.iti__flag.iti__gi{height:10px;background-position:-1907px 0}.iti__flag.iti__gl{height:14px;background-position:-1929px 0}.iti__flag.iti__gm{height:14px;background-position:-1951px 0}.iti__flag.iti__gn{height:14px;background-position:-1973px 0}.iti__flag.iti__gp{height:14px;background-position:-1995px 0}.iti__flag.iti__gq{height:14px;background-position:-2017px 0}.iti__flag.iti__gr{height:14px;background-position:-2039px 0}.iti__flag.iti__gs{height:10px;background-position:-2061px 0}.iti__flag.iti__gt{height:13px;background-position:-2083px 0}.iti__flag.iti__gu{height:11px;background-position:-2105px 0}.iti__flag.iti__gw{height:10px;background-position:-2127px 0}.iti__flag.iti__gy{height:12px;background-position:-2149px 0}.iti__flag.iti__hk{height:14px;background-position:-2171px 0}.iti__flag.iti__hm{height:10px;background-position:-2193px 0}.iti__flag.iti__hn{height:10px;background-position:-2215px 0}.iti__flag.iti__hr{height:10px;background-position:-2237px 0}.iti__flag.iti__ht{height:12px;background-position:-2259px 0}.iti__flag.iti__hu{height:10px;background-position:-2281px 0}.iti__flag.iti__ic{height:14px;background-position:-2303px 0}.iti__flag.iti__id{height:14px;background-position:-2325px 0}.iti__flag.iti__ie{height:10px;background-position:-2347px 0}.iti__flag.iti__il{height:15px;background-position:-2369px 0}.iti__flag.iti__im{height:10px;background-position:-2391px 0}.iti__flag.iti__in{height:14px;background-position:-2413px 0}.iti__flag.iti__io{height:10px;background-position:-2435px 0}.iti__flag.iti__iq{height:14px;background-position:-2457px 0}.iti__flag.iti__ir{height:12px;background-position:-2479px 0}.iti__flag.iti__is{height:15px;background-position:-2501px 0}.iti__flag.iti__it{height:14px;background-position:-2523px 0}.iti__flag.iti__je{height:12px;background-position:-2545px 0}.iti__flag.iti__jm{height:10px;background-position:-2567px 0}.iti__flag.iti__jo{height:10px;background-position:-2589px 0}.iti__flag.iti__jp{height:14px;background-position:-2611px 0}.iti__flag.iti__ke{height:14px;background-position:-2633px 0}.iti__flag.iti__kg{height:12px;background-position:-2655px 0}.iti__flag.iti__kh{height:13px;background-position:-2677px 0}.iti__flag.iti__ki{height:10px;background-position:-2699px 0}.iti__flag.iti__km{height:12px;background-position:-2721px 0}.iti__flag.iti__kn{height:14px;background-position:-2743px 0}.iti__flag.iti__kp{height:10px;background-position:-2765px 0}.iti__flag.iti__kr{height:14px;background-position:-2787px 0}.iti__flag.iti__kw{height:10px;background-position:-2809px 0}.iti__flag.iti__ky{height:10px;background-position:-2831px 0}.iti__flag.iti__kz{height:10px;background-position:-2853px 0}.iti__flag.iti__la{height:14px;background-position:-2875px 0}.iti__flag.iti__lb{height:14px;background-position:-2897px 0}.iti__flag.iti__lc{height:10px;background-position:-2919px 0}.iti__flag.iti__li{height:12px;background-position:-2941px 0}.iti__flag.iti__lk{height:10px;background-position:-2963px 0}.iti__flag.iti__lr{height:11px;background-position:-2985px 0}.iti__flag.iti__ls{height:14px;background-position:-3007px 0}.iti__flag.iti__lt{height:12px;background-position:-3029px 0}.iti__flag.iti__lu{height:12px;background-position:-3051px 0}.iti__flag.iti__lv{height:10px;background-position:-3073px 0}.iti__flag.iti__ly{height:10px;background-position:-3095px 0}.iti__flag.iti__ma{height:14px;background-position:-3117px 0}.iti__flag.iti__mc{height:15px;background-position:-3139px 0}.iti__flag.iti__md{height:10px;background-position:-3160px 0}.iti__flag.iti__me{height:10px;background-position:-3182px 0}.iti__flag.iti__mf{height:14px;background-position:-3204px 0}.iti__flag.iti__mg{height:14px;background-position:-3226px 0}.iti__flag.iti__mh{height:11px;background-position:-3248px 0}.iti__flag.iti__mk{height:10px;background-position:-3270px 0}.iti__flag.iti__ml{height:14px;background-position:-3292px 0}.iti__flag.iti__mm{height:14px;background-position:-3314px 0}.iti__flag.iti__mn{height:10px;background-position:-3336px 0}.iti__flag.iti__mo{height:14px;background-position:-3358px 0}.iti__flag.iti__mp{height:10px;background-position:-3380px 0}.iti__flag.iti__mq{height:14px;background-position:-3402px 0}.iti__flag.iti__mr{height:14px;background-position:-3424px 0}.iti__flag.iti__ms{height:10px;background-position:-3446px 0}.iti__flag.iti__mt{height:14px;background-position:-3468px 0}.iti__flag.iti__mu{height:14px;background-position:-3490px 0}.iti__flag.iti__mv{height:14px;background-position:-3512px 0}.iti__flag.iti__mw{height:14px;background-position:-3534px 0}.iti__flag.iti__mx{height:12px;background-position:-3556px 0}.iti__flag.iti__my{height:10px;background-position:-3578px 0}.iti__flag.iti__mz{height:14px;background-position:-3600px 0}.iti__flag.iti__na{height:14px;background-position:-3622px 0}.iti__flag.iti__nc{height:10px;background-position:-3644px 0}.iti__flag.iti__ne{height:15px;background-position:-3666px 0}.iti__flag.iti__nf{height:10px;background-position:-3686px 0}.iti__flag.iti__ng{height:10px;background-position:-3708px 0}.iti__flag.iti__ni{height:12px;background-position:-3730px 0}.iti__flag.iti__nl{height:14px;background-position:-3752px 0}.iti__flag.iti__no{height:15px;background-position:-3774px 0}.iti__flag.iti__np{height:15px;background-position:-3796px 0}.iti__flag.iti__nr{height:10px;background-position:-3811px 0}.iti__flag.iti__nu{height:10px;background-position:-3833px 0}.iti__flag.iti__nz{height:10px;background-position:-3855px 0}.iti__flag.iti__om{height:10px;background-position:-3877px 0}.iti__flag.iti__pa{height:14px;background-position:-3899px 0}.iti__flag.iti__pe{height:14px;background-position:-3921px 0}.iti__flag.iti__pf{height:14px;background-position:-3943px 0}.iti__flag.iti__pg{height:15px;background-position:-3965px 0}.iti__flag.iti__ph{height:10px;background-position:-3987px 0}.iti__flag.iti__pk{height:14px;background-position:-4009px 0}.iti__flag.iti__pl{height:13px;background-position:-4031px 0}.iti__flag.iti__pm{height:14px;background-position:-4053px 0}.iti__flag.iti__pn{height:10px;background-position:-4075px 0}.iti__flag.iti__pr{height:14px;background-position:-4097px 0}.iti__flag.iti__ps{height:10px;background-position:-4119px 0}.iti__flag.iti__pt{height:14px;background-position:-4141px 0}.iti__flag.iti__pw{height:13px;background-position:-4163px 0}.iti__flag.iti__py{height:11px;background-position:-4185px 0}.iti__flag.iti__qa{height:8px;background-position:-4207px 0}.iti__flag.iti__re{height:14px;background-position:-4229px 0}.iti__flag.iti__ro{height:14px;background-position:-4251px 0}.iti__flag.iti__rs{height:14px;background-position:-4273px 0}.iti__flag.iti__ru{height:14px;background-position:-4295px 0}.iti__flag.iti__rw{height:14px;background-position:-4317px 0}.iti__flag.iti__sa{height:14px;background-position:-4339px 0}.iti__flag.iti__sb{height:10px;background-position:-4361px 0}.iti__flag.iti__sc{height:10px;background-position:-4383px 0}.iti__flag.iti__sd{height:10px;background-position:-4405px 0}.iti__flag.iti__se{height:13px;background-position:-4427px 0}.iti__flag.iti__sg{height:14px;background-position:-4449px 0}.iti__flag.iti__sh{height:10px;background-position:-4471px 0}.iti__flag.iti__si{height:10px;background-position:-4493px 0}.iti__flag.iti__sj{height:15px;background-position:-4515px 0}.iti__flag.iti__sk{height:14px;background-position:-4537px 0}.iti__flag.iti__sl{height:14px;background-position:-4559px 0}.iti__flag.iti__sm{height:15px;background-position:-4581px 0}.iti__flag.iti__sn{height:14px;background-position:-4603px 0}.iti__flag.iti__so{height:14px;background-position:-4625px 0}.iti__flag.iti__sr{height:14px;background-position:-4647px 0}.iti__flag.iti__ss{height:10px;background-position:-4669px 0}.iti__flag.iti__st{height:10px;background-position:-4691px 0}.iti__flag.iti__sv{height:12px;background-position:-4713px 0}.iti__flag.iti__sx{height:14px;background-position:-4735px 0}.iti__flag.iti__sy{height:14px;background-position:-4757px 0}.iti__flag.iti__sz{height:14px;background-position:-4779px 0}.iti__flag.iti__ta{height:10px;background-position:-4801px 0}.iti__flag.iti__tc{height:10px;background-position:-4823px 0}.iti__flag.iti__td{height:14px;background-position:-4845px 0}.iti__flag.iti__tf{height:14px;background-position:-4867px 0}.iti__flag.iti__tg{height:13px;background-position:-4889px 0}.iti__flag.iti__th{height:14px;background-position:-4911px 0}.iti__flag.iti__tj{height:10px;background-position:-4933px 0}.iti__flag.iti__tk{height:10px;background-position:-4955px 0}.iti__flag.iti__tl{height:10px;background-position:-4977px 0}.iti__flag.iti__tm{height:14px;background-position:-4999px 0}.iti__flag.iti__tn{height:14px;background-position:-5021px 0}.iti__flag.iti__to{height:10px;background-position:-5043px 0}.iti__flag.iti__tr{height:14px;background-position:-5065px 0}.iti__flag.iti__tt{height:12px;background-position:-5087px 0}.iti__flag.iti__tv{height:10px;background-position:-5109px 0}.iti__flag.iti__tw{height:14px;background-position:-5131px 0}.iti__flag.iti__tz{height:14px;background-position:-5153px 0}.iti__flag.iti__ua{height:14px;background-position:-5175px 0}.iti__flag.iti__ug{height:14px;background-position:-5197px 0}.iti__flag.iti__um{height:11px;background-position:-5219px 0}.iti__flag.iti__un{height:14px;background-position:-5241px 0}.iti__flag.iti__us{height:11px;background-position:-5263px 0}.iti__flag.iti__uy{height:14px;background-position:-5285px 0}.iti__flag.iti__uz{height:10px;background-position:-5307px 0}.iti__flag.iti__va{height:15px;background-position:-5329px 0}.iti__flag.iti__vc{height:14px;background-position:-5346px 0}.iti__flag.iti__ve{height:14px;background-position:-5368px 0}.iti__flag.iti__vg{height:10px;background-position:-5390px 0}.iti__flag.iti__vi{height:14px;background-position:-5412px 0}.iti__flag.iti__vn{height:14px;background-position:-5434px 0}.iti__flag.iti__vu{height:12px;background-position:-5456px 0}.iti__flag.iti__wf{height:14px;background-position:-5478px 0}.iti__flag.iti__ws{height:10px;background-position:-5500px 0}.iti__flag.iti__xk{height:15px;background-position:-5522px 0}.iti__flag.iti__ye{height:14px;background-position:-5544px 0}.iti__flag.iti__yt{height:14px;background-position:-5566px 0}.iti__flag.iti__za{height:14px;background-position:-5588px 0}.iti__flag.iti__zm{height:14px;background-position:-5610px 0}.iti__flag.iti__zw{height:10px;background-position:-5632px 0}.iti__flag{height:15px;box-shadow:0 0 1px 0 #888;background-image:url(../img/flags.png);background-repeat:no-repeat;background-color:#dbdbdb;background-position:20px 0}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-image:url(../img/flags@2x.png)}}.iti__flag.iti__np{background-color:transparent} \ No newline at end of file diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags.png b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa1bec9fbb5dc85e375efff7510ab79f5a0e020 GIT binary patch literal 70857 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 LNkvXXu0mjfG;JOG literal 0 HcmV?d00001 diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags@2x.png b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/img/flags@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc3ed3fba34e6e23f2dcf5f300898ef4e2fbd0d GIT binary patch literal 174369 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

      1coj(6bdsU5HH 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

      rwRU|s)cNLjgI$ha?`vHjw_;(_Jf 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%0DxAJw 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 literal 0 HcmV?d00001 diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput-jquery.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput-jquery.js new file mode 100644 index 000000000..faa3dfd51 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/build/js/intlTelInput-jquery.js @@ -0,0 +1,1354 @@ +/* + * International Telephone Input v16.0.0 + * https://github.com/jackocnr/intl-tel-input.git + * Licensed under the MIT license + */ + +// wrap in UMD +(function(factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery"), window, document); + } else if (typeof define === "function" && define.amd) { + define([ "jquery" ], function($) { + factory($, window, document); + }); + } else factory(jQuery, window, document); +})(function($, window, document, undefined) { + "use strict"; + // Array of country objects for the flag dropdown. + // Here is the criteria for the plugin to support a given country/territory + // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes + // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png + // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml + // Each country array has the following information: + // [ + // Country name, + // iso2 code, + // International dial code, + // Order (if >1 country with same dial code), + // Area codes + // ] + var allCountries = [ [ "Afghanistan (‫اÙغانستان‬‎)", "af", "93" ], [ "Albania (Shqipëri)", "al", "355" ], [ "Algeria (‫الجزائر‬‎)", "dz", "213" ], [ "American Samoa", "as", "1", 5, [ "684" ] ], [ "Andorra", "ad", "376" ], [ "Angola", "ao", "244" ], [ "Anguilla", "ai", "1", 6, [ "264" ] ], [ "Antigua and Barbuda", "ag", "1", 7, [ "268" ] ], [ "Argentina", "ar", "54" ], [ "Armenia (Õ€Õ¡ÕµÕ¡Õ½Õ¿Õ¡Õ¶)", "am", "374" ], [ "Aruba", "aw", "297" ], [ "Australia", "au", "61", 0 ], [ "Austria (Österreich)", "at", "43" ], [ "Azerbaijan (AzÉ™rbaycan)", "az", "994" ], [ "Bahamas", "bs", "1", 8, [ "242" ] ], [ "Bahrain (‫البحرين‬‎)", "bh", "973" ], [ "Bangladesh (বাংলাদেশ)", "bd", "880" ], [ "Barbados", "bb", "1", 9, [ "246" ] ], [ "Belarus (БеларуÑÑŒ)", "by", "375" ], [ "Belgium (België)", "be", "32" ], [ "Belize", "bz", "501" ], [ "Benin (Bénin)", "bj", "229" ], [ "Bermuda", "bm", "1", 10, [ "441" ] ], [ "Bhutan (འབྲུག)", "bt", "975" ], [ "Bolivia", "bo", "591" ], [ "Bosnia and Herzegovina (БоÑна и Херцеговина)", "ba", "387" ], [ "Botswana", "bw", "267" ], [ "Brazil (Brasil)", "br", "55" ], [ "British Indian Ocean Territory", "io", "246" ], [ "British Virgin Islands", "vg", "1", 11, [ "284" ] ], [ "Brunei", "bn", "673" ], [ "Bulgaria (БългариÑ)", "bg", "359" ], [ "Burkina Faso", "bf", "226" ], [ "Burundi (Uburundi)", "bi", "257" ], [ "Cambodia (កម្ពុជា)", "kh", "855" ], [ "Cameroon (Cameroun)", "cm", "237" ], [ "Canada", "ca", "1", 1, [ "204", "226", "236", "249", "250", "289", "306", "343", "365", "387", "403", "416", "418", "431", "437", "438", "450", "506", "514", "519", "548", "579", "581", "587", "604", "613", "639", "647", "672", "705", "709", "742", "778", "780", "782", "807", "819", "825", "867", "873", "902", "905" ] ], [ "Cape Verde (Kabu Verdi)", "cv", "238" ], [ "Caribbean Netherlands", "bq", "599", 1, [ "3", "4", "7" ] ], [ "Cayman Islands", "ky", "1", 12, [ "345" ] ], [ "Central African Republic (République centrafricaine)", "cf", "236" ], [ "Chad (Tchad)", "td", "235" ], [ "Chile", "cl", "56" ], [ "China (中国)", "cn", "86" ], [ "Christmas Island", "cx", "61", 2 ], [ "Cocos (Keeling) Islands", "cc", "61", 1 ], [ "Colombia", "co", "57" ], [ "Comoros (‫جزر القمر‬‎)", "km", "269" ], [ "Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)", "cd", "243" ], [ "Congo (Republic) (Congo-Brazzaville)", "cg", "242" ], [ "Cook Islands", "ck", "682" ], [ "Costa Rica", "cr", "506" ], [ "Côte d’Ivoire", "ci", "225" ], [ "Croatia (Hrvatska)", "hr", "385" ], [ "Cuba", "cu", "53" ], [ "Curaçao", "cw", "599", 0 ], [ "Cyprus (ΚÏÏ€Ïος)", "cy", "357" ], [ "Czech Republic (ÄŒeská republika)", "cz", "420" ], [ "Denmark (Danmark)", "dk", "45" ], [ "Djibouti", "dj", "253" ], [ "Dominica", "dm", "1", 13, [ "767" ] ], [ "Dominican Republic (República Dominicana)", "do", "1", 2, [ "809", "829", "849" ] ], [ "Ecuador", "ec", "593" ], [ "Egypt (‫مصر‬‎)", "eg", "20" ], [ "El Salvador", "sv", "503" ], [ "Equatorial Guinea (Guinea Ecuatorial)", "gq", "240" ], [ "Eritrea", "er", "291" ], [ "Estonia (Eesti)", "ee", "372" ], [ "Ethiopia", "et", "251" ], [ "Falkland Islands (Islas Malvinas)", "fk", "500" ], [ "Faroe Islands (Føroyar)", "fo", "298" ], [ "Fiji", "fj", "679" ], [ "Finland (Suomi)", "fi", "358", 0 ], [ "France", "fr", "33" ], [ "French Guiana (Guyane française)", "gf", "594" ], [ "French Polynesia (Polynésie française)", "pf", "689" ], [ "Gabon", "ga", "241" ], [ "Gambia", "gm", "220" ], [ "Georgia (სáƒáƒ¥áƒáƒ áƒ—ველáƒ)", "ge", "995" ], [ "Germany (Deutschland)", "de", "49" ], [ "Ghana (Gaana)", "gh", "233" ], [ "Gibraltar", "gi", "350" ], [ "Greece (Ελλάδα)", "gr", "30" ], [ "Greenland (Kalaallit Nunaat)", "gl", "299" ], [ "Grenada", "gd", "1", 14, [ "473" ] ], [ "Guadeloupe", "gp", "590", 0 ], [ "Guam", "gu", "1", 15, [ "671" ] ], [ "Guatemala", "gt", "502" ], [ "Guernsey", "gg", "44", 1, [ "1481", "7781", "7839", "7911" ] ], [ "Guinea (Guinée)", "gn", "224" ], [ "Guinea-Bissau (Guiné Bissau)", "gw", "245" ], [ "Guyana", "gy", "592" ], [ "Haiti", "ht", "509" ], [ "Honduras", "hn", "504" ], [ "Hong Kong (香港)", "hk", "852" ], [ "Hungary (Magyarország)", "hu", "36" ], [ "Iceland (Ãsland)", "is", "354" ], [ "India (भारत)", "in", "91" ], [ "Indonesia", "id", "62" ], [ "Iran (‫ایران‬‎)", "ir", "98" ], [ "Iraq (‫العراق‬‎)", "iq", "964" ], [ "Ireland", "ie", "353" ], [ "Isle of Man", "im", "44", 2, [ "1624", "74576", "7524", "7924", "7624" ] ], [ "Israel (‫ישר×ל‬‎)", "il", "972" ], [ "Italy (Italia)", "it", "39", 0 ], [ "Jamaica", "jm", "1", 4, [ "876", "658" ] ], [ "Japan (日本)", "jp", "81" ], [ "Jersey", "je", "44", 3, [ "1534", "7509", "7700", "7797", "7829", "7937" ] ], [ "Jordan (‫الأردن‬‎)", "jo", "962" ], [ "Kazakhstan (КазахÑтан)", "kz", "7", 1, [ "33", "7" ] ], [ "Kenya", "ke", "254" ], [ "Kiribati", "ki", "686" ], [ "Kosovo", "xk", "383" ], [ "Kuwait (‫الكويت‬‎)", "kw", "965" ], [ "Kyrgyzstan (КыргызÑтан)", "kg", "996" ], [ "Laos (ລາວ)", "la", "856" ], [ "Latvia (Latvija)", "lv", "371" ], [ "Lebanon (‫لبنان‬‎)", "lb", "961" ], [ "Lesotho", "ls", "266" ], [ "Liberia", "lr", "231" ], [ "Libya (‫ليبيا‬‎)", "ly", "218" ], [ "Liechtenstein", "li", "423" ], [ "Lithuania (Lietuva)", "lt", "370" ], [ "Luxembourg", "lu", "352" ], [ "Macau (澳門)", "mo", "853" ], [ "Macedonia (FYROM) (Македонија)", "mk", "389" ], [ "Madagascar (Madagasikara)", "mg", "261" ], [ "Malawi", "mw", "265" ], [ "Malaysia", "my", "60" ], [ "Maldives", "mv", "960" ], [ "Mali", "ml", "223" ], [ "Malta", "mt", "356" ], [ "Marshall Islands", "mh", "692" ], [ "Martinique", "mq", "596" ], [ "Mauritania (‫موريتانيا‬‎)", "mr", "222" ], [ "Mauritius (Moris)", "mu", "230" ], [ "Mayotte", "yt", "262", 1, [ "269", "639" ] ], [ "Mexico (México)", "mx", "52" ], [ "Micronesia", "fm", "691" ], [ "Moldova (Republica Moldova)", "md", "373" ], [ "Monaco", "mc", "377" ], [ "Mongolia (Монгол)", "mn", "976" ], [ "Montenegro (Crna Gora)", "me", "382" ], [ "Montserrat", "ms", "1", 16, [ "664" ] ], [ "Morocco (‫المغرب‬‎)", "ma", "212", 0 ], [ "Mozambique (Moçambique)", "mz", "258" ], [ "Myanmar (Burma) (မြန်မာ)", "mm", "95" ], [ "Namibia (Namibië)", "na", "264" ], [ "Nauru", "nr", "674" ], [ "Nepal (नेपाल)", "np", "977" ], [ "Netherlands (Nederland)", "nl", "31" ], [ "New Caledonia (Nouvelle-Calédonie)", "nc", "687" ], [ "New Zealand", "nz", "64" ], [ "Nicaragua", "ni", "505" ], [ "Niger (Nijar)", "ne", "227" ], [ "Nigeria", "ng", "234" ], [ "Niue", "nu", "683" ], [ "Norfolk Island", "nf", "672" ], [ "North Korea (ì¡°ì„  ë¯¼ì£¼ì£¼ì˜ ì¸ë¯¼ 공화국)", "kp", "850" ], [ "Northern Mariana Islands", "mp", "1", 17, [ "670" ] ], [ "Norway (Norge)", "no", "47", 0 ], [ "Oman (‫عÙمان‬‎)", "om", "968" ], [ "Pakistan (‫پاکستان‬‎)", "pk", "92" ], [ "Palau", "pw", "680" ], [ "Palestine (‫Ùلسطين‬‎)", "ps", "970" ], [ "Panama (Panamá)", "pa", "507" ], [ "Papua New Guinea", "pg", "675" ], [ "Paraguay", "py", "595" ], [ "Peru (Perú)", "pe", "51" ], [ "Philippines", "ph", "63" ], [ "Poland (Polska)", "pl", "48" ], [ "Portugal", "pt", "351" ], [ "Puerto Rico", "pr", "1", 3, [ "787", "939" ] ], [ "Qatar (‫قطر‬‎)", "qa", "974" ], [ "Réunion (La Réunion)", "re", "262", 0 ], [ "Romania (România)", "ro", "40" ], [ "Russia (РоÑÑиÑ)", "ru", "7", 0 ], [ "Rwanda", "rw", "250" ], [ "Saint Barthélemy", "bl", "590", 1 ], [ "Saint Helena", "sh", "290" ], [ "Saint Kitts and Nevis", "kn", "1", 18, [ "869" ] ], [ "Saint Lucia", "lc", "1", 19, [ "758" ] ], [ "Saint Martin (Saint-Martin (partie française))", "mf", "590", 2 ], [ "Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)", "pm", "508" ], [ "Saint Vincent and the Grenadines", "vc", "1", 20, [ "784" ] ], [ "Samoa", "ws", "685" ], [ "San Marino", "sm", "378" ], [ "São Tomé and Príncipe (São Tomé e Príncipe)", "st", "239" ], [ "Saudi Arabia (‫المملكة العربية السعودية‬‎)", "sa", "966" ], [ "Senegal (Sénégal)", "sn", "221" ], [ "Serbia (Србија)", "rs", "381" ], [ "Seychelles", "sc", "248" ], [ "Sierra Leone", "sl", "232" ], [ "Singapore", "sg", "65" ], [ "Sint Maarten", "sx", "1", 21, [ "721" ] ], [ "Slovakia (Slovensko)", "sk", "421" ], [ "Slovenia (Slovenija)", "si", "386" ], [ "Solomon Islands", "sb", "677" ], [ "Somalia (Soomaaliya)", "so", "252" ], [ "South Africa", "za", "27" ], [ "South Korea (대한민국)", "kr", "82" ], [ "South Sudan (‫جنوب السودان‬‎)", "ss", "211" ], [ "Spain (España)", "es", "34" ], [ "Sri Lanka (à·à·Šâ€à¶»à·“ ලංකà·à·€)", "lk", "94" ], [ "Sudan (‫السودان‬‎)", "sd", "249" ], [ "Suriname", "sr", "597" ], [ "Svalbard and Jan Mayen", "sj", "47", 1, [ "79" ] ], [ "Swaziland", "sz", "268" ], [ "Sweden (Sverige)", "se", "46" ], [ "Switzerland (Schweiz)", "ch", "41" ], [ "Syria (‫سوريا‬‎)", "sy", "963" ], [ "Taiwan (å°ç£)", "tw", "886" ], [ "Tajikistan", "tj", "992" ], [ "Tanzania", "tz", "255" ], [ "Thailand (ไทย)", "th", "66" ], [ "Timor-Leste", "tl", "670" ], [ "Togo", "tg", "228" ], [ "Tokelau", "tk", "690" ], [ "Tonga", "to", "676" ], [ "Trinidad and Tobago", "tt", "1", 22, [ "868" ] ], [ "Tunisia (‫تونس‬‎)", "tn", "216" ], [ "Turkey (Türkiye)", "tr", "90" ], [ "Turkmenistan", "tm", "993" ], [ "Turks and Caicos Islands", "tc", "1", 23, [ "649" ] ], [ "Tuvalu", "tv", "688" ], [ "U.S. Virgin Islands", "vi", "1", 24, [ "340" ] ], [ "Uganda", "ug", "256" ], [ "Ukraine (Україна)", "ua", "380" ], [ "United Arab Emirates (‫الإمارات العربية المتحدة‬‎)", "ae", "971" ], [ "United Kingdom", "gb", "44", 0 ], [ "United States", "us", "1", 0 ], [ "Uruguay", "uy", "598" ], [ "Uzbekistan (OÊ»zbekiston)", "uz", "998" ], [ "Vanuatu", "vu", "678" ], [ "Vatican City (Città del Vaticano)", "va", "39", 1, [ "06698" ] ], [ "Venezuela", "ve", "58" ], [ "Vietnam (Việt Nam)", "vn", "84" ], [ "Wallis and Futuna (Wallis-et-Futuna)", "wf", "681" ], [ "Western Sahara (‫الصحراء الغربية‬‎)", "eh", "212", 1, [ "5288", "5289" ] ], [ "Yemen (‫اليمن‬‎)", "ye", "967" ], [ "Zambia", "zm", "260" ], [ "Zimbabwe", "zw", "263" ], [ "Ã…land Islands", "ax", "358", 1, [ "18" ] ] ]; + // loop over all of the countries above, restructuring the data to be objects with named keys + for (var i = 0; i < allCountries.length; i++) { + var c = allCountries[i]; + allCountries[i] = { + name: c[0], + iso2: c[1], + dialCode: c[2], + priority: c[3] || 0, + areaCodes: c[4] || null + }; + } + "use strict"; + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + window.intlTelInputGlobals = { + getInstance: function getInstance(input) { + var id = input.getAttribute("data-intl-tel-input-id"); + return window.intlTelInputGlobals.instances[id]; + }, + instances: {} + }; + // these vars persist through all instances of the plugin + var id = 0; + var defaults = { + // whether or not to allow the dropdown + allowDropdown: true, + // if there is just a dial code in the input: remove it on blur + autoHideDialCode: true, + // add a placeholder in the input with an example number for the selected country + autoPlaceholder: "polite", + // modify the parentClass + customContainer: "", + // modify the auto placeholder + customPlaceholder: null, + // append menu to specified element + dropdownContainer: null, + // don't display these countries + excludeCountries: [], + // format the input value during initialisation and on setNumber + formatOnDisplay: true, + // geoIp lookup function + geoIpLookup: null, + // inject a hidden input with this name, and on submit, populate it with the result of getNumber + hiddenInput: "", + // initial country + initialCountry: "", + // localized country names e.g. { 'de': 'Deutschland' } + localizedCountries: null, + // don't insert international dial codes + nationalMode: true, + // display only these countries + onlyCountries: [], + // number type to use for placeholders + placeholderNumberType: "MOBILE", + // the countries at the top of the list. defaults to united states and united kingdom + preferredCountries: [ "us", "gb" ], + // display the country dial code next to the selected flag so it's not part of the typed number + separateDialCode: false, + // specify the path to the libphonenumber script to enable validation/formatting + utilsScript: "" + }; + // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes + var regionlessNanpNumbers = [ "800", "822", "833", "844", "855", "866", "877", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889" ]; + // keep track of if the window.load event has fired as impossible to check after the fact + window.addEventListener("load", function() { + // UPDATE: use a public static field so we can fudge it in the tests + window.intlTelInputGlobals.windowLoaded = true; + }); + // utility function to iterate over an object. can't use Object.entries or native forEach because + // of IE11 + var forEachProp = function forEachProp(obj, callback) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + callback(keys[i], obj[keys[i]]); + } + }; + // run a method on each instance of the plugin + var forEachInstance = function forEachInstance(method) { + forEachProp(window.intlTelInputGlobals.instances, function(key) { + window.intlTelInputGlobals.instances[key][method](); + }); + }; + // this is our plugin class that we will create an instance of + // eslint-disable-next-line no-unused-vars + var Iti = /*#__PURE__*/ + function() { + function Iti(input, options) { + var _this = this; + _classCallCheck(this, Iti); + this.id = id++; + this.telInput = input; + this.activeItem = null; + this.highlightedItem = null; + // process specified options / defaults + // alternative to Object.assign, which isn't supported by IE11 + var customOptions = options || {}; + this.options = {}; + forEachProp(defaults, function(key, value) { + _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value; + }); + this.hadInitialPlaceholder = Boolean(input.getAttribute("placeholder")); + } + _createClass(Iti, [ { + key: "_init", + value: function _init() { + var _this2 = this; + // if in nationalMode, disable options relating to dial codes + if (this.options.nationalMode) this.options.autoHideDialCode = false; + // if separateDialCode then doesn't make sense to A) insert dial code into input + // (autoHideDialCode), and B) display national numbers (because we're displaying the country + // dial code next to them) + if (this.options.separateDialCode) { + this.options.autoHideDialCode = this.options.nationalMode = false; + } + // we cannot just test screen size as some smartphones/website meta tags will report desktop + // resolutions + // Note: for some reason jasmine breaks if you put this in the main Plugin function with the + // rest of these declarations + // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile' + this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + if (this.isMobile) { + // trigger the mobile dropdown css + document.body.classList.add("iti-mobile"); + // on mobile, we want a full screen dropdown, so we must append it to the body + if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body; + } + // these promises get resolved when their individual requests complete + // this way the dev can do something like iti.promise.then(...) to know when all requests are + // complete + if (typeof Promise !== "undefined") { + var autoCountryPromise = new Promise(function(resolve, reject) { + _this2.resolveAutoCountryPromise = resolve; + _this2.rejectAutoCountryPromise = reject; + }); + var utilsScriptPromise = new Promise(function(resolve, reject) { + _this2.resolveUtilsScriptPromise = resolve; + _this2.rejectUtilsScriptPromise = reject; + }); + this.promise = Promise.all([ autoCountryPromise, utilsScriptPromise ]); + } else { + // prevent errors when Promise doesn't exist + this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {}; + this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {}; + } + // in various situations there could be no country selected initially, but we need to be able + // to assume this variable exists + this.selectedCountryData = {}; + // process all the data: onlyCountries, excludeCountries, preferredCountries etc + this._processCountryData(); + // generate the markup + this._generateMarkup(); + // set the initial state of the input value and the selected flag + this._setInitialState(); + // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click + this._initListeners(); + // utils script, and auto country + this._initRequests(); + } + }, { + key: "_processCountryData", + value: function _processCountryData() { + // process onlyCountries or excludeCountries array if present + this._processAllCountries(); + // process the countryCodes map + this._processCountryCodes(); + // process the preferredCountries + this._processPreferredCountries(); + // translate countries according to localizedCountries option + if (this.options.localizedCountries) this._translateCountriesByLocale(); + // sort countries by name + if (this.options.onlyCountries.length || this.options.localizedCountries) { + this.countries.sort(this._countryNameSort); + } + } + }, { + key: "_addCountryCode", + value: function _addCountryCode(iso2, dialCode, priority) { + if (dialCode.length > this.dialCodeMaxLen) { + this.dialCodeMaxLen = dialCode.length; + } + if (!this.countryCodes.hasOwnProperty(dialCode)) { + this.countryCodes[dialCode] = []; + } + // bail if we already have this country for this dialCode + for (var i = 0; i < this.countryCodes[dialCode].length; i++) { + if (this.countryCodes[dialCode][i] === iso2) return; + } + // check for undefined as 0 is falsy + var index = priority !== undefined ? priority : this.countryCodes[dialCode].length; + this.countryCodes[dialCode][index] = iso2; + } + }, { + key: "_processAllCountries", + value: function _processAllCountries() { + if (this.options.onlyCountries.length) { + var lowerCaseOnlyCountries = this.options.onlyCountries.map(function(country) { + return country.toLowerCase(); + }); + this.countries = allCountries.filter(function(country) { + return lowerCaseOnlyCountries.indexOf(country.iso2) > -1; + }); + } else if (this.options.excludeCountries.length) { + var lowerCaseExcludeCountries = this.options.excludeCountries.map(function(country) { + return country.toLowerCase(); + }); + this.countries = allCountries.filter(function(country) { + return lowerCaseExcludeCountries.indexOf(country.iso2) === -1; + }); + } else { + this.countries = allCountries; + } + } + }, { + key: "_translateCountriesByLocale", + value: function _translateCountriesByLocale() { + for (var i = 0; i < this.countries.length; i++) { + var iso = this.countries[i].iso2.toLowerCase(); + if (this.options.localizedCountries.hasOwnProperty(iso)) { + this.countries[i].name = this.options.localizedCountries[iso]; + } + } + } + }, { + key: "_countryNameSort", + value: function _countryNameSort(a, b) { + return a.name.localeCompare(b.name); + } + }, { + key: "_processCountryCodes", + value: function _processCountryCodes() { + this.dialCodeMaxLen = 0; + this.countryCodes = {}; + // first: add dial codes + for (var i = 0; i < this.countries.length; i++) { + var c = this.countries[i]; + this._addCountryCode(c.iso2, c.dialCode, c.priority); + } + // next: add area codes + // this is a second loop over countries, to make sure we have all of the "root" countries + // already in the map, so that we can access them, as each time we add an area code substring + // to the map, we also need to include the "root" country's code, as that also matches + for (var _i = 0; _i < this.countries.length; _i++) { + var _c = this.countries[_i]; + // area codes + if (_c.areaCodes) { + var rootCountryCode = this.countryCodes[_c.dialCode][0]; + // for each area code + for (var j = 0; j < _c.areaCodes.length; j++) { + var areaCode = _c.areaCodes[j]; + // for each digit in the area code to add all partial matches as well + for (var k = 1; k < areaCode.length; k++) { + var partialDialCode = _c.dialCode + areaCode.substr(0, k); + // start with the root country, as that also matches this dial code + this._addCountryCode(rootCountryCode, partialDialCode); + this._addCountryCode(_c.iso2, partialDialCode); + } + // add the full area code + this._addCountryCode(_c.iso2, _c.dialCode + areaCode); + } + } + } + } + }, { + key: "_processPreferredCountries", + value: function _processPreferredCountries() { + this.preferredCountries = []; + for (var i = 0; i < this.options.preferredCountries.length; i++) { + var countryCode = this.options.preferredCountries[i].toLowerCase(); + var countryData = this._getCountryData(countryCode, false, true); + if (countryData) this.preferredCountries.push(countryData); + } + } + }, { + key: "_createEl", + value: function _createEl(name, attrs, container) { + var el = document.createElement(name); + if (attrs) forEachProp(attrs, function(key, value) { + return el.setAttribute(key, value); + }); + if (container) container.appendChild(el); + return el; + } + }, { + key: "_generateMarkup", + value: function _generateMarkup() { + // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can + // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the + // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode) + this.telInput.setAttribute("autocomplete", "off"); + // containers (mostly for positioning) + var parentClass = "iti"; + if (this.options.allowDropdown) parentClass += " iti--allow-dropdown"; + if (this.options.separateDialCode) parentClass += " iti--separate-dial-code"; + if (this.options.customContainer) { + parentClass += " "; + parentClass += this.options.customContainer; + } + var wrapper = this._createEl("div", { + "class": parentClass + }); + this.telInput.parentNode.insertBefore(wrapper, this.telInput); + this.flagsContainer = this._createEl("div", { + "class": "iti__flag-container" + }, wrapper); + wrapper.appendChild(this.telInput); + // selected flag (displayed to left of input) + this.selectedFlag = this._createEl("div", { + "class": "iti__selected-flag", + role: "combobox", + "aria-owns": "country-listbox" + }, this.flagsContainer); + this.selectedFlagInner = this._createEl("div", { + "class": "iti__flag" + }, this.selectedFlag); + if (this.options.separateDialCode) { + this.selectedDialCode = this._createEl("div", { + "class": "iti__selected-dial-code" + }, this.selectedFlag); + } + if (this.options.allowDropdown) { + // make element focusable and tab navigable + this.selectedFlag.setAttribute("tabindex", "0"); + this.dropdownArrow = this._createEl("div", { + "class": "iti__arrow" + }, this.selectedFlag); + // country dropdown: preferred countries, then divider, then all countries + this.countryList = this._createEl("ul", { + "class": "iti__country-list iti__hide", + id: "country-listbox", + "aria-expanded": "false", + role: "listbox" + }); + if (this.preferredCountries.length) { + this._appendListItems(this.preferredCountries, "iti__preferred"); + this._createEl("li", { + "class": "iti__divider", + role: "separator", + "aria-disabled": "true" + }, this.countryList); + } + this._appendListItems(this.countries, "iti__standard"); + // create dropdownContainer markup + if (this.options.dropdownContainer) { + this.dropdown = this._createEl("div", { + "class": "iti iti--container" + }); + this.dropdown.appendChild(this.countryList); + } else { + this.flagsContainer.appendChild(this.countryList); + } + } + if (this.options.hiddenInput) { + var hiddenInputName = this.options.hiddenInput; + var name = this.telInput.getAttribute("name"); + if (name) { + var i = name.lastIndexOf("["); + // if input name contains square brackets, then give the hidden input the same name, + // replacing the contents of the last set of brackets with the given hiddenInput name + if (i !== -1) hiddenInputName = "".concat(name.substr(0, i), "[").concat(hiddenInputName, "]"); + } + this.hiddenInput = this._createEl("input", { + type: "hidden", + name: hiddenInputName + }); + wrapper.appendChild(this.hiddenInput); + } + } + }, { + key: "_appendListItems", + value: function _appendListItems(countries, className) { + // we create so many DOM elements, it is faster to build a temp string + // and then add everything to the DOM in one go at the end + var tmp = ""; + // for each country + for (var i = 0; i < countries.length; i++) { + var c = countries[i]; + // open the list item + tmp += "

    • "); + // add the flag + tmp += "
      "); + // and the country name and dial code + tmp += "".concat(c.name, ""); + tmp += "+".concat(c.dialCode, ""); + // close the list item + tmp += "
    • "; + } + this.countryList.insertAdjacentHTML("beforeend", tmp); + } + }, { + key: "_setInitialState", + value: function _setInitialState() { + var val = this.telInput.value; + var dialCode = this._getDialCode(val); + var isRegionlessNanp = this._isRegionlessNanp(val); + var _this$options = this.options, initialCountry = _this$options.initialCountry, nationalMode = _this$options.nationalMode, autoHideDialCode = _this$options.autoHideDialCode, separateDialCode = _this$options.separateDialCode; + // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the + // flag, else fall back to the default country + if (dialCode && !isRegionlessNanp) { + this._updateFlagFromNumber(val); + } else if (initialCountry !== "auto") { + // see if we should select a flag + if (initialCountry) { + this._setFlag(initialCountry.toLowerCase()); + } else { + if (dialCode && isRegionlessNanp) { + // has intl dial code, is regionless nanp, and no initialCountry, so default to US + this._setFlag("us"); + } else { + // no dial code and no initialCountry, so default to first in list + this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2; + if (!val) { + this._setFlag(this.defaultCountry); + } + } + } + // if empty and no nationalMode and no autoHideDialCode then insert the default dial code + if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) { + this.telInput.value = "+".concat(this.selectedCountryData.dialCode); + } + } + // NOTE: if initialCountry is set to auto, that will be handled separately + // format - note this wont be run after _updateDialCode as that's only called if no val + if (val) this._updateValFromNumber(val); + } + }, { + key: "_initListeners", + value: function _initListeners() { + this._initKeyListeners(); + if (this.options.autoHideDialCode) this._initBlurListeners(); + if (this.options.allowDropdown) this._initDropdownListeners(); + if (this.hiddenInput) this._initHiddenInputListener(); + } + }, { + key: "_initHiddenInputListener", + value: function _initHiddenInputListener() { + var _this3 = this; + this._handleHiddenInputSubmit = function() { + _this3.hiddenInput.value = _this3.getNumber(); + }; + if (this.telInput.form) this.telInput.form.addEventListener("submit", this._handleHiddenInputSubmit); + } + }, { + key: "_getClosestLabel", + value: function _getClosestLabel() { + var el = this.telInput; + while (el && el.tagName !== "LABEL") { + el = el.parentNode; + } + return el; + } + }, { + key: "_initDropdownListeners", + value: function _initDropdownListeners() { + var _this4 = this; + // hack for input nested inside label (which is valid markup): clicking the selected-flag to + // open the dropdown would then automatically trigger a 2nd click on the input which would + // close it again + this._handleLabelClick = function(e) { + // if the dropdown is closed, then focus the input, else ignore the click + if (_this4.countryList.classList.contains("iti__hide")) _this4.telInput.focus(); else e.preventDefault(); + }; + var label = this._getClosestLabel(); + if (label) label.addEventListener("click", this._handleLabelClick); + // toggle country dropdown on click + this._handleClickSelectedFlag = function() { + // only intercept this event if we're opening the dropdown + // else let it bubble up to the top ("click-off-to-close" listener) + // we cannot just stopPropagation as it may be needed to close another instance + if (_this4.countryList.classList.contains("iti__hide") && !_this4.telInput.disabled && !_this4.telInput.readOnly) { + _this4._showDropdown(); + } + }; + this.selectedFlag.addEventListener("click", this._handleClickSelectedFlag); + // open dropdown list if currently focused + this._handleFlagsContainerKeydown = function(e) { + var isDropdownHidden = _this4.countryList.classList.contains("iti__hide"); + if (isDropdownHidden && [ "ArrowUp", "ArrowDown", " ", "Enter" ].indexOf(e.key) !== -1) { + // prevent form from being submitted if "ENTER" was pressed + e.preventDefault(); + // prevent event from being handled again by document + e.stopPropagation(); + _this4._showDropdown(); + } + // allow navigation from dropdown to input on TAB + if (e.key === "Tab") _this4._closeDropdown(); + }; + this.flagsContainer.addEventListener("keydown", this._handleFlagsContainerKeydown); + } + }, { + key: "_initRequests", + value: function _initRequests() { + var _this5 = this; + // if the user has specified the path to the utils script, fetch it on window.load, else resolve + if (this.options.utilsScript && !window.intlTelInputUtils) { + // if the plugin is being initialised after the window.load event has already been fired + if (window.intlTelInputGlobals.windowLoaded) { + window.intlTelInputGlobals.loadUtils(this.options.utilsScript); + } else { + // wait until the load event so we don't block any other requests e.g. the flags image + window.addEventListener("load", function() { + window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript); + }); + } + } else this.resolveUtilsScriptPromise(); + if (this.options.initialCountry === "auto") this._loadAutoCountry(); else this.resolveAutoCountryPromise(); + } + }, { + key: "_loadAutoCountry", + value: function _loadAutoCountry() { + // 3 options: + // 1) already loaded (we're done) + // 2) not already started loading (start) + // 3) already started loading (do nothing - just wait for loading callback to fire) + if (window.intlTelInputGlobals.autoCountry) { + this.handleAutoCountry(); + } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) { + // don't do this twice! + window.intlTelInputGlobals.startedLoadingAutoCountry = true; + if (typeof this.options.geoIpLookup === "function") { + this.options.geoIpLookup(function(countryCode) { + window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase(); + // tell all instances the auto country is ready + // TODO: this should just be the current instances + // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight + // away (e.g. if they have already done the geo ip lookup somewhere else). Using + // setTimeout means that the current thread of execution will finish before executing + // this, which allows the plugin to finish initialising. + setTimeout(function() { + return forEachInstance("handleAutoCountry"); + }); + }, function() { + return forEachInstance("rejectAutoCountryPromise"); + }); + } + } + } + }, { + key: "_initKeyListeners", + value: function _initKeyListeners() { + var _this6 = this; + // update flag on keyup + this._handleKeyupEvent = function() { + if (_this6._updateFlagFromNumber(_this6.telInput.value)) { + _this6._triggerCountryChange(); + } + }; + this.telInput.addEventListener("keyup", this._handleKeyupEvent); + // update flag on cut/paste events (now supported in all major browsers) + this._handleClipboardEvent = function() { + // hack because "paste" event is fired before input is updated + setTimeout(_this6._handleKeyupEvent); + }; + this.telInput.addEventListener("cut", this._handleClipboardEvent); + this.telInput.addEventListener("paste", this._handleClipboardEvent); + } + }, { + key: "_cap", + value: function _cap(number) { + var max = this.telInput.getAttribute("maxlength"); + return max && number.length > max ? number.substr(0, max) : number; + } + }, { + key: "_initBlurListeners", + value: function _initBlurListeners() { + var _this7 = this; + // on blur or form submit: if just a dial code then remove it + this._handleSubmitOrBlurEvent = function() { + _this7._removeEmptyDialCode(); + }; + if (this.telInput.form) this.telInput.form.addEventListener("submit", this._handleSubmitOrBlurEvent); + this.telInput.addEventListener("blur", this._handleSubmitOrBlurEvent); + } + }, { + key: "_removeEmptyDialCode", + value: function _removeEmptyDialCode() { + if (this.telInput.value.charAt(0) === "+") { + var numeric = this._getNumeric(this.telInput.value); + // if just a plus, or if just a dial code + if (!numeric || this.selectedCountryData.dialCode === numeric) { + this.telInput.value = ""; + } + } + } + }, { + key: "_getNumeric", + value: function _getNumeric(s) { + return s.replace(/\D/g, ""); + } + }, { + key: "_trigger", + value: function _trigger(name) { + // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax + var e = document.createEvent("Event"); + e.initEvent(name, true, true); + // can bubble, and is cancellable + this.telInput.dispatchEvent(e); + } + }, { + key: "_showDropdown", + value: function _showDropdown() { + this.countryList.classList.remove("iti__hide"); + this.countryList.setAttribute("aria-expanded", "true"); + this._setDropdownPosition(); + // update highlighting and scroll to active list item + if (this.activeItem) { + this._highlightListItem(this.activeItem, false); + this._scrollTo(this.activeItem, true); + } + // bind all the dropdown-related listeners: mouseover, click, click-off, keydown + this._bindDropdownListeners(); + // update the arrow + this.dropdownArrow.classList.add("iti__arrow--up"); + this._trigger("open:countrydropdown"); + } + }, { + key: "_toggleClass", + value: function _toggleClass(el, className, shouldHaveClass) { + if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className); + } + }, { + key: "_setDropdownPosition", + value: function _setDropdownPosition() { + var _this8 = this; + if (this.options.dropdownContainer) { + this.options.dropdownContainer.appendChild(this.dropdown); + } + if (!this.isMobile) { + var pos = this.telInput.getBoundingClientRect(); + // windowTop from https://stackoverflow.com/a/14384091/217866 + var windowTop = window.pageYOffset || document.documentElement.scrollTop; + var inputTop = pos.top + windowTop; + var dropdownHeight = this.countryList.offsetHeight; + // dropdownFitsBelow = (dropdownBottom < windowBottom) + var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight; + var dropdownFitsAbove = inputTop - dropdownHeight > windowTop; + // by default, the dropdown will be below the input. If we want to position it above the + // input, we add the dropup class. + this._toggleClass(this.countryList, "iti__country-list--dropup", !dropdownFitsBelow && dropdownFitsAbove); + // if dropdownContainer is enabled, calculate postion + if (this.options.dropdownContainer) { + // by default the dropdown will be directly over the input because it's not in the flow. + // If we want to position it below, we need to add some extra top value. + var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight; + // calculate placement + this.dropdown.style.top = "".concat(inputTop + extraTop, "px"); + this.dropdown.style.left = "".concat(pos.left + document.body.scrollLeft, "px"); + // close menu on window scroll + this._handleWindowScroll = function() { + return _this8._closeDropdown(); + }; + window.addEventListener("scroll", this._handleWindowScroll); + } + } + } + }, { + key: "_getClosestListItem", + value: function _getClosestListItem(target) { + var el = target; + while (el && el !== this.countryList && !el.classList.contains("iti__country")) { + el = el.parentNode; + } + // if we reached the countryList element, then return null + return el === this.countryList ? null : el; + } + }, { + key: "_bindDropdownListeners", + value: function _bindDropdownListeners() { + var _this9 = this; + // when mouse over a list item, just highlight that one + // we add the class "highlight", so if they hit "enter" we know which one to select + this._handleMouseoverCountryList = function(e) { + // handle event delegation, as we're listening for this event on the countryList + var listItem = _this9._getClosestListItem(e.target); + if (listItem) _this9._highlightListItem(listItem, false); + }; + this.countryList.addEventListener("mouseover", this._handleMouseoverCountryList); + // listen for country selection + this._handleClickCountryList = function(e) { + var listItem = _this9._getClosestListItem(e.target); + if (listItem) _this9._selectListItem(listItem); + }; + this.countryList.addEventListener("click", this._handleClickCountryList); + // click off to close + // (except when this initial opening click is bubbling up) + // we cannot just stopPropagation as it may be needed to close another instance + var isOpening = true; + this._handleClickOffToClose = function() { + if (!isOpening) _this9._closeDropdown(); + isOpening = false; + }; + document.documentElement.addEventListener("click", this._handleClickOffToClose); + // listen for up/down scrolling, enter to select, or letters to jump to country name. + // use keydown as keypress doesn't fire for non-char keys and we want to catch if they + // just hit down and hold it to scroll down (no keyup event). + // listen on the document because that's where key events are triggered if no input has focus + var query = ""; + var queryTimer = null; + this._handleKeydownOnDropdown = function(e) { + // prevent down key from scrolling the whole page, + // and enter key from submitting a form etc + e.preventDefault(); + // up and down to navigate + if (e.key === "ArrowUp" || e.key === "ArrowDown") _this9._handleUpDownKey(e.key); else if (e.key === "Enter") _this9._handleEnterKey(); else if (e.key === "Escape") _this9._closeDropdown(); else if (/^[a-zA-ZÀ-ÿ ]$/.test(e.key)) { + // jump to countries that start with the query string + if (queryTimer) clearTimeout(queryTimer); + query += e.key.toLowerCase(); + _this9._searchForCountry(query); + // if the timer hits 1 second, reset the query + queryTimer = setTimeout(function() { + query = ""; + }, 1e3); + } + }; + document.addEventListener("keydown", this._handleKeydownOnDropdown); + } + }, { + key: "_handleUpDownKey", + value: function _handleUpDownKey(key) { + var next = key === "ArrowUp" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling; + if (next) { + // skip the divider + if (next.classList.contains("iti__divider")) { + next = key === "ArrowUp" ? next.previousElementSibling : next.nextElementSibling; + } + this._highlightListItem(next, true); + } + } + }, { + key: "_handleEnterKey", + value: function _handleEnterKey() { + if (this.highlightedItem) this._selectListItem(this.highlightedItem); + } + }, { + key: "_searchForCountry", + value: function _searchForCountry(query) { + for (var i = 0; i < this.countries.length; i++) { + if (this._startsWith(this.countries[i].name, query)) { + var listItem = this.countryList.querySelector("#iti-item-".concat(this.countries[i].iso2)); + // update highlighting and scroll + this._highlightListItem(listItem, false); + this._scrollTo(listItem, true); + break; + } + } + } + }, { + key: "_startsWith", + value: function _startsWith(a, b) { + return a.substr(0, b.length).toLowerCase() === b; + } + }, { + key: "_updateValFromNumber", + value: function _updateValFromNumber(originalNumber) { + var number = originalNumber; + if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) { + var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== "+"); + var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL; + var format = useNational ? NATIONAL : INTERNATIONAL; + number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format); + } + number = this._beforeSetNumber(number); + this.telInput.value = number; + } + }, { + key: "_updateFlagFromNumber", + value: function _updateFlagFromNumber(originalNumber) { + // if we're in nationalMode and we already have US/Canada selected, make sure the number starts + // with a +1 so _getDialCode will be able to extract the area code + // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag + // from the number), that means we're initialising the plugin with a number that already has a + // dial code, so fine to ignore this bit + var number = originalNumber; + var selectedDialCode = this.selectedCountryData.dialCode; + var isNanp = selectedDialCode === "1"; + if (number && this.options.nationalMode && isNanp && number.charAt(0) !== "+") { + if (number.charAt(0) !== "1") number = "1".concat(number); + number = "+".concat(number); + } + // update flag if user types area code for another country + if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== "+") { + number = "+".concat(selectedDialCode).concat(number); + } + // try and extract valid dial code from input + var dialCode = this._getDialCode(number); + var numeric = this._getNumeric(number); + var countryCode = null; + if (dialCode) { + var countryCodes = this.countryCodes[this._getNumeric(dialCode)]; + // check if the right country is already selected. this should be false if the number is + // longer than the matched dial code because in this case we need to make sure that if + // there are multiple country matches, that the first one is selected (note: we could + // just check that here, but it requires the same loop that we already have later) + var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1; + var isRegionlessNanpNumber = selectedDialCode === "1" && this._isRegionlessNanp(numeric); + // only update the flag if: + // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp) + // AND + // B) the right country is not already selected + if (!isRegionlessNanpNumber && !alreadySelected) { + // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first + // non-empty index + for (var j = 0; j < countryCodes.length; j++) { + if (countryCodes[j]) { + countryCode = countryCodes[j]; + break; + } + } + } + } else if (number.charAt(0) === "+" && numeric.length) { + // invalid dial code, so empty + // Note: use getNumeric here because the number has not been formatted yet, so could contain + // bad chars + countryCode = ""; + } else if (!number || number === "+") { + // empty, or just a plus, so default + countryCode = this.defaultCountry; + } + if (countryCode !== null) { + return this._setFlag(countryCode); + } + return false; + } + }, { + key: "_isRegionlessNanp", + value: function _isRegionlessNanp(number) { + var numeric = this._getNumeric(number); + if (numeric.charAt(0) === "1") { + var areaCode = numeric.substr(1, 3); + return regionlessNanpNumbers.indexOf(areaCode) !== -1; + } + return false; + } + }, { + key: "_highlightListItem", + value: function _highlightListItem(listItem, shouldFocus) { + var prevItem = this.highlightedItem; + if (prevItem) prevItem.classList.remove("iti__highlight"); + this.highlightedItem = listItem; + this.highlightedItem.classList.add("iti__highlight"); + if (shouldFocus) this.highlightedItem.focus(); + } + }, { + key: "_getCountryData", + value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) { + var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries; + for (var i = 0; i < countryList.length; i++) { + if (countryList[i].iso2 === countryCode) { + return countryList[i]; + } + } + if (allowFail) { + return null; + } + throw new Error("No country data for '".concat(countryCode, "'")); + } + }, { + key: "_setFlag", + value: function _setFlag(countryCode) { + var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {}; + // do this first as it will throw an error and stop if countryCode is invalid + this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {}; + // update the defaultCountry - we only need the iso2 from now on, so just store that + if (this.selectedCountryData.iso2) { + this.defaultCountry = this.selectedCountryData.iso2; + } + this.selectedFlagInner.setAttribute("class", "iti__flag iti__".concat(countryCode)); + // update the selected country's title attribute + var title = countryCode ? "".concat(this.selectedCountryData.name, ": +").concat(this.selectedCountryData.dialCode) : "Unknown"; + this.selectedFlag.setAttribute("title", title); + if (this.options.separateDialCode) { + var dialCode = this.selectedCountryData.dialCode ? "+".concat(this.selectedCountryData.dialCode) : ""; + this.selectedDialCode.innerHTML = dialCode; + // offsetWidth is zero if input is in a hidden container during initialisation + var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth(); + // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css + this.telInput.style.paddingLeft = "".concat(selectedFlagWidth + 6, "px"); + } + // and the input's placeholder + this._updatePlaceholder(); + // update the active list item + if (this.options.allowDropdown) { + var prevItem = this.activeItem; + if (prevItem) { + prevItem.classList.remove("iti__active"); + prevItem.setAttribute("aria-selected", "false"); + } + if (countryCode) { + var nextItem = this.countryList.querySelector("#iti-item-".concat(countryCode)); + nextItem.setAttribute("aria-selected", "true"); + nextItem.classList.add("iti__active"); + this.activeItem = nextItem; + this.countryList.setAttribute("aria-activedescendant", nextItem.getAttribute("id")); + } + } + // return if the flag has changed or not + return prevCountry.iso2 !== countryCode; + } + }, { + key: "_getHiddenSelectedFlagWidth", + value: function _getHiddenSelectedFlagWidth() { + // to get the right styling to apply, all we need is a shallow clone of the container, + // and then to inject a deep clone of the selectedFlag element + var containerClone = this.telInput.parentNode.cloneNode(); + containerClone.style.visibility = "hidden"; + document.body.appendChild(containerClone); + var selectedFlagClone = this.selectedFlag.cloneNode(true); + containerClone.appendChild(selectedFlagClone); + var width = selectedFlagClone.offsetWidth; + containerClone.remove(); + return width; + } + }, { + key: "_updatePlaceholder", + value: function _updatePlaceholder() { + var shouldSetPlaceholder = this.options.autoPlaceholder === "aggressive" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === "polite"; + if (window.intlTelInputUtils && shouldSetPlaceholder) { + var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType]; + var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : ""; + placeholder = this._beforeSetNumber(placeholder); + if (typeof this.options.customPlaceholder === "function") { + placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData); + } + this.telInput.setAttribute("placeholder", placeholder); + } + } + }, { + key: "_selectListItem", + value: function _selectListItem(listItem) { + // update selected flag and active list item + var flagChanged = this._setFlag(listItem.getAttribute("data-country-code")); + this._closeDropdown(); + this._updateDialCode(listItem.getAttribute("data-dial-code"), true); + // focus the input + this.telInput.focus(); + // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto + // inserting dial code), who try to put the cursor at the beginning the first time + var len = this.telInput.value.length; + this.telInput.setSelectionRange(len, len); + if (flagChanged) { + this._triggerCountryChange(); + } + } + }, { + key: "_closeDropdown", + value: function _closeDropdown() { + this.countryList.classList.add("iti__hide"); + this.countryList.setAttribute("aria-expanded", "false"); + // update the arrow + this.dropdownArrow.classList.remove("iti__arrow--up"); + // unbind key events + document.removeEventListener("keydown", this._handleKeydownOnDropdown); + document.documentElement.removeEventListener("click", this._handleClickOffToClose); + this.countryList.removeEventListener("mouseover", this._handleMouseoverCountryList); + this.countryList.removeEventListener("click", this._handleClickCountryList); + // remove menu from container + if (this.options.dropdownContainer) { + if (!this.isMobile) window.removeEventListener("scroll", this._handleWindowScroll); + if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown); + } + this._trigger("close:countrydropdown"); + } + }, { + key: "_scrollTo", + value: function _scrollTo(element, middle) { + var container = this.countryList; + // windowTop from https://stackoverflow.com/a/14384091/217866 + var windowTop = window.pageYOffset || document.documentElement.scrollTop; + var containerHeight = container.offsetHeight; + var containerTop = container.getBoundingClientRect().top + windowTop; + var containerBottom = containerTop + containerHeight; + var elementHeight = element.offsetHeight; + var elementTop = element.getBoundingClientRect().top + windowTop; + var elementBottom = elementTop + elementHeight; + var newScrollTop = elementTop - containerTop + container.scrollTop; + var middleOffset = containerHeight / 2 - elementHeight / 2; + if (elementTop < containerTop) { + // scroll up + if (middle) newScrollTop -= middleOffset; + container.scrollTop = newScrollTop; + } else if (elementBottom > containerBottom) { + // scroll down + if (middle) newScrollTop += middleOffset; + var heightDifference = containerHeight - elementHeight; + container.scrollTop = newScrollTop - heightDifference; + } + } + }, { + key: "_updateDialCode", + value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) { + var inputVal = this.telInput.value; + // save having to pass this every time + var newDialCode = "+".concat(newDialCodeBare); + var newNumber; + if (inputVal.charAt(0) === "+") { + // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not) + var prevDialCode = this._getDialCode(inputVal); + if (prevDialCode) { + // current number contains a valid dial code, so replace it + newNumber = inputVal.replace(prevDialCode, newDialCode); + } else { + // current number contains an invalid dial code, so ditch it + // (no way to determine where the invalid dial code ends and the rest of the number begins) + newNumber = newDialCode; + } + } else if (this.options.nationalMode || this.options.separateDialCode) { + // don't do anything + return; + } else { + // nationalMode is disabled + if (inputVal) { + // there is an existing value with no dial code: prefix the new dial code + newNumber = newDialCode + inputVal; + } else if (hasSelectedListItem || !this.options.autoHideDialCode) { + // no existing value and either they've just selected a list item, or autoHideDialCode is + // disabled: insert new dial code + newNumber = newDialCode; + } else { + return; + } + } + this.telInput.value = newNumber; + } + }, { + key: "_getDialCode", + value: function _getDialCode(number) { + var dialCode = ""; + // only interested in international numbers (starting with a plus) + if (number.charAt(0) === "+") { + var numericChars = ""; + // iterate over chars + for (var i = 0; i < number.length; i++) { + var c = number.charAt(i); + // if char is number (https://stackoverflow.com/a/8935649/217866) + if (!isNaN(parseInt(c, 10))) { + numericChars += c; + // if current numericChars make a valid dial code + if (this.countryCodes[numericChars]) { + // store the actual raw string (useful for matching later) + dialCode = number.substr(0, i + 1); + } + if (numericChars.length === this.dialCodeMaxLen) { + break; + } + } + } + } + return dialCode; + } + }, { + key: "_getFullNumber", + value: function _getFullNumber() { + var val = this.telInput.value.trim(); + var dialCode = this.selectedCountryData.dialCode; + var prefix; + var numericVal = this._getNumeric(val); + if (this.options.separateDialCode && val.charAt(0) !== "+" && dialCode && numericVal) { + // when using separateDialCode, it is visible so is effectively part of the typed number + prefix = "+".concat(dialCode); + } else { + prefix = ""; + } + return prefix + val; + } + }, { + key: "_beforeSetNumber", + value: function _beforeSetNumber(originalNumber) { + var number = originalNumber; + if (this.options.separateDialCode) { + var dialCode = this._getDialCode(number); + // if there is a valid dial code + if (dialCode) { + // in case _getDialCode returned an area code as well + dialCode = "+".concat(this.selectedCountryData.dialCode); + // a lot of numbers will have a space separating the dial code and the main number, and + // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get + // rid of it + // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc + var start = number[dialCode.length] === " " || number[dialCode.length] === "-" ? dialCode.length + 1 : dialCode.length; + number = number.substr(start); + } + } + return this._cap(number); + } + }, { + key: "_triggerCountryChange", + value: function _triggerCountryChange() { + this._trigger("countrychange"); + } + }, { + key: "handleAutoCountry", + value: function handleAutoCountry() { + if (this.options.initialCountry === "auto") { + // we must set this even if there is an initial val in the input: in case the initial val is + // invalid and they delete it - they should see their auto country + this.defaultCountry = window.intlTelInputGlobals.autoCountry; + // if there's no initial value in the input, then update the flag + if (!this.telInput.value) { + this.setCountry(this.defaultCountry); + } + this.resolveAutoCountryPromise(); + } + } + }, { + key: "handleUtils", + value: function handleUtils() { + // if the request was successful + if (window.intlTelInputUtils) { + // if there's an initial value in the input, then format it + if (this.telInput.value) { + this._updateValFromNumber(this.telInput.value); + } + this._updatePlaceholder(); + } + this.resolveUtilsScriptPromise(); + } + }, { + key: "destroy", + value: function destroy() { + var form = this.telInput.form; + if (this.options.allowDropdown) { + // make sure the dropdown is closed (and unbind listeners) + this._closeDropdown(); + this.selectedFlag.removeEventListener("click", this._handleClickSelectedFlag); + this.flagsContainer.removeEventListener("keydown", this._handleFlagsContainerKeydown); + // label click hack + var label = this._getClosestLabel(); + if (label) label.removeEventListener("click", this._handleLabelClick); + } + // unbind hiddenInput listeners + if (this.hiddenInput && form) form.removeEventListener("submit", this._handleHiddenInputSubmit); + // unbind autoHideDialCode listeners + if (this.options.autoHideDialCode) { + if (form) form.removeEventListener("submit", this._handleSubmitOrBlurEvent); + this.telInput.removeEventListener("blur", this._handleSubmitOrBlurEvent); + } + // unbind key events, and cut/paste events + this.telInput.removeEventListener("keyup", this._handleKeyupEvent); + this.telInput.removeEventListener("cut", this._handleClipboardEvent); + this.telInput.removeEventListener("paste", this._handleClipboardEvent); + // remove attribute of id instance: data-intl-tel-input-id + this.telInput.removeAttribute("data-intl-tel-input-id"); + // remove markup (but leave the original input) + var wrapper = this.telInput.parentNode; + wrapper.parentNode.insertBefore(this.telInput, wrapper); + wrapper.parentNode.removeChild(wrapper); + delete window.intlTelInputGlobals.instances[this.id]; + } + }, { + key: "getExtension", + value: function getExtension() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2); + } + return ""; + } + }, { + key: "getNumber", + value: function getNumber(format) { + if (window.intlTelInputUtils) { + var iso2 = this.selectedCountryData.iso2; + return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format); + } + return ""; + } + }, { + key: "getNumberType", + value: function getNumberType() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2); + } + return -99; + } + }, { + key: "getSelectedCountryData", + value: function getSelectedCountryData() { + return this.selectedCountryData; + } + }, { + key: "getValidationError", + value: function getValidationError() { + if (window.intlTelInputUtils) { + var iso2 = this.selectedCountryData.iso2; + return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2); + } + return -99; + } + }, { + key: "isValidNumber", + value: function isValidNumber() { + var val = this._getFullNumber().trim(); + var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : ""; + return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null; + } + }, { + key: "setCountry", + value: function setCountry(originalCountryCode) { + var countryCode = originalCountryCode.toLowerCase(); + // check if already selected + if (!this.selectedFlagInner.classList.contains("iti__".concat(countryCode))) { + this._setFlag(countryCode); + this._updateDialCode(this.selectedCountryData.dialCode, false); + this._triggerCountryChange(); + } + } + }, { + key: "setNumber", + value: function setNumber(number) { + // we must update the flag first, which updates this.selectedCountryData, which is used for + // formatting the number before displaying it + var flagChanged = this._updateFlagFromNumber(number); + this._updateValFromNumber(number); + if (flagChanged) { + this._triggerCountryChange(); + } + } + }, { + key: "setPlaceholderNumberType", + value: function setPlaceholderNumberType(type) { + this.options.placeholderNumberType = type; + this._updatePlaceholder(); + } + } ]); + return Iti; + }(); + /******************** + * STATIC METHODS + ********************/ + // get the country data object + window.intlTelInputGlobals.getCountryData = function() { + return allCountries; + }; + // inject a + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/countrySync.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/countrySync.css new file mode 100644 index 000000000..8b7ef3382 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/countrySync.css @@ -0,0 +1,10 @@ +input, label { + display: block; +} + +input, select, label { + margin: 5px 0; +} +.form-item { + margin-bottom: 20px; +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/isValidNumber.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/isValidNumber.css new file mode 100644 index 000000000..25cd899cd --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/isValidNumber.css @@ -0,0 +1,12 @@ +#error-msg { + color: red; +} +#valid-msg { + color: #00C900; +} +input.error { + border: 1px solid #FF7C7C; +} +.hide { + display: none; +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/prism.css b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/prism.css new file mode 100644 index 000000000..1e61e11d6 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/css/prism.css @@ -0,0 +1,126 @@ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.builtin { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #a67f59; + background: hsla(0,0%,100%,.5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + + +.token.regex, +.token.important { + color: #e90; +} + +.token.important { + font-weight: bold; +} + +.token.entity { + cursor: help; +} + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/country-sync.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/country-sync.html new file mode 100644 index 000000000..5451397a7 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/country-sync.html @@ -0,0 +1,100 @@ + + + + + Example: Country sync + + + + + + + + + + + + + + Back +

      Example: Country sync

      +

      Use static getCountryData method to create a separate country dropdown for an address form, and then listen for change events to keep the two dropdowns in sync.

      + +

      Markup

      +
      <div class="form-item">
      +  <label>Telephone number</label>
      +  <input id="phone" type="tel">
      +</div>
      +
      +<div class="form-item">
      +  <label>Address</label>
      +  <input type="text" placeholder="House name/number">
      +  <input type="text" placeholder="City">
      +  <input type="text" placeholder="State">
      +  <input type="text" placeholder="Zip code">
      +  <select id="address-country"></select>
      +</div>
      + +

      Code

      +
      // get the country data from the plugin
      +var countryData = window.intlTelInputGlobals.getCountryData(),
      +  input = document.querySelector("#phone"),
      +  addressDropdown = document.querySelector("#address-country");
      +
      +// init plugin
      +var iti = window.intlTelInput(input, {
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      +// populate the country dropdown
      +for (var i = 0; i < countryData.length; i++) {
      +  var country = countryData[i];
      +  var optionNode = document.createElement("option");
      +  optionNode.value = country.iso2;
      +  var textNode = document.createTextNode(country.name);
      +  optionNode.appendChild(textNode);
      +  addressDropdown.appendChild(optionNode);
      +}
      +// set it's initial value
      +addressDropdown.value = iti.getSelectedCountryData().iso2;
      +
      +// listen to the telephone input for changes
      +input.addEventListener('countrychange', function(e) {
      +  addressDropdown.value = iti.getSelectedCountryData().iso2;
      +});
      +
      +// listen to the address dropdown for changes
      +addressDropdown.addEventListener('change', function() {
      +  iti.setCountry(this.value);
      +});
      +
      + +

      Result

      +
      +
      + + +
      + +
      + + + + + + +
      +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/default-country-ip.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/default-country-ip.html new file mode 100644 index 000000000..0f4c0073f --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/default-country-ip.html @@ -0,0 +1,58 @@ + + + + + Example: Lookup user's country + + + + + + + + + + + + Back +

      Example: Lookup user's country

      +

      Set initialCountry to 'auto' and pass in a function for geoIpLookup to perform a JSONP request to ipinfo.io, which returns the user's country based on their IP address.

      + +

      Markup

      +
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      +<input id="phone" type="tel">
      +
      + +

      Code

      +
      var input = document.querySelector("#phone");
      +window.intlTelInput(input, {
      +  initialCountry: "auto",
      +  geoIpLookup: function(callback) {
      +    $.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) {
      +      var countryCode = (resp && resp.country) ? resp.country : "";
      +      callback(countryCode);
      +    });
      +  },
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      + +

      Result

      +
      + + + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/display-number.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/display-number.html new file mode 100644 index 000000000..eb25f0e46 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/display-number.html @@ -0,0 +1,49 @@ + + + + + Example: Display an existing number + + + + + + + + + + + + Back +

      Example: Display an existing number

      +

      We initialise the plugin on an input which already contains a full international number. The plugin will automatically select the relevant flag, and re-format the number to national format.

      + +

      Markup

      +
      <input id="phone" type="tel" value="+447733312345">
      +
      + +

      Code

      +
      var input = document.querySelector("#phone");
      +window.intlTelInput(input, {
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      + +

      Result

      +
      + + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/hidden-input.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/hidden-input.html new file mode 100644 index 000000000..b7e443c7e --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/hidden-input.html @@ -0,0 +1,56 @@ + + + + + Example: Submitting the full international number using a hidden input + + + + + + + + + + + + Back +

      Example: Submitting the full international number using a hidden input

      +

      If you're submitting the form using Ajax, simply use getNumber to get the full international number before sending it. If you're using the standard form POST method, you can use the hiddenInput option to automatically create a hidden input that gets populated with the full international number on submit. Try submitting a valid number below, and then check the 'full_phone' parameter in the URL.

      + +

      Markup

      +
      <form>
      +  <input id="phone" type="tel" name="phone">
      +  <button type="submit">Submit</button>
      +</form>
      +
      + +

      Code

      +
      var input = document.querySelector("#phone");
      +window.intlTelInput(input, {
      +  hiddenInput: "full_phone",
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      + +

      Result

      +
      +
      + + +
      + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/init-promise.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/init-promise.html new file mode 100644 index 000000000..e477780e5 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/init-promise.html @@ -0,0 +1,68 @@ + + + + + Example: Using the promise returned from initialisation + + + + + + + + + + + + Back +

      Example: Using the promise returned from initialisation

      +

      Use this promise to know when the plugin has completely finished initialising, including completing any asynchronous actions you might have enabled with the initialisation options e.g. fetching utils.js with the utilsScript option, and performing the ip lookup with the geoIpLookup option.

      + +

      Markup

      +
      <!-- polyfill for IE11 -->
      +<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js"></script> 
      +
      +<p>
      +  Status:
      +  <span id="status">Initialising...</span>
      +</p>
      +<input id="phone" type="tel">
      +
      + +

      Code

      +
      var input = document.querySelector("#phone");
      +var statusElement = document.querySelector("#status");
      +
      +var iti = window.intlTelInput(input, {
      +  utilsScript: "../../build/js/utils.js?1560794689211",
      +});
      +iti.promise.then(function() {
      +  statusElement.innerHTML = "Initialised!";
      +});
      +
      + +

      Result

      +
      + + + +

      + Status: + Initialising... +

      + + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/is-valid-number.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/is-valid-number.html new file mode 100644 index 000000000..f0ce66f34 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/is-valid-number.html @@ -0,0 +1,88 @@ + + + + + Example: Validation + + + + + + + + + + + + + + Back +

      Example: Validation

      +

      Use the isValidNumber method (which utilises Google's libphonenumber) to validate the telephone number on the blur event.

      + +

      Markup

      +
      <input id="phone" type="tel">
      +<span id="valid-msg" class="hide">✓ Valid</span>
      +<span id="error-msg" class="hide"></span>
      +
      + +

      Code

      +
      var input = document.querySelector("#phone"),
      +  errorMsg = document.querySelector("#error-msg"),
      +  validMsg = document.querySelector("#valid-msg");
      +
      +// here, the index maps to the error code returned from getValidationError - see readme
      +var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number"];
      +
      +// initialise plugin
      +var iti = window.intlTelInput(input, {
      +  utilsScript: "../../build/js/utils.js?1560794689211"
      +});
      +
      +var reset = function() {
      +  input.classList.remove("error");
      +  errorMsg.innerHTML = "";
      +  errorMsg.classList.add("hide");
      +  validMsg.classList.add("hide");
      +};
      +
      +// on blur: validate
      +input.addEventListener('blur', function() {
      +  reset();
      +  if (input.value.trim()) {
      +    if (iti.isValidNumber()) {
      +      validMsg.classList.remove("hide");
      +    } else {
      +      input.classList.add("error");
      +      var errorCode = iti.getValidationError();
      +      errorMsg.innerHTML = errorMap[errorCode];
      +      errorMsg.classList.remove("hide");
      +    }
      +  }
      +});
      +
      +// on keyup / change flag: reset
      +input.addEventListener('change', reset);
      +input.addEventListener('keyup', reset);
      +
      + +

      Result

      +
      + +✓ Valid + + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/countrySync.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/countrySync.js new file mode 100644 index 000000000..f98ce24ad --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/countrySync.js @@ -0,0 +1,31 @@ +// get the country data from the plugin +var countryData = window.intlTelInputGlobals.getCountryData(), + input = document.querySelector("#phone"), + addressDropdown = document.querySelector("#address-country"); + +// init plugin +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); + +// populate the country dropdown +for (var i = 0; i < countryData.length; i++) { + var country = countryData[i]; + var optionNode = document.createElement("option"); + optionNode.value = country.iso2; + var textNode = document.createTextNode(country.name); + optionNode.appendChild(textNode); + addressDropdown.appendChild(optionNode); +} +// set it's initial value +addressDropdown.value = iti.getSelectedCountryData().iso2; + +// listen to the telephone input for changes +input.addEventListener('countrychange', function(e) { + addressDropdown.value = iti.getSelectedCountryData().iso2; +}); + +// listen to the address dropdown for changes +addressDropdown.addEventListener('change', function() { + iti.setCountry(this.value); +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/defaultCountryIp.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/defaultCountryIp.js new file mode 100644 index 000000000..6078db440 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/defaultCountryIp.js @@ -0,0 +1,11 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + initialCountry: "auto", + geoIpLookup: function(callback) { + $.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) { + var countryCode = (resp && resp.country) ? resp.country : ""; + callback(countryCode); + }); + }, + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/displayNumber.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/displayNumber.js new file mode 100644 index 000000000..ef8743d49 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/displayNumber.js @@ -0,0 +1,4 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/hiddenInput.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/hiddenInput.js new file mode 100644 index 000000000..b319cb546 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/hiddenInput.js @@ -0,0 +1,5 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + hiddenInput: "full_phone", + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/initPromise.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/initPromise.js new file mode 100644 index 000000000..3e961cafa --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/initPromise.js @@ -0,0 +1,9 @@ +var input = document.querySelector("#phone"); +var statusElement = document.querySelector("#status"); + +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?1560794689211", +}); +iti.promise.then(function() { + statusElement.innerHTML = "Initialised!"; +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/isValidNumber.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/isValidNumber.js new file mode 100644 index 000000000..79faeb414 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/isValidNumber.js @@ -0,0 +1,37 @@ +var input = document.querySelector("#phone"), + errorMsg = document.querySelector("#error-msg"), + validMsg = document.querySelector("#valid-msg"); + +// here, the index maps to the error code returned from getValidationError - see readme +var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number"]; + +// initialise plugin +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?1560794689211" +}); + +var reset = function() { + input.classList.remove("error"); + errorMsg.innerHTML = ""; + errorMsg.classList.add("hide"); + validMsg.classList.add("hide"); +}; + +// on blur: validate +input.addEventListener('blur', function() { + reset(); + if (input.value.trim()) { + if (iti.isValidNumber()) { + validMsg.classList.remove("hide"); + } else { + input.classList.add("error"); + var errorCode = iti.getValidationError(); + errorMsg.innerHTML = errorMap[errorCode]; + errorMsg.classList.remove("hide"); + } + } +}); + +// on keyup / change flag: reset +input.addEventListener('change', reset); +input.addEventListener('keyup', reset); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/modifyCountryData.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/modifyCountryData.js new file mode 100644 index 000000000..a3338ade4 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/modifyCountryData.js @@ -0,0 +1,11 @@ +var countryData = window.intlTelInputGlobals.getCountryData(), + input = document.querySelector("#phone"); + +for (var i = 0; i < countryData.length; i++) { + var country = countryData[i]; + country.name = country.name.replace(/.+\((.+)\)/,"$1"); +} + +window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/multipleInstances.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/multipleInstances.js new file mode 100644 index 000000000..ec991560d --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/multipleInstances.js @@ -0,0 +1,13 @@ +var inputHome = document.querySelector("#home"); +var inputMobile = document.querySelector("#mobile"); + +window.intlTelInput(inputHome, { + initialCountry: 'gb', + placeholderNumberType: 'FIXED_LINE', + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); +window.intlTelInput(inputMobile, { + initialCountry: 'gb', + placeholderNumberType: 'MOBILE', + utilsScript: "../../build/js/utils.js?1560794689211" +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/nationalMode.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/nationalMode.js new file mode 100644 index 000000000..fd19354f4 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/nationalMode.js @@ -0,0 +1,18 @@ +var input = document.querySelector("#phone"), + output = document.querySelector("#output"); + +var iti = window.intlTelInput(input, { + nationalMode: true, + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); + +var handleChange = function() { + var text = (iti.isValidNumber()) ? "International: " + iti.getNumber() : "Please enter a number below"; + var textNode = document.createTextNode(text); + output.innerHTML = ""; + output.appendChild(textNode); +}; + +// listen to "keyup", but also "change" to update when the user selects a country +input.addEventListener('change', handleChange); +input.addEventListener('keyup', handleChange); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/onlyCountriesEurope.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/onlyCountriesEurope.js new file mode 100644 index 000000000..b5c918cad --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/js/onlyCountriesEurope.js @@ -0,0 +1,8 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + onlyCountries: ["al", "ad", "at", "by", "be", "ba", "bg", "hr", "cz", "dk", + "ee", "fo", "fi", "fr", "de", "gi", "gr", "va", "hu", "is", "ie", "it", "lv", + "li", "lt", "lu", "mk", "mt", "md", "mc", "me", "nl", "no", "pl", "pt", "ro", + "ru", "sm", "rs", "sk", "si", "es", "se", "ch", "ua", "gb"], + utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/modify-country-data.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/modify-country-data.html new file mode 100644 index 000000000..bf48272a7 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/modify-country-data.html @@ -0,0 +1,54 @@ + + + + + Example: Modify country data + + + + + + + + + + + + Back +

      Example: Modify country data

      +

      Use static getCountryData method to update the data to only show localised country names.

      + +

      Markup

      +
      <input id="phone" type="tel">
      + +

      Code

      +
      var countryData = window.intlTelInputGlobals.getCountryData(),
      +  input = document.querySelector("#phone");
      +
      +for (var i = 0; i < countryData.length; i++) {
      +  var country = countryData[i];
      +  country.name = country.name.replace(/.+\((.+)\)/,"$1");
      +}
      +
      +window.intlTelInput(input, {
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      + +

      Result

      +
      + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/multiple-instances.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/multiple-instances.html new file mode 100644 index 000000000..b6486acc2 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/multiple-instances.html @@ -0,0 +1,62 @@ + + + + + Example: Multiple Instances + + + + + + + + + + + + Back +

      Example: Multiple Instances

      +

      Here you can see multiple instances of the plugin working alongside each other. I've set the placeholderNumberType differently for each instance to highlight that the instances are completely independent of each other.

      + +

      Markup

      +
      Home: <input id="home" type="tel">
      +<br><br>
      +Mobile: <input id="mobile" type="tel">
      +
      + +

      Code

      +
      var inputHome = document.querySelector("#home");
      +var inputMobile = document.querySelector("#mobile");
      +
      +window.intlTelInput(inputHome, {
      +  initialCountry: 'gb',
      +  placeholderNumberType: 'FIXED_LINE',
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +window.intlTelInput(inputMobile, {
      +  initialCountry: 'gb',
      +  placeholderNumberType: 'MOBILE',
      +  utilsScript: "../../build/js/utils.js?1560794689211"
      +});
      +
      + +

      Result

      +
      + Home: +

      +Mobile: + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/national-mode.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/national-mode.html new file mode 100644 index 000000000..73b46143f --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/national-mode.html @@ -0,0 +1,65 @@ + + + + + Example: National Mode + + + + + + + + + + + + Back +

      Example: National Mode

      +

      Allow users to enter their national number, and then convert it to international format using the public method getNumber.

      + +

      Markup

      +
      <p id="output">Please enter a valid number below</p>
      +<input id="phone" type="tel">
      +
      + +

      Code

      +
      var input = document.querySelector("#phone"),
      +  output = document.querySelector("#output");
      +
      +var iti = window.intlTelInput(input, {
      +  nationalMode: true,
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      +var handleChange = function() {
      +  var text = (iti.isValidNumber()) ? "International: " + iti.getNumber() : "Please enter a number below";
      +  var textNode = document.createTextNode(text);
      +  output.innerHTML = "";
      +  output.appendChild(textNode);
      +};
      +
      +// listen to "keyup", but also "change" to update when the user selects a country
      +input.addEventListener('change', handleChange);
      +input.addEventListener('keyup', handleChange);
      +
      + +

      Result

      +
      +

      Please enter a valid number below

      + + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/only-countries-europe.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/only-countries-europe.html new file mode 100644 index 000000000..d78a6c999 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/gen/only-countries-europe.html @@ -0,0 +1,51 @@ + + + + + Example: European countries + + + + + + + + + + + + Back +

      Example: European countries

      +

      Set onlyCountries option to just European country codes.

      + +

      Markup

      +
      <input id="phone" type="tel">
      + +

      Code

      +
      var input = document.querySelector("#phone");
      +window.intlTelInput(input, {
      +  onlyCountries: ["al", "ad", "at", "by", "be", "ba", "bg", "hr", "cz", "dk",
      +  "ee", "fo", "fi", "fr", "de", "gi", "gr", "va", "hu", "is", "ie", "it", "lv",
      +  "li", "lt", "lu", "mk", "mt", "md", "mc", "me", "nl", "no", "pl", "pt", "ro",
      +  "ru", "sm", "rs", "sk", "si", "es", "se", "ch", "ua", "gb"],
      +  utilsScript: "../../build/js/utils.js?1560794689211" // just for formatting/placeholders etc
      +});
      +
      + +

      Result

      +
      + +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/countrySync.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/countrySync.js.ejs new file mode 100644 index 000000000..1ec7326c8 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/countrySync.js.ejs @@ -0,0 +1,31 @@ +// get the country data from the plugin +var countryData = window.intlTelInputGlobals.getCountryData(), + input = document.querySelector("#phone"), + addressDropdown = document.querySelector("#address-country"); + +// init plugin +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); + +// populate the country dropdown +for (var i = 0; i < countryData.length; i++) { + var country = countryData[i]; + var optionNode = document.createElement("option"); + optionNode.value = country.iso2; + var textNode = document.createTextNode(country.name); + optionNode.appendChild(textNode); + addressDropdown.appendChild(optionNode); +} +// set it's initial value +addressDropdown.value = iti.getSelectedCountryData().iso2; + +// listen to the telephone input for changes +input.addEventListener('countrychange', function(e) { + addressDropdown.value = iti.getSelectedCountryData().iso2; +}); + +// listen to the address dropdown for changes +addressDropdown.addEventListener('change', function() { + iti.setCountry(this.value); +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/defaultCountryIp.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/defaultCountryIp.js.ejs new file mode 100644 index 000000000..d31e0135a --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/defaultCountryIp.js.ejs @@ -0,0 +1,11 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + initialCountry: "auto", + geoIpLookup: function(callback) { + $.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) { + var countryCode = (resp && resp.country) ? resp.country : ""; + callback(countryCode); + }); + }, + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/displayNumber.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/displayNumber.js.ejs new file mode 100644 index 000000000..850b2b27d --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/displayNumber.js.ejs @@ -0,0 +1,4 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/hiddenInput.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/hiddenInput.js.ejs new file mode 100644 index 000000000..780b2e496 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/hiddenInput.js.ejs @@ -0,0 +1,5 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + hiddenInput: "full_phone", + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/initPromise.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/initPromise.js.ejs new file mode 100644 index 000000000..aa206ff83 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/initPromise.js.ejs @@ -0,0 +1,9 @@ +var input = document.querySelector("#phone"); +var statusElement = document.querySelector("#status"); + +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?<%= time %>", +}); +iti.promise.then(function() { + statusElement.innerHTML = "Initialised!"; +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/isValidNumber.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/isValidNumber.js.ejs new file mode 100644 index 000000000..b367e2bec --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/isValidNumber.js.ejs @@ -0,0 +1,37 @@ +var input = document.querySelector("#phone"), + errorMsg = document.querySelector("#error-msg"), + validMsg = document.querySelector("#valid-msg"); + +// here, the index maps to the error code returned from getValidationError - see readme +var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number"]; + +// initialise plugin +var iti = window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?<%= time %>" +}); + +var reset = function() { + input.classList.remove("error"); + errorMsg.innerHTML = ""; + errorMsg.classList.add("hide"); + validMsg.classList.add("hide"); +}; + +// on blur: validate +input.addEventListener('blur', function() { + reset(); + if (input.value.trim()) { + if (iti.isValidNumber()) { + validMsg.classList.remove("hide"); + } else { + input.classList.add("error"); + var errorCode = iti.getValidationError(); + errorMsg.innerHTML = errorMap[errorCode]; + errorMsg.classList.remove("hide"); + } + } +}); + +// on keyup / change flag: reset +input.addEventListener('change', reset); +input.addEventListener('keyup', reset); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/modifyCountryData.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/modifyCountryData.js.ejs new file mode 100644 index 000000000..c5eb6d464 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/modifyCountryData.js.ejs @@ -0,0 +1,11 @@ +var countryData = window.intlTelInputGlobals.getCountryData(), + input = document.querySelector("#phone"); + +for (var i = 0; i < countryData.length; i++) { + var country = countryData[i]; + country.name = country.name.replace(/.+\((.+)\)/,"$1"); +} + +window.intlTelInput(input, { + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/multipleInstances.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/multipleInstances.js.ejs new file mode 100644 index 000000000..af736f133 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/multipleInstances.js.ejs @@ -0,0 +1,13 @@ +var inputHome = document.querySelector("#home"); +var inputMobile = document.querySelector("#mobile"); + +window.intlTelInput(inputHome, { + initialCountry: 'gb', + placeholderNumberType: 'FIXED_LINE', + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); +window.intlTelInput(inputMobile, { + initialCountry: 'gb', + placeholderNumberType: 'MOBILE', + utilsScript: "../../build/js/utils.js?<%= time %>" +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/nationalMode.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/nationalMode.js.ejs new file mode 100644 index 000000000..149db23cb --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/nationalMode.js.ejs @@ -0,0 +1,18 @@ +var input = document.querySelector("#phone"), + output = document.querySelector("#output"); + +var iti = window.intlTelInput(input, { + nationalMode: true, + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); + +var handleChange = function() { + var text = (iti.isValidNumber()) ? "International: " + iti.getNumber() : "Please enter a number below"; + var textNode = document.createTextNode(text); + output.innerHTML = ""; + output.appendChild(textNode); +}; + +// listen to "keyup", but also "change" to update when the user selects a country +input.addEventListener('change', handleChange); +input.addEventListener('keyup', handleChange); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/onlyCountriesEurope.js.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/onlyCountriesEurope.js.ejs new file mode 100644 index 000000000..c29af4da9 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/onlyCountriesEurope.js.ejs @@ -0,0 +1,8 @@ +var input = document.querySelector("#phone"); +window.intlTelInput(input, { + onlyCountries: ["al", "ad", "at", "by", "be", "ba", "bg", "hr", "cz", "dk", + "ee", "fo", "fi", "fr", "de", "gi", "gr", "va", "hu", "is", "ie", "it", "lv", + "li", "lt", "lu", "mk", "mt", "md", "mc", "me", "nl", "no", "pl", "pt", "ro", + "ru", "sm", "rs", "sk", "si", "es", "se", "ch", "ua", "gb"], + utilsScript: "../../build/js/utils.js?<%= time %>" // just for formatting/placeholders etc +}); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/prism.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/prism.js new file mode 100644 index 000000000..d44cea342 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/js/prism.js @@ -0,0 +1,11 @@ +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&").replace(/e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+""};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();; +Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&/,"&"))});; +Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});; +Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}}, number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|(&){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g}; +; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|throw|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}}); +; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/countrySync.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/countrySync.html new file mode 100644 index 000000000..882d0a2ff --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/countrySync.html @@ -0,0 +1,13 @@ +
      + + +
      + +
      + + + + + + +
      \ No newline at end of file diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/defaultCountryIp.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/defaultCountryIp.html new file mode 100644 index 000000000..2fdcfe3dc --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/defaultCountryIp.html @@ -0,0 +1,2 @@ + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/displayNumber.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/displayNumber.html new file mode 100644 index 000000000..ef1f399b4 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/displayNumber.html @@ -0,0 +1 @@ + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/hiddenInput.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/hiddenInput.html new file mode 100644 index 000000000..74c962d39 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/hiddenInput.html @@ -0,0 +1,4 @@ +
      + + +
      diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/initPromise.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/initPromise.html new file mode 100644 index 000000000..8c5880ce1 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/initPromise.html @@ -0,0 +1,8 @@ + + + +

      + Status: + Initialising... +

      + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/isValidNumber.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/isValidNumber.html new file mode 100644 index 000000000..a0eef775a --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/isValidNumber.html @@ -0,0 +1,3 @@ + +✓ Valid + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/multipleInstances.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/multipleInstances.html new file mode 100644 index 000000000..d94969a63 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/multipleInstances.html @@ -0,0 +1,3 @@ +Home: +

      +Mobile: diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/nationalMode.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/nationalMode.html new file mode 100644 index 000000000..68149f8e6 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/nationalMode.html @@ -0,0 +1,2 @@ +

      Please enter a valid number below

      + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/simpleInput.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/simpleInput.html new file mode 100644 index 000000000..fe8a47fc8 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/partials/simpleInput.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/template.html.ejs b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/template.html.ejs new file mode 100644 index 000000000..b711645ef --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/examples/template.html.ejs @@ -0,0 +1,45 @@ + + + + + Example: <%= title %> + + + + <% if (stylesheet) { %> + + <% } %> + + + + + + + + Back +

      Example: <%= title %>

      +

      <%= desc %>

      + +

      Markup

      +
      <%- markup %>
      + +

      Code

      +
      <%- code %>
      + +

      Result

      +
      + <%= markup %> +
      + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/babel.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/babel.js new file mode 100644 index 000000000..89ca3fa16 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/babel.js @@ -0,0 +1,13 @@ +module.exports = function(grunt) { + return { + options: { + sourceMap: false, + presets: ['@babel/preset-env'] + }, + dist: { + files: { + 'tmp/versioned-babeled.js': 'tmp/versioned.js' + } + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/bump.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/bump.js new file mode 100644 index 000000000..a3a7e16cd --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/bump.js @@ -0,0 +1,10 @@ +module.exports = function(grunt) { + return { + options: { + files: ['package.json', 'intl-tel-input.jquery.json', 'component.json', 'composer.json'], + updateConfigs: ['package'], + commitFiles: ['-a'], + pushTo: 'origin' + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/concat.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/concat.js new file mode 100644 index 000000000..ce8e284a9 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/concat.js @@ -0,0 +1,12 @@ +module.exports = function(grunt) { + return { + regular: { + src: ['src/js/intro.js', 'src/js/data.js', 'tmp/versioned-babeled.js', 'src/js/outro.js'], + dest: 'tmp/wrapped.js', + }, + jQueryVersion: { + src: ['src/js/intro-jquery.js', 'src/js/data.js', 'tmp/versioned-babeled.js', 'src/js/outro-jquery.js'], + dest: 'tmp/wrapped-jquery.js', + }, + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/cssmin.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/cssmin.js new file mode 100644 index 000000000..2d88a0375 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/cssmin.js @@ -0,0 +1,9 @@ +module.exports = function(grunt) { + return { + target: { + files: { + 'build/css/intlTelInput.min.css': 'build/css/intlTelInput.css' + } + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/eslint.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/eslint.js new file mode 100644 index 000000000..31c4fc2c4 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/eslint.js @@ -0,0 +1,5 @@ +module.exports = function(grunt) { + return { + target: ['src/js/intlTelInput.js'] + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/exec.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/exec.js new file mode 100644 index 000000000..de51e5f29 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/exec.js @@ -0,0 +1,8 @@ +module.exports = function(grunt) { + return { + evenizer: { + // we need even pixel values for width and height before we scale the image down to @1x + command: "evenizer --resize -i src/img/flags/@2x/*.png" + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/imagemin.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/imagemin.js new file mode 100644 index 000000000..6e4016238 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/imagemin.js @@ -0,0 +1,15 @@ +module.exports = function(grunt) { + return { + dynamic: { + options: { + optimizationLevel: 7, + }, + files: [{ + expand: true, + cwd: 'build/img', + src: ['**/*.{png,jpg,gif}'], + dest: 'build/img', + }], + }, + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/jasmine.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/jasmine.js new file mode 100644 index 000000000..3eb8d1849 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/jasmine.js @@ -0,0 +1,26 @@ +module.exports = function(grunt) { + return { + src: [ + 'src/js/data.js', + 'build/js/intlTelInput.min.js', + 'build/js/utils.js' + ], + options: { + vendor: [ + 'node_modules/jquery/dist/jquery.js', + 'node_modules/jasmine-jquery/lib/jasmine-jquery.js', + 'node_modules/es6-promise/dist/es6-promise.auto.js', // for IE11 + 'node_modules/custom-event-polyfill/polyfill.js', // for IE11 + ], + helpers: [ + 'src/spec/helpers/**/*.js' + ], + specs: [ + 'src/spec/tests/**/*.js' + ], + styles: "build/css/intlTelInput.css", // required so adding "hide" class actually works etc. + outfile: 'spec.html', + keepRunner: true + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/replace.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/replace.js new file mode 100644 index 000000000..d505131ad --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/replace.js @@ -0,0 +1,289 @@ +module.exports = function(grunt) { + return { + + /*********** + * PRIVATE METHODS + * Ignore _init method, which is a subset of other method names, and is used in different ways + * Note: can't do public methods, as they need to be called as is + ***********/ + one: { + options: { + patterns: [ + // Note: _a is now reserved for step two + { + match: /_processCountryData/g, + replacement: '_b' + }, { + match: /_addCountryCode/g, + replacement: '_c' + }, { + match: /_processAllCountries/g, + replacement: '_d' + }, { + match: /_translateCountriesByLocale/g, + replacement: '_d0' + }, { + match: /_countryNameSort/g, + replacement: '_d1' + }, { + match: /_processCountryCodes/g, + replacement: '_d2' + }, { + match: /_processPreferredCountries/g, + replacement: '_e' + }, { + match: /_createEl/g, + replacement: '_e2' + }, { + match: /_generateMarkup/g, + replacement: '_f' + }, { + match: /_appendListItems/g, + replacement: '_g' + }, { + match: /_setInitialState/g, + replacement: '_h' + }, { + match: /_initListeners/g, + replacement: '_i' + }, { + match: /_initHiddenInputListener/g, + replacement: '_i0' + }, { + match: /_getClosestLabel/g, + replacement: '_i1' + }, { + match: /_initDropdownListeners/g, + replacement: '_i2' + }, { + match: /_initRequests/g, + replacement: '_i3' + }, { + match: /_loadAutoCountry/g, + replacement: '_i4' + }, { + match: /_initKeyListeners/g, + replacement: '_j' + }, { + match: /_cap/g, + replacement: '_j2' + }, { + match: /_initBlurListeners/g, + replacement: '_l' + }, { + match: /_removeEmptyDialCode/g, + replacement: '_l2' + }, { + match: /_getNumeric/g, + replacement: '_m' + }, { + match: /_trigger/g, + replacement: '_m2' + }, { + match: /_showDropdown/g, + replacement: '_n' + }, { + match: /_toggleClass/g, + replacement: '_n2' + }, { + match: /_setDropdownPosition/g, + replacement: '_o' + }, { + match: /_getClosestListItem/g, + replacement: '_o2' + }, { + match: /_bindDropdownListeners/g, + replacement: '_p' + }, { + match: /_handleUpDownKey/g, + replacement: '_q' + }, { + match: /_handleEnterKey/g, + replacement: '_r' + }, { + match: /_searchForCountry/g, + replacement: '_s' + }, { + match: /_startsWith/g, + replacement: '_t' + }, { + match: /_updateValFromNumber/g, + replacement: '_u' + }, { + match: /_updateFlagFromNumber/g, + replacement: '_v' + }, { + match: /_isRegionlessNanp/g, + replacement: '_w' + }, { + match: /_highlightListItem/g, + replacement: '_x' + }, { + match: /_getCountryData/g, + replacement: '_y' + }, { + match: /_setFlag/g, + replacement: '_z' + }, { + match: /_updatePlaceholder/g, + replacement: '_0' + }, { + match: /_selectListItem/g, + replacement: '_1' + }, { + match: /_closeDropdown/g, + replacement: '_2' + }, { + match: /_scrollTo/g, + replacement: '_3' + }, { + match: /_updateDialCode/g, + replacement: '_4' + }, { + match: /_getDialCode/g, + replacement: '_5' + }, { + match: /_getFullNumber/g, + replacement: '_6' + }, { + match: /_beforeSetNumber/g, + replacement: '_7' + }, { + match: /_triggerCountryChange/g, + replacement: '_8' + } + ] + }, + files: { + 'tmp/one.min.js': 'tmp/wrapped.min.js', + 'tmp/one-jquery.min.js': 'tmp/wrapped-jquery.min.js', + } + }, + + + /*********** + * INLINE PRIVATE METHODS + ***********/ + two: { + options: { + patterns: [ + { + match: /_handleMouseoverCountryList/g, + replacement: '_a0' + }, { + match: /_handleClickCountryList/g, + replacement: '_a1' + }, { + match: /_handleClickOffToClose/g, + replacement: '_a2' + }, { + match: /_handleKeydownOnDropdown/g, + replacement: '_a3' + }, { + match: /_handleWindowScroll/g, + replacement: '_a4' + }, { + match: /_handleSubmitOrBlurEvent/g, + replacement: '_a8' + }, { + match: /_handleLabelClick/g, + replacement: '_a9' + }, { + match: /_handleClickSelectedFlag/g, + replacement: '_a10' + }, { + match: /_handleFlagsContainerKeydown/g, + replacement: '_a11' + }, { + match: /_handleKeyupEvent/g, + replacement: '_a12' + }, { + match: /_handleClipboardEvent/g, + replacement: '_a13' + }, { + match: /_handleHiddenInputSubmit/g, + replacement: '_a14' + } + ] + }, + files: { + 'tmp/two.min.js': 'tmp/one.min.js', + 'tmp/two-jquery.min.js': 'tmp/one-jquery.min.js', + } + }, + + + /*********** + * INSTANCE FIELDS + * Note: avoid option names as that will break things! + ***********/ + three: { + options: { + patterns: [ + { + match: /\.telInput/g, + replacement: '.a' + }, { + match: /\.activeItem/g, + replacement: '.b' + }, { + match: /\.highlightedItem/g, + replacement: '.c' + }, { + match: /\.options/g, + replacement: '.d' + }, { + match: /\.hadInitialPlaceholder/g, + replacement: '.e' + }, { + match: /\.isMobile/g, + replacement: '.g' + }, { + match: /\.resolveAutoCountryPromise/g, + replacement: '.h' + }, { + match: /\.rejectAutoCountryPromise/g, + replacement: '.i' + }, { + match: /\.resolveUtilsScriptPromise/g, + replacement: '.i0' + }, { + match: /\.rejectUtilsScriptPromise/g, + replacement: '.i1' + }, { + match: /\.defaultCountry/g, + replacement: '.j' + }, { + match: /\.flagsContainer/g, + replacement: '.k' + }, { + match: /\.selectedFlagInner/g, + replacement: '.l' + }, { + match: /\.countryList/g, + replacement: '.m' + }, { + match: /\.countries/g, + replacement: '.p' + }, { + match: /\.countryCodes/g, + replacement: '.q' + }, { + match: /\.selectedCountryData/g, + replacement: '.s' + }, { + match: /\.selectedDialCode/g, + replacement: '.t' + }, { + match: /\.dropdownArrow/g, + replacement: '.u' + } + ] + }, + files: { + 'build/js/intlTelInput.min.js': 'tmp/two.min.js', + 'build/js/intlTelInput-jquery.min.js': 'tmp/two-jquery.min.js', + } + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/responsive_images.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/responsive_images.js new file mode 100644 index 000000000..070495f43 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/responsive_images.js @@ -0,0 +1,42 @@ +module.exports = function(grunt) { + return { + regular: { + options: { + engine: "im", + sizes: [{ + rename: false, + width: '50%', + height: '50%' + }], + newFilesOnly: false + }, + files: [{ + expand: true, + cwd: "src/img/flags/@2x/", + // only process 2-char country code files (ignore sub-regions) + src: ['*.png'], + dest: 'src/img/flags/@1x/' + }] + }, + retina: { + options: { + engine: "im", + // just generate the @2x images here, then use evenizer to get even pixel values for width and height before generating the @1x images + sizes: [{ + rename: false, + width: 40, + height: 30 + }], + // re-gen the images even if the dest files already exist. this is useful for when we change settings here + newFilesOnly: false + }, + files: [{ + expand: true, + cwd: "node_modules/region-flags/png/", + // only process 2-char country code files (ignore sub-regions) + src: ['??.png'], + dest: 'src/img/flags/@2x/' + }] + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/retinafy.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/retinafy.js new file mode 100644 index 000000000..82db9e132 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/retinafy.js @@ -0,0 +1,20 @@ +module.exports = function(grunt) { + return { + options: { + sizes: { + '50%': { + suffix: '' + }, + '100%': { + suffix: '@2x' + } + } + }, + files: { + expand: true, + cwd: 'src/img/flags/@2x/', + src: ['*.png'], + dest: 'src/img/flags/' + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sass.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sass.js new file mode 100644 index 000000000..86676ec95 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sass.js @@ -0,0 +1,25 @@ +const sass = require('node-sass'); + +module.exports = function(grunt) { + return { + main: { + options: { + implementation: sass, + sourcemap: "none", + style: "compressed" + }, + files: { + 'build/css/intlTelInput.css': 'src/css/intlTelInput.scss' + } + }, + demo: { + options: { + implementation: sass, + sourcemap: "none" + }, + files: { + 'build/css/demo.css': 'src/css/demo.scss' + } + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/shell.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/shell.js new file mode 100644 index 000000000..3c304e302 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/shell.js @@ -0,0 +1,7 @@ +module.exports = function(grunt) { + return { + publish: { + command: 'npm publish' + } + }; +}; \ No newline at end of file diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sprite.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sprite.js new file mode 100644 index 000000000..b141d3a0c --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/sprite.js @@ -0,0 +1,31 @@ +module.exports = function(grunt) { + return { + retina: { + src: 'src/img/flags/@2x/*.png', + dest: 'build/img/flags@2x.png', + destCss: 'tmp/sprite@2x.scss', // ignore - we just use the @1x styles for both + padding: 4, + algorithm: 'left-right', + algorithmOpts: { + sort: false + }, + cssOpts: { + variableNameTransforms: ['toLowerCase'] + } + }, + main: { + src: ['src/img/flags/@1x/*.png'], + dest: 'build/img/flags.png', + cssTemplate: 'grunt/tmpl/sprite.scss.mustache', + destCss: 'src/css/sprite.scss', + padding: 2, // this is currently just for chrome, otherwise flags seem to leak into each other + algorithm: 'left-right', + algorithmOpts: { + sort: false + }, + cssOpts: { + variableNameTransforms: ['toLowerCase'] + } + } + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/template.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/template.js new file mode 100644 index 000000000..8f85b07bb --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/template.js @@ -0,0 +1,285 @@ +module.exports = function(grunt) { + + // timestamp in asset URLs for cache busting + var time = (new Date()).getTime(); + + return { + + // this is the first step in generating the actual plugin main JS file + jsAddVersion: { + src: 'src/js/intlTelInput.js', + dest: 'tmp/versioned.js', + options: { + data: (function(version) { + return { + version: version, + }; + })('<%= package.version %>') + } + }, + + // generate the JS scripts for the examples (and cache-bust the utils.js URL) + nationalModeJs: { + src: 'examples/js/nationalMode.js.ejs', + dest: 'examples/gen/js/nationalMode.js', + options: { + data: function() { + return { time: time }; + } + } + }, + defaultCountryIpJs: { + src: 'examples/js/defaultCountryIp.js.ejs', + dest: 'examples/gen/js/defaultCountryIp.js', + options: { + data: function() { + return { time: time }; + } + } + }, + modifyCountryDataJs: { + src: 'examples/js/modifyCountryData.js.ejs', + dest: 'examples/gen/js/modifyCountryData.js', + options: { + data: function() { + return { time: time }; + } + } + }, + onlyCountriesEuropeJs: { + src: 'examples/js/onlyCountriesEurope.js.ejs', + dest: 'examples/gen/js/onlyCountriesEurope.js', + options: { + data: function() { + return { time: time }; + } + } + }, + countrySyncJs: { + src: 'examples/js/countrySync.js.ejs', + dest: 'examples/gen/js/countrySync.js', + options: { + data: function() { + return { time: time }; + } + } + }, + isValidNumberJs: { + src: 'examples/js/isValidNumber.js.ejs', + dest: 'examples/gen/js/isValidNumber.js', + options: { + data: function() { + return { time: time }; + } + } + }, + hiddenInputJs: { + src: 'examples/js/hiddenInput.js.ejs', + dest: 'examples/gen/js/hiddenInput.js', + options: { + data: function() { + return { time: time }; + } + } + }, + initPromiseJs: { + src: 'examples/js/initPromise.js.ejs', + dest: 'examples/gen/js/initPromise.js', + options: { + data: function() { + return { time: time }; + } + } + }, + multipleInstancesJs: { + src: 'examples/js/multipleInstances.js.ejs', + dest: 'examples/gen/js/multipleInstances.js', + options: { + data: function() { + return { time: time }; + } + } + }, + displayNumberJs: { + src: 'examples/js/displayNumber.js.ejs', + dest: 'examples/gen/js/displayNumber.js', + options: { + data: function() { + return { time: time }; + } + } + }, + + // generate the HTML example pages + nationalMode: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/national-mode.html', + options: { + data: function() { + return { + time: time, + title: "National Mode", + desc: "Allow users to enter their national number, and then convert it to international format using the public method getNumber.", + stylesheet: "", + markup: grunt.file.read('examples/partials/nationalMode.html'), + code: grunt.file.read('examples/gen/js/nationalMode.js'), + script: "nationalMode.js" + }; + } + } + }, + defaultCountryIp: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/default-country-ip.html', + options: { + data: function() { + return { + time: time, + title: "Lookup user's country", + desc: "Set initialCountry to 'auto' and pass in a function for geoIpLookup to perform a JSONP request to ipinfo.io, which returns the user's country based on their IP address.", + stylesheet: "", + markup: grunt.file.read('examples/partials/defaultCountryIp.html'), + code: grunt.file.read('examples/gen/js/defaultCountryIp.js'), + script: "defaultCountryIp.js" + }; + } + } + }, + modifyCountryData: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/modify-country-data.html', + options: { + data: function() { + return { + time: time, + title: "Modify country data", + desc: "Use static getCountryData method to update the data to only show localised country names.", + stylesheet: "", + markup: grunt.file.read('examples/partials/simpleInput.html'), + code: grunt.file.read('examples/gen/js/modifyCountryData.js'), + script: "modifyCountryData.js" + }; + } + } + }, + onlyCountriesEurope: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/only-countries-europe.html', + options: { + data: function() { + return { + time: time, + title: "European countries", + desc: "Set onlyCountries option to just European country codes.", + stylesheet: "", + markup: grunt.file.read('examples/partials/simpleInput.html'), + code: grunt.file.read('examples/gen/js/onlyCountriesEurope.js'), + script: "onlyCountriesEurope.js" + }; + } + } + }, + countrySync: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/country-sync.html', + options: { + data: function() { + return { + time: time, + title: "Country sync", + desc: "Use static getCountryData method to create a separate country dropdown for an address form, and then listen for change events to keep the two dropdowns in sync.", + stylesheet: 'countrySync.css', + markup: grunt.file.read('examples/partials/countrySync.html'), + code: grunt.file.read('examples/gen/js/countrySync.js'), + script: "countrySync.js" + }; + } + } + }, + isValidNumber: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/is-valid-number.html', + options: { + data: function() { + return { + time: time, + title: "Validation", + desc: "Use the isValidNumber method (which utilises Google's libphonenumber) to validate the telephone number on the blur event.", + stylesheet: 'isValidNumber.css', + markup: grunt.file.read('examples/partials/isValidNumber.html'), + code: grunt.file.read('examples/gen/js/isValidNumber.js'), + script: "isValidNumber.js" + }; + } + } + }, + hiddenInput: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/hidden-input.html', + options: { + data: function() { + return { + time: time, + title: "Submitting the full international number using a hidden input", + desc: "If you're submitting the form using Ajax, simply use getNumber to get the full international number before sending it. If you're using the standard form POST method, you can use the hiddenInput option to automatically create a hidden input that gets populated with the full international number on submit. Try submitting a valid number below, and then check the 'full_phone' parameter in the URL.", + stylesheet: '', + markup: grunt.file.read('examples/partials/hiddenInput.html'), + code: grunt.file.read('examples/gen/js/hiddenInput.js'), + script: "hiddenInput.js" + }; + } + } + }, + initPromise: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/init-promise.html', + options: { + data: function() { + return { + time: time, + title: "Using the promise returned from initialisation", + desc: "Use this promise to know when the plugin has completely finished initialising, including completing any asynchronous actions you might have enabled with the initialisation options e.g. fetching utils.js with the utilsScript option, and performing the ip lookup with the geoIpLookup option.", + stylesheet: '', + markup: grunt.file.read('examples/partials/initPromise.html'), + code: grunt.file.read('examples/gen/js/initPromise.js'), + script: "initPromise.js" + }; + } + } + }, + multipleInstances: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/multiple-instances.html', + options: { + data: function() { + return { + time: time, + title: "Multiple Instances", + desc: "Here you can see multiple instances of the plugin working alongside each other. I've set the placeholderNumberType differently for each instance to highlight that the instances are completely independent of each other.", + stylesheet: '', + markup: grunt.file.read('examples/partials/multipleInstances.html'), + code: grunt.file.read('examples/gen/js/multipleInstances.js'), + script: "multipleInstances.js" + }; + } + } + }, + displayNumber: { + src: 'examples/template.html.ejs', + dest: 'examples/gen/display-number.html', + options: { + data: function() { + return { + time: time, + title: "Display an existing number", + desc: "We initialise the plugin on an input which already contains a full international number. The plugin will automatically select the relevant flag, and re-format the number to national format.", + stylesheet: '', + markup: grunt.file.read('examples/partials/displayNumber.html'), + code: grunt.file.read('examples/gen/js/displayNumber.js'), + script: "displayNumber.js" + }; + } + } + }, + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/tmpl/sprite.scss.mustache b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/tmpl/sprite.scss.mustache new file mode 100644 index 000000000..377e53408 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/tmpl/sprite.scss.mustache @@ -0,0 +1,32 @@ +@function retina-size($value) { + @return floor($value / 2); +} + +@mixin retina-bg-size($spriteWidth, $spriteHeight) { + background-size: floor($spriteWidth / 2) floor($spriteHeight / 2); +} + +.iti__flag { + $item-width-maps: ({{#items}}{{strings.name}}: {{px.width}}, {{/items}}); + $standard-country: 'ac'; + width: map-get($item-width-maps, $standard-country); + + @each $key, $width in $item-width-maps { + @if $width != map-get($item-width-maps, $standard-country) { + &.iti__#{$key} { + width: $width; + } + } + } + + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + background-size: {{spritesheet.px.width}} {{spritesheet.px.height}}; + } + + {{#items}} + &.iti__{{strings.name}} { + height: {{px.height}}; + background-position: {{px.offset_x}} {{px.offset_y}}; + } + {{/items}} +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/uglify.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/uglify.js new file mode 100644 index 000000000..ddac23f59 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/uglify.js @@ -0,0 +1,30 @@ +module.exports = function(grunt) { + return { + options: { + banner: '/*\n' + + ' * International Telephone Input v<%= package.version %>\n' + + ' * <%= package.repository.url %>\n' + + ' * Licensed under the MIT license\n' + + ' */\n', + screwIE8: false + }, + dev: { + options: { + beautify: true, + compress: false, + mangle: false, + preserveComments: true + }, + files: { + 'build/js/intlTelInput.js': 'tmp/wrapped.js', + 'build/js/intlTelInput-jquery.js': 'tmp/wrapped-jquery.js', + } + }, + prod: { + files: { + 'tmp/wrapped.min.js': 'tmp/wrapped.js', + 'tmp/wrapped-jquery.min.js': 'tmp/wrapped-jquery.js', + } + }, + }; +}; diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/watch.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/watch.js new file mode 100644 index 000000000..52800003e --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/grunt/watch.js @@ -0,0 +1,16 @@ +module.exports = function(grunt) { + return { + js: { + files: "src/js/**/*", + tasks: "js" + }, + pluginCss: { + files: ["src/css/flags.scss", "src/css/intlTelInput.scss"], + tasks: "sass:main" + }, + demoCss: { + files: "src/css/demo.scss", + tasks: "sass:demo" + } + }; +}; \ No newline at end of file diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/index.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/index.js new file mode 100644 index 000000000..b05c2668e --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/index.js @@ -0,0 +1,4 @@ +/** + * Exposing intl-tel-input as a component + */ +module.exports = require("./build/js/intlTelInput"); diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package-lock.json b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package-lock.json new file mode 100644 index 000000000..36ec47d26 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package-lock.json @@ -0,0 +1,9720 @@ +{ + "name": "intl-tel-input", + "version": "15.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0" + } + }, + "@babel/core": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.0.tgz", + "integrity": "sha512-9EWmD0cQAbcXSc+31RIoYgEHx3KQ2CCSMDBhnXrShWvo45TMw+3/55KVxlhkG53kw9tl87DqINgHDgFVhZJV/Q==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helpers": "7.1.0", + "@babel/parser": "7.1.0", + "@babel/template": "7.1.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.11", + "resolve": "1.8.1", + "semver": "5.5.0", + "source-map": "0.5.7" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + } + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0", + "jsesc": "2.5.1", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", + "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-define-map": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", + "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.1.0", + "@babel/types": "7.0.0", + "lodash": "4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz", + "integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-simple-access": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/template": "7.1.0", + "@babel/types": "7.0.0", + "lodash": "4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-wrap-function": "7.1.0", + "@babel/template": "7.1.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz", + "integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz", + "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.1.0", + "@babel/template": "7.1.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helpers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-V1jXUTNdTpBn37wqqN73U+eBpzlLHmxA4aDaghJBggmzly/FpIJMHXse9lgdzQQT4gs5jZ5NmYxOL8G3ROc29g==", + "dev": true, + "requires": { + "@babel/template": "7.1.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "4.0.0" + }, + "dependencies": { + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.0.tgz", + "integrity": "sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz", + "integrity": "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.1.0", + "@babel/plugin-syntax-async-generators": "7.0.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", + "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-json-strings": "7.0.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", + "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", + "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", + "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", + "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz", + "integrity": "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", + "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", + "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "lodash": "4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/plugin-transform-classes": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz", + "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-define-map": "7.1.0", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "globals": "11.7.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", + "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", + "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", + "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", + "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz", + "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", + "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz", + "integrity": "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", + "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz", + "integrity": "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz", + "integrity": "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-simple-access": "7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz", + "integrity": "sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz", + "integrity": "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz", + "integrity": "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz", + "integrity": "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.1.0", + "@babel/helper-get-function-arity": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "dev": true, + "requires": { + "regenerator-transform": "0.13.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", + "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", + "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", + "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", + "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", + "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", + "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + } + }, + "@babel/preset-env": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.0.tgz", + "integrity": "sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-proposal-async-generator-functions": "7.1.0", + "@babel/plugin-proposal-json-strings": "7.0.0", + "@babel/plugin-proposal-object-rest-spread": "7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0", + "@babel/plugin-syntax-async-generators": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0", + "@babel/plugin-transform-arrow-functions": "7.0.0", + "@babel/plugin-transform-async-to-generator": "7.1.0", + "@babel/plugin-transform-block-scoped-functions": "7.0.0", + "@babel/plugin-transform-block-scoping": "7.0.0", + "@babel/plugin-transform-classes": "7.1.0", + "@babel/plugin-transform-computed-properties": "7.0.0", + "@babel/plugin-transform-destructuring": "7.0.0", + "@babel/plugin-transform-dotall-regex": "7.0.0", + "@babel/plugin-transform-duplicate-keys": "7.0.0", + "@babel/plugin-transform-exponentiation-operator": "7.1.0", + "@babel/plugin-transform-for-of": "7.0.0", + "@babel/plugin-transform-function-name": "7.1.0", + "@babel/plugin-transform-literals": "7.0.0", + "@babel/plugin-transform-modules-amd": "7.1.0", + "@babel/plugin-transform-modules-commonjs": "7.1.0", + "@babel/plugin-transform-modules-systemjs": "7.0.0", + "@babel/plugin-transform-modules-umd": "7.1.0", + "@babel/plugin-transform-new-target": "7.0.0", + "@babel/plugin-transform-object-super": "7.1.0", + "@babel/plugin-transform-parameters": "7.1.0", + "@babel/plugin-transform-regenerator": "7.0.0", + "@babel/plugin-transform-shorthand-properties": "7.0.0", + "@babel/plugin-transform-spread": "7.0.0", + "@babel/plugin-transform-sticky-regex": "7.0.0", + "@babel/plugin-transform-template-literals": "7.0.0", + "@babel/plugin-transform-typeof-symbol": "7.0.0", + "@babel/plugin-transform-unicode-regex": "7.0.0", + "browserslist": "4.1.1", + "invariant": "2.2.4", + "js-levenshtein": "1.1.3", + "semver": "5.5.0" + } + }, + "@babel/template": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.0.tgz", + "integrity": "sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.1.0", + "@babel/types": "7.0.0" + } + }, + "@babel/traverse": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.0.tgz", + "integrity": "sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.1.0", + "@babel/types": "7.0.0", + "debug": "3.1.0", + "globals": "11.7.0", + "lodash": "4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "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 + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-jsx": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.1.tgz", + "integrity": "sha512-Cte/sTY9/XcygXjJ0q58v//SnEQ7ViWExKyJpLJlLqomDbQyMLh6Is4KuWJ/wmxzhiwkGRple7Gqv1zf6Syz5w==", + "dev": true, + "requires": { + "humanize-ms": "1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "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 + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "applause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/applause/-/applause-1.2.2.tgz", + "integrity": "sha1-qEaFeegfZzl7tWNMKZU77c0PVsA=", + "dev": true, + "requires": { + "cson-parser": "1.3.5", + "js-yaml": "3.5.5", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "dev": true, + "requires": { + "file-type": "3.9.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "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.3.5" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "2.18.0" + }, + "dependencies": { + "commander": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "dev": true + } + } + }, + "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.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "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-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0" + } + }, + "array-parallel": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", + "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=", + "dev": true + }, + "array-series": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", + "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "dev": true, + "optional": 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.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "axobject-query": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.1.tgz", + "integrity": "sha1-Bd+nBa2orZ25k/polvItOVsLCgc=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", + "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.1.0", + "@babel/traverse": "7.1.0", + "@babel/types": "7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "bin-build": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "dev": true, + "optional": true, + "requires": { + "archive-type": "3.2.0", + "decompress": "3.0.0", + "download": "4.4.3", + "exec-series": "1.0.3", + "rimraf": "2.2.8", + "tempfile": "1.1.1", + "url-regex": "3.2.0" + }, + "dependencies": { + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "optional": true, + "requires": { + "os-tmpdir": "1.0.2", + "uuid": "2.0.3" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true, + "optional": true + } + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "dev": true, + "optional": true, + "requires": { + "executable": "1.1.0" + } + }, + "bin-pack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bin-pack/-/bin-pack-1.0.2.tgz", + "integrity": "sha1-wqAU7b8L7XCjKSBi7UZXe5YSBnk=", + "dev": true + }, + "bin-version": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "dev": true, + "optional": true, + "requires": { + "find-versions": "1.2.1" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "dev": true, + "optional": true, + "requires": { + "bin-version": "1.0.4", + "minimist": "1.2.0", + "semver": "4.3.6", + "semver-truncate": "1.1.2" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true, + "optional": true + } + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "dev": true, + "optional": true, + "requires": { + "bin-check": "2.0.0", + "bin-version-check": "2.1.0", + "download": "4.4.3", + "each-async": "1.1.1", + "lazy-req": "1.1.0", + "os-filter-obj": "1.0.3" + } + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "safe-buffer": "5.1.1" + } + }, + "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.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "0.3.1", + "error": "7.0.2", + "raw-body": "1.1.7", + "safe-json-parse": "1.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "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.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "browserslist": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz", + "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000887", + "electron-to-chromium": "1.3.70", + "node-releases": "1.0.0-alpha.11" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "readable-stream": "2.3.5", + "uuid": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "cacache": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.2.0.tgz", + "integrity": "sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "figgy-pudding": "3.5.1", + "glob": "7.1.3", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "6.0.1", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "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.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30000887", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000887.tgz", + "integrity": "sha512-AHpONWuGFWO8yY9igdXH94tikM6ERS84286r0cAMAXYFtJBk76lhiMhtCxBJNBZsD6hzlvpWZ2AtbVFEkf4JQA==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "caw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "dev": true, + "requires": { + "get-proxy": "1.1.0", + "is-obj": "1.0.1", + "object-assign": "3.0.0", + "tunnel-agent": "0.4.3" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "optional": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", + "dev": true + }, + "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 + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, + "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 + }, + "console-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "dev": true, + "optional": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "contentstream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/contentstream/-/contentstream-1.0.0.tgz", + "integrity": "sha1-C9z6RtowRkqGzo+n7OVlQQ3G+aU=", + "dev": true, + "requires": { + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.1" + } + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "which": "1.2.14" + } + }, + "cson": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/cson/-/cson-3.0.2.tgz", + "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=", + "dev": true, + "requires": { + "coffee-script": "1.12.7", + "cson-parser": "1.3.5", + "extract-opts": "3.3.1", + "requirefresh": "2.1.0", + "safefs": "4.1.0" + }, + "dependencies": { + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + } + } + }, + "cson-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz", + "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=", + "dev": true, + "requires": { + "coffee-script": "1.12.7" + }, + "dependencies": { + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "optional": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "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.2" + } + }, + "custom-event-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.6.tgz", + "integrity": "sha512-3FxpFlzGcHrDykwWu+xWVXZ8PfykM/9/bI3zXb953sh+AjInZWcQmrnmvPoZgiqNjmbtTm10PWvYqvRW527x6g==", + "dev": true + }, + "cwise": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/cwise/-/cwise-1.0.10.tgz", + "integrity": "sha1-JO7mBy69/WuMb12tsXCQtkmxK+8=", + "dev": true, + "requires": { + "cwise-compiler": "1.1.3", + "cwise-parser": "1.0.3", + "static-module": "1.5.0", + "uglify-js": "2.8.29" + } + }, + "cwise-compiler": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz", + "integrity": "sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=", + "dev": true, + "requires": { + "uniq": "1.0.1" + } + }, + "cwise-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cwise-parser/-/cwise-parser-1.0.3.tgz", + "integrity": "sha1-jkk8F9VPl8sDCp6YVLyGyd+zVP4=", + "dev": true, + "requires": { + "esprima": "1.2.5", + "uniq": "1.0.1" + }, + "dependencies": { + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=", + "dev": true + } + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "data-uri-to-buffer": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.3.tgz", + "integrity": "sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo=", + "dev": true + }, + "date-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz", + "integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=", + "dev": true, + "requires": { + "time-zone": "0.1.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "dev": true, + "requires": { + "buffer-to-vinyl": "1.1.0", + "concat-stream": "1.6.1", + "decompress-tar": "3.1.0", + "decompress-tarbz2": "3.1.0", + "decompress-targz": "3.1.0", + "decompress-unzip": "3.4.0", + "stream-combiner2": "1.1.1", + "vinyl-assign": "1.2.1", + "vinyl-fs": "2.4.4" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "dev": true, + "requires": { + "is-tar": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.6.2", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "dev": true, + "requires": { + "is-bzip2": "1.0.0", + "object-assign": "2.1.1", + "seek-bzip": "1.0.5", + "strip-dirs": "1.1.1", + "tar-stream": "1.6.2", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "dev": true, + "requires": { + "is-gzip": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.6.2", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "dev": true, + "requires": { + "is-zip": "1.0.0", + "read-all-stream": "3.1.0", + "stat-mode": "0.2.2", + "strip-dirs": "1.1.1", + "through2": "2.0.3", + "vinyl": "1.2.0", + "yauzl": "2.10.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "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 + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + }, + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + } + } + }, + "download": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "dev": true, + "requires": { + "caw": "1.2.0", + "concat-stream": "1.6.1", + "each-async": "1.1.1", + "filenamify": "1.2.1", + "got": "5.7.1", + "gulp-decompress": "1.2.0", + "gulp-rename": "1.4.0", + "is-url": "1.2.4", + "object-assign": "4.1.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.5", + "stream-combiner2": "1.1.1", + "vinyl": "1.2.0", + "vinyl-fs": "2.4.4", + "ware": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + } + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "stream-shift": "1.0.0" + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "dev": true, + "requires": { + "onetime": "1.1.0", + "set-immediate-shim": "1.0.1" + } + }, + "eachr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz", + "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=", + "dev": true, + "requires": { + "editions": "1.3.4", + "typechecker": "4.5.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.70.tgz", + "integrity": "sha512-WYMjqCnPVS5JA+XvwEnpwucJpVi2+q9cdCFpbhxgWGsCtforFBEkuP9+nCyy/wnU/0SyLcLRIeZct9ayMGcXoQ==", + "dev": true + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "4.2.5" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", + "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", + "dev": true, + "requires": { + "esprima": "1.1.1", + "estraverse": "1.5.1", + "esutils": "1.0.0", + "source-map": "0.1.43" + }, + "dependencies": { + "esprima": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", + "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "eslint": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz", + "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "ajv": "6.5.4", + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "4.0.0", + "eslint-utils": "1.3.1", + "eslint-visitor-keys": "1.0.0", + "espree": "4.0.0", + "esquery": "1.0.1", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.3", + "globals": "11.7.0", + "ignore": "4.0.6", + "imurmurhash": "0.1.4", + "inquirer": "6.2.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.12.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "regexpp": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.3", + "text-table": "0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", + "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", + "dev": true, + "requires": { + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.5.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "eslint-config-airbnb": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.0.tgz", + "integrity": "sha512-R9jw28hFfEQnpPau01NO5K/JWMGLi6aymiF6RsnMURjTk+MqZKllCqGK/0tOvHkPi/NWSSOU2Ced/GX++YxLnw==", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "13.1.0", + "object.assign": "4.1.0", + "object.entries": "1.0.4" + } + }, + "eslint-config-airbnb-base": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", + "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "dev": true, + "requires": { + "eslint-restricted-globals": "0.1.1", + "object.assign": "4.1.0", + "object.entries": "1.0.4" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.8.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + } + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "requires": { + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.2", + "eslint-module-utils": "2.2.0", + "has": "1.0.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0", + "resolve": "1.8.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz", + "integrity": "sha512-JsxNKqa3TwmPypeXNnI75FntkUktGzI1wSa1LgNZdSOMI+B4sxnr1lSF8m8lPiz4mKiC+14ysZQM4scewUrP7A==", + "dev": true, + "requires": { + "aria-query": "3.0.0", + "array-includes": "3.0.3", + "ast-types-flow": "0.0.7", + "axobject-query": "2.0.1", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "has": "1.0.3", + "jsx-ast-utils": "2.0.1" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "requires": { + "array-includes": "3.0.3", + "doctrine": "2.1.0", + "has": "1.0.3", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.2" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + } + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", + "dev": true, + "requires": { + "acorn": "5.7.3", + "acorn-jsx": "4.1.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, + "evenizer": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/evenizer/-/evenizer-0.1.17.tgz", + "integrity": "sha1-jD8Q4GL4kW/ew8zoFcrZDB8fEhI=", + "dev": true, + "requires": { + "imagemagick": "0.1.3", + "optimist": "0.6.1" + } + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", + "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "dev": true, + "optional": true, + "requires": { + "execa": "0.7.0", + "p-finally": "1.0.0", + "pify": "3.0.0", + "rimraf": "2.6.2", + "tempfile": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "optional": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "dev": true, + "optional": true, + "requires": { + "async-each-series": "1.1.0", + "object-assign": "4.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "optional": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + } + } + }, + "executable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "dev": true, + "optional": true, + "requires": { + "meow": "3.7.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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.1" + } + }, + "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.2.4" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + } + } + }, + "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" + }, + "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 + } + } + }, + "extract-opts": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-3.3.1.tgz", + "integrity": "sha1-WrvtyYwNUgLjJ4cn+Rktfghsa+E=", + "dev": true, + "requires": { + "eachr": "3.2.0", + "editions": "1.3.4", + "typechecker": "4.5.0" + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "dev": true, + "requires": { + "acorn": "5.5.3", + "foreach": "2.0.5", + "isarray": "0.0.1", + "object-keys": "1.0.11" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + }, + "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 + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "1.0.0", + "strip-outer": "1.0.1", + "trim-repeated": "1.0.0" + } + }, + "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.1.0", + "randomatic": "3.1.0", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } + }, + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "dev": true, + "optional": true, + "requires": { + "array-uniq": "1.0.3", + "get-stdin": "4.0.1", + "meow": "3.7.0", + "semver-regex": "1.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "5.0.15" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "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.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "requires": { + "minipass": "2.3.4" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.2.8" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "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.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "genfun": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-4.0.1.tgz", + "integrity": "sha1-7RAEHy5KfxsKOEZtF6XD4n3x38E=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-pixels": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/get-pixels/-/get-pixels-3.3.2.tgz", + "integrity": "sha512-6ar+8yPxRd1pskEcl2GSEu1La0+xYRjjnkby6AYiRDDwZ0tJbPQmHnSeH9fGLskT8kvR0OukVgtZLcsENF9YKQ==", + "dev": true, + "requires": { + "data-uri-to-buffer": "0.0.3", + "jpeg-js": "0.3.4", + "mime-types": "2.1.18", + "ndarray": "1.0.18", + "ndarray-pack": "1.2.1", + "node-bitmap": "0.0.1", + "omggif": "1.0.9", + "parse-data-uri": "0.2.0", + "pngjs": "3.3.3", + "request": "2.88.0", + "through": "2.3.8" + } + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "gif-encoder": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/gif-encoder/-/gif-encoder-0.4.3.tgz", + "integrity": "sha1-iitP6MqJWkjjoLbLs0CgpqNXGJk=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "gifsicle": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", + "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.1" + }, + "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.1" + } + }, + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.0.6", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "minimatch": "3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "1.0.1" + } + }, + "gm": { + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/gm/-/gm-1.23.1.tgz", + "integrity": "sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=", + "dev": true, + "requires": { + "array-parallel": "0.1.3", + "array-series": "0.1.5", + "cross-spawn": "4.0.2", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.5", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "grunt": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.3.tgz", + "integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==", + "dev": true, + "requires": { + "coffeescript": "1.10.0", + "dateformat": "1.0.12", + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.3.0", + "glob": "7.0.6", + "grunt-cli": "1.2.0", + "grunt-known-options": "1.1.0", + "grunt-legacy-log": "2.0.0", + "grunt-legacy-util": "1.1.1", + "iconv-lite": "0.4.19", + "js-yaml": "3.5.5", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "grunt-babel": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-8.0.0.tgz", + "integrity": "sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ==", + "dev": true + }, + "grunt-bump": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.8.0.tgz", + "integrity": "sha1-0//gzzzws44JYHt4U49CpTHq/lU=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "requires": { + "findup-sync": "0.3.0", + "grunt-known-options": "1.1.0", + "nopt": "3.0.6", + "resolve": "1.1.7" + } + }, + "grunt-contrib-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", + "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.7" + } + }, + "grunt-contrib-cssmin": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-2.2.1.tgz", + "integrity": "sha512-IXNomhQ5ekVZbDbj/ik5YccoD9khU6LT2fDXqO1+/Txjq8cp0tQKjVS8i8EAbHOrSDkL7/UD6A7b+xj98gqh9w==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "clean-css": "4.1.11", + "maxmin": "2.1.0" + }, + "dependencies": { + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "maxmin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "figures": "1.7.0", + "gzip-size": "3.0.0", + "pretty-bytes": "3.0.1" + } + } + } + }, + "grunt-contrib-imagemin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-imagemin/-/grunt-contrib-imagemin-2.0.1.tgz", + "integrity": "sha512-91zBrvh350QSpsxyCTXni0djMXavF3elBmvFgnbp/2CgIx53QYe+Cvf2+wZmrcb8U0qp+MjHl0Ahjct4+R6PLQ==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "imagemin": "5.3.1", + "imagemin-gifsicle": "5.2.0", + "imagemin-jpegtran": "5.0.2", + "imagemin-optipng": "5.2.1", + "imagemin-svgo": "5.2.4", + "p-map": "1.2.0", + "plur": "2.1.2", + "pretty-bytes": "4.0.2" + }, + "dependencies": { + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "1.4.0" + } + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + } + } + }, + "grunt-contrib-jasmine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-jasmine/-/grunt-contrib-jasmine-2.0.2.tgz", + "integrity": "sha512-zRUbPAbnzEuLjRsJGHSmEoQnSa9CfVYSxoRglu9+nP23B05cEJU2WQCQg6lCTvNQ63MY4d3iW6SnuD7cBd1s8A==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "grunt-eslint": "20.1.0", + "lodash": "2.4.2", + "pacote": "8.1.3", + "puppeteer": "1.4.0", + "rimraf": "2.2.8", + "sprintf-js": "1.0.3" + }, + "dependencies": { + "acorn-jsx": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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.3" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.4.1", + "concat-stream": "1.6.1", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.3", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.4", + "esquery": "1.0.1", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.3", + "globals": "11.7.0", + "ignore": "3.3.10", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.12.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "regexpp": "1.1.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "external-editor": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "grunt-eslint": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-20.1.0.tgz", + "integrity": "sha512-VZlDOLrB2KKefDDcx/wR8rEEz7smDwDKVblmooa+itdt/2jWw3ee2AiZB5Ap4s4AoRY0pbHRjZ3HHwY8uKR9Rw==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "eslint": "4.19.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.11", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "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", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.4.1", + "lodash": "4.17.11", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + } + } + }, + "grunt-contrib-uglify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.3.0.tgz", + "integrity": "sha1-s9AmDr3WzvoS/y+Onh4ln33kIW8=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "maxmin": "1.1.0", + "object.assign": "4.1.0", + "uglify-js": "2.8.29", + "uri-path": "1.0.0" + } + }, + "grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "dev": true, + "requires": { + "async": "2.6.1", + "gaze": "1.1.2", + "lodash": "4.17.11", + "tiny-lr": "1.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "grunt-eslint": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-21.0.0.tgz", + "integrity": "sha512-HJocD9P35lpCvy6pPPCTgzBavzckrT1nt7lpqV55Vy8E6LQJv4RortXoH1jJTYhO5DYY7RPATv7Uc4383PUYqQ==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "eslint": "5.6.0" + }, + "dependencies": { + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "grunt-exec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-1.0.1.tgz", + "integrity": "sha1-5dU6OcXzRpATBe3uXIfbDyr5mcQ=", + "dev": true + }, + "grunt-known-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "dev": true, + "requires": { + "colors": "1.1.2", + "grunt-legacy-log-utils": "2.0.1", + "hooker": "0.2.3", + "lodash": "4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "lodash": "4.17.11" + }, + "dependencies": { + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "dev": true, + "requires": { + "async": "1.5.2", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "4.17.11", + "underscore.string": "3.3.4", + "which": "1.3.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "grunt-replace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-replace/-/grunt-replace-1.0.1.tgz", + "integrity": "sha1-kKeVMvuJBB/kJ8h9QlI4sPiGZRo=", + "dev": true, + "requires": { + "applause": "1.2.2", + "chalk": "1.1.3", + "file-sync-cmp": "0.1.1", + "lodash": "4.17.5" + } + }, + "grunt-responsive-images": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/grunt-responsive-images/-/grunt-responsive-images-1.10.1.tgz", + "integrity": "sha1-X7JNhERN25woKuh/M0FCsXcmsgI=", + "dev": true, + "requires": { + "async": "1.5.2", + "gm": "1.23.1", + "grunt": "1.0.3", + "lodash": "4.17.5" + } + }, + "grunt-sass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.0.2.tgz", + "integrity": "sha512-Ogq4cWqBre71gZIkgxIxevgzZHSIIsrKu/5yvPDl4Mvib0A4TRTJEQUdpQ0YV1iai0DPjayz02vDJE6KUVHQ2w==", + "dev": true + }, + "grunt-shell": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-2.1.0.tgz", + "integrity": "sha1-Q595FZ7RHmSmUaacyKPQK+v17MI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "npm-run-path": "2.0.2" + } + }, + "grunt-spritesmith": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/grunt-spritesmith/-/grunt-spritesmith-6.6.2.tgz", + "integrity": "sha512-Wo/fxqY2e83OsjOWJxFsvZEnhMnfMBBYWeFDd5ySUDGt0q+xNyWkgwDPyZyiOe+0eWhW9Ny9mEXi8MgG67irdg==", + "dev": true, + "requires": { + "async": "1.5.2", + "spritesheet-templates": "10.2.2", + "spritesmith": "3.3.1", + "underscore": "1.4.4", + "url2": "1.0.0" + } + }, + "grunt-template": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-template/-/grunt-template-1.0.0.tgz", + "integrity": "sha1-Vgj5sFoGp4b6BIymZEfktI09HCE=", + "dev": true + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "dev": true, + "requires": { + "archive-type": "3.2.0", + "decompress": "3.0.0", + "gulp-util": "3.0.8", + "readable-stream": "2.3.5" + } + }, + "gulp-rename": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", + "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "dev": true + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.2", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.1" + } + }, + "gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "dev": true, + "requires": { + "browserify-zlib": "0.1.4", + "concat-stream": "1.6.1" + } + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "dev": true, + "requires": { + "async": "2.6.1", + "optimist": "0.6.1", + "source-map": "0.6.1", + "uglify-js": "3.4.9" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true, + "optional": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "2.17.1", + "source-map": "0.6.1" + } + } + } + }, + "handlebars-layouts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/handlebars-layouts/-/handlebars-layouts-1.1.0.tgz", + "integrity": "sha1-JhK+Wu2PICaXN8cxHaFcnC11+7w=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.1" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "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 + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true, + "optional": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "imagemagick": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/imagemagick/-/imagemagick-0.1.3.tgz", + "integrity": "sha1-dIPOoJO02fLi85aFetyIIbU3xWo=", + "dev": true + }, + "imagemin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", + "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", + "dev": true, + "requires": { + "file-type": "4.4.0", + "globby": "6.1.0", + "make-dir": "1.3.0", + "p-pipe": "1.2.0", + "pify": "2.3.0", + "replace-ext": "1.0.0" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.0.6", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "imagemin-gifsicle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", + "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "3.2.0", + "gifsicle": "3.0.4", + "is-gif": "1.0.0" + } + }, + "imagemin-jpegtran": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz", + "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "3.2.0", + "is-jpg": "1.0.1", + "jpegtran-bin": "3.2.0" + } + }, + "imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "3.2.0", + "is-png": "1.1.0", + "optipng-bin": "3.1.4" + } + }, + "imagemin-svgo": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-5.2.4.tgz", + "integrity": "sha512-1bNZdlWVKdfxzu0xDD1pWjwK/G8FLcztUh/GWaI7xLgCFrn0j35o+uBbY7VcdY2AmKgiLYTXhrzrbkQk6xj8aA==", + "dev": true, + "optional": true, + "requires": { + "is-svg": "2.1.0", + "svgo": "0.7.2" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "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": "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.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherit": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz", + "integrity": "sha1-8WFLBshUToEo5CKchjR9tzrZeI0=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "3.0.3", + "figures": "2.0.0", + "lodash": "4.17.11", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "6.3.2", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "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", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "iota-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", + "integrity": "sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true, + "optional": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "0.1.3" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "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", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "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.1" + } + }, + "is-gif": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", + "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", + "dev": true, + "optional": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-jpg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.1.tgz", + "integrity": "sha1-KW1X/dmc4BBDSnKD40armhA16XU=", + "dev": true, + "optional": true + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "dev": true + }, + "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.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-png": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "dev": true, + "optional": true + }, + "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", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "optional": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "1.0.0" + } + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "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-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jasmine-jquery": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/jasmine-jquery/-/jasmine-jquery-2.1.1.tgz", + "integrity": "sha1-1AleZGlEomdjI1dpqwGNnzDw1Hs=", + "dev": true + }, + "jit-grunt": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/jit-grunt/-/jit-grunt-0.10.0.tgz", + "integrity": "sha1-AIw6f+Hpa9DYTiYOofoXg0V/ecI=", + "dev": true + }, + "jpeg-js": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", + "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==", + "dev": true + }, + "jpegtran-bin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", + "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "dev": true + }, + "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-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", + "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-content-demux": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/json-content-demux/-/json-content-demux-0.1.3.tgz", + "integrity": "sha1-XBJ3v387dRKoa3Mt3UGzLU38scw=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, + "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.6" + } + }, + "layout": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/layout/-/layout-2.2.0.tgz", + "integrity": "sha1-MeRL/BjdEBmz/7II5AKku/4uavQ=", + "dev": true, + "requires": { + "bin-pack": "1.0.2" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true, + "optional": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "livereload-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", + "dev": true + }, + "load-grunt-config": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/load-grunt-config/-/load-grunt-config-0.19.2.tgz", + "integrity": "sha1-UgkNSiDG5j90p2SPJJsZ57f87CQ=", + "dev": true, + "requires": { + "cson": "3.0.2", + "glob": "5.0.15", + "jit-grunt": "0.10.0", + "js-yaml": "3.4.6", + "load-grunt-tasks": "3.3.0", + "lodash": "3.10.1" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "js-yaml": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz", + "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3", + "inherit": "2.2.6" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "load-grunt-tasks": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.3.0.tgz", + "integrity": "sha1-vliSkJRY2T3fdp60vGhRAggMYyE=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "multimatch": "2.1.0", + "pkg-up": "1.0.0" + } + }, + "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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "logalot": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "dev": true, + "optional": true, + "requires": { + "figures": "1.7.0", + "squeak": "1.3.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "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.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "dev": true, + "optional": true, + "requires": { + "get-stdin": "4.0.1", + "indent-string": "2.1.0", + "longest": "1.0.1", + "meow": "3.7.0" + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", + "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", + "dev": true, + "requires": { + "agentkeepalive": "3.5.1", + "cacache": "11.2.0", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.1", + "ssri": "6.0.1" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "figures": "1.7.0", + "gzip-size": "1.0.0", + "pretty-bytes": "1.0.4" + }, + "dependencies": { + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + } + } + }, + "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.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + } + }, + "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.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + }, + "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" + } + } + } + }, + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "minipass": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.4.tgz", + "integrity": "sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "dev": true + } + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "dev": true, + "requires": { + "minipass": "2.3.4" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "1.6.1", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.3", + "through2": "2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ndarray": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.18.tgz", + "integrity": "sha1-tg06cyJOxVXQ+qeXEeUCRI/T95M=", + "dev": true, + "requires": { + "iota-array": "1.0.0", + "is-buffer": "1.1.6" + } + }, + "ndarray-fill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ndarray-fill/-/ndarray-fill-1.0.2.tgz", + "integrity": "sha1-owpg9xiODJWC/N1YiWrNy1IqHtY=", + "dev": true, + "requires": { + "cwise": "1.0.10" + } + }, + "ndarray-ops": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ndarray-ops/-/ndarray-ops-1.2.2.tgz", + "integrity": "sha1-WeiNLDKn7ryxvGkPrhQVeVV6YU4=", + "dev": true, + "requires": { + "cwise-compiler": "1.1.3" + } + }, + "ndarray-pack": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz", + "integrity": "sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=", + "dev": true, + "requires": { + "cwise-compiler": "1.1.3", + "ndarray": "1.0.18" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-bitmap": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz", + "integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.1" + } + }, + "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.12", + "glob": "7.0.6", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.88.0", + "rimraf": "2.2.8", + "semver": "5.3.0", + "tar": "2.2.2", + "which": "1.2.14" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "node-sass": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.0.6", + "in-publish": "2.0.0", + "lodash": "4.17.11", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.14.0", + "node-gyp": "3.8.0", + "npmlog": "4.1.2", + "request": "2.88.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.1", + "true-case-path": "1.0.3" + }, + "dependencies": { + "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.1.2", + "which": "1.2.14" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "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.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "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.1.0" + } + }, + "npm-bundled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.11.tgz", + "integrity": "sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA==", + "dev": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.5" + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz", + "integrity": "sha512-q9zLP8cTr8xKPmMZN3naxp1k/NxVFsjxN6uWuO1tiw9gxg7wZWQ/b5UTfzD0ANw2q1lQxdLKTeCCksq+bPSgbQ==", + "dev": true, + "requires": { + "npm-package-arg": "6.1.0", + "semver": "5.5.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "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.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "obj-extend": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/obj-extend/-/obj-extend-0.1.0.tgz", + "integrity": "sha1-u0SKR3X7les0p4H5CLusLfI9u1s=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", + "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0", + "function-bind": "1.1.1", + "has": "1.0.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.5", + "is-extendable": "0.1.1" + } + }, + "omggif": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", + "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.5" + } + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "dev": true, + "optional": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.3.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pacote": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-8.1.3.tgz", + "integrity": "sha512-1mQvUgCBA9Bq1MtWCxuDzhDNZn0bhiOEUpiHHj/KepINGhb16NS8osaEsKEDTaNBwPZWm0aJJsZe04+6TEOkZQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "cacache": "11.2.0", + "get-stream": "3.0.0", + "glob": "7.1.3", + "lru-cache": "4.1.3", + "make-fetch-happen": "4.0.1", + "minimatch": "3.0.4", + "minipass": "2.3.4", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.11", + "npm-pick-manifest": "2.1.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "ssri": "6.0.1", + "tar": "4.4.6", + "unique-filename": "1.1.0", + "which": "1.3.1" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "tar": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.6.tgz", + "integrity": "sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==", + "dev": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "parse-data-uri": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/parse-data-uri/-/parse-data-uri-0.2.0.tgz", + "integrity": "sha1-vwTYUd1ch7CrI45dAazklLYEtMk=", + "dev": true, + "requires": { + "data-uri-to-buffer": "0.0.3" + } + }, + "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.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "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": "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.3.1" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "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.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "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.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pixelsmith": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/pixelsmith/-/pixelsmith-2.2.1.tgz", + "integrity": "sha1-MT95MAKcZdCyj+HOKcBrjiy7OAc=", + "dev": true, + "requires": { + "async": "0.9.2", + "concat-stream": "1.5.2", + "get-pixels": "3.3.2", + "mime-types": "2.1.18", + "ndarray": "1.0.18", + "ndarray-fill": "1.0.2", + "obj-extend": "0.1.0", + "save-pixels": "2.3.4", + "vinyl-file": "1.3.0" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pngjs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", + "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==", + "dev": true + }, + "pngjs-nozlib": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz", + "integrity": "sha1-nmTWAs/pzOTZ1Zl9BodCmnPwt9c=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "dev": true, + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "protoduck": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.0.tgz", + "integrity": "sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ==", + "dev": true, + "requires": { + "genfun": "4.0.1" + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "stream-shift": "1.0.0" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "puppeteer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.4.0.tgz", + "integrity": "sha512-WDnC1FSHTedvRSS8BZB73tPAx2svUCWFdcxVjrybw8pbKOAB1v5S/pW0EamkqQoL1mXiBc+v8lyYjhhzMHIk1Q==", + "dev": true, + "requires": { + "debug": "3.1.0", + "extract-zip": "1.6.7", + "https-proxy-agent": "2.2.1", + "mime": "2.3.1", + "progress": "2.0.0", + "proxy-from-env": "1.0.0", + "rimraf": "2.6.2", + "ws": "3.3.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "quote-stream": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz", + "integrity": "sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "through2": "0.4.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "2.1.2" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + } + } + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.2", + "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 + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1.0.0", + "string_decoder": "0.10.31" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.5" + } + }, + "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.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "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.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "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" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "1.4.0" + } + }, + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "dev": true, + "requires": { + "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" + } + }, + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" + } + }, + "region-flags": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/region-flags/-/region-flags-1.1.0.tgz", + "integrity": "sha1-a2AX5+uTaCbN2k0dZEaHHUtz+zk=", + "dev": true + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "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.2" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.20", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + }, + "dependencies": { + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "1.36.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requirefresh": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/requirefresh/-/requirefresh-2.1.0.tgz", + "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=", + "dev": true, + "requires": { + "editions": "1.3.4" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + }, + "dependencies": { + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + } + } + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "rxjs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", + "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", + "dev": true, + "requires": { + "tslib": "1.9.3" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safefs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz", + "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=", + "dev": true, + "requires": { + "editions": "1.3.4", + "graceful-fs": "4.1.11" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.0.6", + "lodash": "4.17.5", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + } + } + }, + "save-pixels": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/save-pixels/-/save-pixels-2.3.4.tgz", + "integrity": "sha1-SdNJwGuNfAEn2/DaJLRKylr7Wf4=", + "dev": true, + "requires": { + "contentstream": "1.0.0", + "gif-encoder": "0.4.3", + "jpeg-js": "0.0.4", + "ndarray": "1.0.18", + "ndarray-ops": "1.2.2", + "pngjs-nozlib": "1.0.0", + "through": "2.3.8" + }, + "dependencies": { + "jpeg-js": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.0.4.tgz", + "integrity": "sha1-Bqr0fv7HrwsZJKWc1pWm0rXthw4=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "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.5.1", + "source-map": "0.4.4" + }, + "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": "1.0.1" + } + } + } + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "2.8.1" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "dev": true, + "optional": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "dev": true, + "optional": true, + "requires": { + "semver": "5.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "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", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "smart-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", + "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==", + "dev": true + }, + "socks": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz", + "integrity": "sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "socks": "2.2.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "dev": true + }, + "spritesheet-templates": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/spritesheet-templates/-/spritesheet-templates-10.2.2.tgz", + "integrity": "sha1-6J2ihbvM20HFm1eYFnTikGeJrWY=", + "dev": true, + "requires": { + "handlebars": "4.0.12", + "handlebars-layouts": "1.1.0", + "json-content-demux": "0.1.3", + "underscore": "1.4.4", + "underscore.string": "3.0.3" + }, + "dependencies": { + "underscore.string": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz", + "integrity": "sha1-Rhe4waJQz25QZPu7Nj0PqWzxRVI=", + "dev": true + } + } + }, + "spritesmith": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/spritesmith/-/spritesmith-3.3.1.tgz", + "integrity": "sha512-7mq+oBkeHU66DvJZGeGZO6NGkCbRbQA/WXToLAPyl4YQ2dsYfT9kF2wECJ5ImskmQWllve4T1hGt7tmyaa7OqA==", + "dev": true, + "requires": { + "concat-stream": "1.5.2", + "layout": "2.2.0", + "pixelsmith": "2.2.1", + "semver": "5.0.3", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + } + } + }, + "squeak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3", + "console-stream": "0.1.1", + "lpad-align": "1.1.2" + } + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "3.5.1" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "static-eval": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.4.tgz", + "integrity": "sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns=", + "dev": true, + "requires": { + "escodegen": "0.0.28" + }, + "dependencies": { + "escodegen": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", + "integrity": "sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M=", + "dev": true, + "requires": { + "esprima": "1.0.4", + "estraverse": "1.3.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "estraverse": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz", + "integrity": "sha1-N8K4k+8T1yPydth41g2FNRUqbEI=", + "dev": true + } + } + }, + "static-module": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-1.5.0.tgz", + "integrity": "sha1-J9qYg8QajNCSNvhC8MHrxu32PYY=", + "dev": true, + "requires": { + "concat-stream": "1.6.1", + "duplexer2": "0.0.2", + "escodegen": "1.3.3", + "falafel": "2.1.0", + "has": "1.0.1", + "object-inspect": "0.4.0", + "quote-stream": "0.0.0", + "readable-stream": "1.0.34", + "shallow-copy": "0.0.1", + "static-eval": "0.2.4", + "through2": "0.4.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "2.1.2" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + } + } + }, + "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.3.5" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.5" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "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.1.1" + } + }, + "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.1" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "strip-bom": "2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "get-stdin": "4.0.1", + "is-absolute": "0.1.7", + "is-natural-number": "2.1.1", + "minimist": "1.2.0", + "sum-up": "1.0.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "optional": 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" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "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 + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "optional": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + }, + "dependencies": { + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "optional": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + } + } + }, + "table": { + "version": "4.0.3", + "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "6.5.4", + "ajv-keywords": "3.2.0", + "chalk": "2.4.1", + "lodash": "4.17.5", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", + "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", + "dev": true, + "requires": { + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "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", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "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": "0.0.9", + "fstream": "1.0.12", + "inherits": "2.0.3" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "1.2.2", + "buffer-alloc": "1.2.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.5", + "to-buffer": "1.1.1", + "xtend": "4.0.1" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true, + "optional": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "optional": true, + "requires": { + "temp-dir": "1.0.0", + "uuid": "3.3.2" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + } + } + }, + "time-grunt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz", + "integrity": "sha1-BiIT5mDJB+hvRAVWwB6mWXtxJCA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "date-time": "1.1.0", + "figures": "1.7.0", + "hooker": "0.2.3", + "number-is-nan": "1.0.1", + "pretty-ms": "2.1.0", + "text-table": "0.2.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "time-zone": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz", + "integrity": "sha1-Sncotqwo2w4Aj1FAQ/1VW9VXO0Y=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "5.1.0", + "debug": "3.1.0", + "faye-websocket": "0.10.0", + "livereload-js": "2.3.0", + "object-assign": "4.1.1", + "qs": "6.5.1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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 + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "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.4" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typechecker": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.5.0.tgz", + "integrity": "sha512-bqPE/ck3bVIaXP7gMKTKSHrypT32lpYTpiqzPYeYzdSQnmaGvaGhy7TnN/M/+5R+2rs/kKcp9ZLPRp/Q9Yj+4w==", + "dev": true, + "requires": { + "editions": "1.3.4" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true + }, + "underscore.string": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", + "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", + "dev": true, + "requires": { + "sprintf-js": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "optional": true, + "requires": { + "ip-regex": "1.0.3" + } + }, + "url2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url2/-/url2-1.0.0.tgz", + "integrity": "sha1-taKGYJmqIX49p/T5DJq+7Adxyug=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + }, + "dependencies": { + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + } + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "readable-stream": "2.3.5" + } + }, + "vinyl-file": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-1.3.0.tgz", + "integrity": "sha1-qgVjTTqGe6kUR77bs0r8sm9E9uc=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "vinyl": "1.2.0" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "3.5.4", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.5", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + } + } + }, + "ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "dev": true, + "requires": { + "wrap-fn": "0.1.5" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.13", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true, + "optional": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "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" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "dev": true, + "requires": { + "co": "3.1.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "fd-slicer": "1.1.0" + }, + "dependencies": { + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + } + } + } + } +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package.json b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package.json new file mode 100644 index 000000000..7bb4679d9 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/package.json @@ -0,0 +1,66 @@ +{ + "name": "intl-tel-input", + "version": "16.0.0", + "description": "A JavaScript plugin for entering and validating international telephone numbers", + "keywords": [ + "international", + "i18n", + "country", + "dial", + "code", + "telephone", + "mobile", + "input", + "flag" + ], + "license": "MIT", + "author": "Jack O'Connor (http://jackocnr.com)", + "devDependencies": { + "@babel/core": "^7.1.0", + "@babel/preset-env": "^7.1.0", + "babel-eslint": "^9.0.0", + "custom-event-polyfill": "^1.0.6", + "es6-promise": "^4.2.5", + "eslint-config-airbnb": "^17.1.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jsx-a11y": "^6.1.1", + "eslint-plugin-react": "^7.11.1", + "evenizer": "^0.1.17", + "grunt": "^1.0.3", + "grunt-babel": "^8.0.0", + "grunt-bump": "^0.8.0", + "grunt-cli": "^1.2.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-cssmin": "^2.2.1", + "grunt-contrib-imagemin": "^2.0.1", + "grunt-contrib-jasmine": "^2.0.2", + "grunt-contrib-uglify": "^2.1.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-eslint": "^21.0.0", + "grunt-exec": "^1.0.1", + "grunt-replace": "^1.0.1", + "grunt-responsive-images": "^1.10.1", + "grunt-sass": "^3.0.0", + "grunt-shell": "^2.1.0", + "grunt-spritesmith": "^6.6.2", + "grunt-template": "^1.0.0", + "jasmine-jquery": "^2.1.1", + "jquery": "^3.1.1", + "load-grunt-config": "^0.19.2", + "node-sass": "^4.12.0", + "region-flags": "^1.1.0", + "time-grunt": "^1.4.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/jackocnr/intl-tel-input.git" + }, + "scripts": { + "test": "grunt travis", + "build": "grunt build", + "build:js": "grunt js", + "build:css": "grunt css", + "build:img": "grunt img", + "watch": "grunt watch" + } +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/separateDialCode.png b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/separateDialCode.png new file mode 100644 index 0000000000000000000000000000000000000000..a42a4985cada6ab093e45168884b43cf9e781f9a GIT binary patch literal 4030 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 literal 0 HcmV?d00001 diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/vanilla.png b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/screenshots/vanilla.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2b570da371f33cfe655ee26aa90611c78b41d2 GIT binary patch literal 34032 zcmb@sbx>SQ*Ds1gAb1EK++{*=8v=pg?w&w!OK=$+fLtJKFcl?fY)mpt1Ox=udK0p?;-G=}x0|+2 z)No5>e+Lhu(dV^WGhN!;IiWLzjbTCQ-bTCro)=V|9+~*DPML0gkiH#v)D7g&VU!?c zXb>(Q@ICzb9*VF*2t?RGhL<7yE!;r>2ISQeEjuAl348jPwLJ0o{3`D2yb#?*8=+u;M-5dxs@dTSsiZ#~$>8od%=i;WX`?g}8<6#uP39yfrL; z3cZRG#>TP42KaS{P-6tZA66*AxRqKP)fM%&n(A9OQ&WjfdyS*|6FBj+HjU9_cOox; zb`k{qU}ZCGZv5tDb~n`Vn)kUb_j>(8E2IXoVgps-HJFelWEN?`z;^sA55?xfd%w>} zh+23(jsYPuxt-{*bU0td#@SGQPT|IwBotliw--bfud!$)^!TJiQW;|X< zMrId_>Mx5F{i?4L(^?^2A%#s1-db9XrPZIT_F4cA9j1>{X5^nbQIhb2H1r>cZ&!s& zioZyeHvT1Jgb3_6Z7vu%N(Ia*eRH;qUISiW1`unf>BLNv75y0teNnG$!cvfAk|(+q z>qpRZ-&8^!rE3HkG7c(|N$GW|_}G39QZ%dL~83{u{0SJMmjp zs8T5S=O}7I=zvO+f6Y?6;~6?MgU?WV;v4ua(L)(0=aMkdHx`yD4u*E(k9&#;Wo*{@ z!0vr5o3T=5vevY=h7t6CwE`gQ)uqTEgVw~xtaE={cPVxci5cdsva?*kL1wHDqRziL zem?lF|9jUA@c10tokcYU+t@$~?6KVt-e}S%LWM}r_&y{ySnI!J`YsiHej@^Lf=aB+ zgUic=#RVSIsl#as=l!$PBj*KJYn6~{&x3I>xRrPl%k3ns(rSsOcFuo2NVK+>+h!YW z&Sb)sv(+Mm8*@{AxD)|H70$GKibMF-!wY)j}N_|Quy>j zT*lD1r+752qoTq=X_jw<2zX*C-MVFJm>Rt3(X7p)`1>8-2}s7#W``bI99tJ+JtmDx ztGA%MC>vK@A}G3X1h$}$6W)&ZxJJG8P%g;HbSv9gm24W>b>nxl`A3sweq$QjpKkV3 zWnIrLXK84Zvv3-%&fN%tQd*r4JW1aAGoa91-z;Z|JPwR>w=s-qFCWYcKYO=No7w(k z1A!Da)BQtT-|?(-7~S?!4ay!WLppEK?rSLJ@vXhM5#S?H+@)f5-Te{tkLk6-oI(`&gn_5B+rx=-F$5;ch0L#?nbMIwQuv!lX(^ zzJ4-SH)%iyhmJ{oRzPo{g6L)_q@xi?7hgZTXWpXyB}=(6EhG{6b#q#-fP4ct_|7lJ zRn;%T^#K_q$!7p?vgX~vjc6PHpl-NhACrY8rNlu0v@*Iz7VrfOmrp>qwpwj&VPQ^* z)x-WIAev-yX{rV5^eZvvVGtsrjs%_>q{3cmC-tH>@%Xs|=0vfH`v#MY{6(-bUJ!$P zQsf~LW3@seB=`wObInpIzOz`4LW;mU8o1{{q3A3|lSBRc_6_9*a=s3FnwY=Wz?-Su z!0BP~l4R5vBi@Z|Ldt@I*48`y4?jkT|JmekyqwKH^vu!d_Cdrrl+z&>9(%;~Ja!!q zr(thDA<1J%Sj%Y97#sl4C$2_`4X%9V7+PyNc?AeCjisggi{Es<)9iLjZRgghnF&SO z=R7*D8;jW{?tYX3Qd1Gu4)99`NxTK%qw5=yZ_@;XF3dJA(9+UM6|8O=?i}c>Bv!JZ zpNjuH=_VnjSLjeY|I!&z>k@CtbDPK8s^^X+ncp1z4s~%0skh( z*W>O{rAH#;I}uQz<<=_r>g`(V?*NQV&+S%cGh2PX`L~wC)USEa_wj)XmkjF(X`SZv zo!H@pStJ%)Dmz>?2*O7{^+ZI4BZz8qshGwVCbVigFmAayrF~uN3TQAe;Ram#HP9Xd z4-BAOd8n80{24QhNFIM}Ud#DHl4AW81S#$L(oDax%qTya2M+6 zId>s}SRq(G-Nt?HPssE@dsA`A=roUhY@yWnmHE8UKbvcS9~*PcVeJW0x##9y?|jfb z+0J{>0|Eu7M!D?lkRb_t7PUW2_1K8d(hBm~h>3CdjCHLb{nNA!4XNIoAL{tm$NtC* z>@E_JQSPUJ3!y0jV}cn}-U{v2!?Rt<)gMgdQ<|v%tOm`-*IaKp-rCB+1X$e!1K80k z7O~q5NdI-xP0q8b3saP548wKip~SPu%RZ>>qk~wOVDrqwz1eu(jX(g+4)pw71@*;n z8ApuaHEK)j!I=HU&Oeq49X(jtz{X~qiy0JK=OI#tWq0(QatC|uqZy<&0D^4>McW`Z zoo}?&m)v>U)yG6yyIY0o)6DNzuj{{}X};!jHV8O9HkbeK*GmcVF@xrm#mGHgVy^YA z2xMv+D@|tX-t4G=W62BVOvii;9$ipQ0!k3tE4 z87r-xz1$zMZ{zugx9#k1X%^nr0(ll*YS6l?Jol$4w`u=+uRVm%1dWl%J$6mRyN@g{ zs0=QxrCJq{M~_Qx3do=VnZF|rXe;DI%JwV)q|i7Zuq)hh!ckDDE)9SU_oR3zg2fO~ zF)=Y9@V?{GdK_jS3l%K>yRp;tp#JFa0n)OE( zn&UhBojZrVv?H zoB2xT7~4Z+vDca!a#=fM>)w86${IID zaz)1genRYOGCS4!HhWj}6Iah>Yf~a?!@nW@@c6en2Z%h9JTl?|hHCggpyax)izve~nG2KyO&xyhKEyqK2YS z`K=?PWUV9Pf&A79K?ni3c%T5>_y6=l!~njBya4_k8Tj}2KOf+@zm1Vm);_VVBw=)Z z-fd*}yL}A`2?+@_`DX|nCg?@hcM?#Q(F~yKhyYPwz`%iVeV1j}Vr?wGfjIDNeSLj2 z|Hv+-i~w8-{RfZcdKz%YE65F{Z;T)nRXN z35%SHlJey2tjLONswl(CY^s8b6U(pb6J*70EqI;Wf$`Hj{?T5{$VImdj|mV~0AS8& z0lMZ3TUl9o+6bXiQc{}YQH;x9wB_49)c=H_f;nq_4S_(8syd#p=Z(=j8OhB*=BX-l zqAwD&+KWSW;Kag7LP2=18hnAZ$e*EPdMT>2Y={T?)<)bYf`pJ=eE;

      Fq!o0Ou|V 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 I_SyIU04SEBUjP6A literal 0 HcmV?d00001 diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/spec.html b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/spec.html new file mode 100644 index 000000000..dcba74d3c --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/spec.html @@ -0,0 +1,117 @@ + + + + + Jasmine Spec Runner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/demo.scss b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/demo.scss new file mode 100644 index 000000000..37a6058a7 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/demo.scss @@ -0,0 +1,81 @@ +* { + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +body { + margin: 20px; + + font-size: 14px; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + color: #555; +} + +.iti__hide { + display: none; +} + +// example code blocks +pre { + margin: 0 !important; // override prism.css + display: inline-block; +} +// override weird rule in prism.css that puts a background on '=' +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + background: none; +} + +// general form styling +input, button { + height: 35px; + margin: 0; + padding: 6px 12px; + border-radius: 2px; + + // same font style, size and color as rest of site + font-family: inherit; + font-size: 100%; + color: inherit; + + &[disabled] { + background-color: #eee; + } +} + +// select useful for examples +input, select { + border: 1px solid #CCC; + width: 250px; +} +::-webkit-input-placeholder { + color: #BBB; +} +::-moz-placeholder { /* Firefox 19+ */ + color: #BBB; + opacity: 1; +} +:-ms-input-placeholder { + color: #BBB; +} + +// borrowed from bootstrap +button { + color: #FFF; + background-color: #428BCA; + border: 1px solid #357EBD; + &:hover { + background-color: #3276B1; + border-color: #285E8E; + cursor: pointer; + } +} + +// examples +#result { + margin-bottom: 100px; +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/intlTelInput.scss b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/intlTelInput.scss new file mode 100644 index 000000000..fe19e353a --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/intlTelInput.scss @@ -0,0 +1,300 @@ +// NOTE: by using !default on all variables, we're saying only declare the variable if it doesn't +// already exist, which allows devs to declare these variables themselves and assign them any value +// they want before importing this file + +// rgba is needed for the selected flag hover state to blend in with +// the border-highlighting some browsers give the input on focus +$hoverColor: rgba(0, 0, 0, 0.05) !default; +$greyText: #999 !default; +$greyBorder: #CCC !default; + +$flagHeight: 15px !default; +$flagWidth: 20px !default; +$flagPadding: 8px !default; +// this border width is used for the popup and divider, but it is also +// assumed to be the border width of the input, which we do not control +$borderWidth: 1px !default; + +$arrowHeight: 4px !default; +$arrowWidth: 6px !default; +$triangleBorder: 3px !default; +$arrowPadding: 6px !default; +$arrowColor: #555 !default; + +$inputPadding: 6px !default; +$selectedFlagWidth: $flagWidth + (2 * $flagPadding) !default; +$selectedFlagArrowWidth: $flagWidth + $flagPadding + $arrowWidth + (2 * $arrowPadding) !default; + +// image related variables +$flagsImagePath: "../img/" !default; +$flagsImageName: "flags" !default; +$flagsImageExtension: "png" !default; + +// enough space for them to click off to close +$mobilePopupMargin: 30px !default; + +.iti { + // need position on the container so the selected flag can be + // absolutely positioned over the input + position: relative; + // keep the input's default inline properties + display: inline-block; + + // paul irish says this is ok + // http://www.paulirish.com/2012/box-sizing-border-box-ftw/ + * { + box-sizing: border-box; + -moz-box-sizing: border-box; + } + + &__hide { + display: none; + } + // need this during init, to get the height of the dropdown + &__v-hide { + visibility: hidden; + } + + // specify types to increase specificity e.g. to override bootstrap v2.3 + input, input[type=text], input[type=tel] { + position: relative; + // input is bottom level, below selected flag and dropdown + z-index: 0; + + // any vertical margin the user has on their inputs would no longer work as expected + // because we wrap everything in a container div. i justify the use of !important + // here because i don't think the user should ever have vertical margin here - when + // the input is wrapped in a container, vertical margin messes up alignment with other + // inline elements (e.g. an adjacent button) in firefox, and probably other browsers. + margin-top: 0 !important; + margin-bottom: 0 !important; + + // make space for the selected flag on right of input (if disabled allowDropdown) + // Note: no !important here, as the user may want to tweak this so that the + // perceived input padding matches their existing styles + padding-right: $selectedFlagWidth; + + // any margin-right here will push the selected-flag away + margin-right: 0; + } + + &__flag-container { + // positioned over the top of the input + position: absolute; + // full height + top: 0; + bottom: 0; + right: 0; + // prevent the highlighted child from overlapping the input border + padding: $borderWidth; + } + + &__selected-flag { + // render above the input + z-index: 1; + position: relative; + display: flex; + align-items: center; + // this must be full-height both for the hover highlight, and to push down the + // dropdown so it appears below the input + height: 100%; + padding: 0 $arrowPadding 0 $flagPadding; + } + + &__arrow { + margin-left: $arrowPadding; + + // css triangle + width: 0; + height: 0; + border-left: $triangleBorder solid transparent; + border-right: $triangleBorder solid transparent; + border-top: $arrowHeight solid $arrowColor; + + &--up { + border-top: none; + border-bottom: $arrowHeight solid $arrowColor; + } + } + + // the dropdown + &__country-list { + position: absolute; + // popup so render above everything else + z-index: 2; + + // override default list styles + list-style: none; + // in case any container has text-align:center + text-align: left; + + // place menu above the input element + &--dropup { + bottom: 100%; + margin-bottom: (-$borderWidth); + } + + padding: 0; + // margin-left to compensate for the padding on the parent + margin: 0 0 0 (-$borderWidth); + + box-shadow: 1px 1px 4px rgba(0,0,0,0.2); + background-color: white; + border: $borderWidth solid $greyBorder; + + // don't let the contents wrap AKA the container will be as wide as the contents + white-space: nowrap; + // except on small screens, where we force the dropdown width to match the input + @media (max-width: 500px) { + white-space: normal; + } + + max-height: 200px; + overflow-y: scroll; + + // Fixes https://github.com/jackocnr/intl-tel-input/issues/765 + // Apple still hasn't fixed the issue where setting overflow: scroll on a div element does not use inertia scrolling + // If this is not set, then the country list scroll stops moving after rasing a finger, and users report that scroll is slow + // Stackoverflow question about it: https://stackoverflow.com/questions/33601165/scrolling-slow-on-mobile-ios-when-using-overflowscroll + -webkit-overflow-scrolling: touch; + } + + // dropdown flags need consistent width, so wrap in a container + &__flag-box { + display: inline-block; + width: $flagWidth; + } + + // the divider below the preferred countries + &__divider { + padding-bottom: 5px; + margin-bottom: 5px; + border-bottom: $borderWidth solid $greyBorder; + } + + // each country item in dropdown (we must have separate class to differentiate from dividers) + &__country { + // Note: decided not to use line-height here for alignment because it causes issues e.g. large font-sizes will overlap, and also looks bad if one country overflows onto 2 lines + padding: 5px 10px; + outline: none; + } + + // the dial codes after the country names are greyed out + &__dial-code { + color: $greyText; + } + &__country.iti__highlight { + background-color: $hoverColor; + } + + // spacing between country flag, name and dial code + &__flag-box, &__country-name, &__dial-code { + vertical-align: middle; + } + &__flag-box, &__country-name { + margin-right: 6px; + } + + // these settings are independent of each other, but both move selected flag to left of input + &--allow-dropdown, &--separate-dial-code { + input, input[type=text], input[type=tel] { + padding-right: $inputPadding; + padding-left: $selectedFlagArrowWidth + $inputPadding; + margin-left: 0; + } + .iti__flag-container { + right: auto; + left: 0; + } + } + + &--allow-dropdown { + // hover state - show flag is clickable + .iti__flag-container:hover { + cursor: pointer; + .iti__selected-flag { + background-color: $hoverColor; + } + } + // disable hover state when input is disabled + input[disabled] + .iti__flag-container:hover, + input[readonly] + .iti__flag-container:hover { + cursor: default; + .iti__selected-flag { + background-color: transparent; + } + } + } + + &--separate-dial-code { + .iti__selected-flag { + // now that we have digits in this section, it needs this visual separation + background-color: $hoverColor; + } + .iti__selected-dial-code { + margin-left: $arrowPadding; + } + } + + // if dropdownContainer option is set, increase z-index to prevent display issues + &--container { + position: absolute; + top: -1000px; + left: -1000px; + // higher than default Bootstrap modal z-index of 1050 + z-index: 1060; + // to keep styling consistent with .flag-container + padding: $borderWidth; + &:hover { + cursor: pointer; + } + } +} + +// overrides for mobile popup (note: .iti-mobile class is applied on body) +.iti-mobile .iti { + &--container { + top: $mobilePopupMargin; + bottom: $mobilePopupMargin; + left: $mobilePopupMargin; + right: $mobilePopupMargin; + position: fixed; + } + &__country-list { + max-height: 100%; + width: 100%; + } + &__country { + padding: 10px 10px; + // increase line height because dropdown copy is v likely to overflow on mobile and when it does it needs to be well spaced + line-height: 1.5em; + } +} + + + + + + +@import "sprite"; + +.iti__flag { + height: $flagHeight; + box-shadow: 0px 0px 1px 0px #888; + background-image: url("#{$flagsImagePath}#{$flagsImageName}.#{$flagsImageExtension}"); + background-repeat: no-repeat; + // empty state + background-color: #DBDBDB; + background-position: $flagWidth 0; + + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + background-image: url("#{$flagsImagePath}#{$flagsImageName}@2x.#{$flagsImageExtension}"); + } +} + + + +// hack for Nepal which is the only flag that is not square/rectangle, so it has transparency, so you can see the default grey behind it +.iti__flag.iti__np { + background-color: transparent; +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/sprite.scss b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/sprite.scss new file mode 100644 index 000000000..15f03e8c7 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/css/sprite.scss @@ -0,0 +1,1058 @@ +@function retina-size($value) { + @return floor($value / 2); +} + +@mixin retina-bg-size($spriteWidth, $spriteHeight) { + background-size: floor($spriteWidth / 2) floor($spriteHeight / 2); +} + +.iti__flag { + $item-width-maps: (ac: 20px, ad: 20px, ae: 20px, af: 20px, ag: 20px, ai: 20px, al: 20px, am: 20px, ao: 20px, aq: 20px, ar: 20px, as: 20px, at: 20px, au: 20px, aw: 20px, ax: 20px, az: 20px, ba: 20px, bb: 20px, bd: 20px, be: 18px, bf: 20px, bg: 20px, bh: 20px, bi: 20px, bj: 20px, bl: 20px, bm: 20px, bn: 20px, bo: 20px, bq: 20px, br: 20px, bs: 20px, bt: 20px, bv: 20px, bw: 20px, by: 20px, bz: 20px, ca: 20px, cc: 20px, cd: 20px, cf: 20px, cg: 20px, ch: 15px, ci: 20px, ck: 20px, cl: 20px, cm: 20px, cn: 20px, co: 20px, cp: 20px, cr: 20px, cu: 20px, cv: 20px, cw: 20px, cx: 20px, cy: 20px, cz: 20px, de: 20px, dg: 20px, dj: 20px, dk: 20px, dm: 20px, do: 20px, dz: 20px, ea: 20px, ec: 20px, ee: 20px, eg: 20px, eh: 20px, er: 20px, es: 20px, et: 20px, eu: 20px, fi: 20px, fj: 20px, fk: 20px, fm: 20px, fo: 20px, fr: 20px, ga: 20px, gb: 20px, gd: 20px, ge: 20px, gf: 20px, gg: 20px, gh: 20px, gi: 20px, gl: 20px, gm: 20px, gn: 20px, gp: 20px, gq: 20px, gr: 20px, gs: 20px, gt: 20px, gu: 20px, gw: 20px, gy: 20px, hk: 20px, hm: 20px, hn: 20px, hr: 20px, ht: 20px, hu: 20px, ic: 20px, id: 20px, ie: 20px, il: 20px, im: 20px, in: 20px, io: 20px, iq: 20px, ir: 20px, is: 20px, it: 20px, je: 20px, jm: 20px, jo: 20px, jp: 20px, ke: 20px, kg: 20px, kh: 20px, ki: 20px, km: 20px, kn: 20px, kp: 20px, kr: 20px, kw: 20px, ky: 20px, kz: 20px, la: 20px, lb: 20px, lc: 20px, li: 20px, lk: 20px, lr: 20px, ls: 20px, lt: 20px, lu: 20px, lv: 20px, ly: 20px, ma: 20px, mc: 19px, md: 20px, me: 20px, mf: 20px, mg: 20px, mh: 20px, mk: 20px, ml: 20px, mm: 20px, mn: 20px, mo: 20px, mp: 20px, mq: 20px, mr: 20px, ms: 20px, mt: 20px, mu: 20px, mv: 20px, mw: 20px, mx: 20px, my: 20px, mz: 20px, na: 20px, nc: 20px, ne: 18px, nf: 20px, ng: 20px, ni: 20px, nl: 20px, no: 20px, np: 13px, nr: 20px, nu: 20px, nz: 20px, om: 20px, pa: 20px, pe: 20px, pf: 20px, pg: 20px, ph: 20px, pk: 20px, pl: 20px, pm: 20px, pn: 20px, pr: 20px, ps: 20px, pt: 20px, pw: 20px, py: 20px, qa: 20px, re: 20px, ro: 20px, rs: 20px, ru: 20px, rw: 20px, sa: 20px, sb: 20px, sc: 20px, sd: 20px, se: 20px, sg: 20px, sh: 20px, si: 20px, sj: 20px, sk: 20px, sl: 20px, sm: 20px, sn: 20px, so: 20px, sr: 20px, ss: 20px, st: 20px, sv: 20px, sx: 20px, sy: 20px, sz: 20px, ta: 20px, tc: 20px, td: 20px, tf: 20px, tg: 20px, th: 20px, tj: 20px, tk: 20px, tl: 20px, tm: 20px, tn: 20px, to: 20px, tr: 20px, tt: 20px, tv: 20px, tw: 20px, tz: 20px, ua: 20px, ug: 20px, um: 20px, un: 20px, us: 20px, uy: 20px, uz: 20px, va: 15px, vc: 20px, ve: 20px, vg: 20px, vi: 20px, vn: 20px, vu: 20px, wf: 20px, ws: 20px, xk: 20px, ye: 20px, yt: 20px, za: 20px, zm: 20px, zw: 20px, ); + $standard-country: 'ac'; + width: map-get($item-width-maps, $standard-country); + + @each $key, $width in $item-width-maps { + @if $width != map-get($item-width-maps, $standard-country) { + &.iti__#{$key} { + width: $width; + } + } + } + + @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + background-size: 5652px 15px; + } + + &.iti__ac { + height: 10px; + background-position: 0px 0px; + } + &.iti__ad { + height: 14px; + background-position: -22px 0px; + } + &.iti__ae { + height: 10px; + background-position: -44px 0px; + } + &.iti__af { + height: 14px; + background-position: -66px 0px; + } + &.iti__ag { + height: 14px; + background-position: -88px 0px; + } + &.iti__ai { + height: 10px; + background-position: -110px 0px; + } + &.iti__al { + height: 15px; + background-position: -132px 0px; + } + &.iti__am { + height: 10px; + background-position: -154px 0px; + } + &.iti__ao { + height: 14px; + background-position: -176px 0px; + } + &.iti__aq { + height: 14px; + background-position: -198px 0px; + } + &.iti__ar { + height: 13px; + background-position: -220px 0px; + } + &.iti__as { + height: 10px; + background-position: -242px 0px; + } + &.iti__at { + height: 14px; + background-position: -264px 0px; + } + &.iti__au { + height: 10px; + background-position: -286px 0px; + } + &.iti__aw { + height: 14px; + background-position: -308px 0px; + } + &.iti__ax { + height: 13px; + background-position: -330px 0px; + } + &.iti__az { + height: 10px; + background-position: -352px 0px; + } + &.iti__ba { + height: 10px; + background-position: -374px 0px; + } + &.iti__bb { + height: 14px; + background-position: -396px 0px; + } + &.iti__bd { + height: 12px; + background-position: -418px 0px; + } + &.iti__be { + height: 15px; + background-position: -440px 0px; + } + &.iti__bf { + height: 14px; + background-position: -460px 0px; + } + &.iti__bg { + height: 12px; + background-position: -482px 0px; + } + &.iti__bh { + height: 12px; + background-position: -504px 0px; + } + &.iti__bi { + height: 12px; + background-position: -526px 0px; + } + &.iti__bj { + height: 14px; + background-position: -548px 0px; + } + &.iti__bl { + height: 14px; + background-position: -570px 0px; + } + &.iti__bm { + height: 10px; + background-position: -592px 0px; + } + &.iti__bn { + height: 10px; + background-position: -614px 0px; + } + &.iti__bo { + height: 14px; + background-position: -636px 0px; + } + &.iti__bq { + height: 14px; + background-position: -658px 0px; + } + &.iti__br { + height: 14px; + background-position: -680px 0px; + } + &.iti__bs { + height: 10px; + background-position: -702px 0px; + } + &.iti__bt { + height: 14px; + background-position: -724px 0px; + } + &.iti__bv { + height: 15px; + background-position: -746px 0px; + } + &.iti__bw { + height: 14px; + background-position: -768px 0px; + } + &.iti__by { + height: 10px; + background-position: -790px 0px; + } + &.iti__bz { + height: 14px; + background-position: -812px 0px; + } + &.iti__ca { + height: 10px; + background-position: -834px 0px; + } + &.iti__cc { + height: 10px; + background-position: -856px 0px; + } + &.iti__cd { + height: 15px; + background-position: -878px 0px; + } + &.iti__cf { + height: 14px; + background-position: -900px 0px; + } + &.iti__cg { + height: 14px; + background-position: -922px 0px; + } + &.iti__ch { + height: 15px; + background-position: -944px 0px; + } + &.iti__ci { + height: 14px; + background-position: -961px 0px; + } + &.iti__ck { + height: 10px; + background-position: -983px 0px; + } + &.iti__cl { + height: 14px; + background-position: -1005px 0px; + } + &.iti__cm { + height: 14px; + background-position: -1027px 0px; + } + &.iti__cn { + height: 14px; + background-position: -1049px 0px; + } + &.iti__co { + height: 14px; + background-position: -1071px 0px; + } + &.iti__cp { + height: 14px; + background-position: -1093px 0px; + } + &.iti__cr { + height: 12px; + background-position: -1115px 0px; + } + &.iti__cu { + height: 10px; + background-position: -1137px 0px; + } + &.iti__cv { + height: 12px; + background-position: -1159px 0px; + } + &.iti__cw { + height: 14px; + background-position: -1181px 0px; + } + &.iti__cx { + height: 10px; + background-position: -1203px 0px; + } + &.iti__cy { + height: 14px; + background-position: -1225px 0px; + } + &.iti__cz { + height: 14px; + background-position: -1247px 0px; + } + &.iti__de { + height: 12px; + background-position: -1269px 0px; + } + &.iti__dg { + height: 10px; + background-position: -1291px 0px; + } + &.iti__dj { + height: 14px; + background-position: -1313px 0px; + } + &.iti__dk { + height: 15px; + background-position: -1335px 0px; + } + &.iti__dm { + height: 10px; + background-position: -1357px 0px; + } + &.iti__do { + height: 14px; + background-position: -1379px 0px; + } + &.iti__dz { + height: 14px; + background-position: -1401px 0px; + } + &.iti__ea { + height: 14px; + background-position: -1423px 0px; + } + &.iti__ec { + height: 14px; + background-position: -1445px 0px; + } + &.iti__ee { + height: 13px; + background-position: -1467px 0px; + } + &.iti__eg { + height: 14px; + background-position: -1489px 0px; + } + &.iti__eh { + height: 10px; + background-position: -1511px 0px; + } + &.iti__er { + height: 10px; + background-position: -1533px 0px; + } + &.iti__es { + height: 14px; + background-position: -1555px 0px; + } + &.iti__et { + height: 10px; + background-position: -1577px 0px; + } + &.iti__eu { + height: 14px; + background-position: -1599px 0px; + } + &.iti__fi { + height: 12px; + background-position: -1621px 0px; + } + &.iti__fj { + height: 10px; + background-position: -1643px 0px; + } + &.iti__fk { + height: 10px; + background-position: -1665px 0px; + } + &.iti__fm { + height: 11px; + background-position: -1687px 0px; + } + &.iti__fo { + height: 15px; + background-position: -1709px 0px; + } + &.iti__fr { + height: 14px; + background-position: -1731px 0px; + } + &.iti__ga { + height: 15px; + background-position: -1753px 0px; + } + &.iti__gb { + height: 10px; + background-position: -1775px 0px; + } + &.iti__gd { + height: 12px; + background-position: -1797px 0px; + } + &.iti__ge { + height: 14px; + background-position: -1819px 0px; + } + &.iti__gf { + height: 14px; + background-position: -1841px 0px; + } + &.iti__gg { + height: 14px; + background-position: -1863px 0px; + } + &.iti__gh { + height: 14px; + background-position: -1885px 0px; + } + &.iti__gi { + height: 10px; + background-position: -1907px 0px; + } + &.iti__gl { + height: 14px; + background-position: -1929px 0px; + } + &.iti__gm { + height: 14px; + background-position: -1951px 0px; + } + &.iti__gn { + height: 14px; + background-position: -1973px 0px; + } + &.iti__gp { + height: 14px; + background-position: -1995px 0px; + } + &.iti__gq { + height: 14px; + background-position: -2017px 0px; + } + &.iti__gr { + height: 14px; + background-position: -2039px 0px; + } + &.iti__gs { + height: 10px; + background-position: -2061px 0px; + } + &.iti__gt { + height: 13px; + background-position: -2083px 0px; + } + &.iti__gu { + height: 11px; + background-position: -2105px 0px; + } + &.iti__gw { + height: 10px; + background-position: -2127px 0px; + } + &.iti__gy { + height: 12px; + background-position: -2149px 0px; + } + &.iti__hk { + height: 14px; + background-position: -2171px 0px; + } + &.iti__hm { + height: 10px; + background-position: -2193px 0px; + } + &.iti__hn { + height: 10px; + background-position: -2215px 0px; + } + &.iti__hr { + height: 10px; + background-position: -2237px 0px; + } + &.iti__ht { + height: 12px; + background-position: -2259px 0px; + } + &.iti__hu { + height: 10px; + background-position: -2281px 0px; + } + &.iti__ic { + height: 14px; + background-position: -2303px 0px; + } + &.iti__id { + height: 14px; + background-position: -2325px 0px; + } + &.iti__ie { + height: 10px; + background-position: -2347px 0px; + } + &.iti__il { + height: 15px; + background-position: -2369px 0px; + } + &.iti__im { + height: 10px; + background-position: -2391px 0px; + } + &.iti__in { + height: 14px; + background-position: -2413px 0px; + } + &.iti__io { + height: 10px; + background-position: -2435px 0px; + } + &.iti__iq { + height: 14px; + background-position: -2457px 0px; + } + &.iti__ir { + height: 12px; + background-position: -2479px 0px; + } + &.iti__is { + height: 15px; + background-position: -2501px 0px; + } + &.iti__it { + height: 14px; + background-position: -2523px 0px; + } + &.iti__je { + height: 12px; + background-position: -2545px 0px; + } + &.iti__jm { + height: 10px; + background-position: -2567px 0px; + } + &.iti__jo { + height: 10px; + background-position: -2589px 0px; + } + &.iti__jp { + height: 14px; + background-position: -2611px 0px; + } + &.iti__ke { + height: 14px; + background-position: -2633px 0px; + } + &.iti__kg { + height: 12px; + background-position: -2655px 0px; + } + &.iti__kh { + height: 13px; + background-position: -2677px 0px; + } + &.iti__ki { + height: 10px; + background-position: -2699px 0px; + } + &.iti__km { + height: 12px; + background-position: -2721px 0px; + } + &.iti__kn { + height: 14px; + background-position: -2743px 0px; + } + &.iti__kp { + height: 10px; + background-position: -2765px 0px; + } + &.iti__kr { + height: 14px; + background-position: -2787px 0px; + } + &.iti__kw { + height: 10px; + background-position: -2809px 0px; + } + &.iti__ky { + height: 10px; + background-position: -2831px 0px; + } + &.iti__kz { + height: 10px; + background-position: -2853px 0px; + } + &.iti__la { + height: 14px; + background-position: -2875px 0px; + } + &.iti__lb { + height: 14px; + background-position: -2897px 0px; + } + &.iti__lc { + height: 10px; + background-position: -2919px 0px; + } + &.iti__li { + height: 12px; + background-position: -2941px 0px; + } + &.iti__lk { + height: 10px; + background-position: -2963px 0px; + } + &.iti__lr { + height: 11px; + background-position: -2985px 0px; + } + &.iti__ls { + height: 14px; + background-position: -3007px 0px; + } + &.iti__lt { + height: 12px; + background-position: -3029px 0px; + } + &.iti__lu { + height: 12px; + background-position: -3051px 0px; + } + &.iti__lv { + height: 10px; + background-position: -3073px 0px; + } + &.iti__ly { + height: 10px; + background-position: -3095px 0px; + } + &.iti__ma { + height: 14px; + background-position: -3117px 0px; + } + &.iti__mc { + height: 15px; + background-position: -3139px 0px; + } + &.iti__md { + height: 10px; + background-position: -3160px 0px; + } + &.iti__me { + height: 10px; + background-position: -3182px 0px; + } + &.iti__mf { + height: 14px; + background-position: -3204px 0px; + } + &.iti__mg { + height: 14px; + background-position: -3226px 0px; + } + &.iti__mh { + height: 11px; + background-position: -3248px 0px; + } + &.iti__mk { + height: 10px; + background-position: -3270px 0px; + } + &.iti__ml { + height: 14px; + background-position: -3292px 0px; + } + &.iti__mm { + height: 14px; + background-position: -3314px 0px; + } + &.iti__mn { + height: 10px; + background-position: -3336px 0px; + } + &.iti__mo { + height: 14px; + background-position: -3358px 0px; + } + &.iti__mp { + height: 10px; + background-position: -3380px 0px; + } + &.iti__mq { + height: 14px; + background-position: -3402px 0px; + } + &.iti__mr { + height: 14px; + background-position: -3424px 0px; + } + &.iti__ms { + height: 10px; + background-position: -3446px 0px; + } + &.iti__mt { + height: 14px; + background-position: -3468px 0px; + } + &.iti__mu { + height: 14px; + background-position: -3490px 0px; + } + &.iti__mv { + height: 14px; + background-position: -3512px 0px; + } + &.iti__mw { + height: 14px; + background-position: -3534px 0px; + } + &.iti__mx { + height: 12px; + background-position: -3556px 0px; + } + &.iti__my { + height: 10px; + background-position: -3578px 0px; + } + &.iti__mz { + height: 14px; + background-position: -3600px 0px; + } + &.iti__na { + height: 14px; + background-position: -3622px 0px; + } + &.iti__nc { + height: 10px; + background-position: -3644px 0px; + } + &.iti__ne { + height: 15px; + background-position: -3666px 0px; + } + &.iti__nf { + height: 10px; + background-position: -3686px 0px; + } + &.iti__ng { + height: 10px; + background-position: -3708px 0px; + } + &.iti__ni { + height: 12px; + background-position: -3730px 0px; + } + &.iti__nl { + height: 14px; + background-position: -3752px 0px; + } + &.iti__no { + height: 15px; + background-position: -3774px 0px; + } + &.iti__np { + height: 15px; + background-position: -3796px 0px; + } + &.iti__nr { + height: 10px; + background-position: -3811px 0px; + } + &.iti__nu { + height: 10px; + background-position: -3833px 0px; + } + &.iti__nz { + height: 10px; + background-position: -3855px 0px; + } + &.iti__om { + height: 10px; + background-position: -3877px 0px; + } + &.iti__pa { + height: 14px; + background-position: -3899px 0px; + } + &.iti__pe { + height: 14px; + background-position: -3921px 0px; + } + &.iti__pf { + height: 14px; + background-position: -3943px 0px; + } + &.iti__pg { + height: 15px; + background-position: -3965px 0px; + } + &.iti__ph { + height: 10px; + background-position: -3987px 0px; + } + &.iti__pk { + height: 14px; + background-position: -4009px 0px; + } + &.iti__pl { + height: 13px; + background-position: -4031px 0px; + } + &.iti__pm { + height: 14px; + background-position: -4053px 0px; + } + &.iti__pn { + height: 10px; + background-position: -4075px 0px; + } + &.iti__pr { + height: 14px; + background-position: -4097px 0px; + } + &.iti__ps { + height: 10px; + background-position: -4119px 0px; + } + &.iti__pt { + height: 14px; + background-position: -4141px 0px; + } + &.iti__pw { + height: 13px; + background-position: -4163px 0px; + } + &.iti__py { + height: 11px; + background-position: -4185px 0px; + } + &.iti__qa { + height: 8px; + background-position: -4207px 0px; + } + &.iti__re { + height: 14px; + background-position: -4229px 0px; + } + &.iti__ro { + height: 14px; + background-position: -4251px 0px; + } + &.iti__rs { + height: 14px; + background-position: -4273px 0px; + } + &.iti__ru { + height: 14px; + background-position: -4295px 0px; + } + &.iti__rw { + height: 14px; + background-position: -4317px 0px; + } + &.iti__sa { + height: 14px; + background-position: -4339px 0px; + } + &.iti__sb { + height: 10px; + background-position: -4361px 0px; + } + &.iti__sc { + height: 10px; + background-position: -4383px 0px; + } + &.iti__sd { + height: 10px; + background-position: -4405px 0px; + } + &.iti__se { + height: 13px; + background-position: -4427px 0px; + } + &.iti__sg { + height: 14px; + background-position: -4449px 0px; + } + &.iti__sh { + height: 10px; + background-position: -4471px 0px; + } + &.iti__si { + height: 10px; + background-position: -4493px 0px; + } + &.iti__sj { + height: 15px; + background-position: -4515px 0px; + } + &.iti__sk { + height: 14px; + background-position: -4537px 0px; + } + &.iti__sl { + height: 14px; + background-position: -4559px 0px; + } + &.iti__sm { + height: 15px; + background-position: -4581px 0px; + } + &.iti__sn { + height: 14px; + background-position: -4603px 0px; + } + &.iti__so { + height: 14px; + background-position: -4625px 0px; + } + &.iti__sr { + height: 14px; + background-position: -4647px 0px; + } + &.iti__ss { + height: 10px; + background-position: -4669px 0px; + } + &.iti__st { + height: 10px; + background-position: -4691px 0px; + } + &.iti__sv { + height: 12px; + background-position: -4713px 0px; + } + &.iti__sx { + height: 14px; + background-position: -4735px 0px; + } + &.iti__sy { + height: 14px; + background-position: -4757px 0px; + } + &.iti__sz { + height: 14px; + background-position: -4779px 0px; + } + &.iti__ta { + height: 10px; + background-position: -4801px 0px; + } + &.iti__tc { + height: 10px; + background-position: -4823px 0px; + } + &.iti__td { + height: 14px; + background-position: -4845px 0px; + } + &.iti__tf { + height: 14px; + background-position: -4867px 0px; + } + &.iti__tg { + height: 13px; + background-position: -4889px 0px; + } + &.iti__th { + height: 14px; + background-position: -4911px 0px; + } + &.iti__tj { + height: 10px; + background-position: -4933px 0px; + } + &.iti__tk { + height: 10px; + background-position: -4955px 0px; + } + &.iti__tl { + height: 10px; + background-position: -4977px 0px; + } + &.iti__tm { + height: 14px; + background-position: -4999px 0px; + } + &.iti__tn { + height: 14px; + background-position: -5021px 0px; + } + &.iti__to { + height: 10px; + background-position: -5043px 0px; + } + &.iti__tr { + height: 14px; + background-position: -5065px 0px; + } + &.iti__tt { + height: 12px; + background-position: -5087px 0px; + } + &.iti__tv { + height: 10px; + background-position: -5109px 0px; + } + &.iti__tw { + height: 14px; + background-position: -5131px 0px; + } + &.iti__tz { + height: 14px; + background-position: -5153px 0px; + } + &.iti__ua { + height: 14px; + background-position: -5175px 0px; + } + &.iti__ug { + height: 14px; + background-position: -5197px 0px; + } + &.iti__um { + height: 11px; + background-position: -5219px 0px; + } + &.iti__un { + height: 14px; + background-position: -5241px 0px; + } + &.iti__us { + height: 11px; + background-position: -5263px 0px; + } + &.iti__uy { + height: 14px; + background-position: -5285px 0px; + } + &.iti__uz { + height: 10px; + background-position: -5307px 0px; + } + &.iti__va { + height: 15px; + background-position: -5329px 0px; + } + &.iti__vc { + height: 14px; + background-position: -5346px 0px; + } + &.iti__ve { + height: 14px; + background-position: -5368px 0px; + } + &.iti__vg { + height: 10px; + background-position: -5390px 0px; + } + &.iti__vi { + height: 14px; + background-position: -5412px 0px; + } + &.iti__vn { + height: 14px; + background-position: -5434px 0px; + } + &.iti__vu { + height: 12px; + background-position: -5456px 0px; + } + &.iti__wf { + height: 14px; + background-position: -5478px 0px; + } + &.iti__ws { + height: 10px; + background-position: -5500px 0px; + } + &.iti__xk { + height: 15px; + background-position: -5522px 0px; + } + &.iti__ye { + height: 14px; + background-position: -5544px 0px; + } + &.iti__yt { + height: 14px; + background-position: -5566px 0px; + } + &.iti__za { + height: 14px; + background-position: -5588px 0px; + } + &.iti__zm { + height: 14px; + background-position: -5610px 0px; + } + &.iti__zw { + height: 10px; + background-position: -5632px 0px; + } +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/data.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/data.js new file mode 100644 index 000000000..70bbaa757 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/data.js @@ -0,0 +1,1328 @@ +// Array of country objects for the flag dropdown. + +// Here is the criteria for the plugin to support a given country/territory +// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 +// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes +// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png +// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml + +// Each country array has the following information: +// [ +// Country name, +// iso2 code, +// International dial code, +// Order (if >1 country with same dial code), +// Area codes +// ] +var allCountries = [ + [ + "Afghanistan (‫اÙغانستان‬‎)", + "af", + "93" + ], + [ + "Albania (Shqipëri)", + "al", + "355" + ], + [ + "Algeria (‫الجزائر‬‎)", + "dz", + "213" + ], + [ + "American Samoa", + "as", + "1", + 5, + ["684"] + ], + [ + "Andorra", + "ad", + "376" + ], + [ + "Angola", + "ao", + "244" + ], + [ + "Anguilla", + "ai", + "1", + 6, + ["264"] + ], + [ + "Antigua and Barbuda", + "ag", + "1", + 7, + ["268"] + ], + [ + "Argentina", + "ar", + "54" + ], + [ + "Armenia (Õ€Õ¡ÕµÕ¡Õ½Õ¿Õ¡Õ¶)", + "am", + "374" + ], + [ + "Aruba", + "aw", + "297" + ], + [ + "Australia", + "au", + "61", + 0 + ], + [ + "Austria (Österreich)", + "at", + "43" + ], + [ + "Azerbaijan (AzÉ™rbaycan)", + "az", + "994" + ], + [ + "Bahamas", + "bs", + "1", + 8, + ["242"] + ], + [ + "Bahrain (‫البحرين‬‎)", + "bh", + "973" + ], + [ + "Bangladesh (বাংলাদেশ)", + "bd", + "880" + ], + [ + "Barbados", + "bb", + "1", + 9, + ["246"] + ], + [ + "Belarus (БеларуÑÑŒ)", + "by", + "375" + ], + [ + "Belgium (België)", + "be", + "32" + ], + [ + "Belize", + "bz", + "501" + ], + [ + "Benin (Bénin)", + "bj", + "229" + ], + [ + "Bermuda", + "bm", + "1", + 10, + ["441"] + ], + [ + "Bhutan (འབྲུག)", + "bt", + "975" + ], + [ + "Bolivia", + "bo", + "591" + ], + [ + "Bosnia and Herzegovina (БоÑна и Херцеговина)", + "ba", + "387" + ], + [ + "Botswana", + "bw", + "267" + ], + [ + "Brazil (Brasil)", + "br", + "55" + ], + [ + "British Indian Ocean Territory", + "io", + "246" + ], + [ + "British Virgin Islands", + "vg", + "1", + 11, + ["284"] + ], + [ + "Brunei", + "bn", + "673" + ], + [ + "Bulgaria (БългариÑ)", + "bg", + "359" + ], + [ + "Burkina Faso", + "bf", + "226" + ], + [ + "Burundi (Uburundi)", + "bi", + "257" + ], + [ + "Cambodia (កម្ពុជា)", + "kh", + "855" + ], + [ + "Cameroon (Cameroun)", + "cm", + "237" + ], + [ + "Canada", + "ca", + "1", + 1, + ["204", "226", "236", "249", "250", "289", "306", "343", "365", "387", "403", "416", "418", "431", "437", "438", "450", "506", "514", "519", "548", "579", "581", "587", "604", "613", "639", "647", "672", "705", "709", "742", "778", "780", "782", "807", "819", "825", "867", "873", "902", "905"] + ], + [ + "Cape Verde (Kabu Verdi)", + "cv", + "238" + ], + [ + "Caribbean Netherlands", + "bq", + "599", + 1, + ["3", "4", "7"] + ], + [ + "Cayman Islands", + "ky", + "1", + 12, + ["345"] + ], + [ + "Central African Republic (République centrafricaine)", + "cf", + "236" + ], + [ + "Chad (Tchad)", + "td", + "235" + ], + [ + "Chile", + "cl", + "56" + ], + [ + "China (中国)", + "cn", + "86" + ], + [ + "Christmas Island", + "cx", + "61", + 2 + ], + [ + "Cocos (Keeling) Islands", + "cc", + "61", + 1 + ], + [ + "Colombia", + "co", + "57" + ], + [ + "Comoros (‫جزر القمر‬‎)", + "km", + "269" + ], + [ + "Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)", + "cd", + "243" + ], + [ + "Congo (Republic) (Congo-Brazzaville)", + "cg", + "242" + ], + [ + "Cook Islands", + "ck", + "682" + ], + [ + "Costa Rica", + "cr", + "506" + ], + [ + "Côte d’Ivoire", + "ci", + "225" + ], + [ + "Croatia (Hrvatska)", + "hr", + "385" + ], + [ + "Cuba", + "cu", + "53" + ], + [ + "Curaçao", + "cw", + "599", + 0 + ], + [ + "Cyprus (ΚÏÏ€Ïος)", + "cy", + "357" + ], + [ + "Czech Republic (ÄŒeská republika)", + "cz", + "420" + ], + [ + "Denmark (Danmark)", + "dk", + "45" + ], + [ + "Djibouti", + "dj", + "253" + ], + [ + "Dominica", + "dm", + "1", + 13, + ["767"] + ], + [ + "Dominican Republic (República Dominicana)", + "do", + "1", + 2, + ["809", "829", "849"] + ], + [ + "Ecuador", + "ec", + "593" + ], + [ + "Egypt (‫مصر‬‎)", + "eg", + "20" + ], + [ + "El Salvador", + "sv", + "503" + ], + [ + "Equatorial Guinea (Guinea Ecuatorial)", + "gq", + "240" + ], + [ + "Eritrea", + "er", + "291" + ], + [ + "Estonia (Eesti)", + "ee", + "372" + ], + [ + "Ethiopia", + "et", + "251" + ], + [ + "Falkland Islands (Islas Malvinas)", + "fk", + "500" + ], + [ + "Faroe Islands (Føroyar)", + "fo", + "298" + ], + [ + "Fiji", + "fj", + "679" + ], + [ + "Finland (Suomi)", + "fi", + "358", + 0 + ], + [ + "France", + "fr", + "33" + ], + [ + "French Guiana (Guyane française)", + "gf", + "594" + ], + [ + "French Polynesia (Polynésie française)", + "pf", + "689" + ], + [ + "Gabon", + "ga", + "241" + ], + [ + "Gambia", + "gm", + "220" + ], + [ + "Georgia (სáƒáƒ¥áƒáƒ áƒ—ველáƒ)", + "ge", + "995" + ], + [ + "Germany (Deutschland)", + "de", + "49" + ], + [ + "Ghana (Gaana)", + "gh", + "233" + ], + [ + "Gibraltar", + "gi", + "350" + ], + [ + "Greece (Ελλάδα)", + "gr", + "30" + ], + [ + "Greenland (Kalaallit Nunaat)", + "gl", + "299" + ], + [ + "Grenada", + "gd", + "1", + 14, + ["473"] + ], + [ + "Guadeloupe", + "gp", + "590", + 0 + ], + [ + "Guam", + "gu", + "1", + 15, + ["671"] + ], + [ + "Guatemala", + "gt", + "502" + ], + [ + "Guernsey", + "gg", + "44", + 1, + ["1481", "7781", "7839", "7911"] + ], + [ + "Guinea (Guinée)", + "gn", + "224" + ], + [ + "Guinea-Bissau (Guiné Bissau)", + "gw", + "245" + ], + [ + "Guyana", + "gy", + "592" + ], + [ + "Haiti", + "ht", + "509" + ], + [ + "Honduras", + "hn", + "504" + ], + [ + "Hong Kong (香港)", + "hk", + "852" + ], + [ + "Hungary (Magyarország)", + "hu", + "36" + ], + [ + "Iceland (Ãsland)", + "is", + "354" + ], + [ + "India (भारत)", + "in", + "91" + ], + [ + "Indonesia", + "id", + "62" + ], + [ + "Iran (‫ایران‬‎)", + "ir", + "98" + ], + [ + "Iraq (‫العراق‬‎)", + "iq", + "964" + ], + [ + "Ireland", + "ie", + "353" + ], + [ + "Isle of Man", + "im", + "44", + 2, + ["1624", "74576", "7524", "7924", "7624"] + ], + [ + "Israel (‫ישר×ל‬‎)", + "il", + "972" + ], + [ + "Italy (Italia)", + "it", + "39", + 0 + ], + [ + "Jamaica", + "jm", + "1", + 4, + ["876", "658"] + ], + [ + "Japan (日本)", + "jp", + "81" + ], + [ + "Jersey", + "je", + "44", + 3, + ["1534", "7509", "7700", "7797", "7829", "7937"] + ], + [ + "Jordan (‫الأردن‬‎)", + "jo", + "962" + ], + [ + "Kazakhstan (КазахÑтан)", + "kz", + "7", + 1, + ["33", "7"] + ], + [ + "Kenya", + "ke", + "254" + ], + [ + "Kiribati", + "ki", + "686" + ], + [ + "Kosovo", + "xk", + "383" + ], + [ + "Kuwait (‫الكويت‬‎)", + "kw", + "965" + ], + [ + "Kyrgyzstan (КыргызÑтан)", + "kg", + "996" + ], + [ + "Laos (ລາວ)", + "la", + "856" + ], + [ + "Latvia (Latvija)", + "lv", + "371" + ], + [ + "Lebanon (‫لبنان‬‎)", + "lb", + "961" + ], + [ + "Lesotho", + "ls", + "266" + ], + [ + "Liberia", + "lr", + "231" + ], + [ + "Libya (‫ليبيا‬‎)", + "ly", + "218" + ], + [ + "Liechtenstein", + "li", + "423" + ], + [ + "Lithuania (Lietuva)", + "lt", + "370" + ], + [ + "Luxembourg", + "lu", + "352" + ], + [ + "Macau (澳門)", + "mo", + "853" + ], + [ + "Macedonia (FYROM) (Македонија)", + "mk", + "389" + ], + [ + "Madagascar (Madagasikara)", + "mg", + "261" + ], + [ + "Malawi", + "mw", + "265" + ], + [ + "Malaysia", + "my", + "60" + ], + [ + "Maldives", + "mv", + "960" + ], + [ + "Mali", + "ml", + "223" + ], + [ + "Malta", + "mt", + "356" + ], + [ + "Marshall Islands", + "mh", + "692" + ], + [ + "Martinique", + "mq", + "596" + ], + [ + "Mauritania (‫موريتانيا‬‎)", + "mr", + "222" + ], + [ + "Mauritius (Moris)", + "mu", + "230" + ], + [ + "Mayotte", + "yt", + "262", + 1, + ["269", "639"] + ], + [ + "Mexico (México)", + "mx", + "52" + ], + [ + "Micronesia", + "fm", + "691" + ], + [ + "Moldova (Republica Moldova)", + "md", + "373" + ], + [ + "Monaco", + "mc", + "377" + ], + [ + "Mongolia (Монгол)", + "mn", + "976" + ], + [ + "Montenegro (Crna Gora)", + "me", + "382" + ], + [ + "Montserrat", + "ms", + "1", + 16, + ["664"] + ], + [ + "Morocco (‫المغرب‬‎)", + "ma", + "212", + 0 + ], + [ + "Mozambique (Moçambique)", + "mz", + "258" + ], + [ + "Myanmar (Burma) (မြန်မာ)", + "mm", + "95" + ], + [ + "Namibia (Namibië)", + "na", + "264" + ], + [ + "Nauru", + "nr", + "674" + ], + [ + "Nepal (नेपाल)", + "np", + "977" + ], + [ + "Netherlands (Nederland)", + "nl", + "31" + ], + [ + "New Caledonia (Nouvelle-Calédonie)", + "nc", + "687" + ], + [ + "New Zealand", + "nz", + "64" + ], + [ + "Nicaragua", + "ni", + "505" + ], + [ + "Niger (Nijar)", + "ne", + "227" + ], + [ + "Nigeria", + "ng", + "234" + ], + [ + "Niue", + "nu", + "683" + ], + [ + "Norfolk Island", + "nf", + "672" + ], + [ + "North Korea (ì¡°ì„  ë¯¼ì£¼ì£¼ì˜ ì¸ë¯¼ 공화국)", + "kp", + "850" + ], + [ + "Northern Mariana Islands", + "mp", + "1", + 17, + ["670"] + ], + [ + "Norway (Norge)", + "no", + "47", + 0 + ], + [ + "Oman (‫عÙمان‬‎)", + "om", + "968" + ], + [ + "Pakistan (‫پاکستان‬‎)", + "pk", + "92" + ], + [ + "Palau", + "pw", + "680" + ], + [ + "Palestine (‫Ùلسطين‬‎)", + "ps", + "970" + ], + [ + "Panama (Panamá)", + "pa", + "507" + ], + [ + "Papua New Guinea", + "pg", + "675" + ], + [ + "Paraguay", + "py", + "595" + ], + [ + "Peru (Perú)", + "pe", + "51" + ], + [ + "Philippines", + "ph", + "63" + ], + [ + "Poland (Polska)", + "pl", + "48" + ], + [ + "Portugal", + "pt", + "351" + ], + [ + "Puerto Rico", + "pr", + "1", + 3, + ["787", "939"] + ], + [ + "Qatar (‫قطر‬‎)", + "qa", + "974" + ], + [ + "Réunion (La Réunion)", + "re", + "262", + 0 + ], + [ + "Romania (România)", + "ro", + "40" + ], + [ + "Russia (РоÑÑиÑ)", + "ru", + "7", + 0 + ], + [ + "Rwanda", + "rw", + "250" + ], + [ + "Saint Barthélemy", + "bl", + "590", + 1 + ], + [ + "Saint Helena", + "sh", + "290" + ], + [ + "Saint Kitts and Nevis", + "kn", + "1", + 18, + ["869"] + ], + [ + "Saint Lucia", + "lc", + "1", + 19, + ["758"] + ], + [ + "Saint Martin (Saint-Martin (partie française))", + "mf", + "590", + 2 + ], + [ + "Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)", + "pm", + "508" + ], + [ + "Saint Vincent and the Grenadines", + "vc", + "1", + 20, + ["784"] + ], + [ + "Samoa", + "ws", + "685" + ], + [ + "San Marino", + "sm", + "378" + ], + [ + "São Tomé and Príncipe (São Tomé e Príncipe)", + "st", + "239" + ], + [ + "Saudi Arabia (‫المملكة العربية السعودية‬‎)", + "sa", + "966" + ], + [ + "Senegal (Sénégal)", + "sn", + "221" + ], + [ + "Serbia (Србија)", + "rs", + "381" + ], + [ + "Seychelles", + "sc", + "248" + ], + [ + "Sierra Leone", + "sl", + "232" + ], + [ + "Singapore", + "sg", + "65" + ], + [ + "Sint Maarten", + "sx", + "1", + 21, + ["721"] + ], + [ + "Slovakia (Slovensko)", + "sk", + "421" + ], + [ + "Slovenia (Slovenija)", + "si", + "386" + ], + [ + "Solomon Islands", + "sb", + "677" + ], + [ + "Somalia (Soomaaliya)", + "so", + "252" + ], + [ + "South Africa", + "za", + "27" + ], + [ + "South Korea (대한민국)", + "kr", + "82" + ], + [ + "South Sudan (‫جنوب السودان‬‎)", + "ss", + "211" + ], + [ + "Spain (España)", + "es", + "34" + ], + [ + "Sri Lanka (à·à·Šâ€à¶»à·“ ලංකà·à·€)", + "lk", + "94" + ], + [ + "Sudan (‫السودان‬‎)", + "sd", + "249" + ], + [ + "Suriname", + "sr", + "597" + ], + [ + "Svalbard and Jan Mayen", + "sj", + "47", + 1, + ["79"] + ], + [ + "Swaziland", + "sz", + "268" + ], + [ + "Sweden (Sverige)", + "se", + "46" + ], + [ + "Switzerland (Schweiz)", + "ch", + "41" + ], + [ + "Syria (‫سوريا‬‎)", + "sy", + "963" + ], + [ + "Taiwan (å°ç£)", + "tw", + "886" + ], + [ + "Tajikistan", + "tj", + "992" + ], + [ + "Tanzania", + "tz", + "255" + ], + [ + "Thailand (ไทย)", + "th", + "66" + ], + [ + "Timor-Leste", + "tl", + "670" + ], + [ + "Togo", + "tg", + "228" + ], + [ + "Tokelau", + "tk", + "690" + ], + [ + "Tonga", + "to", + "676" + ], + [ + "Trinidad and Tobago", + "tt", + "1", + 22, + ["868"] + ], + [ + "Tunisia (‫تونس‬‎)", + "tn", + "216" + ], + [ + "Turkey (Türkiye)", + "tr", + "90" + ], + [ + "Turkmenistan", + "tm", + "993" + ], + [ + "Turks and Caicos Islands", + "tc", + "1", + 23, + ["649"] + ], + [ + "Tuvalu", + "tv", + "688" + ], + [ + "U.S. Virgin Islands", + "vi", + "1", + 24, + ["340"] + ], + [ + "Uganda", + "ug", + "256" + ], + [ + "Ukraine (Україна)", + "ua", + "380" + ], + [ + "United Arab Emirates (‫الإمارات العربية المتحدة‬‎)", + "ae", + "971" + ], + [ + "United Kingdom", + "gb", + "44", + 0 + ], + [ + "United States", + "us", + "1", + 0 + ], + [ + "Uruguay", + "uy", + "598" + ], + [ + "Uzbekistan (OÊ»zbekiston)", + "uz", + "998" + ], + [ + "Vanuatu", + "vu", + "678" + ], + [ + "Vatican City (Città del Vaticano)", + "va", + "39", + 1, + ["06698"] + ], + [ + "Venezuela", + "ve", + "58" + ], + [ + "Vietnam (Việt Nam)", + "vn", + "84" + ], + [ + "Wallis and Futuna (Wallis-et-Futuna)", + "wf", + "681" + ], + [ + "Western Sahara (‫الصحراء الغربية‬‎)", + "eh", + "212", + 1, + ["5288", "5289"] + ], + [ + "Yemen (‫اليمن‬‎)", + "ye", + "967" + ], + [ + "Zambia", + "zm", + "260" + ], + [ + "Zimbabwe", + "zw", + "263" + ], + [ + "Ã…land Islands", + "ax", + "358", + 1, + ["18"] + ] +]; + +// loop over all of the countries above, restructuring the data to be objects with named keys +for (var i = 0; i < allCountries.length; i++) { + var c = allCountries[i]; + allCountries[i] = { + name: c[0], + iso2: c[1], + dialCode: c[2], + priority: c[3] || 0, + areaCodes: c[4] || null + }; +} diff --git a/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intlTelInput.js b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intlTelInput.js new file mode 100644 index 000000000..e8ced1756 --- /dev/null +++ b/socioboard-web-php/public/assets/plugins/intl-tel-input-16.0.0/src/js/intlTelInput.js @@ -0,0 +1,1430 @@ +window.intlTelInputGlobals = { + getInstance: (input) => { + const id = input.getAttribute('data-intl-tel-input-id'); + return window.intlTelInputGlobals.instances[id]; + }, + instances: {}, +}; + +// these vars persist through all instances of the plugin +let id = 0; +const defaults = { + // whether or not to allow the dropdown + allowDropdown: true, + // if there is just a dial code in the input: remove it on blur + autoHideDialCode: true, + // add a placeholder in the input with an example number for the selected country + autoPlaceholder: 'polite', + // modify the parentClass + customContainer: '', + // modify the auto placeholder + customPlaceholder: null, + // append menu to specified element + dropdownContainer: null, + // don't display these countries + excludeCountries: [], + // format the input value during initialisation and on setNumber + formatOnDisplay: true, + // geoIp lookup function + geoIpLookup: null, + // inject a hidden input with this name, and on submit, populate it with the result of getNumber + hiddenInput: '', + // initial country + initialCountry: '', + // localized country names e.g. { 'de': 'Deutschland' } + localizedCountries: null, + // don't insert international dial codes + nationalMode: true, + // display only these countries + onlyCountries: [], + // number type to use for placeholders + placeholderNumberType: 'MOBILE', + // the countries at the top of the list. defaults to united states and united kingdom + preferredCountries: ['us', 'gb'], + // display the country dial code next to the selected flag so it's not part of the typed number + separateDialCode: false, + // specify the path to the libphonenumber script to enable validation/formatting + utilsScript: '', +}; +// https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes +const regionlessNanpNumbers = ['800', '822', '833', '844', '855', '866', '877', '880', '881', '882', '883', '884', '885', '886', '887', '888', '889']; + + +// keep track of if the window.load event has fired as impossible to check after the fact +window.addEventListener('load', () => { + // UPDATE: use a public static field so we can fudge it in the tests + window.intlTelInputGlobals.windowLoaded = true; +}); + + +// utility function to iterate over an object. can't use Object.entries or native forEach because +// of IE11 +const forEachProp = (obj, callback) => { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + callback(keys[i], obj[keys[i]]); + } +}; + + +// run a method on each instance of the plugin +const forEachInstance = (method) => { + forEachProp(window.intlTelInputGlobals.instances, (key) => { + window.intlTelInputGlobals.instances[key][method](); + }); +}; + + +// this is our plugin class that we will create an instance of +// eslint-disable-next-line no-unused-vars +class Iti { + constructor(input, options) { + this.id = id++; + this.telInput = input; + + this.activeItem = null; + this.highlightedItem = null; + + // process specified options / defaults + // alternative to Object.assign, which isn't supported by IE11 + const customOptions = options || {}; + this.options = {}; + forEachProp(defaults, (key, value) => { + this.options[key] = (customOptions.hasOwnProperty(key)) ? customOptions[key] : value; + }); + + this.hadInitialPlaceholder = Boolean(input.getAttribute('placeholder')); + } + + _init() { + // if in nationalMode, disable options relating to dial codes + if (this.options.nationalMode) this.options.autoHideDialCode = false; + + // if separateDialCode then doesn't make sense to A) insert dial code into input + // (autoHideDialCode), and B) display national numbers (because we're displaying the country + // dial code next to them) + if (this.options.separateDialCode) { + this.options.autoHideDialCode = this.options.nationalMode = false; + } + + // we cannot just test screen size as some smartphones/website meta tags will report desktop + // resolutions + // Note: for some reason jasmine breaks if you put this in the main Plugin function with the + // rest of these declarations + // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile' + this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + + if (this.isMobile) { + // trigger the mobile dropdown css + document.body.classList.add('iti-mobile'); + + // on mobile, we want a full screen dropdown, so we must append it to the body + if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body; + } + + // these promises get resolved when their individual requests complete + // this way the dev can do something like iti.promise.then(...) to know when all requests are + // complete + if (typeof Promise !== 'undefined') { + const autoCountryPromise = new Promise((resolve, reject) => { + this.resolveAutoCountryPromise = resolve; + this.rejectAutoCountryPromise = reject; + }); + const utilsScriptPromise = new Promise((resolve, reject) => { + this.resolveUtilsScriptPromise = resolve; + this.rejectUtilsScriptPromise = reject; + }); + this.promise = Promise.all([autoCountryPromise, utilsScriptPromise]); + } else { + // prevent errors when Promise doesn't exist + this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = () => {}; + this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = () => {}; + } + + // in various situations there could be no country selected initially, but we need to be able + // to assume this variable exists + this.selectedCountryData = {}; + + // process all the data: onlyCountries, excludeCountries, preferredCountries etc + this._processCountryData(); + + // generate the markup + this._generateMarkup(); + + // set the initial state of the input value and the selected flag + this._setInitialState(); + + // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click + this._initListeners(); + + // utils script, and auto country + this._initRequests(); + } + + + /******************** + * PRIVATE METHODS + ********************/ + + + // prepare all of the country data, including onlyCountries, excludeCountries and + // preferredCountries options + _processCountryData() { + // process onlyCountries or excludeCountries array if present + this._processAllCountries(); + + // process the countryCodes map + this._processCountryCodes(); + + // process the preferredCountries + this._processPreferredCountries(); + + // translate countries according to localizedCountries option + if (this.options.localizedCountries) this._translateCountriesByLocale(); + + // sort countries by name + if (this.options.onlyCountries.length || this.options.localizedCountries) { + this.countries.sort(this._countryNameSort); + } + } + + + // add a country code to this.countryCodes + _addCountryCode(iso2, dialCode, priority) { + if (dialCode.length > this.dialCodeMaxLen) { + this.dialCodeMaxLen = dialCode.length; + } + if (!this.countryCodes.hasOwnProperty(dialCode)) { + this.countryCodes[dialCode] = []; + } + // bail if we already have this country for this dialCode + for (let i = 0; i < this.countryCodes[dialCode].length; i++) { + if (this.countryCodes[dialCode][i] === iso2) return; + } + // check for undefined as 0 is falsy + const index = (priority !== undefined) ? priority : this.countryCodes[dialCode].length; + this.countryCodes[dialCode][index] = iso2; + } + + + // process onlyCountries or excludeCountries array if present + _processAllCountries() { + if (this.options.onlyCountries.length) { + const lowerCaseOnlyCountries = this.options.onlyCountries.map( + country => country.toLowerCase() + ); + this.countries = allCountries.filter( + country => lowerCaseOnlyCountries.indexOf(country.iso2) > -1 + ); + } else if (this.options.excludeCountries.length) { + const lowerCaseExcludeCountries = this.options.excludeCountries.map( + country => country.toLowerCase() + ); + this.countries = allCountries.filter( + country => lowerCaseExcludeCountries.indexOf(country.iso2) === -1 + ); + } else { + this.countries = allCountries; + } + } + + // Translate Countries by object literal provided on config + _translateCountriesByLocale() { + for (let i = 0; i < this.countries.length; i++) { + const iso = this.countries[i].iso2.toLowerCase(); + if (this.options.localizedCountries.hasOwnProperty(iso)) { + this.countries[i].name = this.options.localizedCountries[iso]; + } + } + } + + // sort by country name + _countryNameSort(a, b) { + return a.name.localeCompare(b.name); + } + + + // process the countryCodes map + _processCountryCodes() { + this.dialCodeMaxLen = 0; + this.countryCodes = {}; + + // first: add dial codes + for (let i = 0; i < this.countries.length; i++) { + const c = this.countries[i]; + this._addCountryCode(c.iso2, c.dialCode, c.priority); + } + + // next: add area codes + // this is a second loop over countries, to make sure we have all of the "root" countries + // already in the map, so that we can access them, as each time we add an area code substring + // to the map, we also need to include the "root" country's code, as that also matches + for (let i = 0; i < this.countries.length; i++) { + const c = this.countries[i]; + // area codes + if (c.areaCodes) { + const rootCountryCode = this.countryCodes[c.dialCode][0]; + // for each area code + for (let j = 0; j < c.areaCodes.length; j++) { + const areaCode = c.areaCodes[j]; + // for each digit in the area code to add all partial matches as well + for (let k = 1; k < areaCode.length; k++) { + const partialDialCode = c.dialCode + areaCode.substr(0, k); + // start with the root country, as that also matches this dial code + this._addCountryCode(rootCountryCode, partialDialCode); + this._addCountryCode(c.iso2, partialDialCode); + } + // add the full area code + this._addCountryCode(c.iso2, c.dialCode + areaCode); + } + } + } + } + + + // process preferred countries - iterate through the preferences, fetching the country data for + // each one + _processPreferredCountries() { + this.preferredCountries = []; + for (let i = 0; i < this.options.preferredCountries.length; i++) { + const countryCode = this.options.preferredCountries[i].toLowerCase(); + const countryData = this._getCountryData(countryCode, false, true); + if (countryData) this.preferredCountries.push(countryData); + } + } + + + // create a DOM element + _createEl(name, attrs, container) { + const el = document.createElement(name); + if (attrs) forEachProp(attrs, (key, value) => el.setAttribute(key, value)); + if (container) container.appendChild(el); + return el; + } + + + // generate all of the markup for the plugin: the selected flag overlay, and the dropdown + _generateMarkup() { + // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can + // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the + // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode) + this.telInput.setAttribute('autocomplete', 'off'); + + // containers (mostly for positioning) + let parentClass = 'iti'; + if (this.options.allowDropdown) parentClass += ' iti--allow-dropdown'; + if (this.options.separateDialCode) parentClass += ' iti--separate-dial-code'; + if (this.options.customContainer) { + parentClass += ' '; + parentClass += this.options.customContainer; + } + + const wrapper = this._createEl('div', { class: parentClass }); + this.telInput.parentNode.insertBefore(wrapper, this.telInput); + this.flagsContainer = this._createEl('div', { class: 'iti__flag-container' }, wrapper); + wrapper.appendChild(this.telInput); + + // selected flag (displayed to left of input) + this.selectedFlag = this._createEl('div', { + class: 'iti__selected-flag', + role: 'combobox', + 'aria-owns': 'country-listbox', + }, this.flagsContainer); + this.selectedFlagInner = this._createEl('div', { class: 'iti__flag' }, this.selectedFlag); + + if (this.options.separateDialCode) { + this.selectedDialCode = this._createEl('div', { class: 'iti__selected-dial-code' }, this.selectedFlag); + } + + if (this.options.allowDropdown) { + // make element focusable and tab navigable + this.selectedFlag.setAttribute('tabindex', '0'); + this.dropdownArrow = this._createEl('div', { class: 'iti__arrow' }, this.selectedFlag); + + // country dropdown: preferred countries, then divider, then all countries + this.countryList = this._createEl('ul', { + class: 'iti__country-list iti__hide', + id: 'country-listbox', + 'aria-expanded': 'false', + role: 'listbox', + }); + if (this.preferredCountries.length) { + this._appendListItems(this.preferredCountries, 'iti__preferred'); + this._createEl('li', { + class: 'iti__divider', + role: 'separator', + 'aria-disabled': 'true', + }, this.countryList); + } + this._appendListItems(this.countries, 'iti__standard'); + + // create dropdownContainer markup + if (this.options.dropdownContainer) { + this.dropdown = this._createEl('div', { class: 'iti iti--container' }); + this.dropdown.appendChild(this.countryList); + } else { + this.flagsContainer.appendChild(this.countryList); + } + } + + if (this.options.hiddenInput) { + let hiddenInputName = this.options.hiddenInput; + const name = this.telInput.getAttribute('name'); + if (name) { + const i = name.lastIndexOf('['); + // if input name contains square brackets, then give the hidden input the same name, + // replacing the contents of the last set of brackets with the given hiddenInput name + if (i !== -1) hiddenInputName = `${name.substr(0, i)}[${hiddenInputName}]`; + } + this.hiddenInput = this._createEl('input', { + type: 'hidden', + name: hiddenInputName, + }); + wrapper.appendChild(this.hiddenInput); + } + } + + + // add a country

    • to the countryList
        container + _appendListItems(countries, className) { + // we create so many DOM elements, it is faster to build a temp string + // and then add everything to the DOM in one go at the end + let tmp = ''; + // for each country + for (let i = 0; i < countries.length; i++) { + const c = countries[i]; + // open the list item + tmp += `
      • `; + // add the flag + tmp += `
        `; + // and the country name and dial code + tmp += `${c.name}`; + tmp += `+${c.dialCode}`; + // close the list item + tmp += '
      • '; + } + this.countryList.insertAdjacentHTML('beforeend', tmp); + } + + + // set the initial state of the input value and the selected flag by: + // 1. extracting a dial code from the given number + // 2. using explicit initialCountry + // 3. picking the first preferred country + // 4. picking the first country + _setInitialState() { + const val = this.telInput.value; + const dialCode = this._getDialCode(val); + const isRegionlessNanp = this._isRegionlessNanp(val); + const { + initialCountry, + nationalMode, + autoHideDialCode, + separateDialCode, + } = this.options; + + // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the + // flag, else fall back to the default country + if (dialCode && !isRegionlessNanp) { + this._updateFlagFromNumber(val); + } else if (initialCountry !== 'auto') { + // see if we should select a flag + if (initialCountry) { + this._setFlag(initialCountry.toLowerCase()); + } else { + if (dialCode && isRegionlessNanp) { + // has intl dial code, is regionless nanp, and no initialCountry, so default to US + this._setFlag('us'); + } else { + // no dial code and no initialCountry, so default to first in list + this.defaultCountry = (this.preferredCountries.length) ? this.preferredCountries[0].iso2 + : this.countries[0].iso2; + if (!val) { + this._setFlag(this.defaultCountry); + } + } + } + + // if empty and no nationalMode and no autoHideDialCode then insert the default dial code + if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) { + this.telInput.value = `+${this.selectedCountryData.dialCode}`; + } + } + // NOTE: if initialCountry is set to auto, that will be handled separately + + // format - note this wont be run after _updateDialCode as that's only called if no val + if (val) this._updateValFromNumber(val); + } + + + // initialise the main event listeners: input keyup, and click selected flag + _initListeners() { + this._initKeyListeners(); + if (this.options.autoHideDialCode) this._initBlurListeners(); + if (this.options.allowDropdown) this._initDropdownListeners(); + if (this.hiddenInput) this._initHiddenInputListener(); + } + + + // update hidden input on form submit + _initHiddenInputListener() { + this._handleHiddenInputSubmit = () => { + this.hiddenInput.value = this.getNumber(); + }; + if (this.telInput.form) this.telInput.form.addEventListener('submit', this._handleHiddenInputSubmit); + } + + + // iterate through parent nodes to find the closest label ancestor, if it exists + _getClosestLabel() { + let el = this.telInput; + while (el && el.tagName !== 'LABEL') el = el.parentNode; + return el; + } + + + // initialise the dropdown listeners + _initDropdownListeners() { + // hack for input nested inside label (which is valid markup): clicking the selected-flag to + // open the dropdown would then automatically trigger a 2nd click on the input which would + // close it again + this._handleLabelClick = (e) => { + // if the dropdown is closed, then focus the input, else ignore the click + if (this.countryList.classList.contains('iti__hide')) this.telInput.focus(); + else e.preventDefault(); + }; + const label = this._getClosestLabel(); + if (label) label.addEventListener('click', this._handleLabelClick); + + // toggle country dropdown on click + this._handleClickSelectedFlag = () => { + // only intercept this event if we're opening the dropdown + // else let it bubble up to the top ("click-off-to-close" listener) + // we cannot just stopPropagation as it may be needed to close another instance + if (this.countryList.classList.contains('iti__hide') && !this.telInput.disabled && !this.telInput.readOnly) { + this._showDropdown(); + } + }; + this.selectedFlag.addEventListener('click', this._handleClickSelectedFlag); + + // open dropdown list if currently focused + this._handleFlagsContainerKeydown = (e) => { + const isDropdownHidden = this.countryList.classList.contains('iti__hide'); + + if (isDropdownHidden && ['ArrowUp', 'ArrowDown', ' ', 'Enter'].indexOf(e.key) !== -1) { + // prevent form from being submitted if "ENTER" was pressed + e.preventDefault(); + // prevent event from being handled again by document + e.stopPropagation(); + this._showDropdown(); + } + + // allow navigation from dropdown to input on TAB + if (e.key === 'Tab') this._closeDropdown(); + }; + this.flagsContainer.addEventListener('keydown', this._handleFlagsContainerKeydown); + } + + + // init many requests: utils script / geo ip lookup + _initRequests() { + // if the user has specified the path to the utils script, fetch it on window.load, else resolve + if (this.options.utilsScript && !window.intlTelInputUtils) { + // if the plugin is being initialised after the window.load event has already been fired + if (window.intlTelInputGlobals.windowLoaded) { + window.intlTelInputGlobals.loadUtils(this.options.utilsScript); + } else { + // wait until the load event so we don't block any other requests e.g. the flags image + window.addEventListener('load', () => { + window.intlTelInputGlobals.loadUtils(this.options.utilsScript); + }); + } + } else this.resolveUtilsScriptPromise(); + + if (this.options.initialCountry === 'auto') this._loadAutoCountry(); + else this.resolveAutoCountryPromise(); + } + + + // perform the geo ip lookup + _loadAutoCountry() { + // 3 options: + // 1) already loaded (we're done) + // 2) not already started loading (start) + // 3) already started loading (do nothing - just wait for loading callback to fire) + if (window.intlTelInputGlobals.autoCountry) { + this.handleAutoCountry(); + } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) { + // don't do this twice! + window.intlTelInputGlobals.startedLoadingAutoCountry = true; + + if (typeof this.options.geoIpLookup === 'function') { + this.options.geoIpLookup((countryCode) => { + window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase(); + // tell all instances the auto country is ready + // TODO: this should just be the current instances + // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight + // away (e.g. if they have already done the geo ip lookup somewhere else). Using + // setTimeout means that the current thread of execution will finish before executing + // this, which allows the plugin to finish initialising. + setTimeout(() => forEachInstance('handleAutoCountry')); + }, () => forEachInstance('rejectAutoCountryPromise')); + } + } + } + + + // initialize any key listeners + _initKeyListeners() { + // update flag on keyup + this._handleKeyupEvent = () => { + if (this._updateFlagFromNumber(this.telInput.value)) { + this._triggerCountryChange(); + } + }; + this.telInput.addEventListener('keyup', this._handleKeyupEvent); + + // update flag on cut/paste events (now supported in all major browsers) + this._handleClipboardEvent = () => { + // hack because "paste" event is fired before input is updated + setTimeout(this._handleKeyupEvent); + }; + this.telInput.addEventListener('cut', this._handleClipboardEvent); + this.telInput.addEventListener('paste', this._handleClipboardEvent); + } + + + // adhere to the input's maxlength attr + _cap(number) { + const max = this.telInput.getAttribute('maxlength'); + return (max && number.length > max) ? number.substr(0, max) : number; + } + + + // listen for blur/submit (for autoHideDialCode feature) + _initBlurListeners() { + // on blur or form submit: if just a dial code then remove it + this._handleSubmitOrBlurEvent = () => { + this._removeEmptyDialCode(); + }; + if (this.telInput.form) this.telInput.form.addEventListener('submit', this._handleSubmitOrBlurEvent); + this.telInput.addEventListener('blur', this._handleSubmitOrBlurEvent); + + // made the decision not to trigger blur() now, because would only do anything in the case + // where they manually set the initial value to just a dial code, in which case they probably + // want it to be displayed. + } + + + // clear the input if it just contains a dial code + _removeEmptyDialCode() { + if (this.telInput.value.charAt(0) === '+') { + const numeric = this._getNumeric(this.telInput.value); + // if just a plus, or if just a dial code + if (!numeric || this.selectedCountryData.dialCode === numeric) { + this.telInput.value = ''; + } + } + } + + + // extract the numeric digits from the given string + _getNumeric(s) { + return s.replace(/\D/g, ''); + } + + + // trigger a custom event on the input + _trigger(name) { + // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax + const e = document.createEvent('Event'); + e.initEvent(name, true, true); // can bubble, and is cancellable + this.telInput.dispatchEvent(e); + } + + + // show the dropdown + _showDropdown() { + this.countryList.classList.remove('iti__hide'); + this.countryList.setAttribute('aria-expanded', 'true'); + + this._setDropdownPosition(); + + // update highlighting and scroll to active list item + if (this.activeItem) { + this._highlightListItem(this.activeItem, false); + this._scrollTo(this.activeItem, true); + } + + // bind all the dropdown-related listeners: mouseover, click, click-off, keydown + this._bindDropdownListeners(); + + // update the arrow + this.dropdownArrow.classList.add('iti__arrow--up'); + + this._trigger('open:countrydropdown'); + } + + + // make sure the el has the className or not, depending on the value of shouldHaveClass + _toggleClass(el, className, shouldHaveClass) { + if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); + else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className); + } + + + // decide where to position dropdown (depends on position within viewport, and scroll) + _setDropdownPosition() { + if (this.options.dropdownContainer) { + this.options.dropdownContainer.appendChild(this.dropdown); + } + + if (!this.isMobile) { + const pos = this.telInput.getBoundingClientRect(); + // windowTop from https://stackoverflow.com/a/14384091/217866 + const windowTop = window.pageYOffset || document.documentElement.scrollTop; + const inputTop = pos.top + windowTop; + const dropdownHeight = this.countryList.offsetHeight; + // dropdownFitsBelow = (dropdownBottom < windowBottom) + const dropdownFitsBelow = (inputTop + this.telInput.offsetHeight + dropdownHeight + < (windowTop + window.innerHeight)); + const dropdownFitsAbove = (inputTop - dropdownHeight > windowTop); + + // by default, the dropdown will be below the input. If we want to position it above the + // input, we add the dropup class. + this._toggleClass(this.countryList, 'iti__country-list--dropup', (!dropdownFitsBelow && dropdownFitsAbove)); + + // if dropdownContainer is enabled, calculate postion + if (this.options.dropdownContainer) { + // by default the dropdown will be directly over the input because it's not in the flow. + // If we want to position it below, we need to add some extra top value. + const extraTop = (!dropdownFitsBelow && dropdownFitsAbove) ? 0 : this.telInput.offsetHeight; + + // calculate placement + this.dropdown.style.top = `${inputTop + extraTop}px`; + this.dropdown.style.left = `${pos.left + document.body.scrollLeft}px`; + + // close menu on window scroll + this._handleWindowScroll = () => this._closeDropdown(); + window.addEventListener('scroll', this._handleWindowScroll); + } + } + } + + + // iterate through parent nodes to find the closest list item + _getClosestListItem(target) { + let el = target; + while (el && el !== this.countryList && !el.classList.contains('iti__country')) el = el.parentNode; + // if we reached the countryList element, then return null + return (el === this.countryList) ? null : el; + } + + + // we only bind dropdown listeners when the dropdown is open + _bindDropdownListeners() { + // when mouse over a list item, just highlight that one + // we add the class "highlight", so if they hit "enter" we know which one to select + this._handleMouseoverCountryList = (e) => { + // handle event delegation, as we're listening for this event on the countryList + const listItem = this._getClosestListItem(e.target); + if (listItem) this._highlightListItem(listItem, false); + }; + this.countryList.addEventListener('mouseover', this._handleMouseoverCountryList); + + // listen for country selection + this._handleClickCountryList = (e) => { + const listItem = this._getClosestListItem(e.target); + if (listItem) this._selectListItem(listItem); + }; + this.countryList.addEventListener('click', this._handleClickCountryList); + + // click off to close + // (except when this initial opening click is bubbling up) + // we cannot just stopPropagation as it may be needed to close another instance + let isOpening = true; + this._handleClickOffToClose = () => { + if (!isOpening) this._closeDropdown(); + isOpening = false; + }; + document.documentElement.addEventListener('click', this._handleClickOffToClose); + + // listen for up/down scrolling, enter to select, or letters to jump to country name. + // use keydown as keypress doesn't fire for non-char keys and we want to catch if they + // just hit down and hold it to scroll down (no keyup event). + // listen on the document because that's where key events are triggered if no input has focus + let query = ''; + let queryTimer = null; + this._handleKeydownOnDropdown = (e) => { + // prevent down key from scrolling the whole page, + // and enter key from submitting a form etc + e.preventDefault(); + + // up and down to navigate + if (e.key === 'ArrowUp' || e.key === 'ArrowDown') this._handleUpDownKey(e.key); + // enter to select + else if (e.key === 'Enter') this._handleEnterKey(); + // esc to close + else if (e.key === 'Escape') this._closeDropdown(); + // alpha chars to perform search + // regex allows one latin alpha char or space, based on https://stackoverflow.com/a/26900132/217866) + else if (/^[a-zA-ZÀ-ÿ ]$/.test(e.key)) { + // jump to countries that start with the query string + if (queryTimer) clearTimeout(queryTimer); + query += e.key.toLowerCase(); + this._searchForCountry(query); + // if the timer hits 1 second, reset the query + queryTimer = setTimeout(() => { + query = ''; + }, 1000); + } + }; + document.addEventListener('keydown', this._handleKeydownOnDropdown); + } + + + // highlight the next/prev item in the list (and ensure it is visible) + _handleUpDownKey(key) { + let next = (key === 'ArrowUp') ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling; + if (next) { + // skip the divider + if (next.classList.contains('iti__divider')) { + next = (key === 'ArrowUp') ? next.previousElementSibling : next.nextElementSibling; + } + this._highlightListItem(next, true); + } + } + + + // select the currently highlighted item + _handleEnterKey() { + if (this.highlightedItem) this._selectListItem(this.highlightedItem); + } + + + // find the first list item whose name starts with the query string + _searchForCountry(query) { + for (let i = 0; i < this.countries.length; i++) { + if (this._startsWith(this.countries[i].name, query)) { + const listItem = this.countryList.querySelector(`#iti-item-${this.countries[i].iso2}`); + // update highlighting and scroll + this._highlightListItem(listItem, false); + this._scrollTo(listItem, true); + break; + } + } + } + + + // check if string a starts with string b + _startsWith(a, b) { + return (a.substr(0, b.length).toLowerCase() === b); + } + + + // update the input's value to the given val (format first if possible) + // NOTE: this is called from _setInitialState, handleUtils and setNumber + _updateValFromNumber(originalNumber) { + let number = originalNumber; + if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) { + const useNational = (!this.options.separateDialCode + && (this.options.nationalMode || number.charAt(0) !== '+')); + const { NATIONAL, INTERNATIONAL } = intlTelInputUtils.numberFormat; + const format = useNational ? NATIONAL : INTERNATIONAL; + number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format); + } + + number = this._beforeSetNumber(number); + this.telInput.value = number; + } + + + // check if need to select a new flag based on the given number + // Note: called from _setInitialState, keyup handler, setNumber + _updateFlagFromNumber(originalNumber) { + // if we're in nationalMode and we already have US/Canada selected, make sure the number starts + // with a +1 so _getDialCode will be able to extract the area code + // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag + // from the number), that means we're initialising the plugin with a number that already has a + // dial code, so fine to ignore this bit + let number = originalNumber; + const selectedDialCode = this.selectedCountryData.dialCode; + const isNanp = selectedDialCode === '1'; + if (number && this.options.nationalMode && isNanp && number.charAt(0) !== '+') { + if (number.charAt(0) !== '1') number = `1${number}`; + number = `+${number}`; + } + + // update flag if user types area code for another country + if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== '+') { + number = `+${selectedDialCode}${number}`; + } + + // try and extract valid dial code from input + const dialCode = this._getDialCode(number); + const numeric = this._getNumeric(number); + let countryCode = null; + if (dialCode) { + const countryCodes = this.countryCodes[this._getNumeric(dialCode)]; + // check if the right country is already selected. this should be false if the number is + // longer than the matched dial code because in this case we need to make sure that if + // there are multiple country matches, that the first one is selected (note: we could + // just check that here, but it requires the same loop that we already have later) + const alreadySelected = (countryCodes.indexOf(this.selectedCountryData.iso2) !== -1) + && (numeric.length <= dialCode.length - 1); + const isRegionlessNanpNumber = (selectedDialCode === '1' && this._isRegionlessNanp(numeric)); + + // only update the flag if: + // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp) + // AND + // B) the right country is not already selected + if (!isRegionlessNanpNumber && !alreadySelected) { + // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first + // non-empty index + for (let j = 0; j < countryCodes.length; j++) { + if (countryCodes[j]) { + countryCode = countryCodes[j]; + break; + } + } + } + } else if (number.charAt(0) === '+' && numeric.length) { + // invalid dial code, so empty + // Note: use getNumeric here because the number has not been formatted yet, so could contain + // bad chars + countryCode = ''; + } else if (!number || number === '+') { + // empty, or just a plus, so default + countryCode = this.defaultCountry; + } + + if (countryCode !== null) { + return this._setFlag(countryCode); + } + return false; + } + + + // check if the given number is a regionless NANP number (expects the number to contain an + // international dial code) + _isRegionlessNanp(number) { + const numeric = this._getNumeric(number); + if (numeric.charAt(0) === '1') { + const areaCode = numeric.substr(1, 3); + return (regionlessNanpNumbers.indexOf(areaCode) !== -1); + } + return false; + } + + + // remove highlighting from other list items and highlight the given item + _highlightListItem(listItem, shouldFocus) { + const prevItem = this.highlightedItem; + if (prevItem) prevItem.classList.remove('iti__highlight'); + this.highlightedItem = listItem; + this.highlightedItem.classList.add('iti__highlight'); + + if (shouldFocus) this.highlightedItem.focus(); + } + + + // find the country data for the given country code + // the ignoreOnlyCountriesOption is only used during init() while parsing the onlyCountries array + _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) { + const countryList = (ignoreOnlyCountriesOption) ? allCountries : this.countries; + for (let i = 0; i < countryList.length; i++) { + if (countryList[i].iso2 === countryCode) { + return countryList[i]; + } + } + if (allowFail) { + return null; + } + throw new Error(`No country data for '${countryCode}'`); + } + + + // select the given flag, update the placeholder and the active list item + // Note: called from _setInitialState, _updateFlagFromNumber, _selectListItem, setCountry + _setFlag(countryCode) { + const prevCountry = (this.selectedCountryData.iso2) ? this.selectedCountryData : {}; + + // do this first as it will throw an error and stop if countryCode is invalid + this.selectedCountryData = (countryCode) ? this._getCountryData(countryCode, false, false) : {}; + // update the defaultCountry - we only need the iso2 from now on, so just store that + if (this.selectedCountryData.iso2) { + this.defaultCountry = this.selectedCountryData.iso2; + } + + this.selectedFlagInner.setAttribute('class', `iti__flag iti__${countryCode}`); + // update the selected country's title attribute + const title = (countryCode) ? `${this.selectedCountryData.name}: +${this.selectedCountryData.dialCode}` : 'Unknown'; + this.selectedFlag.setAttribute('title', title); + + if (this.options.separateDialCode) { + const dialCode = (this.selectedCountryData.dialCode) ? `+${this.selectedCountryData.dialCode}` : ''; + this.selectedDialCode.innerHTML = dialCode; + // offsetWidth is zero if input is in a hidden container during initialisation + const selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth(); + + // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css + this.telInput.style.paddingLeft = `${selectedFlagWidth + 6}px`; + } + + // and the input's placeholder + this._updatePlaceholder(); + + // update the active list item + if (this.options.allowDropdown) { + const prevItem = this.activeItem; + if (prevItem) { + prevItem.classList.remove('iti__active'); + prevItem.setAttribute('aria-selected', 'false'); + } + if (countryCode) { + const nextItem = this.countryList.querySelector(`#iti-item-${countryCode}`); + nextItem.setAttribute('aria-selected', 'true'); + nextItem.classList.add('iti__active'); + this.activeItem = nextItem; + this.countryList.setAttribute('aria-activedescendant', nextItem.getAttribute('id')); + } + } + + // return if the flag has changed or not + return (prevCountry.iso2 !== countryCode); + } + + + // when the input is in a hidden container during initialisation, we must inject some markup + // into the end of the DOM to calculate the correct offsetWidth + _getHiddenSelectedFlagWidth() { + // to get the right styling to apply, all we need is a shallow clone of the container, + // and then to inject a deep clone of the selectedFlag element + const containerClone = this.telInput.parentNode.cloneNode(); + containerClone.style.visibility = 'hidden'; + document.body.appendChild(containerClone); + + const selectedFlagClone = this.selectedFlag.cloneNode(true); + containerClone.appendChild(selectedFlagClone); + + const width = selectedFlagClone.offsetWidth; + containerClone.remove(); + return width; + } + + + // update the input placeholder to an example number from the currently selected country + _updatePlaceholder() { + const shouldSetPlaceholder = (this.options.autoPlaceholder === 'aggressive') || (!this.hadInitialPlaceholder && this.options.autoPlaceholder === 'polite'); + if (window.intlTelInputUtils && shouldSetPlaceholder) { + const numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType]; + let placeholder = (this.selectedCountryData.iso2) ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : ''; + + placeholder = this._beforeSetNumber(placeholder); + if (typeof this.options.customPlaceholder === 'function') { + placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData); + } + this.telInput.setAttribute('placeholder', placeholder); + } + } + + + // called when the user selects a list item from the dropdown + _selectListItem(listItem) { + // update selected flag and active list item + const flagChanged = this._setFlag(listItem.getAttribute('data-country-code')); + this._closeDropdown(); + + this._updateDialCode(listItem.getAttribute('data-dial-code'), true); + + // focus the input + this.telInput.focus(); + // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto + // inserting dial code), who try to put the cursor at the beginning the first time + const len = this.telInput.value.length; + this.telInput.setSelectionRange(len, len); + + if (flagChanged) { + this._triggerCountryChange(); + } + } + + + // close the dropdown and unbind any listeners + _closeDropdown() { + this.countryList.classList.add('iti__hide'); + this.countryList.setAttribute('aria-expanded', 'false'); + // update the arrow + this.dropdownArrow.classList.remove('iti__arrow--up'); + + // unbind key events + document.removeEventListener('keydown', this._handleKeydownOnDropdown); + document.documentElement.removeEventListener('click', this._handleClickOffToClose); + this.countryList.removeEventListener('mouseover', this._handleMouseoverCountryList); + this.countryList.removeEventListener('click', this._handleClickCountryList); + + // remove menu from container + if (this.options.dropdownContainer) { + if (!this.isMobile) window.removeEventListener('scroll', this._handleWindowScroll); + if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown); + } + + this._trigger('close:countrydropdown'); + } + + + // check if an element is visible within it's container, else scroll until it is + _scrollTo(element, middle) { + const container = this.countryList; + // windowTop from https://stackoverflow.com/a/14384091/217866 + const windowTop = window.pageYOffset || document.documentElement.scrollTop; + const containerHeight = container.offsetHeight; + const containerTop = container.getBoundingClientRect().top + windowTop; + const containerBottom = containerTop + containerHeight; + const elementHeight = element.offsetHeight; + const elementTop = element.getBoundingClientRect().top + windowTop; + const elementBottom = elementTop + elementHeight; + let newScrollTop = elementTop - containerTop + container.scrollTop; + const middleOffset = (containerHeight / 2) - (elementHeight / 2); + + if (elementTop < containerTop) { + // scroll up + if (middle) newScrollTop -= middleOffset; + container.scrollTop = newScrollTop; + } else if (elementBottom > containerBottom) { + // scroll down + if (middle) newScrollTop += middleOffset; + const heightDifference = containerHeight - elementHeight; + container.scrollTop = newScrollTop - heightDifference; + } + } + + + // replace any existing dial code with the new one + // Note: called from _selectListItem and setCountry + _updateDialCode(newDialCodeBare, hasSelectedListItem) { + const inputVal = this.telInput.value; + // save having to pass this every time + const newDialCode = `+${newDialCodeBare}`; + + let newNumber; + if (inputVal.charAt(0) === '+') { + // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not) + const prevDialCode = this._getDialCode(inputVal); + if (prevDialCode) { + // current number contains a valid dial code, so replace it + newNumber = inputVal.replace(prevDialCode, newDialCode); + } else { + // current number contains an invalid dial code, so ditch it + // (no way to determine where the invalid dial code ends and the rest of the number begins) + newNumber = newDialCode; + } + } else if (this.options.nationalMode || this.options.separateDialCode) { + // don't do anything + return; + } else { + // nationalMode is disabled + if (inputVal) { + // there is an existing value with no dial code: prefix the new dial code + newNumber = newDialCode + inputVal; + } else if (hasSelectedListItem || !this.options.autoHideDialCode) { + // no existing value and either they've just selected a list item, or autoHideDialCode is + // disabled: insert new dial code + newNumber = newDialCode; + } else { + return; + } + } + + this.telInput.value = newNumber; + } + + + // try and extract a valid international dial code from a full telephone number + // Note: returns the raw string inc plus character and any whitespace/dots etc + _getDialCode(number) { + let dialCode = ''; + // only interested in international numbers (starting with a plus) + if (number.charAt(0) === '+') { + let numericChars = ''; + // iterate over chars + for (let i = 0; i < number.length; i++) { + const c = number.charAt(i); + // if char is number (https://stackoverflow.com/a/8935649/217866) + if (!isNaN(parseInt(c, 10))) { + numericChars += c; + // if current numericChars make a valid dial code + if (this.countryCodes[numericChars]) { + // store the actual raw string (useful for matching later) + dialCode = number.substr(0, i + 1); + } + if (numericChars.length === this.dialCodeMaxLen) { + break; + } + } + } + } + return dialCode; + } + + + // get the input val, adding the dial code if separateDialCode is enabled + _getFullNumber() { + const val = this.telInput.value.trim(); + const { dialCode } = this.selectedCountryData; + let prefix; + const numericVal = this._getNumeric(val); + + if (this.options.separateDialCode && val.charAt(0) !== '+' && dialCode && numericVal) { + // when using separateDialCode, it is visible so is effectively part of the typed number + prefix = `+${dialCode}`; + } else { + prefix = ''; + } + return prefix + val; + } + + + // remove the dial code if separateDialCode is enabled + // also cap the length if the input has a maxlength attribute + _beforeSetNumber(originalNumber) { + let number = originalNumber; + if (this.options.separateDialCode) { + let dialCode = this._getDialCode(number); + // if there is a valid dial code + if (dialCode) { + // in case _getDialCode returned an area code as well + dialCode = `+${this.selectedCountryData.dialCode}`; + // a lot of numbers will have a space separating the dial code and the main number, and + // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get + // rid of it + // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc + const start = (number[dialCode.length] === ' ' || number[dialCode.length] === '-') ? dialCode.length + 1 : dialCode.length; + number = number.substr(start); + } + } + + return this._cap(number); + } + + + // trigger the 'countrychange' event + _triggerCountryChange() { + this._trigger('countrychange'); + } + + + /************************** + * SECRET PUBLIC METHODS + **************************/ + + + // this is called when the geoip call returns + handleAutoCountry() { + if (this.options.initialCountry === 'auto') { + // we must set this even if there is an initial val in the input: in case the initial val is + // invalid and they delete it - they should see their auto country + this.defaultCountry = window.intlTelInputGlobals.autoCountry; + // if there's no initial value in the input, then update the flag + if (!this.telInput.value) { + this.setCountry(this.defaultCountry); + } + this.resolveAutoCountryPromise(); + } + } + + + // this is called when the utils request completes + handleUtils() { + // if the request was successful + if (window.intlTelInputUtils) { + // if there's an initial value in the input, then format it + if (this.telInput.value) { + this._updateValFromNumber(this.telInput.value); + } + this._updatePlaceholder(); + } + this.resolveUtilsScriptPromise(); + } + + + /******************** + * PUBLIC METHODS + ********************/ + + + // remove plugin + destroy() { + const { form } = this.telInput; + + if (this.options.allowDropdown) { + // make sure the dropdown is closed (and unbind listeners) + this._closeDropdown(); + this.selectedFlag.removeEventListener('click', this._handleClickSelectedFlag); + this.flagsContainer.removeEventListener('keydown', this._handleFlagsContainerKeydown); + // label click hack + const label = this._getClosestLabel(); + if (label) label.removeEventListener('click', this._handleLabelClick); + } + + // unbind hiddenInput listeners + if (this.hiddenInput && form) form.removeEventListener('submit', this._handleHiddenInputSubmit); + + // unbind autoHideDialCode listeners + if (this.options.autoHideDialCode) { + if (form) form.removeEventListener('submit', this._handleSubmitOrBlurEvent); + this.telInput.removeEventListener('blur', this._handleSubmitOrBlurEvent); + } + + // unbind key events, and cut/paste events + this.telInput.removeEventListener('keyup', this._handleKeyupEvent); + this.telInput.removeEventListener('cut', this._handleClipboardEvent); + this.telInput.removeEventListener('paste', this._handleClipboardEvent); + + // remove attribute of id instance: data-intl-tel-input-id + this.telInput.removeAttribute('data-intl-tel-input-id'); + + // remove markup (but leave the original input) + const wrapper = this.telInput.parentNode; + wrapper.parentNode.insertBefore(this.telInput, wrapper); + wrapper.parentNode.removeChild(wrapper); + + delete window.intlTelInputGlobals.instances[this.id]; + } + + + // get the extension from the current number + getExtension() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2); + } + return ''; + } + + + // format the number to the given format + getNumber(format) { + if (window.intlTelInputUtils) { + const { iso2 } = this.selectedCountryData; + return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format); + } + return ''; + } + + + // get the type of the entered number e.g. landline/mobile + getNumberType() { + if (window.intlTelInputUtils) { + return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2); + } + return -99; + } + + + // get the country data for the currently selected flag + getSelectedCountryData() { + return this.selectedCountryData; + } + + + // get the validation error + getValidationError() { + if (window.intlTelInputUtils) { + const { iso2 } = this.selectedCountryData; + return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2); + } + return -99; + } + + + // validate the input val - assumes the global function isValidNumber (from utilsScript) + isValidNumber() { + const val = this._getFullNumber().trim(); + const countryCode = (this.options.nationalMode) ? this.selectedCountryData.iso2 : ''; + return (window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null); + } + + + // update the selected flag, and update the input val accordingly + setCountry(originalCountryCode) { + const countryCode = originalCountryCode.toLowerCase(); + // check if already selected + if (!this.selectedFlagInner.classList.contains(`iti__${countryCode}`)) { + this._setFlag(countryCode); + this._updateDialCode(this.selectedCountryData.dialCode, false); + this._triggerCountryChange(); + } + } + + + // set the input value and update the flag + setNumber(number) { + // we must update the flag first, which updates this.selectedCountryData, which is used for + // formatting the number before displaying it + const flagChanged = this._updateFlagFromNumber(number); + this._updateValFromNumber(number); + if (flagChanged) { + this._triggerCountryChange(); + } + } + + // set the placeholder number typ + setPlaceholderNumberType(type) { + this.options.placeholderNumberType = type; + this._updatePlaceholder(); + } +} + + +/******************** + * STATIC METHODS + ********************/ + + +// get the country data object +window.intlTelInputGlobals.getCountryData = () => allCountries; + + +// inject a