This commit is contained in:
Emi Matchu 2021-08-17 01:22:08 -07:00
commit a1243ad08f
14 changed files with 109 additions and 50 deletions

View file

@ -5,6 +5,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
import fetch from "node-fetch"; import fetch from "node-fetch";

View file

@ -15,6 +15,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
const playwright = require("playwright-aws-lambda"); const playwright = require("playwright-aws-lambda");

View file

@ -5,6 +5,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
samplerHook, samplerHook,
}); });

View file

@ -31,6 +31,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
sampleRate: 10, sampleRate: 10,
}); });

View file

@ -19,6 +19,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
import escapeHtml from "escape-html"; import escapeHtml from "escape-html";

View file

@ -5,6 +5,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
import sendgridMail from "@sendgrid/mail"; import sendgridMail from "@sendgrid/mail";

View file

@ -5,6 +5,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
const AWS = require("aws-sdk"); const AWS = require("aws-sdk");
const Jimp = require("jimp"); const Jimp = require("jimp");

View file

@ -5,6 +5,7 @@ const beeline = require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-gql-server", serviceName: "impress-2020-gql-server",
disableInstrumentationOnLoad: true,
}); });
import connectToDb from "../src/server/db"; import connectToDb from "../src/server/db";
import { getPoseFromPetState, normalizeRow } from "../src/server/util"; import { getPoseFromPetState, normalizeRow } from "../src/server/util";

View file

@ -33,7 +33,7 @@
"escape-html": "^1.0.3", "escape-html": "^1.0.3",
"framer-motion": "^4.1.11", "framer-motion": "^4.1.11",
"graphql": "^15.5.0", "graphql": "^15.5.0",
"honeycomb-beeline": "^2.2.0", "honeycomb-beeline": "^2.7.4",
"immer": "^8.0.1", "immer": "^8.0.1",
"jimp": "^0.14.0", "jimp": "^0.14.0",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",

View file

@ -7,6 +7,7 @@ require("honeycomb-beeline")({
? "Dress to Impress (2020)" ? "Dress to Impress (2020)"
: "Dress to Impress (2020, dev)", : "Dress to Impress (2020, dev)",
serviceName: "impress-2020-build-process", serviceName: "impress-2020-build-process",
disableInstrumentationOnLoad: true,
}); });
const fs = require("fs").promises; const fs = require("fs").promises;
const path = require("path"); const path = require("path");
@ -15,7 +16,6 @@ const { ApolloServer } = require("apollo-server");
const { createTestClient } = require("apollo-server-testing"); const { createTestClient } = require("apollo-server-testing");
const gql = require("graphql-tag"); const gql = require("graphql-tag");
const connectToDb = require("../src/server/db");
const { config } = require("../src/server"); const { config } = require("../src/server");
const cachedDataPath = path.join(__dirname, "..", "src", "app", "cached-data"); const cachedDataPath = path.join(__dirname, "..", "src", "app", "cached-data");
@ -51,7 +51,7 @@ async function main() {
"utf8" "utf8"
); );
console.log(`📚 Wrote zones to ${path.relative(process.cwd(), filePath)}`); console.info(`📚 Wrote zones to ${path.relative(process.cwd(), filePath)}`);
} }
main() main()

View file

@ -20,6 +20,7 @@ import {
ExternalLinkIcon, ExternalLinkIcon,
ChevronRightIcon, ChevronRightIcon,
QuestionIcon, QuestionIcon,
WarningTwoIcon,
} from "@chakra-ui/icons"; } from "@chakra-ui/icons";
import { gql, useMutation } from "@apollo/client"; import { gql, useMutation } from "@apollo/client";
@ -163,12 +164,16 @@ function ItemPageBadges({ item, isEmbedded }) {
item.wakaValueText !== undefined item.wakaValueText !== undefined
} }
> >
{item.wakaValueText && ( {shouldShowWaka() && item.wakaValueText && (
<> <>
{/* For hover-y devices, use a hover popover over the badge. */} {/* For hover-y devices, use a hover popover over the badge. */}
<Box sx={{ "@media (hover: none)": { display: "none" } }}> <Box sx={{ "@media (hover: none)": { display: "none" } }}>
<WakaPopover trigger="hover"> <WakaPopover trigger="hover">
<LinkBadge href="http://www.neopets.com/~waka"> <LinkBadge
href="http://www.neopets.com/~waka"
colorScheme="yellow"
>
<WarningTwoIcon marginRight="1" />
Waka: {item.wakaValueText} Waka: {item.wakaValueText}
</LinkBadge> </LinkBadge>
</WakaPopover> </WakaPopover>
@ -178,7 +183,11 @@ function ItemPageBadges({ item, isEmbedded }) {
sx={{ "@media (hover: hover)": { display: "none" } }} sx={{ "@media (hover: hover)": { display: "none" } }}
align="center" align="center"
> >
<LinkBadge href="http://www.neopets.com/~waka"> <LinkBadge
href="http://www.neopets.com/~waka"
colorScheme="yellow"
>
<WarningTwoIcon marginRight="1" />
Waka: {item.wakaValueText} Waka: {item.wakaValueText}
</LinkBadge> </LinkBadge>
<WakaPopover> <WakaPopover>
@ -439,15 +448,23 @@ function WakaPopover({ children, ...props }) {
<PopoverArrow /> <PopoverArrow />
<PopoverBody fontSize="sm"> <PopoverBody fontSize="sm">
<p> <p>
Waka is a community resource that tracks the approximate value of <strong>
NC items, based on real-world trades. The Waka Guide for NC trade values is closing down!
</strong>{" "}
We're sad to see them go, but excited that the team gets to move
onto the next phase in their life 💖
</p> </p>
<Box height="1em" /> <Box height="1em" />
<p> <p>
The Waka Team aims to maintain the accuracy of the guide as fully The Waka guide was last updated August 7, 2021, so this value
as possible, but please remember values are often changing and might not be accurate anymore. Consider checking in with the
with certain difficult-to-find or popular items it doesn't hurt to Neoboards!
make a value check! </p>
<Box height="1em" />
<p>
Thanks again to the Waka team for letting us experiment with
sharing their trade values here. Best wishes for everything to
come! 💜
</p> </p>
</PopoverBody> </PopoverBody>
</PopoverContent> </PopoverContent>
@ -456,4 +473,21 @@ function WakaPopover({ children, ...props }) {
); );
} }
// August 21, 2021. (The month uses 0-indexing, but nothing else does! 🙃)
const STOP_SHOWING_WAKA_AFTER = new Date(2021, 7, 21, 0, 0, 0, 0);
/**
* shouldShowWaka returns true if, according to the browser, it's not yet
* August 21, 2021. It starts returning false at midnight on Aug 21.
*
* That way, our Waka deprecation message is on an auto-timer. After Aug 21,
* it's safe to remove all Waka UI code, and the Waka API endpoint and GraphQL
* fields. (It might be kind to return a placeholder string for the GraphQL
* case!)
*/
function shouldShowWaka() {
const now = new Date();
return now < STOP_SHOWING_WAKA_AFTER;
}
export default ItemPageLayout; export default ItemPageLayout;

View file

@ -176,7 +176,8 @@ function OutfitKnownGlitchesBadge({ appearance }) {
Invisible pets are affected by a number of glitches, including faces Invisible pets are affected by a number of glitches, including faces
sometimes being visible on-site, and errors in the HTML5 conversion. If sometimes being visible on-site, and errors in the HTML5 conversion. If
this pose looks incorrect, you can try another by clicking the emoji this pose looks incorrect, you can try another by clicking the emoji
face to the right. But be aware that Neopets.com might look different! face next to the species/color picker. But be aware that Neopets.com
might look different!
</Box> </Box>
); );
} }
@ -208,13 +209,32 @@ function OutfitKnownGlitchesBadge({ appearance }) {
We know that the art for this pet is incorrect, but we still haven't We know that the art for this pet is incorrect, but we still haven't
seen a <em>correct</em> model for this pose yet. Once someone models the seen a <em>correct</em> model for this pose yet. Once someone models the
correct data, we'll use that instead. For now, you could also try correct data, we'll use that instead. For now, you could also try
switching to another pose, by clicking the emoji face to the right! switching to another pose, by clicking the emoji face next to the
species/color picker!
</Box> </Box>
); );
} }
const petLayers = petAppearance?.layers || []; const petLayers = petAppearance?.layers || [];
// Look for pet layers with the OFFICIAL_SWF_IS_INCORRECT glitch.
for (const layer of petLayers) {
const layerHasGlitch = (layer.knownGlitches || []).includes(
"OFFICIAL_SWF_IS_INCORRECT"
);
if (layerHasGlitch) {
glitchMessages.push(
<Box key={`official-swf-is-incorrect-for-pet-layer-${layer.id}`}>
We're aware of a glitch affecting the art for this pet's{" "}
<i>{layer.zone.label}</i> zone. Last time we checked, this glitch
affected its appearance on Neopets.com, too. But our version might be
out of date! If you've seen it look better on-site, please email me at
matchu@openneo.net so we can fix it!
</Box>
);
}
}
// Look for pet layers with the OFFICIAL_SVG_IS_INCORRECT glitch. // Look for pet layers with the OFFICIAL_SVG_IS_INCORRECT glitch.
for (const layer of petLayers) { for (const layer of petLayers) {
const layerHasOfficialSvgIsIncorrect = (layer.knownGlitches || []).includes( const layerHasOfficialSvgIsIncorrect = (layer.knownGlitches || []).includes(

View file

@ -135,12 +135,12 @@ export function GlitchBadgeLayout({
} }
export function layerUsesHTML5(layer) { export function layerUsesHTML5(layer) {
return ( return Boolean(
layer.svgUrl || layer.svgUrl ||
layer.canvasMovieLibraryUrl || layer.canvasMovieLibraryUrl ||
// If this glitch is applied, then `svgUrl` will be null, but there's still // If this glitch is applied, then `svgUrl` will be null, but there's still
// an HTML5 manifest that the official player can render. // an HTML5 manifest that the official player can render.
(layer.knownGlitches || []).includes("OFFICIAL_SVG_IS_INCORRECT") (layer.knownGlitches || []).includes("OFFICIAL_SVG_IS_INCORRECT")
); );
} }

View file

@ -4606,25 +4606,17 @@
dependencies: dependencies:
mkdirp "^1.0.4" mkdirp "^1.0.4"
"@opentelemetry/api@^0.9.0": "@opentelemetry/api@^0.18.1":
version "0.9.0" version "0.18.1"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.9.0.tgz#23dc68851f98eabfb981f0b0cc5b1c34d715fdcb" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.18.1.tgz#fb499e07afa1f55acffc47b2469eb218dcdee2a2"
integrity sha512-fJ0CzUf4favXihuD6dDUh4U6GPfEjswUy9w+N4SrIrX3wFi43bGb3BXPSctaWx3PQaRC3Rjsw12HWR+oRl9pRQ== integrity sha512-pKNxHe3AJ5T2N5G3AlT9gx6FyF5K2FS9ZNc+FipC+f1CpVF/EY+JHTJ749dnM2kWIgZTbDJFiGMuc0FYjNSCOg==
dependencies:
"@opentelemetry/context-base" "^0.9.0"
"@opentelemetry/context-base@^0.9.0": "@opentelemetry/core@^0.18.0":
version "0.9.0" version "0.18.2"
resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.9.0.tgz#30ad9eee8b5abebc477b5d0a657474324ca5a8cb" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.18.2.tgz#3f8f54e250416b50730551f73e42fca9808cafd3"
integrity sha512-4XUS2RoGKla+lqbEBKN4NUmPtJI/+NHVt7EHaw6XxFlBwyZ9HAX61Kk53Hlb6eUYOLOehdVx9Q+gdpamj018iQ== integrity sha512-WG8veOEd8xZHuBaOHddzWQg5yj794lrEPAe6W1qI0YkV7pyqYXvhJdCxOU5Lyo1SWzTAjI5xrCUQ9J2WlrqzYA==
"@opentelemetry/core@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.9.0.tgz#bd140ff017094150239430847fc7e2929dd91d6f"
integrity sha512-OU4qmYbDTilvdNgr9rXIGgBh1GENPbQrkyAzob5l/4/blqTDi75a5S/ZfkNjweyVvufVbp81rpvSxu9oN9tg2g==
dependencies: dependencies:
"@opentelemetry/api" "^0.9.0" "@opentelemetry/api" "^0.18.1"
"@opentelemetry/context-base" "^0.9.0"
semver "^7.1.3" semver "^7.1.3"
"@pmmmwh/react-refresh-webpack-plugin@0.4.2": "@pmmmwh/react-refresh-webpack-plugin@0.4.2":
@ -5405,6 +5397,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8"
integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==
"@types/node@^16.3.2":
version "16.4.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.13.tgz#7dfd9c14661edc65cccd43a29eb454174642370d"
integrity sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@ -6619,11 +6616,16 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
array-flatten@^2.1.0, array-flatten@^2.1.2: array-flatten@^2.1.0:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-flatten@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541"
integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==
array-includes@^3.1.1: array-includes@^3.1.1:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
@ -8407,11 +8409,6 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
crypto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037"
integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==
css-blank-pseudo@^0.1.4: css-blank-pseudo@^0.1.4:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5"
@ -11136,15 +11133,15 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1, hoist-non-react-
dependencies: dependencies:
react-is "^16.7.0" react-is "^16.7.0"
honeycomb-beeline@^2.2.0: honeycomb-beeline@^2.7.4:
version "2.2.0" version "2.7.4"
resolved "https://registry.yarnpkg.com/honeycomb-beeline/-/honeycomb-beeline-2.2.0.tgz#b7e258721e178d9c904e6a0af6c81349e784d445" resolved "https://registry.yarnpkg.com/honeycomb-beeline/-/honeycomb-beeline-2.7.4.tgz#57651f2896c59ab76a3f4d1a6238e698dad759d7"
integrity sha512-dNQQr94xqJ6lwUkceSLompDs0ntOoGa4fKIxidu8+FijArwVzOpUc1L5BKY0nZRV7LIyUZkvOML22czuGXCHsw== integrity sha512-vNcpfqEHJczAK6sy7MUMKoXVnURJrR/N7fuw3X0OCbq1y4EY4AVUHA+vxBTYFMf0gruEgGcErinKRUUIQwm9jQ==
dependencies: dependencies:
"@opentelemetry/core" "^0.9.0" "@opentelemetry/core" "^0.18.0"
array-flatten "^2.1.2" "@types/node" "^16.3.2"
crypto "^1.0.1" array-flatten "^3.0.0"
debug "^4.1.1" debug "^4.2.0"
libhoney "^2.2.1" libhoney "^2.2.1"
on-headers "^1.0.2" on-headers "^1.0.2"
shimmer "^1.2.1" shimmer "^1.2.1"