Format prettier and type checking.

This commit is contained in:
Bradley Shellnut 2022-07-27 17:05:54 -07:00
parent 1f847c91e7
commit daad2efe5e
26 changed files with 331 additions and 285 deletions

6
.vscode/launch.json vendored
View file

@ -5,9 +5,7 @@
"name": "Launch Vite DEV server", "name": "Launch Vite DEV server",
"request": "launch", "request": "launch",
"runtimeExecutable": "npx", "runtimeExecutable": "npx",
"runtimeArgs": [ "runtimeArgs": ["vite"],
"vite",
],
"type": "node", "type": "node",
"serverReadyAction": { "serverReadyAction": {
"action": "debugWithChrome", "action": "debugWithChrome",
@ -16,4 +14,4 @@
} }
} }
] ]
} }

View file

@ -14,16 +14,16 @@
"format": "prettier --write --plugin-search-dir=. ." "format": "prettier --write --plugin-search-dir=. ."
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.24.0", "@playwright/test": "^1.24.1",
"@rgossiaux/svelte-headlessui": "1.0.2", "@rgossiaux/svelte-headlessui": "1.0.2",
"@rgossiaux/svelte-heroicons": "^0.1.2", "@rgossiaux/svelte-heroicons": "^0.1.2",
"@sveltejs/adapter-auto": "1.0.0-next.63", "@sveltejs/adapter-auto": "1.0.0-next.64",
"@sveltejs/kit": "1.0.0-next.392", "@sveltejs/kit": "1.0.0-next.396",
"@types/cookie": "^0.5.1", "@types/cookie": "^0.5.1",
"@types/node": "^18.0.6", "@types/node": "^18.6.1",
"@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/eslint-plugin": "^5.31.0",
"@typescript-eslint/parser": "^5.27.0", "@typescript-eslint/parser": "^5.31.0",
"carbon-components-svelte": "^0.67.2", "carbon-components-svelte": "^0.67.4",
"carbon-icons-svelte": "^11.2.0", "carbon-icons-svelte": "^11.2.0",
"eslint": "^8.19.0", "eslint": "^8.19.0",
"eslint-config-prettier": "^8.1.0", "eslint-config-prettier": "^8.1.0",
@ -36,7 +36,7 @@
"svelte-preprocess": "^4.10.7", "svelte-preprocess": "^4.10.7",
"tslib": "^2.0.0", "tslib": "^2.0.0",
"typescript": "^4.7.4", "typescript": "^4.7.4",
"vite": "^3.0.0" "vite": "^3.0.3"
}, },
"type": "module", "type": "module",
"dependencies": { "dependencies": {
@ -49,4 +49,4 @@
"feather-icons": "^4.29.0", "feather-icons": "^4.29.0",
"zod": "^3.17.10" "zod": "^3.17.10"
} }
} }

View file

@ -5,17 +5,17 @@ specifiers:
'@leveluptuts/svelte-side-menu': ^1.0.2 '@leveluptuts/svelte-side-menu': ^1.0.2
'@leveluptuts/svelte-toy': ^2.0.2 '@leveluptuts/svelte-toy': ^2.0.2
'@lukeed/uuid': ^2.0.0 '@lukeed/uuid': ^2.0.0
'@playwright/test': ^1.24.0 '@playwright/test': ^1.24.1
'@rgossiaux/svelte-headlessui': 1.0.2 '@rgossiaux/svelte-headlessui': 1.0.2
'@rgossiaux/svelte-heroicons': ^0.1.2 '@rgossiaux/svelte-heroicons': ^0.1.2
'@sveltejs/adapter-auto': 1.0.0-next.63 '@sveltejs/adapter-auto': 1.0.0-next.64
'@sveltejs/kit': 1.0.0-next.392 '@sveltejs/kit': 1.0.0-next.396
'@types/cookie': ^0.5.1 '@types/cookie': ^0.5.1
'@types/feather-icons': ^4.7.0 '@types/feather-icons': ^4.7.0
'@types/node': ^18.0.6 '@types/node': ^18.6.1
'@typescript-eslint/eslint-plugin': ^5.27.0 '@typescript-eslint/eslint-plugin': ^5.31.0
'@typescript-eslint/parser': ^5.27.0 '@typescript-eslint/parser': ^5.31.0
carbon-components-svelte: ^0.67.2 carbon-components-svelte: ^0.67.4
carbon-icons-svelte: ^11.2.0 carbon-icons-svelte: ^11.2.0
cookie: ^0.5.0 cookie: ^0.5.0
eslint: ^8.19.0 eslint: ^8.19.0
@ -30,7 +30,7 @@ specifiers:
svelte-preprocess: ^4.10.7 svelte-preprocess: ^4.10.7
tslib: ^2.0.0 tslib: ^2.0.0
typescript: ^4.7.4 typescript: ^4.7.4
vite: ^3.0.0 vite: ^3.0.3
zod: ^3.17.10 zod: ^3.17.10
dependencies: dependencies:
@ -44,16 +44,16 @@ dependencies:
zod: 3.17.10 zod: 3.17.10
devDependencies: devDependencies:
'@playwright/test': 1.24.0 '@playwright/test': 1.24.1
'@rgossiaux/svelte-headlessui': 1.0.2_svelte@3.49.0 '@rgossiaux/svelte-headlessui': 1.0.2_svelte@3.49.0
'@rgossiaux/svelte-heroicons': 0.1.2_svelte@3.49.0 '@rgossiaux/svelte-heroicons': 0.1.2_svelte@3.49.0
'@sveltejs/adapter-auto': 1.0.0-next.63 '@sveltejs/adapter-auto': 1.0.0-next.64
'@sveltejs/kit': 1.0.0-next.392_svelte@3.49.0+vite@3.0.2 '@sveltejs/kit': 1.0.0-next.396_svelte@3.49.0+vite@3.0.3
'@types/cookie': 0.5.1 '@types/cookie': 0.5.1
'@types/node': 18.0.6 '@types/node': 18.6.1
'@typescript-eslint/eslint-plugin': 5.30.7_6wltbjakwuqm7awqswigmiuhd4 '@typescript-eslint/eslint-plugin': 5.31.0_d5zwcxr4bwkhmuo464cb3a2puu
'@typescript-eslint/parser': 5.30.7_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/parser': 5.31.0_he2ccbldppg44uulnyq4rwocfa
carbon-components-svelte: 0.67.2 carbon-components-svelte: 0.67.4
carbon-icons-svelte: 11.2.0 carbon-icons-svelte: 11.2.0
eslint: 8.20.0 eslint: 8.20.0
eslint-config-prettier: 8.5.0_eslint@8.20.0 eslint-config-prettier: 8.5.0_eslint@8.20.0
@ -66,7 +66,7 @@ devDependencies:
svelte-preprocess: 4.10.7_qqyngjnvpp2z5rj6eppfx7s47e svelte-preprocess: 4.10.7_qqyngjnvpp2z5rj6eppfx7s47e
tslib: 2.4.0 tslib: 2.4.0
typescript: 4.7.4 typescript: 4.7.4
vite: 3.0.2_sass@1.54.0 vite: 3.0.3_sass@1.54.0
packages: packages:
@ -191,13 +191,13 @@ packages:
fastq: 1.13.0 fastq: 1.13.0
dev: true dev: true
/@playwright/test/1.24.0: /@playwright/test/1.24.1:
resolution: {integrity: sha512-sZLH2N6aWN9TtG+vMjNSomSfX0dSVHwWE+GhHQPV+ZeGcuZ/6CgMCGFuGjobgq/hNF9ZkuVOjeyoceZ0owKnHQ==} resolution: {integrity: sha512-VJ9qekMis7Oze2Q/Vb+w1g2aPaJFRdl5vhTS6h82kG89Jb8trlU2WHY7oYzNRjvFPoVUMcWXiblH2bWcbEax/A==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dependencies: dependencies:
'@types/node': 18.0.6 '@types/node': 18.6.1
playwright-core: 1.24.0 playwright-core: 1.24.1
dev: true dev: true
/@rgossiaux/svelte-headlessui/1.0.2_svelte@3.49.0: /@rgossiaux/svelte-headlessui/1.0.2_svelte@3.49.0:
@ -224,63 +224,63 @@ packages:
picomatch: 2.3.1 picomatch: 2.3.1
dev: true dev: true
/@sveltejs/adapter-auto/1.0.0-next.63: /@sveltejs/adapter-auto/1.0.0-next.64:
resolution: {integrity: sha512-9KguXwROEJMyyoKrsizAilVSmtfWxEDn2Hbxk44SP8Kj5cgN7tFCxzbL2kmmqyV1CO1tOh5iNC2oWbyTfikXmw==} resolution: {integrity: sha512-Q8DwcS6wl1GovzS9JJzaD/WL/Lfk1ur4nAF1HtmsUvZDpsPBVDqnK2AhYU4G3oFNiuHstrjAogMy5th8ptSFGw==}
dependencies: dependencies:
'@sveltejs/adapter-cloudflare': 1.0.0-next.30 '@sveltejs/adapter-cloudflare': 1.0.0-next.31
'@sveltejs/adapter-netlify': 1.0.0-next.70 '@sveltejs/adapter-netlify': 1.0.0-next.71
'@sveltejs/adapter-vercel': 1.0.0-next.65 '@sveltejs/adapter-vercel': 1.0.0-next.66
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
dev: true dev: true
/@sveltejs/adapter-cloudflare/1.0.0-next.30: /@sveltejs/adapter-cloudflare/1.0.0-next.31:
resolution: {integrity: sha512-jIclgb58n3Uoo8TTudXSa7wmLP7Rn/ESLQS+zOUe0xsti5DG/eDhELTnSvkoSa2lJY21ym5rej/GSERRyeuBVw==} resolution: {integrity: sha512-HhEFZP72GJ8AZGgFECKIiayDcLaAWi65pI0AnBfiNhCifYSlH/mPNWNVD4AWRDnXnH6XU+FLwhGDnIDwytTyYg==}
dependencies: dependencies:
'@cloudflare/workers-types': 3.14.1 '@cloudflare/workers-types': 3.14.1
esbuild: 0.14.49 esbuild: 0.14.50
worktop: 0.8.0-next.14 worktop: 0.8.0-next.14
dev: true dev: true
/@sveltejs/adapter-netlify/1.0.0-next.70: /@sveltejs/adapter-netlify/1.0.0-next.71:
resolution: {integrity: sha512-lIXY6KIgIFBz4+mdvilx9Ny8oFV7T2iVTKLirJayoI/SqPWGAcxklvWvjGfS4QT8rS9pWKDaKRUQM4M/gl8LlA==} resolution: {integrity: sha512-la1CGtWO1xul1L3zEoFAoc4EX2uxZjrZcOMS3tkKB8drxhbQsNbnTE6fmSSMFiZXhxaikczrBgQwqIaDkLTmZg==}
dependencies: dependencies:
'@iarna/toml': 2.2.5 '@iarna/toml': 2.2.5
esbuild: 0.14.49 esbuild: 0.14.50
set-cookie-parser: 2.5.0 set-cookie-parser: 2.5.1
tiny-glob: 0.2.9 tiny-glob: 0.2.9
dev: true dev: true
/@sveltejs/adapter-vercel/1.0.0-next.65: /@sveltejs/adapter-vercel/1.0.0-next.66:
resolution: {integrity: sha512-RV3HL7Ic7pGgIoBSHPwN1pBX96Km1X683oHImPHAKX9h/WOvJZ3bY5+IWNRcR8tx9rPB5gfMRg+msvPSBr3RVw==} resolution: {integrity: sha512-s3Hcxu9nCG/rR3C3cFbdQGjTa5W4K2kRcc6S5Xefx7itbrw+4v3KpO8ZPB6qM55XDwVxuG7260NMHVI6MUGmSA==}
dependencies: dependencies:
'@vercel/nft': 0.20.1 '@vercel/nft': 0.21.0
esbuild: 0.14.49 esbuild: 0.14.50
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
dev: true dev: true
/@sveltejs/kit/1.0.0-next.392_svelte@3.49.0+vite@3.0.2: /@sveltejs/kit/1.0.0-next.396_svelte@3.49.0+vite@3.0.3:
resolution: {integrity: sha512-od4rDJ/Soq0I7mda7sTbAnNKERHSDEGNa7QBpLA859xgBkwC1JnEIymYOh9dm+hMyHhB0bUoRoaur0qxKLqOOw==} resolution: {integrity: sha512-bKFpuzp9QxPkOIOEIeNeedvxEMORNqBPxUmoJXDP/Se7MrSfcxYiamjBcKrG+bgGNWmV39nD3EvUox+CXno/Ig==}
engines: {node: '>=16.9'} engines: {node: '>=16.9'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
svelte: ^3.44.0 svelte: ^3.44.0
vite: ^3.0.0 vite: ^3.0.0
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.2 '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.3
chokidar: 3.5.3 chokidar: 3.5.3
sade: 1.8.1 sade: 1.8.1
svelte: 3.49.0 svelte: 3.49.0
vite: 3.0.2_sass@1.54.0 vite: 3.0.3_sass@1.54.0
transitivePeerDependencies: transitivePeerDependencies:
- diff-match-patch - diff-match-patch
- supports-color - supports-color
dev: true dev: true
/@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.2: /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.3:
resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==}
engines: {node: ^14.18.0 || >= 16} engines: {node: ^14.18.0 || >= 16}
peerDependencies: peerDependencies:
@ -298,7 +298,7 @@ packages:
magic-string: 0.26.2 magic-string: 0.26.2
svelte: 3.49.0 svelte: 3.49.0
svelte-hmr: 0.14.12_svelte@3.49.0 svelte-hmr: 0.14.12_svelte@3.49.0
vite: 3.0.2_sass@1.54.0 vite: 3.0.3_sass@1.54.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -315,8 +315,8 @@ packages:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true dev: true
/@types/node/18.0.6: /@types/node/18.6.1:
resolution: {integrity: sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==} resolution: {integrity: sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==}
dev: true dev: true
/@types/pug/2.0.6: /@types/pug/2.0.6:
@ -326,11 +326,11 @@ packages:
/@types/sass/1.43.1: /@types/sass/1.43.1:
resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==}
dependencies: dependencies:
'@types/node': 18.0.6 '@types/node': 18.6.1
dev: true dev: true
/@typescript-eslint/eslint-plugin/5.30.7_6wltbjakwuqm7awqswigmiuhd4: /@typescript-eslint/eslint-plugin/5.31.0_d5zwcxr4bwkhmuo464cb3a2puu:
resolution: {integrity: sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==} resolution: {integrity: sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^5.0.0 '@typescript-eslint/parser': ^5.0.0
@ -340,10 +340,10 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.30.7_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/parser': 5.31.0_he2ccbldppg44uulnyq4rwocfa
'@typescript-eslint/scope-manager': 5.30.7 '@typescript-eslint/scope-manager': 5.31.0
'@typescript-eslint/type-utils': 5.30.7_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/type-utils': 5.31.0_he2ccbldppg44uulnyq4rwocfa
'@typescript-eslint/utils': 5.30.7_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/utils': 5.31.0_he2ccbldppg44uulnyq4rwocfa
debug: 4.3.4 debug: 4.3.4
eslint: 8.20.0 eslint: 8.20.0
functional-red-black-tree: 1.0.1 functional-red-black-tree: 1.0.1
@ -356,8 +356,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser/5.30.7_he2ccbldppg44uulnyq4rwocfa: /@typescript-eslint/parser/5.31.0_he2ccbldppg44uulnyq4rwocfa:
resolution: {integrity: sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A==} resolution: {integrity: sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
@ -366,9 +366,9 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/scope-manager': 5.30.7 '@typescript-eslint/scope-manager': 5.31.0
'@typescript-eslint/types': 5.30.7 '@typescript-eslint/types': 5.31.0
'@typescript-eslint/typescript-estree': 5.30.7_typescript@4.7.4 '@typescript-eslint/typescript-estree': 5.31.0_typescript@4.7.4
debug: 4.3.4 debug: 4.3.4
eslint: 8.20.0 eslint: 8.20.0
typescript: 4.7.4 typescript: 4.7.4
@ -376,16 +376,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/scope-manager/5.30.7: /@typescript-eslint/scope-manager/5.31.0:
resolution: {integrity: sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==} resolution: {integrity: sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.30.7 '@typescript-eslint/types': 5.31.0
'@typescript-eslint/visitor-keys': 5.30.7 '@typescript-eslint/visitor-keys': 5.31.0
dev: true dev: true
/@typescript-eslint/type-utils/5.30.7_he2ccbldppg44uulnyq4rwocfa: /@typescript-eslint/type-utils/5.31.0_he2ccbldppg44uulnyq4rwocfa:
resolution: {integrity: sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw==} resolution: {integrity: sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: '*' eslint: '*'
@ -394,7 +394,7 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/utils': 5.30.7_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/utils': 5.31.0_he2ccbldppg44uulnyq4rwocfa
debug: 4.3.4 debug: 4.3.4
eslint: 8.20.0 eslint: 8.20.0
tsutils: 3.21.0_typescript@4.7.4 tsutils: 3.21.0_typescript@4.7.4
@ -403,13 +403,13 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/types/5.30.7: /@typescript-eslint/types/5.31.0:
resolution: {integrity: sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==} resolution: {integrity: sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
/@typescript-eslint/typescript-estree/5.30.7_typescript@4.7.4: /@typescript-eslint/typescript-estree/5.31.0_typescript@4.7.4:
resolution: {integrity: sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==} resolution: {integrity: sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -417,8 +417,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/types': 5.30.7 '@typescript-eslint/types': 5.31.0
'@typescript-eslint/visitor-keys': 5.30.7 '@typescript-eslint/visitor-keys': 5.31.0
debug: 4.3.4 debug: 4.3.4
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
@ -429,16 +429,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils/5.30.7_he2ccbldppg44uulnyq4rwocfa: /@typescript-eslint/utils/5.31.0_he2ccbldppg44uulnyq4rwocfa:
resolution: {integrity: sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==} resolution: {integrity: sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies: dependencies:
'@types/json-schema': 7.0.11 '@types/json-schema': 7.0.11
'@typescript-eslint/scope-manager': 5.30.7 '@typescript-eslint/scope-manager': 5.31.0
'@typescript-eslint/types': 5.30.7 '@typescript-eslint/types': 5.31.0
'@typescript-eslint/typescript-estree': 5.30.7_typescript@4.7.4 '@typescript-eslint/typescript-estree': 5.31.0_typescript@4.7.4
eslint: 8.20.0 eslint: 8.20.0
eslint-scope: 5.1.1 eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.20.0 eslint-utils: 3.0.0_eslint@8.20.0
@ -447,20 +447,21 @@ packages:
- typescript - typescript
dev: true dev: true
/@typescript-eslint/visitor-keys/5.30.7: /@typescript-eslint/visitor-keys/5.31.0:
resolution: {integrity: sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==} resolution: {integrity: sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.30.7 '@typescript-eslint/types': 5.31.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/@vercel/nft/0.20.1: /@vercel/nft/0.21.0:
resolution: {integrity: sha512-hSLcr64KHOkcNiTAlv154K4p4faEFBwYIi2eIgu1QCDhB1qyQYvFuEhtw3eaapNjA4/7x/2jcclfCAjILua/ag==} resolution: {integrity: sha512-hFCAETfI5cG8l5iAiLhMC2bReC5K7SIybzrxGorv+eGspIbIFsVw7Vg85GovXm/LxA08pIDrAlrhR6GN36XB/Q==}
hasBin: true hasBin: true
dependencies: dependencies:
'@mapbox/node-pre-gyp': 1.0.9 '@mapbox/node-pre-gyp': 1.0.9
acorn: 8.7.1 acorn: 8.8.0
async-sema: 3.1.1
bindings: 1.5.0 bindings: 1.5.0
estree-walker: 2.0.2 estree-walker: 2.0.2
glob: 7.2.3 glob: 7.2.3
@ -492,6 +493,12 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/acorn/8.8.0:
resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/agent-base/6.0.2: /agent-base/6.0.2:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'} engines: {node: '>= 6.0.0'}
@ -551,6 +558,10 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/async-sema/3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
dev: true
/balanced-match/1.0.2: /balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true dev: true
@ -589,8 +600,8 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/carbon-components-svelte/0.67.2: /carbon-components-svelte/0.67.4:
resolution: {integrity: sha512-zu/x4m4cRIzWsY9muu6ctqWOZQg3gB4Ako89hgm+xiyK7cGMf0ySagKUHcIIh/sSnusN4AySR8azivDH2LdyhQ==} resolution: {integrity: sha512-+YbPAYInOQyT6bAVPPdtZ18Zm6oTHYOl+gTzO517QebDzz+Czf+HJiyJnlAkpz9PMOf3sCAhB9JiojO+auuEMQ==}
dependencies: dependencies:
flatpickr: 4.6.9 flatpickr: 4.6.9
dev: true dev: true
@ -731,8 +742,8 @@ packages:
resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=} resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=}
dev: true dev: true
/esbuild-android-64/0.14.49: /esbuild-android-64/0.14.50:
resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@ -740,8 +751,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-android-arm64/0.14.49: /esbuild-android-arm64/0.14.50:
resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==} resolution: {integrity: sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -749,8 +760,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-64/0.14.49: /esbuild-darwin-64/0.14.50:
resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==} resolution: {integrity: sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -758,8 +769,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-arm64/0.14.49: /esbuild-darwin-arm64/0.14.50:
resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==} resolution: {integrity: sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -767,8 +778,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-64/0.14.49: /esbuild-freebsd-64/0.14.50:
resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==} resolution: {integrity: sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -776,8 +787,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-arm64/0.14.49: /esbuild-freebsd-arm64/0.14.50:
resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==} resolution: {integrity: sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@ -785,8 +796,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-32/0.14.49: /esbuild-linux-32/0.14.50:
resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==} resolution: {integrity: sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@ -794,8 +805,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-64/0.14.49: /esbuild-linux-64/0.14.50:
resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==} resolution: {integrity: sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -803,8 +814,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm/0.14.49: /esbuild-linux-arm/0.14.50:
resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==} resolution: {integrity: sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -812,8 +823,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm64/0.14.49: /esbuild-linux-arm64/0.14.50:
resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==} resolution: {integrity: sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -821,8 +832,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-mips64le/0.14.49: /esbuild-linux-mips64le/0.14.50:
resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==} resolution: {integrity: sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@ -830,8 +841,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-ppc64le/0.14.49: /esbuild-linux-ppc64le/0.14.50:
resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==} resolution: {integrity: sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@ -839,8 +850,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-riscv64/0.14.49: /esbuild-linux-riscv64/0.14.50:
resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==} resolution: {integrity: sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@ -848,8 +859,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-s390x/0.14.49: /esbuild-linux-s390x/0.14.50:
resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==} resolution: {integrity: sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@ -857,8 +868,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-netbsd-64/0.14.49: /esbuild-netbsd-64/0.14.50:
resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==} resolution: {integrity: sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@ -866,8 +877,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-openbsd-64/0.14.49: /esbuild-openbsd-64/0.14.50:
resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==} resolution: {integrity: sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@ -875,8 +886,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-sunos-64/0.14.49: /esbuild-sunos-64/0.14.50:
resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==} resolution: {integrity: sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@ -884,8 +895,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-32/0.14.49: /esbuild-windows-32/0.14.50:
resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==} resolution: {integrity: sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -893,8 +904,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-64/0.14.49: /esbuild-windows-64/0.14.50:
resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==} resolution: {integrity: sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -902,8 +913,8 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-arm64/0.14.49: /esbuild-windows-arm64/0.14.50:
resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==} resolution: {integrity: sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -911,32 +922,32 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild/0.14.49: /esbuild/0.14.50:
resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==} resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
esbuild-android-64: 0.14.49 esbuild-android-64: 0.14.50
esbuild-android-arm64: 0.14.49 esbuild-android-arm64: 0.14.50
esbuild-darwin-64: 0.14.49 esbuild-darwin-64: 0.14.50
esbuild-darwin-arm64: 0.14.49 esbuild-darwin-arm64: 0.14.50
esbuild-freebsd-64: 0.14.49 esbuild-freebsd-64: 0.14.50
esbuild-freebsd-arm64: 0.14.49 esbuild-freebsd-arm64: 0.14.50
esbuild-linux-32: 0.14.49 esbuild-linux-32: 0.14.50
esbuild-linux-64: 0.14.49 esbuild-linux-64: 0.14.50
esbuild-linux-arm: 0.14.49 esbuild-linux-arm: 0.14.50
esbuild-linux-arm64: 0.14.49 esbuild-linux-arm64: 0.14.50
esbuild-linux-mips64le: 0.14.49 esbuild-linux-mips64le: 0.14.50
esbuild-linux-ppc64le: 0.14.49 esbuild-linux-ppc64le: 0.14.50
esbuild-linux-riscv64: 0.14.49 esbuild-linux-riscv64: 0.14.50
esbuild-linux-s390x: 0.14.49 esbuild-linux-s390x: 0.14.50
esbuild-netbsd-64: 0.14.49 esbuild-netbsd-64: 0.14.50
esbuild-openbsd-64: 0.14.49 esbuild-openbsd-64: 0.14.50
esbuild-sunos-64: 0.14.49 esbuild-sunos-64: 0.14.50
esbuild-windows-32: 0.14.49 esbuild-windows-32: 0.14.50
esbuild-windows-64: 0.14.49 esbuild-windows-64: 0.14.50
esbuild-windows-arm64: 0.14.49 esbuild-windows-arm64: 0.14.50
dev: true dev: true
/escape-string-regexp/4.0.0: /escape-string-regexp/4.0.0:
@ -1595,8 +1606,8 @@ packages:
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
dev: true dev: true
/playwright-core/1.24.0: /playwright-core/1.24.1:
resolution: {integrity: sha512-BkDWdVsoEEC8m2glQlfNu1EN2qvjBsLIg5bD0wjrfwv9zVHktIsp80yYFObAcWreLNYhfRP4PlXE04lr5R4DFQ==} resolution: {integrity: sha512-1RoSDe/oTQS1Ct7Pb8i+vcFKbKYpmVIBXk0IUiD8RvCUMnNl7EJF1OSQ9E8TZ5RYamWkW2Psir9e8Doyz1FnhQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dev: true dev: true
@ -1710,8 +1721,8 @@ packages:
estree-walker: 0.6.1 estree-walker: 0.6.1
dev: true dev: true
/rollup/2.77.0: /rollup/2.77.2:
resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
hasBin: true hasBin: true
optionalDependencies: optionalDependencies:
@ -1771,8 +1782,8 @@ packages:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: true dev: true
/set-cookie-parser/2.5.0: /set-cookie-parser/2.5.1:
resolution: {integrity: sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==} resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==}
dev: true dev: true
/shebang-command/2.0.0: /shebang-command/2.0.0:
@ -2039,8 +2050,8 @@ packages:
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
dev: true dev: true
/vite/3.0.2_sass@1.54.0: /vite/3.0.3_sass@1.54.0:
resolution: {integrity: sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==} resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -2058,10 +2069,10 @@ packages:
terser: terser:
optional: true optional: true
dependencies: dependencies:
esbuild: 0.14.49 esbuild: 0.14.50
postcss: 8.4.14 postcss: 8.4.14
resolve: 1.22.1 resolve: 1.22.1
rollup: 2.77.0 rollup: 2.77.2
sass: 1.54.0 sass: 1.54.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2

View file

@ -1,27 +1,24 @@
<script lang="ts"> <script lang="ts">
import feather from 'feather-icons'; import feather from 'feather-icons';
export const directions: string[] = ["n", "ne", "e", "se", "s", "sw", "w", "nw"]; export const directions: string[] = ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'];
export let name: string; export let name: string;
export let direction: string = "n"; export let direction: string = 'n';
export let strokeWidth: string | number; export let strokeWidth: string | number;
export let stroke: string | number; export let stroke: string | number;
export let width: string = "1em"; export let width: string = '1em';
export let height: string = "1em"; export let height: string = '1em';
$: icon = feather.icons[name]; $: icon = feather.icons[name];
$: rotation = directions.indexOf(direction) * 45; $: rotation = directions.indexOf(direction) * 45;
$: if (icon) { $: if (icon) {
if (stroke) icon.attrs["stroke"] = stroke; if (stroke) icon.attrs['stroke'] = stroke;
if (strokeWidth) icon.attrs["stroke-width"] = strokeWidth; if (strokeWidth) icon.attrs['stroke-width'] = strokeWidth;
} }
</script> </script>
{#if icon} {#if icon}
<svg <svg {...icon.attrs} style="width: {width}; height: {height}; transform: rotate({rotation}deg);">
{...icon.attrs}
style="width: {width}; height: {height}; transform: rotate({rotation}deg);"
>
<g> <g>
{@html icon.contents} {@html icon.contents}
</g> </g>
@ -35,4 +32,4 @@
overflow: visible; overflow: visible;
transform-origin: 50% 50%; transform-origin: 50% 50%;
} }
</style> </style>

View file

@ -3,7 +3,7 @@
import { ToastType, type GameType } from '$lib/types'; import { ToastType, type GameType } from '$lib/types';
import { collectionStore } from '$lib/stores/collectionStore'; import { collectionStore } from '$lib/stores/collectionStore';
import { toast } from '$lib/components/toast/toast'; import { toast } from '$lib/components/toast/toast';
import { addToCollection, removeFromCollection } from '$lib/util/manipulateCollection'; import { addToCollection, removeFromCollection } from '$lib/util/manipulateCollection';
export let game: GameType; export let game: GameType;
export let detailed: boolean = false; export let detailed: boolean = false;
@ -29,16 +29,18 @@ import { addToCollection, removeFromCollection } from '$lib/util/manipulateColle
{/if} {/if}
</div> </div>
{#if existsInCollection} {#if existsInCollection}
<button class="btn" type="button" on:click={() => removeFromCollection(game)}>Remove from collection -</button> <button class="btn" type="button" on:click={() => removeFromCollection(game)}
>Remove from collection -</button
>
{:else} {:else}
<button class="btn" type="button" on:click={() => addToCollection(game)}>Add to collection +</button> <button class="btn" type="button" on:click={() => addToCollection(game)}
>Add to collection +</button
>
{/if} {/if}
</article> </article>
<style lang="scss"> <style lang="scss">
h2 h2 .thumbnail {
.thumbnail {
align-self: start; align-self: start;
} }
@ -75,7 +77,8 @@ import { addToCollection, removeFromCollection } from '$lib/util/manipulateColle
} }
.game-details { .game-details {
p, a { p,
a {
padding: 0.25rem; padding: 0.25rem;
} }
} }

View file

@ -10,7 +10,7 @@
const themes = { const themes = {
'🌛 Night': { name: '🌛 Night' }, '🌛 Night': { name: '🌛 Night' },
'☀️ Daylight': { name: '☀️ Daylight' }, '☀️ Daylight': { name: '☀️ Daylight' }
}; };
let selectedTheme = getTheme() ?? themes['🌛 Night']; let selectedTheme = getTheme() ?? themes['🌛 Night'];

View file

@ -11,16 +11,22 @@
let randomNumber: number = Math.round(Math.random() * $collectionStore.length - 1); let randomNumber: number = Math.round(Math.random() * $collectionStore.length - 1);
if ($collectionStore.at(randomNumber)) { if ($collectionStore.at(randomNumber)) {
gameStore.removeAll(); gameStore.removeAll();
gameStore.add($collectionStore.at(randomNumber)); gameStore.add($collectionStore.at(randomNumber)!);
boredState.set({ loading: false }); boredState.set({ loading: false });
} else { } else {
toast.send('Error!', { duration: 3000, type: ToastType.ERROR, dismissible: true }); toast.send('Error!', { duration: 3000, type: ToastType.ERROR, dismissible: true });
} }
boredState.set({ loading: false }); boredState.set({ loading: false });
} else { } else {
toast.send('No items in your collection!', { duration: 3000, type: ToastType.ERROR, dismissible: true }); toast.send('No items in your collection!', {
duration: 3000,
type: ToastType.ERROR,
dismissible: true
});
} }
} }
</script> </script>
<button class="btn" type="button" on:click={getRandomCollectionGame}>Random from collection 🎲</button> <button class="btn" type="button" on:click={getRandomCollectionGame}
>Random from collection 🎲</button
>

View file

@ -79,9 +79,6 @@
</form> </form>
<style lang="scss"> <style lang="scss">
h1 {
width: 100%;
}
button { button {
border-radius: 10px; border-radius: 10px;
margin: 0.5rem; margin: 0.5rem;

View file

@ -34,13 +34,6 @@
h1 { h1 {
width: 100%; width: 100%;
} }
button {
/* border-radius: 10px; */
/* margin: 0.5rem; */
/* padding: 1rem; */
/* color: var(--clr-input-txt); */
/* background-color: var(--color-btn-primary-active); */
}
fieldset { fieldset {
display: grid; display: grid;

View file

@ -10,7 +10,7 @@
<div class="toast-wrapper"> <div class="toast-wrapper">
{#each $toast as toastData (toastData.id)} {#each $toast as toastData (toastData.id)}
<div <div
aria-label={toastData.dismissible ? "Click to dismiss" : `${toastData.message}`} aria-label={toastData.dismissible ? 'Click to dismiss' : `${toastData.message}`}
on:click={() => toastData.dismissible && toast.remove(toastData.id)} on:click={() => toastData.dismissible && toast.remove(toastData.id)}
in:fly={{ opacity: 0, x: 100 }} in:fly={{ opacity: 0, x: 100 }}
out:fade out:fade
@ -19,9 +19,25 @@
> >
<ToastMessage {toastData} /> <ToastMessage {toastData} />
{#if toastData.dismissible && toastData.showButton} {#if toastData.dismissible && toastData.showButton}
<button type="button" aria-label="Click to dismiss" on:click={() => toastData.dismissible && toast.remove(toastData.id)} <button
class="close"> type="button"
<svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg> aria-label="Click to dismiss"
on:click={() => toastData.dismissible && toast.remove(toastData.id)}
class="close"
>
<svg
viewBox="0 0 15 15"
fill="none"
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
><path
d="M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z"
fill="currentColor"
fill-rule="evenodd"
clip-rule="evenodd"
/></svg
>
</button> </button>
{/if} {/if}
</div> </div>
@ -56,7 +72,8 @@
opacity: 1; opacity: 1;
transition: ease 0.3s; transition: ease 0.3s;
&:hover, &:focus { &:hover,
&:focus {
transition: ease 0.3s; transition: ease 0.3s;
background-color: #625df5; background-color: #625df5;
} }

View file

@ -1,10 +1,9 @@
<script lang="ts"> <script lang="ts">
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { tweened } from 'svelte/motion'; import { tweened } from 'svelte/motion';
import type { ToastData } from '$lib/types'; import type { ToastData } from '$lib/types';
import { toast } from './toast'; import { toast } from './toast';
export let toastData: ToastData; export let toastData: ToastData;
let progress = tweened(100, { duration: toastData.duration }); let progress = tweened(100, { duration: toastData.duration });

View file

@ -6,9 +6,18 @@ import { ToastType } from '$lib/types';
const newToast = () => { const newToast = () => {
const { subscribe, update } = writable<ToastData[]>([]); const { subscribe, update } = writable<ToastData[]>([]);
function send(message: string, { duration = 2000, type = ToastType.INFO, autoDismiss = true, dismissible = false, showButton = false } = {}) { function send(
message: string,
{
duration = 2000,
type = ToastType.INFO,
autoDismiss = true,
dismissible = false,
showButton = false
} = {}
) {
const id = Math.floor(Math.random() * 1000); const id = Math.floor(Math.random() * 1000);
const newMessage: ToastData = { const newMessage: ToastData = {
id, id,
duration, duration,

View file

@ -1,14 +1,14 @@
<script lang="ts"> <script lang="ts">
import { fly } from 'svelte/transition' import { fly } from 'svelte/transition';
import { page } from '$app/stores' import { page } from '$app/stores';
interface Transition { interface Transition {
type: 'fade' | 'stagger' | 'page' type: 'fade' | 'stagger' | 'page';
duration?: number duration?: number;
delay?: number delay?: number;
} }
export let transition: Transition export let transition: Transition;
</script> </script>
{#if transition.type === 'page'} {#if transition.type === 'page'}

View file

@ -1,28 +1,29 @@
import type { BoredStore } from '$lib/types';
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
// import { BoredStore } from '$lib/types'; // import { BoredStore } from '$lib/types';
// Custom store // Custom store
const state = () => { const state = () => {
const { subscribe, set, update } = writable({ loading: false }); const { subscribe, set, update } = writable<BoredStore>({ loading: false });
// function remove(id: string) { // function remove(id: string) {
// update((store) => { // update((store) => {
// const newStore = store.filter((item: GameType) => item.id !== id); // const newStore = store.filter((item: GameType) => item.id !== id);
// return [...newStore]; // return [...newStore];
// }); // });
// } // }
// function removeAll() { // function removeAll() {
// update(() => { // update(() => {
// return []; // return [];
// }); // });
// } // }
function clear() { function clear() {
set({ loading: false }); set({ loading: false });
} }
return { subscribe, set, update, clear }; return { subscribe, set, update, clear };
}; };
export const boredState = state(); export const boredState = state();

View file

@ -3,18 +3,18 @@ import type { GameType } from '$lib/types';
// Custom store // Custom store
const state = () => { const state = () => {
const { subscribe, set, update } = writable<GameType[]>([]); const { subscribe, set, update } = writable<GameType[]>([]);
function add(game: GameType) { function add(game: GameType) {
update((store) => [...store, game]); update((store) => [...store, game]);
} }
function remove(id: string) { function remove(id: string) {
update((store) => { update((store) => {
const newStore = store.filter((item: GameType) => item.id !== id); const newStore = store.filter((item: GameType) => item.id !== id);
return [...newStore]; return [...newStore];
}); });
} }
function removeAll() { function removeAll() {
update(() => { update(() => {
@ -22,7 +22,7 @@ const state = () => {
}); });
} }
return { subscribe, set, update, add, remove, removeAll }; return { subscribe, set, update, add, remove, removeAll };
}; };
export const collectionStore = state(); export const collectionStore = state();

View file

@ -3,22 +3,22 @@ import type { GameType } from '$lib/types';
// Custom store // Custom store
const newGameStore = () => { const newGameStore = () => {
const { subscribe, update } = writable([]); const { subscribe, update } = writable<GameType[]>([]);
function add(game: GameType) { function add(game: GameType) {
update((store) => [...store, game]); update((store) => [...store, game]);
} }
function addAll(games: GameType[]) { function addAll(games: GameType[]) {
update((store) => [...store, ...games]); update((store) => [...store, ...games]);
} }
function remove(id: string) { function remove(id: string) {
update((store) => { update((store) => {
const newStore = store.filter((item: GameType) => item.id !== id); const newStore = store.filter((item: GameType) => item.id !== id);
return [...newStore]; return [...newStore];
}); });
} }
function removeAll() { function removeAll() {
update(() => { update(() => {
@ -26,7 +26,7 @@ const newGameStore = () => {
}); });
} }
return { subscribe, add, addAll, remove, removeAll }; return { subscribe, add, addAll, remove, removeAll };
}; };
export const gameStore = newGameStore(); export const gameStore = newGameStore();

View file

@ -1,11 +1,11 @@
export type BoredStore = { export type BoredStore = {
loading: boolean; loading: boolean;
} };
export enum ToastType { export enum ToastType {
INFO = "INFO", INFO = 'INFO',
ERROR = "ERROR", ERROR = 'ERROR',
WARNING = "WARNING" WARNING = 'WARNING'
} }
export type ToastData = { export type ToastData = {

View file

@ -1,4 +1,4 @@
import type { GameType } from "$lib/types"; import type { GameType } from '$lib/types';
export function mapAPIGameToBoredGame(game): GameType { export function mapAPIGameToBoredGame(game): GameType {
const { const {
@ -23,7 +23,7 @@ export function mapAPIGameToBoredGame(game): GameType {
description, description,
description_preview, description_preview,
players, players,
playtime, playtime
} = game; } = game;
return { return {
id, id,
@ -47,6 +47,6 @@ export function mapAPIGameToBoredGame(game): GameType {
description, description,
description_preview, description_preview,
players, players,
playtime, playtime
}; };
} }

View file

@ -3,11 +3,11 @@ import { toast } from '$lib/components/toast/toast';
import { ToastType, type GameType } from '$lib/types'; import { ToastType, type GameType } from '$lib/types';
export function addToCollection(game: GameType) { export function addToCollection(game: GameType) {
collectionStore.add(game) collectionStore.add(game);
toast.send(`"${game.name}" added to collection!`, { duration: 3000, type: ToastType.INFO }); toast.send(`"${game.name}" added to collection!`, { duration: 3000, type: ToastType.INFO });
} }
export function removeFromCollection(game: GameType) { export function removeFromCollection(game: GameType) {
collectionStore.remove(game.id) collectionStore.remove(game.id);
toast.send(`Removed "${game.name}" from collection!`, { duration: 3000, type: ToastType.INFO }); toast.send(`Removed "${game.name}" from collection!`, { duration: 3000, type: ToastType.INFO });
} }

View file

@ -7,4 +7,4 @@
font-size: var(--font-32); font-size: var(--font-32);
text-align: center; text-align: center;
} }
</style> </style>

View file

@ -9,7 +9,7 @@
import { toast } from '$lib/components/toast/toast'; import { toast } from '$lib/components/toast/toast';
// import 'carbon-components-svelte/css/all.css'; // import 'carbon-components-svelte/css/all.css';
import '$root/styles/styles.scss'; import '$root/styles/styles.scss';
import Toast from '$lib/components/toast/Toast.svelte'; import Toast from '$lib/components/toast/Toast.svelte';
const dev = process.env.NODE_ENV !== 'production'; const dev = process.env.NODE_ENV !== 'production';
</script> </script>

View file

@ -11,7 +11,7 @@ export const POST: RequestHandler = async ({ request }) => {
limit: 20, limit: 20,
client_id: import.meta.env.VITE_PUBLIC_CLIENT_ID, client_id: import.meta.env.VITE_PUBLIC_CLIENT_ID,
fuzzy_match: true, fuzzy_match: true,
name: '', name: ''
}; };
queryParams.name = `${form.get('name')}`; queryParams.name = `${form.get('name')}`;
@ -25,8 +25,9 @@ export const POST: RequestHandler = async ({ request }) => {
const urlQueryParams = new URLSearchParams(newQueryParams); const urlQueryParams = new URLSearchParams(newQueryParams);
const url = `https://api.boardgameatlas.com/api/search${urlQueryParams ? `?${urlQueryParams}` : '' const url = `https://api.boardgameatlas.com/api/search${
}`; urlQueryParams ? `?${urlQueryParams}` : ''
}`;
const response = await fetch(url, { const response = await fetch(url, {
method: 'get', method: 'get',
headers: { headers: {
@ -48,8 +49,8 @@ export const POST: RequestHandler = async ({ request }) => {
const gameResponse = await response.json(); const gameResponse = await response.json();
const gameList = gameResponse?.games; const gameList = gameResponse?.games;
const games: GameType[] = []; const games: GameType[] = [];
gameList.forEach(game => { gameList.forEach((game) => {
games.push(mapAPIGameToBoredGame(game)) games.push(mapAPIGameToBoredGame(game));
}); });
return { return {
body: { body: {

View file

@ -77,8 +77,9 @@ export const POST: RequestHandler = async ({ request }) => {
const urlQueryParams = new URLSearchParams(newQueryParams); const urlQueryParams = new URLSearchParams(newQueryParams);
const url = `https://api.boardgameatlas.com/api/search${urlQueryParams ? `?${urlQueryParams}` : '' const url = `https://api.boardgameatlas.com/api/search${
}`; urlQueryParams ? `?${urlQueryParams}` : ''
}`;
const response = await fetch(url, { const response = await fetch(url, {
method: 'get', method: 'get',
headers: { headers: {
@ -100,13 +101,13 @@ export const POST: RequestHandler = async ({ request }) => {
const gameResponse = await response.json(); const gameResponse = await response.json();
const gameList = gameResponse?.games; const gameList = gameResponse?.games;
const games: GameType[] = []; const games: GameType[] = [];
gameList.forEach(game => { gameList.forEach((game) => {
games.push(mapAPIGameToBoredGame(game)) games.push(mapAPIGameToBoredGame(game));
}); });
console.log('games', games); console.log('games', games);
return { return {
body: { body: {
games, games
} }
}; };
} }

View file

@ -36,11 +36,22 @@
<p>Playtime: {game.playtime} minutes</p> <p>Playtime: {game.playtime} minutes</p>
<p>Minimum Age: {game.min_age}</p> <p>Minimum Age: {game.min_age}</p>
<p>Price: ${game?.price}</p> <p>Price: ${game?.price}</p>
<a style="display: flex; gap: 1rem;" href={game.url} target="_blank" rel="noreferrer">Board Game Atlas Link <Icon name="external-link" /></a> <a
style="display: flex; gap: 1rem;"
href={game.url}
target="_blank"
rel="noreferrer"
aria-label={`Board Game Atlas Link for ${game.name}`}
>Board Game Atlas Link <Icon name="external-link" /></a
>
{#if existsInCollection} {#if existsInCollection}
<button class="btn" type="button" on:click={() => removeFromCollection(game)}>Remove from collection -</button> <button class="btn" type="button" on:click={() => removeFromCollection(game)}
>Remove from collection -</button
>
{:else} {:else}
<button class="btn" type="button" on:click={() => addToCollection(game)}>Add to collection +</button> <button class="btn" type="button" on:click={() => addToCollection(game)}
>Add to collection +</button
>
{/if} {/if}
</div> </div>
</section> </section>
@ -55,7 +66,9 @@
{@html game?.description?.substring(firstParagraphEnd + 1)} {@html game?.description?.substring(firstParagraphEnd + 1)}
</span> </span>
{/if} {/if}
<button class="btn" type="button" on:click={() => (seeMore = !seeMore)}>See {!seeMore ? 'More +' : 'Less -'}</button> <button class="btn" type="button" on:click={() => (seeMore = !seeMore)}
>See {!seeMore ? 'More +' : 'Less -'}</button
>
{/if} {/if}
</section> </section>
{/if} {/if}

View file

@ -4,8 +4,8 @@ import { boardGameApi } from '../_api';
export const GET: RequestHandler = async ({ params }) => { export const GET: RequestHandler = async ({ params }) => {
// console.log('params', params); // console.log('params', params);
const queryParams = { const queryParams = {
ids: `${params?.id}`, ids: `${params?.id}`
} };
console.log('queryParams', queryParams); console.log('queryParams', queryParams);
const response = await boardGameApi('get', `search`, queryParams); const response = await boardGameApi('get', `search`, queryParams);
if (response.status === 404) { if (response.status === 404) {
@ -23,7 +23,7 @@ export const GET: RequestHandler = async ({ params }) => {
console.log('game', gameResponse?.games[0]); console.log('game', gameResponse?.games[0]);
return { return {
body: { body: {
game: gameResponse?.games[0], game: gameResponse?.games[0]
} }
}; };
} }
@ -31,4 +31,4 @@ export const GET: RequestHandler = async ({ params }) => {
return { return {
status: response.status status: response.status
}; };
} };

View file

@ -15,8 +15,8 @@ const config = {
// Override http methods in the Todo forms // Override http methods in the Todo forms
methodOverride: { methodOverride: {
allowed: ['PATCH', 'DELETE'] allowed: ['PATCH', 'DELETE']
}, }
}, }
}; };
export default config; export default config;