From 5de0e3aa326d5dd8b95d6bd39576bb06d2ed788d Mon Sep 17 00:00:00 2001 From: Michal Vanko Date: Thu, 21 Apr 2022 20:48:34 +0200 Subject: [PATCH] Finally fix the build pagination issue --- package-lock.json | 450 ++++++++++--------- package.json | 32 +- src/components/paginator/paginatorUtils.ts | 3 +- src/lib/pagination/dropTakeParams.test.ts | 11 + src/lib/pagination/dropTakeParams.ts | 42 ++ src/lib/pagination/searchParams.test.ts | 79 ---- src/lib/pagination/searchParams.ts | 60 --- src/params/blogPage.ts | 1 - src/routes/__layout.svelte | 2 +- src/routes/blog/[...params].svelte | 18 +- src/routes/blog/articles.ts | 14 - src/routes/blog/articles/[...params].json.ts | 25 ++ static/m-logo-64.png | 3 + svelte.config.js | 2 +- 14 files changed, 336 insertions(+), 406 deletions(-) create mode 100644 src/lib/pagination/dropTakeParams.test.ts create mode 100644 src/lib/pagination/dropTakeParams.ts delete mode 100644 src/lib/pagination/searchParams.test.ts delete mode 100644 src/lib/pagination/searchParams.ts delete mode 100644 src/routes/blog/articles.ts create mode 100644 src/routes/blog/articles/[...params].json.ts create mode 100644 static/m-logo-64.png diff --git a/package-lock.json b/package-lock.json index 217c488..a22cdb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "michalvankodev", "version": "0.0.1", "dependencies": { - "@vanilla-extract/css": "^1.6.8", + "@vanilla-extract/css": "^1.7.0", "@vanilla-extract/sprinkles": "^1.4.0", "@vanilla-extract/vite-plugin": "^3.1.4", "classnames": "^2.3.1", @@ -17,31 +17,31 @@ "front-matter": "^4.0.2", "marked": "^3.0.8", "modern-normalize": "^1.1.0", - "polished": "^4.1.4", - "prismjs": "^1.27.0", + "polished": "^4.2.2", + "prismjs": "^1.28.0", "ramda": "^0.28.0" }, "devDependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.302", - "@tsconfig/svelte": "^2.0.1", + "@sveltejs/kit": "^1.0.0-next.316", + "@tsconfig/svelte": "^3.0.0", "@types/classnames": "^2.3.1", "@types/node": "^16.11.26", - "@types/ramda": "^0.28.1", - "@typescript-eslint/eslint-plugin": "^5.16.0", - "@typescript-eslint/parser": "^5.16.0", - "eslint": "^8.11.0", + "@types/ramda": "^0.28.11", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "@typescript-eslint/parser": "^5.20.0", + "eslint": "^8.13.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte3": "^3.4.1", - "prettier": "~2.6.0", - "prettier-plugin-svelte": "^2.6.0", - "svelte": "^3.46.4", - "svelte-preprocess": "^4.10.4", + "prettier": "~2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "svelte": "^3.47.0", + "svelte-preprocess": "^4.10.6", "svgstore-cli": "^2.0.1", "tslib": "^2.3.1", - "typescript": "^4.6.2", - "vite": "^2.8.6", - "vitest": "^0.7.13", + "typescript": "^4.6.3", + "vite": "^2.9.5", + "vitest": "^0.9.3", "vitest-svelte-kit": "^0.0.6" } }, @@ -505,14 +505,14 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.302", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.302.tgz", - "integrity": "sha512-+YUSU7uN5n8i0NOVRaBQgxbaCgFqn63YNudm8kqu27iaw8iCw9Ua6YuE0uMeAtYif+uSletFiMy73f55mMfJNQ==", + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", "dev": true, "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", - "vite": "^2.8.0" + "vite": "^2.9.0" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -563,9 +563,9 @@ } }, "node_modules/@tsconfig/svelte": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-2.0.1.tgz", - "integrity": "sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", + "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", "dev": true }, "node_modules/@types/chai": { @@ -594,9 +594,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", - "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/node": { @@ -611,9 +611,9 @@ "dev": true }, "node_modules/@types/ramda": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.1.tgz", - "integrity": "sha512-8wnJK5aPaGL7AYhQSe7olwxjhIB9GO4GOCxd6JjYlVNe128DHJDOu7Kyve4kx4uazeKJdnOS3N5TVRv0z1bb1g==", + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.11.tgz", + "integrity": "sha512-FG40c+CduBSpGL6gh9M2Ybe+Rhkj/G6HeCnvufO1HbEcnY5fbFfL7EPuj1mXNcEKfxdZw6mRu4cy+GMHen79DQ==", "dev": true, "dependencies": { "ts-toolbelt": "^6.15.1" @@ -629,14 +629,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", - "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/type-utils": "5.16.0", - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -677,14 +677,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz", - "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" }, "engines": { @@ -704,13 +704,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", - "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -721,12 +721,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", - "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -747,9 +747,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", - "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -760,13 +760,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", - "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -787,9 +787,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -802,15 +802,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", - "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -826,12 +826,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", - "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -843,13 +843,14 @@ } }, "node_modules/@vanilla-extract/css": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.6.8.tgz", - "integrity": "sha512-wkZay2jWe9a3Dt30j+WTJicK4+YV7i65lr+QnpkigVY9uU2KPzaiASEyUV8AouT2cZm7AOhteBBVKI8cYeWnVQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.7.0.tgz", + "integrity": "sha512-2Abpr5aJskwKS+waMWxWnTBqq/rj4J93KtGteW0VSORMUsijrupwjOXECd7Llh+nSFfx/Y6usuexF5/ffyDF8A==", "dependencies": { "@emotion/hash": "^0.8.0", "@vanilla-extract/private": "^1.0.3", "chalk": "^4.1.1", + "css-mediaquery": "^0.1.2", "css-what": "^5.0.1", "cssesc": "^3.0.0", "csstype": "^3.0.7", @@ -1285,6 +1286,11 @@ "is-what": "^3.12.0" } }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" + }, "node_modules/css-select": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", @@ -1844,9 +1850,9 @@ } }, "node_modules/eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.2.1", @@ -2963,13 +2969,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -3251,11 +3257,11 @@ } }, "node_modules/polished": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", - "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", + "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", "dependencies": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.8" }, "engines": { "node": ">=10" @@ -3319,9 +3325,9 @@ } }, "node_modules/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -3334,9 +3340,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", - "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", + "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", "dev": true, "peerDependencies": { "prettier": "^1.16.4 || ^2.0.0", @@ -3344,9 +3350,9 @@ } }, "node_modules/prismjs": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", - "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==", "engines": { "node": ">=6" } @@ -3683,9 +3689,9 @@ } }, "node_modules/svelte": { - "version": "3.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", - "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.47.0.tgz", + "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==", "dev": true, "engines": { "node": ">= 8" @@ -3704,9 +3710,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", - "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3821,9 +3827,9 @@ } }, "node_modules/tinyspy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.0.tgz", - "integrity": "sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.2.tgz", + "integrity": "sha512-2+40EP4D3sFYy42UkgkFFB+kiX2Tg3URG/lVvAZFfLxgGpnWl5qQJuBw1gaLttq8UOS+2p3C0WrhJnQigLTT2Q==", "dev": true, "engines": { "node": ">=14.0.0" @@ -3919,9 +3925,9 @@ } }, "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3947,12 +3953,12 @@ "dev": true }, "node_modules/vite": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", - "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "dependencies": { - "esbuild": "^0.14.14", - "postcss": "^8.4.6", + "esbuild": "^0.14.27", + "postcss": "^8.4.12", "resolve": "^1.22.0", "rollup": "^2.59.0" }, @@ -4017,9 +4023,9 @@ } }, "node_modules/vitest": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.7.13.tgz", - "integrity": "sha512-UCHeJEOK+qCBa/e4UtkCfv0wIZ125T4Nf2R0J/46v/Wnv6bt9zGfAyKAI6siYFhvLvg20MgDIreROtVgedHFWw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.9.3.tgz", + "integrity": "sha512-hKjqdBI732cV5giNLERyAsaJBebstrX5mvTbZr+jUDYUHnX1O4DpAJcHtqBOutuBi7lVIGQ5IF8eWvHHqbCHBA==", "dev": true, "dependencies": { "@types/chai": "^4.3.0", @@ -4027,14 +4033,14 @@ "chai": "^4.3.6", "local-pkg": "^0.4.1", "tinypool": "^0.1.2", - "tinyspy": "^0.3.0", - "vite": "^2.8.6" + "tinyspy": "^0.3.2", + "vite": "^2.9.1" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": ">=v14.19.1" + "node": ">=v14.16.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -4542,14 +4548,14 @@ } }, "@sveltejs/kit": { - "version": "1.0.0-next.302", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.302.tgz", - "integrity": "sha512-+YUSU7uN5n8i0NOVRaBQgxbaCgFqn63YNudm8kqu27iaw8iCw9Ua6YuE0uMeAtYif+uSletFiMy73f55mMfJNQ==", + "version": "1.0.0-next.316", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.316.tgz", + "integrity": "sha512-oLjWOWzjriJD2t210r7ALuH/8ZADrJGsOODzRCRSJvRBCt0Q7VKVLqwKbM/RlZzD1k8Af2uRodQT11kP98hAIA==", "dev": true, "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", "sade": "^1.7.4", - "vite": "^2.8.0" + "vite": "^2.9.0" } }, "@sveltejs/vite-plugin-svelte": { @@ -4577,9 +4583,9 @@ } }, "@tsconfig/svelte": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-2.0.1.tgz", - "integrity": "sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", + "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", "dev": true }, "@types/chai": { @@ -4607,9 +4613,9 @@ } }, "@types/json-schema": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", - "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/node": { @@ -4624,9 +4630,9 @@ "dev": true }, "@types/ramda": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.1.tgz", - "integrity": "sha512-8wnJK5aPaGL7AYhQSe7olwxjhIB9GO4GOCxd6JjYlVNe128DHJDOu7Kyve4kx4uazeKJdnOS3N5TVRv0z1bb1g==", + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.11.tgz", + "integrity": "sha512-FG40c+CduBSpGL6gh9M2Ybe+Rhkj/G6HeCnvufO1HbEcnY5fbFfL7EPuj1mXNcEKfxdZw6mRu4cy+GMHen79DQ==", "dev": true, "requires": { "ts-toolbelt": "^6.15.1" @@ -4642,14 +4648,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", - "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/type-utils": "5.16.0", - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -4670,52 +4676,52 @@ } }, "@typescript-eslint/parser": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz", - "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", - "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" } }, "@typescript-eslint/type-utils": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", - "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", - "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", - "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -4724,9 +4730,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4735,37 +4741,38 @@ } }, "@typescript-eslint/utils": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", - "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", - "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" } }, "@vanilla-extract/css": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.6.8.tgz", - "integrity": "sha512-wkZay2jWe9a3Dt30j+WTJicK4+YV7i65lr+QnpkigVY9uU2KPzaiASEyUV8AouT2cZm7AOhteBBVKI8cYeWnVQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.7.0.tgz", + "integrity": "sha512-2Abpr5aJskwKS+waMWxWnTBqq/rj4J93KtGteW0VSORMUsijrupwjOXECd7Llh+nSFfx/Y6usuexF5/ffyDF8A==", "requires": { "@emotion/hash": "^0.8.0", "@vanilla-extract/private": "^1.0.3", "chalk": "^4.1.1", + "css-mediaquery": "^0.1.2", "css-what": "^5.0.1", "cssesc": "^3.0.0", "csstype": "^3.0.7", @@ -5110,6 +5117,11 @@ "is-what": "^3.12.0" } }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" + }, "css-select": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", @@ -5410,9 +5422,9 @@ "peer": true }, "eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.2.1", @@ -6245,13 +6257,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -6458,11 +6470,11 @@ "peer": true }, "polished": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", - "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", + "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", "requires": { - "@babel/runtime": "^7.16.7" + "@babel/runtime": "^7.17.8" } }, "postcss": { @@ -6492,22 +6504,22 @@ "dev": true }, "prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true }, "prettier-plugin-svelte": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", - "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", + "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", "dev": true, "requires": {} }, "prismjs": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", - "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" }, "prr": { "version": "1.0.1", @@ -6732,9 +6744,9 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "svelte": { - "version": "3.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", - "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.47.0.tgz", + "integrity": "sha512-4JaJp3HEoTCGARRWZQIZDUanhYv0iyoHikklVHVLH9xFE9db22g4TDv7CPeNA8HD1JgjXI1vlhR1JZvvhaTu2Q==", "dev": true }, "svelte-hmr": { @@ -6745,9 +6757,9 @@ "requires": {} }, "svelte-preprocess": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.4.tgz", - "integrity": "sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A==", + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz", + "integrity": "sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==", "dev": true, "requires": { "@types/pug": "^2.0.4", @@ -6801,9 +6813,9 @@ "dev": true }, "tinyspy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.0.tgz", - "integrity": "sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.2.tgz", + "integrity": "sha512-2+40EP4D3sFYy42UkgkFFB+kiX2Tg3URG/lVvAZFfLxgGpnWl5qQJuBw1gaLttq8UOS+2p3C0WrhJnQigLTT2Q==", "dev": true }, "to-fast-properties": { @@ -6874,9 +6886,9 @@ "dev": true }, "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "dev": true }, "uri-js": { @@ -6895,13 +6907,13 @@ "dev": true }, "vite": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", - "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", + "integrity": "sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==", "requires": { - "esbuild": "^0.14.14", + "esbuild": "^0.14.27", "fsevents": "~2.3.2", - "postcss": "^8.4.6", + "postcss": "^8.4.12", "resolve": "^1.22.0", "rollup": "^2.59.0" }, @@ -6936,9 +6948,9 @@ } }, "vitest": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.7.13.tgz", - "integrity": "sha512-UCHeJEOK+qCBa/e4UtkCfv0wIZ125T4Nf2R0J/46v/Wnv6bt9zGfAyKAI6siYFhvLvg20MgDIreROtVgedHFWw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.9.3.tgz", + "integrity": "sha512-hKjqdBI732cV5giNLERyAsaJBebstrX5mvTbZr+jUDYUHnX1O4DpAJcHtqBOutuBi7lVIGQ5IF8eWvHHqbCHBA==", "dev": true, "requires": { "@types/chai": "^4.3.0", @@ -6946,8 +6958,8 @@ "chai": "^4.3.6", "local-pkg": "^0.4.1", "tinypool": "^0.1.2", - "tinyspy": "^0.3.0", - "vite": "^2.8.6" + "tinyspy": "^0.3.2", + "vite": "^2.9.1" } }, "vitest-svelte-kit": { diff --git a/package.json b/package.json index f145de6..2ba790c 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "svgstore": "svgstore -o static/build/icons-sprite.svg src/svg/**.svg" }, "dependencies": { - "@vanilla-extract/css": "^1.6.8", + "@vanilla-extract/css": "^1.7.0", "@vanilla-extract/sprinkles": "^1.4.0", "@vanilla-extract/vite-plugin": "^3.1.4", "classnames": "^2.3.1", @@ -25,31 +25,31 @@ "front-matter": "^4.0.2", "marked": "^3.0.8", "modern-normalize": "^1.1.0", - "polished": "^4.1.4", - "prismjs": "^1.27.0", + "polished": "^4.2.2", + "prismjs": "^1.28.0", "ramda": "^0.28.0" }, "devDependencies": { "@sveltejs/adapter-static": "^1.0.0-next.29", - "@sveltejs/kit": "^1.0.0-next.302", - "@tsconfig/svelte": "^2.0.1", + "@sveltejs/kit": "^1.0.0-next.316", + "@tsconfig/svelte": "^3.0.0", "@types/classnames": "^2.3.1", "@types/node": "^16.11.26", - "@types/ramda": "^0.28.1", - "@typescript-eslint/eslint-plugin": "^5.16.0", - "@typescript-eslint/parser": "^5.16.0", - "eslint": "^8.11.0", + "@types/ramda": "^0.28.11", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "@typescript-eslint/parser": "^5.20.0", + "eslint": "^8.13.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte3": "^3.4.1", - "prettier": "~2.6.0", - "prettier-plugin-svelte": "^2.6.0", - "svelte": "^3.46.4", - "svelte-preprocess": "^4.10.4", + "prettier": "~2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "svelte": "^3.47.0", + "svelte-preprocess": "^4.10.6", "svgstore-cli": "^2.0.1", "tslib": "^2.3.1", - "typescript": "^4.6.2", - "vite": "^2.8.6", - "vitest": "^0.7.13", + "typescript": "^4.6.3", + "vite": "^2.9.5", + "vitest": "^0.9.3", "vitest-svelte-kit": "^0.0.6" } } diff --git a/src/components/paginator/paginatorUtils.ts b/src/components/paginator/paginatorUtils.ts index c35b5f5..78874ef 100644 --- a/src/components/paginator/paginatorUtils.ts +++ b/src/components/paginator/paginatorUtils.ts @@ -1,4 +1,4 @@ -import { toParams } from '$lib/pagination/searchParams' +import { toParams } from '$lib/pagination/dropTakeParams' import { last, range } from 'ramda' export const Divider = 'divider' @@ -45,6 +45,5 @@ export function createHref( pageNumber: number ) { const filtersPath = toParams(filters) - console.log(filtersPath, filters) return `/${href}/${filtersPath ? filtersPath + '/' : ''}page/${pageNumber}` } diff --git a/src/lib/pagination/dropTakeParams.test.ts b/src/lib/pagination/dropTakeParams.test.ts new file mode 100644 index 0000000..ea9bdb8 --- /dev/null +++ b/src/lib/pagination/dropTakeParams.test.ts @@ -0,0 +1,11 @@ +import { describe, test, expect } from 'vitest' +import { getDropTakeFromPageParams } from './dropTakeParams' + +describe('convert search params', () => { + test('should convert from page size and page to offset and limit', () => { + expect(getDropTakeFromPageParams(7, 2)).toEqual({ + offset: 7, + limit: 7, + }) + }) +}) diff --git a/src/lib/pagination/dropTakeParams.ts b/src/lib/pagination/dropTakeParams.ts new file mode 100644 index 0000000..b231cae --- /dev/null +++ b/src/lib/pagination/dropTakeParams.ts @@ -0,0 +1,42 @@ +import { splitEvery } from 'ramda' + +export function parseParams(params: string) { + const splittedParams = params.split('/') + if (splittedParams.length % 2 !== 0) { + return [] + } + const splits = splitEvery(2, splittedParams) + return Object.fromEntries(splits) +} + +export function toParams(records: Record) { + return Object.entries(records) + .map(([key, value]) => `${key}/${value}`) + .join('/') +} + +export interface PaginationParams { + pageSize: number + page: number + filters?: Record +} + +export interface DropTakeParams { + offset: number + limit: number +} + +/** + * Convert svelte `load` params into a `offset` and `limit` so they can be used to fetch endpoints with pagination queries + */ +export function getDropTakeFromPageParams( + pageSize: number, + page: number +): DropTakeParams { + const offset = pageSize * (page - 1) + const limit = pageSize + return { + offset, + limit, + } +} diff --git a/src/lib/pagination/searchParams.test.ts b/src/lib/pagination/searchParams.test.ts deleted file mode 100644 index 721ff1c..0000000 --- a/src/lib/pagination/searchParams.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { describe, test, expect } from 'vitest' -import { - getPaginationQueryFromSearchParams, - getPaginationSearchParams, - parseParams, -} from './searchParams' - -describe('convert search params', () => { - test('drop take params are not taken as filters', () => { - expect( - getPaginationQueryFromSearchParams( - new URLSearchParams('offset=2&limit=5') - ) - ).toEqual({ offset: 2, limit: 5 }) - }) - - test('return empty paginationQuery if ', () => { - expect(getPaginationQueryFromSearchParams(new URLSearchParams(''))).toEqual( - {} - ) - }) - - test('other than drop take params are moved to filters ', () => { - expect( - getPaginationQueryFromSearchParams(new URLSearchParams('tag=news')) - ).toEqual({ filters: { tag: 'news' } }) - }) - - test('offset and filter combined', () => { - expect( - getPaginationQueryFromSearchParams( - new URLSearchParams('offset=3&tag=news') - ) - ).toEqual({ offset: 3, filters: { tag: 'news' } }) - }) -}) - -describe('get search params', () => { - test('parse params', () => { - const params = 'tags/News/page/1' - expect(parseParams(params)).toEqual({ tags: 'News', page: '1' }) - }) - - test('should parse values into searchParams for first page', () => { - const params = { - pageSize: 7, - page: 1, - filters: { - tags: 'News', - }, - } - expect(getPaginationSearchParams(params).toString()).toEqual( - 'limit=7&offset=0&tags=News' - ) - }) - - test('should parse values into searchParams for third page', () => { - const params = { - pageSize: 7, - page: 3, - filters: { - tags: 'News', - }, - } - expect(getPaginationSearchParams(params).toString()).toEqual( - 'limit=7&offset=14&tags=News' - ) - }) - - test('should return first page without any params specified', () => { - const params = { - pageSize: 7, - page: 1, - } - expect(getPaginationSearchParams(params).toString()).toEqual( - 'limit=7&offset=0' - ) - }) -}) diff --git a/src/lib/pagination/searchParams.ts b/src/lib/pagination/searchParams.ts deleted file mode 100644 index a8e89fa..0000000 --- a/src/lib/pagination/searchParams.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { splitEvery } from 'ramda' -import type { PaginationQuery } from './pagination' - -export function getPaginationQueryFromSearchParams( - searchParams: URLSearchParams -) { - return Array.from(searchParams).reduce( - (acc, [key, value]) => { - const isDropTake = ['offset', 'limit'].includes(key) - if (isDropTake) { - return { - ...acc, - [key]: Number(value), - } - } - return { - ...acc, - filters: { - ...acc.filters, - [key]: value, - }, - } - }, - {} - ) -} - -export function parseParams(params: string) { - const splittedParams = params.split('/') - if (splittedParams.length % 2 !== 0) { - return [] - } - const splits = splitEvery(2, splittedParams) - return Object.fromEntries(splits) -} - -export function toParams(records: Record) { - return Object.entries(records) - .map(([key, value]) => `${key}/${value}`) - .join('/') -} - -export interface PaginationSearchParams { - pageSize: number - page: number - filters?: Record -} - -/** - * Convert svelte `load` params into a `URLSearchParams` so they can be used to fetch endpoints with pagination queries - */ -export function getPaginationSearchParams({ - pageSize, - page, - filters, -}: PaginationSearchParams) { - const offset = pageSize * (page - 1) - const limit = pageSize - return new URLSearchParams({ limit, offset, ...filters }) -} diff --git a/src/params/blogPage.ts b/src/params/blogPage.ts index aec7801..e83100a 100644 --- a/src/params/blogPage.ts +++ b/src/params/blogPage.ts @@ -1,5 +1,4 @@ /** @type {import('@sveltejs/kit').ParamMatcher} */ export function match(param: string) { - console.debug('parma', param) return !['tags', 'page'].some((keyword) => param.startsWith(keyword)) } diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index 52113fd..b793c4d 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -3,7 +3,7 @@ import type { LoadInput, LoadOutput } from '@sveltejs/kit/types/page' export async function load({ fetch, url }: LoadInput): Promise { - const blogPostsResponse = await fetch(`/blog/articles?limit=5`) + const blogPostsResponse = await fetch(`/blog/articles/pageSize/5.json`) const blogPostsContent = await blogPostsResponse.json() return { props: { diff --git a/src/routes/blog/[...params].svelte b/src/routes/blog/[...params].svelte index 8dbd612..7b8fb17 100644 --- a/src/routes/blog/[...params].svelte +++ b/src/routes/blog/[...params].svelte @@ -1,21 +1,13 @@ @@ -47,7 +40,6 @@ My blog @michalvankodev -{@debug posts} {#if posts.items.length === 0}

You've found void in the space.

{:else} @@ -75,7 +67,7 @@ />
    - {#each posts.items as post} + {#each posts.items as post (post.slug)}
  • diff --git a/src/routes/blog/articles.ts b/src/routes/blog/articles.ts deleted file mode 100644 index e1050fe..0000000 --- a/src/routes/blog/articles.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getPaginationQueryFromSearchParams } from '$lib/pagination/searchParams' -import { getBlogListing } from './_content' - -export async function get({ url: { searchParams } }) { - const paginationQuery = getPaginationQueryFromSearchParams(searchParams) - const filteredContents = await getBlogListing(paginationQuery) - - return { - status: 200, - body: { - posts: filteredContents, - }, - } -} diff --git a/src/routes/blog/articles/[...params].json.ts b/src/routes/blog/articles/[...params].json.ts new file mode 100644 index 0000000..6e7c53a --- /dev/null +++ b/src/routes/blog/articles/[...params].json.ts @@ -0,0 +1,25 @@ +import { + getDropTakeFromPageParams, + parseParams, +} from '$lib/pagination/dropTakeParams' +import { getBlogListing } from '../_content' + +export async function get({ params }) { + console.log('article-params', params) + const handledParams = params.params === 'index' ? '' : params.params + const { page = 1, pageSize = 7, ...filters } = parseParams(handledParams) + const paginationParams = getDropTakeFromPageParams( + Number(pageSize), + Number(page) + ) + const paginationQuery = { ...paginationParams, filters } + const filteredContents = await getBlogListing(paginationQuery) + console.log(filteredContents.items.map((item) => item.slug)) + + return { + status: 200, + body: { + posts: filteredContents, + }, + } +} diff --git a/static/m-logo-64.png b/static/m-logo-64.png new file mode 100644 index 0000000..fe5f0dc --- /dev/null +++ b/static/m-logo-64.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c660280efff212b3f4529237ff94efdb41a609cb273d39dcef967688696c89a4 +size 2001 diff --git a/svelte.config.js b/svelte.config.js index 5546daf..66702f4 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -10,7 +10,7 @@ const config = { kit: { adapter: adapterStatic(), vite: { plugins: [vanillaExtractPlugin()] }, - prerender: { default: true } + prerender: { default: true }, }, preprocess: preprocess({ sourceMap: dev,