-
{{#*inline 'title'}}
diff --git a/cards/product-prominentvideo/template.hbs b/cards/product-prominentvideo/template.hbs
index d01f4a9d3..c89099678 100644
--- a/cards/product-prominentvideo/template.hbs
+++ b/cards/product-prominentvideo/template.hbs
@@ -1,10 +1,10 @@
-
{{#*inline 'title'}}
diff --git a/commands/helpers/utils/jamboconfigutils.js b/commands/helpers/utils/jamboconfigutils.js
index c356cba95..e1e19423a 100644
--- a/commands/helpers/utils/jamboconfigutils.js
+++ b/commands/helpers/utils/jamboconfigutils.js
@@ -41,7 +41,7 @@ exports.parseJamboConfig = function () {
* @param {string} partialsPath The local path to the set of partials.
*/
exports.addToPartials = function (partialsPath) {
- const jamboConfig = parseJamboConfig();
+ const jamboConfig = exports.parseJamboConfig();
const existingPartials = jamboConfig.dirs.partials;
const shouldAddNewPartialsPath =
diff --git a/directanswercards/documentsearch-standard/component.js b/directanswercards/documentsearch-standard/component.js
index 2dee30bcb..c03380e5c 100644
--- a/directanswercards/documentsearch-standard/component.js
+++ b/directanswercards/documentsearch-standard/component.js
@@ -20,12 +20,13 @@ class documentsearch_standardComponent extends BaseDirectAnswerCard['documentsea
} else if (snippet) {
snippetValue = Formatter.highlightField(snippet.value, snippet.matchedSubstrings);
}
+ const viewDetailsUrl = relatedItemData.website || (relatedItemData.fieldValues && relatedItemData.fieldValues.landingPageUrl);
return {
value: answer.value,
snippet: snippetValue, // Text snippet to include alongside the answer
viewDetailsText: relatedItemData.fieldValues && relatedItemData.fieldValues.name, // Text below the direct answer and snippet
- viewDetailsLink: relatedItemData.website || (relatedItemData.fieldValues && relatedItemData.fieldValues.landingPageUrl), // Link for the "view details" text
+ viewDetailsLink: Formatter.getUrlWithTextHighlight(snippet, viewDetailsUrl), // Link for the "view details" text
viewDetailsEventOptions: this.addDefaultEventOptions({
ctaLabel: 'VIEW_DETAILS',
fieldName: 'snippet'
diff --git a/layouts/html.hbs b/layouts/html.hbs
index d8e547d0f..2abe7f518 100644
--- a/layouts/html.hbs
+++ b/layouts/html.hbs
@@ -6,6 +6,7 @@
if (window.name == 'overlay') {
window.isOverlay = true;
}
+ {{> script/translations}}
{{/babel}}
{{> layouts/headincludes }}
diff --git a/package-lock.json b/package-lock.json
index 051d585cf..0ae130cbc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "answers-hitchhiker-theme",
- "version": "1.23.1",
+ "version": "1.24.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2127,17 +2127,6 @@
"minimist": "^1.2.0"
}
},
- "@dabh/diagnostics": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
- "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
- "dev": true,
- "requires": {
- "colorspace": "1.1.x",
- "enabled": "2.0.x",
- "kuler": "^2.0.0"
- }
- },
"@istanbuljs/load-nyc-config": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz",
@@ -2738,93 +2727,42 @@
"fastq": "^1.6.0"
}
},
- "@oclif/color": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz",
- "integrity": "sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==",
+ "@oclif/command": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz",
+ "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "chalk": "^3.0.0",
- "strip-ansi": "^5.2.0",
- "supports-color": "^5.4.0",
- "tslib": "^1"
+ "@oclif/config": "^1.15.1",
+ "@oclif/errors": "^1.3.3",
+ "@oclif/parser": "^3.8.3",
+ "@oclif/plugin-help": "^3",
+ "debug": "^4.1.1",
+ "semver": "^7.3.2"
},
"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.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "yallist": "^4.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==",
+ "semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "lru-cache": "^6.0.0"
}
},
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "@oclif/command": {
- "version": "1.5.19",
- "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.5.19.tgz",
- "integrity": "sha512-6+iaCMh/JXJaB2QWikqvGE9//wLEVYYwZd5sud8aLoLKog1Q75naZh2vlGVtg5Mq/NqpqGQvdIjJb3Bm+64AUQ==",
- "dev": true,
- "requires": {
- "@oclif/config": "^1",
- "@oclif/errors": "^1.2.2",
- "@oclif/parser": "^3.8.3",
- "@oclif/plugin-help": "^2",
- "debug": "^4.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
@@ -2844,9 +2782,9 @@
},
"dependencies": {
"globby": {
- "version": "11.0.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz",
- "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==",
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+ "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
"dev": true,
"requires": {
"array-union": "^2.1.0",
@@ -2860,9 +2798,9 @@
}
},
"@oclif/errors": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.4.tgz",
- "integrity": "sha512-pJKXyEqwdfRTUdM8n5FIHiQQHg5ETM0Wlso8bF9GodczO40mF5Z3HufnYWJE7z8sGKxOeJCdbAVZbS8Y+d5GCw==",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz",
+ "integrity": "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==",
"dev": true,
"requires": {
"clean-stack": "^3.0.0",
@@ -2870,19 +2808,6 @@
"indent-string": "^4.0.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
}
},
"@oclif/linewrap": {
@@ -2962,39 +2887,37 @@
}
},
"@oclif/plugin-help": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.3.tgz",
- "integrity": "sha512-bGHUdo5e7DjPJ0vTeRBMIrfqTRDBfyR5w0MP41u0n3r7YG5p14lvMmiCXxi6WDaP2Hw5nqx3PnkAIntCKZZN7g==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.3.tgz",
+ "integrity": "sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ==",
"dev": true,
"requires": {
- "@oclif/command": "^1.5.13",
- "chalk": "^2.4.1",
+ "@oclif/command": "^1.5.20",
+ "@oclif/config": "^1.15.1",
+ "@oclif/errors": "^1.2.2",
+ "chalk": "^4.1.0",
"indent-string": "^4.0.0",
"lodash.template": "^4.4.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0",
- "widest-line": "^2.0.1",
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "widest-line": "^3.1.0",
"wrap-ansi": "^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.0"
- }
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
},
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
"color-convert": {
@@ -3012,51 +2935,19 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "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
},
- "string-width": {
+ "widest-line": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "string-width": "^4.0.0"
}
},
"wrap-ansi": {
@@ -3070,11 +2961,14 @@
"strip-ansi": "^4.0.0"
},
"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.0"
+ }
},
"string-width": {
"version": "2.1.1",
@@ -3099,216 +2993,300 @@
}
}
},
- "@oclif/plugin-not-found": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.4.tgz",
- "integrity": "sha512-G440PCuMi/OT8b71aWkR+kCWikngGtyRjOR24sPMDbpUFV4+B3r51fz1fcqeUiiEOYqUpr0Uy/sneUe1O/NfBg==",
+ "@percy/cli": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli/-/cli-1.0.0-beta.67.tgz",
+ "integrity": "sha512-8XCCqpkheuB44s8IhAQt/jpjJTwLwqYAaPv33NyjwFfgJMfsENgwuGyqUYoukvCaSIEMkOc5zF6PlNyhayOm9Q==",
"dev": true,
"requires": {
- "@oclif/color": "^0.x",
- "@oclif/command": "^1.6.0",
- "cli-ux": "^4.9.0",
- "fast-levenshtein": "^2.0.6",
- "lodash": "^4.17.13"
+ "@oclif/plugin-help": "^3.2.0",
+ "@percy/cli-build": "1.0.0-beta.67",
+ "@percy/cli-config": "1.0.0-beta.67",
+ "@percy/cli-exec": "1.0.0-beta.67",
+ "@percy/cli-snapshot": "1.0.0-beta.67",
+ "@percy/cli-upload": "1.0.0-beta.67"
+ }
+ },
+ "@percy/cli-build": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-build/-/cli-build-1.0.0-beta.67.tgz",
+ "integrity": "sha512-sUyTuXK6jMWydpSLE3vLq8kb32HMv5B+am2RjA4ymTf/TSHjXfjsoOUsPapJZODfvJNlKc37J/vX9h0/WloSHA==",
+ "dev": true,
+ "requires": {
+ "@percy/cli-command": "1.0.0-beta.67",
+ "@percy/client": "1.0.0-beta.67",
+ "@percy/env": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67"
},
"dependencies": {
- "@oclif/command": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz",
- "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==",
- "dev": true,
- "requires": {
- "@oclif/config": "^1.15.1",
- "@oclif/errors": "^1.3.3",
- "@oclif/parser": "^3.8.3",
- "@oclif/plugin-help": "^3",
- "debug": "^4.1.1",
- "semver": "^7.3.2"
- }
- },
- "@oclif/plugin-help": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.1.tgz",
- "integrity": "sha512-vq7rn16TrQmjX3Al/k1Z5iBZWZ3HE8fDXs52OmDJmmTqryPSNvURH9WCAsqr0PODYCSR17Hy1VTzS0x7vVVLEQ==",
- "dev": true,
- "requires": {
- "@oclif/command": "^1.5.20",
- "@oclif/config": "^1.15.1",
- "@oclif/errors": "^1.2.2",
- "chalk": "^2.4.1",
- "indent-string": "^4.0.0",
- "lodash.template": "^4.4.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^4.0.0"
- }
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ }
+ }
+ },
+ "@percy/cli-command": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-command/-/cli-command-1.0.0-beta.67.tgz",
+ "integrity": "sha512-sBfOn/B6P5CLahykpimQ8lNe52SG37jlWBvhgBk+mqdB1LHp7W3ld5JPt/us5YXoDtEDMe/GHno8vN7P5wF2QA==",
+ "dev": true,
+ "requires": {
+ "@oclif/command": "^1.8.0",
+ "@oclif/config": "^1.17.0",
+ "@oclif/plugin-help": "^3.2.0",
+ "@percy/config": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ }
+ }
+ },
+ "@percy/cli-config": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-config/-/cli-config-1.0.0-beta.67.tgz",
+ "integrity": "sha512-JGACgSgIg1gc+WxL2FdDKiG4BQm7mzilrieO7kuGJnMlo4EO5tR8aAH5eQXf9T5q6XqkCGsaUrWPl1OsD69tVg==",
+ "dev": true,
+ "requires": {
+ "@oclif/command": "^1.8.0",
+ "@oclif/config": "^1.17.0",
+ "@percy/config": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ }
+ }
+ },
+ "@percy/cli-exec": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-exec/-/cli-exec-1.0.0-beta.67.tgz",
+ "integrity": "sha512-XAes5O9tMGIQC59qpCP4zRDowvAv2MPKOnTHv0iJlsTNhky3Py4j9+pJIyS+GdUYVeJl0pUXsF2nYxR5As6BGg==",
+ "dev": true,
+ "requires": {
+ "@percy/cli-command": "1.0.0-beta.67",
+ "@percy/core": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67",
+ "cross-spawn": "^7.0.3",
+ "which": "^2.0.2"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
"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==",
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
}
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "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==",
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "color-name": "1.1.3"
+ "shebang-regex": "^3.0.0"
}
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "has-flag": {
+ "shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"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=",
+ }
+ }
+ },
+ "@percy/cli-snapshot": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-snapshot/-/cli-snapshot-1.0.0-beta.67.tgz",
+ "integrity": "sha512-MgiBNwHRxKEjOedDTJu4S97LnOQS897l5o2aWFke0bj0RCntfXykkGUQQiFByF+3rjxyagvd0X5boHiReTsh5A==",
+ "dev": true,
+ "requires": {
+ "@percy/cli-command": "1.0.0-beta.67",
+ "@percy/config": "1.0.0-beta.67",
+ "@percy/core": "1.0.0-beta.67",
+ "@percy/dom": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67",
+ "globby": "^11.0.4",
+ "path-to-regexp": "^6.2.0",
+ "picomatch": "^2.3.0",
+ "serve-handler": "^6.1.3",
+ "yaml": "^1.10.0"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
"dev": true
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.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==",
+ "globby": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+ "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.1.1",
+ "ignore": "^5.1.4",
+ "merge2": "^1.3.0",
+ "slash": "^3.0.0"
}
},
- "widest-line": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
- "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+ "path-to-regexp": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz",
+ "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "dev": true
+ }
+ }
+ },
+ "@percy/cli-upload": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/cli-upload/-/cli-upload-1.0.0-beta.67.tgz",
+ "integrity": "sha512-7AC08hbw3e1ATOQpDlxwEll0VLePJmV+jd+NHToZVpMXoF/ZbNKS+aIrQNB3js0cE/fh+DktWVFTBRR3kMFbZg==",
+ "dev": true,
+ "requires": {
+ "@percy/cli-command": "1.0.0-beta.67",
+ "@percy/client": "1.0.0-beta.67",
+ "@percy/config": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67",
+ "globby": "^11.0.4",
+ "image-size": "^1.0.0"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+ "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
"dev": true,
"requires": {
- "string-width": "^4.0.0"
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.1.1",
+ "ignore": "^5.1.4",
+ "merge2": "^1.3.0",
+ "slash": "^3.0.0"
}
+ }
+ }
+ },
+ "@percy/client": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/client/-/client-1.0.0-beta.67.tgz",
+ "integrity": "sha512-8IWfN+uaqS3j6atKjqjN5kOlplrC/kaSFir/ZCwsK9tgjbBvQ0zhNzkG63H5Ym5bbF6Cxovnzo7g3ehJ2WIIHA==",
+ "dev": true,
+ "requires": {
+ "@percy/env": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ }
+ }
+ },
+ "@percy/config": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/config/-/config-1.0.0-beta.67.tgz",
+ "integrity": "sha512-hvrsyIsLk8eU9w9IYeyRbgZ2y0PVF/FvieeFthHqWP42enCHxP7lItgkEfFGIMcxMnREHdFCZu9o1UE5nv0Oug==",
+ "dev": true,
+ "requires": {
+ "@percy/logger": "1.0.0-beta.67",
+ "ajv": "^8.6.2",
+ "cosmiconfig": "^7.0.0",
+ "yaml": "^1.10.0"
+ },
+ "dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
},
- "wrap-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz",
- "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==",
+ "ajv": {
+ "version": "8.6.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
+ "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "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"
- }
- }
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
}
},
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
}
}
},
- "@oclif/screen": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz",
- "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==",
- "dev": true
- },
- "@percy/agent": {
- "version": "0.28.6",
- "resolved": "https://registry.npmjs.org/@percy/agent/-/agent-0.28.6.tgz",
- "integrity": "sha512-SDAyBiUmfQMVTayjvEjQ0IJIA7Y3AoeyWn0jmUxNOMRRIJWo4lQJghfhFCgzCkhXDCm67NMN2nAQAsvXrlIdkQ==",
- "dev": true,
- "requires": {
- "@oclif/command": "1.5.19",
- "@oclif/config": "^1",
- "@oclif/plugin-help": "^2",
- "@oclif/plugin-not-found": "^1.2",
- "axios": "^0.21.1",
- "body-parser": "^1.18.3",
- "colors": "^1.3.2",
- "cors": "^2.8.4",
- "cosmiconfig": "^5.2.1",
- "cross-spawn": "^7.0.2",
- "deepmerge": "^4.0.0",
- "express": "^4.16.3",
- "follow-redirects": "1.12.1",
- "generic-pool": "^3.7.1",
- "globby": "^10.0.1",
- "image-size": "^0.8.2",
- "js-yaml": "^3.13.1",
- "percy-client": "^3.2.0",
- "puppeteer": "^5.3.1",
- "retry-axios": "^1.0.1",
- "which": "^2.0.1",
- "winston": "^3.0.0"
+ "@percy/core": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/core/-/core-1.0.0-beta.67.tgz",
+ "integrity": "sha512-rPpRxfBkk3xQPfXPiWbPclDrXDskoOLHl8dPAmsikTnFE9XeUlkTTmSgI++LDy8LNyoyj491heLLxoPiQrq0vw==",
+ "dev": true,
+ "requires": {
+ "@percy/client": "1.0.0-beta.67",
+ "@percy/config": "1.0.0-beta.67",
+ "@percy/dom": "1.0.0-beta.67",
+ "@percy/logger": "1.0.0-beta.67",
+ "cross-spawn": "^7.0.3",
+ "extract-zip": "^2.0.1",
+ "rimraf": "^3.0.2",
+ "ws": "^8.0.0"
},
"dependencies": {
+ "@percy/logger": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.67.tgz",
+ "integrity": "sha512-I8CQfHn9eL7TSvxXedS7g22A1aGjhBeUJv2k65W4yBxLCJXalXNObWgYMs6dZn/AbISbssebzk6bbsbiC5sCuA==",
+ "dev": true
+ },
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -3340,16 +3318,49 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
+ },
+ "ws": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.0.tgz",
+ "integrity": "sha512-uYhVJ/m9oXwEI04iIVmgLmugh2qrZihkywG9y5FfZV2ATeLIzHf93qs+tUNqlttbQK957/VX3mtwAS+UfIwA4g==",
+ "dev": true
}
}
},
- "@percy/script": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@percy/script/-/script-1.1.0.tgz",
- "integrity": "sha512-ZocGi2Kf921FzN5ASViWy21L8rRN2aO+JokVoRqPGd49Ykks5KVx8FRPV49lIKKeBIv9wnrL147ZqrkRGI4tkQ==",
+ "@percy/dom": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/dom/-/dom-1.0.0-beta.67.tgz",
+ "integrity": "sha512-IWGn/59Yixjo/j7/k+8SPbu/pD6EmAfr1qFcSUWJ+9Y5jCVS1hRjRyP94Zc+vZTDoEtP6h688yvQGB1L7AZE9g==",
+ "dev": true
+ },
+ "@percy/env": {
+ "version": "1.0.0-beta.67",
+ "resolved": "https://registry.npmjs.org/@percy/env/-/env-1.0.0-beta.67.tgz",
+ "integrity": "sha512-DrXYFIJM38CriYPMuPEC6FxAtwUGUCea2Utv2PbZjABXzZe/oNEm66rcFoIGxNGiVZVUk6ZtSGe36cCAQbPM1g==",
+ "dev": true
+ },
+ "@percy/logger": {
+ "version": "1.0.0-beta.63",
+ "resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.0.0-beta.63.tgz",
+ "integrity": "sha512-iumIt1JjrZQiD9fPShbqaUtyqgRBA1crJzwhh6MPZz4s0XJLxcEzhawKzqhtOoiB8Wr5AxVygswLOkTfPcVuFg==",
+ "dev": true
+ },
+ "@percy/puppeteer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@percy/puppeteer/-/puppeteer-2.0.0.tgz",
+ "integrity": "sha512-AAErUA1NEELBmOIscHBJB064+6x7N2ZIA9EisBfB6ff1HJK58t2x7VGRNQjGsXvq/RP0wrLzmUY3uSSb2gQhVQ==",
+ "dev": true,
+ "requires": {
+ "@percy/sdk-utils": "^1.0.0-beta.32"
+ }
+ },
+ "@percy/sdk-utils": {
+ "version": "1.0.0-beta.63",
+ "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.0.0-beta.63.tgz",
+ "integrity": "sha512-3sLAUzh0BfXcD8qWt6dvjCDo2VqBTJVTNuxPWFj5UyPvK7B3+09wU7RWnY/crLbnBEhnYCW2Az97HHWmPHGA7Q==",
"dev": true,
"requires": {
- "@percy/agent": "~0"
+ "@percy/logger": "1.0.0-beta.63"
}
},
"@sinonjs/commons": {
@@ -3580,6 +3591,12 @@
"integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
"dev": true
},
+ "@types/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
+ "dev": true
+ },
"@types/parse5": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
@@ -3813,12 +3830,6 @@
"color-convert": "^2.0.1"
}
},
- "ansicolors": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
- "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=",
- "dev": true
- },
"any-base": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
@@ -4138,12 +4149,6 @@
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
- "async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
- "dev": true
- },
"async-exit-hook": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-1.1.2.tgz",
@@ -4174,15 +4179,6 @@
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
"dev": true
},
- "axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "dev": true,
- "requires": {
- "follow-redirects": "^1.10.0"
- }
- },
"babel-jest": {
"version": "25.5.1",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz",
@@ -4506,9 +4502,9 @@
"dev": true
},
"bl": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
- "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"requires": {
"buffer": "^5.5.0",
@@ -4522,12 +4518,6 @@
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
- "bluebird-retry": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/bluebird-retry/-/bluebird-retry-0.11.0.tgz",
- "integrity": "sha1-EomrIsu8OgJYe6rTVZU1HdDBwEc=",
- "dev": true
- },
"bmp-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
@@ -4848,32 +4838,6 @@
"unset-value": "^1.0.0"
}
},
- "caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
- "dev": true,
- "requires": {
- "callsites": "^2.0.0"
- },
- "dependencies": {
- "callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
- "dev": true
- }
- }
- },
- "caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
- "dev": true,
- "requires": {
- "caller-callsite": "^2.0.0"
- }
- },
"callsite": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
@@ -4975,16 +4939,6 @@
"rsvp": "^4.8.4"
}
},
- "cardinal": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
- "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=",
- "dev": true,
- "requires": {
- "ansicolors": "~0.3.2",
- "redeyed": "~2.1.0"
- }
- },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -5099,164 +5053,9 @@
},
"cli-boxes": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true
- },
- "cli-ux": {
- "version": "4.9.3",
- "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz",
- "integrity": "sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==",
- "dev": true,
- "requires": {
- "@oclif/errors": "^1.2.2",
- "@oclif/linewrap": "^1.0.0",
- "@oclif/screen": "^1.0.3",
- "ansi-escapes": "^3.1.0",
- "ansi-styles": "^3.2.1",
- "cardinal": "^2.1.1",
- "chalk": "^2.4.1",
- "clean-stack": "^2.0.0",
- "extract-stack": "^1.0.0",
- "fs-extra": "^7.0.0",
- "hyperlinker": "^1.0.0",
- "indent-string": "^3.2.0",
- "is-wsl": "^1.1.0",
- "lodash": "^4.17.11",
- "password-prompt": "^1.0.7",
- "semver": "^5.6.0",
- "strip-ansi": "^5.0.0",
- "supports-color": "^5.5.0",
- "supports-hyperlinks": "^1.0.1",
- "treeify": "^1.1.0",
- "tslib": "^1.9.3"
- },
- "dependencies": {
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "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
- },
- "fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
- "dev": true
- },
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "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"
- }
- },
- "supports-hyperlinks": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
- "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
- "dev": true,
- "requires": {
- "has-flag": "^2.0.0",
- "supports-color": "^5.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
- "dev": true
- }
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
},
"clipboardy": {
"version": "1.2.3",
@@ -5356,33 +5155,6 @@
"object-visit": "^1.0.0"
}
},
- "color": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
- "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.1",
- "color-string": "^1.5.2"
- },
- "dependencies": {
- "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-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -5398,38 +5170,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "color-string": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
- "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
- "dev": true,
- "requires": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
"colorette": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
"integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
"dev": true
},
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
- "dev": true
- },
- "colorspace": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
- "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
- "dev": true,
- "requires": {
- "color": "3.0.x",
- "text-hex": "1.0.x"
- }
- },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -5627,38 +5373,17 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
- "cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dev": true,
- "requires": {
- "object-assign": "^4",
- "vary": "^1"
- }
- },
"cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+ "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
"dev": true,
"requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- }
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
}
},
"crc": {
@@ -5843,6 +5568,12 @@
"integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
"dev": true
},
+ "currency-symbol-map": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/currency-symbol-map/-/currency-symbol-map-5.0.1.tgz",
+ "integrity": "sha512-2yHvoVBPIS9Dx7fjritu9l7UHWo4Z3D2oQnQj8AYwUee2j/PAcoHB4issCqwabfbipISZ/iG6vVYsfrAoks2eA==",
+ "dev": true
+ },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -6074,9 +5805,9 @@
"dev": true
},
"devtools-protocol": {
- "version": "0.0.818844",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz",
- "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==",
+ "version": "0.0.901419",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz",
+ "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==",
"dev": true
},
"diff": {
@@ -6115,12 +5846,6 @@
"webidl-conversions": "^4.0.2"
}
},
- "dotenv": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
- "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
- "dev": true
- },
"duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -6173,12 +5898,6 @@
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
},
- "enabled": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
- "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
- "dev": true
- },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -6259,12 +5978,6 @@
"stackframe": "^0.3.1"
}
},
- "es6-promise-pool": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz",
- "integrity": "sha1-FHxhKza0fxBQJ/nSv1SlmKmdnMs=",
- "dev": true
- },
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -6615,12 +6328,6 @@
}
}
},
- "extract-stack": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz",
- "integrity": "sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo=",
- "dev": true
- },
"extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -6682,12 +6389,6 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "fast-safe-stringify": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
- "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
- "dev": true
- },
"fast-url-parser": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
@@ -6732,12 +6433,6 @@
"pend": "~1.2.0"
}
},
- "fecha": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
- "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
- "dev": true
- },
"file-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/file-match/-/file-match-1.0.2.tgz",
@@ -6879,30 +6574,12 @@
}
}
},
- "fn.name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
- "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz",
- "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==",
- "dev": true
- },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
- "foreachasync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
- "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=",
- "dev": true
- },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -6981,7 +6658,10 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/full-icu/-/full-icu-1.3.1.tgz",
"integrity": "sha512-VMtK//85QJomhk3cXOCksNwOYaw1KWnYTS37GYGgyf7A3ajdBoPGhaJuJWAH2S2kq8GZeXkdKn+3Mfmgy11cVw==",
- "dev": true
+ "dev": true,
+ "requires": {
+ "icu4c-data": "^0.67.2"
+ }
},
"function-bind": {
"version": "1.1.1",
@@ -7042,12 +6722,6 @@
}
}
},
- "generic-pool": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.7.1.tgz",
- "integrity": "sha512-ug6DAZoNgWm6q5KhPFA+hzXfBLFQu5sTXxPpv44DmE0A2g+CiHoq9LTVdkXpZMkYVMoGw83F6W+WT0h0MFMK/w==",
- "dev": true
- },
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -7479,12 +7153,6 @@
"integrity": "sha512-qLo/08cNc3Tb0uD7jK0jAcU5cnqCM0n568918E7R2XhMr/+7F37p4EY062W/stg7tmzvknNn9b/1+UhVRzsYrQ==",
"dev": true
},
- "hyperlinker": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz",
- "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==",
- "dev": true
- },
"i18next": {
"version": "19.9.2",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz",
@@ -7552,6 +7220,12 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "icu4c-data": {
+ "version": "0.67.2",
+ "resolved": "https://registry.npmjs.org/icu4c-data/-/icu4c-data-0.67.2.tgz",
+ "integrity": "sha512-OIRiop+k1IVf4TBLEOj910duoO9NKwtJLwp++qWT6KT5gRziHNt+5gwhcGuTqRy++RTK2gLoAIbk8KYCNxW++g==",
+ "dev": true
+ },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -7571,28 +7245,28 @@
"dev": true
},
"image-size": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.8.3.tgz",
- "integrity": "sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz",
+ "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
"dev": true,
"requires": {
- "queue": "6.0.1"
+ "queue": "6.0.2"
}
},
"import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
"requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
},
"dependencies": {
"resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
}
}
@@ -7754,12 +7428,6 @@
}
}
},
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
"is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
@@ -8813,12 +8481,6 @@
"verror": "1.10.0"
}
},
- "jssha": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.4.2.tgz",
- "integrity": "sha512-/jsi/9C0S70zfkT/4UlKQa5E1xKurDnXcQizcww9JSR/Fv+uIbWM2btG+bFcL3iNoK9jIGS0ls9HWLr1iw0kFg==",
- "dev": true
- },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -8831,12 +8493,6 @@
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true
},
- "kuler": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
- "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
- "dev": true
- },
"lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
@@ -8945,6 +8601,12 @@
"json5": "^2.1.2"
}
},
+ "locale-currency": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/locale-currency/-/locale-currency-0.0.2.tgz",
+ "integrity": "sha1-4skGB1Y85HpZ+VWeRacOJOTbS20=",
+ "dev": true
+ },
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -9089,19 +8751,6 @@
}
}
},
- "logform": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
- "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
- "dev": true,
- "requires": {
- "colors": "^1.2.1",
- "fast-safe-stringify": "^2.0.4",
- "fecha": "^4.2.0",
- "ms": "^2.1.1",
- "triple-beam": "^1.3.0"
- }
- },
"lolex": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz",
@@ -9308,12 +8957,6 @@
"minimist": "^1.2.5"
}
},
- "mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
- },
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
@@ -9614,15 +9257,6 @@
"wrappy": "1"
}
},
- "one-time": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
- "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
- "dev": true,
- "requires": {
- "fn.name": "1.x.x"
- }
- },
"onetime": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
@@ -9706,6 +9340,15 @@
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
"parse-bmfont-ascii": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
@@ -9764,24 +9407,6 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
- "password-prompt": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz",
- "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.1.0",
- "cross-spawn": "^6.0.5"
- },
- "dependencies": {
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- }
- }
- },
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -9845,23 +9470,6 @@
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
- "percy-client": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/percy-client/-/percy-client-3.8.0.tgz",
- "integrity": "sha512-6SVEpnPteN9mR4fq/FCW7M0KDHWbNAyiiyj9igTpHSv2oBjgyNnDA2y0S+o8U+AN7QDRbh40JbAWi72M+cfOJg==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.1",
- "bluebird-retry": "^0.11.0",
- "dotenv": "^8.1.0",
- "es6-promise-pool": "^2.5.0",
- "jssha": "^2.1.0",
- "regenerator-runtime": "^0.13.1",
- "request": "^2.87.0",
- "request-promise": "^4.2.2",
- "walk": "^2.3.14"
- }
- },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -10074,9 +9682,9 @@
"dev": true
},
"progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
+ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
"dev": true
},
"promisify-event": {
@@ -10152,23 +9760,59 @@
"dev": true
},
"puppeteer": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz",
- "integrity": "sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.2.0.tgz",
+ "integrity": "sha512-OR2CCHRashF+f30+LBOtAjK6sNtz2HEyTr5FqAvhf8lR/qB3uBRoIZOwQKgwoyZnMBsxX7ZdazlyBgGjpnkiMw==",
"dev": true,
"requires": {
- "debug": "^4.1.0",
- "devtools-protocol": "0.0.818844",
- "extract-zip": "^2.0.0",
- "https-proxy-agent": "^4.0.0",
- "node-fetch": "^2.6.1",
- "pkg-dir": "^4.2.0",
- "progress": "^2.0.1",
- "proxy-from-env": "^1.0.0",
- "rimraf": "^3.0.2",
- "tar-fs": "^2.0.0",
- "unbzip2-stream": "^1.3.3",
- "ws": "^7.2.3"
+ "debug": "4.3.1",
+ "devtools-protocol": "0.0.901419",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.0",
+ "node-fetch": "2.6.1",
+ "pkg-dir": "4.2.0",
+ "progress": "2.0.1",
+ "proxy-from-env": "1.1.0",
+ "rimraf": "3.0.2",
+ "tar-fs": "2.0.0",
+ "unbzip2-stream": "1.3.3",
+ "ws": "7.4.6"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "ws": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "dev": true
+ }
}
},
"qrcode-terminal": {
@@ -10184,9 +9828,9 @@
"dev": true
},
"queue": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
- "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
"dev": true,
"requires": {
"inherits": "~2.0.3"
@@ -10293,15 +9937,6 @@
"integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==",
"dev": true
},
- "redeyed": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
- "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
- "dev": true,
- "requires": {
- "esprima": "~4.0.0"
- }
- },
"regenerate": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
@@ -10549,6 +10184,12 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true
+ },
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
@@ -10597,12 +10238,6 @@
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
- "retry-axios": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-1.0.2.tgz",
- "integrity": "sha512-PeR6ZVYscfOHrbN3A6EiP8M6UlseHpDkwVDsT6YMcZH0qyMubuFIq6gwydn+ZkvBzry3xmAZwZ3pW1zmJbvLOA==",
- "dev": true
- },
"reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -11091,23 +10726,6 @@
}
}
},
- "simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.3.1"
- },
- "dependencies": {
- "is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
- "dev": true
- }
- }
- },
"sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -11356,12 +10974,6 @@
"tweetnacl": "~0.14.0"
}
},
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
- "dev": true
- },
"stack-utils": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
@@ -11532,15 +11144,15 @@
"dev": true
},
"tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
+ "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
"dev": true,
"requires": {
"chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
+ "mkdirp": "^0.5.1",
"pump": "^3.0.0",
- "tar-stream": "^2.1.4"
+ "tar-stream": "^2.0.0"
}
},
"tar-stream": {
@@ -13335,12 +12947,6 @@
"integrity": "sha1-5tZsVyzhWvJmcGrw/WELKoQd1EM=",
"dev": true
},
- "text-hex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
- "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
- "dev": true
- },
"throat": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
@@ -13501,18 +13107,6 @@
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
},
- "treeify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
- "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
- "dev": true
- },
- "triple-beam": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
- "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
- "dev": true
- },
"truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
@@ -13523,9 +13117,9 @@
}
},
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
},
"tunnel-agent": {
@@ -13597,9 +13191,9 @@
"optional": true
},
"unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
"dev": true,
"requires": {
"buffer": "^5.2.1",
@@ -13856,15 +13450,6 @@
"xml-name-validator": "^3.0.0"
}
},
- "walk": {
- "version": "2.3.14",
- "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz",
- "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==",
- "dev": true,
- "requires": {
- "foreachasync": "^3.0.0"
- }
- },
"walker": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
@@ -14048,67 +13633,6 @@
}
}
},
- "winston": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
- "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
- "dev": true,
- "requires": {
- "@dabh/diagnostics": "^2.0.2",
- "async": "^3.1.0",
- "is-stream": "^2.0.0",
- "logform": "^2.2.0",
- "one-time": "^1.0.0",
- "readable-stream": "^3.4.0",
- "stack-trace": "0.0.x",
- "triple-beam": "^1.3.0",
- "winston-transport": "^4.4.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- }
- }
- },
- "winston-transport": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
- "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.3.7",
- "triple-beam": "^1.2.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": 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"
- }
- },
- "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.0"
- }
- }
- }
- },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -14220,6 +13744,12 @@
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
+ "yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "dev": true
+ },
"yargs": {
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz",
diff --git a/package.json b/package.json
index e3d096a7f..7348ea5eb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "answers-hitchhiker-theme",
- "version": "1.23.1",
+ "version": "1.24.0",
"description": "A starter answers theme for hitchhikers",
"scripts": {
"test": "cross-env NODE_ICU_DATA=node_modules/full-icu jest --verbose",
@@ -22,12 +22,14 @@
"devDependencies": {
"@babel/core": "^7.9.6",
"@babel/preset-env": "^7.9.6",
- "@percy/script": "^1.1.0",
+ "@percy/cli": "^1.0.0-beta.67",
+ "@percy/puppeteer": "^2.0.0",
"@types/jest": "^26.0.19",
"@yext/cta-formatter": "^1.0.0",
"babel-jest": "^25.5.1",
"comment-json": "^4.1.1",
"cross-env": "^7.0.2",
+ "currency-symbol-map": "^5.0.1",
"express": "^4.17.1",
"file-system": "^2.2.2",
"full-icu": "^1.3.1",
@@ -36,8 +38,10 @@
"jest": "^25.5.2",
"libphonenumber-js": "^1.9.6",
"loader-utils": "^2.0.0",
+ "locale-currency": "0.0.2",
"lodash.clonedeep": "^4.5.0",
"postcss": "^8.2.1",
+ "puppeteer": "^10.2.0",
"serve": "^11.3.2",
"simple-git": "^2.24.0",
"testcafe": "^1.15.0",
diff --git a/script/translations.js b/script/translations.js
new file mode 100644
index 000000000..8e2033f14
--- /dev/null
+++ b/script/translations.js
@@ -0,0 +1,18 @@
+window.hitchhiker_theme_translations = {
+ "Closed": {{ translateJS phrase="Closed" context="Indicates that a store is closed" }},
+ "Open 24 Hours": {{ translateJS phrase="Open 24 Hours" context="The hours that a store is open" }},
+ "Opens at": {{ translateJS phrase="Opens at" context="Indicates the time a store will open" }},
+ "Open Now": {{ translateJS phrase="Open Now" context="Indicates that a store is open" }},
+ "Closes at": {{ translateJS phrase="Closes at" context="Indicates the time a store will close" }},
+ "Day of the Week": {{ translateJS phrase="Day of the Week"}},
+ "Hours": {{ translateJS phrase="Hours"}},
+ "Yes": {{ translateJS phrase="Yes" }},
+ "No": {{ translateJS phrase="No" }},
+ "Monday": {{ translateJS phrase="Monday" }},
+ "Tuesday": {{ translateJS phrase="Tuesday" }},
+ "Wednesday": {{ translateJS phrase="Wednesday" }},
+ "Thursday": {{ translateJS phrase="Thursday" }},
+ "Friday": {{ translateJS phrase="Friday" }},
+ "Saturday": {{ translateJS phrase="Saturday" }},
+ "Sunday": {{ translateJS phrase="Sunday" }}
+}
diff --git a/static/js/HitchhikerJS.js b/static/js/HitchhikerJS.js
index 65554705d..869dd5705 100644
--- a/static/js/HitchhikerJS.js
+++ b/static/js/HitchhikerJS.js
@@ -9,6 +9,11 @@ export { isMobile } from 'is-mobile';
export { getInjectedProp } from './get-injected-prop';
export { isHighlighted } from './is-highlighted';
+
+//polyfill for ie11 styling
+import objectFitImages from 'object-fit-images';
+export { objectFitImages }
+
// Used to transfigure the page for the Overlay
import Overlay from './overlay/answers-frame/overlay';
window.Overlay = new Overlay();
diff --git a/static/js/formatters-internal.js b/static/js/formatters-internal.js
index 610687da0..fbdc7fb5f 100644
--- a/static/js/formatters-internal.js
+++ b/static/js/formatters-internal.js
@@ -7,9 +7,11 @@ import HoursStringsLocalizer from './hours/stringslocalizer.js';
import HoursTableBuilder from './hours/table/builder.js';
import { DayNames } from './hours/constants.js';
import { generateCTAFieldTypeLink } from './formatters/generate-cta-field-type-link';
+import { isChrome } from './useragent.js';
+import LocaleCurrency from 'locale-currency'
+import getSymbolFromCurrency from 'currency-symbol-map'
import { parseLocale } from './utils.js';
-
export function address(profile) {
if (!profile.address) {
return '';
@@ -240,7 +242,7 @@ export function prettyPrintObject(obj, locale) {
case 'bigint':
return obj.toLocaleString(locale);
case 'boolean':
- return _prettyPrintBoolean(obj, locale)
+ return _prettyPrintBoolean(obj);
case 'object':
// check for null
if (!obj) {
@@ -261,47 +263,11 @@ export function prettyPrintObject(obj, locale) {
* in English, it would return either 'Yes' for True or 'No' for False.
*
* @param {boolean} value The boolean value.
- * @param {string} locale The locale indicating which language to use.
* @returns {string} The localized affirmative or negative.
*/
-function _prettyPrintBoolean(value, locale) {
- const { language, modifier } = parseLocale(locale);
- const languageAndModifier = modifier ? `${language}-${modifier}` : language;
-
- switch (languageAndModifier) {
- case 'es':
- return value ? 'Sí' : 'No';
- case 'fr':
- return value ? 'Oui' : 'Non';
- case 'it':
- return value ? 'Sì' : 'No';
- case 'de':
- return value ? 'Ja' : 'Nein';
- case 'ja':
- return value ? 'はい' : '番号';
- case 'ar':
- return value ? 'نعم' : 'رقم';
- case 'hi':
- return value ? 'हाँ' : 'नहीं';
- case 'ko':
- return value ? '예' : '아니요';
- case 'nl':
- return value ? 'Ja' : 'Nee';
- case 'pl':
- return value ? 'TAk' : 'Nie';
- case 'pt':
- return value ? 'Sim' : 'Não';
- case 'ru':
- return value ? 'да' : 'Нет';
- case 'sv':
- return value ? 'Ja' : 'Nej';
- case 'zh-Hans':
- return value ? '是的' : '不';
- case 'zh-Hant':
- return value ? '是的' : '不';
- default:
- return value ? 'Yes' : 'No';
- }
+function _prettyPrintBoolean(value) {
+ const text = value ? 'Yes' : 'No';
+ return window.translations[text];
}
export function joinList(list, separator) {
@@ -559,6 +525,35 @@ export function price(fieldValue = {}, locale) {
return price.toLocaleString(localeForFormatting, { style: 'currency', currency: currencyCode });
}
+/**
+ * Returns a localized price range string for the given price range ($-$$$$) and country code (ISO format).
+ * If country code is invalid or undefined, use locale of the site to determine the currency symbol.
+ * If all else fails, use the default priceRange with dollar sign.
+ * @param {string} defaultPriceRange The price range from LiveAPI entity
+ * @param {string} countrycode The country code from LiveAPI entity (e.g. profile.address.countryCode)
+ * @return {string} The price range with correct currency symbol formatting according to country code
+ */
+export function priceRange(defaultPriceRange, countryCode) {
+ if (!defaultPriceRange) {
+ console.warn(`Price range is not provided.`);
+ return '';
+ }
+ if (countryCode) {
+ const currencySymbol = getSymbolFromCurrency(LocaleCurrency.getCurrency(countryCode));
+ if (currencySymbol) {
+ return defaultPriceRange.replace(/\$/g, currencySymbol);
+ }
+ }
+ const { region, language } = parseLocale(_getDocumentLocale());
+ const currencySymbol = getSymbolFromCurrency(LocaleCurrency.getCurrency(region || language));
+ if (currencySymbol) {
+ return defaultPriceRange.replace(/\$/g, currencySymbol);
+ }
+ console.warn('Unable to determine currency symbol from '
+ + `ISO country code "${countryCode}" or locale "${_getDocumentLocale()}".`);
+ return defaultPriceRange;
+}
+
/**
* Highlights snippets of the provided fieldValue according to the matched substrings.
* Each match will be wrapped in
tags.
@@ -603,3 +598,50 @@ export function getYoutubeUrl(videos = []) {
: null;
return youtubeVideoUrl;
}
+
+/**
+ * construct a URL that links to a specific portion of a page, using a text snippet provided in the URL.
+ * This feature is only available in Chrome.
+ * @param {Object} snippet the snippet for the document search direct answer
+ * @param {string} baseUrl website or landingPageURL from the entity related to the snippet
+ * @returns a URL with text fragment URI component attached
+ */
+export function getUrlWithTextHighlight(snippet, baseUrl) {
+ if (!isChrome() || !snippet || snippet.matchedSubstrings.length === 0) {
+ return baseUrl;
+ }
+ //Find the surrounding sentence of the snippet
+ let sentenceStart = snippet.matchedSubstrings[0].offset;
+ let sentenceEnd = sentenceStart + snippet.matchedSubstrings[0].length;
+ const sentenceEnderRegex = /[.\n!\?]/;
+ while (!sentenceEnderRegex.test(snippet.value[sentenceStart]) && sentenceStart > 0) {
+ sentenceStart -= 1;
+ }
+ while (!sentenceEnderRegex.test(snippet.value[sentenceEnd]) && sentenceEnd < snippet.value.length) {
+ sentenceEnd += 1;
+ }
+ sentenceStart = sentenceStart === 0 ? sentenceStart : sentenceStart + 2;
+ const sentence = snippet.value.slice(sentenceStart, sentenceEnd);
+ return baseUrl + `#:~:text=${encodeURIComponent(sentence)}`;
+}
+
+/**
+ * construct a list of displayable category names based on given category ids from liveAPI
+ * and a mapping of category ids to names.
+ *
+ * @param {string[]} categoryIds category ids from liveAPI
+ * @param {Object[]} categoryMap mapping of category ids to names
+ * @param {string} categoryMap[].id id of a category entry
+ * @param {string} categoryMap[].category name of a category entry
+ * @returns {string[]} a list of category names
+ */
+export function getCategoryNames(categoryIds, categoryMap) {
+ if (!categoryIds || !categoryMap) {
+ return [];
+ }
+ return categoryIds.reduce((list, id) => {
+ const categoryEntry = categoryMap.find(category => category.id === id);
+ categoryEntry ? list.push(categoryEntry.category) : console.error(`Unable to find category name for id ${id}.`);
+ return list;
+ }, []);
+}
diff --git a/static/js/formatters.js b/static/js/formatters.js
index 1d1084929..5a2741fe2 100644
--- a/static/js/formatters.js
+++ b/static/js/formatters.js
@@ -28,8 +28,11 @@ import {
hoursList,
generateCTAFieldTypeLink,
price,
+ priceRange,
highlightField,
- getYoutubeUrl
+ getYoutubeUrl,
+ getUrlWithTextHighlight,
+ getCategoryNames
} from './formatters-internal.js';
import * as CustomFormatters from './formatters-custom.js';
@@ -61,8 +64,11 @@ let Formatters = {
hoursList,
generateCTAFieldTypeLink,
price,
+ priceRange,
highlightField,
- getYoutubeUrl
+ getYoutubeUrl,
+ getUrlWithTextHighlight,
+ getCategoryNames
};
Formatters = Object.assign(Formatters, CustomFormatters);
diff --git a/static/js/hours/constants.js b/static/js/hours/constants.js
index 64215f196..f7438cff4 100644
--- a/static/js/hours/constants.js
+++ b/static/js/hours/constants.js
@@ -1,11 +1,11 @@
export const DayNames = {
- SUNDAY: 'SUNDAY',
- MONDAY: 'MONDAY',
- TUESDAY: 'TUESDAY',
- WEDNESDAY: 'WEDNESDAY',
- THURSDAY: 'THURSDAY',
- FRIDAY: 'FRIDAY',
- SATURDAY: 'SATURDAY'
+ SUNDAY: 'Sunday',
+ MONDAY: 'Monday',
+ TUESDAY: 'Tuesday',
+ WEDNESDAY: 'Wednesday',
+ THURSDAY: 'Thursday',
+ FRIDAY: 'Friday',
+ SATURDAY: 'Saturday'
};
export const TableHeaders = {
diff --git a/static/js/hours/open-status/constants.js b/static/js/hours/open-status/constants.js
index ed1324ced..f09b20c34 100644
--- a/static/js/hours/open-status/constants.js
+++ b/static/js/hours/open-status/constants.js
@@ -11,6 +11,6 @@ export const OpenStatusStrings = {
OPEN_24_HOURS: 'Open 24 Hours',
CLOSED: 'Closed',
OPENS_AT: 'Opens at',
- OPEN_NOW: 'Open now',
+ OPEN_NOW: 'Open Now',
CLOSES_AT: 'Closes at'
};
\ No newline at end of file
diff --git a/static/js/hours/stringslocalizer.js b/static/js/hours/stringslocalizer.js
index 301afecb2..61d4989df 100644
--- a/static/js/hours/stringslocalizer.js
+++ b/static/js/hours/stringslocalizer.js
@@ -1,6 +1,3 @@
-import provideOpenStatusTranslation from '../open-status-i18n';
-import provideTableHeadersTranslation from './table/table-strings-i18n';
-
/**
* HoursStringsLocalizer is responsible for returning localized hours strings for
* the current locale
@@ -16,14 +13,6 @@ export default class HoursStringsLocalizer {
* @type {boolean}
*/
this._isTwentyFourHourClock = isTwentyFourHourClock;
-
- /**
- * @type {Object} translationData
- */
- this._translationData = {
- ...provideOpenStatusTranslation(locale),
- ...provideTableHeadersTranslation(locale)
- }
}
/**
@@ -35,11 +24,11 @@ export default class HoursStringsLocalizer {
* @returns {string}
*/
getTranslation(text) {
- if (!this._translationData.hasOwnProperty(text)) {
+ if (!window.hitchhiker_theme_translations.hasOwnProperty(text)) {
console.error(`Could not translate "${text}".`);
return text;
}
- return this._translationData[text];
+ return window.hitchhiker_theme_translations[text];
}
/**
diff --git a/static/js/hours/table/table-strings-i18n.js b/static/js/hours/table/table-strings-i18n.js
deleted file mode 100644
index d40fd293f..000000000
--- a/static/js/hours/table/table-strings-i18n.js
+++ /dev/null
@@ -1,90 +0,0 @@
-import { TableHeaders } from '../constants';
-import { parseLocale } from '../../utils';
-
-export default function provideTableHeadersTranslation(locale) {
- const { language, modifier } = parseLocale(locale);
- const languageAndModifier = modifier ? `${language}-${modifier}` : language;
-
- switch (languageAndModifier) {
- case 'fr':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Jour de la semaine',
- [TableHeaders.HOURS]: 'Horaires'
- }
- case 'de':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Wochentag',
- [TableHeaders.HOURS]: 'Zeiten'
- }
- case 'es':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Día de la semana',
- [TableHeaders.HOURS]: 'Horarios'
- }
- case 'it':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Giorno della settimana',
- [TableHeaders.HOURS]: 'Orari'
- }
- case 'ja':
- return {
- [TableHeaders.DAY_OF_WEEK]: '曜日',
- [TableHeaders.HOURS]: '営業時間'
- }
- case 'ar':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'يوم من الأسبوع',
- [TableHeaders.HOURS]: 'ساعات'
- }
- case 'hi':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'सप्ताह का दिन',
- [TableHeaders.HOURS]: 'घंटे'
- }
- case 'ko':
- return {
- [TableHeaders.DAY_OF_WEEK]: '요일',
- [TableHeaders.HOURS]: '시간'
- }
- case 'nl':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'dag van de week',
- [TableHeaders.HOURS]: 'uur'
- }
- case 'pl':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Dzień tygodnia',
- [TableHeaders.HOURS]: 'godziny'
- }
- case 'pt':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Dia da semana',
- [TableHeaders.HOURS]: 'Horas'
- }
- case 'ru':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'День недели',
- [TableHeaders.HOURS]: 'Часы'
- }
- case 'sv':
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Veckodag',
- [TableHeaders.HOURS]: 'Timmar'
- }
- case 'zh-Hans':
- return {
- [TableHeaders.DAY_OF_WEEK]: '一周中的天',
- [TableHeaders.HOURS]: '小时'
- }
- case 'zh-Hant':
- return {
- [TableHeaders.DAY_OF_WEEK]: '一週中的天',
- [TableHeaders.HOURS]: '小時'
- }
- default:
- return {
- [TableHeaders.DAY_OF_WEEK]: 'Day of the Week',
- [TableHeaders.HOURS]: 'Hours'
- }
- }
-}
\ No newline at end of file
diff --git a/static/js/hours/transformer.js b/static/js/hours/transformer.js
index 3e1db1c97..05d236096 100644
--- a/static/js/hours/transformer.js
+++ b/static/js/hours/transformer.js
@@ -198,7 +198,7 @@ export default class HoursTransformer {
return Object.entries(days)
.filter(([day]) => day !== 'holidayHours' && day !== 'reopenDate')
.reduce((formattedDays, [day, dayInfo]) => {
- const currentDayName = day.toUpperCase();
+ const currentDayName = day.charAt(0).toUpperCase() + day.slice(1).toLowerCase();
const numberTimezone = this._convertTimezoneToNumber(timezone);
const userDate = this._getDateWithUTCOffset(numberTimezone);
const nextDayOfWeek = this._getNextDayOfWeek(userDate, daysOfWeek.indexOf(currentDayName));
diff --git a/static/js/open-status-i18n.js b/static/js/open-status-i18n.js
deleted file mode 100644
index 9d590222b..000000000
--- a/static/js/open-status-i18n.js
+++ /dev/null
@@ -1,315 +0,0 @@
-import { DayNames } from './hours/constants.js';
-import { OpenStatusStrings } from './hours/open-status/constants.js';
-import { parseLocale } from './utils';
-
-/**
- * Provides translation data for the openStatus formatter.
- * @param {string} locale
- */
-export default function provideOpenStatusTranslation (locale) {
- const { language, modifier } = parseLocale(locale);
- const languageAndModifier = modifier ? `${language}-${modifier}` : language;
-
- return {
- ...provideTodaysMessageTranslation(languageAndModifier),
- ...provideDayTranslation(languageAndModifier)
- }
-}
-
-function provideTodaysMessageTranslation(languageAndModifier) {
- switch (languageAndModifier) {
- case 'fr':
- return {
- [OpenStatusStrings.CLOSED]: 'Fermé',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Ouvert 24h/24',
- [OpenStatusStrings.OPENS_AT]: 'Ouvre à',
- [OpenStatusStrings.OPEN_NOW]: 'Ouvert maintenant',
- [OpenStatusStrings.CLOSES_AT]: 'Ferme à',
- }
- case 'de':
- return {
- [OpenStatusStrings.CLOSED]: 'Geschlossen',
- [OpenStatusStrings.OPEN_24_HOURS]: '24 Stunden geöffnet',
- [OpenStatusStrings.OPENS_AT]: 'Öffnet um',
- [OpenStatusStrings.OPEN_NOW]: 'Jetzt geöffnet',
- [OpenStatusStrings.CLOSES_AT]: 'Schließt um',
- }
- case 'es':
- return {
- [OpenStatusStrings.CLOSED]: 'Cerrado',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Abierto las 24 horas',
- [OpenStatusStrings.OPENS_AT]: 'Abre a las',
- [OpenStatusStrings.OPEN_NOW]: 'Abierto ahora',
- [OpenStatusStrings.CLOSES_AT]: 'Cierra a las',
- }
- case 'it':
- return {
- [OpenStatusStrings.CLOSED]: 'Chiuso',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Aperto 24 ore su 24',
- [OpenStatusStrings.OPENS_AT]: 'Apre alle',
- [OpenStatusStrings.OPEN_NOW]: 'Aperto ora',
- [OpenStatusStrings.CLOSES_AT]: 'Chiude alle',
- }
- case 'ja':
- return {
- [OpenStatusStrings.CLOSED]: '休業',
- [OpenStatusStrings.OPEN_24_HOURS]: '24時間営業',
- [OpenStatusStrings.OPENS_AT]: '営業開始',
- [OpenStatusStrings.OPEN_NOW]: '現在営業中',
- [OpenStatusStrings.CLOSES_AT]: '営業終了',
- }
- case 'ar':
- return {
- [OpenStatusStrings.CLOSED]: 'مغلق',
- [OpenStatusStrings.OPEN_24_HOURS]: 'مفتوح على مدار 24 ساعة',
- [OpenStatusStrings.OPENS_AT]: 'يُفتح في',
- [OpenStatusStrings.OPEN_NOW]: 'مفتوح الآن',
- [OpenStatusStrings.CLOSES_AT]: 'يُغلق في',
- }
- case 'hi':
- return {
- [OpenStatusStrings.CLOSED]: 'बंद हो गया',
- [OpenStatusStrings.OPEN_24_HOURS]: '24 घंटे खुला रहता है',
- [OpenStatusStrings.OPENS_AT]: 'इस समय खुलता है',
- [OpenStatusStrings.OPEN_NOW]: 'अभी खुला है',
- [OpenStatusStrings.CLOSES_AT]: 'इस समय बंद होता है',
- }
- case 'ko':
- return {
- [OpenStatusStrings.CLOSED]: '닫힘',
- [OpenStatusStrings.OPEN_24_HOURS]: '24시간 영업',
- [OpenStatusStrings.OPENS_AT]: '개장 시간:',
- [OpenStatusStrings.OPEN_NOW]: 'अ지금 열기',
- [OpenStatusStrings.CLOSES_AT]: '종료 시간:',
- }
- case 'nl':
- return {
- [OpenStatusStrings.CLOSED]: 'Gesloten',
- [OpenStatusStrings.OPEN_24_HOURS]: '24 uur geopend',
- [OpenStatusStrings.OPENS_AT]: 'Geopend vanaf',
- [OpenStatusStrings.OPEN_NOW]: 'Nu geopend',
- [OpenStatusStrings.CLOSES_AT]: 'Gesloten vanaf',
- }
- case 'pl':
- return {
- [OpenStatusStrings.CLOSED]: 'Zamknięte',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Otwarte całodobowo',
- [OpenStatusStrings.OPENS_AT]: 'Zamknięcie',
- [OpenStatusStrings.OPEN_NOW]: 'Czynne teraz',
- [OpenStatusStrings.CLOSES_AT]: 'Otwarcie',
- }
- case 'pt':
- return {
- [OpenStatusStrings.CLOSED]: 'Fechado',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Aberto 24 horas',
- [OpenStatusStrings.OPENS_AT]: 'Abre às',
- [OpenStatusStrings.OPEN_NOW]: 'Aberto agora',
- [OpenStatusStrings.CLOSES_AT]: 'Fecha às',
- }
- case 'ru':
- return {
- [OpenStatusStrings.CLOSED]: 'Закрыто',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Открыто круглосуточно',
- [OpenStatusStrings.OPENS_AT]: 'Открывается в',
- [OpenStatusStrings.OPEN_NOW]: 'Открыто',
- [OpenStatusStrings.CLOSES_AT]: 'Закрывается в',
- }
- case 'sv':
- return {
- [OpenStatusStrings.CLOSED]: 'Stängt',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Öppet 24 timmar om dygnet',
- [OpenStatusStrings.OPENS_AT]: 'Öppnar kl.',
- [OpenStatusStrings.OPEN_NOW]: 'Öppet nu',
- [OpenStatusStrings.CLOSES_AT]: 'Stänger kl.',
- }
- case 'zh-Hans':
- return {
- [OpenStatusStrings.CLOSED]: '休业中',
- [OpenStatusStrings.OPEN_24_HOURS]: '24 小时营业',
- [OpenStatusStrings.OPENS_AT]: '开店时间:',
- [OpenStatusStrings.OPEN_NOW]: '现正营业',
- [OpenStatusStrings.CLOSES_AT]: '闭店时间:',
- }
- case 'zh-Hant':
- return {
- [OpenStatusStrings.CLOSED]: '休息',
- [OpenStatusStrings.OPEN_24_HOURS]: '24 小時營業',
- [OpenStatusStrings.OPENS_AT]: '營業時間:',
- [OpenStatusStrings.OPEN_NOW]: '營業中',
- [OpenStatusStrings.CLOSES_AT]: '休息時間:',
- }
- default:
- return {
- [OpenStatusStrings.CLOSED]: 'Closed',
- [OpenStatusStrings.OPEN_24_HOURS]: 'Open 24 Hours',
- [OpenStatusStrings.OPENS_AT]: 'Opens at',
- [OpenStatusStrings.OPEN_NOW]: 'Open Now',
- [OpenStatusStrings.CLOSES_AT]: 'Closes at',
- }
- }
-}
-
-function provideDayTranslation(languageAndModifier) {
- switch (languageAndModifier) {
- case 'fr':
- return {
- [DayNames.MONDAY]: 'Lundi',
- [DayNames.TUESDAY]: 'Mardi',
- [DayNames.WEDNESDAY]: 'Mercredi',
- [DayNames.THURSDAY]: 'Jeudi',
- [DayNames.FRIDAY]: 'Vendredi',
- [DayNames.SATURDAY]: 'Samedi',
- [DayNames.SUNDAY]: 'Dimanche',
- }
- case 'de':
- return {
- [DayNames.MONDAY]: 'Montag',
- [DayNames.TUESDAY]: 'Dienstag',
- [DayNames.WEDNESDAY]: 'Mittwoch',
- [DayNames.THURSDAY]: 'Donnerstag',
- [DayNames.FRIDAY]: 'Freitag',
- [DayNames.SATURDAY]: 'Samstag',
- [DayNames.SUNDAY]: 'Sonntag',
- }
- case 'es':
- return {
- [DayNames.MONDAY]: 'Lunes',
- [DayNames.TUESDAY]: 'Martes',
- [DayNames.WEDNESDAY]: 'Miércoles',
- [DayNames.THURSDAY]: 'Jueves',
- [DayNames.FRIDAY]: 'Viernes',
- [DayNames.SATURDAY]: 'Sabado',
- [DayNames.SUNDAY]: 'Domingo',
- }
- case 'it':
- return {
- [DayNames.MONDAY]: 'Lunedí',
- [DayNames.TUESDAY]: 'Martedí',
- [DayNames.WEDNESDAY]: 'Mercoledí',
- [DayNames.THURSDAY]: 'Giovedí',
- [DayNames.FRIDAY]: 'Venerdí',
- [DayNames.SATURDAY]: 'Sabato',
- [DayNames.SUNDAY]: 'Domenica',
- }
- case 'ja':
- return {
- [DayNames.MONDAY]: '月曜日',
- [DayNames.TUESDAY]: '火曜日',
- [DayNames.WEDNESDAY]: '水曜日',
- [DayNames.THURSDAY]: '木曜日',
- [DayNames.FRIDAY]: '金曜日',
- [DayNames.SATURDAY]: '土曜日',
- [DayNames.SUNDAY]: '日曜日',
- }
- case 'ar':
- return {
- [DayNames.MONDAY]: 'الاثنين',
- [DayNames.TUESDAY]: 'يوم الثلاثاء',
- [DayNames.WEDNESDAY]: 'الأربعاء',
- [DayNames.THURSDAY]: 'يوم الخميس',
- [DayNames.FRIDAY]: 'يوم الجمعة',
- [DayNames.SATURDAY]: 'يوم السبت',
- [DayNames.SUNDAY]: 'يوم الأحد',
- }
- case 'hi':
- return {
- [DayNames.MONDAY]: 'सोमवार',
- [DayNames.TUESDAY]: 'मंगलवार',
- [DayNames.WEDNESDAY]: 'बुधवार',
- [DayNames.THURSDAY]: 'गुरुवार',
- [DayNames.FRIDAY]: 'शुक्रवार',
- [DayNames.SATURDAY]: 'शनिवार',
- [DayNames.SUNDAY]: 'रविवार का दिन',
- }
- case 'ko':
- return {
- [DayNames.MONDAY]: '월요일',
- [DayNames.TUESDAY]: '화요일',
- [DayNames.WEDNESDAY]: '수요일',
- [DayNames.THURSDAY]: '목요일',
- [DayNames.FRIDAY]: '금요일',
- [DayNames.SATURDAY]: '토요일',
- [DayNames.SUNDAY]: '일요일',
- }
- case 'nl':
- return {
- [DayNames.MONDAY]: 'Maandag',
- [DayNames.TUESDAY]: 'Dinsdag',
- [DayNames.WEDNESDAY]: 'Woensdag',
- [DayNames.THURSDAY]: 'Donderdag',
- [DayNames.FRIDAY]: 'Vrijdag',
- [DayNames.SATURDAY]: 'Zaterdag',
- [DayNames.SUNDAY]: 'Zondag',
- }
- case 'pl':
- return {
- [DayNames.MONDAY]: 'Poniedziałek',
- [DayNames.TUESDAY]: 'Wtorek',
- [DayNames.WEDNESDAY]: 'Środa',
- [DayNames.THURSDAY]: 'Czwartek',
- [DayNames.FRIDAY]: 'Piątek',
- [DayNames.SATURDAY]: 'Sobota',
- [DayNames.SUNDAY]: 'Niedziela',
- }
- case 'pt':
- return {
- [DayNames.MONDAY]: 'Segunda-feira',
- [DayNames.TUESDAY]: 'Terça-feira',
- [DayNames.WEDNESDAY]: 'Quarta-feira',
- [DayNames.THURSDAY]: 'quinta-feira',
- [DayNames.FRIDAY]: 'Sexta-feira',
- [DayNames.SATURDAY]: 'Sábado',
- [DayNames.SUNDAY]: 'Domingo',
- }
- case 'ru':
- return {
- [DayNames.MONDAY]: 'понедельник',
- [DayNames.TUESDAY]: 'вторник',
- [DayNames.WEDNESDAY]: 'среда',
- [DayNames.THURSDAY]: 'четверг',
- [DayNames.FRIDAY]: 'Пятница',
- [DayNames.SATURDAY]: 'Суббота',
- [DayNames.SUNDAY]: 'Воскресенье',
- }
- case 'sv':
- return {
- [DayNames.MONDAY]: 'Måndag',
- [DayNames.TUESDAY]: 'Tisdag',
- [DayNames.WEDNESDAY]: 'Onsdag',
- [DayNames.THURSDAY]: 'Torsdag',
- [DayNames.FRIDAY]: 'Fredag',
- [DayNames.SATURDAY]: 'Lördag',
- [DayNames.SUNDAY]: 'Söndag',
- }
- case 'zh-Hans':
- return {
- [DayNames.MONDAY]: '周一',
- [DayNames.TUESDAY]: '周二',
- [DayNames.WEDNESDAY]: '周三',
- [DayNames.THURSDAY]: '周四',
- [DayNames.FRIDAY]: '星期五',
- [DayNames.SATURDAY]: '周六',
- [DayNames.SUNDAY]: '星期日',
- }
- case 'zh-Hant':
- return {
- [DayNames.MONDAY]: '週一',
- [DayNames.TUESDAY]: '週二',
- [DayNames.WEDNESDAY]: '週三',
- [DayNames.THURSDAY]: '週四',
- [DayNames.FRIDAY]: '星期五',
- [DayNames.SATURDAY]: '週六',
- [DayNames.SUNDAY]: '星期日',
- }
- default:
- return {
- [DayNames.MONDAY]: 'Monday',
- [DayNames.TUESDAY]: 'Tuesday',
- [DayNames.WEDNESDAY]: 'Wednesday',
- [DayNames.THURSDAY]: 'Thursday',
- [DayNames.FRIDAY]: 'Friday',
- [DayNames.SATURDAY]: 'Saturday',
- [DayNames.SUNDAY]: 'Sunday',
- }
- }
-}
\ No newline at end of file
diff --git a/static/js/useragent.js b/static/js/useragent.js
new file mode 100644
index 000000000..61e2555f6
--- /dev/null
+++ b/static/js/useragent.js
@@ -0,0 +1,51 @@
+/**
+ * Returns whether the current browser is Microsoft Edge.
+ * Tries to use User-Agent clients hints, and defaults to
+ * using the User-Agent string if clients hints are not supported.
+ *
+ * @returns {boolean}
+ */
+export function isMicrosoftEdge () {
+ const brands = navigator.userAgentData?.brands;
+ if (brands && brands.length > 0) {
+ return !!brands.find(b => b.brand === 'Microsoft Edge');
+ } else if (navigator.userAgent) {
+ return navigator.userAgent.includes('Edg');
+ }
+}
+
+/**
+ * Returns whether the current browser is Safari.
+ * Currently, Safari does not support User-Agent clients hints (userAgentData).
+ * Chrome likes to pretend that it's Safari.
+ * Edge also likes to pretend that it's Safari.
+ *
+ * @returns {boolean}
+ */
+export function isSafari () {
+ if (isChrome()) {
+ return false;
+ }
+ if (isMicrosoftEdge()) {
+ return false;
+ }
+ return navigator.userAgent.includes('Safari');
+}
+
+/**
+ * Returns whether the current browser is Chrome.
+ * Edge likes to pretend that it is Chrome.
+ *
+ * @returns {boolean}
+ */
+export function isChrome () {
+ if (isMicrosoftEdge()) {
+ return false;
+ }
+ const brands = navigator.userAgentData?.brands;
+ if (brands && brands.length > 0) {
+ return !!brands.find(b => b.brand === 'Google Chrome');
+ } else if (navigator.userAgent) {
+ return navigator.userAgent.includes('Chrome');
+ }
+}
diff --git a/static/package-lock.json b/static/package-lock.json
index 0929c23c4..ed2a2d14a 100644
--- a/static/package-lock.json
+++ b/static/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "answers-hitchhiker-theme",
- "version": "1.23.1",
+ "version": "1.24.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -667,15 +667,206 @@
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz",
- "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==",
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz",
+ "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-simple-access": "^7.10.4",
+ "@babel/helper-module-transforms": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-simple-access": "^7.15.4",
"babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
+ "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.14.5"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
+ "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
+ "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.15.4",
+ "@babel/template": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
+ "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
+ "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
+ "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
+ "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
+ "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.15.4",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-simple-access": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/helper-validator-identifier": "^7.14.9",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
+ "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
+ "dev": true
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
+ "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
+ "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
+ "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+ "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+ "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.15.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
+ "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+ "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
+ "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/generator": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-hoist-variables": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
+ "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.9",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
"@babel/plugin-transform-modules-systemjs": {
@@ -2293,6 +2484,12 @@
}
}
},
+ "currency-symbol-map": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/currency-symbol-map/-/currency-symbol-map-5.0.1.tgz",
+ "integrity": "sha512-2yHvoVBPIS9Dx7fjritu9l7UHWo4Z3D2oQnQj8AYwUee2j/PAcoHB4issCqwabfbipISZ/iG6vVYsfrAoks2eA==",
+ "dev": true
+ },
"d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@@ -4385,6 +4582,12 @@
}
}
},
+ "locale-currency": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/locale-currency/-/locale-currency-0.0.2.tgz",
+ "integrity": "sha1-4skGB1Y85HpZ+VWeRacOJOTbS20=",
+ "dev": true
+ },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -4780,6 +4983,11 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
+ "object-fit-images": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/object-fit-images/-/object-fit-images-3.2.4.tgz",
+ "integrity": "sha512-G+7LzpYfTfqUyrZlfrou/PLLLAPNC52FTy5y1CBywX+1/FkxIloOyQXBmZ3Zxa2AWO+lMF0JTuvqbr7G5e5CWg=="
+ },
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
diff --git a/static/package.json b/static/package.json
index 9f3dfa15b..1817dee1f 100644
--- a/static/package.json
+++ b/static/package.json
@@ -1,6 +1,6 @@
{
"name": "answers-hitchhiker-theme",
- "version": "1.23.1",
+ "version": "1.24.0",
"description": "Toolchain for use with the HH Theme",
"main": "Gruntfile.js",
"scripts": {
@@ -22,6 +22,7 @@
"babel-loader": "^8.1.0",
"comment-json": "^4.1.1",
"css-loader": "^3.4.2",
+ "currency-symbol-map": "^5.0.1",
"esbuild-loader": "^2.13.1",
"file-system": "^2.2.2",
"fs-extra": "^9.0.1",
@@ -32,6 +33,7 @@
"html-webpack-plugin": "^5.3.1",
"jambo": "^1.12.0",
"jsdom": "^16.4.0",
+ "locale-currency": "0.0.2",
"mini-css-extract-plugin": "^1.6.0",
"postcss": "^8.3.1",
"resolve-url-loader": "^3.1.1",
@@ -54,6 +56,7 @@
"libphonenumber-js": "^1.7.51",
"lodash.clonedeep": "^4.5.0",
"merge-options": "^2.0.0",
+ "object-fit-images": "^3.2.4",
"remove-files-webpack-plugin": "^1.4.3",
"underscore.string": "3.3.5"
},
diff --git a/static/scss/answers-variables.scss b/static/scss/answers-variables.scss
index 7c598d480..fadd2233c 100644
--- a/static/scss/answers-variables.scss
+++ b/static/scss/answers-variables.scss
@@ -56,6 +56,7 @@ $container-width: 1000px;
--yxt-text-snippet-font-color: var(--yxt-color-text-primary);
--yxt-direct-answer-view-details-font-weight: var(--yxt-font-weight-normal);
--yxt-search-loading-opacity: 0.5;
+ --yxt-product-prominentimage-height: 300px;
// interactive map variables
--yxt-maps-search-this-area-background-color: white;
diff --git a/static/scss/answers/answers-variables-default.scss b/static/scss/answers/answers-variables-default.scss
index 499c9205c..6d64ebee8 100644
--- a/static/scss/answers/answers-variables-default.scss
+++ b/static/scss/answers/answers-variables-default.scss
@@ -55,6 +55,7 @@ $container-width: 1000px;
--yxt-text-snippet-font-color: var(--yxt-color-text-primary);
--yxt-direct-answer-view-details-font-weight: var(--yxt-font-weight-normal);
--yxt-search-loading-opacity: 0.5;
+ --yxt-product-prominentimage-height: 300px;
// interactive map variables
--yxt-maps-search-this-area-background-color: white;
diff --git a/static/scss/answers/cards/product-prominentimage-clickable.scss b/static/scss/answers/cards/product-prominentimage-clickable.scss
index 16d5787aa..922eba9db 100644
--- a/static/scss/answers/cards/product-prominentimage-clickable.scss
+++ b/static/scss/answers/cards/product-prominentimage-clickable.scss
@@ -78,6 +78,7 @@
{
display: flex;
align-items: flex-start;
+ justify-content: center;
width: 100%;
flex-shrink: 0;
}
@@ -85,7 +86,9 @@
&-img
{
width: 100%;
- height: auto;
+ height: var(--yxt-product-prominentimage-height);
+ object-fit: cover;
+ font-family: 'object-fit: cover;'; //polyfill css for ie11
}
&-title
diff --git a/static/scss/answers/cards/product-prominentimage.scss b/static/scss/answers/cards/product-prominentimage.scss
index 63a051dc7..308a2d5df 100644
--- a/static/scss/answers/cards/product-prominentimage.scss
+++ b/static/scss/answers/cards/product-prominentimage.scss
@@ -55,6 +55,7 @@
{
display: flex;
align-items: flex-start;
+ justify-content: center;
width: 100%;
flex-shrink: 0;
}
@@ -62,7 +63,9 @@
&-img
{
width: 100%;
- height: auto;
+ height: var(--yxt-product-prominentimage-height);
+ object-fit: cover;
+ font-family: 'object-fit: cover;'; //polyfill css for ie11
}
&-title
diff --git a/static/scss/answers/cards/product-prominentvideo.scss b/static/scss/answers/cards/product-prominentvideo.scss
index e341222f1..a07f58f9b 100644
--- a/static/scss/answers/cards/product-prominentvideo.scss
+++ b/static/scss/answers/cards/product-prominentvideo.scss
@@ -8,10 +8,8 @@
width: 100%;
height: 100%;
- &-header
+ &-body
{
- display: flex;
- flex-direction: column;
padding: calc(var(--yxt-base-spacing) * 3/4) var(--yxt-base-spacing);
}
@@ -20,7 +18,6 @@
display: flex;
flex-direction: column;
justify-content: space-between;
- padding: calc(var(--yxt-base-spacing) * 3/4) var(--yxt-base-spacing);
}
&-title
@@ -66,6 +63,11 @@
@include rich_text_formatting;
}
+ &-cardDetails
+ {
+ margin-top: calc(var(--yxt-base-spacing) / 2);
+ }
+
&-ctasWrapper
{
text-transform: uppercase;
diff --git a/static/webpack/webpack.prod.js b/static/webpack/webpack.prod.js
index 56789b453..36c6dc065 100644
--- a/static/webpack/webpack.prod.js
+++ b/static/webpack/webpack.prod.js
@@ -17,7 +17,7 @@ module.exports = (jamboConfig) => {
{
test: /\.js$/,
exclude: [
- /node_modules\//
+ /node_modules\/(?!(currency-symbol-map)\/).*/
],
loader: 'babel-loader',
options: {
diff --git a/templates/common-partials/script/filterbox.hbs b/templates/common-partials/script/filterbox.hbs
index bac8e4007..deed31847 100644
--- a/templates/common-partials/script/filterbox.hbs
+++ b/templates/common-partials/script/filterbox.hbs
@@ -10,4 +10,4 @@ ANSWERS.addComponent("FilterBox",
{{{json componentSettings.FilterBox}}}
]
{{/shallowMergeConfig}}
-));
\ No newline at end of file
+);
\ No newline at end of file
diff --git a/test-site/config-overrides/healthcare_professionals.json b/test-site/config-overrides/healthcare_professionals.json
new file mode 100644
index 000000000..bc9fbaecc
--- /dev/null
+++ b/test-site/config-overrides/healthcare_professionals.json
@@ -0,0 +1,69 @@
+{
+ "componentSettings": {
+ "Facets": {
+ "searchable": true,
+ "searchLabelText": "Search for a filter option"
+ },
+ "SortOptions": {
+ "options": [
+ {
+ "type": "FIELD",
+ "field": "c_popularity",
+ "direction": "ASC",
+ "label": "Popularity"
+ },
+ {
+ "type": "ENTITY_DISTANCE",
+ "label": "Distance"
+ }
+ ]
+ },
+ "FilterBox": {
+ "filters": [
+ {
+ "type": "FilterOptions",
+ "control": "multioption",
+ "options": [
+ {
+ "label": "Open Now",
+ "field": "c_openNow",
+ "value": true
+ },
+ {
+ "label": "Dog Friendly",
+ "field": "c_dogFriendly",
+ "value": true
+ }
+ ]
+ }
+ ]
+ },
+ "AppliedFilters": {
+ "removable": true
+ },
+ "VerticalResults": {
+ "noResults": {
+ "displayAllResults": true // Optional, whether to display all results in the vertical when no results are found.
+ },
+ "hideResultsHeader": true
+ },
+ "SearchBar": {
+ "placeholderText": "Search", // The placeholder text in the answers search bar
+ "allowEmptySearch": true, // Allows users to submit an empty search in the searchbar
+ "loadingIndicator": {
+ "display": true //Optional, whether to include a loading indicator on seachbar
+ // "iconUrl": "" //Optional, use custom icon url instead of the default loading indicator animation
+ },
+ "voiceSearch": {
+ "enabled": false // Whether or not voice search is enabled
+ // "customMicIconUrl": "", // Path to override the voice start icon
+ // "customListeningIconUrl": "" // Path to override the voice stop icon
+ }
+ },
+ "Pagination": {
+ "noResults": {
+ "visible": true
+ }
+ }
+ }
+}
diff --git a/test-site/pages-patches/healthcare_professionals.html.hbs.patch b/test-site/pages-patches/healthcare_professionals.html.hbs.patch
new file mode 100644
index 000000000..b70e5ea60
--- /dev/null
+++ b/test-site/pages-patches/healthcare_professionals.html.hbs.patch
@@ -0,0 +1,32 @@
+--- templates/vertical-grid/page.html.hbs 2021-07-27 11:14:10.000000000 -0400
++++ test-site/pages/healthcare_professionals.html.hbs 2021-09-10 15:33:05.000000000 -0400
+@@ -10,9 +10,9 @@
+ {{> templates/vertical-grid/script/verticalresults }}
+ {{> templates/vertical-grid/script/pagination }}
+ {{> templates/vertical-grid/script/locationbias }}
+- {{!-- {{> templates/vertical-grid/script/sortoptions }} --}}
+- {{!-- {{> templates/vertical-grid/script/facets }} --}}
+- {{!-- {{> templates/vertical-grid/script/filterbox }} --}}
++ {{> templates/vertical-grid/script/sortoptions }}
++ {{> templates/vertical-grid/script/facets }}
++ {{> templates/vertical-grid/script/filterbox }}
+ {{!-- {{> templates/vertical-grid/script/qasubmission }} --}}
+ {{/script/core }}
+
+@@ -34,11 +34,11 @@
+ {{!-- {{> templates/vertical-grid/collapsible-filters/markup/viewresultsbutton }} --}}
+
+
+- {{!-- --}}
+- {{!-- {{> templates/vertical-grid/markup/sortoptions }} --}}
+- {{!-- {{> templates/vertical-grid/markup/filterbox }} --}}
+- {{!-- {{> templates/vertical-grid/markup/facets }} --}}
+- {{!--
--}}
++
++ {{> templates/vertical-grid/markup/sortoptions }}
++ {{> templates/vertical-grid/markup/filterbox }}
++ {{> templates/vertical-grid/markup/facets }}
++
+
+ {{> templates/vertical-grid/markup/spellcheck }}
+ {{> templates/vertical-grid/markup/verticalresults }}
diff --git a/tests/percy/camera.js b/tests/percy/camera.js
index cf2a127fc..0a9d46ded 100644
--- a/tests/percy/camera.js
+++ b/tests/percy/camera.js
@@ -6,11 +6,13 @@ const { SnapshotWidths } = require('./constants');
class Camera {
/**
* @param {function} percySnapshot The percy snapshot function
+ * @param {import('puppeteer').Page} page A Pupeteer Page
* @param {boolean} iframeMode Enables capturing iframe snapshots
* @param {string} locale Enables capturing locale specific snapshots
*/
- constructor(percySnapshot, iframeMode, locale='en') {
+ constructor(percySnapshot, page, iframeMode, locale='en') {
this._percySnapshot = percySnapshot;
+ this._page = page;
this._iframeMode = iframeMode;
this._locale = locale;
}
@@ -31,7 +33,7 @@ class Camera {
*/
async snapshot(snapshotName) {
const updatedSnapshotName = this._getSnapshotName(snapshotName);
- await this._percySnapshot(updatedSnapshotName);
+ await this._percySnapshot(this._page, updatedSnapshotName);
}
/**
@@ -41,7 +43,7 @@ class Camera {
*/
async snapshotDesktopOnly(snapshotName) {
const updatedSnapshotName = this._getSnapshotName(snapshotName);
- await this._percySnapshot(updatedSnapshotName, { widths: [SnapshotWidths.Desktop] });
+ await this._percySnapshot(this._page, updatedSnapshotName, { widths: [SnapshotWidths.Desktop] });
}
/**
@@ -51,7 +53,7 @@ class Camera {
*/
async snapshotMobileOnly(snapshotName) {
const updatedSnapshotName = this._getSnapshotName(snapshotName);
- await this._percySnapshot(updatedSnapshotName, { widths: [SnapshotWidths.Mobile] });
+ await this._percySnapshot(this._page, updatedSnapshotName, { widths: [SnapshotWidths.Mobile] });
}
/**
diff --git a/tests/percy/index.js b/tests/percy/index.js
index c6b1728b3..6bea783a2 100644
--- a/tests/percy/index.js
+++ b/tests/percy/index.js
@@ -1,4 +1,3 @@
-const PercyScript = require('@percy/script');
const HttpServer = require('../test-utils/server');
const Photographer = require('./photographer');
const MultilangPhotographer = require('./multilangphotographer');
@@ -6,22 +5,25 @@ const StandardPageNavigator = require('./standardpagenavigator');
const IframePageNavigator = require('./iframepagenavigator');
const Camera = require('./camera');
const queryConfig = require('./queries.json');
-
+const puppeteer = require('puppeteer');
+const percySnapshot = require('@percy/puppeteer');
const PORT = 5042;
-PercyScript.run(async (page, percySnapshot) => {
+(async ()=> {
const server = new HttpServer({
dir: 'test-site/public',
port: PORT
- })
-
+ });
server.start();
+ const browser = await puppeteer.launch();
+ const page = await browser.newPage();
+
const standardPageNavigator = new StandardPageNavigator(page, `http://localhost:${PORT}`);
const iframePageNavigator = new IframePageNavigator(page, `http://localhost:${PORT}`, 'iframe_test');
- const standardCamera = new Camera(percySnapshot);
- const iframeCamera = new Camera(percySnapshot, true);
+ const standardCamera = new Camera(percySnapshot, page);
+ const iframeCamera = new Camera(percySnapshot, page, true);
await (new Photographer(standardPageNavigator, standardCamera).captureSnapshots());
await (new Photographer(iframePageNavigator, iframeCamera).captureSnapshots());
@@ -31,5 +33,6 @@ PercyScript.run(async (page, percySnapshot) => {
await (new MultilangPhotographer(standardPageNavigator, standardCamera, queryConfig.es).captureSnapshots());
+ await browser.close();
server.shutdown();
-});
+})();
diff --git a/tests/percy/photographer.js b/tests/percy/photographer.js
index 4769bbdb9..3ad306f20 100644
--- a/tests/percy/photographer.js
+++ b/tests/percy/photographer.js
@@ -58,6 +58,9 @@ class Photographer {
await this._pageNavigator.gotoVerticalPage('financial_professionals', { query: 'connor' });
await this._camera.snapshot('vertical-search--financial-professional-location');
+
+ await this._pageNavigator.gotoVerticalPage('healthcare_professionals', { query: 'bob' });
+ await this._camera.snapshot('vertical-search--healthcare-professional-location');
await this._pageNavigator.gotoVerticalPage('jobs', { query: 'job' });
await this._camera.snapshot('vertical-search--job-standard');
diff --git a/tests/static/js/formatters.js b/tests/static/js/formatters.js
index 601a46cb3..da57bbc16 100644
--- a/tests/static/js/formatters.js
+++ b/tests/static/js/formatters.js
@@ -1,4 +1,5 @@
import Formatters from 'static/js/formatters.js';
+import * as useragent from 'static/js/useragent.js';
describe('Formatters', () => {
describe('toLocalizedDistance', () => {
@@ -108,6 +109,54 @@ describe('Formatters', () => {
});
});
+ describe('priceRange', () => {
+ it('Formats a price range in USD', () => {
+ const price = Formatters.priceRange('$', 'US');
+ expect(price).toEqual('$');
+ });
+
+ it('Formats a price range in EUR', () => {
+ const price = Formatters.priceRange('$$', 'BE');
+ expect(price).toEqual('€€');
+ });
+
+ it('Formats a price range in JPY', () => {
+ const price = Formatters.priceRange('$$$', 'JP');
+ expect(price).toEqual('¥¥¥');
+ });
+
+ it('Formats a price range in KRW', () => {
+ const price = Formatters.priceRange('$$$$', 'KR');
+ expect(price).toEqual('₩₩₩₩');
+ });
+
+ it('Formats a price range in GBP', () => {
+ const price = Formatters.priceRange('$', 'GB');
+ expect(price).toEqual('£');
+ });
+
+ it('Formats a price range in invalid country code, use page\'s locale', () => {
+ document.documentElement.lang = 'jp'
+ const price = Formatters.priceRange('$$$', 'IDK');
+ expect(price).toEqual('¥¥¥');
+ });
+
+ it('Formats a price range in undefined country code, use page\'s locale', () => {
+ document.documentElement.lang = 'zh-CN'
+ let price = Formatters.priceRange('$$$', undefined);
+ expect(price).toEqual('¥¥¥');
+ document.documentElement.lang = 'zh-Hant_TW'
+ price = Formatters.priceRange('$$$', undefined);
+ expect(price).toEqual('NT$NT$NT$');
+ });
+
+ it('Formats a price range in invalid country code and invalid page\'s locale', () => {
+ document.documentElement.lang = 'IDKK'
+ const price = Formatters.priceRange('$', 'IDK');
+ expect(price).toEqual('$');
+ });
+ });
+
describe('highlightField', () => {
it('Behaves correctly when there are no matchedSubstrings', () => {
const plainText = 'No more straws';
@@ -153,4 +202,159 @@ describe('Formatters', () => {
expect(actual).toEqual(expected);
});
});
+
+ describe('getUrlWithTextHighlight', () => {
+ const link = 'www.dummy-link.com/test'
+ const isChrome = jest.spyOn(useragent, 'isChrome');
+ isChrome.mockReturnValue(true);
+
+ it('Behaves correctly when there is no matchedSubstring', () => {
+ const snippet = {
+ value: 'this is a sentence, for testing purposes.',
+ matchedSubstrings: []
+ };
+ const actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(link);
+ });
+
+ it('Behaves correctly when there is a matchedSubstring with a surrounding sentence', () => {
+ const snippet = {
+ value: 'this is a sentence, for testing purposes.',
+ matchedSubstrings: [
+ {
+ offset: 5,
+ length: 10
+ }
+ ]
+ };
+ const url = link + '#:~:text=this%20is%20a%20sentence%2C%20for%20testing%20purposes'
+ const actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+ });
+
+ it('Behaves correctly when there is a matchedSubstring with a surrounding'
+ + ' sentence end with different punctuation marks', () => {
+ const matchedSubstrings = [{offset: 5, length: 10}];
+ let snippet = {
+ value: 'this is a sentence for testing purposes? more text',
+ matchedSubstrings: matchedSubstrings
+ };
+ const url = link + '#:~:text=this%20is%20a%20sentence%20for%20testing%20purposes'
+ let actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+
+ snippet = {
+ value: 'this is a sentence for testing purposes! and more',
+ matchedSubstrings: matchedSubstrings
+ };
+ actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+
+ snippet = {
+ value: 'this is a sentence for testing purposes\n some more text',
+ matchedSubstrings: matchedSubstrings
+ };
+ actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+ });
+
+
+ it('Behaves correctly when there is a matchedSubstring at beginning of the string', () => {
+ const snippet = {
+ value: 'this is a sentence for testing purposes. and more more text',
+ matchedSubstrings: [
+ {
+ offset: 0,
+ length: 10
+ }
+ ]
+ };
+ const url = link + '#:~:text=this%20is%20a%20sentence%20for%20testing%20purposes'
+ const actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+ });
+
+ it('Behaves correctly when there is a matchedSubstring with no ending punctuation in string', () => {
+ const snippet = {
+ value: 'this is a sentence for testing purpo',
+ matchedSubstrings: [
+ {
+ offset: 0,
+ length: 10
+ }
+ ]
+ };
+ const url = link + '#:~:text=this%20is%20a%20sentence%20for%20testing%20purpo'
+ const actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+ });
+
+ it('Behaves correctly when there is a matchedSubstring that contain parts of multiple sentences', () => {
+ const snippet = {
+ value: 'more more. This is a sentence for testing purposes. and more random text! some more?',
+ matchedSubstrings: [
+ {
+ offset: 30,
+ length: 30
+ }
+ ]
+ };
+ const url = link + '#:~:text=This%20is%20a%20sentence%20for%20testing%20purposes.%20and%20more%20random%20text'
+ const actual = Formatters.getUrlWithTextHighlight(snippet, link);
+ expect(actual).toEqual(url);
+ });
+ });
+
+ describe('getCategoryNames', () => {
+ const categoryMap = [
+ {
+ "id": "1",
+ "category": "Neurology"
+ },
+ {
+ "id": "2",
+ "category": "Dermatology"
+ },
+ {
+ "id": "3",
+ "category": "Psychiatry"
+ },
+ {
+ "id": "4",
+ "category": "Surgery"
+ }
+ ];
+
+ it('Handle undefined categoryIds and categoryMap', () => {
+ let categoryNames = Formatters.getCategoryNames(null, categoryMap);
+ expect(categoryNames).toEqual([]);
+ categoryNames = Formatters.getCategoryNames(['1'], null);
+ expect(categoryNames).toEqual([]);
+ });
+
+ it('return empty list for no matching category names', () => {
+ const categoryIds = ['5', '0'];
+ const consoleWarn = jest.spyOn(console, 'error')
+ .mockImplementation();
+ const categoryNames = Formatters.getCategoryNames(categoryIds, categoryMap);
+ expect(categoryNames).toEqual([]);
+ expect(consoleWarn).toHaveBeenCalledTimes(2);
+ console.error.mockClear();
+ });
+
+ it('return a list of matching category names', () => {
+ const categoryIds = ['1', '3'];
+ const categoryNames = Formatters.getCategoryNames(categoryIds, categoryMap);
+ expect(categoryNames).toEqual(['Neurology', 'Psychiatry']);
+ });
+
+ it('return a list of category names given non-matching and matching ids', () => {
+ const categoryIds = ['1', '10', '4'];
+ const consoleWarn = jest.spyOn(console, 'error')
+ .mockImplementation();
+ const categoryNames = Formatters.getCategoryNames(categoryIds, categoryMap);
+ expect(categoryNames).toEqual(['Neurology', 'Surgery']);
+ expect(consoleWarn).toHaveBeenCalledTimes(1);
+ });
+ });
});
diff --git a/tests/static/js/hours/table/builder.js b/tests/static/js/hours/table/builder.js
index 02c577606..0163a98ee 100644
--- a/tests/static/js/hours/table/builder.js
+++ b/tests/static/js/hours/table/builder.js
@@ -244,7 +244,7 @@ describe('HoursTableBuilder properly builds hours table', () => {
it('works with all config specified', () => {
const config = {
disableOpenStatus: true,
- firstDayInList: 'SUNDAY',
+ firstDayInList: DayNames.SUNDAY,
};
const hoursTable = new HoursTableBuilder(localizer).build(new Hours({
days: days,
@@ -394,7 +394,7 @@ describe('HoursTableBuilder properly builds hours table', () => {
it('handles split hours properly', () => {
const config = {
disableOpenStatus: false,
- firstDayInList: 'WEDNESDAY',
+ firstDayInList: DayNames.WEDNESDAY,
};
const hoursTable = new HoursTableBuilder(localizer).build(new Hours({
days: days,
diff --git a/tests/templates/script/fixtures/filterbox.hbs.js b/tests/templates/script/fixtures/filterbox.hbs.js
index e61ccc8f4..3f1148b41 100644
--- a/tests/templates/script/fixtures/filterbox.hbs.js
+++ b/tests/templates/script/fixtures/filterbox.hbs.js
@@ -1,2 +1,2 @@
ANSWERS.addComponent("FilterBox",
-{"container":"#js-answersFilterBox","verticalKey":"testKey","a":"testFB"}));
\ No newline at end of file
+{"container":"#js-answersFilterBox","verticalKey":"testKey","a":"testFB"});
\ No newline at end of file
diff --git a/translations/ar.po b/translations/ar.po
index b9ccb6523..6624bc33a 100755
--- a/translations/ar.po
+++ b/translations/ar.po
@@ -193,3 +193,56 @@ msgstr "الخريطة"
msgctxt "View is a verb"
msgid "View All"
msgstr "عرض الكل"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "مغلق"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "مفتوح على مدار 24 ساعة"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "يُفتح في"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "مفتوح الآن"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "يُغلق في"
+
+msgid "Monday"
+msgstr "الاثنين"
+
+msgid "Tuesday"
+msgstr "يوم الثلاثاء"
+
+msgid "Wednesday"
+msgstr "الأربعاء"
+
+msgid "Thursday"
+msgstr "يوم الخميس"
+
+msgid "Friday"
+msgstr "يوم الجمعة"
+
+msgid "Saturday"
+msgstr "يوم السبت"
+
+msgid "Sunday"
+msgstr "يوم الأحد"
+
+msgid "Day of the Week"
+msgstr "يوم من الأسبوع"
+
+msgid "Hours"
+msgstr "ساعات"
+
+msgid "Yes"
+msgstr "رقم"
+
+msgid "No"
+msgstr "نعم"
diff --git a/translations/de.po b/translations/de.po
index 58da9d90a..c97bb5eeb 100755
--- a/translations/de.po
+++ b/translations/de.po
@@ -177,3 +177,56 @@ msgstr[1] "[[resultsCount]] Ergebnisse"
#: theme-components/vertical-full-page-map-alternative-verticals/alternativeverticals.hbs:43
msgid "Alternatively, you can
view results across all search categories."
msgstr "Sehen Sie alternativ
Ergebnisse aus allen Kategorien."
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Geschlossen"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24 Stunden geöffnet"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Öffnet um"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Jetzt geöffnet"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Schließt um"
+
+msgid "Monday"
+msgstr "Montag"
+
+msgid "Tuesday"
+msgstr "Dienstag"
+
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+msgid "Thursday"
+msgstr "Donnerstag"
+
+msgid "Friday"
+msgstr "Freitag"
+
+msgid "Saturday"
+msgstr "Samstag"
+
+msgid "Sunday"
+msgstr "Sonntag"
+
+msgid "Day of the Week"
+msgstr "Wochentag"
+
+msgid "Hours"
+msgstr "Zeiten"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nein"
diff --git a/translations/es.po b/translations/es.po
index 2147550ab..099bccdb8 100755
--- a/translations/es.po
+++ b/translations/es.po
@@ -177,3 +177,61 @@ msgstr[1] "[[resultsCount]] resultados"
#: theme-components/vertical-full-page-map-alternative-verticals/alternativeverticals.hbs:43
msgid "Alternatively, you can
view results across all search categories."
msgstr "En su defecto, puede
ver los resultados para todas las categorías de búsqueda."
+
+msgctxt "some other translations"
+msgid "testing"
+msgstr "pruebas"
+
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Cerrado"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Abierto las 24 horas"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Abre a las"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Abierto ahora"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Cierra a las"
+
+msgid "Monday"
+msgstr "Lunes"
+
+msgid "Tuesday"
+msgstr "Martes"
+
+msgid "Wednesday"
+msgstr "Miércoles"
+
+msgid "Thursday"
+msgstr "Jueves"
+
+msgid "Friday"
+msgstr "Viernes"
+
+msgid "Saturday"
+msgstr "Sabado"
+
+msgid "Sunday"
+msgstr "Domingo"
+
+msgid "Day of the Week"
+msgstr "Día de la semana"
+
+msgid "Hours"
+msgstr "Horarios"
+
+msgid "Yes"
+msgstr "Sí"
+
+msgid "No"
+msgstr "No"
diff --git a/translations/fr.po b/translations/fr.po
index 4ea37a52f..2770480ec 100755
--- a/translations/fr.po
+++ b/translations/fr.po
@@ -177,3 +177,56 @@ msgstr[1] "([[resultsCount]] résultats)"
#: theme-components/vertical-full-page-map-alternative-verticals/alternativeverticals.hbs:43
msgid "Alternatively, you can
view results across all search categories."
msgstr "Autrement, vous pouvez
voir les résultats à travers toutes les catégories."
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Fermé"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Ouvert 24h/24"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Ouvre à"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Ouvert maintenant"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Ferme à"
+
+msgid "Monday"
+msgstr "Lundi"
+
+msgid "Tuesday"
+msgstr "Mardi"
+
+msgid "Wednesday"
+msgstr "Mercredi"
+
+msgid "Thursday"
+msgstr "Jeudi"
+
+msgid "Friday"
+msgstr "Vendredi"
+
+msgid "Saturday"
+msgstr "Samedi"
+
+msgid "Sunday"
+msgstr "Dimanche"
+
+msgid "Day of the Week"
+msgstr "Jour de la semaine"
+
+msgid "Hours"
+msgstr "Horaires"
+
+msgid "Yes"
+msgstr "Oui"
+
+msgid "No"
+msgstr "Non"
diff --git a/translations/hi.po b/translations/hi.po
index b5267562c..91e5cef12 100755
--- a/translations/hi.po
+++ b/translations/hi.po
@@ -181,3 +181,56 @@ msgstr "मैप"
msgctxt "View is a verb"
msgid "View All"
msgstr "सब देखें"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "बंद हो गया"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24 घंटे खुला रहता है"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "इस समय खुलता है"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "अभी खुला है"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "इस समय बंद होता है"
+
+msgid "Monday"
+msgstr "सोमवार"
+
+msgid "Tuesday"
+msgstr "मंगलवार"
+
+msgid "Wednesday"
+msgstr "बुधवार"
+
+msgid "Thursday"
+msgstr "गुरुवार"
+
+msgid "Friday"
+msgstr "शुक्रवार"
+
+msgid "Saturday"
+msgstr "शनिवार"
+
+msgid "Sunday"
+msgstr "रविवार का दिन"
+
+msgid "Day of the Week"
+msgstr "सप्ताह का दिन"
+
+msgid "Hours"
+msgstr "घंटे"
+
+msgid "Yes"
+msgstr "हाँ"
+
+msgid "No"
+msgstr "नहीं"
diff --git a/translations/it.po b/translations/it.po
index 6e77b218d..a9571a617 100755
--- a/translations/it.po
+++ b/translations/it.po
@@ -177,3 +177,56 @@ msgstr[1] "[[resultsCount]] risultati"
#: theme-components/vertical-full-page-map-alternative-verticals/alternativeverticals.hbs:43
msgid "Alternatively, you can
view results across all search categories."
msgstr "Altrimenti, può
vedere i risultati su tutte le categorie di ricerca."
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Chiuso"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Aperto 24 ore su 24"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Apre alle"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Aperto ora"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Chiude alle"
+
+msgid "Monday"
+msgstr "Lunedí"
+
+msgid "Tuesday"
+msgstr "Martedí"
+
+msgid "Wednesday"
+msgstr "Mercoledí"
+
+msgid "Thursday"
+msgstr "Giovedí"
+
+msgid "Friday"
+msgstr "Venerdí"
+
+msgid "Saturday"
+msgstr "Sabato"
+
+msgid "Sunday"
+msgstr "Domenica"
+
+msgid "Day of the Week"
+msgstr "Giorno della settimana"
+
+msgid "Hours"
+msgstr "Orari"
+
+msgid "Yes"
+msgstr "Sì"
+
+msgid "No"
+msgstr "No"
diff --git a/translations/ja.po b/translations/ja.po
index eefb67130..6279605b8 100755
--- a/translations/ja.po
+++ b/translations/ja.po
@@ -174,3 +174,56 @@ msgstr[0] "([[resultsCount]]件の結果)"
#: theme-components/vertical-full-page-map-alternative-verticals/alternativeverticals.hbs:43
msgid "Alternatively, you can
view results across all search categories."
msgstr "代わりに
すべての検索カテゴリーの結果を表示することもできます。"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "休業"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24時間営業"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "営業開始"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "現在営業中"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "営業終了"
+
+msgid "Monday"
+msgstr "月曜日"
+
+msgid "Tuesday"
+msgstr "火曜日"
+
+msgid "Wednesday"
+msgstr "水曜日"
+
+msgid "Thursday"
+msgstr "木曜日"
+
+msgid "Friday"
+msgstr "金曜日"
+
+msgid "Saturday"
+msgstr "土曜日"
+
+msgid "Sunday"
+msgstr "日曜日"
+
+msgid "Day of the Week"
+msgstr "曜日"
+
+msgid "Hours"
+msgstr "営業時間"
+
+msgid "Yes"
+msgstr "はい"
+
+msgid "No"
+msgstr "番号"
diff --git a/translations/ko.po b/translations/ko.po
index 340fe0cd7..f33683697 100755
--- a/translations/ko.po
+++ b/translations/ko.po
@@ -178,3 +178,56 @@ msgstr "지도"
msgctxt "View is a verb"
msgid "View All"
msgstr "전체 보기"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "닫힘"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24시간 영업"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "개장 시간:"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "अ지금 열기"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "종료 시간:"
+
+msgid "Monday"
+msgstr "월요일"
+
+msgid "Tuesday"
+msgstr "화요일"
+
+msgid "Wednesday"
+msgstr "수요일"
+
+msgid "Thursday"
+msgstr "목요일"
+
+msgid "Friday"
+msgstr "금요일"
+
+msgid "Saturday"
+msgstr "토요일"
+
+msgid "Sunday"
+msgstr "일요일"
+
+msgid "Day of the Week"
+msgstr "요일"
+
+msgid "Hours"
+msgstr "시간"
+
+msgid "Yes"
+msgstr "예"
+
+msgid "No"
+msgstr "아니요"
diff --git a/translations/messages.pot b/translations/messages.pot
index 71b17c446..16c7cee7d 100644
--- a/translations/messages.pot
+++ b/translations/messages.pot
@@ -32,14 +32,26 @@ msgstr ""
msgid "clear search"
msgstr ""
+#: script/translations.js:7
+msgid "Day of the Week"
+msgstr ""
+
#: cards/multilang-event-standard/component.js:44
msgid "Directions"
msgstr ""
+#: script/translations.js:15
+msgid "Friday"
+msgstr ""
+
#: cards/multilang-location-standard/component.js:49
msgid "Get Directions"
msgstr ""
+#: script/translations.js:8
+msgid "Hours"
+msgstr ""
+
#: templates/vertical-full-page-map/page.html.hbs:23
msgid "Main location search"
msgstr ""
@@ -52,6 +64,14 @@ msgstr ""
msgid "Map controls"
msgstr ""
+#: script/translations.js:11
+msgid "Monday"
+msgstr ""
+
+#: script/translations.js:10
+msgid "No"
+msgstr ""
+
#: theme-components/collapsible-filters/view-results-button/template.hbs:3
msgid "No results found."
msgstr ""
@@ -64,6 +84,10 @@ msgstr ""
msgid "reset filters"
msgstr ""
+#: script/translations.js:16
+msgid "Saturday"
+msgstr ""
+
#: cards/multilang-location-standard/template.hbs:140
msgid "Services:"
msgstr ""
@@ -104,6 +128,10 @@ msgstr ""
msgid "sorts and filters"
msgstr ""
+#: script/translations.js:17
+msgid "Sunday"
+msgstr ""
+
#: directanswercards/multilang-allfields-standard/component.js:188
msgid "Thank you for your feedback!"
msgstr ""
@@ -122,6 +150,14 @@ msgstr ""
msgid "This did not answer my question"
msgstr ""
+#: script/translations.js:14
+msgid "Thursday"
+msgstr ""
+
+#: script/translations.js:12
+msgid "Tuesday"
+msgstr ""
+
#: theme-components/collapsible-filters/view-results-button/template.hbs:5
msgid "View 1 Result"
msgid_plural "View [[resultsCount]] Results"
@@ -140,6 +176,14 @@ msgstr ""
msgid "Was this the answer you were looking for?"
msgstr ""
+#: script/translations.js:13
+msgid "Wednesday"
+msgstr ""
+
+#: script/translations.js:9
+msgid "Yes"
+msgstr ""
+
#: templates/vertical-full-page-map/markup/searchthisareatoggle.hbs:10
msgctxt "A button that conducts a search in the current map area"
msgid "Search When Map Moves"
@@ -162,11 +206,36 @@ msgctxt "Close is a verb"
msgid "Close Card"
msgstr ""
+#: script/translations.js:2
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr ""
+
+#: script/translations.js:5
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr ""
+
+#: script/translations.js:6
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr ""
+
+#: script/translations.js:4
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr ""
+
#: cards/multilang-event-standard/component.js:34
msgctxt "RSVP is a verb"
msgid "RSVP"
msgstr ""
+#: script/translations.js:3
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr ""
+
#: templates/vertical-full-page-map/markup/mobilelisttoggles.hbs:5
msgctxt "The label of a toggle for displaying a list of results"
msgid "List"
diff --git a/translations/nl.po b/translations/nl.po
index 334fb6a40..de6608904 100755
--- a/translations/nl.po
+++ b/translations/nl.po
@@ -181,3 +181,56 @@ msgstr "Kaart"
msgctxt "View is a verb"
msgid "View All"
msgstr "Alles bekijken"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Gesloten"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24 uur geopend"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Geopend vanaf"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Nu geopend"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Gesloten vanaf"
+
+msgid "Monday"
+msgstr "Maandag"
+
+msgid "Tuesday"
+msgstr "Dinsdag"
+
+msgid "Wednesday"
+msgstr "Woensdag"
+
+msgid "Thursday"
+msgstr "Donderdag"
+
+msgid "Friday"
+msgstr "Vrijdag"
+
+msgid "Saturday"
+msgstr "Zaterdag"
+
+msgid "Sunday"
+msgstr "Zondag"
+
+msgid "Day of the Week"
+msgstr "dag van de week"
+
+msgid "Hours"
+msgstr "uur"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nee"
diff --git a/translations/open-status.pot b/translations/open-status.pot
deleted file mode 100644
index 2663e5b6d..000000000
--- a/translations/open-status.pot
+++ /dev/null
@@ -1,23 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-
-msgctxt "The hours that a store is open"
-msgid "Open 24 Hours"
-msgstr ""
-
-msgctxt "Indicates that a store is closed"
-msgid "Closed"
-msgstr ""
-
-msgctxt "Indicates the time a store will open"
-msgid "Opens at"
-msgstr ""
-
-msgctxt "Indicates that a store is open"
-msgid "Open now"
-msgstr ""
-
-msgctxt "Indicates the time a store will close"
-msgid "Closes at"
-msgstr ""
diff --git a/translations/pl.po b/translations/pl.po
index cfa2d488d..ec29e58e5 100755
--- a/translations/pl.po
+++ b/translations/pl.po
@@ -184,3 +184,56 @@ msgstr "Mapa"
msgctxt "View is a verb"
msgid "View All"
msgstr "Wyświetl wszystkie"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Zamknięte"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Otwarte całodobowo"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Zamknięcie"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Czynne teraz"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Otwarcie"
+
+msgid "Monday"
+msgstr "Poniedziałek"
+
+msgid "Tuesday"
+msgstr "Wtorek"
+
+msgid "Wednesday"
+msgstr "Środa"
+
+msgid "Thursday"
+msgstr "Czwartek"
+
+msgid "Friday"
+msgstr "Piątek"
+
+msgid "Saturday"
+msgstr "Sobota"
+
+msgid "Sunday"
+msgstr "Niedziela"
+
+msgid "Day of the Week"
+msgstr "Dzień tygodnia"
+
+msgid "Hours"
+msgstr "godziny"
+
+msgid "Yes"
+msgstr "Sí"
+
+msgid "TAk"
+msgstr "Nie"
diff --git a/translations/pt.po b/translations/pt.po
index 356447f05..53f62d064 100755
--- a/translations/pt.po
+++ b/translations/pt.po
@@ -181,3 +181,56 @@ msgstr "Mapa"
msgctxt "View is a verb"
msgid "View All"
msgstr "Ver tudo"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Fechado"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Aberto 24 horas"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Abre às"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Aberto agora"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Fecha às"
+
+msgid "Monday"
+msgstr "Segunda-feira"
+
+msgid "Tuesday"
+msgstr "Terça-feira"
+
+msgid "Wednesday"
+msgstr "Quarta-feira"
+
+msgid "Thursday"
+msgstr "quinta-feira"
+
+msgid "Friday"
+msgstr "Sexta-feira"
+
+msgid "Saturday"
+msgstr "Sábado"
+
+msgid "Sunday"
+msgstr "Domingo"
+
+msgid "Day of the Week"
+msgstr "Dia da semana"
+
+msgid "Hours"
+msgstr "Horas"
+
+msgid "Yes"
+msgstr "Sim"
+
+msgid "No"
+msgstr "Não"
diff --git a/translations/ru.po b/translations/ru.po
index 671770420..11a2dc169 100755
--- a/translations/ru.po
+++ b/translations/ru.po
@@ -184,3 +184,56 @@ msgstr "Карта"
msgctxt "View is a verb"
msgid "View All"
msgstr "Смотреть все"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Закрыто"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Открыто круглосуточно"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Открывается в"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Открыто"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Закрывается в"
+
+msgid "Monday"
+msgstr "понедельник"
+
+msgid "Tuesday"
+msgstr "вторник"
+
+msgid "Wednesday"
+msgstr "среда"
+
+msgid "Thursday"
+msgstr "четверг"
+
+msgid "Friday"
+msgstr "Пятница"
+
+msgid "Saturday"
+msgstr "Суббота"
+
+msgid "Sunday"
+msgstr "Воскресенье"
+
+msgid "Day of the Week"
+msgstr "День недели"
+
+msgid "Hours"
+msgstr "Часы"
+
+msgid "Yes"
+msgstr "да"
+
+msgid "No"
+msgstr "Нет"
diff --git a/translations/sv.po b/translations/sv.po
index fc1805e9d..3565a7a0f 100755
--- a/translations/sv.po
+++ b/translations/sv.po
@@ -181,3 +181,56 @@ msgstr "Karta"
msgctxt "View is a verb"
msgid "View All"
msgstr "Visa alla"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "Stängt"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "Öppet 24 timmar om dygnet"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "Öppnar kl."
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "Öppet nu"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "Stänger kl."
+
+msgid "Monday"
+msgstr "Måndag"
+
+msgid "Tuesday"
+msgstr "Tisdag"
+
+msgid "Wednesday"
+msgstr "Onsdag"
+
+msgid "Thursday"
+msgstr "Torsdag"
+
+msgid "Friday"
+msgstr "Fredag"
+
+msgid "Saturday"
+msgstr "Lördag"
+
+msgid "Sunday"
+msgstr "Söndag"
+
+msgid "Day of the Week"
+msgstr "Veckodag"
+
+msgid "Hours"
+msgstr "Timmar"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nej"
diff --git a/translations/zh-Hans.po b/translations/zh-Hans.po
index 073e282bd..969ec41ef 100755
--- a/translations/zh-Hans.po
+++ b/translations/zh-Hans.po
@@ -178,3 +178,56 @@ msgstr "地图"
msgctxt "View is a verb"
msgid "View All"
msgstr "查看全部"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "休业中"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24 小时营业"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "开店时间:"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "现正营业"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "闭店时间:"
+
+msgid "Monday"
+msgstr "周一"
+
+msgid "Tuesday"
+msgstr "周二"
+
+msgid "Wednesday"
+msgstr "周三"
+
+msgid "Thursday"
+msgstr "周四"
+
+msgid "Friday"
+msgstr "星期五"
+
+msgid "Saturday"
+msgstr "周六"
+
+msgid "Sunday"
+msgstr "星期日"
+
+msgid "Day of the Week"
+msgstr "一周中的天"
+
+msgid "Hours"
+msgstr "小时"
+
+msgid "Yes"
+msgstr "是的"
+
+msgid "No"
+msgstr "不"
diff --git a/translations/zh-Hant.po b/translations/zh-Hant.po
index 6256f4d6a..3309f540f 100755
--- a/translations/zh-Hant.po
+++ b/translations/zh-Hant.po
@@ -178,3 +178,56 @@ msgstr "地圖"
msgctxt "View is a verb"
msgid "View All"
msgstr "檢視所有"
+
+msgctxt "Indicates that a store is closed"
+msgid "Closed"
+msgstr "休息"
+
+msgctxt "The hours that a store is open"
+msgid "Open 24 Hours"
+msgstr "24 小時營業"
+
+msgctxt "Indicates the time a store will open"
+msgid "Opens at"
+msgstr "營業時間:"
+
+msgctxt "Indicates that a store is open"
+msgid "Open Now"
+msgstr "營業中"
+
+msgctxt "Indicates the time a store will close"
+msgid "Closes at"
+msgstr "休息時間:"
+
+msgid "Monday"
+msgstr "週一"
+
+msgid "Tuesday"
+msgstr "週二"
+
+msgid "Wednesday"
+msgstr "週三"
+
+msgid "Thursday"
+msgstr "週四"
+
+msgid "Friday"
+msgstr "星期五"
+
+msgid "Saturday"
+msgstr "週六"
+
+msgid "Sunday"
+msgstr "星期日"
+
+msgid "Day of the Week"
+msgstr "一週中的天"
+
+msgid "Hours"
+msgstr "小時"
+
+msgid "Yes"
+msgstr "是的"
+
+msgid "No"
+msgstr "不"