@turnipxenon/pineapple 2.2.1 → 2.4.1

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.
Files changed (752) hide show
  1. package/.env +5 -0
  2. package/.eslintignore +16 -0
  3. package/.eslintrc.cjs +20 -0
  4. package/.gitignore +14 -0
  5. package/.idea/.gitignore +5 -0
  6. package/.idea/codeStyles/Project.xml +65 -0
  7. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  8. package/.idea/discord.xml +7 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +22 -0
  10. package/.idea/modules.xml +8 -0
  11. package/.idea/pineapple.iml +14 -0
  12. package/.idea/vcs.xml +6 -0
  13. package/.idea/workspace.xml +658 -0
  14. package/.npmrc +1 -0
  15. package/.prettierignore +17 -0
  16. package/.prettierrc +9 -0
  17. package/.svelte-kit/__package__/app.postcss +153 -0
  18. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_ares.png +0 -0
  19. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_corn.png +0 -0
  20. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
  21. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
  22. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_tomato.png +0 -0
  23. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_turnip.png +0 -0
  24. package/.svelte-kit/__package__/assets/characters/ares/ares_blushing.webp +0 -0
  25. package/.svelte-kit/__package__/assets/characters/ares/ares_disappointed.webp +0 -0
  26. package/.svelte-kit/__package__/assets/characters/ares/ares_happy.webp +0 -0
  27. package/.svelte-kit/__package__/assets/characters/ares/ares_lets_go.webp +0 -0
  28. package/.svelte-kit/__package__/assets/characters/ares/ares_logo.webp +0 -0
  29. package/.svelte-kit/__package__/assets/characters/ares/ares_mad.webp +0 -0
  30. package/.svelte-kit/__package__/assets/characters/ares/ares_neutral.webp +0 -0
  31. package/.svelte-kit/__package__/assets/characters/ares/ares_slightly_mad.webp +0 -0
  32. package/.svelte-kit/__package__/assets/characters/ares/ares_surprised.webp +0 -0
  33. package/.svelte-kit/__package__/assets/characters/ares/ares_yay.webp +0 -0
  34. package/.svelte-kit/__package__/assets/game_dev/footage-chef-wings.gif +0 -0
  35. package/.svelte-kit/__package__/assets/game_dev/footage-depreciation.webm +0 -0
  36. package/.svelte-kit/__package__/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
  37. package/.svelte-kit/__package__/assets/game_dev/screenshot-game-jam-mama.png +0 -0
  38. package/.svelte-kit/__package__/assets/game_dev/screenshot-string-hop.png +0 -0
  39. package/.svelte-kit/__package__/assets/game_dev/screenshot-wet-ass-road.png +0 -0
  40. package/.svelte-kit/__package__/assets/icons/bitbucket-icon.svg +1 -0
  41. package/.svelte-kit/__package__/assets/icons/chat-cursor.svg +47 -0
  42. package/.svelte-kit/__package__/assets/icons/external-link.svg +50 -0
  43. package/.svelte-kit/__package__/assets/icons/github-mark.svg +1 -0
  44. package/.svelte-kit/__package__/assets/icons/link-icon.svg +1 -0
  45. package/.svelte-kit/__package__/assets/icons/linkedin.svg +1 -0
  46. package/.svelte-kit/__package__/assets/icons/mail.svg +1 -0
  47. package/.svelte-kit/__package__/assets/others/seaweed-showcase.mp4 +0 -0
  48. package/.svelte-kit/__package__/assets/others/weaver-footage.gif +0 -0
  49. package/.svelte-kit/__package__/assets/others/window-set.png +0 -0
  50. package/.svelte-kit/__package__/assets/placeholder/placeholder_circle.png +0 -0
  51. package/.svelte-kit/__package__/assets/temp/background-image.jpg +0 -0
  52. package/.svelte-kit/__package__/assets/temp/bitbucket-logo.png +0 -0
  53. package/.svelte-kit/__package__/assets/temp/github-logo.png +0 -0
  54. package/.svelte-kit/__package__/assets/temp/header-hep-cat.mp4 +0 -0
  55. package/.svelte-kit/__package__/assets/temp/header-hep-cat.ogg +0 -0
  56. package/.svelte-kit/__package__/assets/temp/header-hep-cat.webm +0 -0
  57. package/.svelte-kit/__package__/assets/temp/header-pengi.mp4 +0 -0
  58. package/.svelte-kit/__package__/assets/temp/header-pengi.webm +0 -0
  59. package/.svelte-kit/__package__/assets/temp/header-soulwork.mp4 +0 -0
  60. package/.svelte-kit/__package__/assets/temp/header-soulwork.ogg +0 -0
  61. package/.svelte-kit/__package__/assets/temp/header-soulwork.webm +0 -0
  62. package/.svelte-kit/__package__/components/Card.svelte +31 -0
  63. package/.svelte-kit/__package__/components/Card.svelte.d.ts +35 -0
  64. package/.svelte-kit/__package__/components/CarouselElement.svelte +21 -0
  65. package/.svelte-kit/__package__/components/CarouselElement.svelte.d.ts +19 -0
  66. package/.svelte-kit/__package__/components/Chip.svelte +12 -0
  67. package/.svelte-kit/__package__/components/Chip.svelte.d.ts +27 -0
  68. package/.svelte-kit/__package__/components/DialogOverlay.svelte +95 -0
  69. package/.svelte-kit/__package__/components/DialogOverlay.svelte.d.ts +14 -0
  70. package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte +18 -0
  71. package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte.d.ts +18 -0
  72. package/.svelte-kit/__package__/components/LazyAsset.svelte +96 -0
  73. package/.svelte-kit/__package__/components/LazyAsset.svelte.d.ts +20 -0
  74. package/.svelte-kit/__package__/components/LazyAssetType.d.ts +10 -0
  75. package/.svelte-kit/__package__/components/LazyAssetType.js +12 -0
  76. package/.svelte-kit/__package__/components/OnElementVisbilityChanged.d.ts +1 -0
  77. package/.svelte-kit/__package__/components/OnElementVisbilityChanged.js +1 -0
  78. package/.svelte-kit/__package__/components/RandomizedBackground.svelte +64 -0
  79. package/.svelte-kit/__package__/components/RandomizedBackground.svelte.d.ts +16 -0
  80. package/.svelte-kit/__package__/components/RandomizedImage.svelte +37 -0
  81. package/.svelte-kit/__package__/components/RandomizedImage.svelte.d.ts +17 -0
  82. package/.svelte-kit/__package__/components/SocialSection.svelte +160 -0
  83. package/.svelte-kit/__package__/components/SocialSection.svelte.d.ts +29 -0
  84. package/.svelte-kit/__package__/components/StickyElement.svelte +36 -0
  85. package/.svelte-kit/__package__/components/StickyElement.svelte.d.ts +18 -0
  86. package/.svelte-kit/__package__/components/ToggleableContent.svelte +66 -0
  87. package/.svelte-kit/__package__/components/ToggleableContent.svelte.d.ts +19 -0
  88. package/.svelte-kit/__package__/components/ToggleableContentType.d.ts +4 -0
  89. package/.svelte-kit/__package__/components/ToggleableContentType.js +5 -0
  90. package/.svelte-kit/__package__/components/dialog_manager/DialogManager.d.ts +77 -0
  91. package/.svelte-kit/__package__/components/dialog_manager/DialogManager.js +239 -0
  92. package/.svelte-kit/__package__/components/dialog_manager/DialogManagerStore.d.ts +41 -0
  93. package/.svelte-kit/__package__/components/dialog_manager/DialogManagerStore.js +45 -0
  94. package/.svelte-kit/__package__/components/dialog_manager/DialogProcessor.d.ts +13 -0
  95. package/.svelte-kit/__package__/components/dialog_manager/DialogProcessor.js +62 -0
  96. package/.svelte-kit/__package__/components/dialog_manager/DialogUtils.d.ts +5 -0
  97. package/.svelte-kit/__package__/components/dialog_manager/DialogUtils.js +8 -0
  98. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +15 -0
  99. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BTreeUtils.js +34 -0
  100. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.d.ts +4 -0
  101. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.js +1 -0
  102. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorNode.d.ts +3 -0
  103. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorNode.js +1 -0
  104. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorStatus.d.ts +5 -0
  105. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorStatus.js +6 -0
  106. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/SelectorNode.d.ts +12 -0
  107. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/SelectorNode.js +22 -0
  108. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +5 -0
  109. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionArguments.js +1 -0
  110. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.d.ts +4 -0
  111. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.js +1 -0
  112. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +15 -0
  113. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +220 -0
  114. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionResult.d.ts +5 -0
  115. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionResult.js +1 -0
  116. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.d.ts +8 -0
  117. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.js +15 -0
  118. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionState.d.ts +3 -0
  119. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionState.js +1 -0
  120. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts +10 -0
  121. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperandNode.js +15 -0
  122. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperatorNode.d.ts +11 -0
  123. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperatorNode.js +30 -0
  124. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.d.ts +6 -0
  125. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.js +21 -0
  126. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.d.ts +9 -0
  127. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.js +19 -0
  128. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandMap.d.ts +9 -0
  129. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandMap.js +18 -0
  130. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.d.ts +15 -0
  131. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.js +24 -0
  132. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.d.ts +20 -0
  133. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.js +32 -0
  134. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts +13 -0
  135. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +25 -0
  136. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/AndOperator.d.ts +7 -0
  137. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/AndOperator.js +15 -0
  138. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.d.ts +7 -0
  139. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.js +14 -0
  140. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.d.ts +7 -0
  141. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.js +12 -0
  142. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.d.ts +7 -0
  143. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.js +12 -0
  144. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.d.ts +7 -0
  145. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.js +12 -0
  146. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.d.ts +7 -0
  147. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.js +12 -0
  148. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.d.ts +7 -0
  149. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.js +12 -0
  150. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.d.ts +7 -0
  151. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.js +13 -0
  152. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.d.ts +17 -0
  153. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.js +32 -0
  154. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.d.ts +9 -0
  155. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.js +47 -0
  156. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OrOperator.d.ts +7 -0
  157. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OrOperator.js +13 -0
  158. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/XorOperator.d.ts +7 -0
  159. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/XorOperator.js +17 -0
  160. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.d.ts +7 -0
  161. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.js +14 -0
  162. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.d.ts +7 -0
  163. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.js +14 -0
  164. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.d.ts +7 -0
  165. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.js +12 -0
  166. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.d.ts +7 -0
  167. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.js +14 -0
  168. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.d.ts +7 -0
  169. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.js +14 -0
  170. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.d.ts +4 -0
  171. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.js +1 -0
  172. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.d.ts +6 -0
  173. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.js +1 -0
  174. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +6 -0
  175. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.js +1 -0
  176. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.d.ts +8 -0
  177. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.js +15 -0
  178. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/BehaviorState.d.ts +5 -0
  179. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/BehaviorState.js +5 -0
  180. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.d.ts +11 -0
  181. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +53 -0
  182. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseNode.d.ts +11 -0
  183. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseNode.js +49 -0
  184. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/EndIfNode.d.ts +11 -0
  185. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/EndIfNode.js +23 -0
  186. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfMode.d.ts +6 -0
  187. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfMode.js +8 -0
  188. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts +12 -0
  189. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfNode.js +43 -0
  190. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.d.ts +11 -0
  191. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.js +25 -0
  192. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.d.ts +6 -0
  193. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.js +18 -0
  194. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.d.ts +6 -0
  195. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.js +17 -0
  196. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts +10 -0
  197. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +38 -0
  198. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts +11 -0
  199. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +31 -0
  200. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts +8 -0
  201. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +39 -0
  202. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +8 -0
  203. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +40 -0
  204. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts +9 -0
  205. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +28 -0
  206. package/.svelte-kit/__package__/components/layouts/LayoutConstants.d.ts +1 -0
  207. package/.svelte-kit/__package__/components/layouts/LayoutConstants.js +1 -0
  208. package/.svelte-kit/__package__/components/layouts/PineappleBaseLayout.svelte +189 -0
  209. package/.svelte-kit/__package__/components/layouts/PineappleBaseLayout.svelte.d.ts +18 -0
  210. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte +95 -0
  211. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte.d.ts +23 -0
  212. package/.svelte-kit/__package__/consts.d.ts +2 -0
  213. package/.svelte-kit/__package__/consts.js +2 -0
  214. package/.svelte-kit/__package__/index.d.ts +9 -0
  215. package/.svelte-kit/__package__/index.js +9 -0
  216. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.d.ts +1 -0
  217. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.js +41 -0
  218. package/.svelte-kit/__package__/scripts/pineapple_fiber/PineappleWeaver.d.ts +9 -0
  219. package/.svelte-kit/__package__/scripts/pineapple_fiber/PineappleWeaver.js +201 -0
  220. package/.svelte-kit/__package__/scripts/util/FileManagement.d.ts +7 -0
  221. package/.svelte-kit/__package__/scripts/util/FileManagement.js +35 -0
  222. package/.svelte-kit/__package__/scripts/util/ManualCheck.d.ts +1 -0
  223. package/.svelte-kit/__package__/scripts/util/ManualCheck.js +28 -0
  224. package/.svelte-kit/__package__/scripts/util/ManualCheckRun.d.ts +1 -0
  225. package/.svelte-kit/__package__/scripts/util/ManualCheckRun.js +6 -0
  226. package/.svelte-kit/__package__/store.d.ts +17 -0
  227. package/.svelte-kit/__package__/store.js +17 -0
  228. package/.svelte-kit/__package__/styles/DefaultGridContainer.css +61 -0
  229. package/.svelte-kit/__package__/styles/global.css +1 -0
  230. package/.svelte-kit/__package__/template/SeaweedTemplate.svelte +907 -0
  231. package/.svelte-kit/__package__/template/SeaweedTemplate.svelte.d.ts +19 -0
  232. package/.svelte-kit/__package__/theme.postcss +116 -0
  233. package/.svelte-kit/__package__/types/BlogBlurbMeta.d.ts +11 -0
  234. package/.svelte-kit/__package__/types/BlogBlurbMeta.js +16 -0
  235. package/.svelte-kit/__package__/types/BreadcrumbData.d.ts +4 -0
  236. package/.svelte-kit/__package__/types/BreadcrumbData.js +1 -0
  237. package/.svelte-kit/__package__/types/pineapple_fiber/DialogDetail.d.ts +6 -0
  238. package/.svelte-kit/__package__/types/pineapple_fiber/DialogDetail.js +1 -0
  239. package/.svelte-kit/__package__/types/pineapple_fiber/DialogState.d.ts +5 -0
  240. package/.svelte-kit/__package__/types/pineapple_fiber/DialogState.js +6 -0
  241. package/.svelte-kit/__package__/types/pineapple_fiber/DialogVariableStore.d.ts +2 -0
  242. package/.svelte-kit/__package__/types/pineapple_fiber/DialogVariableStore.js +20 -0
  243. package/.svelte-kit/__package__/types/pineapple_fiber/PortraitType.d.ts +11 -0
  244. package/.svelte-kit/__package__/types/pineapple_fiber/PortraitType.js +12 -0
  245. package/.svelte-kit/__package__/util/create_go_to_function.d.ts +1 -0
  246. package/.svelte-kit/__package__/util/create_go_to_function.js +5 -0
  247. package/.svelte-kit/__package__/util/stable_random.d.ts +2 -0
  248. package/.svelte-kit/__package__/util/stable_random.js +15 -0
  249. package/.svelte-kit/ambient.d.ts +398 -0
  250. package/.svelte-kit/generated/client/app.js +28 -0
  251. package/.svelte-kit/generated/client/matchers.js +1 -0
  252. package/.svelte-kit/generated/client/nodes/0.js +1 -0
  253. package/.svelte-kit/generated/client/nodes/1.js +1 -0
  254. package/.svelte-kit/generated/client/nodes/2.js +1 -0
  255. package/.svelte-kit/generated/client/nodes/3.js +1 -0
  256. package/.svelte-kit/generated/client/nodes/4.js +1 -0
  257. package/.svelte-kit/generated/client/nodes/5.js +1 -0
  258. package/.svelte-kit/generated/client/nodes/6.js +1 -0
  259. package/.svelte-kit/generated/client-optimized/app.js +28 -0
  260. package/.svelte-kit/generated/client-optimized/matchers.js +1 -0
  261. package/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
  262. package/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
  263. package/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
  264. package/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
  265. package/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
  266. package/.svelte-kit/generated/client-optimized/nodes/5.js +1 -0
  267. package/.svelte-kit/generated/client-optimized/nodes/6.js +1 -0
  268. package/.svelte-kit/generated/root.svelte +64 -0
  269. package/.svelte-kit/generated/server/internal.js +34 -0
  270. package/.svelte-kit/non-ambient.d.ts +25 -0
  271. package/.svelte-kit/output/client/.vite/manifest.json +360 -0
  272. package/.svelte-kit/output/client/_app/immutable/assets/0.B_SY1GJM.css +0 -0
  273. package/.svelte-kit/output/client/_app/immutable/assets/4.B8rxJaIe.css +1 -0
  274. package/.svelte-kit/output/client/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  275. package/.svelte-kit/output/client/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  276. package/.svelte-kit/output/client/_app/immutable/assets/ProgressBar.DmpmGWm6.css +1 -0
  277. package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.DNE9SdPz.css +1 -0
  278. package/.svelte-kit/output/client/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  279. package/.svelte-kit/output/client/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  280. package/.svelte-kit/output/client/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  281. package/.svelte-kit/output/client/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  282. package/.svelte-kit/output/client/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  283. package/.svelte-kit/output/client/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  284. package/.svelte-kit/output/client/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  285. package/.svelte-kit/output/client/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  286. package/.svelte-kit/output/client/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  287. package/.svelte-kit/output/client/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  288. package/.svelte-kit/output/client/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  289. package/.svelte-kit/output/client/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  290. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  291. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  292. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  293. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  294. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  295. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  296. package/.svelte-kit/output/client/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  297. package/.svelte-kit/output/client/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  298. package/.svelte-kit/output/client/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  299. package/.svelte-kit/output/client/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  300. package/.svelte-kit/output/client/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  301. package/.svelte-kit/output/client/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  302. package/.svelte-kit/output/client/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  303. package/.svelte-kit/output/client/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  304. package/.svelte-kit/output/client/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  305. package/.svelte-kit/output/client/_app/immutable/chunks/DialogManagerStore.CGTbGbVf.js +3 -0
  306. package/.svelte-kit/output/client/_app/immutable/chunks/PineappleBaseLayout.BEmcdUbJ.js +1 -0
  307. package/.svelte-kit/output/client/_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.CmgCUata.js +1 -0
  308. package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.Dn5ajBSa.js +98 -0
  309. package/.svelte-kit/output/client/_app/immutable/chunks/entry.DjOrlFF-.js +3 -0
  310. package/.svelte-kit/output/client/_app/immutable/chunks/index.CvmYViMX.js +1 -0
  311. package/.svelte-kit/output/client/_app/immutable/chunks/index.DcUpu3_h.js +4 -0
  312. package/.svelte-kit/output/client/_app/immutable/chunks/index.Duksw40K.js +1 -0
  313. package/.svelte-kit/output/client/_app/immutable/chunks/public.kPGcNb8-.js +1 -0
  314. package/.svelte-kit/output/client/_app/immutable/chunks/scheduler.DXwjFp5a.js +1 -0
  315. package/.svelte-kit/output/client/_app/immutable/chunks/store.lTf0RalW.js +1 -0
  316. package/.svelte-kit/output/client/_app/immutable/chunks/transitions.BzalH0R-.js +3 -0
  317. package/.svelte-kit/output/client/_app/immutable/entry/app.gjWLgY1c.js +7 -0
  318. package/.svelte-kit/output/client/_app/immutable/entry/start.D1fQHQ70.js +1 -0
  319. package/.svelte-kit/output/client/_app/immutable/nodes/0.Dp97myFE.js +1 -0
  320. package/.svelte-kit/output/client/_app/immutable/nodes/1.I7DMxkG1.js +4 -0
  321. package/.svelte-kit/output/client/_app/immutable/nodes/2.BDQ3d4fl.js +1 -0
  322. package/.svelte-kit/output/client/_app/immutable/nodes/3.IkK-Vp1t.js +1 -0
  323. package/.svelte-kit/output/client/_app/immutable/nodes/4.C0MZnSyC.js +1 -0
  324. package/.svelte-kit/output/client/_app/immutable/nodes/5.BjbBqeg5.js +1 -0
  325. package/.svelte-kit/output/client/_app/immutable/nodes/6.ifg4QDG7.js +1 -0
  326. package/.svelte-kit/output/client/_app/version.json +1 -0
  327. package/.svelte-kit/output/client/default-card.png +0 -0
  328. package/.svelte-kit/output/client/favicon.png +0 -0
  329. package/.svelte-kit/output/client/robots.txt +5 -0
  330. package/.svelte-kit/output/prerendered/dependencies/portfolio/__data.json +1 -0
  331. package/.svelte-kit/output/prerendered/pages/portfolio.html +225 -0
  332. package/.svelte-kit/output/server/.vite/manifest.json +324 -0
  333. package/.svelte-kit/output/server/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  334. package/.svelte-kit/output/server/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  335. package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.DNE9SdPz.css +1 -0
  336. package/.svelte-kit/output/server/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  337. package/.svelte-kit/output/server/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  338. package/.svelte-kit/output/server/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  339. package/.svelte-kit/output/server/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  340. package/.svelte-kit/output/server/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  341. package/.svelte-kit/output/server/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  342. package/.svelte-kit/output/server/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  343. package/.svelte-kit/output/server/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  344. package/.svelte-kit/output/server/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  345. package/.svelte-kit/output/server/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  346. package/.svelte-kit/output/server/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  347. package/.svelte-kit/output/server/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  348. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  349. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  350. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  351. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  352. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  353. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  354. package/.svelte-kit/output/server/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  355. package/.svelte-kit/output/server/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  356. package/.svelte-kit/output/server/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  357. package/.svelte-kit/output/server/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  358. package/.svelte-kit/output/server/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  359. package/.svelte-kit/output/server/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  360. package/.svelte-kit/output/server/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  361. package/.svelte-kit/output/server/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  362. package/.svelte-kit/output/server/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  363. package/.svelte-kit/output/server/chunks/DialogManagerStore.js +1269 -0
  364. package/.svelte-kit/output/server/chunks/PineappleBaseLayout.js +94 -0
  365. package/.svelte-kit/output/server/chunks/ProgressBar.svelte_svelte_type_style_lang.js +60 -0
  366. package/.svelte-kit/output/server/chunks/SeaweedTemplate.js +597 -0
  367. package/.svelte-kit/output/server/chunks/exports.js +200 -0
  368. package/.svelte-kit/output/server/chunks/index.js +52 -0
  369. package/.svelte-kit/output/server/chunks/index2.js +83 -0
  370. package/.svelte-kit/output/server/chunks/index3.js +7 -0
  371. package/.svelte-kit/output/server/chunks/internal.js +247 -0
  372. package/.svelte-kit/output/server/chunks/prod-ssr.js +6 -0
  373. package/.svelte-kit/output/server/chunks/public.js +4 -0
  374. package/.svelte-kit/output/server/chunks/ssr.js +308 -0
  375. package/.svelte-kit/output/server/chunks/store.js +292 -0
  376. package/.svelte-kit/output/server/entries/pages/_error.svelte.js +29 -0
  377. package/.svelte-kit/output/server/entries/pages/_layout.svelte.js +279 -0
  378. package/.svelte-kit/output/server/entries/pages/_page.svelte.js +18 -0
  379. package/.svelte-kit/output/server/entries/pages/personal/_layout.svelte.js +13 -0
  380. package/.svelte-kit/output/server/entries/pages/personal/_page.svelte.js +13 -0
  381. package/.svelte-kit/output/server/entries/pages/portfolio/_page.server.ts.js +8 -0
  382. package/.svelte-kit/output/server/entries/pages/portfolio/_page.svelte.js +12 -0
  383. package/.svelte-kit/output/server/entries/pages/portfolio/actual/_page.svelte.js +18 -0
  384. package/.svelte-kit/output/server/index.js +2955 -0
  385. package/.svelte-kit/output/server/internal.js +13 -0
  386. package/.svelte-kit/output/server/manifest-full.js +60 -0
  387. package/.svelte-kit/output/server/manifest.js +52 -0
  388. package/.svelte-kit/output/server/nodes/0.js +8 -0
  389. package/.svelte-kit/output/server/nodes/1.js +8 -0
  390. package/.svelte-kit/output/server/nodes/2.js +8 -0
  391. package/.svelte-kit/output/server/nodes/3.js +8 -0
  392. package/.svelte-kit/output/server/nodes/4.js +8 -0
  393. package/.svelte-kit/output/server/nodes/5.js +10 -0
  394. package/.svelte-kit/output/server/nodes/6.js +8 -0
  395. package/.svelte-kit/tsconfig.json +50 -0
  396. package/.svelte-kit/types/route_meta_data.json +8 -0
  397. package/.svelte-kit/types/src/routes/$types.d.ts +22 -0
  398. package/.svelte-kit/types/src/routes/personal/$types.d.ts +22 -0
  399. package/.svelte-kit/types/src/routes/portfolio/$types.d.ts +24 -0
  400. package/.svelte-kit/types/src/routes/portfolio/actual/$types.d.ts +17 -0
  401. package/.svelte-kit/types/src/routes/portfolio/proxy+page.server.ts +46 -0
  402. package/.svelte-kit/vercel-tmp/index.js +46 -0
  403. package/.svelte-kit/vercel-tmp/manifest.js +52 -0
  404. package/.vercel/output/config.json +34 -0
  405. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/DialogManagerStore.js +1269 -0
  406. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/PineappleBaseLayout.js +94 -0
  407. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/ProgressBar.svelte_svelte_type_style_lang.js +60 -0
  408. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/SeaweedTemplate.js +597 -0
  409. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/exports.js +200 -0
  410. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index.js +52 -0
  411. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index2.js +83 -0
  412. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index3.js +7 -0
  413. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/internal.js +247 -0
  414. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/prod-ssr.js +6 -0
  415. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/public.js +4 -0
  416. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/ssr.js +308 -0
  417. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/store.js +292 -0
  418. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_error.svelte.js +29 -0
  419. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_layout.svelte.js +279 -0
  420. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_page.svelte.js +18 -0
  421. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/personal/_layout.svelte.js +13 -0
  422. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/personal/_page.svelte.js +13 -0
  423. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/portfolio/actual/_page.svelte.js +18 -0
  424. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/index.js +2955 -0
  425. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/0.js +8 -0
  426. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/1.js +8 -0
  427. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/2.js +8 -0
  428. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/3.js +8 -0
  429. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/4.js +8 -0
  430. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/6.js +8 -0
  431. package/.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/index.js +46 -0
  432. package/.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/manifest.js +52 -0
  433. package/.vercel/output/functions/fn.func/.vc-config.json +6 -0
  434. package/.vercel/output/functions/fn.func/package.json +1 -0
  435. package/.vercel/output/static/_app/immutable/assets/0.B_SY1GJM.css +0 -0
  436. package/.vercel/output/static/_app/immutable/assets/4.B8rxJaIe.css +1 -0
  437. package/.vercel/output/static/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  438. package/.vercel/output/static/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  439. package/.vercel/output/static/_app/immutable/assets/ProgressBar.DmpmGWm6.css +1 -0
  440. package/.vercel/output/static/_app/immutable/assets/SeaweedTemplate.CjiLUExY.css +1 -0
  441. package/.vercel/output/static/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  442. package/.vercel/output/static/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  443. package/.vercel/output/static/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  444. package/.vercel/output/static/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  445. package/.vercel/output/static/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  446. package/.vercel/output/static/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  447. package/.vercel/output/static/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  448. package/.vercel/output/static/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  449. package/.vercel/output/static/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  450. package/.vercel/output/static/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  451. package/.vercel/output/static/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  452. package/.vercel/output/static/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  453. package/.vercel/output/static/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  454. package/.vercel/output/static/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  455. package/.vercel/output/static/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  456. package/.vercel/output/static/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  457. package/.vercel/output/static/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  458. package/.vercel/output/static/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  459. package/.vercel/output/static/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  460. package/.vercel/output/static/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  461. package/.vercel/output/static/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  462. package/.vercel/output/static/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  463. package/.vercel/output/static/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  464. package/.vercel/output/static/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  465. package/.vercel/output/static/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  466. package/.vercel/output/static/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  467. package/.vercel/output/static/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  468. package/.vercel/output/static/_app/immutable/chunks/DialogManagerStore.CGTbGbVf.js +3 -0
  469. package/.vercel/output/static/_app/immutable/chunks/PineappleBaseLayout.Juc0v1b7.js +1 -0
  470. package/.vercel/output/static/_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.CmgCUata.js +1 -0
  471. package/.vercel/output/static/_app/immutable/chunks/SeaweedTemplate.DS-Z3LcL.js +98 -0
  472. package/.vercel/output/static/_app/immutable/chunks/entry.BViziCKK.js +3 -0
  473. package/.vercel/output/static/_app/immutable/chunks/index.CvmYViMX.js +1 -0
  474. package/.vercel/output/static/_app/immutable/chunks/index.DcUpu3_h.js +4 -0
  475. package/.vercel/output/static/_app/immutable/chunks/index.Duksw40K.js +1 -0
  476. package/.vercel/output/static/_app/immutable/chunks/public.kPGcNb8-.js +1 -0
  477. package/.vercel/output/static/_app/immutable/chunks/scheduler.DXwjFp5a.js +1 -0
  478. package/.vercel/output/static/_app/immutable/chunks/store.D47Cl8J0.js +1 -0
  479. package/.vercel/output/static/_app/immutable/chunks/transitions.BzalH0R-.js +3 -0
  480. package/.vercel/output/static/_app/immutable/entry/app.hYBk6umV.js +7 -0
  481. package/.vercel/output/static/_app/immutable/entry/start.bPtW9zOj.js +1 -0
  482. package/.vercel/output/static/_app/immutable/nodes/0.Dp97myFE.js +1 -0
  483. package/.vercel/output/static/_app/immutable/nodes/1.I7DMxkG1.js +4 -0
  484. package/.vercel/output/static/_app/immutable/nodes/2.C7G9m2NJ.js +1 -0
  485. package/.vercel/output/static/_app/immutable/nodes/3.D9NOS4Wy.js +1 -0
  486. package/.vercel/output/static/_app/immutable/nodes/4.C0MZnSyC.js +1 -0
  487. package/.vercel/output/static/_app/immutable/nodes/5.ARW_iEad.js +1 -0
  488. package/.vercel/output/static/_app/immutable/nodes/6.CJVGAs6D.js +1 -0
  489. package/.vercel/output/static/_app/version.json +1 -0
  490. package/.vercel/output/static/default-card.png +0 -0
  491. package/.vercel/output/static/favicon.png +0 -0
  492. package/.vercel/output/static/portfolio/__data.json +1 -0
  493. package/.vercel/output/static/portfolio.html +225 -0
  494. package/.vercel/output/static/robots.txt +5 -0
  495. package/dev/.gitignore +1 -0
  496. package/dev/README.md +9 -0
  497. package/dev/repo_list.txt +1 -0
  498. package/dev/update_all_repos.sh +16 -0
  499. package/dist/app.postcss +153 -0
  500. package/dist/assets/bg_tiled/bg_tiled_ares.png +0 -0
  501. package/dist/assets/bg_tiled/bg_tiled_corn.png +0 -0
  502. package/dist/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
  503. package/dist/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
  504. package/dist/assets/bg_tiled/bg_tiled_tomato.png +0 -0
  505. package/dist/assets/bg_tiled/bg_tiled_turnip.png +0 -0
  506. package/dist/assets/characters/ares/ares_blushing.webp +0 -0
  507. package/dist/assets/characters/ares/ares_disappointed.webp +0 -0
  508. package/dist/assets/characters/ares/ares_happy.webp +0 -0
  509. package/dist/assets/characters/ares/ares_lets_go.webp +0 -0
  510. package/dist/assets/characters/ares/ares_logo.webp +0 -0
  511. package/dist/assets/characters/ares/ares_mad.webp +0 -0
  512. package/dist/assets/characters/ares/ares_neutral.webp +0 -0
  513. package/dist/assets/characters/ares/ares_slightly_mad.webp +0 -0
  514. package/dist/assets/characters/ares/ares_surprised.webp +0 -0
  515. package/dist/assets/characters/ares/ares_yay.webp +0 -0
  516. package/dist/assets/game_dev/footage-chef-wings.gif +0 -0
  517. package/dist/assets/game_dev/footage-depreciation.webm +0 -0
  518. package/dist/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
  519. package/dist/assets/game_dev/screenshot-game-jam-mama.png +0 -0
  520. package/dist/assets/game_dev/screenshot-string-hop.png +0 -0
  521. package/dist/assets/game_dev/screenshot-wet-ass-road.png +0 -0
  522. package/dist/assets/icons/bitbucket-icon.svg +1 -0
  523. package/dist/assets/icons/chat-cursor.svg +47 -0
  524. package/dist/assets/icons/external-link.svg +50 -0
  525. package/dist/assets/icons/github-mark.svg +1 -0
  526. package/dist/assets/icons/link-icon.svg +1 -0
  527. package/dist/assets/icons/linkedin.svg +1 -0
  528. package/dist/assets/icons/mail.svg +1 -0
  529. package/dist/assets/others/seaweed-showcase.mp4 +0 -0
  530. package/dist/assets/others/weaver-footage.gif +0 -0
  531. package/dist/assets/others/window-set.png +0 -0
  532. package/dist/assets/placeholder/placeholder_circle.png +0 -0
  533. package/dist/assets/temp/background-image.jpg +0 -0
  534. package/dist/assets/temp/bitbucket-logo.png +0 -0
  535. package/dist/assets/temp/github-logo.png +0 -0
  536. package/dist/assets/temp/header-hep-cat.mp4 +0 -0
  537. package/dist/assets/temp/header-hep-cat.ogg +0 -0
  538. package/dist/assets/temp/header-hep-cat.webm +0 -0
  539. package/dist/assets/temp/header-pengi.mp4 +0 -0
  540. package/dist/assets/temp/header-pengi.webm +0 -0
  541. package/dist/assets/temp/header-soulwork.mp4 +0 -0
  542. package/dist/assets/temp/header-soulwork.ogg +0 -0
  543. package/dist/assets/temp/header-soulwork.webm +0 -0
  544. package/dist/components/Card.svelte +31 -0
  545. package/dist/components/Card.svelte.d.ts +35 -0
  546. package/dist/components/CarouselElement.svelte +21 -0
  547. package/dist/components/CarouselElement.svelte.d.ts +19 -0
  548. package/dist/components/Chip.svelte +12 -0
  549. package/dist/components/Chip.svelte.d.ts +27 -0
  550. package/dist/components/DialogOverlay.svelte +95 -0
  551. package/dist/components/DialogOverlay.svelte.d.ts +14 -0
  552. package/dist/components/ElementVisbilityDetector.svelte +18 -0
  553. package/dist/components/ElementVisbilityDetector.svelte.d.ts +18 -0
  554. package/dist/components/LazyAsset.svelte +96 -0
  555. package/dist/components/LazyAsset.svelte.d.ts +20 -0
  556. package/dist/components/LazyAssetType.d.ts +10 -0
  557. package/dist/components/LazyAssetType.js +12 -0
  558. package/dist/components/OnElementVisbilityChanged.d.ts +1 -0
  559. package/dist/components/OnElementVisbilityChanged.js +1 -0
  560. package/dist/components/RandomizedBackground.svelte +64 -0
  561. package/dist/components/RandomizedBackground.svelte.d.ts +16 -0
  562. package/dist/components/RandomizedImage.svelte +37 -0
  563. package/dist/components/RandomizedImage.svelte.d.ts +17 -0
  564. package/dist/components/SocialSection.svelte +160 -0
  565. package/dist/components/SocialSection.svelte.d.ts +29 -0
  566. package/dist/components/StickyElement.svelte +36 -0
  567. package/dist/components/StickyElement.svelte.d.ts +18 -0
  568. package/dist/components/ToggleableContent.svelte +66 -0
  569. package/dist/components/ToggleableContent.svelte.d.ts +19 -0
  570. package/dist/components/ToggleableContentType.d.ts +4 -0
  571. package/dist/components/ToggleableContentType.js +5 -0
  572. package/dist/components/dialog_manager/DialogManager.d.ts +77 -0
  573. package/dist/components/dialog_manager/DialogManager.js +239 -0
  574. package/dist/components/dialog_manager/DialogManagerStore.d.ts +41 -0
  575. package/dist/components/dialog_manager/DialogManagerStore.js +45 -0
  576. package/dist/components/dialog_manager/DialogProcessor.d.ts +13 -0
  577. package/dist/components/dialog_manager/DialogProcessor.js +62 -0
  578. package/dist/components/dialog_manager/DialogUtils.d.ts +5 -0
  579. package/dist/components/dialog_manager/DialogUtils.js +8 -0
  580. package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +15 -0
  581. package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.js +34 -0
  582. package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.d.ts +4 -0
  583. package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.js +1 -0
  584. package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.d.ts +3 -0
  585. package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.js +1 -0
  586. package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.d.ts +5 -0
  587. package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.js +6 -0
  588. package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.d.ts +12 -0
  589. package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.js +22 -0
  590. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +5 -0
  591. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.js +1 -0
  592. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.d.ts +4 -0
  593. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.js +1 -0
  594. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +15 -0
  595. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +220 -0
  596. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.d.ts +5 -0
  597. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.js +1 -0
  598. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.d.ts +8 -0
  599. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.js +15 -0
  600. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.d.ts +3 -0
  601. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.js +1 -0
  602. package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts +10 -0
  603. package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.js +15 -0
  604. package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.d.ts +11 -0
  605. package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.js +30 -0
  606. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.d.ts +6 -0
  607. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.js +21 -0
  608. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.d.ts +9 -0
  609. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.js +19 -0
  610. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.d.ts +9 -0
  611. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.js +18 -0
  612. package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.d.ts +15 -0
  613. package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.js +24 -0
  614. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.d.ts +20 -0
  615. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.js +32 -0
  616. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts +13 -0
  617. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +25 -0
  618. package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.d.ts +7 -0
  619. package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.js +15 -0
  620. package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.d.ts +7 -0
  621. package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.js +14 -0
  622. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.d.ts +7 -0
  623. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.js +12 -0
  624. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.d.ts +7 -0
  625. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.js +12 -0
  626. package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.d.ts +7 -0
  627. package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.js +12 -0
  628. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.d.ts +7 -0
  629. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.js +12 -0
  630. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.d.ts +7 -0
  631. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.js +12 -0
  632. package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.d.ts +7 -0
  633. package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.js +13 -0
  634. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.d.ts +17 -0
  635. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.js +32 -0
  636. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.d.ts +9 -0
  637. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.js +47 -0
  638. package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.d.ts +7 -0
  639. package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.js +13 -0
  640. package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.d.ts +7 -0
  641. package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.js +17 -0
  642. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.d.ts +7 -0
  643. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.js +14 -0
  644. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.d.ts +7 -0
  645. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.js +14 -0
  646. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.d.ts +7 -0
  647. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.js +12 -0
  648. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.d.ts +7 -0
  649. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.js +14 -0
  650. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.d.ts +7 -0
  651. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.js +14 -0
  652. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.d.ts +4 -0
  653. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.js +1 -0
  654. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.d.ts +6 -0
  655. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.js +1 -0
  656. package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +6 -0
  657. package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.js +1 -0
  658. package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.d.ts +8 -0
  659. package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.js +15 -0
  660. package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.d.ts +5 -0
  661. package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.js +5 -0
  662. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.d.ts +11 -0
  663. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +53 -0
  664. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.d.ts +11 -0
  665. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.js +49 -0
  666. package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.d.ts +11 -0
  667. package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.js +23 -0
  668. package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.d.ts +6 -0
  669. package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.js +8 -0
  670. package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts +12 -0
  671. package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.js +43 -0
  672. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.d.ts +11 -0
  673. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.js +25 -0
  674. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.d.ts +6 -0
  675. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.js +18 -0
  676. package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.d.ts +6 -0
  677. package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.js +17 -0
  678. package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts +10 -0
  679. package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +38 -0
  680. package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts +11 -0
  681. package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +31 -0
  682. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts +8 -0
  683. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +39 -0
  684. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +8 -0
  685. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +40 -0
  686. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts +9 -0
  687. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +28 -0
  688. package/dist/components/layouts/LayoutConstants.d.ts +1 -0
  689. package/dist/components/layouts/LayoutConstants.js +1 -0
  690. package/dist/components/layouts/PineappleBaseLayout.svelte +189 -0
  691. package/dist/components/layouts/PineappleBaseLayout.svelte.d.ts +18 -0
  692. package/dist/components/layouts/SeaweedBaseLayout.svelte +95 -0
  693. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +23 -0
  694. package/dist/consts.d.ts +2 -0
  695. package/dist/consts.js +2 -0
  696. package/dist/index.d.ts +9 -0
  697. package/dist/index.js +9 -0
  698. package/dist/scripts/SetDefaultEnvironment.d.ts +1 -0
  699. package/dist/scripts/SetDefaultEnvironment.js +41 -0
  700. package/dist/scripts/pineapple_fiber/PineappleWeaver.d.ts +9 -0
  701. package/dist/scripts/pineapple_fiber/PineappleWeaver.js +201 -0
  702. package/dist/scripts/util/FileManagement.d.ts +7 -0
  703. package/dist/scripts/util/FileManagement.js +35 -0
  704. package/dist/scripts/util/ManualCheck.d.ts +1 -0
  705. package/dist/scripts/util/ManualCheck.js +28 -0
  706. package/dist/scripts/util/ManualCheckRun.d.ts +1 -0
  707. package/dist/scripts/util/ManualCheckRun.js +6 -0
  708. package/dist/store.d.ts +17 -0
  709. package/dist/store.js +17 -0
  710. package/dist/styles/DefaultGridContainer.css +61 -0
  711. package/dist/styles/global.css +1 -0
  712. package/dist/template/SeaweedTemplate.svelte +907 -0
  713. package/dist/template/SeaweedTemplate.svelte.d.ts +19 -0
  714. package/dist/theme.postcss +116 -0
  715. package/dist/types/BlogBlurbMeta.d.ts +11 -0
  716. package/dist/types/BlogBlurbMeta.js +16 -0
  717. package/dist/types/BreadcrumbData.d.ts +4 -0
  718. package/dist/types/BreadcrumbData.js +1 -0
  719. package/dist/types/pineapple_fiber/DialogDetail.d.ts +6 -0
  720. package/dist/types/pineapple_fiber/DialogDetail.js +1 -0
  721. package/dist/types/pineapple_fiber/DialogState.d.ts +5 -0
  722. package/dist/types/pineapple_fiber/DialogState.js +6 -0
  723. package/dist/types/pineapple_fiber/DialogVariableStore.d.ts +2 -0
  724. package/dist/types/pineapple_fiber/DialogVariableStore.js +20 -0
  725. package/dist/types/pineapple_fiber/PortraitType.d.ts +11 -0
  726. package/dist/types/pineapple_fiber/PortraitType.js +12 -0
  727. package/dist/util/create_go_to_function.d.ts +1 -0
  728. package/dist/util/create_go_to_function.js +5 -0
  729. package/dist/util/stable_random.d.ts +2 -0
  730. package/dist/util/stable_random.js +15 -0
  731. package/docs/GroupLazyLoad.md +34 -0
  732. package/docs/PineappleFiberSpec.md +356 -0
  733. package/docs/Workflow.md +5 -0
  734. package/docs/images/figure-ares-happy.png +0 -0
  735. package/docs/images/figure-yarn-spinner.png +0 -0
  736. package/package.json +16 -11
  737. package/postcss.config.cjs +6 -0
  738. package/src/lib/index.ts +1 -1
  739. package/src/lib/template/SeaweedTemplate.svelte +2 -1
  740. package/src/routes/portfolio/.gitignore +1 -0
  741. package/static/default-card.png +0 -0
  742. package/static/favicon.png +0 -0
  743. package/static/robots.txt +5 -0
  744. package/svelte.config.js +25 -0
  745. package/tailwind.config.ts +29 -0
  746. package/tsconfig.json +22 -0
  747. package/vite.config.ts +6 -0
  748. package/vite.config.ts.timestamp-1709797261217-7fe7973433269.mjs +10 -0
  749. package/vite.config.ts.timestamp-1709801575567-e7eed430338b.mjs +10 -0
  750. package/vite.config.ts.timestamp-1710003919548-e3e0deafd6ef6.mjs +10 -0
  751. package/yarn.lock +2797 -0
  752. /package/src/{routes/portfolio → lib/components}/SocialSection.svelte +0 -0
@@ -0,0 +1,907 @@
1
+ <script>import SocialSection from "../components/SocialSection.svelte";
2
+ export let letChaos = true;
3
+ export let name = "Turnip";
4
+ export let email = "turnipxenon@gmail.com";
5
+ export let linkedinSlug = "turnip-xenon";
6
+ import SeaweedBaseLayout from "../components/layouts/SeaweedBaseLayout.svelte";
7
+ import { Accordion, AccordionItem, getModalStore } from "@skeletonlabs/skeleton";
8
+ import { ItchLogoHotLink } from "../consts";
9
+ import { page } from "$app/stores";
10
+ import Card from "../components/Card.svelte";
11
+ import Chip from "../components/Chip.svelte";
12
+ import { onMount } from "svelte";
13
+ import HeaderPengi from "../assets/temp/header-pengi.mp4";
14
+ import HeaderSoulwork from "../assets/temp/header-soulwork.mp4";
15
+ import HeaderHepCat from "../assets/temp/header-hep-cat.mp4";
16
+ import HeaderChefWings from "../assets/game_dev/footage-chef-wings.gif";
17
+ import ElementVisbilityDetector from "../components/ElementVisbilityDetector.svelte";
18
+ import GithubIcon from "../assets/icons/github-mark.svg";
19
+ import BitbucketIcon from "../assets/icons/bitbucket-icon.svg";
20
+ import LinkIcon from "../assets/icons/link-icon.svg";
21
+ import WeaverFootage from "../assets/others/weaver-footage.gif";
22
+ import WindowSetGraph from "../assets/others/window-set.png";
23
+ import ThisWebsiteFootage from "../assets/others/seaweed-showcase.mp4";
24
+ const modalStore = getModalStore();
25
+ let isVisible = true;
26
+ $:
27
+ isSocialsGone = !isVisible;
28
+ const chefWingsWarning = {
29
+ type: "confirm",
30
+ title: "Warning: please confirm",
31
+ body: `This will directly link to the game itself, since this game does not have any game page or any publicly viewable source code. The game is only playable on desktop. Are you sure you wish to proceed? If there are any bugs, please report at <a href='mailto:${email}' target='_blank'>${email}</a>.`,
32
+ response: (r) => {
33
+ if (r) {
34
+ window.open("https://selk.io/birb-project/trunk/");
35
+ }
36
+ }
37
+ };
38
+ const cmput401Info = {
39
+ type: "confirm",
40
+ title: "Information",
41
+ body: `As a full disclosure, this link will lead you to <a href='https://cmput401.ca/projects/e5b13586-09c7-4ddd-baf6-fdb078d23398' target='_blank'>https://cmput401.ca/projects/e5b13586-09c7-4ddd-baf6-fdb078d23398</a>. We currently don't have any tests yet ensuring that the link is correct. Click confirm to go to the site. Please report any bugs at <a href='mailto:${email}' target='_blank'>${email}</a>.`,
42
+ response: (r) => {
43
+ if (r) {
44
+ window.open("https://selk.io/birb-project/trunk/");
45
+ }
46
+ }
47
+ };
48
+ let qtfontWeight = "normal";
49
+ let additionalFontWeight = "";
50
+ const filterSearchParams = (searchParams) => {
51
+ const qtValue = searchParams.get("qt")?.trim();
52
+ if (qtValue === void 0) {
53
+ qtfontWeight = "bold";
54
+ return;
55
+ }
56
+ qtfontWeight = "normal";
57
+ const dynamicStyle = qtValue.split(",").map((term) => {
58
+ return `span.qt-${term} { font-weight: bold !important; }`;
59
+ }).join("\n");
60
+ const style = document.createElement("style");
61
+ style.type = "text/css";
62
+ style.innerText = dynamicStyle;
63
+ document.head.appendChild(style);
64
+ };
65
+ const chaoticWordBank = ["niko", "toba", "seal", "aquarium", "ojisan", "baikal"];
66
+ let chaosDone = false;
67
+ const runChaos = (node) => {
68
+ for (let child of Array.from(node.children)) {
69
+ if (child.nodeType === Node.ELEMENT_NODE) {
70
+ runChaos(child);
71
+ for (const childOfChild of child.childNodes) {
72
+ if (childOfChild.nodeType === Node.TEXT_NODE && childOfChild.textContent?.trim()) {
73
+ const max = childOfChild.textContent.length;
74
+ childOfChild.textContent = "";
75
+ while (childOfChild.textContent.length < max) {
76
+ childOfChild.textContent += chaoticWordBank[Math.floor(Math.random() * chaoticWordBank.length)] + " ";
77
+ }
78
+ }
79
+ }
80
+ if (child.hasAttribute("href")) {
81
+ child.setAttribute("href", "https://crouton.net/");
82
+ }
83
+ if (child.hasAttribute("src") && !child.hasAttribute("aria-hidden")) {
84
+ if (child.hasAttribute("alt")) {
85
+ child.setAttribute("src", "https://p.potaufeu.asahi.com/a2b9-p/picture/21583312/5c3310aec77068e24844c663aa62b37c.jpg");
86
+ } else {
87
+ child.setAttribute("src", "https://video.twimg.com/ext_tw_video/1318728494256410624/pu/vid/640x360/TMklz6hiTkQu3xhn.mp4");
88
+ child.setAttribute("muted", "true");
89
+ }
90
+ }
91
+ if (child.tagName.trim() === "VIDEO") {
92
+ child.setAttribute("src", "https://video.twimg.com/ext_tw_video/1318728494256410624/pu/vid/640x360/TMklz6hiTkQu3xhn.mp4");
93
+ child.setAttribute("muted", "true");
94
+ }
95
+ if (child.tagName.trim() === "BUTTON") {
96
+ child.setAttribute("disabled", "true");
97
+ }
98
+ }
99
+ }
100
+ };
101
+ onMount(() => {
102
+ if (!letChaos && $page.url.searchParams) {
103
+ filterSearchParams($page.url.searchParams);
104
+ }
105
+ if (letChaos) {
106
+ runChaos(document.body);
107
+ chaosDone = true;
108
+ }
109
+ });
110
+ let mainVisibility = "visible";
111
+ $:
112
+ mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
113
+ </script>
114
+
115
+ <SeaweedBaseLayout bind:shouldDisplayLeadingIcons={isSocialsGone}>
116
+ <!-- todo: limit main size to 1080 px? -->
117
+ <main style={`
118
+ --qt-font-weight: ${qtfontWeight};${additionalFontWeight};
119
+ visibility: ${mainVisibility};
120
+ `}>
121
+
122
+ <div class="experience-and-about-div">
123
+
124
+ <div class="greater-about-div">
125
+
126
+ <Card>
127
+ <section class="section-card" slot="content">
128
+ <!-- <ToggleableContent toggle={ToggleableContentType.Gibberish}>-->
129
+
130
+ <h1>About</h1>
131
+
132
+ <p>
133
+ Hi! My name is {name}! I work as a software developer. Outside of that, I like making games, and
134
+ trying to do everything in between required to make one. I have some showcased below, our visit
135
+ my itch.io page for more of them.
136
+ </p>
137
+ <!-- todo: link the degree details idk -->
138
+ <p>
139
+ I also graduated with BS Computing Science, Specializing in Software Practice, and a
140
+ certificate in Computer Game Development at University of Alberta.
141
+ </p>
142
+ <p>
143
+ I'm inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
144
+ Bravely Default: Flying Fairy, Boku no Natsuyasumi 2, and A Short Hike.
145
+ </p>
146
+
147
+ <!-- todo: maybe put cute stuff here -->
148
+ <!-- </ToggleableContent>-->
149
+ </section>
150
+ </Card>
151
+
152
+ <Card>
153
+ <section class="section-card" slot="content">
154
+ <SocialSection email={email} linkedinSlug={linkedinSlug}></SocialSection>
155
+ <ElementVisbilityDetector bind:isVisible={isVisible}>
156
+ </ElementVisbilityDetector>
157
+ </section>
158
+ </Card>
159
+
160
+ </div>
161
+
162
+ <Card>
163
+ <section class="section-card" slot="content">
164
+ <h1>Experience</h1>
165
+
166
+ <h2>Software Engineer</h2>
167
+ <div class="two-column-separated">
168
+ <div>July 2023 – January 2024</div>
169
+ <div style="text-align: end">Twitch, Remote</div>
170
+ </div>
171
+ <ul>
172
+ <li>Contributed to <span class="qt-go">Golang</span> and <span class="qt-ts">Typescript</span> codebases,
173
+ across several teams, to accommodate adjustments for public-facing user safety related features, to better
174
+ comply with EU’s <a target="_blank"
175
+ 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">
176
+ Digital Services Act</a>, also including feature flags, alarms, unit tests, end-to-end testing, and
177
+ documentation
178
+ </li>
179
+ <li>Improved observability for upcoming features by setting up new <span class="qt-aws qt-infra">AWS</span>
180
+ resources to integrate internal data platform tools with existing alarms in our team’s microservice,
181
+ utilizing <span class="qt-aws qt-infra">Cloudwatch</span> and <span class="qt-aws qt-infra">Kinesis Data Stream</span>,
182
+ while adhering to best practices for <span class="qt-aws qt-infra">AWS CDK</span> (infrastructure as code)
183
+ </li>
184
+ </ul>
185
+ <br>
186
+
187
+ <h2>Software Engineer Intern</h2>
188
+ <div class="two-column-separated">
189
+ <div>May 2022 – Aug 2022</div>
190
+ <div style="text-align: end">Twitch, San Francisco</div>
191
+ </div>
192
+ <ul>
193
+ <li>
194
+ Built a <span class="qt-infra">load testing service</span> that can be configured to generate different
195
+ message types at different volumes that can be easily extended to target different chat services
196
+ </li>
197
+ <li>
198
+ Used Twitch’s set of custom tools, including Twitch’s custom RPC protocol, to create a backend
199
+ service with business logic written in <span class="qt-go">Go</span> and cloud infrastructure utilizing
200
+ <span
201
+ class="qt-infra qt-aws">ECS on Fargate, Cloudwatch, and DynamoDB</span>
202
+ , defined in <span class="qt-ts">Typescript</span>-flavored CDK
203
+ </li>
204
+ <li>
205
+ Wrote a technical specification document for the service’s MVP and possible future features, and
206
+ additional documentation on how to use the service and how to extend the load testing service to include
207
+ new services to test
208
+ </li>
209
+ </ul>
210
+ <br>
211
+ <!-- todo: turn off flashing when accordion is expanded -->
212
+ <Accordion hover="hover:bg-surface-hover-token">
213
+ <AccordionItem class="variant-filled-primary rounded-md">
214
+ <div slot="summary">
215
+ <h2 class="mt-2">More experience</h2>
216
+ </div>
217
+ <svelte:fragment slot="content">
218
+ <section class="more-section">
219
+ {#if (!letChaos)}
220
+ <h2>Software Engineer Intern</h2>
221
+ <div class="two-column-separated">
222
+ <div>May 2021 – Dec 2021</div>
223
+ <div style="text-align: end">Twitch / Amazon Web Services Canada, Remote</div>
224
+ </div>
225
+ <ul>
226
+ <li>
227
+ Implemented and wrote tests for a feature in Twitch’s backend authentication
228
+ systems and frontend web application that will help suggest security improvements to
229
+ over hundreds of thousands of users daily
230
+ </li>
231
+ <li>
232
+ Learned <span class="qt-go">Go</span>, <span class="qt-ts">Typescript</span>, <span
233
+ class="qt-react">React</span>, and other new technologies on the go to contribute to
234
+ the codebase
235
+ </li>
236
+ </ul>
237
+ {:else}
238
+ niko baikal seal from toba aquarium
239
+ {/if}
240
+ <br>
241
+ </section>
242
+ </svelte:fragment>
243
+ </AccordionItem>
244
+ </Accordion>
245
+ </section>
246
+ </Card>
247
+
248
+ </div>
249
+
250
+ <Card>
251
+ <div class="section-card title-card" slot="content">
252
+ <h1 class="text-center">Games</h1>
253
+ </div>
254
+ </Card>
255
+
256
+ <section class="games-section">
257
+
258
+ <Card>
259
+ <section class="game-card" slot="content">
260
+ <video playsinline autoplay muted loop preload="none">
261
+ video unavailable. original video contains pengi gameplay showing the dynamic dialog
262
+ layout and character animation.
263
+ <source src={HeaderPengi} type="video/mp4">
264
+ </video>
265
+
266
+ <section class="game-card-body">
267
+
268
+ <h1>Pengi</h1>
269
+
270
+ <blockquote>
271
+ Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
272
+ money...
273
+ </blockquote>
274
+
275
+ <p>
276
+ Pengi is a text-based adventure made in <span class="qt-unity">Unity</span>. I acted as the sole
277
+ programmer for the team. Most of the work revolves around UI and creating <a
278
+ href="https://yarnspinner.dev/" target="_blank">YarnSpinner</a> commands for writers
279
+ to use to create expressive stage directions in the script.
280
+ </p>
281
+
282
+ <section class="game-link-section">
283
+ <button type="button" class="game-button turnip-button"
284
+ role="link"
285
+ title="https://github.com/GreenTea-M/ProjectPengi"
286
+ on:click={()=> window.open("https://github.com/GreenTea-M/ProjectPengi")}>
287
+ <img alt="github icon" src={GithubIcon}>
288
+ </button>
289
+ <button type="button" class="game-button turnip-button"
290
+ role="link"
291
+ title="https://turnipxenon.itch.io/pengi"
292
+ on:click={()=> window.open("https://turnipxenon.itch.io/pengi")}>
293
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
294
+ </button>
295
+ </section>
296
+ </section>
297
+ </section>
298
+ </Card>
299
+
300
+ <Card>
301
+ <section class="game-card" slot="content">
302
+ <!-- todo: move the image crop a bit lower -->
303
+ <video playsinline autoplay muted loop preload="none" id="hepcat-video">
304
+ <source src={HeaderHepCat} type="video/mp4">
305
+ </video>
306
+
307
+ <section class="game-card-body">
308
+
309
+ <h1>Hepcat</h1>
310
+
311
+ <blockquote>
312
+ "Cats, Jazz, and a little bit of Death. What more could anyone ask for?"
313
+ </blockquote>
314
+
315
+
316
+ <p>This is a course project made by a team of six for <a
317
+ href="https://sites.google.com/ualberta.ca/cmput250/">CMPUT 250</a>, and it won <a
318
+ href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/">Game of the year.</a>
319
+ </p>
320
+
321
+ <p>
322
+ Hep Cat is a rhythm game made in <a
323
+ href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker">
324
+ RPG Maker MV</a> with the help of additional custom-made <span class="qt-js">Javascript</span> plugins. I
325
+ wrote the rhythm game plugin's framework. For this plugin to work, I
326
+ had to write a <span class="qt-python">Python</span> script that parses osu! files into readable JSON
327
+ files.
328
+ </p>
329
+
330
+
331
+ <section class="game-link-section">
332
+ <button type="button" class="game-button turnip-button"
333
+ role="link"
334
+ title="https://bitbucket.org/egginchicken/hep-cat/src/master/"
335
+ on:click={()=> window.open("https://bitbucket.org/egginchicken/hep-cat/src/master/")}>
336
+ <img alt="bitbucket icon" src={BitbucketIcon}>
337
+ </button>
338
+ <button type="button" class="game-button turnip-button"
339
+ role="link"
340
+ title="https://just-a-phantom.itch.io/hep-cat"
341
+ on:click={()=> window.open("https://just-a-phantom.itch.io/hep-cat")}>
342
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
343
+ </button>
344
+ </section>
345
+ </section>
346
+ </section>
347
+ </Card>
348
+
349
+ <Card>
350
+ <section class="game-card" slot="content">
351
+ <img src={HeaderChefWings} alt="todo" loading="lazy">
352
+ <section class="game-card-body">
353
+
354
+ <h1>Chef Wings</h1>
355
+ <p>
356
+ A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
357
+ them to cook for customers and then critics!
358
+ </p>
359
+ <p>
360
+ I built and documented several of the game’s systems including the game state management
361
+ system that extends <span class="qt-unity">Unity’s</span> existing Monobehavior lifecycle with new events,
362
+ and the dialogue, event, and level systems that coordinate the game flow using the interactive
363
+ dialogue tool YarnSpinner
364
+ </p>
365
+
366
+ <section class="game-link-section">
367
+ <button type="button" class="game-button turnip-button"
368
+ title="https://selk.io/birb-project/trunk/"
369
+ on:click={()=>modalStore.trigger(chefWingsWarning)}>
370
+ <img alt="itch.io icon" src={LinkIcon}>
371
+ <span>selk.io/birb-project/trunk/</span>
372
+ </button>
373
+ </section>
374
+ </section>
375
+ </section>
376
+ </Card>
377
+ <Card>
378
+ <section class="game-card" slot="content">
379
+ <video playsinline autoplay muted loop preload="none">
380
+ <source src={HeaderSoulwork} type="video/mp4">
381
+ </video>
382
+ <section class="game-card-body">
383
+
384
+ <h1>Soulwork</h1>
385
+
386
+ <p>
387
+ Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
388
+ This project is a Time to Game Jam entry, restricting game development to be under 48
389
+ hours.
390
+ </p>
391
+ <p>
392
+ I helped make the level designing tools used by the designers to drag-and-drop objects
393
+ on the stage. I also helped program the unique physics-based gameplay mechanic. This was
394
+ was made in <span class="qt-unity">Unity</span> written using <span class="qt-cs">C#</span>.
395
+ </p>
396
+
397
+
398
+ <section class="game-link-section">
399
+ <button type="button" class="game-button turnip-button"
400
+ role="link"
401
+ title="https://github.com/Zeyu-Li/Clockwork"
402
+ on:click={()=> window.open("https://github.com/Zeyu-Li/Clockwork")}>
403
+ <img alt="github icon" src={GithubIcon}>
404
+ </button>
405
+ <button type="button" class="game-button turnip-button"
406
+ role="link"
407
+ title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331"
408
+ on:click={()=> window.open("https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331")}>
409
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
410
+ </button>
411
+ </section>
412
+ </section>
413
+ </section>
414
+ </Card>
415
+ <Card overrideStyle="align-self: flex-start;">
416
+ <section class="game-card itch-promo" slot="content">
417
+ <h1 class="mb-12 text-center">Check out my itch.io page for more games</h1>
418
+
419
+ <section class="game-link-section">
420
+ <button type="button" class="btn variant-filled-primary turnip-button"
421
+ role="link"
422
+ title="https://turnipxenon.itch.io/"
423
+ on:click={() => window.open("https://turnipxenon.itch.io/")}>
424
+ <img src={ItchLogoHotLink} class="long-btn-image" alt="itch icon">
425
+ <span>TurnipXenon</span>
426
+ </button>
427
+ </section>
428
+
429
+ </section>
430
+ </Card>
431
+ </section>
432
+
433
+ <Card>
434
+ <section class="section-card title-card" slot="content">
435
+ <h1 class="text-center">Projects</h1>
436
+ </section>
437
+ </Card>
438
+
439
+ <section class="projects-section">
440
+ <Card>
441
+ <section class="project-card" slot="content">
442
+ <iframe id="migrante-alberta"
443
+ width="560" height="315" src="https://www.youtube.com/embed/ZemWwf8jh8E?si=RZwSfYHI-0Ael-RE"
444
+ title="YouTube video player" style="border: none"
445
+ allowfullscreen></iframe>
446
+ <div class="project-card-body">
447
+ <!-- todo: add regression to see if page is gone: https://cmput401.ca/api/projects/e5b13586-09c7-4ddd-baf6-fdb078d23398 -->
448
+
449
+ <h2>Migrante Alberta</h2>
450
+ <p>We developed a mobile-first cross-platform application to be used by the Canadian-based
451
+ Filipino non-profit advocacy group, Migrante Alberta, to help new immigrants navigate
452
+ through local services and events
453
+ </p>
454
+ <p>
455
+ <Chip>Flutter</Chip>
456
+ <Chip>Dart</Chip>
457
+ <Chip>Python</Chip>
458
+ <Chip>Django</Chip>
459
+ <Chip>Heroku</Chip>
460
+ <Chip>Android</Chip>
461
+ <Chip>Postgresql</Chip>
462
+ </p>
463
+ <!-- todo: add a way to ask what did i do via chat? -->
464
+ <!-- <p>-->
465
+ <!-- I helped make reusable Flutter components for the application’s frontend, Dart utility files to-->
466
+ <!-- help ease writing and debugging calls to the backend, and a troubleshooting documentation-->
467
+ <!-- for handling common issues-->
468
+ <!-- </p>-->
469
+ <!-- <p>-->
470
+ <!-- Added Python unit tests to the backend endpoints, refactored the backend’s authentication-->
471
+ <!-- system from plain text to using Django’s authentication system, and wrote a script to ease-->
472
+ <!-- deployment to Heroku-->
473
+ <!-- </p>-->
474
+
475
+ <!-- todo: add tags with Dart, Flutter, Python, Django, Heroku, Android -->
476
+
477
+ <section class="game-link-section">
478
+ <button type="button" class="btn variant-filled-primary turnip-button"
479
+ title="https://selk.io/birb-project/trunk/"
480
+ on:click={() => modalStore.trigger(cmput401Info)}>
481
+ <img src={LinkIcon} class="long-btn-image" alt="itch icon">
482
+ <span>cmput401.ca</span>
483
+ </button>
484
+ </section>
485
+
486
+ </div>
487
+ </section>
488
+ </Card>
489
+
490
+ <Card>
491
+ <section class="project-card" slot="content">
492
+ <div class="project-card-body">
493
+
494
+ <h2>Decentralized social media</h2>
495
+
496
+ <p>We made a full stack decentralized social media app made with <span class="qt-react">React</span> +
497
+ <span class="qt-js">Javascript</span> for the client code, <span class="qt-django">Django</span> + <span
498
+ class="qt-python">Python</span> for the backend code, and <span class="qt-heroku">Heroku</span> for
499
+ deployment. This project was made
500
+ for
501
+ our Web Applications and Architecture class.</p>
502
+ <p>The application can connect with three other decentralized social media app in the same class:
503
+ </p>
504
+ <ul>
505
+ <li>
506
+ <a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-14"
507
+ target="_blank">Also
508
+ a social media with the same Django + Python backend server where they act on behalf of
509
+ our users interacting with theirs</a></li>
510
+ <li>
511
+ <a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-7"
512
+ target="_blank">A
513
+ social media that uses Fast API + Python for their backend server</a></li>
514
+ <li>
515
+ <a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-12"
516
+ target="_blank">Another
517
+ social media that has Django + Python for their backend but we have to act on behalf of
518
+ our
519
+ users interacting with their users</a>
520
+ </li>
521
+ </ul>
522
+
523
+ <!-- todo: add tags with Javascript, React, Python, Django, Heroku -->
524
+
525
+ <section class="game-link-section">
526
+ <button type="button" class="game-button turnip-button"
527
+ role="link"
528
+ title="https://github.com/hgshah/cmput404-project"
529
+ on:click={() => window.open("https://github.com/hgshah/cmput404-project")}>
530
+ <img src={GithubIcon} alt="github icon">
531
+ </button>
532
+ </section>
533
+ </div>
534
+ </section>
535
+ </Card>
536
+
537
+ <Card>
538
+ <section class="project-card" slot="content">
539
+ <img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"
540
+ src={WeaverFootage} />
541
+
542
+ <div class="project-card-body">
543
+ <h2>Customized Yarnspinner interpreter and dialog runner</h2>
544
+
545
+ A custom dialog interpreter, written in <span class="qt-ts">Typescript</span>, that tokenizes then
546
+ transpiles custom Yarnspinner dialog into a <span class="qt-ts">Typescript</span> file. The said files can
547
+ be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
548
+ custom-flavor of YarnSpinner dialogs on <span class="qt-svelte">Svelte</span>.
549
+
550
+ <section class="game-link-section">
551
+ <button type="button" class="game-button turnip-button"
552
+ role="link"
553
+ title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md"
554
+ on:click={() => window.open("https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md")}>
555
+ <img src={GithubIcon} alt="github icon">
556
+ </button>
557
+ </section>
558
+ </div>
559
+ </section>
560
+ </Card>
561
+
562
+ <Card>
563
+ <section class="project-card" slot="content">
564
+ <div class="project-card-body">
565
+ <h2>Full-stack <span class="qt-c">C</span> app</h2>
566
+
567
+ <p>
568
+ A terminal-based app consisting of a server observing several terminal apps all concurrently
569
+ sending updates to the server, which then broadcasts these information concurrently to all the
570
+ other terminal apps connected.
571
+ </p>
572
+ <p>
573
+ The project involves <span class="qt-foundation">multiprocessing</span> programming featuring pthreads and
574
+ mutexes, and <span class="qt-foundation">networking</span> via sockets.
575
+ </p>
576
+
577
+ <section class="game-link-section">
578
+ <button type="button" class="game-button turnip-button"
579
+ role="link"
580
+ title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md"
581
+ on:click={() => window.open("https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md")}>
582
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
583
+ </button>
584
+ </section>
585
+ </div>
586
+ </section>
587
+ </Card>
588
+
589
+ <Card>
590
+ <section class="project-card" slot="content">
591
+ <img
592
+ alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
593
+ time goes by. The trend appears to look like a damping harmonic motion that does not go below the zero line. More
594
+ details include the data size being 200000 entries, each data point skips 1060174 data points, with a
595
+ page size of 4096 bytes, and window size of 100000 bytes."
596
+ src={WindowSetGraph} />
597
+ <div class="project-card-body">
598
+ <h2>Working set simulation</h2>
599
+
600
+ <p>
601
+ A <span class="qt-c">C</span> program that simulates the working set model based on the output of memory
602
+ addresses
603
+ <span class="qt-valgrind">valgrind</span> detects as being accessed by a program being ran. It's
604
+ implemented using a nested hashmap <span class="qt-foundation">data structure</span> implemented from
605
+ scratch. The working set is the collection of memory pages referenced by a program within a certain time
606
+ frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span
607
+ class="qt-foundation">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
608
+ size, page size, and their input size.
609
+ </p>
610
+
611
+ <section class="game-link-section">
612
+ <button type="button" class="game-button turnip-button"
613
+ role="link"
614
+ title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf"
615
+ on:click={() => window.open("https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf")}>
616
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
617
+ <span>Benchmark report</span>
618
+ </button>
619
+ <button type="button" class="game-button turnip-button"
620
+ role="link"
621
+ title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md"
622
+ on:click={() => window.open("https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md")}>
623
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
624
+ <span>Design</span>
625
+ </button>
626
+ </section>
627
+ </div>
628
+ </section>
629
+ </Card>
630
+
631
+ <Card>
632
+ <section class="project-card" slot="content">
633
+
634
+ <video playsinline autoplay muted loop preload="none">
635
+ <source src={ThisWebsiteFootage} type="video/mp4">
636
+ video unavailable. original video contains clips of this website being resized and light-dark mode being
637
+ toggled.
638
+ </video>
639
+ <div class="project-card-body">
640
+ <h2>This webpage!</h2>
641
+
642
+ <p>
643
+ The webpage is made of two parts. The webpage that has the content for everything here, I've
644
+ lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I
645
+ want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.
646
+ </p>
647
+
648
+ <p>
649
+ <Chip>Svelte</Chip>
650
+ <Chip>Skeleton (Svelte UI library)</Chip>
651
+ <Chip>Typescript</Chip>
652
+ <Chip>Vercel</Chip>
653
+ <Chip>YarnSpinner</Chip>
654
+ </p>
655
+
656
+ <section class="game-link-section">
657
+ <button type="button" class="btn variant-filled-primary turnip-button"
658
+ role="link"
659
+ title="https://github.com/TurnipXenon/pineapple"
660
+ on:click={() => window.open("https://github.com/TurnipXenon/pineapple")}>
661
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
662
+ </button>
663
+ </section>
664
+ </div>
665
+ </section>
666
+ </Card>
667
+
668
+ <Card>
669
+ <section class="project-card" slot="content">
670
+ <div class="project-card-body">
671
+ <h2>Mock Uber App</h2>
672
+
673
+ <p>A course project app meant to emulate how Uber works by playing with <span class="qt-google">Google Maps API</span>.
674
+ </p>
675
+ <p>
676
+ I implemented all interfaces related to the NoSQL cloud database <span
677
+ class="qt-firebase qt-google qt-infra">Firebase</span>, making writing code easier for other programmers (<span
678
+ class="qt-android">Android</span> / <span class="qt-java">Java</span>). I also wrote documentation to said
679
+ code and added instrumented tests that are tested by the continuous integration tool <span
680
+ class="qt-infra">Travis CI</span>, ensuring that our code is tested
681
+ </p>
682
+
683
+ <section class="game-link-section">
684
+ <!-- todo: mock uber app find link -->
685
+ <button type="button" class="game-button turnip-button"
686
+ role="link"
687
+ title="https://github.com/CMPUT301W20T10/UberApp"
688
+ on:click={() => window.open("https://github.com/CMPUT301W20T10/UberApp")}>
689
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
690
+ </button>
691
+ </section>
692
+ </div>
693
+ </section>
694
+ </Card>
695
+
696
+ </section>
697
+
698
+ </main>
699
+
700
+ <SocialSection slot="extraLeadingIcons"
701
+ isSlot={true}
702
+ email={email}
703
+ linkedinSlug={linkedinSlug}
704
+ isSmallVersion={true}></SocialSection>
705
+ </SeaweedBaseLayout>
706
+
707
+ <style>
708
+ main {
709
+ width: 100%;
710
+ overflow: visible;
711
+ display: flex;
712
+ flex-direction: column;
713
+ justify-content: center;
714
+ align-items: center;
715
+ }
716
+
717
+ h1 {
718
+ font-size: 2em;
719
+ }
720
+
721
+ h2 {
722
+ font-size: 1.5em;
723
+ }
724
+
725
+ .section-card {
726
+ padding: 3em;
727
+ max-width: 800px;
728
+ }
729
+
730
+ .game-card, .project-card {
731
+ width: 100vw;
732
+ max-width: 36em;
733
+ margin-bottom: 3em;
734
+ }
735
+
736
+ .game-card > video {
737
+ border-top-left-radius: 1em;
738
+ border-top-right-radius: 1em;
739
+ max-height: 24em;
740
+ width: 100%;
741
+ -o-object-fit: cover;
742
+ object-fit: cover;
743
+ }
744
+
745
+ #migrante-alberta, .game-card > img, .project-card > img {
746
+ border-top-left-radius: 1em;
747
+ border-top-right-radius: 1em;
748
+ }
749
+
750
+ #migrante-alberta {
751
+ width: 100%;
752
+ -o-object-fit: cover;
753
+ object-fit: cover;
754
+ }
755
+
756
+ :is(.dark .game-button) {
757
+ --tw-bg-opacity: 1;
758
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
759
+ color: rgb(var(--on-primary));
760
+ }
761
+
762
+ .game-button:disabled {
763
+ cursor: not-allowed;
764
+ opacity: 0.5;
765
+ }
766
+
767
+ .game-button:disabled:hover {
768
+ --tw-brightness: brightness(1);
769
+ 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);
770
+ }
771
+
772
+ .game-button:disabled:active {
773
+ --tw-scale-x: 1;
774
+ --tw-scale-y: 1;
775
+ 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));
776
+ }
777
+
778
+ .game-button {
779
+ font-size: 1rem;
780
+ line-height: 1.5rem;
781
+ padding-left: 1.25rem;
782
+ padding-right: 1.25rem;
783
+ padding-top: 9px;
784
+ padding-bottom: 9px;
785
+ white-space: nowrap;
786
+ text-align: center;
787
+ display: inline-flex;
788
+ align-items: center;
789
+ justify-content: center;
790
+ transition-property: all;
791
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
792
+ transition-duration: 150ms;
793
+ border-radius: var(--theme-rounded-base);
794
+ }
795
+
796
+ .game-button > :not([hidden]) ~ :not([hidden]) {
797
+ --tw-space-x-reverse: 0;
798
+ margin-right: calc(0.5rem * var(--tw-space-x-reverse));
799
+ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
800
+ }
801
+
802
+ .game-button:hover {
803
+ --tw-brightness: brightness(1.15);
804
+ 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);
805
+ }
806
+
807
+ .game-button:active {
808
+ --tw-scale-x: 95%;
809
+ --tw-scale-y: 95%;
810
+ 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));
811
+ --tw-brightness: brightness(.9);
812
+ 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);
813
+ }
814
+
815
+ .game-button {
816
+ --tw-bg-opacity: 1;
817
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
818
+ color: rgb(var(--on-primary));
819
+ }
820
+
821
+ :is(.dark .game-button) {
822
+ --tw-bg-opacity: 1;
823
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
824
+ color: rgb(var(--on-primary));
825
+ }
826
+
827
+ .game-button > img {
828
+ max-height: 1lh;
829
+ /* todo: consider night mode day mode */
830
+ }
831
+
832
+ .two-column-separated {
833
+ display: flex;
834
+ justify-content: space-between;
835
+ }
836
+
837
+ .more-section {
838
+ padding: 1em;
839
+ }
840
+
841
+ .greater-about-div {
842
+ display: flex;
843
+ flex-direction: column;
844
+ max-width: 36em;
845
+ }
846
+
847
+ .experience-and-about-div {
848
+ display: flex;
849
+ gap: 2em;
850
+ flex-wrap: wrap;
851
+ justify-content: center;
852
+ align-items: flex-start;
853
+ }
854
+
855
+ .game-card-body, .project-card-body {
856
+ padding: 1em;
857
+ }
858
+
859
+ .game-card-body > blockquote {
860
+ margin-bottom: 0.7lh;
861
+ }
862
+
863
+ .game-card-body > h1, .project-card-body > h2 {
864
+ text-align: center;
865
+ }
866
+
867
+ .game-link-section {
868
+ display: flex;
869
+ flex-direction: row;
870
+ justify-content: center;
871
+ gap: 1em;
872
+ margin-top: 1em;
873
+ }
874
+
875
+ .games-section, .projects-section {
876
+ display: flex;
877
+ flex-wrap: wrap;
878
+ gap: 2em;
879
+ justify-content: center;
880
+ }
881
+
882
+ .projects-section {
883
+ align-items: flex-start;
884
+ /*justify-content: flex-start;*/
885
+ }
886
+
887
+ .long-btn-image {
888
+ max-height: 1lh;
889
+ }
890
+
891
+ .itch-promo {
892
+ padding: 4em;
893
+ }
894
+
895
+ #hepcat-video {
896
+ -o-object-position: 0 0;
897
+ object-position: 0 0;
898
+ }
899
+
900
+ .title-card {
901
+ width: clamp(360px, 80vw, 800px);
902
+ }
903
+
904
+ [class*='qt-'] {
905
+ font-weight: var(--qt-font-weight);
906
+ }
907
+ </style>