@turnipxenon/pineapple 2.4.4 → 2.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +18 -13
- package/.svelte-kit/__package__/app.postcss +14 -0
- package/.svelte-kit/__package__/index.d.ts +3 -0
- package/.svelte-kit/__package__/index.js +4 -0
- package/.svelte-kit/__package__/postcss.d.ts +3 -0
- package/.svelte-kit/__package__/template/SeaweedTemplate.svelte +7 -3
- package/.svelte-kit/generated/server/internal.js +1 -1
- package/.svelte-kit/output/client/.vite/manifest.json +26 -26
- package/.svelte-kit/output/client/_app/immutable/assets/{0.BIZ0IPOt.css → 0.CIpy7FrR.css} +1 -1
- package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css +1 -0
- package/.svelte-kit/output/client/_app/immutable/assets/{_layout.m4xJvVt-.css → _layout.h10Yaexo.css} +1 -1
- package/.svelte-kit/output/client/_app/immutable/chunks/{PineappleBaseLayout.SSm4gITf.js → PineappleBaseLayout.DLo8Eik6.js} +1 -1
- package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js +98 -0
- package/.svelte-kit/output/client/_app/immutable/chunks/{entry.CQQG-dzn.js → entry.D3rPVCbo.js} +2 -2
- package/.svelte-kit/output/client/_app/immutable/chunks/{store.CzGlMZaJ.js → store.BIqnj0vd.js} +1 -1
- package/.svelte-kit/output/client/_app/immutable/entry/{app.oi3PnWPJ.js → app.D9IQm5uC.js} +2 -2
- package/.svelte-kit/output/client/_app/immutable/entry/start.VRG2KCMZ.js +1 -0
- package/.svelte-kit/output/client/_app/immutable/nodes/{2.B9XiR3AU.js → 2.DnP1Yfj1.js} +1 -1
- package/.svelte-kit/output/client/_app/immutable/nodes/{3.DFl_-mE9.js → 3.BPIP4PcD.js} +1 -1
- package/.svelte-kit/output/client/_app/immutable/nodes/5.PabxfGcD.js +1 -0
- package/.svelte-kit/output/client/_app/immutable/nodes/{6.drIpFDQq.js → 6.D3Ze_9sQ.js} +1 -1
- package/.svelte-kit/output/client/_app/version.json +1 -1
- package/.svelte-kit/output/prerendered/pages/portfolio.html +76 -76
- package/.svelte-kit/output/server/.vite/manifest.json +2 -2
- package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css +1 -0
- package/.svelte-kit/output/server/_app/immutable/assets/{_layout.m4xJvVt-.css → _layout.h10Yaexo.css} +1 -1
- package/.svelte-kit/output/server/chunks/SeaweedTemplate.js +74 -81
- package/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/.svelte-kit/output/server/entries/pages/portfolio/_page.svelte.js +1 -1
- package/.svelte-kit/output/server/manifest-full.js +1 -1
- package/.svelte-kit/output/server/manifest.js +1 -1
- package/.svelte-kit/output/server/nodes/0.js +2 -2
- package/.svelte-kit/output/server/nodes/2.js +1 -1
- package/.svelte-kit/output/server/nodes/3.js +1 -1
- package/.svelte-kit/output/server/nodes/5.js +2 -2
- package/.svelte-kit/output/server/nodes/6.js +2 -2
- package/dist/app.postcss +14 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/postcss.d.ts +3 -0
- package/dist/template/SeaweedTemplate.svelte +7 -3
- package/package.json +1 -1
- package/src/lib/app.postcss +14 -0
- package/src/lib/index.ts +9 -0
- package/src/lib/postcss.d.ts +3 -0
- package/src/lib/template/SeaweedTemplate.svelte +7 -3
- package/src/routes/portfolio/+page.svelte +1 -1
- package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css +0 -1
- package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.BmvpbSLb.js +0 -98
- package/.svelte-kit/output/client/_app/immutable/entry/start.Dazgoa1N.js +0 -1
- package/.svelte-kit/output/client/_app/immutable/nodes/5.YVruzYx6.js +0 -1
- package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css +0 -1
- /package/.svelte-kit/output/client/_app/immutable/nodes/{0.Bay8_8oq.js → 0.5ibwyEBM.js} +0 -0
|
@@ -303,7 +303,7 @@ const WeaverFootage = "/_app/immutable/assets/weaver-footage.sjDEbkrX.gif";
|
|
|
303
303
|
const WindowSetGraph = "/_app/immutable/assets/window-set.IpgsYUna.png";
|
|
304
304
|
const ThisWebsiteFootage = "/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4";
|
|
305
305
|
const css = {
|
|
306
|
-
code: "main.svelte-
|
|
306
|
+
code: "main.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100%;overflow:visible;display:flex;flex-direction:column;justify-content:center;align-items:center}h1.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:2em}h2.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:1.5em}.section-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:3em;max-width:800px}.game-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.project-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100vw;max-width:36em;margin-bottom:3em}.game-card.svelte-f3i6qg>video.svelte-f3i6qg.svelte-f3i6qg{border-top-left-radius:1em;border-top-right-radius:1em;max-height:24em;width:100%;-o-object-fit:cover;object-fit:cover}#migrante-alberta.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.game-card.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg,.project-card.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg{border-top-left-radius:1em;border-top-right-radius:1em}#migrante-alberta.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100%;-o-object-fit:cover;object-fit:cover}.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled{cursor:not-allowed;opacity:0.5}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;border-radius:var(--theme-rounded-base)}.game-button.svelte-f3i6qg>.svelte-f3i6qg:not([hidden])~.svelte-f3i6qg:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg{max-height:1lh}.two-column-separated.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;justify-content:space-between}.more-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:1em}.greater-about-div.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-direction:column;max-width:36em}.experience-and-about-div.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;gap:2em;flex-wrap:wrap;justify-content:center;align-items:flex-start}.game-card-body.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.project-card-body.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:1em}.game-card-body.svelte-f3i6qg>blockquote.svelte-f3i6qg.svelte-f3i6qg{margin-bottom:0.7lh}.game-card-body.svelte-f3i6qg>h1.svelte-f3i6qg.svelte-f3i6qg,.project-card-body.svelte-f3i6qg>h2.svelte-f3i6qg.svelte-f3i6qg{text-align:center}.game-link-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-direction:row;justify-content:center;gap:1em;margin-top:1em}.games-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.projects-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-wrap:wrap;gap:2em;justify-content:center}.projects-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{align-items:flex-start}.long-btn-image.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{max-height:1lh}.itch-promo.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:4em}#hepcat-video.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{-o-object-position:0 0;object-position:0 0}.title-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:clamp(360px, 80vw, 800px)}[class*='qt-'].svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-weight:var(--qt-font-weight)}.accordion-header.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{margin-top:0.25em}",
|
|
307
307
|
map: null
|
|
308
308
|
};
|
|
309
309
|
let additionalFontWeight = "";
|
|
@@ -369,17 +369,17 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
|
|
|
369
369
|
visibility: ${mainVisibility};
|
|
370
370
|
`,
|
|
371
371
|
0
|
|
372
|
-
)} class="svelte-
|
|
372
|
+
)} class="svelte-f3i6qg"><div class="experience-and-about-div svelte-f3i6qg"><div class="greater-about-div svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
373
373
|
content: () => {
|
|
374
|
-
return `<section class="section-card svelte-
|
|
374
|
+
return `<section class="section-card svelte-f3i6qg" slot="content"> <h1 class="svelte-f3i6qg" data-svelte-h="svelte-soqi9t">About</h1> <p class="svelte-f3i6qg">Hi! My name is ${escape(name)}! I work as a software developer. Outside of that, I like making games, and
|
|
375
375
|
trying to do everything in between required to make one. I have some showcased below, our visit
|
|
376
|
-
my itch.io page for more of them.</p> <p class="svelte-
|
|
377
|
-
certificate in Computer Game Development at University of Alberta.</p> <p class="svelte-
|
|
376
|
+
my itch.io page for more of them.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1htq5b8">I also graduated with BS Computing Science, Specializing in Software Practice, and a
|
|
377
|
+
certificate in Computer Game Development at University of Alberta.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1tjf6ho">I'm inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
|
|
378
378
|
Bravely Default: Flying Fairy, Boku no Natsuyasumi 2, and A Short Hike.</p> </section>`;
|
|
379
379
|
}
|
|
380
380
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
381
381
|
content: () => {
|
|
382
|
-
return `<section class="section-card svelte-
|
|
382
|
+
return `<section class="section-card svelte-f3i6qg" slot="content">${validate_component(SocialSection, "SocialSection").$$render($$result, { email, linkedinSlug }, {}, {})} ${validate_component(ElementVisbilityDetector, "ElementVisbilityDetector").$$render(
|
|
383
383
|
$$result,
|
|
384
384
|
{ isVisible },
|
|
385
385
|
{
|
|
@@ -393,90 +393,83 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
|
|
|
393
393
|
}
|
|
394
394
|
})}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
395
395
|
content: () => {
|
|
396
|
-
return `<section class="section-card svelte-
|
|
396
|
+
return `<section class="section-card svelte-f3i6qg" slot="content"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-1r6ig88">Experience</h1> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-a3jo9c">Software Engineer</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-psdxr0"><div class="svelte-f3i6qg">July 2023 – January 2024</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch, Remote</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1k94u2s"><li class="svelte-f3i6qg">Contributed to <span class="qt-go svelte-f3i6qg">Golang</span> and <span class="qt-ts svelte-f3i6qg">Typescript</span> codebases,
|
|
397
397
|
across several teams, to accommodate adjustments for public-facing user safety related features, to better
|
|
398
|
-
comply with EU’s <a target="_blank" href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act/europe-fit-digital-age-new-online-rules-platforms_en" class="svelte-
|
|
399
|
-
documentation</li> <li class="svelte-
|
|
398
|
+
comply with EU’s <a target="_blank" href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act/europe-fit-digital-age-new-online-rules-platforms_en" class="svelte-f3i6qg">Digital Services Act</a>, also including feature flags, alarms, unit tests, end-to-end testing, and
|
|
399
|
+
documentation</li> <li class="svelte-f3i6qg">Improved observability for upcoming features by setting up new <span class="qt-aws qt-infra svelte-f3i6qg">AWS</span>
|
|
400
400
|
resources to integrate internal data platform tools with existing alarms in our team’s microservice,
|
|
401
|
-
utilizing <span class="qt-aws qt-infra svelte-
|
|
402
|
-
while adhering to best practices for <span class="qt-aws qt-infra svelte-
|
|
403
|
-
message types at different volumes that can be easily extended to target different chat services</li> <li class="svelte-
|
|
404
|
-
service with business logic written in <span class="qt-go svelte-
|
|
405
|
-
<span class="qt-infra qt-aws svelte-
|
|
406
|
-
, defined in <span class="qt-ts svelte-
|
|
401
|
+
utilizing <span class="qt-aws qt-infra svelte-f3i6qg">Cloudwatch</span> and <span class="qt-aws qt-infra svelte-f3i6qg">Kinesis Data Stream</span>,
|
|
402
|
+
while adhering to best practices for <span class="qt-aws qt-infra svelte-f3i6qg">AWS CDK</span> (infrastructure as code)</li></ul> <br class="svelte-f3i6qg"> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-cx1fi3"><div class="svelte-f3i6qg">May 2022 – Aug 2022</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch, San Francisco</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1coh9hk"><li class="svelte-f3i6qg">Built a <span class="qt-infra svelte-f3i6qg">load testing service</span> that can be configured to generate different
|
|
403
|
+
message types at different volumes that can be easily extended to target different chat services</li> <li class="svelte-f3i6qg">Used Twitch’s set of custom tools, including Twitch’s custom RPC protocol, to create a backend
|
|
404
|
+
service with business logic written in <span class="qt-go svelte-f3i6qg">Go</span> and cloud infrastructure utilizing
|
|
405
|
+
<span class="qt-infra qt-aws svelte-f3i6qg">ECS on Fargate, Cloudwatch, and DynamoDB</span>
|
|
406
|
+
, defined in <span class="qt-ts svelte-f3i6qg">Typescript</span>-flavored CDK</li> <li class="svelte-f3i6qg">Wrote a technical specification document for the service’s MVP and possible future features, and
|
|
407
407
|
additional documentation on how to use the service and how to extend the load testing service to include
|
|
408
|
-
new services to test</li></ul> <br class="svelte-
|
|
408
|
+
new services to test</li></ul> <br class="svelte-f3i6qg"> ${validate_component(Accordion, "Accordion").$$render($$result, {}, {}, {
|
|
409
409
|
default: () => {
|
|
410
|
-
return `${validate_component(AccordionItem, "AccordionItem").$$render(
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
class: "variant-filled-primary rounded-md"
|
|
414
|
-
},
|
|
415
|
-
{},
|
|
416
|
-
{
|
|
417
|
-
content: () => {
|
|
418
|
-
return `<section class="more-section svelte-1olxn2g">${!letChaos ? `<h2 class="svelte-1olxn2g" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-b9eewq"><div class="svelte-1olxn2g">May 2021 – Dec 2021</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch / Amazon Web Services Canada, Remote</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-oswc7z"><li class="svelte-1olxn2g">Implemented and wrote tests for a feature in Twitch’s backend authentication
|
|
410
|
+
return `${validate_component(AccordionItem, "AccordionItem").$$render($$result, {}, {}, {
|
|
411
|
+
content: () => {
|
|
412
|
+
return `<section class="more-section svelte-f3i6qg">${!letChaos ? `<h2 class="svelte-f3i6qg" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-b9eewq"><div class="svelte-f3i6qg">May 2021 – Dec 2021</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch / Amazon Web Services Canada, Remote</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-oswc7z"><li class="svelte-f3i6qg">Implemented and wrote tests for a feature in Twitch’s backend authentication
|
|
419
413
|
systems and frontend web application that will help suggest security improvements to
|
|
420
|
-
over hundreds of thousands of users daily</li> <li class="svelte-
|
|
421
|
-
the codebase</li></ul>` : `niko baikal seal from toba aquarium`} <br class="svelte-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
}
|
|
414
|
+
over hundreds of thousands of users daily</li> <li class="svelte-f3i6qg">Learned <span class="qt-go svelte-f3i6qg">Go</span>, <span class="qt-ts svelte-f3i6qg">Typescript</span>, <span class="qt-react svelte-f3i6qg">React</span>, and other new technologies on the go to contribute to
|
|
415
|
+
the codebase</li></ul>` : `niko baikal seal from toba aquarium`} <br class="svelte-f3i6qg"></section> `;
|
|
416
|
+
},
|
|
417
|
+
summary: () => {
|
|
418
|
+
return `<div slot="summary" class="svelte-f3i6qg" data-svelte-h="svelte-jx0pzv"><h2 class="accordion-header svelte-f3i6qg">More experience</h2></div>`;
|
|
426
419
|
}
|
|
427
|
-
)}`;
|
|
420
|
+
})}`;
|
|
428
421
|
}
|
|
429
422
|
})}</section>`;
|
|
430
423
|
}
|
|
431
424
|
})}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
432
425
|
content: () => {
|
|
433
|
-
return `<div class="section-card title-card svelte-
|
|
426
|
+
return `<div class="section-card title-card svelte-f3i6qg" slot="content" data-svelte-h="svelte-o20xib"><h1 class="text-center svelte-f3i6qg">Games</h1></div>`;
|
|
434
427
|
}
|
|
435
|
-
})} <section class="games-section svelte-
|
|
428
|
+
})} <section class="games-section svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
436
429
|
content: () => {
|
|
437
|
-
return `<section class="game-card svelte-
|
|
430
|
+
return `<section class="game-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-18m3p75">video unavailable. original video contains pengi gameplay showing the dynamic dialog
|
|
438
431
|
layout and character animation.
|
|
439
|
-
<source${add_attribute("src", HeaderPengi, 0)} type="video/mp4" class="svelte-
|
|
440
|
-
money...</blockquote> <p class="svelte-
|
|
441
|
-
programmer for the team. Most of the work revolves around UI and creating <a href="https://yarnspinner.dev/" target="_blank" class="svelte-
|
|
442
|
-
to use to create expressive stage directions in the script.</p> <section class="game-link-section svelte-
|
|
432
|
+
<source${add_attribute("src", HeaderPengi, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-kn1e7n">Pengi</h1> <blockquote class="svelte-f3i6qg" data-svelte-h="svelte-l5674o">Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
|
|
433
|
+
money...</blockquote> <p class="svelte-f3i6qg" data-svelte-h="svelte-1wwm72v">Pengi is a text-based adventure made in <span class="qt-unity svelte-f3i6qg">Unity</span>. I acted as the sole
|
|
434
|
+
programmer for the team. Most of the work revolves around UI and creating <a href="https://yarnspinner.dev/" target="_blank" class="svelte-f3i6qg">YarnSpinner</a> commands for writers
|
|
435
|
+
to use to create expressive stage directions in the script.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/GreenTea-M/ProjectPengi" data-svelte-h="svelte-y5jd5x"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://turnipxenon.itch.io/pengi" data-svelte-h="svelte-18q5lws"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
|
|
443
436
|
}
|
|
444
437
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
445
438
|
content: () => {
|
|
446
|
-
return `<section class="game-card svelte-
|
|
439
|
+
return `<section class="game-card svelte-f3i6qg" slot="content"> <video playsinline autoplay muted loop preload="none" id="hepcat-video" class="svelte-f3i6qg" data-svelte-h="svelte-11xid74"><source${add_attribute("src", HeaderHepCat, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-1iabfbj">Hepcat</h1> <blockquote class="svelte-f3i6qg" data-svelte-h="svelte-1sm2zx2">"Cats, Jazz, and a little bit of Death. What more could anyone ask for?"</blockquote> <p class="svelte-f3i6qg" data-svelte-h="svelte-hwmnnf">This is a course project made by a team of six for <a href="https://sites.google.com/ualberta.ca/cmput250/" class="svelte-f3i6qg">CMPUT 250</a>, and it won <a href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/" class="svelte-f3i6qg">Game of the year.</a></p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1k65o8o">Hep Cat is a rhythm game made in <a href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker svelte-f3i6qg">RPG Maker MV</a> with the help of additional custom-made <span class="qt-js svelte-f3i6qg">Javascript</span> plugins. I
|
|
447
440
|
wrote the rhythm game plugin's framework. For this plugin to work, I
|
|
448
|
-
had to write a <span class="qt-python svelte-
|
|
449
|
-
files.</p> <section class="game-link-section svelte-
|
|
441
|
+
had to write a <span class="qt-python svelte-f3i6qg">Python</span> script that parses osu! files into readable JSON
|
|
442
|
+
files.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://bitbucket.org/egginchicken/hep-cat/src/master/" data-svelte-h="svelte-kqolxp"><img alt="bitbucket icon"${add_attribute("src", BitbucketIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://just-a-phantom.itch.io/hep-cat" data-svelte-h="svelte-85ytls"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
|
|
450
443
|
}
|
|
451
444
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
452
445
|
content: () => {
|
|
453
|
-
return `<section class="game-card svelte-
|
|
454
|
-
them to cook for customers and then critics!</p> <p class="svelte-
|
|
455
|
-
system that extends <span class="qt-unity svelte-
|
|
446
|
+
return `<section class="game-card svelte-f3i6qg" slot="content"><img${add_attribute("src", HeaderChefWings, 0)} alt="todo" loading="lazy" class="svelte-f3i6qg"> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-u3x25k">Chef Wings</h1> <p class="svelte-f3i6qg" data-svelte-h="svelte-1gm838l">A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
|
|
447
|
+
them to cook for customers and then critics!</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1vp4je5">I built and documented several of the game’s systems including the game state management
|
|
448
|
+
system that extends <span class="qt-unity svelte-f3i6qg">Unity’s</span> existing Monobehavior lifecycle with new events,
|
|
456
449
|
and the dialogue, event, and level systems that coordinate the game flow using the interactive
|
|
457
|
-
dialogue tool YarnSpinner</p> <section class="game-link-section svelte-
|
|
450
|
+
dialogue tool YarnSpinner</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-1sy1yh1"><img alt="itch.io icon"${add_attribute("src", LinkIcon, 0)} class="svelte-f3i6qg"> <span class="svelte-f3i6qg">selk.io/birb-project/trunk/</span></button></section></section></section>`;
|
|
458
451
|
}
|
|
459
452
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
460
453
|
content: () => {
|
|
461
|
-
return `<section class="game-card svelte-
|
|
454
|
+
return `<section class="game-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-1k9edyw"><source${add_attribute("src", HeaderSoulwork, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-2ce69i">Soulwork</h1> <p class="svelte-f3i6qg" data-svelte-h="svelte-v85h17">Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
|
|
462
455
|
This project is a Time to Game Jam entry, restricting game development to be under 48
|
|
463
|
-
hours.</p> <p class="svelte-
|
|
456
|
+
hours.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1ulwzoi">I helped make the level designing tools used by the designers to drag-and-drop objects
|
|
464
457
|
on the stage. I also helped program the unique physics-based gameplay mechanic. This was
|
|
465
|
-
was made in <span class="qt-unity svelte-
|
|
458
|
+
was made in <span class="qt-unity svelte-f3i6qg">Unity</span> written using <span class="qt-cs svelte-f3i6qg">C#</span>.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/Zeyu-Li/Clockwork" data-svelte-h="svelte-pzpykb"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331" data-svelte-h="svelte-bvl96c"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
|
|
466
459
|
}
|
|
467
460
|
})} ${validate_component(Card, "Card").$$render($$result, { overrideStyle: "align-self: flex-start;" }, {}, {
|
|
468
461
|
content: () => {
|
|
469
|
-
return `<section class="game-card itch-promo svelte-
|
|
462
|
+
return `<section class="game-card itch-promo svelte-f3i6qg" slot="content"><h1 class="mb-12 text-center svelte-f3i6qg" data-svelte-h="svelte-10vk3r5">Check out my itch.io page for more games</h1> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" role="link" title="https://turnipxenon.itch.io/" data-svelte-h="svelte-mamccr"><img${add_attribute("src", ItchLogoHotLink, 0)} class="long-btn-image svelte-f3i6qg" alt="itch icon"> <span class="svelte-f3i6qg">TurnipXenon</span></button></section></section>`;
|
|
470
463
|
}
|
|
471
464
|
})}</section> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
472
465
|
content: () => {
|
|
473
|
-
return `<section class="section-card title-card svelte-
|
|
466
|
+
return `<section class="section-card title-card svelte-f3i6qg" slot="content" data-svelte-h="svelte-49ylrm"><h1 class="text-center svelte-f3i6qg">Projects</h1></section>`;
|
|
474
467
|
}
|
|
475
|
-
})} <section class="projects-section svelte-
|
|
468
|
+
})} <section class="projects-section svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
476
469
|
content: () => {
|
|
477
|
-
return `<section class="project-card svelte-
|
|
470
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><iframe id="migrante-alberta" width="560" height="315" src="https://www.youtube.com/embed/ZemWwf8jh8E?si=RZwSfYHI-0Ael-RE" title="YouTube video player" style="border: none" allowfullscreen class="svelte-f3i6qg"></iframe> <div class="project-card-body svelte-f3i6qg"> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-1eni4fk">Migrante Alberta</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1smwex7">We developed a mobile-first cross-platform application to be used by the Canadian-based
|
|
478
471
|
Filipino non-profit advocacy group, Migrante Alberta, to help new immigrants navigate
|
|
479
|
-
through local services and events</p> <p class="svelte-
|
|
472
|
+
through local services and events</p> <p class="svelte-f3i6qg">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
|
|
480
473
|
default: () => {
|
|
481
474
|
return `Flutter`;
|
|
482
475
|
}
|
|
@@ -504,60 +497,60 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
|
|
|
504
497
|
default: () => {
|
|
505
498
|
return `Postgresql`;
|
|
506
499
|
}
|
|
507
|
-
})}</p> <section class="game-link-section svelte-
|
|
500
|
+
})}</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-121dvtq"><img${add_attribute("src", LinkIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="itch icon"> <span class="svelte-f3i6qg">cmput401.ca</span></button></section></div></section>`;
|
|
508
501
|
}
|
|
509
502
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
510
503
|
content: () => {
|
|
511
|
-
return `<section class="project-card svelte-
|
|
512
|
-
<span class="qt-js svelte-
|
|
504
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1ir48d3">Decentralized social media</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-bywg41">We made a full stack decentralized social media app made with <span class="qt-react svelte-f3i6qg">React</span> +
|
|
505
|
+
<span class="qt-js svelte-f3i6qg">Javascript</span> for the client code, <span class="qt-django svelte-f3i6qg">Django</span> + <span class="qt-python svelte-f3i6qg">Python</span> for the backend code, and <span class="qt-heroku svelte-f3i6qg">Heroku</span> for
|
|
513
506
|
deployment. This project was made
|
|
514
507
|
for
|
|
515
|
-
our Web Applications and Architecture class.</p> <p class="svelte-
|
|
508
|
+
our Web Applications and Architecture class.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1mg86zd">The application can connect with three other decentralized social media app in the same class:</p> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1ltib2n"><li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-14" target="_blank" class="svelte-f3i6qg">Also
|
|
516
509
|
a social media with the same Django + Python backend server where they act on behalf of
|
|
517
|
-
our users interacting with theirs</a></li> <li class="svelte-
|
|
518
|
-
social media that uses Fast API + Python for their backend server</a></li> <li class="svelte-
|
|
510
|
+
our users interacting with theirs</a></li> <li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-7" target="_blank" class="svelte-f3i6qg">A
|
|
511
|
+
social media that uses Fast API + Python for their backend server</a></li> <li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-12" target="_blank" class="svelte-f3i6qg">Another
|
|
519
512
|
social media that has Django + Python for their backend but we have to act on behalf of
|
|
520
513
|
our
|
|
521
|
-
users interacting with their users</a></li></ul> <section class="game-link-section svelte-
|
|
514
|
+
users interacting with their users</a></li></ul> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/hgshah/cmput404-project" data-svelte-h="svelte-cv2gah"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-f3i6qg"></button></section></div></section>`;
|
|
522
515
|
}
|
|
523
516
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
524
517
|
content: () => {
|
|
525
|
-
return `<section class="project-card svelte-
|
|
518
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"${add_attribute("src", WeaverFootage, 0)} class="svelte-f3i6qg"> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1tprdy5">Customized Yarnspinner interpreter and dialog runner</h2>
|
|
526
519
|
|
|
527
|
-
A custom dialog interpreter, written in <span class="qt-ts svelte-
|
|
528
|
-
transpiles custom Yarnspinner dialog into a <span class="qt-ts svelte-
|
|
520
|
+
A custom dialog interpreter, written in <span class="qt-ts svelte-f3i6qg" data-svelte-h="svelte-o30c37">Typescript</span>, that tokenizes then
|
|
521
|
+
transpiles custom Yarnspinner dialog into a <span class="qt-ts svelte-f3i6qg" data-svelte-h="svelte-o30c37">Typescript</span> file. The said files can
|
|
529
522
|
be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
|
|
530
|
-
custom-flavor of YarnSpinner dialogs on <span class="qt-svelte svelte-
|
|
523
|
+
custom-flavor of YarnSpinner dialogs on <span class="qt-svelte svelte-f3i6qg" data-svelte-h="svelte-19momqd">Svelte</span>.
|
|
531
524
|
|
|
532
|
-
<section class="game-link-section svelte-
|
|
525
|
+
<section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md" data-svelte-h="svelte-7o1iz5"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-f3i6qg"></button></section></div></section>`;
|
|
533
526
|
}
|
|
534
527
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
535
528
|
content: () => {
|
|
536
|
-
return `<section class="project-card svelte-
|
|
529
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1g6x1gh">Full-stack <span class="qt-c svelte-f3i6qg">C</span> app</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1m2910f">A terminal-based app consisting of a server observing several terminal apps all concurrently
|
|
537
530
|
sending updates to the server, which then broadcasts these information concurrently to all the
|
|
538
|
-
other terminal apps connected.</p> <p class="svelte-
|
|
539
|
-
mutexes, and <span class="qt-foundation svelte-
|
|
531
|
+
other terminal apps connected.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-2glnqi">The project involves <span class="qt-foundation svelte-f3i6qg">multiprocessing</span> programming featuring pthreads and
|
|
532
|
+
mutexes, and <span class="qt-foundation svelte-f3i6qg">networking</span> via sockets.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md" data-svelte-h="svelte-ytnfwd"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
|
|
540
533
|
}
|
|
541
534
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
542
535
|
content: () => {
|
|
543
|
-
return `<section class="project-card svelte-
|
|
536
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><img alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
|
|
544
537
|
time goes by. The trend appears to look like a damping harmonic motion that does not go below the zero line. More
|
|
545
538
|
details include the data size being 200000 entries, each data point skips 1060174 data points, with a
|
|
546
|
-
page size of 4096 bytes, and window size of 100000 bytes."${add_attribute("src", WindowSetGraph, 0)} class="svelte-
|
|
539
|
+
page size of 4096 bytes, and window size of 100000 bytes."${add_attribute("src", WindowSetGraph, 0)} class="svelte-f3i6qg"> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1owlizc">Working set simulation</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-h0uhw2">A <span class="qt-c svelte-f3i6qg">C</span> program that simulates the working set model based on the output of memory
|
|
547
540
|
addresses
|
|
548
|
-
<span class="qt-valgrind svelte-
|
|
549
|
-
implemented using a nested hashmap <span class="qt-foundation svelte-
|
|
541
|
+
<span class="qt-valgrind svelte-f3i6qg">valgrind</span> detects as being accessed by a program being ran. It's
|
|
542
|
+
implemented using a nested hashmap <span class="qt-foundation svelte-f3i6qg">data structure</span> implemented from
|
|
550
543
|
scratch. The working set is the collection of memory pages referenced by a program within a certain time
|
|
551
|
-
frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span class="qt-foundation svelte-
|
|
552
|
-
size, page size, and their input size.</p> <section class="game-link-section svelte-
|
|
544
|
+
frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span class="qt-foundation svelte-f3i6qg">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
|
|
545
|
+
size, page size, and their input size.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf" data-svelte-h="svelte-5rpf8h"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"> <span class="svelte-f3i6qg">Benchmark report</span></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md" data-svelte-h="svelte-1vbe2nk"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"> <span class="svelte-f3i6qg">Design</span></button></section></div></section>`;
|
|
553
546
|
}
|
|
554
547
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
555
548
|
content: () => {
|
|
556
|
-
return `<section class="project-card svelte-
|
|
549
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-m5p9b7"><source${add_attribute("src", ThisWebsiteFootage, 0)} type="video/mp4" class="svelte-f3i6qg">
|
|
557
550
|
video unavailable. original video contains clips of this website being resized and light-dark mode being
|
|
558
|
-
toggled.</video> <div class="project-card-body svelte-
|
|
551
|
+
toggled.</video> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-5puumm">This webpage!</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1te9sdx">The webpage is made of two parts. The webpage that has the content for everything here, I've
|
|
559
552
|
lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I
|
|
560
|
-
want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.</p> <p class="svelte-
|
|
553
|
+
want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.</p> <p class="svelte-f3i6qg">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
|
|
561
554
|
default: () => {
|
|
562
555
|
return `Svelte`;
|
|
563
556
|
}
|
|
@@ -577,12 +570,12 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
|
|
|
577
570
|
default: () => {
|
|
578
571
|
return `YarnSpinner`;
|
|
579
572
|
}
|
|
580
|
-
})}</p> <section class="game-link-section svelte-
|
|
573
|
+
})}</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/pineapple" data-svelte-h="svelte-4dm4xx"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
|
|
581
574
|
}
|
|
582
575
|
})} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
|
|
583
576
|
content: () => {
|
|
584
|
-
return `<section class="project-card svelte-
|
|
585
|
-
code and added instrumented tests that are tested by the continuous integration tool <span class="qt-infra svelte-
|
|
577
|
+
return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1vw6xk1">Mock Uber App</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1n8bpk7">A course project app meant to emulate how Uber works by playing with <span class="qt-google svelte-f3i6qg">Google Maps API</span>.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1ob0wfp">I implemented all interfaces related to the NoSQL cloud database <span class="qt-firebase qt-google qt-infra svelte-f3i6qg">Firebase</span>, making writing code easier for other programmers (<span class="qt-android svelte-f3i6qg">Android</span> / <span class="qt-java svelte-f3i6qg">Java</span>). I also wrote documentation to said
|
|
578
|
+
code and added instrumented tests that are tested by the continuous integration tool <span class="qt-infra svelte-f3i6qg">Travis CI</span>, ensuring that our code is tested</p> <section class="game-link-section svelte-f3i6qg"> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/CMPUT301W20T10/UberApp" data-svelte-h="svelte-9lexjr"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
|
|
586
579
|
}
|
|
587
580
|
})}</section></main>`;
|
|
588
581
|
}
|
|
@@ -221,7 +221,7 @@ const options = {
|
|
|
221
221
|
<div class="error">
|
|
222
222
|
<span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
|
|
223
223
|
},
|
|
224
|
-
version_hash: "
|
|
224
|
+
version_hash: "1fsx49j"
|
|
225
225
|
};
|
|
226
226
|
async function get_hooks() {
|
|
227
227
|
return {};
|
|
@@ -5,7 +5,7 @@ const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
|
|
5
5
|
let { metaWebsite = "https://www.crouton.com/test/portfolio-base-layout" } = $$props;
|
|
6
6
|
if ($$props.metaWebsite === void 0 && $$bindings.metaWebsite && metaWebsite !== void 0)
|
|
7
7
|
$$bindings.metaWebsite(metaWebsite);
|
|
8
|
-
return `${$$result.head += `<!-- HEAD_svelte-9y1u9g_START --><meta charset="utf-8">${$$result.title = `<title>Welcome to my portfolio</title>`, ""}<meta name="twitter:card" content="summary"><meta property="og:url"${add_attribute("content", metaWebsite, 0)}><meta property="og:title" content="Turnip"><meta property="og:description" content="Welcome to Turnip's test portfolio website"><meta property="og:image"${add_attribute("content", WebThumbnailImage, 0)}><!-- HEAD_svelte-9y1u9g_END -->`, ""}
|
|
8
|
+
return `${$$result.head += `<!-- HEAD_svelte-9y1u9g_START --><meta charset="utf-8">${$$result.title = `<title>Welcome to my portfolio</title>`, ""}<meta name="twitter:card" content="summary"><meta property="og:url"${add_attribute("content", metaWebsite, 0)}><meta property="og:title" content="Turnip"><meta property="og:description" content="Welcome to Turnip's test portfolio website"><meta property="og:image"${add_attribute("content", WebThumbnailImage, 0)}><!-- HEAD_svelte-9y1u9g_END -->`, ""} ${validate_component(SeaweedTemplate, "SeaweedTemplate").$$render($$result, { letChaos: false }, {}, {})}`;
|
|
9
9
|
});
|
|
10
10
|
export {
|
|
11
11
|
Page as default
|
|
@@ -10,7 +10,7 @@ return {
|
|
|
10
10
|
assets: new Set(["default-card.png","favicon.png","robots.txt"]),
|
|
11
11
|
mimeTypes: {".png":"image/png",".txt":"text/plain"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {"start":"_app/immutable/entry/start.
|
|
13
|
+
client: {"start":"_app/immutable/entry/start.VRG2KCMZ.js","app":"_app/immutable/entry/app.D9IQm5uC.js","imports":["_app/immutable/entry/start.VRG2KCMZ.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.D9IQm5uC.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
|
|
14
14
|
nodes: [
|
|
15
15
|
__memo(() => import('./nodes/0.js')),
|
|
16
16
|
__memo(() => import('./nodes/1.js')),
|
|
@@ -10,7 +10,7 @@ return {
|
|
|
10
10
|
assets: new Set(["default-card.png","favicon.png","robots.txt"]),
|
|
11
11
|
mimeTypes: {".png":"image/png",".txt":"text/plain"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {"start":"_app/immutable/entry/start.
|
|
13
|
+
client: {"start":"_app/immutable/entry/start.VRG2KCMZ.js","app":"_app/immutable/entry/app.D9IQm5uC.js","imports":["_app/immutable/entry/start.VRG2KCMZ.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.D9IQm5uC.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
|
|
14
14
|
nodes: [
|
|
15
15
|
__memo(() => import('./nodes/0.js')),
|
|
16
16
|
__memo(() => import('./nodes/1.js')),
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 0;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/0.
|
|
7
|
-
export const stylesheets = ["_app/immutable/assets/0.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/0.5ibwyEBM.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js"];
|
|
7
|
+
export const stylesheets = ["_app/immutable/assets/0.CIpy7FrR.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 2;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/personal/_layout.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/2.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/2.DnP1Yfj1.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/PineappleBaseLayout.DLo8Eik6.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/public.kPGcNb8-.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css","_app/immutable/assets/store.y2fRW0z7.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 3;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/3.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/3.BPIP4PcD.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/public.kPGcNb8-.js","_app/immutable/chunks/PineappleBaseLayout.DLo8Eik6.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js"];
|
|
7
7
|
export const stylesheets = ["_app/immutable/assets/4.B8rxJaIe.css","_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css","_app/immutable/assets/store.y2fRW0z7.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
|
|
8
8
|
export const fonts = [];
|
|
@@ -5,6 +5,6 @@ let component_cache;
|
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/portfolio/_page.svelte.js')).default;
|
|
6
6
|
export { server };
|
|
7
7
|
export const server_id = "src/routes/portfolio/+page.server.ts";
|
|
8
|
-
export const imports = ["_app/immutable/nodes/5.
|
|
9
|
-
export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.
|
|
8
|
+
export const imports = ["_app/immutable/nodes/5.PabxfGcD.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
|
|
9
|
+
export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
|
|
10
10
|
export const fonts = [];
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
export const index = 6;
|
|
4
4
|
let component_cache;
|
|
5
5
|
export const component = async () => component_cache ??= (await import('../entries/pages/portfolio/actual/_page.svelte.js')).default;
|
|
6
|
-
export const imports = ["_app/immutable/nodes/6.
|
|
7
|
-
export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.
|
|
6
|
+
export const imports = ["_app/immutable/nodes/6.D3Ze_9sQ.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
|
|
7
|
+
export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
|
|
8
8
|
export const fonts = [];
|
package/dist/app.postcss
CHANGED
|
@@ -151,3 +151,17 @@ a:active {
|
|
|
151
151
|
.dark a:active {
|
|
152
152
|
color: rgb(var(--color-secondary-100));
|
|
153
153
|
}
|
|
154
|
+
|
|
155
|
+
/* region Accordion css for handling missing styles in package */
|
|
156
|
+
.accordion {
|
|
157
|
+
@apply variant-filled-primary rounded-md;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.accordion-control {
|
|
161
|
+
@apply hover:bg-surface-hover-token;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.accordion-item {
|
|
165
|
+
@apply variant-filled-primary rounded-md;
|
|
166
|
+
}
|
|
167
|
+
/* endregion Accordion css for handling missing styles in package */
|
package/dist/index.d.ts
CHANGED
|
@@ -7,3 +7,6 @@ export * from "./components/dialog_manager/DialogUtils";
|
|
|
7
7
|
export * from "./types/pineapple_fiber/PortraitType";
|
|
8
8
|
export * from "./types/pineapple_fiber/DialogDetail";
|
|
9
9
|
export * from "./util/stable_random";
|
|
10
|
+
import AppPostCSS from "./app.postcss";
|
|
11
|
+
import ThemePostCSS from "./theme.postcss";
|
|
12
|
+
export { AppPostCSS, ThemePostCSS };
|
package/dist/index.js
CHANGED
|
@@ -7,3 +7,7 @@ export * from "./components/dialog_manager/DialogUtils";
|
|
|
7
7
|
export * from "./types/pineapple_fiber/PortraitType";
|
|
8
8
|
export * from "./types/pineapple_fiber/DialogDetail";
|
|
9
9
|
export * from "./util/stable_random";
|
|
10
|
+
// from https://stackoverflow.com/a/74799312/17836168
|
|
11
|
+
import AppPostCSS from "./app.postcss";
|
|
12
|
+
import ThemePostCSS from "./theme.postcss";
|
|
13
|
+
export { AppPostCSS, ThemePostCSS };
|
|
@@ -209,10 +209,10 @@ $:
|
|
|
209
209
|
</ul>
|
|
210
210
|
<br>
|
|
211
211
|
<!-- todo: turn off flashing when accordion is expanded -->
|
|
212
|
-
<Accordion
|
|
213
|
-
<AccordionItem
|
|
212
|
+
<Accordion>
|
|
213
|
+
<AccordionItem>
|
|
214
214
|
<div slot="summary">
|
|
215
|
-
<h2 class="
|
|
215
|
+
<h2 class="accordion-header">More experience</h2>
|
|
216
216
|
</div>
|
|
217
217
|
<svelte:fragment slot="content">
|
|
218
218
|
<section class="more-section">
|
|
@@ -904,4 +904,8 @@ $:
|
|
|
904
904
|
[class*='qt-'] {
|
|
905
905
|
font-weight: var(--qt-font-weight);
|
|
906
906
|
}
|
|
907
|
+
|
|
908
|
+
.accordion-header {
|
|
909
|
+
margin-top: 0.25em;
|
|
910
|
+
}
|
|
907
911
|
</style>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turnipxenon/pineapple",
|
|
3
3
|
"description": "personal package for base styling for other personal projects",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.6",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "vite dev",
|
|
7
7
|
"build": "npm run check-requirements && vite build && yarn package",
|